         .OUTPI ALFRES
         .ENTRY PUSH,PULL
         .VIRT8 AX,SPTR

PUSH     LDY #0
         LDA AX
         STA (SPTR),Y ;Push onto stack
         INY
         LDA AX+1
         STA (SPTR),Y
         LDA SPTR
         CLC
         ADC #2
         STA SPTR
         BCC PUS001
         INC SPTR+1
PUS001   LDA SPTR+1
         CMP #.HI.DZTOP   ;Stack overrun ?
         BCC PUS002
         LDX #.LO.STKERR
         LDY #.HI.STKERR
         JSR SCRPRT
         JMP IOEXIT
PUS002   INC STKCNT
         BNE PUS003
         INC STKCNT+1
PUS003   RTS
STKERR   .BYTE "STACK OVERRUN",$9B,0
STKUND   .BYTE "STACK UNDERRUN",$9B,0
;
PULL     LDA SPTR
         SEC
         SBC #2
         STA SPTR
         LDA SPTR+1
         SBC #0
         STA SPTR+1
         LDY #0
         LDA (SPTR),Y
         STA AX
         INY
         LDA (SPTR),Y
         STA AX+1
         LDA SPTR+1
         CMP #$60
         BCS PULL1
         LDX #.LO.STKUND
         LDY #.HI.STKUND
         JSR SCRPRT
         JMP IOEXIT
PULL1    LDA STKCNT
         BNE PUL002
         DEC STKCNT+1
PUL002   DEC STKCNT
         RTS
