Martin Eberhard
2020-03-15 19:54:20 UTC
If anyone's interested, I just disassembled the BIN loader that's in RIM format at the beginning of the EDUSYSTEM 20 paper tape.
This loader is kind of interesting. When the RIM loader loads this BIN loader, the RIM loader gets modified to jump to this BIN loader when the RIM load is done. Then this BIN loader repairs the RIM loader, undoing this modification.
It then pulls the KSF and KRB instructions from the RIM loader and pastes them into its own code, so that the BIN loader loads from the same device as the RIM loader did - whether its the console TTY, a high-speed paper tape reader, or even another serial port at a different address. This is kind of cool - in my case, I've modified my RIM loader to load from a 9600 baud serial port, with KRB at 6306 (distinct from the console TTY at 6036). Even with this modified RIM loader, EDUSYSTEM 20 loads and runs perfectly on my PDP-8e.
There is a strange bit of code at the beginning of this BIN loader that looks like it is intended to copy itself into another memory field and then jump there. But as found, it copies from field 0 to field 0, so it doesn't actually do anything useful. I suspect this BIN loader was used for other DEC applications, where the the field in which it is loaded by the RIM loader is different than where it wants to run.
Anyway, if you are interested, you can find my disassembly here. I've tried to be pretty verbose, explaining how it works in the comments:
https://deramp.com/downloads/mfe_archive/011-Digital%20Equipment%20Corporation/30%20DEC%20Software/Edusystem/Edusystem%2020/
Naturally, reassembling this disassembly produces the exact same code as found on the EDUSYSTEM paper tape - at least when using PALBART (but I think also with PAL III).
-Martin E.
This loader is kind of interesting. When the RIM loader loads this BIN loader, the RIM loader gets modified to jump to this BIN loader when the RIM load is done. Then this BIN loader repairs the RIM loader, undoing this modification.
It then pulls the KSF and KRB instructions from the RIM loader and pastes them into its own code, so that the BIN loader loads from the same device as the RIM loader did - whether its the console TTY, a high-speed paper tape reader, or even another serial port at a different address. This is kind of cool - in my case, I've modified my RIM loader to load from a 9600 baud serial port, with KRB at 6306 (distinct from the console TTY at 6036). Even with this modified RIM loader, EDUSYSTEM 20 loads and runs perfectly on my PDP-8e.
There is a strange bit of code at the beginning of this BIN loader that looks like it is intended to copy itself into another memory field and then jump there. But as found, it copies from field 0 to field 0, so it doesn't actually do anything useful. I suspect this BIN loader was used for other DEC applications, where the the field in which it is loaded by the RIM loader is different than where it wants to run.
Anyway, if you are interested, you can find my disassembly here. I've tried to be pretty verbose, explaining how it works in the comments:
https://deramp.com/downloads/mfe_archive/011-Digital%20Equipment%20Corporation/30%20DEC%20Software/Edusystem/Edusystem%2020/
Naturally, reassembling this disassembly produces the exact same code as found on the EDUSYSTEM paper tape - at least when using PALBART (but I think also with PAL III).
-Martin E.