1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 23:36:30 +00:00

URUG - GT40 debugger.

This version uses CMP Rn,(Rn)+ to add 2 to a register, which PALX
complains about.  However, the resulting binary is fine.
This commit is contained in:
Lars Brinkhoff 2018-07-29 12:57:07 +02:00
parent 1e02a45164
commit 91cc05958e
3 changed files with 218 additions and 0 deletions

View File

@ -1036,6 +1036,12 @@ expect ":KILL"
respond "*" ":midas sys3;ts carpet_syseng;carpet\r"
expect ":KILL"
# URUG, GT40 debugger.
respond "*" ":palx sysbin;_sysen2;urug\r"
respond "=YES" "1\r"
respond "37000" "37000\r"
expect ":KILL"
# KL10 front end debugger. Put it in the same directory as the
# "MX" IOELEV.
respond "*" ":palx sysbin;_syseng; klrug\r"

View File

@ -248,6 +248,7 @@
- UNTALK, split-screen comm-link program.
- UP/DOWN, check if host is online.
- UPTIME, Chaosnet uptime server.
- URUG, GT40 debugger.
- USQ/TYPESQ, unsqueeze/uncram or type a file.
- VERSA/SPOOLR, Versatec/Gould printer spooler.
- VTTIME, display running time on the terminal.

211
src/sysen2/urug.27 Executable file
View File

@ -0,0 +1,211 @@
.TITLE GT40 MICRORUG
R0=%0
R1=%1
R2=%2
R3=%3 ;SUBROUTINE CALL LINK
R4=%4 ;ADDRESS OF OPEN LOCATION
R5=%5
R6=%6
R7=%7
.IF1
.PRINT /USE BPT INSTRUCTION? 0=NO, 1=YES /
.TTYMA A
USEBPT==A
.ENDM
.PRINT /URUG STARTING ADDRESS? (USUALLY 37000) /
.TTYMA A
SA==A
.ENDM
.ENDC
.=SA
BEG: MOV R0,SAVR0+2
MOV R1,SAVR1+2
MOV R2,SAVR2+2
MOV R3,SAVR3+2
MOV R4,SAVR4+2
MOV R5,SAVR5+2
MOV R6,SAVR6+2
.IFZ USEBPT
CLR @#177560 ;NO KEYBD INTERRUPT
.ENDC
RESUME: MOV #DISBEG,@#172000 ;START HERE AFTER NXM, ODD ADDR TRAPS
BLOC: MOV #-1,R4
BGE BFLUSH ;BREAKPOINT WAS SET
CLR R4 ;SO INITIAL LF IS HAPPY
BEG1: MOV R7,R3
BR SCROLL
MOV #DISL+110,R0
RUBOUT: BIC #7,R0
MOV #20040,R1 ;CLEAR OUT RUBBED OUT CHARS
MOV R1,(R0)+
MOV R1,(R0)+
MOV R1,(R0)+
BIC #7,R0
GETDIG: CLR R2
GETD1: TSTB @#177560
BPL GETD1
MOVB @#177562,R1
BIC #177600,R1
MOV R1,R5
CMP #60,R1
BGT SPCL ;SPECIAL CHAR, NOT A DIGIT
CMP #71,R1
BLT SPCL
MOVB R1,(R0)+
SUB #60,R1
ASL R2
ASL R2
ASL R2
ADD R1,R2
BR GETD1
.IFNZ USEBPT
HITBRK: SUB #2,(R6)
MOV (R6)+,SAVGO+2
MOV (R6)+,SAVPS+2
BR BEG
.ENDC
SETBRK: TST BLOC+2
BGE BLOC ;FLUSH PRIOR BKPT INSTEAD
.IFZ USEBPT
MOV (R2)+,BWORD1+2 ;B AT ODD LOC WILL ADDRESS ERROR
MOV (R2),BWORD2+2
MOV #BEG,(R2)
MOV #137,-(R2) ;JMP @#
.IFF
MOV (R2),BFLUSH+2 ;B AT ODD LOC WILL ADDRESS ERROR
MOV #3,(R2)
.ENDC
MOV R2,BLOC+2
BR BEG1
BFLUSH:
.IFZ USEBPT
BWORD1: MOV #0,(R4)+
BWORD2: MOV #0,(R4)
CMP -(R4),-(R4)
.IFF
MOV #0,(R4)
.ENDC
COM BLOC+2
BR AUTOPN
SCROLL: MOV #DISL,R0
SCRL1: MOV 30(R0),(R0)+
CMP #DISL+110,R0
BNE SCRL1
SCRL2: MOV #20040,(R0)+ ;ERASE BOTTOM LINE
CMP #DISL+140,R0
BNE SCRL2
MOV #5015,-(R0)
RETURN: CMP R3,(R3)+
MOV R3,R7
DPOSIT: MOV R2,@R4 ;DEPOSIT THE ARGUMENT
MOV R7,R3
BR FILL
MOV #5015,-(R0)
CHEKLF: CMP #12,R5
BNE BEG1
.IFZ USEBPT
AUTOPN:
.ENDC
CMP R4,(R4)+
.IFNZ USEBPT
AUTOPN:
.ENDC
MOV R7,R3 ;AUTOMATICALLY OPEN A LOCATION
BR SCROLL
MOV #DISL+110,R0
MOV R4,R2
MOV R7,R3
BR TYPNUM
BR DOLF
EVEN: BIC #1,R2 ;EXAMINE ONLY EVEN LOCS
BICB #1,-1(R0)
EVENOK: MOV R7,R3
BR FILL
MOV R2,R4
DOLF: MOV @R4,R2 ;EXAMINE LOCATION
MOV R7,R3
BR TYPNUM
BR GETDIG
SPCL: SUB #40,R1
BLE SPACE ;SPACE, CR, LF, SUNDRY CTRL CHARS
MOVB R1,(R0)+
CMP #102,R1
BEQ SETBRK
CMP #122,R1
BEQ GETDIG ;R TYPED
CMP #107,R1
BNE RUBOUT
BIT #6,R0 ;G TYPED
BEQ SAVR0 ;NO ARGUMENT TYPED
MOV R2,SAVGO+2
SAVR0: MOV #0,R0
SAVR1: MOV #0,R1
SAVR2: MOV #0,R2
SAVR3: MOV #0,R3
SAVR4: MOV #0,R4
SAVR5: MOV #0,R5
SAVR6: MOV #0,R6
.IFZ USEBPT
SAVGO: MOV #BEG,R7
.IFF
SAVGO: CMP #BEG,R7
SAVPS: MOV #0,-(R6) ;"R8" = PS
MOV #DISBEG,@#172000 ;"R9" = DPC
MOV SAVGO+2,-(R6)
RTI
.ENDC
SPACE: BIT #7,R0
BEQ CHEKLF ;NO ARGUMENT TYPED
CMP #DISL+110+20,R0
BLT DPOSIT
CMPB #122,DISL+110 ;WAS FIRST CHAR R?
BNE EVEN
ASL R2 ;SPECIAL FUDGE FOR REGISTERS
ASL R2
ADD #SAVR0+2,R2
BR EVENOK
TYPNUM: MOV #100000,R1
LUP1: MOVB #57,(R0)
LUP2: INCB (R0)
SUB R1,R2
BPL LUP2
ADD R1,R2 ;SETS C
ADC R0 ;CLEARS C AND UPDATES R0
ROR R1
ASR R1
ASR R1
BNE LUP1
FILL1: MOVB #40,(R0)+
FILL: BIT #7,R0
BNE FILL1
BR RETURN
.=.+<-.&7> ;GET DISL ON 8N BOUNDARY
DISL: .REPT 13
20040 ;SPACE SPACE
.ENDR
5015 ;CR LF (REVERSED)
.ASCII \ THIS IS THE 1000-BYTE\
5015
.ASCII \ MICRORUG DEBUGGER FOR\
5015
.ASCII \ THE GT-40! MIT AI LAB\
5015
DISBEG: 170000 ;LSR A
117000 ;SGM POINT, INT 4
40000 ;INTEN, X
1000 ;Y
100000 ;SGM CHAR
160000 ;JUMP
DISL
.END