Home
Downloads
Licenses Contact

OshonSoft

20th Anniversary

20th Anniversary of the
OSHONSOFT PROJECT
(2001 - 2021)

ZX Spectrum ROM Interface
ZX Spectrum Emulator

ZX Spectrum ROM Interface simulation tool is designed to make it easy to communicate with the original ZX Spectrum ROM code during the simulation of its execution in Z80 Simulator IDE. Using the tool is completely intuitive.

The original ZX Spectrum ROM code can be assembled with Z80 Simulator IDE integrated assembler. Simulation with Ultimate simulation rate is strongly suggested. The ZX Spectrum system welcome message is displayed on the interface screen after around 650000 simulated instructions.


(screenshot)


• Technical notes

- The content of discrete graphics RAM is accurately displayed on the interface screen.
- Automatic interrupts are simulated only when HALT instruction is encountered during the ROM simulation. Interrupts period can be changed. Realistic value is 69888 (T states). The default value is 10000.
- PC keyboard can be used to access the main interface keys.
- Main keyboard matrix decoding through port FEh reads is accurately simulated. However, for easier access to the complete ZX Spectrum character set, pressing a character/token key directly loads the correct code into the LAST-K system variable and sets bit 5 in FLAGS, bypassing the need for regular automatic interrupts.
- The simulation of LOAD and SAVE statements is implemented using the Tape Buffer. Execution of LD-BYTES and SA-BYTES subroutines is carefully monitored. For process acceleration certain register/flag values are adjusted at appropriate PC locations.
- Byte to be saved on tape is transferred from L register to Tape Buffer at location 050Bh.
- Byte loaded from tape is transferred from Tape Buffer to L register at location 05D8h.
- When Flash Load is turned on the LD-BYTES subroutine is almost completely bypassed.
- TAP files support is implemented for Tape Buffer data operations.

Relevant ROM links:
02BF: THE 'KEYBOARD' SUBROUTINE
0556: THE 'LD-BYTES' SUBROUTINE
04C2: THE 'SA-BYTES' SUBROUTINE


• Screenshots


(colors.tap loaded with LOAD "")


(colors.tap executed with RUN)


(screenshot Lode Runner - TAP link)