• Print



plus4emu is an open source, portable emulator of the Commodore Plus/4 computer, written in C++, and supporting Windows and POSIX platforms


It implements accurate, high quality hardware emulation, however, the system requirements are higher than that of most other emulators.




Plus/4 emulation:

  • cycle exact emulation of the 7501/8501 CPU, with full support for all documented and undocumented opcodes

  • cycle exact TED 7360/8360 emulation with very high level of compatibility, implements all documented video modes, PAL/NTSC mode switching, accurate sound emulation, as well as all known display artifacts; all registers can be read and written, and the internal operation and timing is reproduced with very good accuracy

  • RAM size can be 16, 32, 64, 256, or 1024 kilobytes (the latter two using the Hannes memory expansion)

  • up to 8 16 kilobyte banks of ROM can be loaded from external image files; using custom ROM files for the emulated floppy drives and printer is also possible

  • limited emulation of the ACIA 6551 registers

  • tape emulation with playback, recording, and setting tape position; markers can be created for quick positioning to specific tape locations (useful for tapes with multiple files); uses custom file format which is PCM audio data with 1 to 8 bits of sample resolution and variable sample rate, and header including the table of markers; there is also limited (read only) support for the commonly used MTAP file format, as well as read-write (although without markers) support for sound files like WAV, AIFF, etc.

  • hardware level emulation of the 1541, 1551, and 1581 floppy disk drives, with support for D64 and D81 files; compatibility with 1541 and 1551 fast loaders is fairly good in recent versions of the emulator

  • IEC level 1551 floppy drive emulation for accessing .PRG, .P00, .R00, .S00, and .U00 files on the PC filesystem; this also supports the C, I, N, P, R, S, and V DOS commands

  • light pen emulation (compatible with the Trojan Light Pen software)

  • IEC level MPS-801 printer emulation

  • hardware level 1526/MPS-802 printer emulation

  • load and automatically start .PRG, .P00, .D64, .D81, or .TAP file on start-up

  • .PRG, .P00, .D64, and .D81 files can be associated with plus4emu on Windows

  • SID chip (MOS 6581 and 8580) emulation using version 1.0 of the reSID library written by Dag Lem; the Digi-Blaster expansion by Solder is also supported




  • graphical user interface using the FLTK library

  • software (FLTK based) or OpenGL video, with resizable emulator window, fullscreen mode, brightness/contrast/gamma can be set globally or separately for red/green/blue channels, color saturation control; additional features in OpenGL mode only: single or double buffered (with synchronization to vertical refresh) mode, linear texture filtering, and some display effects

  • high quality television (PAL and NTSC) emulation; implements full horizontal and vertical synchronization, blanking, equalization, sync, and burst signals, interlace, and (if OpenGL 2.0 shaders are available) separate luma/chroma filtering to emulate the blurredness of the TV picture

  • real time audio output uses the PortAudio library (v18 or v19), with support for many native audio APIs (MME/DirectSound/ASIO on Windows, OSS/ALSA/JACK on Linux, and CoreAudio on MacOS X); high quality sample rate conversion with low aliasing; volume control, two first order highpass filters with configurable cutoff frequency, and an optional parametric equalizer can be applied to the audio signal

  • recording audio output to a WAV format sound file

  • recording video and sound output to an AVI format video file, with RLE8 or uncompressed YV12 video at 24 to 60 frames per second, and 48000 Hz 16-bit PCM audio

  • saving screenshots as 768x576 PNG format files

  • saving and loading snapshots of the state of the emulated machine

  • demo recording (snapshot combined with stream of keyboard events which can be played back with accurate timing)

  • GUI debugger with support for breakpoints/watchpoints, viewing the current state of CPU registers and memory paging, displaying memory dump or loading from or saving to a file in ASCII or binary format, and disassembler with support for all undocumented 6502 opcodes. The debugger also includes a TEDMON-like monitor with support for all the commands, as well as some improvements and additional features (assemble/disassemble offset, saving disassembly to a file, physical (22 bit) memory addressing mode, undocumented CPU opcodes in the assembler and disassembler, trace, search/replace pattern in memory, and more). It is also possible to debug the 6502 compatible CPUs in floppy drives and printers. The debugger supports scripting in the Lua language, to allow for advanced uses like breakpoints with custom defined, complex set of conditions.

  • configurable keyboard map for the emulated machine; it is also possible to use external game controller devices like joysticks and gamepads

  • mouse and clipboard support for setting the cursor position, copying, and pasting text in the emulated machine:

    • left click: sets the cursor position

    • right click: sets the cursor position, and copies the selected word to the clipboard

    • ctrl + right click: sets the cursor position, and copies text from the selected line to the clipboard

    • shift + right click: copies text from the whole screen to the clipboard without changing the cursor position

    • middle click: sets the cursor position, and pastes text from the clipboard

    • shift + middle click: pastes text from the clipboard without changing the cursor position

  • the Plus/4 emulation can be used in other programs as a shared library with a C interface; see the plus4lib/plus4emu.h header file for details, and also plus4lib/sample.c for a simple example of using the interface


The emulator package also includes some utilities:


  • (p4)compress - compresses Plus/4 .PRG and .P00 files with very good compression ratio (CA65 assembler source code for the decompressor is available)

  • (p4)makecfg - reinstalls the configuration files of the emulator

  • p4fliconv - converts JPEG and other format images to various Plus/4 video modes (hires/multicolor, FLI, interlace, etc.); it can be used both from the command line, and as a GUI program which uses the emulator for accurate previews. CA65 assembler sources for the FLI viewer are also available.

  • p4sconv - converts PixelShop .P4S images to any of the output formats supported by p4fliconv

  • (p4)tapconv - converts MTAP format tape files to the native plus4emu tape format