ep128emu – Enterprise 64/128, ZX Spectrum 48/128, and Amstrad CPC 464/664/6128 computer emulator

ep128emu is an open source, portable emulator of the Enterprise 64/128, ZX Spectrum 48/128, and Amstrad CPC 464/664/6128 computers.

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

The emulator is written in C++, and supports Windows and POSIX platforms (32 bit Windows, 32 and 64 bit Linux, and MacOS X have been tested).

Features include:

  • Instruction based emulation of the Z80 CPU, supports all documented and some undocumented opcodes, and memory wait states (including synchronization with the NICK chip when accessing video memory).
  • RAM size can be set in 16 kilobyte steps in the range 64 to 3712.
  • ROM can be loaded from external image files to segments 00h to 07h, 10h to 13h, 20h to 23h, 30h to 33h, and 40h to 43h.
  • Using external configuration files, it is also possible to define any memory configuration without the above limitations.
  • NICK chip emulation, supporting all documented and undocumented video modes.
  • DAVE emulation, including timers, interrupts, external ports for tape and keyboard/joystick, memory paging, and sound output (all effects are supported, and the polynomial counters generate the same pseudo-random “noise” pattern as on the real machine).
  • 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 EPTE format tape files, as well as read-write (although without markers) support for sound files like WAV, AIFF, etc.
  • WD177x (floppy drive controller) emulation for EXDOS.
  • IDE hard disk emulation; supports up to 4 2 GB disks, image files can be in raw or VHD format.
  • Optional extension ROM (epfileio.rom) that implements a FILE: device for direct access to files on the host system in a single user selectable directory.
  • Spectrum emulator card emulation.
  • Real time clock (at ports 7Eh, 7Fh).
  • External 4-channel 8-bit DAC at ports F0h to F3h.
  • Graphical user interface using the FLTK library.
  • Software (FLTK based) or OpenGL video, with resizable emulator window, fullscreen mode, brightness, contrast, gamma, hue, and color saturation control; additional features in OpenGL mode only:
    • single or double buffered (with synchronization to vertical refresh) mode.
    • linear texture filtering.
    • resampling video output to the monitor refresh rate.
    • some display effects: motion blur, scanline shading, and (if OpenGL 2.0 shaders are available) PAL TV emulation.
  • Real time audio output uses the PortAudio library (v18 or v19), with support for many native audio APIs (MME/DirectSound/WDM-KS/WASAPI on Windows, OSS/ALSA/JACK on Linux, andCoreAudio 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 768×576 RLE8 or 384×288 uncompressed YV12 video at 24 to 60 frames per second, and 48000 Hz stereo 16-bit PCM audio.
  • Saving screenshots as 768×576 8-bit RLE compressed BMP 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 tape editor utility for copying Enterprise files from/to ep128emu tape images.
  • GUI debugger with support for breakpoints/watchpoints, viewing the current state of CPU and I/O registers and memory paging, displaying memory dump and searching for a pattern of bytes, and disassembler with support for all documented and some undocumented Z80 opcodes. A simple monitor is also included, with commands like assemble, disassemble (also to a file), trace, memory and I/O port dump and modify, printing and changing CPU registers, memory compare, copy, fill, search, load and save, and more. For most operations, addresses can be 16 bit CPU (affected by current paging) or 22 bit physical (all ROM and RAM data can be accessed, regardless of memory paging) addresses. Watchpoints can also be set on I/O ports and physical addresses. 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.

Support: Manual
Developer: Istvan Varga
License: GNU General Public License v2.0


ep128emu is written in C++. Learn C++ with our recommended free books and free tutorials.

Return to Quirky Home Computer Emulators

Popular series
Free and Open Source SoftwareThe largest compilation of the best free and open source software in the universe. Each article is supplied with a legendary ratings chart helping you to make informed decisions.
ReviewsHundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information.
Alternatives to Proprietary SoftwareReplace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS.
GamesAwesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series.
Artificial intelligence iconMachine Learning explores practical applications of machine learning and deep learning from a Linux perspective. We've written reviews of more than 40 self-hosted apps. All are free and open source.
Guide to LinuxNew to Linux? Read our Linux for Starters series. We start right at the basics and teach you everything you need to know to get started with Linux.
Alternatives to popular CLI tools showcases essential tools that are modern replacements for core Linux utilities.
System ToolsEssential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users.
ProductivityLinux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine.
AudioSurveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal.
Saving Money with LinuxSaving Money with Linux looks at how you can reduce your energy bills running Linux.
Home ComputersHome computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum.
Now and ThenNow and Then examines how promising open source software fared over the years. It can be a bumpy ride.
Linux at HomeLinux at Home looks at a range of home activities where Linux can play its part, making the most of our time at home, keeping active and engaged.
Linux CandyLinux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery.
DockerGetting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers.
Android AppsBest Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series.
Programming BooksThese best free books accelerate your learning of every programming language. Learn a new language today!
Programming TutorialsThese free tutorials offer the perfect tonic to our free programming books series.
Linux Around The WorldLinux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts.
Stars and StripesStars and Stripes is an occasional series looking at the impact of Linux in the USA.
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments