mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-01-29 13:01:39 +00:00
217 lines
2.3 KiB
NASM
217 lines
2.3 KiB
NASM
PAGE
|
|
SBTTL "--- DEBUGGER: APPLE ---"
|
|
|
|
; --------------
|
|
; APPLE DEBUGGER
|
|
; --------------
|
|
|
|
; ENTRY: BREAKPOINT ID IN [A]
|
|
|
|
; SMALL DEBUGGER DBG1 (CONVERTS) DBG2 (JUST DISPLAYS) [A]
|
|
|
|
DBG1: PHA
|
|
LSR A
|
|
LSR A
|
|
LSR A
|
|
LSR A
|
|
JSR NIB1
|
|
PLA
|
|
|
|
NIB1: AND #%00001111
|
|
TAY
|
|
LDA HCHARS,Y
|
|
JSR CHROUT
|
|
RTS
|
|
|
|
DBG2: CMP #' '
|
|
BEQ DBG3
|
|
JSR CHROUT
|
|
LDA #' '
|
|
DBG3: JSR CHROUT
|
|
RTS
|
|
|
|
HCHARS: DB "0123456789ABCDEF"
|
|
|
|
END
|
|
|
|
|
|
|
|
BLINE: DB "B: OP: PC: S: V: 1: 2: 3: 4: 5: 6: "
|
|
DB EOL
|
|
BLINL EQU $-BLINE
|
|
|
|
|
|
DOBUG: ;RTS
|
|
|
|
STA DHOLD
|
|
|
|
LDA SHFLAG
|
|
AND #%00000100 ; CTRL KEY PRESSED?
|
|
BEQ TEST2 ; CONTINUE IF NOT
|
|
RTS ; AND EXIT
|
|
|
|
TEST2: LDA DHOLD
|
|
CMP #0
|
|
BNE BUGIT
|
|
RTS
|
|
|
|
NOP ; ON THE FLY CHANGE SPACE
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
|
|
BUGIT:
|
|
; SEC
|
|
; JSR PLOT ; GET GAME POSITION
|
|
; STX OLDX
|
|
; STY OLDY
|
|
; LDX #23
|
|
; LDY #0
|
|
; CLC
|
|
; JSR PLOT ; AND SET DUBUG ONE
|
|
|
|
; LDA DHOLD
|
|
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
|
|
|
|
PPP: LDX #0
|
|
DBG1: LDA BLINE,X ; PRINT DEBUGGER TEXT
|
|
JSR CHROUT
|
|
INX
|
|
CPX #BLINL
|
|
BCC DBG1
|
|
|
|
LDA #0
|
|
STA NDX ; CLEAR
|
|
; JSR GETIN
|
|
; CMP #0
|
|
; BEQ WOK ; IF NO KEY, CONTINUE
|
|
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
|
|
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
|
|
|