        CSECT       text

        XREF        _cOpenWindow
        XREF        _OldOpenWindow
        XDEF        _aOpenWindow

        XREF        _cSetMenuStrip
        XREF        _OldSetMenuStrip
        XDEF        _aSetMenuStrip

        XREF        _cOpenScreen
        XREF        _OldOpenScreen
        XDEF        _aOpenScreen


_aOpenWindow:
        MOVE.L      _OldOpenWindow,A1      ; move old address to A1
        JSR         (A1)                   ; JSR to old OpenWindow routine
        MOVEM.L     D0-D7/A0-A6,-(SP)      ; save registers on stack
        MOVE.L      D0,-(SP)               ; push Window pointer
        JSR         _cOpenWindow           ; call our C OpenWindow
        ADDQ.L      #4,SP                  ; pop the pointer
        MOVEM.L     (SP)+,D0-D7/A0-A6      ; restore registers
        RTS

_aSetMenuStrip:
        MOVE.L      A2,-(SP)               ; save A2 for later
        MOVEM.L     D0-D7/A0-A6,-(SP)      ; save registers on stack
        MOVE.L      A1,-(SP)               ; push Menu pointer
        MOVE.L      A0,-(SP)               ; push Window pointer
        JSR         _cSetMenuStrip         ; call our C routine
        ADDQ.L      #8,SP                  ; pop the pointers
        MOVEM.L     (SP)+,D0-D7/A0-A6      ; restore registers
        MOVE.L      _OldSetMenuStrip,A2    ; move old address to A2
        JSR         (A2)                   ; JSR to old OpenWindow routine
        MOVE.L      (sp)+,A2               ; restore contents of A2
        RTS

_aOpenScreen:
        MOVE.L      _OldOpenScreen,A1      ; move old address to A1
        JSR         (A1)                   ; JSR to old OpenScreen routine
        MOVEM.L     D0-D7/A0-A6,-(SP)      ; save registers on stack
        MOVE.L      D0,-(SP)               ; push Screen pointer
        JSR         _cOpenScreen           ; call our C OpenScreen
        ADDQ.L      #4,SP                  ; pop the pointer
        MOVEM.L     (SP)+,D0-D7/A0-A6      ; restore registers
        RTS

        END
