SDX BASIC ROM source

This is a reconstruction of the source for the SDX BASIC ROM. A SDX BASIC ROM was disassembled using BE and BEZ80. Symbols were taken from a PDF of a printed listing of the ROM. This was post-processed using a custom script, to make it more M80-like. Finally, salient text in the PDF was transcribed to this source.

The SDX BASIC ROM is the ROM, typically invoked by ROM 3 or ROM 5 from MTX BASIC, which provides commands such as USER DIR, USER LOAD etc.., to access the disk. Originally this ROM would only support two floppy drives, which were both type 03 or type 07. If you only had a single drive, one didn't work.

This package contains the following feature/enhancements :-

It has the following limitations :-

SDX BASIC ROMs generated from this source are used in REMEMOTECH and REMEMOrizer.

Building

Code is supplied with a Linux makefile, which makes it possible to compile the various ROMs using MEMU, M80 and L80.

Customisation is a combination of EQUates specified in the assembler source file, called SDXCONF.INC.

To exactly reproduce the SDX BASIC ROM in the older SDXs, supporting B:03,C:03, use a file starting like this :-

;
; SDX ROM configuration
;

; One of these can be selected
FDXFDC	EQU	0
SDXFDC	EQU	1
ROMFDC	EQU	0

; One of these must be selected
DRVB03	EQU	1
DRVB07	EQU	0
DRVB18	EQU	0			; for REMEMOTECH or REMEMOrizer

; One of these can be selected
DRVC03	EQU	1			; only use with DRVB03
DRVC07	EQU	0			; only use with DRVB07 - !!! UNSAFE !!!

; One of these can be selected
DRVF51	EQU	0
DRVF52	EQU	0			; for REMEMOTECH or REMEMOrizer or SDX Plus

; The original ROM wasted space
WASTAGE	EQU	1

; This affects ROMFDC
ROMPAIR	EQU	0

; One of these must be selected
CLK50	EQU	0			; select if REMEMOTECH
CLK4	EQU	1			; select otherwise

Immediately after these EQUates are a set of checks designed to spot when the user chooses illegal combinations.

Sensible combinations include :-

After building, the result is SDX.BIN.

Installing

The FDX User Manual includes the circuit diagram for the FDX bus interface card. This is the card that usually contains the boot ROM.

The card has 3 link settings, supporting various chip types :-

Odds are you'll be able to most easily source 2764 or 27128, or something pin compatible with it, such as an W27C512 EEPROM. So hope that your links are set to position c. If you source something bigger, just repeat the content. eg: repeat 8KB 8 times to fill 64KB W27C512.

In the circuit diagram, A13 is fed to the socket, which is pointless. In order for the chip to be selected, A15-A13 must be 001. If R0 can be rewired in place of A13, and a 16KB device installed, then the socket can host one 8KB image for ROM slot 4 (the CP/M boot ROM) and another 8KB image for ROM slot 5 (a SDX BASIC ROM).

Older SDXs will only accept 8KB EPROMs. Later SDXs will accept 16KB EPROMs, which should contain the CP/M boot ROM in the bottom 8KB and SDX BASIC ROM in the top 8KB. I have successfully used W27C512s in place of a 27128 in my later style SDX.

RAM Disc support

The RAM Disc support only supports RAM Discs. There is no support for Silicon Discs. This would only be of interest for "FDX Single" owners who happened to have a Silicon Disc too. Adding support for Silicon Discs would not only present a challenge in terms of fitting the code in to the ROM, but also a challenge as to where to put the CP/M allocation and check vectors.

Shrunken type 51 RAM Discs

If using a 512KB RAM disk card, then there was 512KB of memory for the F:51. If using series 2 MTX, or MTX 2000, then the RAM disk size had to be shrunk, using S2R.COM or similar programs. Different type codes for new smaller sizes of RAM Disc would have been better.

The RAM Disc support in this ROM cannot shrink a RAM Disc. So if you have a MTX 512 S2, you probably only have 144KB of memory available to use as a RAM Disc, and this is smaller than any normal RAM Disc. So you're out of luck.

If you have 512KB of memory in total, not 64KB base + 512KB additional, then you'll need to work with type 52, which is a 320KB RAM Disc instead.

You might also choose to use type F:52 so as to leave memory unused, which could be used for virtual tape support. This is the strategy behind REMEMOTECH, REMEMOrizer and SDX Plus using a type 52 RAM Disc.

Download

Full package downloadable from here.


This page maintained by Andy Key
andy.z.key@googlemail.com