BS-DOS: RSP - RS232 Patch

BS-DOS: RSP - RS232 Patch

This is BS-ROM patch for MB02 disk systems that replaces standard TAPE in/out routines by RS 232 TAP emulation.


ZX Spectrum 128k onwards is equipped with RS-232 port. There is no harware support for serial communication on ZX Spectrum, therefore all needs to be controled by CPU. My goal was:

  1. seamlesly connect ZX Spectrum and other computers (pc),
  2. avoid additional software on both sides.

RSP is designed for MB02, in principle it will work on any system that enables write to ZXROM. There are plans to port it for divIDE. Information for +3 users: due to the fact that only slow pages can be paged-in instead of ROM, this patch will not work. RS232 communication requires precise timing that might be an issue in contended RAM.

Technical details

This patch is modifying two routines: LOAD at #0565 and SAVE at #04c9. Both routines are dealing with TAP format, therefore it works natively without change of BASIC syntax. From machine code point of view, there are no changes as far as you use standard calls (note: some copy programs are calling load routine without leading tone, this is not working).

Communication speed is 9600Bd. Serial communication routines were programmed by Busy soft, I added handshake and Turbosound support.


Due to the buffer on PC side, PC will send one byte more even if Speccy is not ready to receive. I could not implement two reads from serial port due to the lack of room (this approach is in 128k ROM or IF1 ROM). In order to overcome this issue you can disable reading parity byte (it's disabled by default). You may need to enable it if you'd use different platform (e.g. Psion).

User variables

RSP patch program has following user variables:

Address value Decription
#6006 0 - off, 1 - on read parity byte (0 for PC)
#6007 0 - off, 1 - on border for load
#6008 0 - off, 1 - on border for save
#6009 0 - off, 1 - on log communication at #7000 (for debug purpose only)


You need only ZX Spectrum and PC with RS232. Connection is realized by simple cable with following pinout.

PC Canon 9 serial connector

1 - CD - Carrier Detect (IN)
2 - RX - Data Receive (IN)
3 - TX - Data Transmit (OUT)
4 - DTR - Data Terminal Ready (OUT)
5 - GND - Ground
6 - DSR - Data Set Ready (IN)
7 - RTS - Request To Send (OUT)
8 - CTS - Clear To Send (IN)
9 - RI - Ring Indicator (IN)

ZX Spectrum serial connector

1 - GND
2 - TXD
3 - RXD
4 -DTR
5 -CTS
6 - 12V


GND (1)------(5) GND
TxD (2)------(3) TxD
RxD (3)------(2) RxD
DTR (4)------(4) DTR
CTS (5)------(8) CTS


ZX Spectrum

Title Description
rsp RS-232 patch. Typically it can be executed from RAMdisk or HDD. NEW "rsp"
rsu RS232-Unpatch. This will un-patch BSROM in order to work normally with standard TAPE.
cdr Modified CDC from Busysoft. This utility will send selected file(s) to RS232. Syntax NEW "cdr":FileNumber1, Filenumber2...
crd Modified CCD from Busysoft. This utility will receive TAP files and will store all data to currect disk.
cdraw Modified CDC from Busysoft. This utility will send pure binary content via RS232. Note: headers (bytes: name, start, len) are skipped.



Title Description
SPEC232 Excellent set of command line tools from Henk de Groot
TZXUTILS TZX command line tools by Tomaz Kac.
READRS Executable from SPEC232 that is being used by r.bat
s.bat Send TAP file to ZX Spectrum. Syntax is "S Filename.tap"
sx.bat Send TZX file to ZX Spectrum. Syntax is "SX Filename.tzx". This batch file is using TZX2TAPfrom TZXUtils
r.bat Receive file from ZX Spectrum. It does not necessarily be TAP file.



Filename Description
RSPUTILS.ZIP (1,5 kB) TAP file with all files to be put on MB02 disk
BIN.7z (34 kB) My BIN folder with all BAT files
rsp.a80 (9,6 kB) Source code for RSP
SPEC232.ZIP (105,6 kB) SPEC232 complete set of tools from Henk  de Groot ZX Tape Utilities by Tomaz Kac


Topic: ZX Spectrum: RSP - RS232 Patch

No comments found.