This was an interesting case to track down, it seems that DDT is special - it loads and copies itself elsewhere in RAM, then it updates the jump tables at the zero-page.
The end result is that it can get re'execd when it needs to do things.
Because I had a breakpoint set on 0x0000 (i.e. coldboot) I was getting trapped when DDT should have been re-invoked. I think that changing the traps to the default address we pretend BIOS/BDOS are located is enough to make it run, and simple execution seems to work.
Compiling a simple binary:
A>
A>asm hello
CP/M ASSEMBLER - VER 2.0
011B
000H USE FACTOR
END OF ASSEMBLY
A>load hello
FIRST ADDRESS 0100
LAST ADDRESS 011A
BYTES READ 001B
RECORDS WRITTEN 01
This was an interesting case to track down, it seems that DDT is special - it loads and copies itself elsewhere in RAM, then it updates the jump tables at the zero-page.
The end result is that it can get re'execd when it needs to do things.
Because I had a breakpoint set on 0x0000 (i.e. coldboot) I was getting trapped when DDT should have been re-invoked. I think that changing the traps to the default address we pretend BIOS/BDOS are located is enough to make it run, and simple execution seems to work.
Compiling a simple binary:
Loading a simple binary:
Seems like we get stuck here, but dump/assemble/list work. We'll pretend that's enough.