mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-01-14 23:46:26 +00:00
125 lines
1.5 KiB
Plaintext
125 lines
1.5 KiB
Plaintext
PAGE
|
|
SBTTL "--- DEBUGGER: CBM64 ---"
|
|
|
|
; --------------
|
|
; CBM64 DEBUGGER
|
|
; --------------
|
|
|
|
; ENTRY: BREAKPOINT ID IN [A]
|
|
|
|
BLINE: DB "B: OP: PC: B: S: V:"
|
|
BLINL EQU $-BLINE
|
|
|
|
BUGLIN EQU SCREEN+40
|
|
|
|
DOBUG: LDX CONSOL ; CHECK CONSOLE
|
|
CPX #5 ; "SELECT" PRESSED?
|
|
BNE BUGIT ; IF SO,
|
|
RTS ; EXIT
|
|
|
|
BUGIT: PHA ; ELSE SAVE BREAK ID
|
|
|
|
LDX #39
|
|
DBG0: LDA #0
|
|
STA BUGLIN,X ; CLEAR SCREEN LINE
|
|
DEX
|
|
BPL DBG0
|
|
|
|
LDX #0
|
|
DBG1: LDA BLINE,X ; PRINT DEBUGGER TEXT
|
|
STA BUGLIN,X
|
|
INX
|
|
CPX #BLINL
|
|
BCC DBG1
|
|
|
|
LDX #2 ; INIT "CURSOR"
|
|
PLA
|
|
JSR HEX ; SHOW BREAKPOINT
|
|
|
|
LDA OPCODE
|
|
BMI ITQ0
|
|
LDA #'2'
|
|
BNE SHOWOP
|
|
|
|
ITQ0: CMP #$B0
|
|
BCS ITQ1
|
|
LDA #'1'
|
|
BNE SHOWOP
|
|
|
|
ITQ1: CMP #$C0
|
|
BCS ITQ2
|
|
LDA #'0'
|
|
BNE SHOWOP
|
|
|
|
ITQ2: CMP #$E0
|
|
BCS ITQ3
|
|
LDA #'E'
|
|
BNE SHOWOP
|
|
|
|
ITQ3: LDA #'X'
|
|
|
|
SHOWOP: LDX #5 ; SET CURSOR
|
|
STA BUGLIN,X
|
|
|
|
LDX #9 ; CURSOR FOR OP ID
|
|
LDA OPCODE
|
|
JSR HEX
|
|
|
|
LDX #15 ; CURSOR FOR PC
|
|
LDA ZPCH
|
|
JSR HEX
|
|
LDA ZPCM
|
|
JSR HEX
|
|
LDA ZPCL
|
|
JSR HEX
|
|
|
|
LDX #24 ; CURSOR FOR BYTE
|
|
LDA MBYTE
|
|
JSR HEX
|
|
|
|
LDX #29 ; CURSOR FOR [ZSP]
|
|
LDA ZSP
|
|
JSR HEX
|
|
|
|
LDX #34 ; CURSOR FOR [MPC]
|
|
LDA MPCH
|
|
JSR HEX
|
|
LDA MPCM
|
|
JSR HEX
|
|
LDA MPCL
|
|
JSR HEX
|
|
|
|
LDA CONSOL
|
|
CMP #6 ; "START" PRESSED?
|
|
BNE LETEX ; EXIT IF NOT
|
|
|
|
LETGO: LDA CONSOL ; ELSE WAIT FOR
|
|
CMP #6 ; "START" TO BE RELEASED
|
|
BEQ LETGO
|
|
|
|
LETEX: RTS
|
|
|
|
; CONVERT [A] TO HEX & PRINT
|
|
|
|
HEX: PHA
|
|
LSR A
|
|
LSR A
|
|
LSR A
|
|
LSR A
|
|
JSR NIB
|
|
PLA
|
|
|
|
NIB: AND #%00001111
|
|
TAY
|
|
LDA HCHARS,Y
|
|
STA BUGLIN,X
|
|
INX
|
|
RTS
|
|
|
|
HCHARS: DB "0123456789ABCDEF"
|
|
|
|
MBYTE: DB 0
|
|
|
|
END
|
|
|