        CSECT       text

        XREF        _myHandler
        XDEF        _myHandlerStub

        XREF        _cAutoRequest
        XREF        _cBuildSysRequest
        XREF        _cCloseScreen
        XREF        _cLoadView
        XREF        _cMoveSprite
        
        XDEF        _aAutoRequest
        XDEF        _aBuildSysRequest
        XDEF        _aCloseScreen
        XDEF        _aLoadView
        XDEF        _aMoveSprite

        XDEF        _AutoRequestJmpAddress
        XDEF        _BuildSysRequestJmpAddress
        XDEF        _CloseScreenJmpAddress
        XDEF        _LoadViewJmpAddress
        XDEF        _MoveSpriteJmpAddress

        
_aAutoRequest:
        MOVEM.L     D0-D7/A0-A6,-(SP)        ; save registers on stack 
        MOVE.L      A0,-(SP)                 ; save window pointer
        JSR         _cAutoRequest            ; call our C AutoRequest
        ADD.L       #4,SP                    ; pop pointer
        MOVEM.L     (SP)+,D0-D7/A0-A6        ; restore registers
        JSR         _AutoRequestJmpAddress   ; JMP that we will fill in later
   _AutoRequestJmpAddress:
        RTS


_aBuildSysRequest:
        JSR         _BuildSysRequestJmpAddress  ; JMP that we will fill in later
   _BuildSysRequestJmpAddress:
        MOVEM.L     D0-D7/A0-A6,-(SP)           ; save registers on stack 
        MOVE.L      D0,-(SP)                    ; save window pointer
        JSR         _cBuildSysRequest           ; call our C BuildSysRequest
        ADD.L       #4,SP                       ; pop pointer
        MOVEM.L     (SP)+,D0-D7/A0-A6           ; restore registers
        RTS


_aCloseScreen:
        MOVEM.L     D0-D7/A0-A6,-(SP)        ; save registers on stack 
        MOVE.L      A0,-(SP)                 ; save Screen pointer
        JSR         _cCloseScreen            ; call our C CloseScreen
        ADD.L       #4,SP                    ; pop pointer
        MOVEM.L     (SP)+,D0-D7/A0-A6        ; restore registers
        JSR         _CloseScreenJmpAddress   ; JMP that we will fill in later
   _CloseScreenJmpAddress:
        RTS


_aLoadView:
        MOVEM.L     D0-D7/A0-A6,-(SP)      ; save registers on stack 
        MOVE.L      A1,-(SP)               ; push view pointer
        JSR         _cLoadView             ; call our C LoadView
        ADD.L       #4,SP                  ; pop view pointer
        MOVEM.L     (SP)+,D0-D7/A0-A6      ; restore registers
        JSR         _LoadViewJmpAddress    ; JMP that we will fill in later
   _LoadViewJmpAddress:
        RTS


_aMoveSprite:
        MOVEM.L     D2-D7/A0-A6,-(SP)      ; save registers on stack 
        MOVE.L      D1,-(SP)               ; push y value
        MOVE.L      D0,-(SP)               ; push x value
        MOVE.L      A1,-(SP)               ; push SimpleSprite pointer
        JSR         _cMoveSprite           ; call our C MoveSprite
        ADD.L       #4,SP                  ; pop SimpleSprite
        MOVE.L      (SP)+,D0               ; use modified x
        MOVE.L      (SP)+,D1               ; use modified y
        MOVEM.L     (SP)+,D2-D7/A0-A6      ; restore registers
        JSR         _MoveSpriteJmpAddress  ; JMP that we will fill in later
   _MoveSpriteJmpAddress:
        RTS

        
_myHandlerStub:
        MOVEM.L A0/A1,-(SP)
        JSR     _myHandler
        ADDQ.L  #8,SP
        RTS
        
        END

