1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-29 21:30:57 +00:00
Files
PDP-10.its/src/sysen2/urug.28
Lars Brinkhoff fcd945b381 Fix hazardous instructions in URUG.
Replace CMP Rn,(Rn)+ with TST (Rn)+ to appease PALX.
2018-07-31 05:38:49 +02:00

211 lines
3.3 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.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: TST (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
TST (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