KInt_Init ;VBR Assumed $0 move.l $68.w,OLDKINT Move.l #KInt_Main,$68.w Install Interrupt And.b #$3f,$bfe201 Set Timers Move.b #$7f,$bfed01 Move.b $bfed01,d0 Move.b #$88,$bfed01 St.b KInt_CCode Move.b #$a0,$bfee01 Start Timey Thing Rts And return OLDKINT: dc.l 0 KInt_Main Movem.l d0/d1/a0/a1/a6,-(a7) Stack everything Move.w #8,$dff09a Temp Disable Int. Move.w $dff01e,d0 Intreqr And.w #8,d0 Mask Out All X^ K_Int Beq KInt_End Not Keyboard Interrupt Lea $bfed01,a6 Move.w #$8,$dff09c Clear Int.Request Move.b -$100(a6),d0 Move Raw Keyboard value Ror.b #1,d0 Roll to correct Not.b d0 Move.b d0,KInt_CCode Save Corrected Keycode .HandShake Move.b #8,(a6) Move.b #7,-$900(a6) Move.b #0,-$800(a6) Move.b #0,-$100(a6) Move.b #$d1,$100(a6) Tst.b (a6) .wait Btst #0,(a6) Beq.s .wait Move.b #$a0,$100(a6) Move.b (a6),d0 Move.b #$88,(a6) Lea KeyMap,a1 Moveq.w #0,d0 Move.b KInt_CCode(pc),d0 Bmi.s KInt_KeyUp neg if up KInt_KeyDown st (a1,d0.w) move.b d0,lastpressed Bra KInt_End KInt_KeyUp And.w #$7f,d0 Make code Positive clr.b (a1,d0.w) KInt_End Movem.l (a7)+,d0/d1/a0/a1/a6 Unstack Everything Move.w #$8008,$dff09a Re-enable Int. Rts