ElectrEm Future 0.5
===================
Welcome to
ElectrEm!
ElectrEm is an emulator of the
Acorn Electron that tries to be very easy to use through a combination of automation and accurate emulation.
This is the "Future" branch of
ElectrEm, begun in 2003 as a full scale replacement for the
ElectrEm code up until then. While the old code was a line based emulation, the replacement is event based. What that means in practice is that the old code worked in a fictionalised discrete time space where the entire system was updated in intervals of one pixel scanline, which is a relatively harmless fiction to introduce into an emulator, is an easy and obvious way to code and is probably how 95% of emulators out there work. The problem is that
ElectrEm was always striving to achieve 100% accuracy and any false assumptions work against that. As the hacks to introduce "better than scanline" accuracy accumulated they all tended to rely on knowledge of the workings of the other emulated subsystems and it became harder and harder to maintain everything. The old code was also resolutely single threaded, as you´d expect from an emulator with a DOS port.
An event based emulation is harder to conceptualise and implement, but doesn´t inherently introduce any inaccuracy. It also means that subsystems can be properly partitioned and easily maintained. Getting started is a lot tougher, but in the end optimisation is easier. The "Future" had to throw away most of the old code.
This version represents a huge step forwards for the "Future" branch, which now supports 90% of the functionality of the "Classic" branch.
Emulated Hardware
-----------------
- Base Electron, monitor, keyboard, speaker
- Tape subsystem (UEF and CSW file support)
- Disk drive emulation (UEF, ADF/L/M and SSD/DSD file support - FDI in progress), ADFS and DFS supported
- Slogger Master RAM Board in turbo and shadow (64 kB) modes
- (fictional) "Full
BBC Micro speed" addon that gives
BBC Micro operation speed with normal memory layout
Emulation Accuracy
------------------
The following are, in principle, 100% accurate and are usually not seen on other emulators (regardless of machine):
- Electron split bus timings, and hence CPU execution timings
- ULA collection timings
- Palette change timings
Special Features
----------------
ElectrEm Future retains the bit multiplexing features of the classic code, but they are virtually untested and poorly maintained. Bit multiplexing in theory allows old games to be spruced up with new graphics. The
6502 CPU continues doing exactly what the original programmer intended but its data manipulation operations are expanded so that more data is handled at once. If the correct data is injected into the extended memory before games are run and the game works in a broadly ordinary manner then at the end a more detailed frame buffer is created.
ElectrEm Future goes a lot further than the old code in making it easy to insert the extra data into otherwise completely accurate game/media images without damaging their integrity. This is a feature I hope to build on and better emphasise in future.