PCem

Last updated

PCem
Developer(s) Michael Manley (including contributors)
Initial release15 August 2007;15 years ago (2007-08-15)
Stable release
17 / 1 December 2020;2 years ago (2020-12-01)
Repository github.com/sarah-walker-pcem/pcem/
Written in C, C++
Operating system Microsoft Windows, Linux
Type Virtual machine, emulator
License GNU GPL version 2
Website pcem-emulator.co.uk/index.html

PCem (short for PC Emulator) is an IBM PC emulator for Windows and Linux that specializes in running old operating systems and software that are designed for IBM PC compatibles. Originally developed as an IBM PC XT emulator, it later added support for other IBM PC compatible computers as well.

Contents

A fork known as 86Box is also available, which includes a number of added features, such as support for SCSI and additional boards. [1]

On 14 June 2021, lead developer Sarah Walker announced her departure from the project. [2] A new maintainer, Michael Manley, was appointed on 18 December 2021. [3] During the interim period with no maintainer, the project's forums were closed. [4]

Features

Hardware

PCem is capable of emulating Intel processors (and its respective clones, including AMD, IDT and Cyrix) from Intel 8088 through the Pentium Tillamook MMX/Mobile MMX processors from 1997 until 1999. A recompiler has been added in v10.1, being mandatory for P5 Pentium and Cyrix processors and optional for i486 processors and IDT WinChip processors. Yet a rather fast processor is needed for full emulation speed (such as an Intel Core i5 at 4 GHz). However, the current developer of PCem has a main concern that the recompiler is not fast enough to emulate the Intel Pentium Pro/Pentium II processors yet. [5]

PCem emulates various IBM PC compatible systems/motherboards from 1981 until 1996, this includes almost all IBM PC models (including the IBM PS/1 model 2121 and the IBM PS/2 model 2011), some American Megatrends BIOS clones (from 1989 until 1994), Award BIOS systems (Award 286 clone, Award SiS 496/497 and Award 430VX PCI), and Intel Premiere/PCI and Intel Advanced/EV motherboards. [6] However, unofficial builds of PCem (PCem-X and PCem-unofficial) also supports IBM PC compatible systems/motherboards (from 1996 until 2000) that supports Intel Pentium Pro/Pentium II processors. PCem simulates the BIOS cache, which relies on the processor rather than on system memory.

PCem can emulate different graphic modes, this includes text mode, Hercules, CGA (including some composite modes and the 160 × 100 × 16 tweaked modes), Tandy, EGA, VGA (including Mode X and other tweaks), VESA, as well as various video APIs such as DirectX and 3Dfx's Glide. PCem can also emulate various video cards such as the ATI Mach64 GX and the S3 Trio32/64/Virge series.

PCem also emulates some sound cards, such as the AdLib, Sound Blaster (including the Game Blaster), Sound Blaster Pro, Sound Blaster 16, Sound Blaster AWE32, Gravis UltraSound, Innovation SSI-2001, Aztech Sound Galaxy Pro 16, Windows Sound System, Ensoniq AudioPCI 64V/ES1371, and Sound Blaster PCI 128. [6]

Voodoo cards are also emulated since PCem v10 and PCem v12, which added support for Voodoo 2 and various optimizations. [7] However, there are some shortcomings regarding Voodoo emulation such as the lack of mipmapping, slightly wobbling triangles, lack of speed limiting, and inaccurate refresh rates on almost every resolution (except 640 × 480@60 Hz). [8] As of PCem v11, a separate recompiler has been added for Voodoo emulation, making it faster to emulate the Voodoo graphics card.

An unofficial build of PCem allows usage of SLiRP/WinPcap as a networking interface, plus emulated NE2000 and Realtek RTL8029AS Ethernet cards. However, starting with PCem v13, the emulation of NE2000 was officially added.

Operating system support

Similar to Virtual PC, Bochs and QEMU, it emulates almost all versions of Microsoft Windows until Windows Vista (including Service Pack 2), MS-DOS, FreeDOS and CP/M-86 are also supported. Earlier versions of OS/2 requires the hard drive to be formatted prior to installation, while OS/2 Warp 3 until Warp 4.5 requires an unaccelerated video card to run. Other operating systems are also supported on PCem, such as versions of Linux that supports the Pentium processor, BSD derivatives (e.g. FreeBSD), and BeOS 5, which only works on the Award SiS 497 motherboard.

Version history

Versions of PCem from v0.5 until v8 have been removed from the official webpage, due to the use of the MAME OPL2/OPL3 emulation code from when it was not yet licensed under a GPL-compatible license.

PCem versionRelease dateNotes
v0.115 August 2007
v0.210 October 2007
  • Added Amstrad PC1640 and IBM AT emulation
  • Added Intel 80286 processor emulation
  • Added Paradise EGA and Trident VGA emulation
  • Added Sound Blaster 2.0 emulation
  • Added hard disk emulation
  • Numerous bug fixes and improvements
v0.2a14 October 2007
  • Numerous bug fixes
v0.330 July 2008
v0.427 July 2010
v0.411 February 2011
v0.41a13 February 2011
  • Numerous bug fixes
    • Fixed disk corruption bug
  • Re-added CGA Composite emulation
v0.521 September 2011
  • Supported more games ( Tyrian , Jazz Jackrabbit , Transport Tycoon )
  • Added cache emulation
  • Added Soundblaster Pro v2 and Sound Blaster 16 emulation
  • Added CD-ROM emulation
  • Numerous bug fixes and improvements
    • Added 80486 speed options between 50 and 120 MHz
    • Fixed CMOS corruption bug
    • GUS improvements for MIDI playback
    • 8088/8086 timing tweaks
    • Fixed bugs in LLDT/LIDT/LGDT/LTR
    • VM flag no longer stored with PUSHFD
    • Fixed bug in SIDT/SGDT - no more 'hardware not recognized' from Borland DPMI
    • HLT now privileged
    • Fixed unused bits in FLAGS register
    • Fixed read/write across page boundary
    • Many bug fixes in exception handling
    • REP INSx now uses correct segment
    • DIV.D fixed (Terminal Velocity, Pro Pinball )
    • Other fixes and changes
v0.619 December 2011
  • Supported more games ( Quake , Grand Theft Auto , X-COM: Apocalypse )
  • Supported more systems (Windows 3.x in 386 Enhanced Mode, Windows 95)
  • Added Intel 80486 DX FPU emulation.
  • Added Dell System 200, Acer 386SX/25N, WinBIOS 486 BIOSes support
  • Added Soundblaster Pro and Sound Blaster 16 mixers emulation
  • Numerous bug fixes and improvements
    • Fixed page fault issue
    • Fixed CD-ROM Read sub-channel command, music on Quake and Grand Theft Auto works properly
    • Fixed MOV exx,sreg
    • Fixed IO port trapping
    • Fixed LAR instruction
    • Implemented MMU permissions for Windows 95
    • Timer fixes
    • Fixed VGA address register reads
    • Fixed Trident banking registers (among other things) for MicroProse installers
    • Implemented trap flag and fixed interrupt behaviour (Second Reality demo)
    • Fixed numerous bugs with PPI & PIT
    • Floppy controller fixes
    • Memory limit increased from 16MB to 64MB
    • Hard disk limit increased from 512MB to 2GB
    • Other fixes and changes
v0.73 August 2012
  • New machines - DTK XT clone, Amstrad PC2086/PC3086, Olivetti M24, Commodore PC-30 III, PCI 486 clone
  • New graphics cards - IBM EGA, Diamond Stealth 32 (ET4000/W32p), Paradise Bahamas 64 (S3 Vision864)
  • Supported more systems and programs (Windows 3.x in 386 Enhanced Mode, Windows 98, Internet Explorer 4, Linux)
  • Added IDE hard disk emulation (Replaced the old INT 13 trapping emulation on all models)
  • Numerous bug fixes and improvements
    • Fixed wrong code segment on page fault - eliminates some Windows 95 crashes
    • Fixed trap flag on POPF/IRET - improves DOS box on Windows 95
    • Fixed various pmode stuff, OS/2 v1.3 works
    • Fixed MMU caching bug
    • Major improvements to floppy disk emulation - fixed occasional disk corruption, works with OS/2 and Linux
    • ATAPI identify command now returns an ATAPI version, Windows 95 native CD-ROM drivers now work
    • CD-ROM emulation now uses raw read for audio - works on Windows 7
    • Major internal changes to graphics emulation
    • Major internal changes to memory and IO emulation
    • Other fixes and changes
v820 December 2013
v8.13 January 2014
  • Numerous bug fixes and improvements
    • Fixed various issues with ROM detection/loading
    • Implemented DMA controller disable, fixed PC2086/3086
    • Switched IBM XT BIOS from 01/10/86 version to 11/08/82
    • Fixed stuck keys on XT and Amstrad machines
  • Replaced the non-free MAME OPL2/OPL3 emulation code with a GPL-licensed OPL2/OPL3 emulation code
v94 October 2014
  • New machines - IBM PCjr
  • New graphics cards - Diamond Stealth 3D 2000 (S3 ViRGE/325), S3 ViRGE/DX
  • New sound cards - Innovation SSI-2001 (using ReSID-FP)
  • Added joystick emulation
  • Added preliminary Linux port
  • Numerous bug fixes and improvements
    • CPU fixes (Windows NT now works, OS/2 2.0+ works better)
    • Fixed issue with port 3DA when in blanking, DOS 6.2/V now works
    • Re-written PIT emulation
    • IRQs 8-15 now handled correctly, Civilization no longer hangs
    • Fixed vertical axis on Amstrad mouse
    • Serial fixes - fixes mouse issues on Windows 3.x and OS/2
    • New Windows keyboard code - should work better with international keyboards
    • Changes to keyboard emulation - should fix stuck keys
    • Some CD-ROM fixes
v1024 October 2015
  • New machines - AMI XT clone, DTK XT clone, VTech Laser Turbo XT, VTech Laser XT3, Phoenix XT clone, Juko XT clone, IBM PS/1 model 2011, Compaq Deskpro 386, DTK 386SX clone, Phoenix 386 clone, Intel Premiere/PCI, Intel Advanced/EV
  • New graphics cards - IBM VGA, 3dfx Voodoo Graphics
  • Added Pentium and Pentium MMX emulation
  • Added experimental dynamic recompiler (up to 3x speed-up)
  • Improved floppy-disk controller emulation
    • Added FDI images support
    • Added 1.2MB 5.25" floppy drive emulation
    • Added write protect support
  • Added support for up to 4 IDE hard drives
  • Numerous bug fixes and improvements
v10.17 November 2015
  • Fixed buffer overruns in PIIX and ET4000/W32p emulation
  • Added command line options to start in fullscreen and to specify config file
  • Fixed emulator crash when the CPU jumps to an unexecutable address
  • Removed Voodoo memory dump on exit
v115 June 2016
  • New machines - Tandy 1000HX, Tandy 1000SL/2, Award 286 clone, IBM PS/1 model 2121
  • New graphics card - Hercules InColor
  • Added 3DFX recompiler (2-4x speedup over previous emulation)
  • Added Cyrix 6x86 emulation
  • Added IBM PS/1 audio card emulation
  • Added Adlib Gold surround module emulation
  • Added Gravis Ultrasound stereo support
  • Improved floppy-disk controller emulation
    • Added support for more drive types
    • Added FIFO emulation
    • Better support of XDF images add FDI
  • Added direct support to ISO image for CD-ROM emulation
  • Improved CD-ROM emulation
    • Configurable CD-ROM IDE channel
    • improved disk change handling
    • Better volume control support
  • Numerous bug fixes and improvements
    • Some optimizations to dynamic recompiler
    • Fixed broken 8088/8086 timing
    • Fixes to Mach 64 and ViRGE 2D blitters
    • XT machines can now have less than 640KB RAM
    • Fixes to PCjr/Tandy PSG emulation
    • Fixed crash when using Direct3D output on Intel HD graphics
    • Other fixes and changes
v1218 February 2017
  • New machines - AMI 386DX, MR 386DX
  • New graphics cards - Plantronics Colorplus, Wyse WY-700, Obsidian SB50, Voodoo2
  • CPU optimizations
  • 3DFX optimizations
  • Added Basic 80286/80386 prefetch emulation
  • Mouse can be selected between serial, PS/2, and IntelliMouse
  • Improved joystick emulation
    • Analogue joystick up to 8 buttons
    • Added CH Flightstick Pro, ThrustMaster FCS, Microsoft SideWinder support
  • Improved CGA/PCjr/Tandy composite emulation
  • Numerous bug fixes
v1311 December 2017
v13.117 December 2017
  • Minor recompiler tweak, fixed slowdown in some situations (mainly seen on Windows 9x just after booting)
  • Numerous fixes
    • Fixed issues with PCJr/Tandy sound on some Sierra games
    • Fixed plasma display on Toshiba 3100e
    • Fixed handling of configurations with full stops in the name
    • Fixed sound output gain when using OpenAL Soft
  • Switched to using OpenAL Soft by default
v1420 April 2018
v1519 May 2019
  • New machines - Zenith Data SupersPORT, Bull Micral 45, Tulip AT Compact, Amstrad PPC512/640, Packard Bell PB410A, ASUS P/I-P55TVP4, ASUS P/I-P55T2P4, Epox P55-VA, FIC VA-503+
  • New graphics cards - Image Manager 1024, Sigma Designs Color 400, TriGem Korean VGA
  • Added emulation of AMD K6 family and IDT Winchip 2
  • New CPU recompiler
  • Added experimental ARM and ARM64 host support
  • Added read-only cassette emulation for IBM PC and PCjr
  • Numerous bug fixes
v1619 April 2020
  • New machines - Commodore SL386SX-25, ECS 386/32, Goldstar GDC-212M, Hyundai Super-286TR, IBM PS/1 Model 2133 (EMEA 451), Itautec Infoway Multimidia, Samsung SPC-4620P, Leading Edge Model M
  • New graphics cards - ATI EGA Wonder 800+, AVGA2, Cirrus Logic GD-5428, IBM 1MB SVGA Adapter/A
  • New Aztech Sound Galaxy Pro 16 AB (Washington) emulation
  • Added support for IBM SCSI Adapter with Cache
  • Added support for FPU emulation on pre-486 machines
  • Numerous bug fixes and improvements
v171 December 2020

See also

Related Research Articles

<span class="mw-page-title-main">Cyrix 6x86</span> Microprocessor

The Cyrix 6x86 is a line of sixth-generation, 32-bit x86 microprocessors designed and released by Cyrix in 1995. Cyrix, being a fabless company, had the chips manufactured by IBM and SGS-Thomson. The 6x86 was made as a direct competitor to Intel's Pentium microprocessor line, and was pin compatible. During the 6x86's development, the majority of applications performed almost entirely integer operations. The designers foresaw that future applications would most likely maintain this instruction focus. So, to optimize the chip's performance for what they believed to be the most likely application of the CPU, the integer execution resources received most of the transistor budget. This would later prove to be a strategic mistake, as the popularity of the P5 Pentium caused many software developers to hand-optimize code in assembly language, to take advantage of the P5 Pentium's tightly pipelined and lower latency FPU. For example, the highly anticipated first-person shooter Quake used highly optimized assembly code designed almost entirely around the P5 Pentium's FPU. As a result, the P5 Pentium significantly outperformed other CPUs in the game.

<span class="mw-page-title-main">Industry Standard Architecture</span> 16-bit internal bus

Industry Standard Architecture (ISA) is the 16-bit internal bus of IBM PC/AT and similar computers based on the Intel 80286 and its immediate successors during the 1980s. The bus was (largely) backward compatible with the 8-bit bus of the 8088-based IBM PC, including the IBM PC/XT as well as IBM PC compatibles.

i486 Successor to the Intel 386

The Intel 486, officially named i486 and also known as 80486, is a microprocessor. It is a higher-performance follow-up to the Intel 386. The i486 was introduced in 1989. It represents the fourth generation of binary compatible CPUs following the 8086 of 1978, the Intel 80286 of 1982, and 1985's i386.

<span class="mw-page-title-main">Motherboard</span> Main printed circuit board (PCB) for a computing device

A motherboard is the main printed circuit board (PCB) in general-purpose computers and other expandable systems. It holds and allows communication between many of the crucial electronic components of a system, such as the central processing unit (CPU) and memory, and provides connectors for other peripherals. Unlike a backplane, a motherboard usually contains significant sub-systems, such as the central processor, the chipset's input/output and memory controllers, interface connectors, and other components integrated for general use.

<span class="mw-page-title-main">VESA Local Bus</span> Expansion bus for 486 PCs

The VESA Local Bus is a short-lived expansion bus introduced during the i486 generation of x86 IBM-compatible personal computers. Created by VESA, the VESA Local Bus worked alongside the then-dominant ISA bus to provide a standardized high-speed conduit intended primarily to accelerate video (graphics) operations. VLB provides a standardized fast path that add-in (video) card makers could tap for greatly accelerated memory-mapped I/O and DMA, while still using the familiar ISA bus to handle basic device duties such as interrupts and port-mapped I/O. Some high-end 386DX motherboards also had a VL-Bus slot.

<span class="mw-page-title-main">Cyrix</span> American microprocessor developer

Cyrix Corporation was a microprocessor developer that was founded in 1988 in Richardson, Texas, as a specialist supplier of floating point units for 286 and 386 microprocessors. The company was founded by Tom Brightman and Jerry Rogers.

<span class="mw-page-title-main">Hauppauge Computer Works</span> Company focusing on computer software

Hauppauge Computer Works is a US manufacturer and marketer of electronic video hardware for personal computers. Although it is most widely known for its WinTV line of TV tuner cards for PCs, Hauppauge also produces personal video recorders, digital video editors, digital media players, hybrid video recorders and digital television products for both Windows and Mac. The company is named after the hamlet of Hauppauge, New York, in which it is based.

<span class="mw-page-title-main">QEMU</span> Free virtualization and emulation software

QEMU is a free and open-source emulator. It emulates the machine's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with Kernel-based Virtual Machine (KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one architecture to run on another.

<span class="mw-page-title-main">Diamond Multimedia</span>

Diamond Multimedia is an American company that specializes in many forms of multimedia technology. They have produced graphics cards, motherboards, modems, sound cards and MP3 players, however the company began with the production of the TrackStar, a PC add-on card which emulated Apple II computers. They were one of the major players in the 2D and early 3D graphics card competition throughout the 1990s and early 2000s.

<span class="mw-page-title-main">Rendition, Inc.</span>

Rendition, Inc., was a maker of 3D computer graphics chipsets in the mid to late 1990s. They were known for products such as the Vérité 1000 and Vérité 2x00 and for being one of the first 3D chipset makers to directly work with Quake developer John Carmack to make a hardware-accelerated version of the game (vQuake). Rendition's major competitor at the time was 3Dfx. Their proprietary rendering APIs were Speedy3D and RRedline.

In computing, Intel's Advanced Programmable Interrupt Controller (APIC) is a family of interrupt controllers. As its name suggests, the APIC is more advanced than Intel's 8259 Programmable Interrupt Controller (PIC), particularly enabling the construction of multiprocessor systems. It is one of several architectural designs intended to solve interrupt routing efficiency issues in multiprocessor computer systems.

<span class="mw-page-title-main">MediaGX</span>

The MediaGX CPU is an x86-compatible processor that was designed by Cyrix and manufactured by National Semiconductor following the two companies' merger. It was introduced in 1997. The core is based on the integration of the Cyrix Cx5x86 CPU core with hardware to process video and audio output. Following the buyout of Cyrix by National Semiconductor and the sale of the Cyrix name and trademarks to VIA Technologies, the core was developed by National Semiconductor into the Geode line of processors, which was subsequently sold to Advanced Micro Devices.

<span class="mw-page-title-main">Ensoniq AudioPCI</span>

The Ensoniq AudioPCI is a PCI-based sound card released in 1997. It was Ensoniq's last sound card product before they were acquired by Creative Technology. The card represented a shift in Ensoniq's market positioning. Whereas the Soundscape line had been made up primarily of low-volume high-end products full of features, the AudioPCI was designed to be a very simple, low-cost product to appeal to system OEMs and thus hopefully sell in mass quantities.

Since the rise of the personal computer in the 1980s, IBM and other vendors have created PC-based IBM-compatible mainframes which are compatible with the larger IBM mainframe computers. For a period of time PC-based mainframe-compatible systems had a lower price and did not require as much electricity or floor space. However, they sacrificed performance and were not as dependable as mainframe-class hardware. These products have been popular with mainframe developers, in education and training settings, for very small companies with non-critical processing, and in certain disaster relief roles.

Orange Micro Inc. was an American computer hardware company that made products for use with Apple computers. The company made a variety of products for many machines, ranging from the Apple II series to the Macintosh line. The company went out of business in 2004.

<span class="mw-page-title-main">Sound Blaster 16</span>

The Sound Blaster 16 is a series of sound cards by Creative Technology. They are add-on boards for PCs with an ISA or PCI slot.

<span class="mw-page-title-main">SunPCi</span>

SunPCi is a series of single-board computers with a connector that effectively allows a PC motherboard to be fitted in Sun Microsystems SPARC-based workstations based on the PCI architecture adding the capability for the workstation to act as a 'IBM PC compatible' computer. The Sun PCi cards included an x86 processor, RAM, expansion ports, and an onboard graphics controller, allowing a complete Wintel operating environment on a Solaris system. The SunPCi software running on Solaris emulates the disk drives that contain the PC filesystem. The PC software running on the embedded hardware is displayed in an X window on the host desktop; there is also a connector on the edge of the board that can optionally be used to connect a PC monitor.

<span class="mw-page-title-main">Compatibility card</span>

A compatibility card is an expansion card for computers that allows it to have hardware emulation with another device. While compatibility cards date back at least to the Apple II family, the majority of them were made for 16-bit computers, often to maintain compatibility with the IBM PC. The most popular of these were for Macintosh systems that allowed them to emulate Windows PCs via NuBus or PCI; Apple had released several such cards themselves.

<span class="mw-page-title-main">86Box</span>

86Box is an IBM PC emulator for Windows, Linux and Mac based on PCem that specializes in running old operating systems and software that are designed for IBM PC compatibles. Originally forked from PCem, it later added support for other IBM PC compatible computers as well.

References

  1. "86Box Emulator of x86-based machines". 86Box. Retrieved 20 June 2021.
  2. "PCem News". PCem. 14 June 2021. Retrieved 20 June 2021.
  3. "ANNOUNCEMENT: MichaelJManley taking over as PCem maintainer - PCem". PCem forums. 18 December 2021. Retrieved 19 December 2021.
  4. "PCem - Information". PCem forums. Archived from the original on 18 June 2021. Retrieved 19 December 2021.
  5. "PCem • View topic - A mere idea for a future chipset (440FX)". pcem-emulator.co.uk. Retrieved 8 August 2016.
  6. 1 2 "PCem". pcem-emulator.co.uk. Retrieved 7 August 2016.
  7. Cauterize. "Vintage Computer Emulator 'PCem' Now Running 3Dfx Based Windows Games" . Retrieved 7 August 2016.
  8. "PCem • View topic - 3DFX emulation". pcem-emulator.co.uk. Retrieved 7 August 2016.