ZX Spectrum ROM Source

Using the link below you can download the 1982 ZX Spectrum ROM package.

The package provides the source code for the 1982 Sinclair Research ZX Spectrum ROM. The source and annotations are taken over from The Complete SPECTRUM ROM DISASSEMBLY by Dr Ian Logan > Dr Frank O'Hara. This copy is available on The World Of Spectrum (http://www.worldofspectrum.org/)

Reason for me to it get re-acquainted with the ASZ80 assembler linker, which is a brilliant piece of software. There is also reasonable support. I like it mostly because is gives me full control, let me break down the assemblies and the linker can relocate the result wherever you want. The ASZ80 assembler also has extensive documentation. The only drawback seems to be that it does not use ZILOG's assembler directives.

Although it was fun to do and brushed up my knowledge about ASZ80, of course changing the ROM has no practical purpose really. I make it available because the ROM source could be a show case what can be done and may get you into using this assembler too. I found it more versatile than z80asm, but this could also be lack of knowledge of that assembler. Any way, here you have it.

The following link points to the ZX Spectrum ROM source: ZXSpectrumRomSource.zip

The following link points to the ASxxxx Cross Assembler ROM source: http://shop-pdp.net/ashtml/asxxxx.htm

World of Spectrum with much, much information about the ZX Spectrum: http://www.worldofspectrum.org/


Creating tbblue.mmc file

ZX Spectrum Next emulators ZEsarUX and CSpect need an SD card image to work. I made a script to create such an image since the one supplied with the emulators was outdated at the time.

Below you find a link to a zip with a script I used to create a tbblue.mmc image. You need to be on a Linux system for this to work, I just use Linux Mint but I think it will work on most others as well. You need to edit creat_tbblue.sh if you want to define a different destination folder, currently it will create a folder "sd" in the current directory to put the results into. You can also adjust the size you want. I used 256 MB.

Prerequisites: In the folder where I run this script I have a folder "tbblue" with the latest pull from the GIT repository. I also have a folder "extra" with additional files I want to have in the image like the CP/M files.

Run the script by:
> bash ./creat_tbblue.sh
Besides tbblue.mmc, which the script will generate, also the Next ROM files are needed for CSpect. They are copied too to the destination folder besides the tbblue.mmc image.

The image works for both ZEsarUX as CSpect last time I tried. There is no guarantee if either the emulator or tbblue files changes. This is just provided AS-IS. If you are unsure just use the official releases.

Note that previously I had a pre-buid tbblue.mmc in the zip file, I removed it because it is outdated fast as development continues.

Zip file the script to create it including this readme.txt: tbblue_mmc.zip

The tbblue GIT repository (use "git clone" to clone it to your local disk and "git pull" to update): https://gitlab.com/thesmog358/tbblue.git


Other tools from the past

Using the link below you can download 2 files I made back in the day.

First file is "newrom.zip" which was my modification of the ZX spectrum ROM. This version floats on The Internet as "groot.rom" with the remark that it infringes the Amstrad copyright, however the file "newrom.zip" is how I released it. It was never uploaded as patched ROM by me.

The "newrom.zip" file containts the description of the changes and a file and DOS program to patch the original 48K Spectrum ROM. It does not contain the ROM. You need to have the ROM to be able to modify it. This way, nothing in "newrom.zip" is owned by Amstrad.

The second file "spec232.zip" is a set of tools to communicate from a (DOS) PC to the Sinclair Interface I serial port. It's written for DOS and has direct access to the UART. I don't know if it successfully works under windows since you need access to the hardware flowcontrol without any delay.

The "spec232.zip" also contains a wiring diagram, how to connect IF1 to the PC's COM port.

The RS232 connection.

Drawing for a COM port with a 9 Pin D connector. You need one male and one
female connector.

               Both connectors shown at the wire side!

    Female (COM port)                     Male (ZX Interface I)
  ┌────────────┐
  │      ____  │                              ____
  │     /   1| │                             |1   \
  │   /6   O───┤                             | O   6\
  └─────O   2| │                             |2   O  |
     | 7   O────────────────────┐ ┌────────────O   7 |
     |  O   3| │              ┌─│─┘          |3   O───────┐
     | 8   O──────────────────┘ └─────────────-O   8 |    │
  ┌─────O   4| │                             |4   O  |    │
  │  | 9   O───┴───────────────────────────────O   9 |    │
  │  |  O   5|                               |5   O  |    │
  │   \    O─────────────────────────┐     ┌───O    /     │
  │     \____|                       │     │ |____/       │
  │                                  │     │              │
  └────────────────────────────────────────┘              │
                                     │                    │
                                     └────────────────────┘

Signal names:

COM port:                                   ZX Interface I port
pin 1 (in) : Carrier Detect (DCD)           pin 1 (---) No connection
pin 2 (in) : Recieved Data (RXD)            pin 2 (in)  TX data
pin 3 (out): Transmitted Data (TXD)         pin 3 (out) RX data
pin 4 (out): Data Terminal Ready (DTR)      pin 4 (in)  DTR
pin 5 (---): Signal Ground (SG)             pin 5 (out) CTS
pin 6 (in) : Data Set Ready (DSR)           pin 6 (---) n.c.
pin 7 (out): Request To Send (RTS)          pin 7 (---) Ground
pin 8 (in) : Clear To Send (CTS)            pin 8 (---) n.c.
pin 9 (in) : Ring indicator (RI)            pin 9 (---) 9 Volt

Don't comment to me if you find the names at the Interface I side funny.
I didn't invent them, they come straight out of Clive's "Microdrive and
Interface 1 manual" page 49.

It also contains an early version of SPConv. This program is also available on the World Of Spectrum, the on included here was at the time sufficient to make snapshots from saves.

Both are written way back when, but maybe they are usefull to somebody.

The following link points to a file to modify the ZX Spectrum ROM (with source): newrom.zip

The following link points to the RS232 Interface I to PC tools (with source): spec232.zip

Henk de Groot (pe1dnn@amsat.org)


Valid HTML 4.01 Transitional