Update as of 2013-01-20: Code refactored and re-released.
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 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 :-
BDOS Err R/O), and use B:07 instead
It has the following limitations :-
USER FORMATwill result in a
Mistakeerror, when attempting to format an SD Card partition. Use
REFORMAT.COMfrom CP/M instead.
USER FORMATwill result in a
Mistakeerror, when attempting to format on an FDX. I don't have the FDX FDC formatter to embed in the ROM. Use
FORMAT.COMfrom CP/M instead.
SDX BASIC ROMs generated from this source are used in REMEMOTECH and REMEMOrizer.
Code is supplied with a Linux
which makes it possible to compile the various ROMs using
MEMU, M80 and L80.
Customisation is a combination of
in the assembler source file, called
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 ; 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 ; 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
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.
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.
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,
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.
Full package downloadable from here.