;**********************************************************************; ;* A T O M I C D E B U G G E R *; ;*--------------------------------------------------------------------*; ;* doel : machinetaal debugger voor Atom-in-PC met *; ;* ondersteuning van 6502, 65C02 en 65802 *; ;*--------------------------------------------------------------------*; ;* filenaam : breakpnt.inc *; ;* auteur : Roland Leurs *; ;* The Atomic Development Studio *; ;* ontwikkeld : maart 1998 *; ;* laatste update : *; ;*--------------------------------------------------------------------*; ;* assembleren : als include file opnemen in debug.asm *; ;**********************************************************************; bwrk equ work+$40 ;werkruimte brkpnts equ work+$48 ;breakpoints ; bwrk+3 wordt gebruikt in TRACE.INC ivm trace mode vlag bptekst .db 31,68, 9,"Ins: Set" .db 31,68,10,"Del: Clear" .db 31,68,11,"F1: Clr all" .db 31,68,13 .db "Esc: Quit",0 bpwindow .db 28,1,22,78,15,16,26 .db 31,5,15 .db "1:",8,8,10 .db "2:",8,8,10 .db "3:",8,8,10 .db "4:",8,8,10 .db "5:",8,8,10 .db "6:",8,8,10 .db "7:",8,8,10 .db "8:",8,8,10 .db 0 statusbp .db "Breakpoint table",0 bpedit_text .db 31,35,18,"Enter address" .db 31,35,19,'?',0 ; reset alle breakpoints bpclearall ldx #7 ;reset teller bpclearal1 jsr bpclear ;reset breakpoint x dex ;verlaag teller bpl bpclearal1 ;spring indien nog meer volgt rts ;einde routine ; reset breakpoint x bpclear txa ;zet bp nummer in accu pha ;save bp nummer asl a ;vermenigvuldig met 2 tax ;zet terug in index register lda #$00 ;laadt reset waarde sta brkpnts,x ;reset low byte breakpoint sta brkpnts+1,x ;reset high byte breakpoint pla ;herstel bp nummer tax rts ;einde routine ; zet breakpoint x, adres in iwrk,iwrk+1 bpset txa ;bp nummer naar accu pha ;save bp nummer asl a ;vermenigvuldig met 2 tax ;zet terug in index register lda iwrk ;laadt low byte breakpoint sta brkpnts,x ;zet low byte breakpoint lda iwrk+1 ;laadt high byte breakpoint sta brkpnts+1,x ;zet high byte breakpoint pla ;herstel bp nummer tax rts ;einde routine bpmain ldx #7 ;bewaar scherm ldy #6 jsr scrcopy ldx #statusbp jsr statusline ldx #bptekst jsr showmenu jsr cursor_on ;cursor aan lda #0 ;zet bp nummer sta bwrk+2 bpmain1 lda tekstkleur ;zet default kleurtje jsr colour ldx #bpwindow jsr write ldy #0 ;laadt index ldx #15 ;laadt x positie stx bwrk ;zet ook als y positie bpmain2 sty bwrk+1 ;save index ldy bwrk ;cursor naar juiste positie jsr gotoxy ldy bwrk+1 ;herstel index lda brkpnts,y ;lees breakpoint adres ora brkpnts+1,y ;test of gezet beq bpmain3 ;spring indien niet gebruikt lda #hexteken ;print hex teken jsr wrch lda brkpnts+1,y ;druk adres af jsr prthex lda brkpnts,y jsr prthex jmp bpmain4 bpmain3 jsr print ;druk melding af .db "Breakpoint not active",$EA bpmain4 inc bwrk ;verhoog regelteller ldy bwrk+1 ;herstel index iny ;verhoog index iny cpy #16 ;alle acht gehad bne bpmain2 ;nee, dan volgende lda bwrk+2 ;laadt geselecteerd bp clc ;maak er een regelnummer van adc #15 tay ;zet in y register ldx #15 ;laadt horizontale positie jsr gotoxy ;zet cursor op geselecteerd bp jmp bp_test_key ;spring naar menu afhandeling bpexit ldx #6 ;herstel scherm ldy #7 jsr scrcopy jsr cursor_off ;moet hier toelichting bij? bpdisas lda disas_home ;refresh disas lijst op scherm sta zp lda disas_home+1 sta zp+1 jsr prtdisas rts ;einde routine bp_test_key jsr kb_scan ;lees toetsenbord lsr a ;test of toets gedrukt is bcc bp_test_key ;spring indien geen toets cpx #27 ;escape gedrukt? beq bpexit ;ja, dan naar einde van routine cpy #82 ;insert gedrukt? beq bpedit ;ja, spring cpy #83 ;toets DEL beq bpreset cpy #59 ;toets f1 beq bpclrall cpy #80 ;toets cursor down beq bpdown cpy #72 ;toets cursor up beq bpup bne bp_test_key ;nee, dan ongeldige toets bpedit kader 34,20,48,17,1,$30 ;teken kader ldx #bpedit_text jsr write jsr input ;lees input lda tekstkleur ;herstel kleur jsr colour lda iwrk ;test op 0 input ora iwrk+1 beq bpedit1 ;niets doen indien 0 ingevoerd ldx bwrk+2 ;laadt bp nummer jsr bpset ;zet bp bpedit2 jsr bpdisas ;update disaslijst bpedit1 jmp bpmain1 ;terug naar bp menu bpreset ldx bwrk+2 ;laadt bp nummer jsr bpclear ;zet bp jmp bpedit2 ;terug naar bp menu bpclrall jsr bpclearall ;reset alle breakpoints jmp bpedit2 ;terug naar bp menu bpdown lda bwrk+2 ;test op onderste regel cmp #7 beq bpcur lda #10 ;cursor regel omlaag jsr wrch inc bwrk+2 ;verhoog bp nummer bpcur jmp bp_test_key ;terug naar bp menu bpup lda bwrk+2 ;test op bovenste regel beq bpcur lda #11 ;cursor regel omhoog jsr wrch dec bwrk+2 ;verlaag bp nummer jmp bp_test_key ;terug naar bp menu