|
 |
The Memotech MTX Series |
 |
FDXB.COM Disassembly

The
FDX disk system was shipped with a CP/M version of Memotech
BASIC called FDXB.COM. The FDXB
manual is available on the
Manuals page, but in short, the program provides 80 column
display and disc support for BASIC on the FDX. (An equivalent
program, confusingly, also called FDXB.COM,
was available for the SDX system.)
Martin has disassembled the program
and made some observations on its operation . . . . .
FDXB Disassembly
FDXB is a program that allows MTX basic
programs to run on the CP/M FDX system. This disassembly is of
the FDX version. The version for SDX with 80 column board would
likely have different driver code for the discs.
This FDXB.COM program is 34K in size and
basically has 2 parts
The executable file starts with a
JMP to the setup code, is then followed by the 32K image and
then the setup code itself.
The setup code takes great care to ensure
that the NODE ring will work with FDXB, that code has only been
partially decoded, just enough to ensure it's not relevant to
the normal FDXB start up.
Part 1: The loader code
The actual code is around 1.5K in size
and the following sections have been identified:
1.1 Setup code
8103 Get and save the current user
number, drive and record whether the program has been started
with FDXB 40
8120 Copy any auto run file name to
the Channel #5 data area in the 32k image
812F Copy the 32K image into place from
0000 to 7FFF, CP/M becomes inoperative at this point
813A Check whether the NODE ring network
is active
8152 Copy the current keyboard map into
the 32K image
817C If FDXB has started in 80 column
mode, set up suitable virtual screen tables
81B1 Setup the CP/M instance that is
within the 32k image using the user and drive numbers recorded
earlier
81D4 Test for NODE and proceed with
the node specific setup is active
81DB Start the normal basic setup by
clearing the common memory area
81E8 Set up the system variables as for
the 32K MTX500
820A Auto run any ROMs in slots 6 or 7
822B Further NODE work in case the ROM
has just been initialised
824F Test the NODE ring once more and
move to the finalisation code if not
8255 More NODE specific code
8273 NODE high memory code assembled for
EE00
83E3 Node setup code
1.2 Finalisation code
8567 Clear the screen setup the 80
column, type 3 screen tables
8575 Setup the USER keyword
858B Go to the Ready prompt if there's no
autorun file
858E Auto run setup code and jump into
the 32K image to attempt the load/run the file
Part 2: The 32K image once copied
into place
The 32K image has 2 parts, the original
24K of ROM, re-compiled to occupy a flat 24K instead of 8K fixed
and two 8K pages, with a few additional changes.
An extra 8K comprising of 80 column
screen driver, sufficient parts of the CP/M BIOS and BDOS to run
the discs and the BASIC extensions required for disc use.
2.1 Changes to "OS" at 0000 to
1FFF
0000-0007 RST 0 code removed and replaced
with what looks like an attempt to use the CP/M warm boot
instead, except the warm boot code isn't included in the
truncated CP/M image.
0194-0205 Memory test etc. replaced with
some utility routines, the "ROM" paging code just ensures that
the RAM only mode is maintained.
0205-020A BASIC entry point changed to
not to page in paged ROM 0
025D-0273 Ready prompt revised to
consider the keyboard tables as well as the screen setup
126F-1270 Bug fix LD B,6 changed to LD
B,5
189F-18A0 ROM paging disabled
2.2 Changes to "ASSEM" at
2000-3FFF
None
2.3 Changes to "BASIC" which is
now assembled for 4000-5FFF
4525-452A bug fix around spaces after
keywords?
4554-44557 "USER" keyword renamed "DISC"
47BD-46C2 "LEN " renamed "LEN" and 2nd
"LN" changed to "FRE"
4CB2-4CB4 change run to close any open
files before running a program
54FF-5503 ROM paging disabled
5669-5676 Bug fix around caps lock use?
57C3-58BA International keyboard support
removed, replaced with various patches and part of the basic
extensions.
59F6-59FE Syntax checking extended to the
basic extensions
2.4 8k additional support code
6000 to 7FFF
6000 80 column screen jump table
6026 Possible "spare" code setting up
virtual screens
6056 80 column screen support routines
6300 CP/M BDOS supporting functions 13 to
41, the disc functions, only
6F00 CP/M BIOS, disc buffers and drivers
7700 MTX BASIC extensions
 |
Martin's original Word document Also contains the
disassembled program listing |
|