__GETRET LDY #255 PLA STA ADDR1 PLA STA ADDR1+1 :LP INY LDA RETURN,Y STA (ADDR1),Y CPY RETLEN BNE :LP LDA ADDR1+1 PHA LDA ADDR1 PHA RTS __SETPARM LDY #255 PLA STA ADDR1 PLA STA ADDR1+1 :LP INY LDA (ADDR1),Y STA PARAM,Y CPY PARLEN BNE :LP LDA ADDR1+1 PHA LDA ADDR1 PHA RTS __DUMP PLA STA :RET PLA STA :RET+1 PLA STA :LENGTH PLA STA ADDR3 PLA STA ADDR3+1 LDA #$8D JSR $FDF0 LDA ADDR3+1 AND #$F0 LSR LSR LSR LSR TAX LDA HEXTAB,X JSR $FDF0 LDA ADDR3+1 AND #$0F TAX LDA HEXTAB,X JSR $FDF0 LDA ADDR3 AND #$F0 LSR LSR LSR LSR TAX LDA HEXTAB,X JSR $FDF0 LDA ADDR3 AND #$0F TAX LDA HEXTAB,X JSR $FDF0 LDA #186 ; : JSR $FDF0 LDA #160 ; SPC JSR $FDF0 LDY #0 :LP LDA (ADDR3),Y AND #$F0 ; MASK RIGHT LSR LSR LSR LSR STA :LEFT LDA (ADDR3),Y AND #$0F ; MASK LEFT STA :RIGHT LDX :LEFT LDA HEXTAB,X JSR $FDF0 LDX :RIGHT LDA HEXTAB,X JSR $FDF0 LDA #160 JSR $FDF0 INY CPY :LENGTH BNE :LP LDA :RET+1 PHA LDA :RET PHA RTS :RET DS 2 :RIGHT DS 1 :LEFT DS 1 :LENGTH DS 1 __P PLA STA ADDR1 PLA STA ADDR1+1 LDY #1 :LP LDA (ADDR1),Y BEQ :DONE JSR $FDF0 INY BNE :LP :DONE CLC TYA ADC ADDR1 STA ADDR1 LDA ADDR1+1 ADC #0 PHA LDA ADDR1 PHA RTS __W JSR $FD0C RTS __RSAV STA ERRA STX ERRX STY ERRY :C BCC :C0 BCS :C1 :Z BEQ :Z1 BNE :Z0 :N BMI :N1 BPL :N0 :O BVC :O0 BVS :O1 JMP :EXIT :C0 LDA #0 STA ERRCARRY JMP :Z :C1 LDA #1 STA ERRCARRY JMP :Z :Z1 LDA #1 STA ERRZERO JMP :N :Z0 LDA #0 STA ERRZERO JMP :N :N1 LDA #1 STA ERRNEG JMP :O :N0 LDA #0 STA ERRNEG JMP :O :O0 LDA #0 STA ERROVF JMP :EXIT :O1 LDA #1 STA ERROVF :EXIT RTS __RDMP _PRNT " ",8D8D _PRNT "REGISTRY DUMP",8D _PRNT "=============",8D _PRNT "A: " LDA ERRA AND #$F0 ; MASK RIGHT LSR LSR LSR LSR STA :LEFT LDA ERRA AND #$0F ; MASK LEFT STA :RIGHT LDX :LEFT LDA HEXTAB,X JSR $FDF0 LDX :RIGHT LDA HEXTAB,X JSR $FDF0 _PRNT " ",8D _PRNT "X: " LDA ERRX AND #$F0 ; MASK RIGHT LSR LSR LSR LSR STA :LEFT LDA ERRX AND #$0F ; MASK LEFT STA :RIGHT LDX :LEFT LDA HEXTAB,X JSR $FDF0 LDX :RIGHT LDA HEXTAB,X JSR $FDF0 _PRNT " ",8D _PRNT "Y: " LDA ERRY AND #$F0 ; MASK RIGHT LSR LSR LSR LSR STA :LEFT LDA ERRY AND #$0F ; MASK LEFT STA :RIGHT LDX :LEFT LDA HEXTAB,X JSR $FDF0 LDX :RIGHT LDA HEXTAB,X JSR $FDF0 _PRNT " ",8D8D _PRNT "STATUS FLAGS",8D _PRNT "============",8D8D LDA #0 CMP ERRCARRY BEQ :CARCLR _PRNT "CARRY: SET",8D JMP :TESTN :CARCLR _PRNT "CARRY: CLEAR",8D :TESTN LDA #0 CMP ERRNEG BEQ :NEGCLR _PRNT "NEGATIVE: SET",8D JMP :TESTZ :NEGCLR _PRNT "NEGATIVE: CLEAR",8D :TESTZ LDA #0 CMP ERRZERO BEQ :ZCLR _PRNT "ZERO: SET",8D JMP :TESTO :ZCLR _PRNT "ZERO: CLEAR",8D :TESTO LDA #0 CMP ERROVF BEQ :OCLR _PRNT "OVERFLOW: SET",8D JMP :FIN :OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D :FIN RTS :LEFT DS 1 :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR LDY #0 LDA (RETADR),Y STA :RET INY LDA (RETADR),Y STA :RET+1 JSR __RSAV PLA STA RETADR PLA STA RETADR+1 PLA STA :DUMPLEN ; LENGTH OF DUMP PLA STA :DUMP ; DUMP ADDRESS LO PLA STA :DUMP+1 ; DUMP HI PLA STA :DMPMSG PLA STA :DMPMSG+1 PLA STA :MESG ; ERROR MESSAGE ADDR LO PLA STA :MESG+1 ; HI PLA STA :SRID ; SUBROUTINE ID ADDR LO PLA STA :SRID+1 ; SUB ID HI _PRNT " ",87878787878D8D _PRNT "ERROR!",8D8D _PRNT "SUBROUTINE: " LDY #0 LDA :SRID STA ADDR1 LDA :SRID+1 STA ADDR1+1 :LP1 LDA (ADDR1),Y BEQ :LPX1 JSR $FDF0 INY BNE :LP1 :LPX1 _PRNT " ",8D _PRNT "MESSAGE: " LDY #0 LDA :MESG STA ADDR1 LDA :MESG+1 STA ADDR1+1 :LP2 LDA (ADDR1),Y BEQ :LPX2 JSR $FDF0 INY BNE :LP2 :LPX2 _PRNT " ",8D8D _WAIT LDY #0 LDA :DMPMSG STA ADDR1 LDA :DMPMSG+1 STA ADDR1+1 :LP3 LDA (ADDR1),Y BEQ :LPX3 JSR $FDF0 INY BNE :LP3 :LPX3 _PRNT " ",8D LDA :DUMP+1 PHA LDA :DUMP PHA LDA :DUMPLEN PHA JSR __DUMP _WAIT LDA RETADR+1 PHA LDA RETADR PHA _PRNT " ",8D8D _WAIT _RDUMP _WAIT LDA ERRSTOP CMP #1 BEQ :KILL RTS :KILL _PRNT " ",8D8D _PRNT "BREAK AT: " _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 :RET DS 2