EP128emu v2.0.9.1 has been released

Changes in version

  • some debugger changes related to ignore breakpoints
  • it is possible to delete single breakpoints in Lua scripts by using a negative priority value
  • minor 6845 CRTC emulation bug fix
  • fixed bugs in closing the debugger window with the Esc key

EP128emu v2.0.9 has been released

Changes in version 2.0.9:

  • implemented CPC floppy drive controller (uPD765) emulation:
    • it supports standard and extended .DSK image files, as well as using a real disk in the PC floppy drive (the latter is not very useful in practice, since it is limited to standard PC format DD (720K) disks, which are not supported by AMSDOS)
    • 4 drives can be emulated (although AMSDOS will only use 2)
    • there is (not perfect) emulation of the timing of disk rotation, stepping, head (un)load, and data transfers; however, this may not work if the image file includes a track format that is not possible on a real DD disk (~6250 bytes per track)
    • the FORMAT TRACK (0x0D) command is unimplemented - it will always report a write protect error
    • the floppy drive emulation has not been tested extensively yet, so there may be problems with unusual disk formats, rarely used FDC commands and parameters, and some copy protections
    • reading the I/O ports 80H-9FH in the debugger will return some debugging information about the FDC emulation (see the README file for details)
    • changes to the installer/packaging: new machine configuration files have been added that include AMSDOS (the default is now CPC 6128 with AMSDOS), the package includes an empty CPC disk image, and on Windows .DSK files can be associated with the emulator
  • the CPC video emulation now supports half-character resolution scrolling by changing the horizontal sync width
  • improved 6845 CRTC emulation accuracy, fixing problems in some CPC games
  • it is possible to disable software control of the tape motor (this is useful mainly to work around some buggy Enterprise software)
  • when using the PC floppy drive and a real disk for WD177x emulation, the geometry parameters are now also queried from the system on Linux
  • if the WD177x emulation detects a valid FAT header at the beginning of a disk or image, it checks the geometry stored there, and if it does not match the emulated hardware geometry, an error is reported; this can be disabled by specifying all three parameters manually
  • the Windows installer uses new download locations for the ROM package, since the previous ones no longer work
  • the ROM package has been updated (new versions of Enterprise ROMs)
  • minor fixes/improvements in DAVE and NICK emulation
  • on the first page of the debugger window, the memory dump can now also display I/O ports
  • the debug display of I/O registers has been changed slightly for CPC (shows the currently selected CRTC register, and the CRTC memory address)
  • the monitor emulation allows less difference from the standard vertical refresh rate than in the previous versions
  • a 189 MB (12x15.75 MB FAT12 partitions) .VHD file has been added to the disk image packages
  • the Windows installer now includes LuaJIT 2.0.0 beta5 in addition to the stable 1.1.6 version. To use the faster beta version, copy or rename lua51-2.dll to lua51.dll, removing or renaming the original lua51.dll file
  • some optimizations in Enterprise and CPC emulation

EP128emu v2.0.8.1 has been released

Changes in version

  • some CPC emulation bugs have been fixed

EP128emu v2.0.8 has been released

Changes in version 2.0.8:

  • implemented ZX Spectrum 48/128 and Amstrad CPC emulation; for now, only a basic configuration of these machines is supported (there is no disk emulation yet), although the emulation accuracy should be good. See the README file for more details
  • new command line options for selecting the machine type to be emulated: -ep128, -zx, and -cpc
  • undocumented Z80 flags are emulated more accurately - the only instruction that is still not correct is 'BIT n, (HL)'
  • fixed bug in the emulation of DAVE port B6H, which prevented some games from working
  • reduced the time before the floppy write buffer is flushed from 4 seconds to 1 second
  • the editor buffer in the monitor has been increased from 120 to 160 lines
  • the monitor TR (trace) command has a new optional parameter now that controls the printing of additional information about the video position and Z80 registers
  • new Lua functions: readWord(), readWordRaw(), writeWord(), writeWordRaw(), getIFF1(), getIFF2(), setIFF1(), setIFF2(), getVideoPosition(), and getRawAddress(); these are documented in the README file
  • detailed information about Lua errors is now also printed if the error occurs in an extension function implemented by the emulator
  • segment:offset style breakpoints allow the offset to be greater than 3FFFH (the two most significant bits are ignored, but must match when specifying an address range)
  • the Z80 disassembler in the debugger now supports more undocumented instructions
  • fixed bug in the Lua example script
  • the file I/O extension ROM (epfileio.rom) has been modified so that EXOS block read and write (6 and 8) calls are implemented in Z80 code, and not in the emulator; this reduces the speed of these operations to a level similar to disk drives, and allows watchpoints set on the read or written memory area to work
  • the source code of epfileio.rom is included

EP128emu v2.0.7 has been released

Changes in version 2.0.7:

  • implemented IDE hard disk emulation, with support for up to 4 2 GB image files in raw or VHD format; a 126 MB disk image with 4 FAT12 formatted 31.5 MB partitions is also included for use with the emulator
  • more accurate Z80, video memory, and NICK I/O port timing; note that this change breaks demo compatibility with previous versions
  • improved NICK emulation: all possible video modes, including undocumented and "invalid" ones, are now emulated, and some bugs have been fixed as well
  • a 4-channel 8-bit external DAC is emulated at ports F0h to F3h

  • it is now possible to load and use epmemcfg format memory configuration files, which allow for avoiding the limitations of the GUI based memory configuration; the file format is documented in README
  • DAVE sound emulation fixes
  • the 'motor on' bit of WD177x is emulated (the RockDigi demo now runs)
  • on Windows, native file selection dialogs are also used in tapeedit.exe
  • machine configurations generated by makecfg automatically enable or disable the 'virtual file I/O' setting, depending on whether epfileio.rom is included
  • the debugger prints more detailed information about syntax and runtime errors in Lua scripts, and there is a new button to insert an empty breakpoint callback function
  • fixed interlace in single buffered OpenGL mode at quality=0
  • fixed compile error on Linux when building without SDL, or using old SCons or Lua versions
  • some other minor bug fixes, and optimizations

EP128emu v2.0.6 has been released

Changes in version 2.0.6:

  • Various improvements have been made to the debugger:
    • memory read watchpoints can have a type of r or x to break on data or Z80 instruction reads only; the Ignore data reads button has been removed
    • new "step" buttons for stepping to the target of any conditional branch instruction (Step into), the 16-bit address at the top of the stack (Return), or any 16-bit address specified by the user (Step to)
    • the memory dump, CPU, and I/O register displays include more information now
    • in addition to the default hexadecimal format, it is also possible to specify numbers in the monitor in binary (e.g. %1010), octal (12o), and decimal (10l) format
    • the Step over button can also be used to skip conditional JP and JR instructions
    • fixed the flickering window effect while using the step buttons
  • Several new GUI keyboard shortcuts have been added; since these shortcuts can only be triggered while the Alt key is pressed, in the default configuration only the right Alt key (and, on Windows, the menu key) are bound to the Enterprise emulation now.
  • Native file dialogs are used instead of FLTK on Windows.
  • Some improvements have been made to the installer:

  • many new ROM files and machine configurations are installed
  • on Windows, it is possible to associate snapshot and demo files with the emulator
  • ROM images are downloaded as a single compressed archive, rather than separate uncompressed .rom files, for faster installation
  • the Win32 emulator executable has an icon and includes file information now

  • FILE: is the default device on startup when using the epfileio.rom extension.
  • Floppy drive emulation improvements: implemented the 'write track' command (formatting), image file I/O is buffered for improved performance when using real disks, and a few emulation bugs have been fixed.
  • In the memory configuration, ROM files can also be loaded to segments 40h to 43h.
  • Video display improvements and bug fixes; the screen is no longer blanked while the emulator is paused; interlace effect is also displayed at lower quality settings (1 and 2) in OpenGL mode.
  • Some NICK emulation fixes (note: the timing of demos recorded with older emulator versions may possibly be incorrect).
  • If there is an error initializing the display in OpenGL mode on Linux, the emulator will automatically switch the buffering mode, or fall back to software video to fix the problem.
  • Screenshots are saved in 256 color RLE compressed BMP format now, instead of TGA.
  • A few minor user interface improvements in the display, sound, and disk configuration windows.
  • The process priority of the emulator can be set in the menu (this is currently only implemented on Windows).
  • If not specified by the user, the extension is automatically added to file names by the file dialogs when saving files.
  • New 'Gtk+' GUI theme (-colorscheme 3).
  • Various minor bug fixes.

EP128emu v2.0.5 has been released

Changes in version 2.0.5:

  • changed the debugger window layout so that there is a larger window with only two tabs; also more information is displayed, and the mouse wheel can be used for scrolling the disassembly and memory dump views
  • implemented Lua scripting in the debugger; this makes it possible to write complex rules for breakpoints, but can have other uses as well, since the script can read and write memory, I/O ports, and CPU registers, in addition to having access to the standard Lua library functions
  • added a simple monitor to the debugger; the supported commands include assemble, disassemble, trace, memory and I/O port dump and modify, printing and changing CPU registers, memory compare, copy, fill, search, load and save, and more (use ? to print the list of available commands, or ? N for help on command N)
  • improved the audio quality of AVI recording, at the expense of making it somewhat slower
  • added new command line option for selecting the GUI style and colors
  • a few minor bug fixes and improvements

EP128emu v2.0.4 has been released

Changes in version 2.0.4:

  • keyboard map can be configured with the GUI
  • external game devices like joysticks and gamepads are supported, and can be assigned in the keyboard map like normal keys
  • video and audio output can be recorded to AVI files
  • it is now possible to use audio files (WAV, AIFF, etc.) as tape images, with support for all tape features except markers; a simple linear phase FIR filter can also be applied to the input signal
  • improved television vertical sync emulation
  • new command line option for loading a snapshot or demo file on start-up
  • added hue shift to the display options
  • emulation speed percentage and floppy drive LEDs are now displayed on the GUI; it is also possible to change the emulation speed
  • various minor bug fixes and improvements

EP128emu v2.0.3 release

Changes in version 2.0.3

  • fixed interrupts in Spectrum emulator
  • other minor fixes, including changes to allow for compiling with Microsoft Visual Studio 2005

EP128emu v2.0.0 has been released

Changes in version 2.0.0

  • removed Plus/4 emulation (moved to a separate plus4emu project)
  • implemented new video mode that resamples the video output to the refresh rate of the monitor; enabling this allows smoother display update at the expense of higher CPU usage and some latency in the video output
  • screenshots can be saved in 8-bit RLE compressed TGA format
  • quick loading of clock frequency and timing configuration presets with PageUp/PageDown keys (useful for switching between normal and fast Z80 speed)
  • virtual file I/O can be disabled in the machine configuration
  • bug fixes in NICK emulation
  • attempt to fix OpenGL crash that occurs on some machines
  • added some hacks to the audio driver to reduce timing jitter on Windows; this still needs improvements
  • various minor bug fixes

EP128emu v2.0.2 has been released

Changes in version 2.0.2

  • implemented Spectrum emulator
  • implemented real time clock
  • in the default keyboard map, Home can also be used now as HOLD, and End as STOP; the original keys (Pause/Break and PrintScreen/SysRq) did not work on some machines
  • keyboard matrix state is no longer cleared on soft reset
  • NICK registers are initialized to random values on start-up
  • added new ROM images and machine configuration presets
  • the makecfg utility now asks for an installation directory if started without command line arguments, and automatically creates directories
  • minor improvements to GUI menu layout

EP128emu v2.0.1 has been released

Changes in version 2.0.1

  • improved timing accuracy of Z80 memory and NICK port accesses (this is still not perfect); note that when playing demo files recorded by previous releases, the timing may go out of sync because of this change
  • DAVE internal sample rate can now be changed with the sound clock frequency option
  • removed video memory latency option
  • implemented 'ignore' watchpoints in the debugger; these can be defined by using the 'i' suffix. Watchpoints and single step mode will not stop the emulation and open the debugger while the program counter is at any address for which the ignore flag is set
  • added I/O tab to the debugger (displays the state of I/O registers)
  • the disassembler now supports the undocumented SLL instruction, and also prints RST 30 as 'EXOS nn'
  • added 'step over' button to the debugger; it is similar to 'step', but when encountering any subroutine call or looping instructions, it will continue program execution until the subroutine returns or the loop is finished
  • disassembly view address is automatically updated when the debugger is opened by a watchpoint being triggered or using the step buttons; the current tab is also remembered and not changed to 'general'
  • new 't' debugger command for copying memory
  • added limited (read-only) support for EPTE/TAPir format tape files
  • fixed direct floppy disk access on Windows
  • improved autodetection of disk geometry parameters; with a disk image that contains a FAT filesystem, none of the parameters need to be specified explicitly (all can be set to -1)
  • added workaround for FLTK bug that resulted in the right shift key being interpreted as left shift on Windows
  • various minor improvements in the software video driver, such as reduced aliasing when using a display resolution of 1152x864, and slightly lower CPU usage with exact integer scaling ratios (i.e. resolutions 384x288, 768x576, 1152x864, and 1536x1152 with the pixel aspect ratio set to 1.0)
  • when loading large ROM images, the GUI now automatically sets the file name and offset for all segments
  • minor bug fixes

EP128emu v2.0.0 beta1 has been released

Changes in version 2.0.0 beta1 (since version 1.6.1)

  • graphical user interface using the FLTK library
  • a GUI debugger with support for listing CPU registers, memory dump, disassembly, setting watchpoints, and more
  • new audio and video drivers with more features and improved quality
  • new ROM module that implements a FILE: EXOS device for direct file access
  • improved tape emulation
  • demo recording (snapshot and keyboard events stored in a file)
  • external joystick emulation (using the numeric keypad)
  • various internal code changes to allow for the emulation of multiple machine types
  • added Commodore Plus/4 emulator mode with high accuracy and support for SID emulation, as well as 1541 and 1581 floppy drives