mirror of
https://github.com/PDP-10/its.git
synced 2026-03-02 18:04:38 +00:00
Import RZ;FACTOR 26 source.
Differences from AI's TS FACTOR: - KL10 define to put the TEST inner loop code at 100 rather than in the registers -- ";;KL10 RUNS SLOWER IN ACS". - Lookup table for commands, including uppercase and lowercase. - A new "quit" command. - Mixed-case messages. - System calls modernised a bit; .CALL /OPEN/ rather than .SUSET/.OPEN, and not opening the TTY in DDT mode.
This commit is contained in:
committed by
Adam Sampson
parent
d1b101b3eb
commit
6984267e18
@@ -1495,7 +1495,7 @@ respond "*" ":midas sys2;ts xhost_sysen3;xhost\r"
|
||||
expect ":KILL"
|
||||
|
||||
# FACTOR
|
||||
respond "*" ":midas sys1;ts factor_sysen3;factor\r"
|
||||
respond "*" ":midas sys1;ts factor_rz;factor\r"
|
||||
expect ":KILL"
|
||||
|
||||
# compile lisp compiler
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
;Factor integers using trial division -*-MIDAS-*-
|
||||
;This was reconstructed in 2018 from AI:SYS1;TS FACTOR, dated 1977-09-27.
|
||||
|
||||
TITLE FACTOR
|
||||
|
||||
@@ -13,6 +11,7 @@ DV=5
|
||||
P=6
|
||||
|
||||
.MLLIT==1
|
||||
KL10==1 ;;KL10 RUNS SLOWER IN ACS
|
||||
|
||||
TYIC==1
|
||||
TYOC==2
|
||||
@@ -20,7 +19,7 @@ INFOC==3
|
||||
|
||||
PDLL=100
|
||||
|
||||
LOC 7
|
||||
IFE KL10, LOC 7
|
||||
TEST: TRC .+1,6
|
||||
INCR: ADDI DV,2
|
||||
RETEST: MOVE Z,C
|
||||
@@ -32,56 +31,151 @@ RETEST: MOVE Z,C
|
||||
JUMPN B,TEST
|
||||
JRST FOUND
|
||||
|
||||
LOC 100
|
||||
G0: MOVE P,[-PDLL,,PDL]
|
||||
.OPEN TYIC,[10,,(SIXBIT /TTY/)] ;Open in "DDT mode" (don't echo CR etc.)
|
||||
.VALUE 0
|
||||
IFE KL10, LOC 100
|
||||
GO: MOVE P,[-PDLL,,PDL]
|
||||
.OPEN TYIC,[0,,(SIXBIT /TTY/)]
|
||||
JRST KILL
|
||||
.OPEN TYOC,[1,,(SIXBIT /TTY/)]
|
||||
.VALUE 0
|
||||
JRST KILL
|
||||
DECIMA: MOVEI C,10.
|
||||
RADSET: MOVEM C,RADX'
|
||||
RESET: PUSHJ P,PROMPT
|
||||
ZBC: SETZB B,C
|
||||
|
||||
LOOP: PUSHJ P,TYI
|
||||
CAIN A,177 ;RUBOUT
|
||||
JRST RESET
|
||||
CAIN A,"R
|
||||
JRST RADSET
|
||||
CAIN A,"D
|
||||
JRST DECIMA
|
||||
CAIE A,":
|
||||
CAIN A,"*
|
||||
JRST TIMES
|
||||
CAIN A,"?
|
||||
JRST INFO
|
||||
CAIN A,"C
|
||||
JRST CLIST
|
||||
CAIN A,"Q
|
||||
JRST QUERY
|
||||
CAIN A,"N
|
||||
JRST LOAD
|
||||
CAIE A,";
|
||||
CAIN A,"+
|
||||
JRST PLUS
|
||||
CAIN A,"-
|
||||
JRST MINUS
|
||||
CAIN A,"L
|
||||
JRST LARGE
|
||||
CAIN A,"F
|
||||
JRST FACTOR
|
||||
CAIN A,40 ;space
|
||||
JRST STM2
|
||||
CAIN A,"/
|
||||
JRST DIVIDE
|
||||
CAIN A,"^
|
||||
JRST POWER
|
||||
CAIN A,"=
|
||||
JRST EQUAL
|
||||
CAIL A,"0
|
||||
CAILE A,"9
|
||||
JRST HUH ;Not recognised
|
||||
IMUL B,RADX
|
||||
ANDI A,177
|
||||
JRST @TYIDIS(A)
|
||||
TYIDIS: HUH ;^@
|
||||
HUH ;^A
|
||||
HUH ;^B
|
||||
HUH ;^C
|
||||
HUH ;^D
|
||||
HUH ;^E
|
||||
HUH ;^F
|
||||
KILL ;^G
|
||||
HUH ;^H
|
||||
HUH ;^I
|
||||
HUH ;^J
|
||||
HUH ;^K
|
||||
HUH ;^L
|
||||
HUH ;^M
|
||||
HUH ;^N
|
||||
HUH ;^O
|
||||
HUH ;^P
|
||||
HUH ;^Q
|
||||
HUH ;^R
|
||||
HUH ;^S
|
||||
HUH ;^T
|
||||
HUH ;^U
|
||||
HUH ;^V
|
||||
HUH ;^W
|
||||
HUH ;^X
|
||||
HUH ;^Y
|
||||
HUH ;^Z
|
||||
HUH ;^[
|
||||
HUH ;^\
|
||||
HUH ;^]
|
||||
HUH ;^^
|
||||
HUH ;^_
|
||||
STM2 ;sp
|
||||
HUH ;!
|
||||
HUH ;"
|
||||
HUH ;#
|
||||
HUH ;$
|
||||
HUH ;%
|
||||
HUH ;&
|
||||
HUH ;'
|
||||
HUH ;(
|
||||
HUH ;)
|
||||
TIMES ;*
|
||||
PLUS ;+
|
||||
HUH ;,
|
||||
MINUS ;-
|
||||
HUH ;.
|
||||
DIVIDE ;/
|
||||
NUMBER ;0
|
||||
NUMBER ;1
|
||||
NUMBER ;2
|
||||
NUMBER ;3
|
||||
NUMBER ;4
|
||||
NUMBER ;5
|
||||
NUMBER ;6
|
||||
NUMBER ;7
|
||||
NUMBER ;8
|
||||
NUMBER ;9
|
||||
HUH ;:
|
||||
HUH ;;
|
||||
HUH ;<
|
||||
EQUAL ;=
|
||||
HUH ;>
|
||||
INFO ;?
|
||||
|
||||
HUH ;@
|
||||
HUH ;A
|
||||
HUH ;B
|
||||
CLIST ;C
|
||||
DECIMA ;D
|
||||
HUH ;E
|
||||
FACTOR ;F
|
||||
HUH ;G
|
||||
QUERY ;H
|
||||
HUH ;I
|
||||
HUH ;J
|
||||
HUH ;K
|
||||
LARGE ;L
|
||||
HUH ;M
|
||||
LOAD ;N
|
||||
HUH ;O
|
||||
HUH ;P
|
||||
HUH ;Q
|
||||
RADSET ;R
|
||||
HUH ;S
|
||||
HUH ;T
|
||||
HUH ;U
|
||||
HUH ;V
|
||||
HUH ;W
|
||||
HUH ;X
|
||||
HUH ;Y
|
||||
HUH ;Z
|
||||
HUH ;[
|
||||
HUH ;\
|
||||
HUH ;]
|
||||
POWER ;^
|
||||
HUH ;_
|
||||
HUH ;`
|
||||
HUH ;a
|
||||
HUH ;b
|
||||
CLIST ;c
|
||||
DECIMAL ;d
|
||||
HUH ;e
|
||||
FACTOR ;f
|
||||
HUH ;g
|
||||
QUERY ;h
|
||||
HUH ;i
|
||||
HUH ;j
|
||||
HUH ;k
|
||||
LARGE ;l
|
||||
HUH ;m
|
||||
LOAD ;n
|
||||
HUH ;o
|
||||
HUH ;p
|
||||
HUH ;q
|
||||
RADSET ;r
|
||||
HUH ;s
|
||||
HUH ;t
|
||||
HUH ;u
|
||||
HUH ;v
|
||||
HUH ;w
|
||||
HUH ;x
|
||||
HUH ;y
|
||||
HUH ;z
|
||||
HUH ;{
|
||||
HUH ;|
|
||||
HUH ;}
|
||||
HUH ;~
|
||||
RESET ;rubout
|
||||
|
||||
NUMBER: IMUL B,RADX
|
||||
MUL C,RADX
|
||||
ADDI D,-"0(A)
|
||||
TLZE D,400000
|
||||
@@ -92,25 +186,36 @@ LOOP: PUSHJ P,TYI
|
||||
|
||||
INFO: PUSHJ P,INFOPN
|
||||
.IOT INFOC,1
|
||||
JUMPLE A,RESET
|
||||
JUMPL A,RESET
|
||||
CAIE A,3
|
||||
CAIN A,14
|
||||
JRST RESET
|
||||
.IOT TYOC,1
|
||||
JRST INFO+1
|
||||
|
||||
INFOPN: .SUSET [.SSNAM,,[SIXBIT/.INFO./]]
|
||||
.OPEN INFOC,[.UAI,,'DSK ? SIXBIT/FACTOR/ ? SIXBIT/ORDER/]
|
||||
INFOPN: .CALL [ SETZ
|
||||
SIXBIT /OPEN/
|
||||
,,[0,,INFOC]
|
||||
,,[SIXBIT /DSK/]
|
||||
,,[SIXBIT /FACTOR/]
|
||||
,,[SIXBIT /ORDER/]
|
||||
400000,,[SIXBIT /.INFO./]]
|
||||
JRST INFLOS
|
||||
POPJ P,
|
||||
CPOPJ: POPJ P,
|
||||
|
||||
INFLOS: SUB P,[1,,1]
|
||||
MOVE B,[440700,,[ASCIZ \CAN'T OPEN INFO FILE\]]
|
||||
MOVE B,[440700,,[ASCIZ \Can't open info file\]]
|
||||
JRST Q3
|
||||
|
||||
QUERY: PUSHJ P,INFOPN
|
||||
QUERY: MOVE B,[440700,,[ASCIZ/elp /]]
|
||||
PUSHJ P,OUT
|
||||
PUSHJ P,INFOPN
|
||||
.IOT TYIC,2
|
||||
PUSHJ P,CR
|
||||
CAIL 2,"0
|
||||
CAILE 2,"9
|
||||
JRST Q0
|
||||
MOVE 2,[440700,,[ASCIZ/ DIGIT/]]
|
||||
MOVE 2,[440700,,[ASCIZ/ digit/]]
|
||||
JRST Q3
|
||||
Q0: .IOT INFOC,1
|
||||
JUMPL A,Q1
|
||||
@@ -140,6 +245,11 @@ Q3: ILDB 1,2
|
||||
.IOT 2,1
|
||||
JRST .-3
|
||||
|
||||
OUT: ILDB A,B
|
||||
JUMPE A,CPOPJ
|
||||
.IOT TYOC,A
|
||||
JRST .-3
|
||||
|
||||
LOAD: MOVE B,M1
|
||||
MOVE C,M2
|
||||
JRST LOOP
|
||||
@@ -280,10 +390,14 @@ TYO: .IOT TYOC,A
|
||||
TYI: .IOT TYIC,A
|
||||
POPJ P,
|
||||
|
||||
PDL: BLOCK PDLL+1
|
||||
KILL: .BREAK 16,160000
|
||||
|
||||
VARIABLES
|
||||
CONSTANTS
|
||||
VARIABLES
|
||||
|
||||
END G0
|
||||
|
||||
PDL: BLOCK PDLL+1
|
||||
|
||||
PAT: BLOCK 100
|
||||
|
||||
END GO
|
||||
|
||||
Reference in New Issue
Block a user