daver2
10k Member
Yes, the 4051 INTSRV and the 4052 IRQ handler (which probably has the same name in the source code) is structured very similar.
I have disassembled the IRQ handler and (apart from the odd improvement - for example, 6 off INX instructions are not present but a new fangled 4052 instruction "ADXI +6" to add immediately +6 to the X register) they are very, very similar. There appears to be a bit of code in the 4052 version to check the GPIB chip for interrupts.
In the 4052, the PIATBL is located at $050E. I have found various (sensible) references to $050E within the ROM code. However, when my keyboard interrupt occurs, the only thing in the table is the ACIA.
I am, therefore, trying to locate the ROM code sets up the PIATBL in RAM.
I have trapped the memory writes to this table (or round about it) and the only thing that is actually set up in it is the ACIA. I surmise, therefore, that I am searching for a bit of ROM code that is not currently executed...
Yes, I have worked out the microcode for the RETI (and the corresponding microcode for the interrupt processing itself) is slightly different to a 'real' 6800. Again, that is the beauty of using the microcode itself - you get the microcode behaviour for free!
I will check the constant ROM though now...
EDIT: My invocation of loadROM takes care of the half-filled $E000 to $FFFF constant ROM. It only loads half of the ROM image ($1000 bytes) and I use an offset of $1000 to access the last half of the ROM image.
Dave
I have disassembled the IRQ handler and (apart from the odd improvement - for example, 6 off INX instructions are not present but a new fangled 4052 instruction "ADXI +6" to add immediately +6 to the X register) they are very, very similar. There appears to be a bit of code in the 4052 version to check the GPIB chip for interrupts.
In the 4052, the PIATBL is located at $050E. I have found various (sensible) references to $050E within the ROM code. However, when my keyboard interrupt occurs, the only thing in the table is the ACIA.
I am, therefore, trying to locate the ROM code sets up the PIATBL in RAM.
I have trapped the memory writes to this table (or round about it) and the only thing that is actually set up in it is the ACIA. I surmise, therefore, that I am searching for a bit of ROM code that is not currently executed...
Yes, I have worked out the microcode for the RETI (and the corresponding microcode for the interrupt processing itself) is slightly different to a 'real' 6800. Again, that is the beauty of using the microcode itself - you get the microcode behaviour for free!
I will check the constant ROM though now...
EDIT: My invocation of loadROM takes care of the half-filled $E000 to $FFFF constant ROM. It only loads half of the ROM image ($1000 bytes) and I use an offset of $1000 to access the last half of the ROM image.
Dave
Last edited: