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.
Description
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:
- seamlesly connect ZX Spectrum and other computers (pc),
- 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.
Limitations
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) |
Connection
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
Cable
GND (1)------(5) GND
TxD (2)------(3) TxD
RxD (3)------(2) RxD
DTR (4)------(4) DTR
CTS (5)------(8) CTS
Software
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. |
PC
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. |
Download
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 |
tzxutils.zip | ZX Tape Utilities by Tomaz Kac |
Tags:
Topic: ZX Spectrum: RSP - RS232 Patch
—————
—————
—————
—————
—————
—————
—————
—————
—————
—————