PAGE SBTTL "--- ATARI DEBUGGER ---" ; ------------- ; DEBUGGER INIT ; ------------- ; BUG TITLES IN ATARI SCREEN CODE BLINE: DB 34,48,26,0,0,0 ; BP: DB 0,13,47,48,26,0,0,0 ; -OP: DB 48,35,26,0,0,0,0,0,0 ; PC: ; DB 34,26,0,0,0 ; B: DB 51,48,26,0,0,0 ; SP: DB 54,45,26,0,0,0,0,0 ; VM: DB 0,0,0 DB 17,26,0,0,0 ; 1: DB 18,26,0,0,0 ; 2: DB 19,26,0,0,0 ; 3: DB 20,26,0,0,0 ; 4: DB 21,26,0,0,0 ; 5: DB 22,26,0,0,0 ; 6: DB 23,26,0,0,0 ; 7: DB 24,26,0,0,0 ; 8: BLINEL EQU $-BLINE BUGNIT: JSR STATUS ; SET UP STATUS LINE LDX #LOW BLINE LDA #HIGH BLINE LDY #BLINEL JMP PRINT ; -------- ; DEBUGGER ; -------- ; ENTRY: BREAKPOINT ID # IN [A] DOBUG: LDX STRIG1 BNE BUGIT RTS BUGIT: LDX #3 STX CURSOR JSR HEX ; SHOW BREAKPOINT ID INC CURSOR ; POSITION FOR OPCODE ID LDA OPCODE BMI ITQ0 LDA #18 ; 2-OP BNE SHOWOP ITQ0: CMP #$B0 BCS ITQ1 LDA #17 ; 1-OP BNE SHOWOP ITQ1: CMP #$C0 BCS ITQ2 LDA #16 ; 0-OP BNE SHOWOP ITQ2: CMP #$E0 BCS ITQ3 LDA #37 ; EXTENDED 2-OP BNE SHOWOP ITQ3: LDA #56 ; X-OP SHOWOP: JSR CHAR ; SHOW OPCODE ID LDA #11 STA CURSOR ; POS FOR OPCODE BYTE LDA OPCODE JSR HEX ; SHOW IT LDA #17 STA CURSOR ; POS FOR PC LDA GPCH JSR HEX ; SHOW MSB LDA GPCL JSR HEX ; AND LSB LDA #$0B LDX GPC0 BNE BGSKP1 LDA #$0D BGSKP1: JSR CHAR ; LDA #24 ; STA CURSOR ; POS FOR BYTE ; LDA MBYTE ; JSR HEX LDA #26 STA CURSOR ; POS FOR SP LDA GSP JSR HEX ; SHOW SP LDA #32 STA CURSOR ; POS FOR VM LDA VPCH JSR HEX ; SHOW MSB LDA VPCL JSR HEX ; AND LSB LDA #$0B LDX VPC0 BNE BGSK2 LDA #$0D BGSK2: JSR CHAR ; DISPLAY BYTES 1 THRU 8 LDA #42 STA CURSOR LDA BYTE1 JSR HEX LDA #47 STA CURSOR LDA BYTE2 JSR HEX LDA #52 STA CURSOR LDA BYTE3 JSR HEX LDA #57 STA CURSOR LDA BYTE4 JSR HEX LDA #62 STA CURSOR LDA BYTE5 JSR HEX LDA #67 STA CURSOR LDA BYTE6 JSR HEX LDA #72 STA CURSOR LDA BYTE7 JSR HEX LDA #77 STA CURSOR LDA BYTE8 JSR HEX WAIT: LDA CONSOL CMP #7 BEQ WAIT LETGO2: LDA CONSOL CMP #7 BNE LETGO2 LDA #0 ; 1/2 SECOND DELAY STA RTCLOK ZZZ: LDA RTCLOK CMP #30 BCC ZZZ BUGEX: LDA #00 LDX #7 BGLP: STA BYTE1,X DEX BPL BGLP RTS MBYTE: DB 0 ; SAVE BYTE BYTE1: DB 00 ; USER BYTE1 BYTE2: DB 00 BYTE3: DB 00 BYTE4: DB 00 BYTE5: DB 00 BYTE6: DB 00 BYTE7: DB 00 BYTE8: DB 00 END