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

256 lines
2.9 KiB
NASM

TITLE "Apple ][ YZIP (c)Infocom","DEBUGGER: APPLE"
; --------------
; APPLE DEBUGGER
; --------------
; ENTRY: BREAKPOINT ID IN [A]
; SMALL DEBUGGER DBG1 (CONVERTS) DBG2 (JUST DISPLAYS) [A]
DLCNT: DB 0
DBG1:
INC DLCNT
BNE DBG1m
PHA
JSR GETKEY
PLA
DBG1m:
PHA
LSR A
LSR A
LSR A
LSR A
JSR NIB1
PLA
NIB1: AND #%00001111
TAY
LDA HCHARS,Y
JSR MCOUT
RTS
DBG2:
; CMP #' '
; BEQ DBG3
; JSR MCOUT
; LDA #' '
DBG3: JSR MCOUT
RTS
HCHARS: DB "0123456789ABCDEF"
END
BLINE: DB "B: OP: PC: S: V: 1: 2: 3: 4: 5: 6: 7: 8: 9: "
DB EOL
BLINL EQU $-BLINE
BUGLIN EQU LSTLNE
DOBUG: LDX KBD ; WAS CTRL-S PRESSED?
CPX #$13
BNE DO1
RTS ; YES, SO LEAVE
DO1: CMP #0
BEQ BUGIT
RTS
NOP ; ON THE FLY CHANGE SPACE
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 BONE
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
LDX #68
LDA BSEVEN
JSR HEX
LDX #73
LDA BEIGHT
JSR HEX
LDX #78
LDA BNINE
JSR HEX
; TO SEND TO PRINTER IF WANTED
; LDA CSW+LO
; PHA
; LDA CSW+HI
; PHA
; LDA EH
; PHA
; LDA ALTCSW+LO
; STA CSW+LO
; LDA ALTCSW+HI
; STA CSW+HI
;
; LDA PSTAT
; BNE PPP
;
; LDA #$C1
; STA CSW+HI
; LDA #$00
; STA CSW+LO
;
; LDA #$89
; JSR MCOUT
; LDA CSW+HI
; STA ALTCSW+HI
; LDA CSW+LO
; STA ALTCSW+LO
; LDA #$B8
; JSR MCOUT
; LDA #$B0
; JSR MCOUT
; LDA #$CE
; JSR MCOUT
; LDA #$8D
; JSR MCOUT
PPP: LDX #2
DBUG1: LDA BLINE,X ; PRINT DEBUGGER TEXT
; JSR MCOUT
JSR CHAR
INX
CPX #BLINL
BCC DBUG1
; PLA
; STA EH
; PLA
; STA CSW+HI
; PLA
; STA CSW+LO
; BIT KBD
; BPL LETEX ; NO KEY PRESSED
BIT ANYKEY ; CLEAR IT
BUGWAT: BIT KBD ; WAIT FOR A KEY
BPL BUGWAT
LDA KBD
CMP #$8D
BNE LETEX
BRK
LETEX: BIT ANYKEY ; CLEAR FOR NEXT ONE
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
ORA #%10000000
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
BSEVEN: DB 0
BEIGHT: DB 0
BNINE: DB 0
END