Pcem
PCem
Install / Use
/learn @sarah-walker-pcem/PcemREADME
PCem
Download: Windows/Linux/vNext (Wise Global Solutions Mirror)
Latest version: <b>v17</b> Changelog
PCem is licensed under GPL v2.0, see COPYING for more details.
You can submit patches on our forum. Before you do, please note the guidelines for submitting patches.
:exclamation: Note: <b>NO COPYRIGHTED ROM FILES ARE INCLUDED NOR WILL THEY BE. PLEASE DO NOT ASK FOR THEM.</b>
BSD and Linux supplement
You will need the following libraries and buildtools (and their dependencies):
- SDL2
- wxWidgets 3.x
- OpenAL
- CMake
- Ninja (Recommended, but you can use a Makefile generator if you prefer)
- CLang Toolchain
Open a terminal window, navigate to the PCem directory, create a build directory, then enter in that build directory:
Linux/BSD
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release ..
ninja
then ./src/pcem to run.
BIOS ROM images, configuration files, and other data are stored in ~/.pcem. You can also create a .pcem folder with
the Binary, and run it in a portable mode.
You can specify the Display Engine using -DPCEM_DISPLAY_ENGINE= The only valid option you have at this time is
wxWidgets
The configure options are specified below. They are in the format of -DOption=Value. Value under here is the
default value.
-DCMAKE_BUILD_TYPE=Release : Generate release build. Recommended for regular use.
-DCMAKE_BUILD_TYPE=Debug : Compile with debugging enabled.
-DUSE_NETWORKING=ON : Build with networking support.
-DUSE_PCAP_NETWORKING=ON : Build with pcap networking support. (Needs USE_NETWORKING to compile) Requires libpcap.
-DUSE_ALSA=OFF : Build with support for MIDI output through ALSA. Requires libasound. (Linux Only)
-DFORCE_X11=ON : Enables a hack to force X11 on Wayland systems. See #128 for details. (Linux Only)
-DPLUGIN_ENGINE=ON : Build with plugin support. Builds libpcem-plugin-api and links PCem with it.
-DPCEM_MARCH=x86_64-v2 : Change the architecture used for generated instructions, by default we set it for
>= Nehalem for Intel, and >= Bulldozer for AMD.
If you are using -DCMAKE_BUILD_TYPE=Debug, there are some more debug options you can enable if needed
-DPCEM_SLIRP_DEBUG=OFF : Build PCem with SLIRP_DEBUG debug output
-DPCEM_RECOMPILER_DEBUG=OFF : Build PCem with RECOMPILER_DEBUG debug output
-DPCEM_NE2000_DEBUG=OFF : Build PCem with NE2000_DEBUG debug output
-DPCEM_EMU8K_DEBUG_REGISTERS=OFF : Build PCem with EMU8K_DEBUG_REGISTERS debug output
-DPCEM_SB_DSP_RECORD_DEBUG=OFF : Build PCem with SB_DSP_RECORD_DEBUG debug output
-DPCEM_MACH64_DEBUG=OFF : Build PCem with MACH64_DEBUG debug output
-DPCEM_DEBUG_EXTRA=OFF : Build PCem with DEBUG_EXTRA debug output
If you are using -DCMAKE_BUILD_TYPE=RelWithDebInfo, there are additional options you can do
-DPCEM_RELDEB_AS_RELEASE=ON : Builds RelWithDebInfo with debugging logging enabled when this is off
They are some extra modules you can add if you build with -DUSE_EXPERIMENTAL=ON. These modules are untested.
incomplete, and may or may not be in a future build of PCem. We do not provide builds with these enabled as
well. It is also possible they may not even build.
-DUSE_EXPERIMENTAL_PGC=ON : Build PCem with Professional Graphics Controller support.
-DUSE_EXPERIMENTAL_PRINTER=ON : Build PCem with Printer support. Requires freetype.
The menu is a pop-up menu in the Linux/BSD port. Right-click on the main window when mouse is not captured.
CD-ROM support currently only accesses /dev/cdrom. It has not been heavily tested.
Links
PCem emulates the following hardware:
Hardware | Links --- | --- Systems | 8088<br/>8086<br/>286<br/>386<br/>486<br/>Pentium<br/>Super Socket 7 Graphics | Basic<br/>Unaccelerated (S)VGA cards<br/>2D accelerated SVGA cards<br/>3D accelerated SVGA cards<br/>3D only cards Sound | Cards HDD Controller | Cards Misc | Cards
Software Tested (list)
- DOS<br/>
- Windows<br/>
- Windows NT<br/>
- OS/2<br/>
- Linux<br/>
- Applications<br/>
- Games<br/>
- Demos<br/>
- Emulators<br/>
Systems
8088 based
Release | Machine | ROM file needed<br/>(within ./roms/ folder) :-: | --- | --- 1981 | <b>IBM PC</b><br/>8088 at 4.77 MHz<br/>16KB - 640KB RAM (min. 64KB) | ibmpc/pc102782.bin<br/>ibmpc/basicc11.f6<br/>ibmpc/basicc11.f8<br/>ibmpc/basicc11.fa<br/>ibmpc/basicc11.fc 1983 | <b>Compaq Portable Plus</b><br/>8088 at 4.77 MHz<br/>128KB - 640KB RAM | compaq_pip/Compaq Portable Plus 100666-001 Rev C.bin 1983 | <b>IBM XT</b><br/>8088 at 4.77 MHz<br/>64KB - 640KB RAM | ibmxt/5000027.u19<br/>ibmxt/1501512.u18 1983 | <b>Leading Edge Model M</b><br/>8088 at 7.16 MHz<br/>128KB - 704KB RAM | leadingedge_modelm/Leading Edge - Model M - BIOS ROM - Version 4.71.bin 1984 | <b>IBM PCjr</b> <i>[5]</i><br/>8088 at 4.77 MHz<br/>64KB - 640KB RAM (min. 128KB)<br/>Built-in 16 colour graphics<br/>3 voice sound<br/>Not generally PC compatible. | ibmpcjr/bios.rom 1984 | <b>Tandy 1000</b> <i>[5]</i><br/>8088 at 4.77 MHz<br/>128KB - 640KB RAM<br/>Built-in 16 colour graphics<br/>3 voice sound | tandy/tandy1t1.020 1985 | <b>Commodore PC10</b><br/>8088 at 4.77 MHz<br/>640KB RAM CGA/Monochrome | cbm_pc10/cbm-pc10c-bios-v4.41-318085-08.bin 1985 | <b>NCR PC4i</b><br/>8088 at 4.77 MHz<br/>256KB - 640KB RAM | ncr_pc4i/NCR_PC4i_BIOSROM_1985.BIN 1986 | <b>DTK Clone XT</b><br/>8088 at 8/10 MHz<br/>64KB - 640KB RAM | dtk/dtk_erso_2.42_2764.bin 1986 | <b>Phoenix XT clone</b><br/>8088 at 8/10 MHz<br/>64KB - 640KB RAM | pxxt/000p001.bin 1987 | <b>Hyundai Super 16T</b><br/>8088/8087 at 4.77/8.0 MHz<br/>640KB RAM<br/>EGA 16 colour graphics<br/> | super16t/hyundai-super-16t-system-bios-hea-v1.12ta.bin 1987 | <b>Tandy 1000HX</b><br/>8088 at 7.16 MHz<br/>256KB - 640KB RAM<br/>Built-in 16 colour graphics<br/>3 voice sound<br/>Has DOS 2.11 in ROM | tandy1000hx/v020000.u12 1987 | <b>Thomson TO16 PC</b><br/>8088 at 9.54 MHz<br/>512KB - 640KB RAM | to16_pc/TO16_103.bin 1987 | <b>Toshiba T1000</b> <i>[1]</i> <i>[5]</i><br/>8088 at 4.77 MHz<br/>512KB - 1024KB RAM<br/>CGA on built-in LCD | t1000/t1000.rom<br/>t1000/t1000font.rom 1987 | <b>VTech Laser Turbo XT</b><br/>8088 at 10 MHz<br/>640KB RAM | ltxt/27c64.bin 1987 | <b>Zenith Data SupersPort</b><br/>8088 at 8 MHz<br/>128KB - 640KB RAM<br/>Built-in LCD video is not currently emulated | zdsupers/z184m v3.1d.10d 1988? | <b>©Anonymous Generic Turbo XT BIOS</b><br/>8088 at 8+ MHz<br/>64KB - 640KB RAM | genxt/pcxt.rom 1988 | <b>Atari PC3</b><br/>8088 at 8 MHz<br/>640KB RAM | ataripc3/AWARD_ATARI_PC_BIOS_3.08.BIN 1988 | <b>Juko XT clone</b> | jukopc/000o001.bin 1988 | <b>Schneider Euro PC</b><br/>8088 at 9.54 MHz<br/>512KB - 640KB RAM | europc/50145<br/>europc/50146 1989 | <b>AMI XT clone</b><br/>8088 at 8+ MHz<br/>64KB - 640KB RAM | amixt/ami_8088_bios_31jan89.bin 1989 | <b>Hyundai Super 16TE</b><br/>8088/8087 at 10 MHz<br/>640KB RAM<br/>EGA 16 colour graphics<br/> | super16te/hyundai-super-16te-system-bios-v2.00id.bin 2015 | <b>Xi8088</b><br/>8088 at 4.77-13.33 MHz<br/>640KB RAM | xi8088/bios-xi8088.bin
8086 based
Release | Machine | ROM file needed<br/>(within ./roms/ folder) :-: | --- | --- 1984 | <b>Compaq Deskpro</b><br/>8086 at 8 MHz<br/>128KB - 640KB RAM | deskpro/Compaq - BIOS - Revision J - 106265-002.bin 1984 | <b>Olivetti M24</b> <i>[5]</i><br/>8086 at 8 MHz<br/>128KB - 640KB RAM<br/>Built-in enhanced CGA (supports 640x400x2) | olivetti_m24/olivetti_m24_version_1.43_low.bin<br/>olivetti_m24/olivetti_m24_version_1.43_high.bin 1986 | <b>Amstrad PC1512</b> <i>[5]</i><br/>8086 at 8 MHz<br/>512KB - 640KB RAM<br/>Enhanced CGA (supports 640x200x16)<br/>Custom mouse port | pc1512/40043.v1<br/>pc1512/40044.v2<br/>pc1512/40078.ic127 1987 | <b>Amstrad PC1640</b> <i>[5]</i><br/>8086 at 8 MHz<br/>640KB RAM<br/>Built-in Paradise EGA<br/>Custom mouse port | pc1640/40043.v3<br/>pc1640/40044.v3<br/>pc1640/40100 1987 | <b>Toshiba T1200</b> <i>[1]</i> <i>[5]</i><br/>8086 at 9.54 MHz<br/>1MB - 2MB RAM<br/>CGA on built-in LCD | t1200/t1200_019e.ic15.bin<br/>t1200/t1000font.rom 1988 | <b>Amstrad PPC512/640</b> <i>[5]</i><br/>8086 at 8 MHz<br/>512KB - 640KB RAM<br/>Built-in CGA w/ plasma display | ppc512/40107.v2<br/>ppc512/40108.v2<br/>ppc512/40109.bin 1988 | <b>Sinclair PC200/Amstrad PC20</b> <i>[5]</i><br/>8086 at 8 MHz<br/>512KB - 640KB RAM<br/>Built-in CGA (supports TV-out 50hz PAL) | pc200/pc20v2.0<br/>pc200/pc20v2.1<br/>pc200/40109.bin 1988 | <b>VTech Laser XT3</b><br/>8086 at 10 MHz<br/>512KB - 1152KB RAM | lxt3/27c64d.bin 1989 | <b>Amstrad PC2086</b> <i>[5]</i><br/>8086 at 8 MHz<br/>640KB RAM<br/>Built-in VGA | pc2086/40179.ic129<br/>pc2086/40180.ic132<br/>pc2086/40186.ic171 1989 | <b>Tandy 1000SL/2</b> <i>[5]</i><br/>8086 at 9.54 MHz<br/>512KB - 768KB RAM<br/>Built-
