;------------------------------------------------------------------------- ;MuchMore's InputHandler ;© 1989 by Fridtjof Siebert ;compiles with a68k ;------------------------------------------------------------------------- XDEF MMInputHandler ; Then Handler Procedure XDEF WakeUpSignal ; Signal to be send to awake MuchMore (byte) XDEF SigTask ; TaskPtr to MuchMore's main task XDEF Sleeping ; true while waiting for alt-ESC ie_nextevent = 0; ie_class = 4; ie_subclass = 5; ie_code = 6; ie_qualifier = 8; Signal = -30-294; ; InputData: STRUCT ; wakeUpSignal: SHORTINT; (* Signal that's wakes us up*) ; sigTask: e.TaskPtr; (* MM's main task *) ; sleeping: BOOLEAN; (* TRUE while we sleep *) ; END; ; offsets in InputData WakeUpSignal = 0; SigTask = 2; Sleeping = 6; MMInputHandler: move.l A3,-(A7); we'll use A3 move.l A0,-(A7); presave eventlist; move.l A1,A3; save pointer to InputData tst.b Sleeping(A3); beq.s rts; loop: cmp.b #$10,ie_qualifier+1(A0); test if lAlt is set end rest is clear bne next; cmp.w #$45,ie_code(A0); test ESC bne.s next; clr.w ie_code(A0); move.l $4,A6; move.l SigTask(A3),A1; moveq #0,D0; move.b WakeUpSignal(A3),D1; bset D1,D0; jsr Signal(A6); sf Sleeping(A3); bra.s rts; next: move.l ie_nextevent(A0),A0; move.l A0,D0; bne.s loop; rts: move.l (A7)+,D0; return EventList move.l (A7)+,A3; restore A3 rts; end;