Current state of the Enterprise emulator


Z80

The Z80 emulation is based on Kevin Thacker's 'ENTER' emulator, and implements both all documented and many undocumented opcodes fairly well. The timing of CPU instructions and memory access is still not perfect, but has been improved in recent versions of the emulator, and is now close to that of the original machine in most cases.

DAVE

Emulation of the DAVE chip is quite accurate, as far as sound, timers, and interrupts are concerned. Version 1.5.0 of ep128emu introduces a new DAVE implementation that is based on extensive tests of a real Enterprise 128, and all timers and sound related registers reproduce the behavior of the original machine fairly well.
All timers and interrupts are implemented, and appear to work correctly.
Switching the input clock frequency (bit 1 of I/O port BF) is supported, and is emulated accurately.
All memory wait state modes (no wait, wait on reading the first byte of an opcode, and wait on all memory access) are supported as of version 1.5.2, and can be selected with I/O port BF.
Of the external ports (B5, B6, and B7), only the keyboard and tape input are emulated. Having an implementation of the serial port, printer, and external joysticks would be useful, although is of lower priority than some other missing features.

NICK

All documented video modes are supported, and are implemented correctly in general. NICK registers are emulated, and can be accessed both at the standard location (ports 80 to 83), as well as undocumented ports (84 to 8F). Bits 5 and 6 (control external color input), and bit 7 (controls internal speaker) of port 80 are ignored, as these features do not make much sense in the case of an emulated machine.
One known limitation of the current NICK implementation is that it may not behave in the correct way if an unusual (e.g. interlaced display, excess number of lines etc.) line parameter table is encountered. Fortunately, problems related to this are not common, but with the help of more documentation, the NICK emulation could be improved to always generate the same display as the real hardware.

Memory paging

Any number of RAM segments can be emulated from 8 (64k memory) to 248 (3968k memory), controlled by the 'ram_kb' option. Up to 8 ROM images of 16384 bytes can be loaded from external files to segments 0 to 7.

Tape

Tape I/O is implemented, using 24 kHz 1-bit MSB mono sound files (there is no header), that can be both read and written.
It is also possible to copy data to a real Enterprise 128 by connecting the tape input to the output of the sound card (it may be necessary to adjust the output level (EXOS variable 35), though, and the 'fast_tape_mode' option must be disabled).
The emulator can turn off synchronization to real time while the tape is being accessed (controlled by the above mentioned 'fast_tape_mode' option), significantly reducing tape load/save times, especially on fast machines.
Several utilities for manipulating tape files are included with the emulator.

Disk controller (WD177x)

There is experimental disk emulation starting from ep128emu version 1.6.0, that allows read/write access to up to four disk images. Disks can also be made write-protected by setting the access permissions of the image files.
Known limitations (as of version 1.6.0):

File transfers and general disk use (creating directories etc.) seem to work, although more testing may be needed to find any possible bugs.
NOTE: the disk emulation implemented in ep128emu is based on code from the ep32 emulator (written by Vincze Bela Gyorgy, based on Kevin Thacker's ENTER emulator), that is available under the terms of the GNU General Public License.


Back to ep128emu home page


© Istvan Varga <istvan_v@mailbox.hu>, 2004, 2005 SourceForge.net Logo