mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-01-18 17:07:35 +00:00
125 lines
1.5 KiB
Plaintext
125 lines
1.5 KiB
Plaintext
PAGE
|
|
SBTTL "--- DEBUGGER ---"
|
|
|
|
; --------
|
|
; DEBUGGER
|
|
; --------
|
|
|
|
; ENTRY: BREAKPOINT # IN [B]
|
|
|
|
DOBUG: LDX #SCREEN+64 ; BEGINNING OF LINE
|
|
LDA #'B' ; "BUG:"
|
|
STA ,X+
|
|
LDA #'P'
|
|
STA ,X+
|
|
JSR COLON
|
|
|
|
STB ,X+ ; SHOW BREAKPOINT ID
|
|
JSR BUGSP ; SPACE
|
|
|
|
LDA OPCODE
|
|
BPL P2OP ; 2-OP IF POSITIVE
|
|
CMPA #176
|
|
BLO P1OP ; 1-OP
|
|
CMPA #192
|
|
BLO POP0 ; 0-OP
|
|
CMPA #224
|
|
BLO POPE ; EXTENDED 2-OP
|
|
|
|
LDA #'X' ; OR X-OP
|
|
BRA POPC
|
|
|
|
P2OP: LDA #'2'
|
|
BRA POPC
|
|
|
|
P1OP: LDA #'1'
|
|
BRA POPC
|
|
|
|
POP0: LDA #'0'
|
|
BRA POPC
|
|
|
|
POPE: LDA #'E'
|
|
|
|
POPC: STA ,X+ ; PRINT OP-TYPE
|
|
|
|
LDA #'-' ; "-OP:"
|
|
STA ,X+
|
|
LDA #'O'
|
|
STA ,X+
|
|
LDA #'P'
|
|
STA ,X+
|
|
BSR COLON
|
|
|
|
LDA OPCODE ; SHOW OPCODE
|
|
BSR INHEX
|
|
BSR BUGSP
|
|
|
|
LDA #'P' ; "PC:"
|
|
STA ,X+
|
|
LDA #'C'
|
|
STA ,X+
|
|
BSR COLON
|
|
|
|
TST ZPCH ; IF ZPCH <> 0
|
|
BEQ DOBZ ; PRINT "0"
|
|
LDA #'1' ; ELSE PRINT "1"
|
|
BRA TOPPC
|
|
|
|
DOBZ: LDA #'0'
|
|
TOPPC: STA ,X+
|
|
|
|
LDA ZPCM ; PRINT ZPCM & L
|
|
BSR INHEX
|
|
LDA ZPCL
|
|
BSR INHEX
|
|
BSR BUGSP
|
|
|
|
; INVERT THE DEBUG LINE
|
|
|
|
LDX #SCREEN+96
|
|
BUGL2: LDA ,-X
|
|
ANDA #%10111111 ; CLEAR BIT 6
|
|
STA ,X
|
|
CMPX #SCREEN+64
|
|
BHI BUGL2
|
|
RTS
|
|
|
|
; -------------
|
|
; PRINT A COLON
|
|
; -------------
|
|
|
|
COLON: LDA #':'
|
|
BRA POOP
|
|
|
|
; -------------
|
|
; PRINT A SPACE
|
|
; -------------
|
|
|
|
BUGSP: LDA #$20
|
|
BRA POOP
|
|
|
|
; ----------------
|
|
; PRINT [A] IN HEX
|
|
; ----------------
|
|
|
|
INHEX: TFR A,B
|
|
LSRA ; SHIFT HIGH NIBBLE INTO PLACE
|
|
LSRA
|
|
LSRA
|
|
LSRA
|
|
|
|
BSR TOASC ; CONVERT HIGH NIBBLE & SHOW
|
|
TFR B,A
|
|
|
|
TOASC: ANDA #%00001111
|
|
CMPA #10 ; CONVERT LOW NIBBLE & SHOW
|
|
BLO IH1
|
|
ADDA #7
|
|
IH1: ADDA #$30
|
|
|
|
POOP: STA ,X+
|
|
RTS
|
|
|
|
END
|
|
|