mjs@ernie.Berkeley.EDU (Marc J. Sabatella) (02/22/88)
Several weeks ago we started porting an application written in Forth (with a good deal of assembly thrown in for good measure) from the ST to the Mega ST. Most of the problems we had were due to use of undocumented features of TOS, et al; and unfortunately those of us doing the port were not the ones who wrote the bulk of the suspect code, so we don't even know how we found out about these undocumented goodies. There are two vectors - one at 114 and one at 118 - that are used by the program (and changed). Although the Abacus book doesn't know about these, it seems to be common knowledge (?) that these are the timer interrupt and the 6850 handler respectively [perhaps this information is in the Developer's Kit, which is on order]. These vectors seem intact on the Mega, but the 6850 handler calls the keyboard handler and the MIDI handler explicitly, and those addresses, which are hardcoded into the handler, have changed. Our desire is to intercept only MIDI interrupts; we do this by intercepting 118, checking to see if the MIDI 6850 requested the interrupt, and passing control to the keyboard handler (whose address we learned from disassembling the original 6850 handler) if not. The problem is, of course, that this address may change again, and in any event, it requires different versions of the program for each TOS version. Is there Another Way to accomplish all this in a more portable fashion? Will the Developer's Kit answer these questions (and more)? Marc Sabatella mjs@ernie.Berkeley.EDU