21MX proms (per request

Jay West jwest at classiccmp.org
Sun Sep 13 08:42:11 CDT 2015


Dwight wrote...
> If you still have a working machine, why not disassemble the boot ROMs.
They are only a few instructions long.
Not necessary, as the source and binary for all the loader roms is in the
aforementioned manual. None of them are "only a few instructions long". Most
of them are a couple pages of assembler code.

> As I recall, in the boot sequence, it transfers the ROMs to ram and then
executes it.
Pressing the IPL/TEST button does the following:
1) It executes cpu diagnostic 1 (registers and a few functions) and 2 (quick
memory test, up to 32kw) that are stored in microcode. 
2) It transfers any one of the four installed loader roms (as designated by
switch register bits 15 & 14) to the last (up to 32kw) 64 words of memory.
3) Any I/O instructions in the loader are automatically patched during the
transfer (based on switch register bits 11 through 6) so that the correct
I/O address (device) is referenced.
4) The program counter is set to the first word of the last (up to 32kw) 64
words.
Then you can hit the run switch to execute the (patched) loader.

Interesting to me... on the 2100A/S, the last 64 words of memory can be
protected. They cannot be accessed unless the "loader enable" button/light
has been pressed. This makes it less likely that your loader (which had to
be hand entered on that model as it didn't support "loader roms") would
accidentally be clobbered by other code. The loader enable button stays on
until the computer reaches a halt instruction or the halt button is pressed.
So the typical process was to set the program counter to the first word of
the last 64 words (up to 32kw) of memory, press loader enable, then run.
Once the loader finished loading whatever it's target was, it would halt
(thus re-protecting the loader). Then the user could press run to execute
the target code and not worry about the loader getting toasted.

Best,

J





More information about the cctech mailing list