Nice catch Stephen! 👍terriblefire wrote: 10 Sep 2021 01:18 Initial hypothesis is that the Rev2B vs Rev 1D4 (et al) do autovectors differently. Not sure *HOW* this happens but I can see that interrupts are processed by an AVEC on the Rev2B and VIA DSACK on the 1D4. Since the autovector is pulled out of ROM with DSACK processing this explains why ROM speed makes a difference.
I've red about AUTOVEC some time ago...
In the event of an interrupt, the 68000/010 looks into the VBR ((Interrupt) VectorBaseRegister) + interrupt offset (1-7) and jumps to this address for the interrupt service routine. This is the classic "Autovector / AVEC" approach. Advantage: simple. Disadvantage: If several devices trigger the same interrupt (INT2 / 6), the interrupt routine must first cause the system to query all possible (registered) triggers: "IDE, was that you? SCSI, was that you ?, CIA, was that you? PicassoIV, was that you? " - works slowly...
The 68020 CPUs and above have a second mode: The interrupt-generating device places the jump address on the data bus with a certain function code (similar to an FPU command). So every device could bring its own interrupt routine with it. Problem: The interrupt service chip (Paula) cannot do that. Therefore it has to be turned off. Now Commodore has had problems itself and has used a "trick": The highest addresses of the Kickrom are exactly where the CPU expects the jump vector. That's why Commodore simply copied the AVEC jump vectors there again. Thus the CPU could serve "pseudo interrupt vectors", because of that different KS versions may work different... 🤔


