CURSFOR
         CLC
         ADC   CURSH
         STA   CURSH
         LDA   ERRCTRL
         CMP   #1
         BEQ   :CHKERR
         JMP   :ERREND
:CHKERR
         LDA   CURSH
         CMP   #40        
         BCS   :XOVF
         JMP   :ERREND
:XOVF
         _ERR  #:E_SID;#:E_XOF;#:E_DMP1;#RETURN;#10
:ERREND
         JSR   VTAB
         RTS
:E_SID   ASC   "CURSFOR (CURF MACRO)",00
:E_DMP1  ASC   "DUMPING RETURN BLOCK...",00
:E_XOF   ASC   "CURSOR X OVERFLOW: X <> MIN/MAX",00
CURSBAK
         SEC
         STA   SCRATCH
         LDA   CURSH
         SBC   SCRATCH
         STA   CURSH
         LDA   ERRCTRL
         CMP   #1
         BEQ   :CHKERR
         JMP   :ERREND
:CHKERR
         LDA   CURSH
         CMP   #40        
         BCS   :XOVF
         JMP   :ERREND
:XOVF
         _ERR  #:E_SID;#:E_XOF;#:E_DMP1;#RETURN;#10
:ERREND
         JSR   VTAB
         RTS
:E_SID   ASC   "CURSBAK (CURB MACRO)",00
:E_DMP1  ASC   "DUMPING RETURN BLOCK...",00
:E_XOF   ASC   "CURSOR X OVERFLOW: X <> MIN/MAX",00
CURSDN
         CLC
         ADC   CURSV
         STA   CURSV
         LDA   ERRCTRL
         CMP   #1
         BEQ   :CHKERR
         JMP   :ERREND
:CHKERR
         LDA   CURSV
         CMP   #24        
         BCS   :YOVF
         JMP   :ERREND
:YOVF
         _ERR  #:E_SID;#:E_YOF;#:E_DMP1;#RETURN;#10
:ERREND
         JSR   VTAB
         RTS
:E_SID   ASC   "CURSDN (CURD MACRO)",00
:E_DMP1  ASC   "DUMPING RETURN BLOCK...",00
:E_YOF   ASC   "CURSOR Y OVERFLOW: Y <> MIN/MAX",00
CURSUP
         SEC
         STA   SCRATCH
         LDA   CURSV
         SBC   SCRATCH
         STA   CURSV
         LDA   ERRCTRL
         CMP   #1
         BEQ   :CHKERR
         JMP   :ERREND
:CHKERR
         LDA   CURSV
         CMP   #24        
         BCS   :YOVF
         JMP   :ERREND
:YOVF
         _ERR  #:E_SID;#:E_YOF;#:E_DMP1;#RETURN;#10
:ERREND
         JSR   VTAB
         RTS
:E_SID   ASC   "CURSUP (CURU MACRO)",00
:E_DMP1  ASC   "DUMPING RETURN BLOCK...",00
:E_YOF   ASC   "CURSOR Y OVERFLOW: Y <> MIN/MAX",00
