From 4a2032b1b98d6a55f80e0c63ea23da3ae10caa1b Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Mon, 14 Oct 2019 09:38:34 +0200 Subject: [PATCH] Add $^N to RUG. $^N sets a temporary breakpoint at the next instruction and proceeds. When the breakpoint is hit, it's removed. The standard breakpoint table is used. --- src/rug/ar.633 | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/rug/ar.633 b/src/rug/ar.633 index ba8969dc..7292e330 100644 --- a/src/rug/ar.633 +++ b/src/rug/ar.633 @@ -971,7 +971,10 @@ PP=.-2 JMP PR1 ;B HANDLER - SET AND REMOVE BREAKPOINTS -O.BKPT: MOV #-1,A +O.BKPT: JSR PC,BKPT + JMP O.DCD ;RETURN + +BKPT: MOV #-1,A TST D BEQ O.ERR1 ;FOR NOW THAT COMMAND IS MEANINGLESS ASR F ;GET ONE BIT TO CARRY @@ -992,7 +995,7 @@ O.SET1: MOV F,-(E) ;SET BREAKPOINT BEQ O.DCDB MOVB #'I,O.BPM+1-O.ADR1(E) ;SET MAP TO I SPACE .ENDC -O.DCDB: JMP O.DCD ;RETURN +O.DCDB: RTS PC ;$$B HANDLER DELETE BKPT AT 1500 BY 1500$$B, $$B REMOVES ALL DELT: CLR D @@ -1017,6 +1020,17 @@ DELDON: RTS PC DELTB: JSR PC,DELT1 BR O.DCDB O.ERR1: JMP O.ERR + ; SINGLE STEP USING TEMPORARY BREAKPOINT +O.NEXT: MOV UPC,F + ADD LENGTH,F ;COMPUTE ADDRESS + TST (F)+ ; FOR NEXT INSTRUCTION + MOV F,NEXT + MOV #1,D + JSR PC,BKPT ;SET TEMPORARY BREAKPOINT AT F + CLR D + JMP O.PROC ;PROCEED + +NEXT: 0 ;SAVED ADDRESS ; SEARCHES - $MSK HAS THE MASK ; $MSK+2 HAS THE FWA @@ -1372,10 +1386,22 @@ O.B2: MOV F,UPC ;WANT DECREMENTED PC MOVB E,O.P ;ALLOW PROCEED + CMP F,NEXT + BEQ O.B6 ;TEMPORARY $^N BREAKPOINT DEC O.CT(E) BLE O.B5 JMP PR0 +O.B6: MOV #1,D ;REMOVE TEMPORARY BREAKPOINT + JSR PC,DELT1 + JSR PC,CRLF + JSR 5,TYPE + .ASCIZ /SN;/ + .EVEN + MOV NEXT,A + CLR NEXT + BR O.B3 + O.B5: MOV #1,O.CT(E) ;RESET COUNT TO 1 MOVB E,A ADD #140,A @@ -1386,10 +1412,10 @@ O.B5: MOV #1,O.CT(E) ;RESET COUNT TO 1 BPTNM==.+1 .ASCIZ /B ;/ .EVEN - MOV #1,BYTWRD ;SET WORD MODE MOVB O.P,E MOV O.ADR1(E),A ;GET ADDRESS OF BREAK -O.B3: MOV A,CURADR +O.B3: MOV #1,BYTWRD ;SET WORD MODE + MOV A,CURADR JSR PC,GETWRD MOV CURADR,A ;ARG FOR SYMBOL IN A JSR 5,SYMBOL ;LOOK UP SYMBOL, TYPE IT AND ANY OFFSET @@ -4060,6 +4086,7 @@ O.LGDR: O.EFF ; E SEARCH EFFECTIVE ADDRESS O.BKPT ; B BREAKPOINTS O.PROC ; P PROCEED + O.NEXT ; $^N NEXT SETCMD SETSMD SETIMD @@ -4129,6 +4156,7 @@ ALT: .BYTE 'G ; G .BYTE 'E ; E .BYTE 'B ; B .BYTE 'P ; P + .BYTE 16 ; ^N .BYTE 'C .BYTE 'S .BYTE 'I