leo@philmds.UUCP (Leo de Wit) (06/19/88)
Having had a small problem recently with this program that is in Comp.sources.atari.st (address error on exit of other - GEM - program) I have added a fix. The reason seems to be that when some GEM programs terminate they are using the GEM-exit vector, and the exit routine still relies on A4 having a valid contents (I'm not sure). After I modified the code to save A4 on the stack the problem disappeared. Here is the relevant part of the code (comments omitted), with 2 instructions added: DTOPWAIT MOVE.L $602C,A0 MOVEQ.L #0,D1 BRA.S DTOPAREND DTOPARNT ADDQ.L #1,D1 MOVE.L 36(A0),A0 DTOPAREND TST.L (A0) BNE.S DTOPARNT CMP.B #3,D1 BNE.S DTWEND MOVE.L A4,-(SP) * Added this instruction to save A4 .... LEA WAITMSG(PC),A4 BRA.S DTOPW3 DTOPW2 EXT.W D0 MOVE.W D0,-(SP) MOVE.W #2,-(SP) MOVE.W #3,-(SP) TRAP #BIOS ADDQ.L #6,SP DTOPW3 MOVE.B (A4)+,D0 BNE.S DTOPW2 MOVE.W #2,-(SP) MOVE.W #2,-(SP) TRAP #BIOS ADDQ.L #4,SP MOVE.L (SP)+,A4 * .... and this one to restore A4 DTWEND MOVE.L OLDVEC(PC),-(SP) RTS Leo. * Not an instruction, more a periferal 8-)