Bug report (or user ignorance report, you never know)
- trying to disassemble a version of Expensive Typewriter that I wanted to investigate (it will not work well on either simh or the pdp1 simulator, I wonder why), I get this error:
disassemble_tape -m et_sa100.bin
Unterminated RIM block at tape position 432
...but inspecting the tape, there's nothing odd on line 432 of the tape, it is in the middle of the RIM block (the blue part of the tape).
What is unusual, and maybe the issue: there's no empty lines on the paper tape between RIM (blue) and BIN (red) data.
Also, the BIN loader only loads a small 7-word program, that then gets executed (to clear memory I bet) and then, that program calls the BIN loader again to load the rest of the program, overwriting the previous one. Tricky tape!
I've attached the offending paper tape image if you want to inspect.
Explanation: in the blue RIM block, the marker R signals the DIO instruction, the a markers the address, and the next three lines the 18-bit word to be loaded in.
The BIN block starts with a DIO for the start address and a DIO for the end address, then the consecutive words, and the 'c c c' identifies the checksum at the end of the BIN block. There's a JMP to run the code, and on the tape, then comes another BIN block.
It might not be worth your while to deal with such oddities, but just to report they exist.
I just pushed the update of tape_visualiser shown above to the github.
Leading to some questions! Because the next step for the tape_visualizer tool is to use your disassembler to disassemble each loaded line on the tape, and show it at the bottom of each line.
My goal would be to use the disassembler unmodified - maintaining
one disassembler version is work enough as it is, best to avoid creating
variants of it.
I'm still thinking what the best way is, as tape_visualizer is a Python program rather than C.
I can compile disassembler.c as a shared library, and then call formatInstr() from python & intercept its output with some tricks - not too elegant though.
Do you have any suggestions? The core point being, the Python program submits one 18-bit octal word and receives the disassembly of it straight away.
Feel free to ignore the request though, a fool can ask more than any wise man wants to answer. Or something like that.
Kind regards,
Oscar.