ANDYS MTX BOOT ROM SOURCE
=========================

ROMS
----

I think a normal FDX boot ROM had (although I've not got all the source) :-
	ZMON
		which would boot B:3, C:3
	KDB or SDXKDB
		not sure if this was somehow MTX or FDX specific
	CRT
		80 column driver
	DISC
		FDX disk code

ACPM.ROM was Andys CP/M ROM, which I used in my FDX - it had :-
	AZMON
		ZMON, tweaked for ACPM
		modified to boot F:51, D:13, E:13, B:3, C:3
		because my FDX had lots of memory and 8" and 5.25" drives
	ASIDISC
		taken from SIDISC, tweaked for ACPM
		just the resident portion, not the installer part
		ie: SIDISC was pre-loaded, you didn't need to run SIDISC.COM
		note that the SIDISC driver understands real type 4x Silicon
		disk, as accessed via IO instructions, and type 5x RAM disks,
		which were just MTX memory pages outside the first 64KB
	ASDXKBD
		"decent" MTX keyboard reader, tweaked for ACPM
	ACRT
		the normal 80 column driver, tweaked for ACPM
	ADISC
		the normal FDX disk code, tweaked for ACPM

SCPM.ROM was CP/M on the SDX - it had :-
	SZMON
		basically AZMON with a couple of extras to setup stuff
		needed by SCPM, ie: turn off sound, init VDP screen, setup font
	ASIDISC
		as above
	ASDXKBD
		as above
	ASCRT
		56 column mode, using the MTX VDP chip
		this was the insight that made CP/M on SDX practical
	AFDSC
		the SDX disk code

SCPMF.ROM was CP/M on the SDX, somehow using the FDX disk controller.
It was like SCPM.ROM, except it used ADISC instead of AFDSC.
I suppose it could have been used on an FDX with no 80 column card.
I'm not sure this was ever useful or used.

RCPM.ROM allowed systems without disks to run CP/M, from ROMs - it had :-
	RZMON
		tries to boot F:51
		failing that, it creates a new F: and retries
		it makes F: by copying from the ROMs into RAM
	ASIDISC
		as above
	ASDXKBD
		as above
	ACRT
		as above, 80 column
	AFDSC
		as above, the SDX disk code

RCPMF.ROM was RCPM.ROM, using the FDX disk controller.
I don't think this was ever used.

RCPM.ROM and RCPMF.ROM have disk code in them, but clearly this isn't required.

RSCPM.ROM combines running from ROM and running on SDX - it had :-
	RSZMON
		like RZMON, but with SCPM initialisation
	ASIDISC
		as above
	ASDXKBD
		as abve
	ASCRT
		as above, 56 column
	AFDSC
		as above, the SDX disk code

RSCPMF.ROM was RSCPM.ROM, using the 80 column card and FDX disk controller.
Presumably it was aimed at FDXs without disks.

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 S2R64.COM.


Source structure
----------------

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

This code base really needs to be refactored so as to be parameterised,
rather than duplicate most of certain files (especially ZMON) and tweak them.


Comments
--------

S2R and S2R64 were a hack to cope with MTX S2 and MTX 2000.
Different type codes for new smaller sizes of RAM Disc would have been better.

Although the source to SIDISC.COM is included, some boot ROMs auto install it,
so it may not be needed.

Although the source to CONFIG.COM is included, there is a better version of
this source within the REMEMOTECH project, which gives better error messages,
doesn't waste high memory when drives are reconfigured to the same sized type,
and understands disk types unique to REMEMOTECH as well.

REMEMOTECH and REMEMOrizer have their own boot ROMs, developed by starting
from this code base.
It has an AZMON which boots from F:52 then B:18, ... B:1F.
It has a ACRT which also understands the 80x48 mode unique to REMEMOTECH.
It replaces ADISC with ASDCARD, which understands types 18 to 1F.
It includes ARAM (instead of ASIDISC) which only understands RAM Disc (types 50
and 52) and not Sidisc, but as a huge benefit is small enough to fit in the
CP/M driver space, rather than having to be installed in scarce high memory.
ARAM is always installed, whether the system boots from F: or not.


Memory Map
----------

EC00	ASIDISC

F000	ASDXKBD

F300	DBUF (used by ADISC / AFDSC)

F400	ACRT / ASCRT

F980	TDBUF (used by ADISC / AFDSC)

FA00	ADISC / AFDSC


{{{ Andy
