Software:PCem

From HandWiki
Short description: PC emulator for Windows and Linux
PCem
Screenshot of PCem running FreeDOS 1.0.png
Screenshot of PCem running FreeDOS 1.0
Developer(s)Michael Manley (including contributors)
Initial release15 August 2007; 16 years ago (2007-08-15)
Stable release
17 / 1 December 2020; 3 years ago (2020-12-01)
Repositorygithub.com/sarah-walker-pcem/pcem/
Written inC, C++
Operating systemMicrosoft Windows, Linux
TypeVirtual machine, emulator
LicenseGNU GPL version 2
Websitepcem-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.

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 version Release date Notes
v0.1 15 August 2007
v0.2 10 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.2a 14 October 2007
  • Numerous bug fixes
v0.3 30 July 2008
  • Added EuroPC emulation
  • Added SVGA emulation for Tseng Labs ET4000
  • Added Soundblaster Pro v1 emulation
  • Added Sound Blaster ADPCM emulation
  • Added generic Turbo XT BIOS support
  • Added keyboard repeat support
  • Numerous bug fixes and improvements
v0.4 27 July 2010
v0.41 1 February 2011
v0.41a 13 February 2011
  • Numerous bug fixes
    • Fixed disk corruption bug
  • Re-added CGA Composite emulation
v0.5 21 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.6 19 December 2011
  • Supported more games (Quake, Grand Theft Auto, X-COM)
  • 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.7 3 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
v8 20 December 2013
  • New machines - SiS 496/497, Intel 430VX
  • New graphics cards - S3 Trio64, Trident TGUI9440AGi, ATI VGA Edge-16, ATI VGA Charger, OAK OTI-067, ATI Mach 64
  • New sound cards - Adlib Gold 1000, Windows Sound System, Sound Blaster AWE32
  • Added WinChip emulation (including MMX emulation)
  • Improved Gravis Ultrasound emulation
  • Added MPU-401 emulation (UART mode only) on Sound Blaster 16/AWE32
  • Added fullscreen and Direct3D output modes
  • Numerous bug fixes and improvements
    • Fixed DMA bug, floppy drives work properly in Windows 3.x
    • Fixed bug in FXAM - fixes Wolf 3D, Dogz, some other stuff as well
    • Other FPU fixes
    • Fixed serial bugs, mouse no longer disappears in Windows 9x hardware detection
    • Major reorganization of CPU emulation
    • Other fixes and changes
v8.1 3 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
v9 4 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
v10 24 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
    • CPU fixes - fixed issues in Unreal, Half-Life, Final Fantasy VII, Little Big Adventure 2, Windows 9x setup, Coherent, BeOS and others
    • Internal timer improvements, fixes sound in some games (eg The Lion King)
    • MIDI OUT code now handles SysEx commands correctly
    • CD-ROM code now no longer crashes Windows 9x when CD-ROM drive empty
    • Fixes to ViRGE, S3 Vision series, ATI Mach 64 and OAK OTI-067 cards
    • Other fixes and changes
v10.1 7 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
v11 5 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
v12 18 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
v13 11 December 2017
  • New machines - Atari PC3, Epson PC AX, Epson PC AX2e, GW-286CT GEAR, IBM PS/2 Model 30-286, IBM PS/2 Model 50, IBM PS/2 Model 55SX, IBM PS/2 Model 80, IBM XT Model 286, KMX-C-02, Samsung SPC-4200P, Samsung SPC-4216P, Toshiba 3100e
  • New graphics cards - ATI Video Xpression, MDSI Genius
  • New sound cards - Disney Sound Source, Ensoniq AudioPCI (ES1371), LPT DAC, Sound Blaster PCI 128
  • New hard drive controllers - AT Fixed Disk Adapter, DTC 5150X, Fixed Disk Adapter (Xebec), IBM ESDI Fixed Disk Controller, Western Digital WD1007V-SE1
  • New SCSI adapters - Adaptec AHA-1542C, BusLogic BT-545S, Longshine LCS-6821N, Rancho RT1000B, Trantor T130B
  • New network adapters - NE2000 compatible
  • New cross-platform GUI
  • Added Voodoo SLI emulation
  • Improvements to Sound Blaster emulation
  • Improvements to Pentium timing
  • Numerous bug fixes and improvements
v13.1 17 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
v14 20 April 2018
  • New machines - Compaq Portable Plus, Compaq Portable II, Elonex PC-425X, IBM PS/2 Model 70 (types 3 & 4), Intel Advanced/ZP, NCR PC4i, Packard Bell Legend 300SX, Packard Bell PB520R, Packard Bell PB570, Thomson TO16, Toshiba T1000, Toshiba T1200, Xi8088
  • New graphics cards - ATI Korean VGA, Cirrus Logic CL-GD5429, Cirrus Logic CL-GD5430, Cirrus Logic CL-GD5435, OAK OTI-037, Trident TGUI9400CXi
  • New network adapters - Realtek RTL8029AS
  • Added Iomega Zip drive emulation
  • Added option for default video timing
  • Added dynamic low-pass filter for SB16/AWE32 DSP playback
  • Added support to select external video card on some systems with built-in video
  • Added support for IDE hard drives up to 127 GB
  • Added support for up to 7 SCSI devices
  • Implemented CMPXCHG8B on Winchip. Can now boot Windows XP on Winchip processors
  • Added CD-ROM emulation on OS X
  • Tweaks to Pentium and 6x86 timing
  • Numerous bug fixes
v15 19 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
v16 19 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
v17 1 December 2020

See also

References