Files
erkyrath.infocom-zcode-terps/c-128/xzip/bugger.asm
Andrew Plotkin b642da811e Initial commit.
2023-11-16 18:19:54 -05:00

284 lines
3.0 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
PAGE
SBTTL "--- DEBUGGER: C128 ---"
; --------------
; C128 DEBUGGER
; --------------
; ENTRY: BREAKPOINT ID IN [A]
; SMALL DEBUGGER DBG1 (CONVERTS) DBG2 (JUST DISPLAYS) [A]
; DISPLAYS ON LINE 24, col 75/76
dbgsvx: db 00
dbgsvy: db 00
dbx: db 55
dby: db 4
DBG1: STA HLDA
TYA
PHA
TXA
PHA
LDA HLDA
PHA
LSR A
LSR A
LSR A
LSR A
JSR NIB1
PLA
JSR NIB1
PLA
TAX
PLA
TAY
RTS
NIB1: AND #%00001111
TAY
LDA HCHARS,Y
JMP CHROUT
dbgsetc:
sec
jsr PLOT
stx dbgsvx
sty dbgsvy
ldx dby
ldy dbx
clc
jsr PLOT
rts
dbgrstc:
sec
jsr PLOT
sty dbx
stx dby
clc
adc dbx
cmp #75
bcc dchj1
ldx dby
inx
cpx #24
bne dchj
ldx #4
dchj:
stx dby
lda #55
dchj1:
sta dbx
ldx dbgsvx
ldy dbgsvy
clc
jsr PLOT
rts
IF 0
DBG2: STA HLDA
TYA
PHA
TXA
PHA
LDA HLDA
CMP #' '
BEQ DBG3
LDX HLDX ; PLACE ON 40 COL SCREEN
STA LINE18,X
INC HLDX
LDA #' '
DBG3: LDX HLDX ; PLACE ON 40 COL SCREEN
STA LINE18,X
INC HLDX
PLA
TAX
PLA
TAY
LDA HLDA
RTS
ENDIF
HCHARS: DB "0123456789ABCDEF"
HLDA: DB 0
HLDX: DB 0
HLDY: DB 0
;LINE18 EQU $6D0 ; LINE 18 BYTE ADDR IN 40 COL SCREEN
END
BLINE: DB "B: OP: PC: S: V: 1: 2: 3: 4: 5: 6: "
DB EOL
BLINL EQU $-BLINE
DOBUG: STA DHOLD
NOP ; ON THE FLY CHANGE SPACE
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BUGIT:
LDX #2 ; INIT "CURSOR"
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 BLINE,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 [ZSP]
LDA ZSP
JSR HEX
LDX #29 ; CURSOR FOR [MPC]
LDA MPCH
JSR HEX
LDA MPCM
JSR HEX
LDA MPCL
JSR HEX
LDX #38
LDA DHOLD
JSR HEX
LDX #43
LDA BTWO
JSR HEX
LDX #48
LDA BTHREE
JSR HEX
LDX #53
LDA BFOUR
JSR HEX
LDX #58
LDA BFIVE
JSR HEX
LDX #63
LDA BSIX
JSR HEX
PPP: LDX #0
DBG1: LDA BLINE,X ; PRINT DEBUGGER TEXT
JSR CHROUT
INX
CPX #BLINL
BCC DBG1
LDA #0
STA NDX ; CLEAR
WAITT: JSR GETIN ; NOW WAIT FOR ANOTHER KEY
CMP #0
BEQ WAITT
WOK: NOP
CMP #'Q'
BNE LLETEX
BRK
LLETEX:
; LDX OLDX
; LDY OLDY
; CLC
; JSR PLOT ; NOW BACK TO OUR REGULARLY SCHEDULED PROGRAM
LDA DHOLD
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 BLINE,X
INX
RTS
HCHARS: DB "0123456789ABCDEF"
BONE: DB 0
BTWO: DB 0
BTHREE: DB 0
BFOUR: DB 0
BFIVE: DB 0
BSIX: DB 0
DHOLD: DB 0
END