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