[comp.sys.atari.st] 6850 handler woes

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