Hi there, I have written a (teaser: USB keyboard/mouse) driver for the PET (BASIC4) and found that when the interrupt routine is not in page $E4**, the IEEE488 load hangs! I.e. when doing a LOAD"$",8 it just hangs, in fact after loading everything. I found that the load routine at $f401, after the actual load (at $F356, called from $F415), calls into $F92B. This routine first checks if the STOP key is pressed (I wonder why, as loading has finished anyway here), but directly after its call to the check, at $F92E it checks if the IRQ routine high byte is $E4, and if not so, loops back to the beginning of the routine! The only way I found to get around this really is a bad hack: in the interrupt routine, if the interrupted code is between $F92B and $F930, move the IRQ return address on the stack to $F934, so that the check is skipped. Once in the loop, the probability to eventually get interrupted there seems to be high enough such that you do not notice any delay when you do the LOAD. Now my questions: - anyone knows what this routine is really for, resp. why is it called from after the end of the LOAD? It seems this is actually tape-related (in fact on RUN/STOP it resets the interrupt pointers, disabling the driver!) - anyone knows any other way to get around this limitation with the custom interrupt routine? Besides patching the ROM.... Thanks! André -- NEU: FreePhone - kostenlos mobil telefonieren und surfen! Jetzt informieren: http://www.gmx.net/de/go/freephone Message was sent through the cbm-hackers mailing listReceived on 2011-02-19 14:00:10
Archive generated by hypermail 2.2.0.