History of ep128emu releases
Changes in version 1.6.1
-
ep128emu home page has been moved to
http://sourceforge.net/projects/ep128emu/.
-
Video and sound driver can be selected with the 'video_driver'
and 'sound_driver' configuration options. The available video
drivers are 'null' (no video and keyboard - not very useful),
'sdl', and 'opengl'. Sound drivers are 'null' (disable sound),
'sdl', 'alsa' (Linux only), and 'winmm' (Win32 only, does not
work very well yet).
-
New, OpenGL based video driver that can be enabled with the
'video_driver=opengl' option. Allows scaling the emulator
window by any ratio (e.g. from 720x540 to 1024x768),
optionally with linear filtering, and is faster than the old
SDL driver if a high resolution is used. Double buffering and
'blit_on_change_only' are supported, however, there is no
implementation for interlaced display and half refresh rate.
'video_hw' is ignored in GL mode, as it always uses
hardware acceleration. See the file '.ep128rc.gl' for more
details.
-
If the OpenGL video module is used, a transparent console
overlay may be enabled (with the 'gl_console=1' option).
This is most useful in fullscreen mode where the console
messages could not be seen otherwise. Messages are shown
when the keyboard is in program control mode (F12), and are
hidden in normal emulation mode.
The disadvantage of enabling the console is increased CPU
usage, and it also automatically turns on double buffering
and disables 'blit_on_change_only'. So, the GL console is
best used on fast computers.
-
Improved color correction: gamma, contrast, and brightness
can be specified for each color channel (R, G, B), in addition
to the overall values that affect all channels. For example,
the 'gamma_b' option sets the gamma correction for the blue
channel, 'min_intensity_g' controls the minimum intensity
(brightness) of the green channel etc.
-
Emulator messages can be logged to a file with the
'logfile=filename' option, and it is possible to disable
printing to stderr with 'msg_stderr=0'.
-
Direct floppy access under Windows 2000/XP; set the image name
to '\\.\A:@80,2,9' or '\\.\B:@80,2,9' for a 3.5" 720k disk
(note: the disk geometry must be specified, as the emulator
cannot detect it). 5.25" disks were not tested.
-
Bug in disk emulation after snapshot loading may be fixed now.
-
Some functions of the emulator can be accessed with multiple
keys, for improved compatibility with systems where the
original keys could not be used for some reason.
The new keys are:
Reset CPU frequency to 4 MHz
|
Keypad Enter, Keypad *
|
HOLD / Quit emulator
|
Pause, PageUp
|
STOP
|
Print Screen, End
|
-
New sound driver for Win32 that uses the waveOut interface,
and is enabled with 'sound_driver=winmm'. This is experimental,
and currently not really usable.
-
Added more example configuration files.
Changes in version 1.6.0
-
Implemented floppy emulation, based on code from 'ep32' emulator (copyright
by Kevin Thacker and Vincze Bela Gyorgy, under the GNU General Public
License). Up to 4 drives can be emulated, floppy images with 40 to about
224 tracks, 2 sides, and 9 sectors per track are supported (this means a
capacity range of 360K to 2016K).
Under Linux it may be possible to use the floppy device (/dev/fd0*)
directly, although was not tested extensively (note: 1.44 MB PC floppies
with 80 cylinders/2 heads/18 sectors are not supported, however, by copying
images/disk1440 to an empty 1.44 MB disk (e.g. dd if=images/disk1440
of=/dev/fd0u1440) it is possible to create a floppy that can be read both
by EXDOS and the Linux kernel).
Disk images used by the emulator can also be mounted as loopback devices
(only do this when ep128emu is not running).
It is also possible to make the emulated floppies 'write-protected',
with the 'chmod' command under Unix-like systems or 'attrib' under Win32.
Currently, there are some limitations: single sided disks are not supported
(this means 180K disks cannot be used), the number of sectors per track
must be 9 (although it is not sure if EXDOS 1.3 can read disks in other
formats), and reading/writing whole tracks is not possible. As a result of
the latter limitation, floppies cannot be formatted from the emulated
system, you should use images copied from existing disks, or the empty
pre-formatted disk images included with the emulator.
For more details about floppy emulation, see .ep128rc.
-
Significantly improved the buffering algorithm of the SDL sound driver,
to allow smooth display update even with large 'sndbuf_hw' settings that
are needed on Win32 systems, as long as 'sndbuf_sw' is sufficiently low.
Experiment with these options for best performance.
-
The 'Keypad Del' key can be used to set an alternate Z80 clock frequency
that is specified with the 'cpu_altfrq' option.
This is useful to temporarily switch to a high frequency (e.g. 25 MHz, or
even 100 MHz on sufficiently fast systems) to speed up some operations e.g.
copying large files between disks, and then revert to the standard 4 MHz
(using 'Keypad Enter') once the high speed is no longer needed.
Note that tape transfers will become slower with a faster Z80 setting, so
it is not recommended to use this while copying files from/to tapes.
-
Removed 'VRAM_TIMING' Makefile option, as the more advanced video memory
timing algorithm is always used now; it has been optimized though, so is
not as slow as in the previous version.
-
Added 'vram_latency' configuration option, in addition to the existing
'vram_clock', for better control of video memory timing.
-
The 'nowait_freq' option can be used to set a Z80 clock frequency above
which all memory timing emulation is disabled (if the CPU is running at
a very high frequency, the speed of the emulated system differs from the
original machine anyway, with or without memory wait states, so having
them would only slow down the emulator).
-
Automatic switching of half refresh rate is now disabled when double
buffered video is in use, as it caused display problems.
-
Pre-formatted disk images, and empty tapes of various sizes are included
with the emulator (360/720/1440/2016K disks, and 5/10/30/60 min. tapes),
for use on systems (e.g. Win32) where utilities to create them (dd, mformat
etc.) are not available.
-
Minor coding improvements.
Changes in version 1.5.2
-
Significantly improved CPU timing (most - though still not all - opcodes
now take the correct amount of cycles to execute).
-
Improved the emulation of memory wait states, now all the three modes
(no wait, wait on reading first byte of an opcode, wait on all access)
are supported. Unfortunately this makes the CPU emulation slower.
-
Experimental video memory timing; one of two possible implementations can
be selected at compile time (see Makefile): the simple version waits two
CPU cycles on any video memory access (this is the default), and the more
advanced code synchronizes to a clock frequency that can be adjusted with
the 'vram_clock' option (enabling this one results in a major slowdown of
CPU emulation). The 0xBF I/O port has no effect on video memory timing
(this is the correct behavior, according to documentation), unlike in
previous versions of the emulator.
-
Optimizations in NICK emulation for improved performance.
-
Changes to buffering in SDL sound driver; latency is now slightly worse,
but the risk of getting buffer underruns is reduced, even with smaller
buffer sizes.
-
It is now possible to update the display at 25 Hz instead of 50 Hz (this
only affects copying to the screen, the NICK emulation always runs at 50
frames per second), for improved performance with slow video drivers.
Enabled by 'half_refresh' option.
-
SDL sound driver can automatically switch between half and full refresh
rate depending on current state of the sound buffer. More details about
this can be found in .ep128rc.
-
INT1 and INT2 states had inverted polarity in previous versions, due to
incorrect documentation; this is now fixed (several programs run better).
-
Fixed bug that caused a crash with certain LPT margin settings (this often
occured after reset).
-
Lower byte of interrupt vector used in interrupt mode 2 is now assumed to
be 0xFF, allowing some games using this mode to run.
-
Fixes to Z80 overflow and half-carry flags in some arithmetic operations.
-
Reset now only turns off the tape motor, and does not behave as if F10
has been pressed.
Changes in version 1.5.1
-
The emulator is now released under the terms of the GNU General Public
License.
-
Further improved DAVE emulation, now all the polynomial counters generate
the same bit sequence as a real DAVE chip. Also fixed the polarity and
levels of the sound generators and DAC output, and the emulator now
generates unipolar signals like the original machine (this fixes some
demos where sound was almost inaudible). The new sound code is slightly
slower, though.
-
Highpass filters with controllable frequency (0 to 100 Hz) can be applied
to the sound output, to remove DC offset (configuration options 'dcblock_1'
and 'dcblock_2').
-
Sound volume can be controlled with the 'volume' option (also allows
inverting the output signal).
-
Writing to tape at 2400 bits/second may work now.
-
Fixed bug in ALSA code that sometimes failed the initialization.
-
Minor code changes in some source files.
Changes in version 1.5.0
-
Major improvements to DAVE emulation, most of the sound code has been
rewritten. The new implementation is based on extensive testing of a
real Enterprise 128 with various DAVE register settings, and analysis
of recorded sound output.
-
Highpass and lowpass filters, ring modulation, and distortion using
polynomial counters are now emulated accurately, and reproduce the
sound output of the original machine fairly well, even in cases when
multiple effects (e.g. polynomial counter distortion + highpass + ring
modulation) are applied to the same channel.
-
The 4, 5, 7, 9, and 11 bit polynomial counters now reproduce the
pseudo-random bit sequences of a real DAVE chip exactly, with identical
output. The 15 and 17 bit counters do not generate the same bit sequence
as the original machine (the length is correct, however), although the
difference between long pseudo-random sequences is difficult to hear.
-
Sound oversample can be now up to 16 (previously it was limited to 8).
-
The 'enable_bf_bit_1' option has been removed, because this bit is now
emulated correctly.
-
Bug in NICK emulation that caused flickering display with LPTs that have
more than the standard 312 lines has been fixed (still need to correctly
implement interlaced display and other unusual video settings).
-
Some configuration options are now checked, and if an invalid setting is
found, it is limited to the valid range and a warning is printed.
-
An unsuccesful initialization of the sound card is now an error instead
of a warning.
-
The snapshot file format has been changed because of the new DAVE
emulation code. Snapshots of old versions are still supported, however,
older releases (1.4.1 and before) of the emulator cannot read the new
snapshot files.
-
Various (mostly minor) code changes in some source files.
Changes in version 1.4.1
-
New configuration option: 'blit_on_change_only'. If enabled, only
those areas of the display are updated that have been changed since
the last frame. Improves performance if the video driver is slow.
-
Faster tape loading and saving, enabled by setting 'fast_tape_mode'
to a non-zero value. The emulator can switch to full speed during
tape access (sound is turned off), and then return to the normal
speed when the load/save is complete.
-
New keys for controlling the frequency of the emulated CPU:
keypad - decreases CPU speed by 5 percent, keypad + increases by 5
percent, and keypad enter resets the frequency to 4 MHz.
-
Keyboard usage can be printed with keypad ins.
-
NICK registers now also appear at ports 84-87, 88-8B, and 8C-8F, in
addition to the standard 80-83 range.
-
Reading from ports 10-1F now returns zero, so EXDOS does not hang at
start-up. Emulation of the disk controller is not done yet, but it is
possible to use a ram disk.
-
Tape motor is no longer turned off when switching tape files
(play/record is still stopped, though), making it possible to select
tapes while the emulated system is searching for a file.
-
Improved tape utilities: tape_enc can encode multiple files, and
there is a new utility (decode1) that can extract data from the 1-bit
24 kHz tape images. decode2 has been renamed to decode8.
Changes in version 1.4
-
New sound drivers (snd_sdl.c and snd_null.c) have been added, and
can be selected at compile time by uncommenting the appropriate lines
in Makefile. ALSA is still supported, as it has better performance.
With the SDL sound output, it may be possible to compile and run the
emulator on systems other than Linux (not tested yet), although SDL
has worse latency and timing than ALSA, and there is also higher CPU
usage.
The dummy sound driver allows compiling the emulator without sound
support, but it still does synchronization to real time (unless
no_sound=1 is used).
-
Fixed (hopefully) the problems with new ALSA versions. If it still
does not work (crashes during sound initialization), adding
-DUSE_OLD_ALSA_API=1 to the compiler flags may help.
-
ALSA sound device can be selected with the new 'snd_device=devname'
option (this is ignored if SDL is used for sound playback).
-
Experimental support for DAVE clock frequency switching (BF register
bit 1). Due to lack of documentation, this may not always work as
expected, but does fix sound in some programs where the pitch was
too high. In case of problems, this feature can be disabled with the
'enable_bf_bit_1=0' option.
-
Fixed LPIXEL video modes (typo in nick.c).
-
Reset now clears all DAVE registers (fixes occasional hang of emulated
machine after reset).
Changes in version 1.2
-
Fixed CPU frequency bug; now the correct value for cpu_freq is about
4000000 and not something like 1250000 as in the previous version.
Also more accurate CPU timing.
-
Saving files to tape now works (but needs using the low transfer rate
(1000 bits/second) for reliability).
-
Several changes and fixes to tape utilities.
-
Buffer sizes for sound output (sndbuf_hw and sndbuf_sw) can be changed.
-
Sound can be disabled (no_sound=1) for running the emulator at full speed.
-
Configuration options can also be set from the command line, overriding
settings in ~/.ep128rc.
Back to ep128emu home page
© Istvan Varga
<istvan_v@mailbox.hu>, 2004, 2005