mirror of
https://github.com/PDP-10/its.git
synced 2026-01-29 21:30:57 +00:00
211 lines
3.3 KiB
Plaintext
Executable File
211 lines
3.3 KiB
Plaintext
Executable File
.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
|