Hi, guys.
I just came across this thread today.
Background - I'm retired now, but cut my teeth in intel 4004, then 8080 and 8085. I've written more lines of 8080/8085 assembler than I've had hot lunches, and fielded a number of hardware devices with 8080 and (more so) 8085controllers. But that was all a long time ago.
By coincidence, as owner of two 8506's and one 8502 (and never ceasing to be amazed at how precise they are (accuracy is another matter) I started exactly this exercise on my own about 3 weeks ago, working with 6.0.6. I was thinking that maybe I could hack the IEEE488 code to make it more tractable in my environment. I started at the beginning (location 0) and tried to follow the threads, working with the schematics. I did work out the following, from looking at the schematics. But it may or may not be correct, because the deeper I went, the less it all made sense.
For what it's worth:
- code starts executing at RST0 (address 0000), of course. Does what looks like a quick hardware reset and then jumps (via a short delay at 0x02d6 in my version (0x02db in 6.0.7)) to 0x0038 where there are calls to a list of subroutines, the first few of which appear to do housekeeping like clearing RAM, presetting some code in RAM areas that it uses, and then a loop starting at 0x004b down to 0x0079 which forms the main instrument foreground loop.
Then:
-RST1 (0x0008) looks like the entry point for the 400Hz (480Hz in the 60Hz world) interrupt
-RST2 (0x0010) looks like the entry point for interrupts from the parallel interface
-RST3 (0x0018) looks like the entry point for interrupts from the bit serial interface
-RST4 (0x0020) looks like the entry point for interrupts from the IEEE488 interface
-RST5 (0x0028) , despite having code at that point, does not appear to be capable of activation by the hardware
-RST6 (0x0030) looks like an entry for ACK timeouts. Whenever the CPU addresses a piece of hardware (other than the controller itself), it suspends the CPU until the offboard card raises an Acknowledge response. But it only waits for a short time, and if no ACK is received, this interrupt terminates the WAIT period and then the CPU.....does....something
-RST7 (0x0038) isn't used as an interrupt entry, but is the start of the main code, as described earlier.
And yes, some code executes from RAM, and a number of IO statements are not completely obvious from looking at the schematics, and after a couple of days of treating this like an interesting jigsaw puzzle, I went off to do other things. (Probably easier to fix my 488 challenges at the other end!).
Then I came across this thread... which I shall watch avidly, and may get re-enthused
Roman
-