
; Handlers.asm, For use in JustLook.
; © Kamran Karimi.
;
; Assembled with SAS/C 6.00 assembler.
; asm -iinclude: Handlers.asm


 include "devices/inputevent.i" 

ExecBase equ  4

Signal   equ -324

 XREF _Me

 XREF _NoKey_Port
 XREF _NoMouse_Port
 XDEF _DisableIE

 XREF _LeftMask
 XREF _MidMask
 XREF _RightMask
 XDEF _WaitIE

 SECTION TheHandlers,CODE

_DisableIE: 
 move.l  a0,-(a7)
CheckLoopDIE: 
 move.l  _NoKey_Port,d0
 beq     KeyNotDisabled
 cmpi.b  #IECLASS_RAWKEY,ie_Class(a0)
 beq     Null_It
KeyNotDisabled: 
 move.l  _NoMouse_Port,d0
 beq     MouseNotDisabled
 move.b  ie_Class(a0),d0
 cmpi.b  #IECLASS_POINTERPOS,d0
 beq     Null_It
 cmpi.b  #IECLASS_NEWPOINTERPOS,d0
 beq     Null_It
 cmpi.b  #IECLASS_RAWMOUSE,d0
 bne     NotAMouseEvent
Null_It: 
 cmpi.b   #$ff,ie_SubClass(a0)
 beq      CheckNextDIE
 move.b  #IECLASS_NULL,ie_Class(a0)
NotAMouseEvent:
MouseNotDisabled:
CheckNextDIE: 
 move.l  (a0),d0
 move.l  d0,a0
 bne     CheckLoopDIE
 move.l  (a7)+,d0
 rts

_WaitIE:
 move.l  a0,-(a7)
CheckLoopWIE:
 cmpi.b  #IECLASS_RAWMOUSE,ie_Class(a0)
 bne     CheckNextWIE
 moveq   #0,d0
TestLeftButton:
 cmpi.w  #IECODE_LBUTTON,ie_Code(a0)
 bne     TestMidButton
 or.l    _LeftMask,d0
TestMidButton:
 cmpi.w  #IECODE_MBUTTON,ie_Code(a0)
 bne     TestRightButton
 or.l    _MidMask,d0
TestRightButton:
 cmpi.w  #IECODE_RBUTTON,ie_Code(a0)
 bne     SignalIt
 or.l    _RightMask,d0
SignalIt:
 tst.l   d0
 beq     CheckNextWIE
 move.l  a6,-(a7)
 movea.l ExecBase,a6
 movea.l _Me,a1
 jsr     Signal(a6)
 move.l  (a7)+,a6
 bra     ExitWIE
CheckNextWIE:
 movea.l (a7),a0
 move.l  (a0),d0
 movea.l d0,a0
 bne     CheckLoopWIE
ExitWIE:
 move.l  (a7)+,d0
 rts
 end
