mirror of
https://github.com/PDP-10/its.git
synced 2026-03-29 19:08:01 +00:00
5243 lines
88 KiB
Plaintext
5243 lines
88 KiB
Plaintext
|
||
TITLE DDT
|
||
|
||
NLEVS==7 ;LENGTH OF RING BUFFER OF .
|
||
NINFP==8 ;MAX NUM INF PROCEDURES
|
||
NBP==10 ;NUMBER OF BREAK POINTS
|
||
LPDL==140 ;MAX LENGTH PUSH DOWN LIST
|
||
BUFL==200 ;LENGTH OF I-O BUFFERS
|
||
|
||
F=0 ;FLAGS
|
||
P=1 ;PUSH DOWN
|
||
A=2 ;POINTERS TO TABLES, CORE, ETC.
|
||
B=3
|
||
C=4 ;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER
|
||
D=5 ;TRANSFER DATA
|
||
W1=6
|
||
W2=7
|
||
U=10 ;DDT'S USER NUMBER FOR CURRENT INF PROCEDURE
|
||
W3=11
|
||
I1=12
|
||
I2=13
|
||
I3=14
|
||
I4=15
|
||
W4=16
|
||
|
||
;LEFT HALF FLAGS
|
||
|
||
TIF==100000 ;TRUNCATE TO 18 BITS - SET BY SPACE OR COMMA
|
||
PTF==100 ; +, -, OR * HAS BEEN TYPED
|
||
COMF==200000 ;COMMA FLAG
|
||
CTF==400
|
||
SF==4 ;SYLLABLE FLAG
|
||
QF==1 ;QUANTITY TYPED IN TO WORD ASSEMBLER
|
||
|
||
CF==40 ;$ TYPED
|
||
CCF==400000 ;$$ TYPED
|
||
MF==2 ;MINUS SIGN TYPED IN
|
||
LTF==20 ;LETTER TYPED IN TO CURRENT SYLLABLE
|
||
ROF==10 ;REGISTER OPEN FLAG
|
||
STF==4000 ;! MODE
|
||
FAF==1000 ; < TYPED
|
||
SAF==2000 ; > TYPED
|
||
|
||
FPF==20000 ; . TYPED IN
|
||
FEF==10000 ; E FLAG
|
||
|
||
MLF==200 ;*FLAG
|
||
DVF==40000 ;DIVIDE FLAG
|
||
|
||
;TS SYMBOLS
|
||
|
||
TYIC==1
|
||
TYOC==2
|
||
USRI==3
|
||
USRO==4
|
||
UTIC==5
|
||
UTOC==6
|
||
LPTC==7
|
||
FDRC==10
|
||
COMC==11
|
||
ERRC==12
|
||
CLIC==13
|
||
CLAC==14
|
||
|
||
7TYPE=73000,,
|
||
CTYPE=74000,, ;TYPE EFF ADR AS CHAR
|
||
STRT=75000,,
|
||
OPNER=76000,,
|
||
TERR=77000,,
|
||
|
||
MINUUO=73
|
||
|
||
DEFINE TSOPEN A,B
|
||
.OPEN A,B
|
||
OPNER A,B
|
||
TERMIN
|
||
|
||
SYSGE==2
|
||
SNFUSER==60 ;FOREIGN USER SYSTEM DEVICE CODE
|
||
CLIBL==40. ;LENGTH OF SEND BUFFER
|
||
VLRTSL==40 ;MAXIMUN LENGTH OF VALRET STRING (WORDS)
|
||
|
||
BRKBIT==2000 ;BREAK BIT IN PIRQC
|
||
ILUADB==1000 ;ILL USER ADDRESS
|
||
BIOC==400 ;IO CHANNEL ERROR
|
||
VALBIT==200 ;VALRET "
|
||
SYSDDB==100 ;SYSTEM DEAD
|
||
SYSDBB==2,, ;SYSTEM BEING DEBUGGED
|
||
OIPBIT==400 ;ONE INSTRUCTION PROCEED PC BIT
|
||
OIPINT==4000 ; " " " INTERRUPT BIT
|
||
BCLI==400000 ;CLI BIT IN PIRQC
|
||
ILOPRB==40 ;ILLEGAL OPERATION
|
||
|
||
.ZZ==.
|
||
LOC 41
|
||
JSR UUOH
|
||
JSR TSINT
|
||
LOC .ZZ
|
||
|
||
DEFINE INFORM A,B
|
||
IF1,[PRINTX \A = B
|
||
\]TERMIN
|
||
|
||
;RIGHT HALF FLAGS
|
||
1RF==10
|
||
OUTPUT==4 ;OPDECODER FLAGS
|
||
|
||
CF1==400 ;OUTPUT 1 REGISTER AS CONSTANT
|
||
LF1==2000 ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT
|
||
Q2F==1 ;NUMBER TYPED AFTER
|
||
SBF==20
|
||
NAF==200 ;NEGATIVE ADDRESSES PERMISSABLE
|
||
POWF==4000 ;ARGUMENT FOR EXPONENT COMING
|
||
SLL==10000 ;STOP LOOKING FOR LOCALS
|
||
OPERF1=20000
|
||
OPERF2=40000
|
||
BPLF==2 ;BPLOC REF AS ADDR
|
||
PF==400000 ;PATCH FLAG
|
||
PRINTF==2 ;PRINT FLAG
|
||
SIXF==40 ;SIXBIT FLAG
|
||
|
||
GLOBAL==040000 ;GLOBAL SYMBOL
|
||
LOCAL==100000
|
||
PNAME==740000 ;PROGRAM NAME
|
||
DELI==200000 ;DELETE INPUT
|
||
DELO==400000 ;DELETE OUTPUT
|
||
|
||
;ERROR COMMENTS
|
||
|
||
;TMJ=TOO MANY JOBS
|
||
;INT=RIGHT HALF INTERUPT
|
||
;NML=NOT MY LOSER (LEFT HALF INT.)
|
||
;CKS=CHECK SUM ERROR
|
||
;EOF=END OF FILE ENCOUNTERED
|
||
;CFT=CAN'T FLUSH TTY
|
||
;COR=CANT GET MORE CORE
|
||
;JOB=NO CURRENT JOB
|
||
;UNF=UNFLAPPABLE (UDISMOUNT FAILED)
|
||
;DSN=DISOWN LOST
|
||
;TMS=TOO MANY UNDEFINED SYMS
|
||
;ILUUO=ILLEGAL UUO EXECUTED IN DDT
|
||
;LOGIN=YOU ARE NOT LOGGED IN
|
||
;PUR=TRIED TO WRITE IN READ ONLY CORE
|
||
TOKTRM: 0
|
||
MONMOD: 0 ;-1 IMPLIES MONITOR MODE
|
||
;0 IMPLIES DDT MODE
|
||
|
||
;NOTE CONTENTS OF THIS PAGE MUST BE LOCATED IN ADRESSES < 10000 OCTAL SO DDT
|
||
;REFERENCE HACK WORKS
|
||
MSK: -1 ;MASK FOR WORD+EFFECT SEARCHES
|
||
|
||
|
||
USRS:
|
||
UFUSR==.-USRS
|
||
(SIXBIT /USR/)
|
||
UUNAME==.-USRS
|
||
0
|
||
UJNAME==.-USRS
|
||
0
|
||
INTBIT==.-USRS ;USER INTERRUPT BIT
|
||
0
|
||
UINT==.-USRS ;PILEVEL INT STORAGE
|
||
0
|
||
UPIRQ==.-USRS ;PI RQS FOR THIS LOSER
|
||
0
|
||
PPC==.-USRS ;PROGRAM COUNTER
|
||
0
|
||
OPC==.-USRS ;OLD PC FOR BPT RESTORES
|
||
0
|
||
XECPC==.-USRS ;PC SAVE ON $X
|
||
0
|
||
UINTWD==.-USRS ;0=> RUNNING
|
||
;-1=>STOP ON RANDOM INT
|
||
;17,16 => XEC RETURN
|
||
;N<9 => BPT
|
||
;21 => LOADED, NOT YET STARTED
|
||
0
|
||
XINTWD==.-USRS ;SAVE UINTWD ON XEC
|
||
0
|
||
JTIME==.-USRS ;SEE FNJOB
|
||
0
|
||
FURN==.-USRS ;FOREIGN USER UNLESS ZERO
|
||
0
|
||
UIND==.-USRS ;SYSTEM INDEX
|
||
0
|
||
NBPTB==.-USRS ;-1 ON CONDITIONAL BPT BREAK 0 NORMAL
|
||
0
|
||
BPCPC==.-USRS ;PC SAVE ON CONDITIONAL BPT
|
||
0
|
||
CBPPS==.-USRS ;RH UINT (SAVE BPT #) LH EFFECTIVE ADDRESS OF INSTRUCTION FOR PROCEED
|
||
0
|
||
INCNT==.-USRS ;COUNT FOR LIMITED PROCEED
|
||
0
|
||
BPLOC==.-USRS
|
||
0
|
||
B1ADR==.-USRS ;ADDRESS OF BPT(RH) LOC TO PRINT OUT (LH)
|
||
0
|
||
BPCON==.-USRS ;CONDITIONAL BPT INSTRUCTION
|
||
0
|
||
B1CNT==.-USRS ;PROCEED COUNT
|
||
0
|
||
B1INS==.-USRS ;INSTRUCTION REPLACED BY .BREAK
|
||
0
|
||
BPL==B1INS-B1ADR+1
|
||
BLOCK <NBP-1>*BPL
|
||
BPEND==.-USRS
|
||
STARTA==.-USRS ;STARTING ADDRESS
|
||
0
|
||
PERMIT==.-USRS ;-1 => EXECUTE VALRET STRINGS
|
||
0
|
||
PATCHL==.-USRS ;PATCH LOCN FOR PATCH FEATURE
|
||
0
|
||
VALCOM==.-USRS
|
||
0
|
||
JOBSYM==.-USRS ;LEAVE JOBSYM LAST
|
||
0
|
||
USRLNG==.-USRS
|
||
REPEAT NINFP-1,[
|
||
(SIXBIT /USR/)
|
||
BLOCK USRLNG-1]
|
||
|
||
USREND:
|
||
|
||
L=USRLNG ;LIKE ITS
|
||
|
||
INFORM [STORAGE PER LOSER]\USRLNG
|
||
|
||
|
||
|
||
IFILE: (SIXBIT /DSK/)
|
||
.FILE:
|
||
FILN1: SIXBIT /@/
|
||
FILN2: SIXBIT /BIN/
|
||
PCROCK: 0 ;FLAG TO DELETE PFILE ALSO CAUSES .FDELE TO WIN
|
||
0 ;SNAME STORED HERE
|
||
|
||
;THESE GO INTO 50-53
|
||
SFILN1: 0 ;FIRST NAME
|
||
NEWFIL: 0 ;CURRENT VERSION
|
||
SFILN2: 0 ;AOSE OF NAEM (TECO WRITES THIS FOR NEW VERSION)
|
||
OLDFIL: 0 ;PREVIOUS NEWFIL (USED FOR DELETE)
|
||
|
||
|
||
CLGAGN: 5 ;MASK FOR ALLOWING RECEIPT OF :SENDS
|
||
;1.1 OTHER USERS' HACTRNS
|
||
;1.2 " " INFERIORS
|
||
;1.3 YOUR HACTRN
|
||
;1.4 " INFERIORS
|
||
|
||
BUGI: (SIXBIT /COM/)
|
||
.
|
||
SIXBIT /MAIL/
|
||
BUGO: 1,,(SIXBIT /COM/)
|
||
.
|
||
SIXBIT /MAIL/
|
||
|
||
WFILE: 1,,(SIXBIT /LPT/) ;INIT TO LPT
|
||
SIXBIT /WALL/
|
||
SIXBIT /PAPER/
|
||
0
|
||
0 ;SNAME GOES HERE
|
||
|
||
UUOH: 0
|
||
PUSH P,A
|
||
PUSH P,D
|
||
LDB D,[331100,,40]
|
||
CAIGE D,MINUUO
|
||
MOVEI D,100
|
||
SKIPL UUOTAB-MINUUO(D)
|
||
JRST @UUOTAB-MINUUO(D)
|
||
UUOH2: MOVEI P,PS
|
||
PUSHJ P,ERTTY ;SAVE TTYFLG IF NOT ALREADY SAVED
|
||
JRST @UUOTAB-MINUUO(D)
|
||
|
||
UERFLN: SIXBIT / ERR/
|
||
2
|
||
UERFLC: .
|
||
|
||
PNTR: INST
|
||
CHP: 0
|
||
TXT: BLOCK 2
|
||
|
||
SAVPDL: 0
|
||
BTAB: FOO=44
|
||
REPEAT 4,[(FOO_12.+1100)TBL
|
||
FOO=FOO-11
|
||
]
|
||
|
||
ININST: 0
|
||
LIMBO: 0 ;LAST CHAR READ
|
||
UNRCHF: 0 ;-1 => RE READ LAST CHAR
|
||
UNECHF: 0 ;-1 WHEN UNRCHF .EQ. -1 => ECHO CHARACTER ON RE-READ
|
||
PS: BLOCK LPDL
|
||
|
||
MSNAM: 0 ;SYSTEM NAME FOR NEW JOBS
|
||
SILNT: 0 ;SUPPRESS TYPEOUT IF -1
|
||
PDUMPB: SETZ ;USED FOR PURE DUMP
|
||
SIXBIT /PDUMP/
|
||
[USRI]
|
||
[UTOC]
|
||
400000,,[-4,,NCVARB]
|
||
|
||
|
||
NCVARB: BLOCK 4
|
||
|
||
CU: 0 ;CURRENT PROCEDURE INDEX
|
||
|
||
NJ1: @ ;COUNT USED FOR DETERMINING MOST RECENT JOB (SEE FNJOB)
|
||
NJ2: @ ;COUNT USED FOR DETERMINING LEAST RECENT JOB (")
|
||
|
||
SIXP: .-.,,SFILN2 ;EXTRA WORD FOR CARRYS OFF TOP
|
||
REPEAT 7,<.RPCNT*6>_14+600,,SFILN2
|
||
HSRAD: '9 ;DIGIT TO CARRY ON, (RADIX-1)
|
||
SFILE: 6,,(SIXBIT /SYS/)
|
||
SIXBIT /TS/
|
||
SYSN2: SIXBIT /@/
|
||
|
||
VILDBP: 0
|
||
UVCOM: BLOCK VLRTSL+1 ;VALRET STRING BUFFER
|
||
|
||
CTEM1: 0
|
||
CTEM: 0
|
||
0 ;MUST BE HERE
|
||
|
||
CTTABF: REPEAT 2,[(SIXBIT /*/)
|
||
REPEAT 2,SIXBIT /*/
|
||
]
|
||
|
||
PFLUSH: 0 ;-1 => QUIT READING FILE
|
||
MORPOS: 24. ;LINE ON SCREEN TO TYPE --MORE--
|
||
|
||
LFILN: SIXBIT /0 DSK/
|
||
BLOCK 5
|
||
|
||
LSNAM: 0 ;LAST SNAME IN CASE RESTORE DESIRED
|
||
SRFLAG: 0 ;FLAG TO DO ABOVE AT UOPNER IF .OPEN LOSES
|
||
|
||
GETTY: 0
|
||
|
||
IOCF: 0
|
||
0
|
||
0
|
||
.
|
||
SIXBIT /FOOBAZ/
|
||
0
|
||
|
||
|
||
I40: 0
|
||
IPC: 0
|
||
TSUSRF: (SIXBIT /USR/)
|
||
TUNAME: 0
|
||
TJNAME: 0
|
||
|
||
THFLAG: 0 ;-1 IF NOT BEEN THROUGH ALL USERS
|
||
|
||
UBUF:
|
||
USRBF: BLOCK BUFL
|
||
0 ;HA HA
|
||
|
||
TEMT: 0
|
||
|
||
LLUP1: 0 ;END TEST FOR MATCH SEARCHES
|
||
;INSERT IMPURE CODE HERE
|
||
MARCON: 0 ;3.3 3.1 => STOP ON +,-,WRITE ONLY
|
||
BADR: 0
|
||
|
||
CPTCHL: 0
|
||
CPTCHM: 0
|
||
|
||
MAXUSET: 0 ;MAX USET ALLOWED, SET AT INITIALIZATION
|
||
|
||
ISYMP: IISYM-INISYE,,IISYM ;-N,,IISYM, CHANGED AT ISLUP
|
||
ISYME: INISYE ;CHANGED AT ISLUP
|
||
|
||
INTUSR: 0 ;USER WAITING FOR INTERRUPT
|
||
WRD: 0 ;CURRENT VAL OF WORD ASSEM
|
||
WRD2: 0 ;ARG FOLLOWING ALT-MODE
|
||
WRDO2: 0 ;LIKE WRD2 BUT UPDATED IN OCTAL
|
||
PRNC: 0
|
||
FRASE: 0 ;VALUE OF FIELD FOR PRECEDENCE OF * OR '
|
||
SYL: 0 ;CURRENT NUMERIC SYL
|
||
DEN: 0
|
||
ZLWT: 0
|
||
TEM2: 0
|
||
LPTRST: 0
|
||
LPTFLG: 0
|
||
TTYFLG: -1
|
||
STYFLG: 0 ;SAVED TTYFLG DURING ERR PRINT, ETC
|
||
STYSW: -1 ;.GE. 0 => TTYFLG SAVED
|
||
ESTUT: 0 ;TEM USED TO CHECK FOR UNDEF IN CURRENT WRD
|
||
FSV: 0
|
||
FRACT: 0
|
||
FPWR: 0
|
||
FTERM: 0
|
||
FH: 0
|
||
FL: 0
|
||
SYM: 0 ;ARGUMENT TO EVAL
|
||
DEFV: 0 ;VALUE OF "FIRST" ARG (<)
|
||
ULIMIT: 0 ;VAL OF "SECOND ARG (1<2>)
|
||
LLOC: 0
|
||
LLOCO: 0 ;LAST LOCATION OPENED AS POINT
|
||
PLCR: 0
|
||
LOCBF: BLOCK NLEVS
|
||
|
||
34SAV: 0 ;$X
|
||
.BREAK 16,
|
||
.BREAK 17,
|
||
|
||
INST: 0
|
||
LWT: 0
|
||
TEM: 0
|
||
TEM1: 0
|
||
DSSAV: SYM
|
||
SPTS: JRST TOUT
|
||
SATPP: .+1
|
||
SATPT: 0
|
||
|
||
AUTOPI: 0
|
||
|
||
;CURRENT MODE
|
||
SCH: 0 ;HLTW,TFLOT,SATP,ITEXO,PIN,FTOC
|
||
AR: 0
|
||
ODF: 0
|
||
|
||
SCHM: PIN ;PERMANENT MODE
|
||
ARM: PADSO
|
||
ODFM: 10
|
||
|
||
SCHMM: TFLOT ;MODE TO RETYP IN
|
||
ARMM: PADSO
|
||
ODFMM: 10
|
||
|
||
SARS: 0 ;0 => DDT SLEEPING -1 => DDT RUNNING
|
||
DDTTY: -1 ;-1 =>TTY IN DDT
|
||
DDINT: 0 ;-1 FLAG FOR INTERRUPT HAPPENED BETWEEN TTYRET AND RESTR2
|
||
TTYUSR: 0 ;USER INDEX GAVE TTY TO LAST
|
||
TEM3:
|
||
FRASE1: 0 ;SYL TO LEFT OF * OR '
|
||
SYSSW: 0
|
||
SYSDPS: 0
|
||
SUSMNG: 0
|
||
DDTSW: 0
|
||
XCRFSW: 0 ;-1 => DON'T TYPE CRLF WHEN PROCEDING
|
||
|
||
HIGH: 0
|
||
|
||
UNAME: 0
|
||
JNAME: 0
|
||
TTABF: BLOCK 6 ;MUST FOLLOW UNAME&JNAME FOR TRANAD
|
||
|
||
MAILF: SIXBIT / COM/
|
||
RUNAME: -1 ;REAL USER NAME
|
||
SIXBIT /MAIL/
|
||
RUNM1: -1
|
||
SIXBIT /OMAIL/
|
||
|
||
OMAILF: SIXBIT / COM/
|
||
RUNM2: -1
|
||
SIXBIT /OMAIL/
|
||
0
|
||
|
||
|
||
FFILE: 0
|
||
SIXBIT /.FILE./
|
||
SIXBIT /(DIR)/
|
||
|
||
AC0: BLOCK 20
|
||
PRGM: 0
|
||
|
||
BOYD: .-ESTU,,.
|
||
LUDST==100
|
||
UDST: BLOCK LUDST
|
||
UDSTE:
|
||
ESTU: UDSTE
|
||
|
||
SATPC: 0
|
||
DGO: 0
|
||
UCHNLO: 0 ;0 => NO USER OPEN
|
||
;+ => FOREIGN USER
|
||
;-1 => INFERIOR
|
||
|
||
FETCH4: D
|
||
|
||
$X=34
|
||
SYMTOP: INISYE ;PTR TO FIRST FREE REG. AFTER SYMTAB'S
|
||
|
||
|
||
PFILE: SIXBIT / COM/
|
||
PFILE1: -1
|
||
SIXBIT /MAIL/
|
||
0 ;WIN ON DELETE
|
||
0 ;LEAVE ROOM FOR SNAME
|
||
|
||
PAT:
|
||
PATCH: BLOCK 100
|
||
|
||
IOCX: .STATUS I4 ;AC FIELD WRITTEN AT IOCBRK
|
||
|
||
STRB: 440700,,TEM
|
||
NM1A: MOVEI W2,0 ;USED TO FORM FLOATING NUMBS.
|
||
|
||
CLIFNB: 3,,(SIXBIT /CLI/) ;USED FOR :SEND CORE LINK
|
||
CLIFN1: .
|
||
SIXBIT /HACTRN/
|
||
|
||
CLUFNB: (SIXBIT /USR/)
|
||
CLUFN1: .
|
||
SIXBIT /HACTRN/
|
||
|
||
CLIBUF: BLOCK CLIBL
|
||
|
||
ERROPN: (SIXBIT /ERR/)
|
||
3
|
||
0 ;STATUS WORD
|
||
HOLPPX: POP P,.(D) ;USED BY HOLE
|
||
TEXCT2: LSHC D,7
|
||
COMWDX: HRLI D,. ;USED IN COMMA EVAL
|
||
|
||
CLABRP: 100,,CLGAGN ;CORE LINK THINGS
|
||
CLABUF: BLOCK CLIBL+2
|
||
0
|
||
CLABL==.-CLABUF
|
||
CLAFNB: 2,,(SIXBIT /CLA/)
|
||
|
||
.ZZ0==.
|
||
|
||
MINPUR==<.+1777>/2000
|
||
|
||
LOC 2000*MINPUR
|
||
DDT: .CLOSE 3, ;CHANNEL USED BY RANDOM LOADER
|
||
; MOVEI U,0 ;INDICATE NO CURRENT JOB
|
||
SETZM UCHNLO ;INDICATE NO USER CHANNEL OPEN
|
||
MOVE A,[202,,727766]
|
||
HRROI B,1_<TYIC>+1_<COMC>
|
||
.SETM2 A, ;SET INTERRUPT MASKS
|
||
MOVNI D,1
|
||
.UPISET D, ;ENABLE INTERRUPTS
|
||
MOVEI P,PS ;SET UP PDL POINTER
|
||
PUSHJ P,%RESET
|
||
.SUSET [.RUNAME,,D] ;GET UNAME AND SALT AWAY
|
||
MOVEM D,UNAME
|
||
MOVEM D,RUNAME
|
||
MOVEM D,MSNAM ;INITIALIZE MASTER SYSTEM NAME
|
||
.SUSET [.RJNAME,,JNAME] ;GET JNAME
|
||
PUSHJ P,FORMF ;CLEAR SCREEN IF GE CONSOLE
|
||
|
||
;NOW TO GET INITIAL SYMS FROM SYSTEM
|
||
|
||
HRROI A,INISYE ;START LOADING SYMS AT INISYE
|
||
MOVE B,[SIXBIT /CALLS/] ;FIRST THE REGULAR SYMS
|
||
PUSHJ P,GTSYS ;INPUT THEM (UPDATES A)
|
||
HRROS W1,A ;LOCATION OF BEGINNING OF USYMS
|
||
MOVE B,[SIXBIT /USYMS/] ;.UPC,.VAL, .TTY, ETC.
|
||
PUSHJ P,GTSYS ;GET THE SYMS (AGAIN UPDATES A)
|
||
HRRZM A,SYMTOP ;MARK END OF INITIAL SYMBOL AREA
|
||
HRRZM A,ISYME ;" " "
|
||
MOVSI A,-INISYE(A) ;GET SWAPPED TOTAL NUMBER OF SYMS INPUT
|
||
MOVNS A ;NEGATE A
|
||
ADDM A,ISYMP ;UPDATE POINTER TO INITIAL SYMS
|
||
LDB A,[14300,,D] ;GET NUMBER OF USYMS
|
||
MOVEI B,-<3+1>(A) ;DE-COMPENSATE FOR .IOC, .IOS, .IOP; GET VALUE OF LAST REGULAR ONE
|
||
MOVEM B,MAXUSET ;SAVE AS MAXIMUM USET
|
||
MOVSI A,1(A)
|
||
XOR A,W1 ;LH(W1)=-1
|
||
MOVEI W1,760000 ;MAGIC RELOCATION FOR .USET SYMS
|
||
ADDM W1,1(A) ;RELOCATE A SYMBOL (ACTUALLY ITS VALUE)
|
||
AOBJN A,[AOJA A,.-1] ;DO IT FOR THE USYMS
|
||
STRT [SIXBIT /DDT./]
|
||
STRT [.FNAM2+(SIXBIT /./)] ;TYPE OUT DDT VERSION NUMBER
|
||
.DIETIM D, ;GET TIME TILL SYS DOWN
|
||
JUMPL D,DD1C ;NEGATIVE=>FOREVER
|
||
7TYPE [ASCIZ /SYS DOWN IN /]
|
||
IDIVI D,30.
|
||
PUSHJ P,TMPT ;TYPE TIME TILL SYS DOWN
|
||
DD1C: PUSHJ P,CRF
|
||
.OPEN FDRC,[SIXBIT / SYSSYSTEMMAIL/] ;SEE IF THERE IS ANY SYSTEM MAIL
|
||
JRST DD1B ;NO
|
||
JRST CTLF1 ;YES, TYPE IT OUT
|
||
|
||
;ROUTINE CALLED TWICE DURING READING IN OF INITIAL SYMS FROM SYSTEM
|
||
|
||
GTSYS: .GETSYS A, ;SHOULDN'T SKIP (LH(A)=-1)
|
||
HLRE D,A ;GET -<NUMBER OF WORDS NEEDED>
|
||
MOVNS C,D ;NUMBER OF WORDS (STILL IN D WHEN GTSYS RETURNS)
|
||
ADDI C,(A) ;GET 1+<LAST LOCATION FOR SYMS>
|
||
LSH C,-10. ;CONVERT TO NUMBER OF BLOCKS
|
||
.CORE 1(C) ;GET CORE
|
||
JRST .-1 ;WHAT ELSE TO DO? (THIS PART OF INITIALIZATION)
|
||
.GETSYS A, ;THIS TIME FOR REAL
|
||
TERR (SIXBIT /BRF/)
|
||
POPJ P,
|
||
|
||
;DDT DISPATCH IS ORDERED BY REQUIREMENTS OF EVALUATION,CALL INS,ETC.
|
||
; EVAL? TYPE OF CALL
|
||
;?=>? NO EVAL JRST
|
||
;MULT=>SPACE-1 EVAL WITHIN FIELD "
|
||
;SPACE=>RPRN EVAL WORD "
|
||
;RPRN+1=>CARR " PUSHJ
|
||
;CARR+1=> " "
|
||
; DISPATCHES ABOVE "CARR" DO NOT ALLOW UNDEFINED
|
||
; SYMBOLS IN WORD
|
||
|
||
DD1A:
|
||
DD1: PUSHJ P,CRF
|
||
DD1B: TLZ F,ROF
|
||
MOVE D,[SCHM,,SCH]
|
||
BLT D,ODF
|
||
DD2: MOVEI P,PS
|
||
SETZM PRNC ;PARENTHESES COUNT
|
||
LIS: MOVE D,ESTU
|
||
MOVEM D,ESTUT
|
||
LISA: TDZ F,[(,-1-ROF-STF)LF1+CF1+SBF+2] ;LEAVE REGISTER OPENED,TYPEOUT SUPPRESSED
|
||
LISB: TDZ F,[(,-1-ROF-STF-FAF-SAF)NAF]
|
||
SETZM,WRD
|
||
LIS1: SETZM,FRASE
|
||
LIS2: MOVEI D,1
|
||
MOVEM D,FRASE1
|
||
TLZ F,MLF+DVF
|
||
L1: TLZ F,CF+CCF+SF+FPF ;TURN OFF CONTROL, SYL, PERIOD FLAG
|
||
SETZM,SYL
|
||
L1RPR: SETZM,SYM
|
||
MOVSI D,(50*50*50*50*50*50)
|
||
MOVEM D,TEM ;INIT SYMBOL COUNTER
|
||
SETZM,DEN
|
||
L2QAN: SETZM,WRD2
|
||
SETZM WRDO2 ;ALSO CLEAR WORD UPDATED IN OCTAL
|
||
TRZ F,Q2F ;CLEAR "NUMBER TYPED AFTER ALTMODE" FLAG
|
||
L2: SKIPGE MONMOD
|
||
JRST NCOM
|
||
PUSHJ P,IN ;PICK UP CHARACTER
|
||
TLNE F,CF ;CONTROL FLAG
|
||
JRST,L21
|
||
CAIG D,"Z ;Z
|
||
CAIGE D,"A ;A
|
||
L21: SKIPA A,D
|
||
JRST,LET
|
||
ROT A,-1
|
||
HLRZ C,DISP(A)
|
||
SKIPGE A
|
||
HRRZ C,DISP(A)
|
||
MOVEI A,0 ;FOR HACKS THAT DO "ADDI FOO-BAR" AND FALL THRU
|
||
CAIGE C,MULT
|
||
JRST (C)
|
||
CAIN C,MULT ;LET * WORK LIKE : IN SOME CASES
|
||
TLNE F,SF+QF
|
||
JRST L211
|
||
NCOM: SKIPGE MONMOD
|
||
CTYPE ":
|
||
PUSHJ P,RTOKEN ;CLEARS A, REACHED FROM TAG
|
||
JUMPE B,DD1 ;NULL COMMAND
|
||
NCLOOP: CAMN B,NCTAB(A)
|
||
JRST NCL2
|
||
CAIGE A,NLCOM-1
|
||
AOJA A,NCLOOP
|
||
MOVEM B,SYSN2
|
||
TDO F,[LTF,,SIXF]
|
||
JRST ACTRLH ;TRY ^H'ING IT
|
||
|
||
NCL2: HRRZ A,NCTB2(A)
|
||
JRST (A)
|
||
|
||
;READ TOKEN (6BIT)
|
||
RTOKEN: CLEARB A,B
|
||
MOVE C,[440600,,B]
|
||
RTOK2: PUSHJ P,IN
|
||
RTOK4: CAIN D,": ;DON'T SCREW LOSER TYPING ":" IN MON MODE
|
||
JRST RTOK2
|
||
CAIN D,33
|
||
JRST RTCOM ;COMMENT
|
||
CAIN D,^Q
|
||
JRST RTOK1
|
||
CAILE D,"_
|
||
JRST ERR
|
||
SUBI D,40
|
||
JUMPG D,RTOK3
|
||
SETZM TOKTRM
|
||
JUMPE D,CPOPJ
|
||
SETOM TOKTRM
|
||
POPJ P,
|
||
|
||
RTOK1: PUSHJ P,IIN
|
||
SUBI D,40
|
||
RTOK3: TLNE C,770000
|
||
IDPB D,C
|
||
JRST RTOK2
|
||
|
||
RTCOM: PUSHJ P,IIN
|
||
CAIE D,33
|
||
JRST RTCOM
|
||
JRST RTOK4
|
||
|
||
RONUM: TLZ F,QF
|
||
MOVEI B,0
|
||
RONUM2: PUSHJ P,IIN
|
||
SUBI D,60
|
||
JUMPL D,RONUM4
|
||
CAILE D,11
|
||
JRST RONUM4
|
||
ASH B,B
|
||
ADD B,D
|
||
TLO F,QF
|
||
JRST RONUM2
|
||
RONUM4: TLNE F,QF
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
NCTAB: SIXBIT /?/
|
||
SIXBIT /DISOWN/
|
||
SIXBIT /LOGOUT/
|
||
SIXBIT /SL/
|
||
SIXBIT /SYMLOD/
|
||
SIXBIT /V/ ;SAME AS BUT COMMAND NOT INTERPRETED AT IO LEVEL
|
||
SIXBIT /VP/ ;TURN ON TYPEOUT AND PROCEEDS JOB
|
||
SIXBIT /XFILE/
|
||
SIXBIT /CR/
|
||
SIXBIT /ED/
|
||
SIXBIT /ST/ ;SPECIFY CURRENT FN1 FN2 TO DDT
|
||
SIXBIT /LOAD/
|
||
SIXBIT /DUMP/
|
||
SIXBIT /PDUMP/
|
||
SIXBIT /KILL/
|
||
SIXBIT /LOGIN/
|
||
SIXBIT /SEND/
|
||
SIXBIT /GAG/
|
||
SIXBIT /BUG/
|
||
SIXBIT /MAIL/
|
||
SIXBIT /JOB/
|
||
SIXBIT /LISTJ/
|
||
SIXBIT /FLAP/
|
||
SIXBIT /LISTF/
|
||
SIXBIT /DELETE/
|
||
SIXBIT /PRINT/
|
||
SIXBIT /LINK/
|
||
SIXBIT /ERR/
|
||
SIXBIT /DDT/
|
||
SIXBIT /MON/
|
||
SIXBIT /START/
|
||
SIXBIT /CONTIN/
|
||
SIXBIT /PROCED/
|
||
SIXBIT /VK/ ;TURNS ON TYPEOUT AND GOES KERCHINK
|
||
SIXBIT /WALLP/
|
||
SIXBIT /SLIST/
|
||
NLCOM==.-NCTAB
|
||
|
||
NCTB2: [ASCIZ /LIST MOST COMMANDS/],,QSN
|
||
[ASCIZ /DISOWN CURRENT JOB/],,DISOWN
|
||
[ASCIZ /AUTO-EXPUNGE/],,LOGOUT
|
||
CSMI
|
||
[ASCIZ /LOAD SYMBOLS ONLY/],,CSMI
|
||
VHACK
|
||
VPHACK ;DOES ^V$P WITHOUT PRINTING
|
||
[ASCIZ /EXECUTE FILE AS DDT COMMANDS/],,XFILE
|
||
[ASCIZ /ENTER TECO AND CREATE FILE/],,CRFIL
|
||
[ASCIZ /ENTER TECO AND EDIT/],,EDFIL
|
||
STFIL
|
||
[ASCIZ /LOAD FROM FOLLOWING FILE INTO CURRENT JOB/],,LOAD
|
||
[ASCIZ /DUMP INTO " " FROM " "/],,DUMP
|
||
[ASCIZ /PURE DUMP/],,PDUMP
|
||
[ASCIZ /KILL CURRENT JOB/],,JKILL
|
||
[ASCIZ /LOGIN AS FOLLOWING NAME/],,NLOGIN
|
||
[ASCIZ /SEND MESSAGE/],,CLSEND
|
||
[ASCIZ /CONTROL RECEIPT OF MESSAGES/],,CLGAG
|
||
[ASCIZ /DOCUMENT BUG/],,BUG
|
||
[ASCIZ /ADD TO USER'S MAIL FILE/],,MAIL
|
||
[ASCIZ /CREATE OR SELECT JOB/],,JJOB
|
||
[ASCIZ /LIST JOBS/],,ULIST
|
||
[ASCIZ /FLAP DECTAPE, FOLLOW BY DRIVE #/],,FFLAP
|
||
[ASCIZ /LIST FILES/],,LLISTF
|
||
[ASCIZ /DELETE FILE/],,CTLO
|
||
[ASCIZ /PRINT FILE/],,PRINT
|
||
[ASCIZ /CREATE LINK/],,LINK
|
||
[ASCIZ /IOC ERROR STATUS/],,ERRSTS
|
||
[ASCIZ /ENTER DDT MODE/],,EDDTM
|
||
[ASCIZ /ENTER MONITOR MODE/],,EMONM
|
||
[ASCIZ /START INFERIOR/],,AAGO
|
||
[ASCIZ /CONTINUE GIVING INF. TTY/],,PROCED
|
||
[ASCIZ /PROCEDE INF., LEAVE TTY WITH DDT/],,CTLP
|
||
VKHACK
|
||
[ASCIZ / TO SPECIFIED FILE/],,WALLP
|
||
[ASCIZ /LIST SYMBOLS OF USER JOB/],,SLIST
|
||
IFN .-NCTB2-NLCOM,[PRINTC /NCTB2 LOSES
|
||
/]
|
||
|
||
EDDTM: SETZM MONMOD
|
||
JRST ALTL2
|
||
|
||
EMONM: SETOM MONMOD
|
||
JRST DD1
|
||
|
||
VHACK: SETOM TTYFLG
|
||
JRST DD1B
|
||
|
||
VPHACK: SETOM TTYFLG
|
||
SKIPE ININST ;IF GETTING INPUT FROM FILE OR VALRET,
|
||
SETOM XCRFSW ;THEN TELL PROCEDER NOT TO TYPE CRLF
|
||
JRST PROCED
|
||
|
||
VKHACK: SETOM TTYFLG ; :VK
|
||
JRST ALTL2
|
||
|
||
QSN: PUSHJ P,FORMF
|
||
PUSHJ P,MORFIN
|
||
MOVEI A,0
|
||
QSN0: HLRZ B,NCTB2(A)
|
||
JUMPE B,QSNLP
|
||
PUSHJ P,MORFLS
|
||
JRST ALTL2
|
||
MOVE C,[440600,,NCTAB(A)]
|
||
QSN1: ILDB D,C
|
||
JUMPE D,QSN2
|
||
ADDI D,40
|
||
PUSHJ P,TOUT
|
||
TLNE C,770000
|
||
JRST QSN1
|
||
QSN2: 7TYPE [ASCIZ / = /]
|
||
7TYPE (B)
|
||
PUSHJ P,CRF
|
||
QSNLP: CAIGE A,NLCOM-1
|
||
AOJA A,QSN0
|
||
JRST ALTL2
|
||
|
||
NLOGIN: PUSHJ P,RTOKEN
|
||
MOVEM B,UNAME
|
||
JRST NLOGI2
|
||
|
||
JJOB: SKIPE TOKTRM
|
||
JRST ALTJ9
|
||
PUSHJ P,RTOKEN
|
||
MOVE D,B
|
||
MOVEM D,JNAME
|
||
JRST ALTJJ
|
||
|
||
FFLAP: PUSHJ P,RONUM
|
||
JRST ERR
|
||
MOVE D,B
|
||
JRST FFLAP2
|
||
|
||
LLISTF: SKIPE TOKTRM
|
||
JRST LLIST2
|
||
PUSHJ P,RTOKEN
|
||
MOVS D,B
|
||
JRST CTLF0
|
||
|
||
LLIST2: MOVE D,IFILE
|
||
JRST CTLF0
|
||
|
||
JKILL: JUMPE U,JERR
|
||
JRST JKILL2
|
||
|
||
CLSEND: PUSHJ P,RTOKEN
|
||
MOVEM B,CLIFN1
|
||
MOVEM B,CLUFN1
|
||
.OPEN CLIC,CLUFNB
|
||
JRST CLSND6 ;NOT LOGGED IN,TRY MAIL
|
||
MOVE C,[440700,,CLIBUF]
|
||
PUSHJ P,BUGTIM ;RECORD TIME OF MESSAGE
|
||
CLSND0: PUSHJ P,BUGRD ;GOBBLE TEXT
|
||
SKIPA D,[CLSND0]
|
||
MOVEI D,ALTL2
|
||
TSOPEN CLIC,CLIFNB
|
||
MOVE A,[-CLIBL,,CLIBUF]
|
||
.IOT CLIC,A
|
||
.CLOSE CLIC,
|
||
MOVE C,[10700,,CLIBUF-1] ;RESET PTR FOR NEXT BUFFERLOAD
|
||
JRST (D)
|
||
|
||
BUGRD:
|
||
CLSND1: PUSHJ P,IN
|
||
CAIN D,177
|
||
JRST CLSRUB
|
||
CAIE D,14
|
||
CAIN D,^C
|
||
JRST CLSND2
|
||
CLSND5: IDPB D,C
|
||
CAMN C,[10700,,CLIBUF+CLIBL-1] ;LEAVE SPACE FOR ^C
|
||
JRST CLSND
|
||
CAIE D,15
|
||
JRST CLSND1
|
||
PUSHJ P,CRF
|
||
MOVEI D,12
|
||
JRST CLSND5
|
||
|
||
CLSND2: AOS (P)
|
||
CLSND: PUSHJ P,CRF
|
||
MOVEI D,^C
|
||
.CLSN1: IDPB D,C
|
||
TLNE C,760000
|
||
JRST .CLSN1
|
||
POPJ P,
|
||
|
||
CLSRUB: CAMN C,[10700,,CLIBUF-1] ;BEGINNING OF BUFFER
|
||
JRST ERR
|
||
LDB D,C
|
||
PUSHJ P,TOUT ;ECHO CHARACTER FLUSHED
|
||
ADD C,[70000,,]
|
||
TLNE C,400000 ;DECREMENT BYTE PNTR
|
||
SUB C,[430000,,1]
|
||
JRST CLSND1
|
||
|
||
CLGAG: PUSHJ P,RONUM
|
||
JRST ERR
|
||
MOVEM B,CLGAGN
|
||
JRST ALTL2
|
||
|
||
CLSND6: 7TYPE [ASCIZ /(MAIL)/] ;TRY OTHER
|
||
JRST MAIL1
|
||
|
||
BUG: SKIPA B,[SIXBIT /SYS/]
|
||
MAIL: PUSHJ P,RTOKEN
|
||
MAIL1: MOVEM B,BUGI+1
|
||
MOVEM B,BUGO+1
|
||
MOVE C,[10700,,CLIBUF-1] ;MUST BE 10700,, FOR RUBOUT END CHECK
|
||
MOVEI A,15
|
||
IDPB A,C
|
||
MOVEI A,12
|
||
IDPB A,C
|
||
MOVE A,RUNAME
|
||
JSP W1,6TO7
|
||
IDPB B,C
|
||
PUSHJ P,BUGSPC
|
||
PUSHJ P,BUGDAT
|
||
PUSHJ P,BUGTIM
|
||
MOVNI B,1
|
||
BUG3: PUSHJ P,BUGRD
|
||
TDZA A,A
|
||
MOVEI A,1 ;SUCCESSFUL END
|
||
JUMPE B,BUG4A ;ALREADY OPENED FILE
|
||
MOVEI B,0
|
||
TSOPEN UTOC,BUGO
|
||
BUG4A: MOVE C,[10700,,CLIBUF-1]
|
||
BUG4: ILDB D,C
|
||
CAIN D,^C
|
||
JRST BUG5
|
||
.IOT UTOC,D
|
||
JRST BUG4
|
||
|
||
BUG5: MOVE C,[10700,,CLIBUF-1] ;NEW BUFFER
|
||
JUMPE A,BUG3 ;READ MORE CRUFT
|
||
.OPEN UTIC,BUGI ;APPEND ORIGINAL FILE
|
||
JRST BUG7
|
||
BUG6: .IOT UTIC,D
|
||
.IOT UTOC,D
|
||
JUMPGE D,BUG6
|
||
BUG8: PUSHJ P,CLSU ;CLOSE OUT FILES
|
||
JRST ALTL2
|
||
|
||
BUG7: .IOT UTOC,[^C]
|
||
JRST BUG8
|
||
|
||
BUGDAT: .RDATE B,
|
||
ROT B,12. ;SHIFT TO MONTH,DAY,YEAR
|
||
MOVEI W1,"/
|
||
JRST BUGTL2
|
||
|
||
BUGTIM: .RTIME B,
|
||
MOVEI W1,":
|
||
BUGTL2: MOVEI D,0
|
||
BUGTL1: MOVEI A,0
|
||
ROTC A,6
|
||
ADDI A,40
|
||
IDPB A,C
|
||
JUMPE B,BUGSPC
|
||
MOVE A,W1
|
||
TRNE D,1
|
||
IDPB A,C
|
||
AOJA D,BUGTL1
|
||
|
||
BUGSPC: MOVEI A,40
|
||
IDPB A,C
|
||
POPJ P,
|
||
|
||
6TO7: MOVEI B,0
|
||
ROTC A,6
|
||
ADDI B,40
|
||
XCT (W1)
|
||
JUMPN A,6TO7
|
||
JRST 1(W1)
|
||
|
||
ERRSTS: MOVE D,WRD
|
||
TLNN F,QF
|
||
MOVE D,LWT
|
||
MOVEM D,ERROPN+2
|
||
.OPEN FDRC,ERROPN
|
||
JRST ERR
|
||
ERRST1: .IOT FDRC,D
|
||
CAIE D,14
|
||
CAIN D,^C
|
||
JRST RET
|
||
PUSHJ P,TOUT
|
||
JRST ERRST1
|
||
|
||
|
||
; :WALLP
|
||
;TURNS ON "LINE PRINTER" OUTPUT TO SPECIFIED FILE
|
||
|
||
WALLP: MOVE A,RUNAME ;GET REAL USER NAME,
|
||
AOJE A,LOGQ ;IF NOT LOGGED IN THEN COMPLAIN
|
||
MOVEI C,WFILE ;GET PNTR TO FILE NAMES
|
||
PUSHJ P,RRFL1 ;GET FILE DESCRIPTION
|
||
MOVEI A,1 ;MODE FOR .OPEN
|
||
HRLM A,WFILE
|
||
SETZM LPTFLG ;.OPEN MAY LOSE
|
||
SETOM SRFLAG ;SET TO RESTORE SNAME IF .OPEN LOSES
|
||
TSOPEN LPTC,IFILE
|
||
SETOM LPTFLG ;NOT OUTPUTTING
|
||
SETZM SRFLAG ;.OPEN WON CLEAR FLAG
|
||
.SUSET [.SSNAM,,LSNAM] ;RESTORE SNAME
|
||
JRST ALTL4 ;MAYBE TYPE *
|
||
|
||
SLIST: PUSHJ P,CRF ;TYPE OUT USERS SYMBOL TABLE
|
||
MOVE W2,JOBSYM(U)
|
||
JUMPGE W2,DD1 ;DONE?
|
||
HRRZ W1,W2
|
||
PUSHJ P,SPT ;SQUOZE SYMBOL PRINT
|
||
PUSHJ P,LCT
|
||
TRNN W2,16
|
||
PUSHJ P,CRF
|
||
ADD W2,[2,,2]
|
||
JRST SLIST+2
|
||
|
||
|
||
L211: MOVE D,SYL
|
||
TLZN F,LTF
|
||
JRST POWER
|
||
L4A: PUSHJ P,EVAL
|
||
JRST,UND1
|
||
L4: TLZE F,MF
|
||
MOVN D,D
|
||
TLNN F,SF
|
||
CAIE C,LPRN
|
||
JRST,.+2
|
||
JRST,LPRN
|
||
|
||
EXCH D,FRASE1
|
||
TLNN F,DVF
|
||
IMULB D,FRASE1
|
||
TLZE F,DVF
|
||
IDIVB D,FRASE1
|
||
CAIGE C,ASSEM
|
||
JRST (C) ;MULTIPLY OR DIVIDE
|
||
ADDB D,FRASE
|
||
CAIGE C,SPACE
|
||
JRST (C) ; + - @ ,
|
||
|
||
ADD D,WRD
|
||
TLNE F,TIF ;TRUNCATE INDICATOR FLAG
|
||
HLL D,WRD ;TRUNCATE
|
||
MOVEM D,WRD
|
||
TLNN F,QF
|
||
MOVE D,LWT
|
||
SETZM,A
|
||
JUMPE U,L5
|
||
MOVE W1,ESTUT ;CHECK TO SEE IF WRD CONTAINS UNDEF SYM
|
||
CAMN W1,ESTU
|
||
JRST L5
|
||
CAILE C,CARR
|
||
JRST ERR
|
||
L5: CAIG C,RPRN
|
||
JRST (C)
|
||
PUSH P,KILRET
|
||
SKIPN PRNC
|
||
JRST (C)
|
||
JRST ERR
|
||
|
||
UNDEF: TERR (SIXBIT /U/)
|
||
ERR: TERR
|
||
|
||
UUOTAB: U7TYP
|
||
UCTYPE
|
||
USTRT
|
||
SETZ UOPNER
|
||
SETZ UTERR
|
||
SETZ UUOH3 ;ILUUO
|
||
SETZ .UUOH2
|
||
|
||
UUOH3: PUSHJ P,COMPLN
|
||
MOVE D,40
|
||
HRRZ D,UUOH
|
||
JRST CPOPJ1
|
||
SKIPA A,[SIXBIT /ILUUO/]
|
||
UTERR: MOVSI A,@40
|
||
JRST ERR1
|
||
|
||
.UUOH2: MOVSS D
|
||
MOVE A,(D)
|
||
ERR1: MOVE W1,[440600,,A]
|
||
ERR2: ILDB D,W1
|
||
JUMPE D,ERR3
|
||
ADDI D,40
|
||
PUSHJ P,TOUT
|
||
JRST ERR2
|
||
|
||
ERR3: MOVEI D,"?
|
||
MOVEI A,(SIXBIT /U/)
|
||
CAIE A,@40
|
||
PUSHJ P,TOUT
|
||
ERR5: SETZM ININST ;QUIT VALRET OR XFILE
|
||
ERR4: MOVE B,STYFLG
|
||
MOVEM B,TTYFLG
|
||
SETOB B,STYSW ;INDICATE THAT TTYFLG HAS BEEN UNSAVED
|
||
.UPISET B,
|
||
|
||
RET: MOVEI P,PS
|
||
PUSHJ P,LCT ;COMMON RETURN FOR TAB;,JRST,LIS
|
||
JRST DD2
|
||
|
||
LOGQ: MOVE D,[[SIXBIT /LOGIN/],,101]
|
||
JRST UUOH2
|
||
|
||
UOPNER: LDB D,[270400,,40]
|
||
CAIN D,TYOC
|
||
JRST GASP
|
||
MOVEM D,UERFLC
|
||
.OPEN ERRC,UERFLN
|
||
JRST .-1
|
||
UOPNR2: .IOT ERRC,D
|
||
CAIE D,14
|
||
CAIN D,3
|
||
JRST UOPNR4
|
||
PUSHJ P,TOUT
|
||
JRST UOPNR2
|
||
|
||
UOPNR4: .CLOSE ERRC,
|
||
HRRZ D,40
|
||
HRRZ D,(D)
|
||
AOSN SRFLAG ;IF ROUTINE WANTED SNAME RESTORED
|
||
.SUSET [.SSNAM,,LSNAM] ;DO IT TO IT
|
||
TERR (D)
|
||
|
||
GASP: .LOGOUT ;FLAME OUT
|
||
.VALUE 0
|
||
JRST .-2
|
||
|
||
U7TYP: PUSH P,B
|
||
LDB B,[270400,,40]
|
||
MOVE A,40
|
||
HRLI A,440700
|
||
U7TY1: ILDB D,A
|
||
JUMPE D,7TYXIT
|
||
CAIN D,^C
|
||
JRST 7TYXIT
|
||
PUSHJ P,TOUT(B)
|
||
JRST U7TY1
|
||
|
||
7TYXIT: POP P,B
|
||
JRST UUOXIT
|
||
|
||
USTRT: MOVE A,40
|
||
HRLI A,440600
|
||
UUOH11: ILDB D,A
|
||
ADDI D,40
|
||
PUSHJ P,TOUT
|
||
CAIE D,".
|
||
JRST UUOH11
|
||
UUOXIT: POP P,D
|
||
POP P,A
|
||
JRST 2,@UUOH
|
||
|
||
UCTYPE: HRRZ D,40
|
||
PUSHJ P,TOUT
|
||
JRST UUOXIT
|
||
|
||
QIJERR: SKIPL UCHNLO ;ERR UNLESS INFERIOR OPEN
|
||
JRST JERR
|
||
QJERR: SKIPE UCHNLO ;ERR IF NO JOB OR SYS OPEN
|
||
POPJ P,
|
||
JERR: MOVE D,RUNAME
|
||
AOJE D,LOGQ ;COMPLAIN ABOUT NOT BEING LOGGED IN BEFORE ABOUT JOB
|
||
TERR (SIXBIT /JOB/)
|
||
|
||
UND1: JUMPE U,OPLOOK
|
||
MOVE A,ESTUT ;UNDEFINED SYM ASSEMBLER
|
||
PUSHJ P,EVAL2
|
||
CAIN C,ASSEM
|
||
TLNN F,ROF
|
||
JRST OPLOOK
|
||
LDB D,[(100)PRNC
|
||
JUMPN D,UNDEF
|
||
CAIE C,ASSEM
|
||
CTYPE "#
|
||
MOVN A,[(2)2]
|
||
ADDB A,ESTUT
|
||
CAMG A,BOYD
|
||
TERR (SIXBIT /TMS/)
|
||
MOVE D,SYM
|
||
TLO D,GLOBAL
|
||
MOVEM D,(A)
|
||
HRRZ D,LLOCO
|
||
TLNE F,MF
|
||
TLO D,400000
|
||
MOVEM D,1(A)
|
||
SETZI D,
|
||
JRST L4
|
||
|
||
CTLA: TLZ F,QF+LTF
|
||
PUSHJ P,OPLK2
|
||
JRST QUAN3 ;RET NO VALUE
|
||
TLZN F,CF ;HERE IF FOUND IN LOCAL SYM
|
||
JRST QUAN1 ;FOUND IN OPTABLE
|
||
JRST L2
|
||
|
||
QUESTN: JUMPE U,JERR
|
||
PUSHJ P,CRF ;LIST UNDEFINED SYMBOLS
|
||
MOVE A,ESTU
|
||
QUEST1: JUMPGE A,DD1
|
||
MOVE D, (A)
|
||
SKIPA W1,ESTU
|
||
|
||
QUEST2: ADD W1,[(2)2]
|
||
CAME D,(W1)
|
||
JRST QUEST2
|
||
|
||
QUEST3: CAME A,W1
|
||
JRST QUEST4
|
||
PUSHJ P,SPT
|
||
PUSHJ P,CRF
|
||
QUEST4: ADD A,[(2)2]
|
||
JRST QUEST1
|
||
|
||
OPLK3: JRST UNDEF
|
||
JRST L4 ;LOCAL SYM
|
||
JRST L4 ;OP SYM
|
||
|
||
OPLOOK: PUSH P,[OPLK3]
|
||
OPLK2: MOVE D,OPLK1
|
||
MOVEI W1,SYM
|
||
MOVE A,[(440700)TXT]
|
||
PUSHJ P,.SPT
|
||
OPLK1: IDPB D,A
|
||
|
||
;OPDECODER
|
||
|
||
OPEVAL: MOVEM P,SAVPDL
|
||
TRZA F,OUTPUT
|
||
OPTYPE: TRO F,OUTPUT
|
||
LSH D,-27.
|
||
MOVEM D,INST
|
||
MOVE D,[(440700)TXT
|
||
MOVEM D,CHP
|
||
DEC: TRZ F,1RF
|
||
SETZB A,W1
|
||
MOVE W2,BTAB
|
||
DC1: ILDB D,W2
|
||
CAILE D,40
|
||
CAIL D,73
|
||
SOJGE A,DC1
|
||
JUMPG A,DC1
|
||
SUBI D,40
|
||
JUMPE D,DECX
|
||
JUMPG D,DC2
|
||
DPB D,[(340500)PNTR]
|
||
TRZ D,-4
|
||
AOS D
|
||
DPB D,[(300600)PNTR]
|
||
TRNN F,OUTPUT
|
||
JRST DC6
|
||
LDB A,PNTR
|
||
JRST DC1
|
||
DC2: HRREI D,-33(D)
|
||
JUMPL D,DECT
|
||
MOVE W1,D
|
||
IDIVI W1,4
|
||
MOVE W2,BTAB(W2)
|
||
ADDI W2,(W1)
|
||
JRST DC1
|
||
|
||
DECT: TRNE F,OUTPUT
|
||
JRST O1CZ
|
||
ILDB W1,CHP
|
||
CAIE W1,133(D)
|
||
JRST LOSE
|
||
JRST DC1
|
||
|
||
DECX: TRNE F,OUTPUT
|
||
POPJ P,
|
||
ILDB W1,CHP
|
||
JUMPE W1,DC7
|
||
LOSE: POP P,A
|
||
POP P,W2
|
||
POP P,PNTR
|
||
POP P,CHP
|
||
LOSE1: AOS A
|
||
DPB A,PNTR
|
||
LDB A,PNTR
|
||
JUMPN A,DC6AA
|
||
CAME P,SAVPDL
|
||
JRST LOSE
|
||
JUMPE U,CPOPJ
|
||
MOVSI D,DELO ;LOOK AT ALL LOCALS BEFORE GIVING UP
|
||
IORM D,SYM
|
||
PUSHJ P,EVAL
|
||
POPJ P, ;NOT FOUND
|
||
PUSH P,A
|
||
PUSHJ P,EVAL1
|
||
XCT "',CRF
|
||
CAME A,ISYME
|
||
XCT "",CRF
|
||
POP P,A
|
||
LOSE2: MOVEM A,PRGM
|
||
SUB A,[2,,2]
|
||
MOVE W1,(A)
|
||
CAML A,JOBSYM(U)
|
||
TLNN W1,PNAME
|
||
JRST .+2
|
||
JRST LOSE2
|
||
PUSHJ P,EVAL
|
||
TERR (SIXBIT /IAE/)
|
||
JRST CPOPJ1
|
||
|
||
DC6: MOVEI A,0
|
||
DPB A,PNTR
|
||
DC6AA: CAMN P,SAVPDL
|
||
JRST DC6BB
|
||
LDB D,-2(P)
|
||
CAME D,(P)
|
||
JRST LOSE1
|
||
DC6BB: PUSH P,CHP
|
||
PUSH P,PNTR
|
||
PUSH P,W2
|
||
PUSH P,A
|
||
JRST DC1
|
||
DC7: MOVE P,SAVPDL
|
||
MOVE D,INST
|
||
LSH D,27.
|
||
POPJ2: AOS (P)
|
||
JRST CPOPJ1
|
||
|
||
O1CZ: TRO F,1RF
|
||
MOVEI D,133(D)
|
||
PUSHJ P,TOUT
|
||
JRST DC1
|
||
TBL:
|
||
.BYTE 9
|
||
|
||
DEFINE BARF A
|
||
A
|
||
CLOC=CLOC+1
|
||
TERMIN
|
||
|
||
DEFINE HACK A
|
||
IRPS B,D,[A]
|
||
Z="D
|
||
IFE Z-":,Y!B==CLOC
|
||
IFE Z-"/,IF1 [BARF 1] IF2 BARF Y!B+73
|
||
IFE Z-"^,BARF <B&70>_-1+B&7-1
|
||
IFE <Z-40>*<Z-15>,[
|
||
IRPC Q,,B
|
||
Z="Q
|
||
IFE Z-".,Z=100
|
||
BARF Z-40
|
||
TERMIN
|
||
]
|
||
TERMIN
|
||
TERMIN
|
||
|
||
|
||
CLOC=0
|
||
;INITIAL DISPATCH
|
||
HACK [63^. FLO/ HAK/ ACCP/ BOOLE/ H HWT/ T ACBM/ . ]
|
||
|
||
;BYTE AND FLOATING INST
|
||
HACK [FLO: 33^ ... BYTE/ FAD A/ FSB A/ FMP A/ FDV A:
|
||
21^ LMB/ R LMB: 02^ . L:L. M:M. B:B. BYTE: 03^ ..
|
||
FS C/ IB P: P. I LD/ LD: LD B/ I DP/ DP: DP B/]
|
||
|
||
;FWT, FIXED POINT ARITH, MISC.
|
||
HACK [HAK: 33^ MV/ MV: MOV MO/ ML/ DV/ SH/ H1/ JP/
|
||
21^ ADD IMB/ SU BIMB: B IMB: 02^ . I:I. M/ B/ MO: 22^
|
||
EIMS: E IMS/ S IMS/ N IMS/ M IMS: 02^ . I/ M/ S: S.
|
||
ML: 21^ I ML1/ ML1: MUL IMB/ DV: 21^ I DV1/ DV1:
|
||
DI DV2: V IMB/ H1: 03^ EXC S3/ BL T: T. AO/ AO: AOBJ
|
||
AOB/ JRS T/ JFC L/ XC T/ . AOB: 01^ P/ N/
|
||
JP: 03^ PU/ PU: PUSH PUS/ PO/ PO: POP POP/ JSR.
|
||
JS P/ JS PA: A. JR PA/ PUS: 01^ J: J.. POP:
|
||
01^ . J/ SH: 02^ A S2/ ROT S1/ L S2: S S3: H S1/ .
|
||
S1: 21^ . C: C. ]
|
||
|
||
;ARITH COMP, SKIP, JUMP
|
||
HACK [ACCP: 42^ CA CA1/ SJ/ A JS/ S JS: O 31^
|
||
J COMP/ S COMP/ CA1: 31^ I COMP/ M COMP/
|
||
SJ: 31^ JUM PSJ/ SKI PSJ: P COMP:
|
||
03^ . L/ E: E. L E/ PA/ G E/ N: N. G. ]
|
||
|
||
;BOOLEAN
|
||
HACK [BOOLE: 24^ ST/ AN: AND B2/ AN/ ST/ AN/ ST/
|
||
X OR: OR B2/ I OR/ AN/ EQ DV2/ ST/ OR/ ST/ OR/ OR/
|
||
ST: SET B2: 24^ Z IMB/ IMB/ CA: C TA/ TM: M IMB/
|
||
CM: C TM/ TA: A IMB/ IMB/ IMB/ CB: C BIMB/ IMB/ CA/
|
||
CA/ CM/ CM/ CB/ O IMB/ ]
|
||
|
||
;HALF WORDS
|
||
HACK [HWT: 51^ HW1/ 21^ R HW2/ L HW2: R HW3/ HW1:
|
||
21^ L HW4/ R HW4: L HW3: 32^ IMS/ Z IMS/ O IMS/
|
||
EIMS/ ]
|
||
|
||
;TEST INST
|
||
HACK [ACBM: 31^ AC1/ 01^ D AC2/ S AC2/ AC1: 01^ R AC2/ L
|
||
AC2: 42^ N EAN/ Z EAN/ C EAN/ O EAN: 12^ . E/ PA/ N/ ]
|
||
|
||
.BYTE
|
||
|
||
|
||
NUM: ANDI D,17 ;D HOLDS CHARACTER
|
||
TLNE F,CF+FPF
|
||
JRST NM1
|
||
MOVE C,SYL
|
||
LSH C,3
|
||
ADD C,D
|
||
MOVEM C,SYL
|
||
MOVE C,DEN
|
||
IMULI C,12 ;CONVERT TO DECIMAL
|
||
ADD C,D
|
||
MOVEM C,DEN
|
||
LE1: AOJA D,LE1A
|
||
|
||
DOLLAR:
|
||
PERC: MOVEI D,47+101-13-45(D) ;PERCENT SIGN
|
||
LET: TLC F,SF+FPF ;EXPONENT IFF LTF'*FEF'*(D=105)*SF*FPF=1
|
||
TLZN F,LTF+FEF+SF+FPF
|
||
CAIE D,"E
|
||
TLOA F,LTF
|
||
TLOA F,FEF
|
||
JRST LET1
|
||
TLZN F,MF
|
||
SKIPA W1,SYL
|
||
MOVN W1,SYL
|
||
MOVEM W1,FSV
|
||
SETZM DEN
|
||
LET1: SUBI D,101-13 ;FORM RADIX 50 SYMBOL
|
||
LE1A: TLO F,SF+QF
|
||
LE2: MOVEI C,50
|
||
EXCH C,TEM
|
||
IDIVM C,TEM
|
||
IMUL D,TEM
|
||
ADDM D,SYM
|
||
JRST L2
|
||
|
||
NUM1: MOVEI C,10. ;FORM NUMBER AFTER ALTMODE
|
||
IMULM C,WRD2 ;UPDATE WRD2 IN DECIMAL
|
||
ADDM D,WRD2
|
||
MOVEI C,8 ;ALSO UPDATE WRDO2 IN OCTAL
|
||
IMULM C,WRDO2
|
||
ADDM D,WRDO2
|
||
TRO F,Q2F
|
||
JRST,L2
|
||
|
||
NM1: TLNE F,CF
|
||
JRST NUM1
|
||
MOVEI W1,6 ;FORM FLOATING POINT NUMBER
|
||
AOS NM1A
|
||
XCT NM1A ;MOVED TO UNPURE PAGE
|
||
MOVSI A,201400
|
||
NM1A1: TRZE W2,1
|
||
FMPR A,FT(W1)
|
||
JUMPE W2,NM1B
|
||
LSH W2,-1
|
||
SOJG W1,NM1A1
|
||
NM1B: MOVSI W1,211000(D)
|
||
FMPL A,W1
|
||
SKIPN FH
|
||
JRST NM1C
|
||
LDB W2,[(331000)A]
|
||
LDB W1,[(331000)FH]
|
||
TLZ A,377000
|
||
SUB W2,W1
|
||
ASHC A,(W2)
|
||
ADD B,FL
|
||
TLZE B,400000
|
||
AOS A
|
||
MOVE W2,FH
|
||
TLZ W2,377000
|
||
ADD A,W2
|
||
TLNN A,1000
|
||
SOSA W1
|
||
ASHC A,-1
|
||
FSC A,1(W1)
|
||
NM1C: MOVEM A,FH
|
||
MOVEM B,FL
|
||
JUMPE A,NM1D
|
||
TLNE B,200000
|
||
AOS A ; ROUND
|
||
TLO A,400 ; NORMALIZE
|
||
NM1D: MOVEM A,SYL
|
||
AOJA D,LE1A
|
||
|
||
POWER: TLNN F,FEF
|
||
JRST L4 ;NO EXPONENT
|
||
CAIE C,PLUS
|
||
CAIN C,MINUS
|
||
TROE F,POWF
|
||
TRZA F,POWF
|
||
JRST (C) ; E+-
|
||
|
||
MOVE W2,DEN
|
||
MOVEI W1,FT-1
|
||
TLZE F,MF
|
||
MOVEI W1,FT01
|
||
SKIPA D,FSV
|
||
POW2: LSH W2,-1
|
||
TRZE W2,1
|
||
FMPR D,(W1)
|
||
JUMPE W2,L4
|
||
SOJA W1,POW2
|
||
|
||
PERIOD: TLOE F,FPF ;IF . ALREADY TYPED,
|
||
TLOA F,LTF ;THEN MUST BE LOGICAL LETTER, SET LTF AND GO TO PERD2
|
||
SKIPA D,LLOC ;FIRST . TYPED
|
||
JRST PERD2
|
||
TLNE F,SF ;SYLLABLE STARTED
|
||
MOVE D,DEN
|
||
MOVEM D,SYL
|
||
TLON F,SF+QF
|
||
MOVEI D,0
|
||
IDIVI D,400
|
||
SKIPE D
|
||
TLC D,243000
|
||
TLC W1,233000
|
||
FADL D,W1
|
||
MOVEM D,FH
|
||
MOVEM W1,FL
|
||
HLLZS NM1A
|
||
PERD2: MOVEI D,45 ;RADIX 50 PERIOD
|
||
JRST LE2
|
||
|
||
QUAN: MOVE D,LWT ;LAST QUANTITY TYPED
|
||
QUAN1: MOVEM D,SYL
|
||
TLZ F,LTF
|
||
TLO F,SF+QF ;WRD,SYL STARTED
|
||
QUAN3: TLZ F,CF+CCF
|
||
JRST L2QAN
|
||
|
||
CONTROL: TLOE F,CF
|
||
TLO F,CCF
|
||
JRST,L2
|
||
|
||
EVAL: MOVE A,PRGM ;LOOK UP SYMBOL
|
||
EVAL0: HRLOI W1,37777+DELI
|
||
JUMPE U,CPOPJ
|
||
JUMPL A,EVAL3 ;ANY SYMS AT ALL?
|
||
EVAL1: ADD A,[(2)2]
|
||
EVAL2: JUMPL A,EVAL4
|
||
CAMN A,ISYME ;DONE LOKING AT INITIAL SYMS => REALLY DONE
|
||
POPJ P, ;YOU LOSE
|
||
MOVE A,JOBSYM(U) ;TRY REST OF SYM TABLE
|
||
EVAL4: CAMN A,PRGM ;LOOPED BACK TO START
|
||
MOVE A,ISYMP
|
||
EVAL3: MOVE D,(A)
|
||
XOR D,SYM
|
||
TLNN D,PNAME
|
||
TLOA W1,LOCAL ;FOUND PRGM NAME, SET NO LOCAL
|
||
TDNE D,W1
|
||
JRST EVAL1
|
||
TLNN D,340000 ;FLUSH PRGM NAMES, DELO SET IN SYM TO LOOK AT ALL LOCALS
|
||
JRST EVAL1
|
||
MOVE D,1(A)
|
||
|
||
CPOPJ1: AOS (P) ;FOUND SYMBOL, SKIP
|
||
CPOPJ: POPJ P,
|
||
|
||
|
||
;BIT 40 - DELETE OUTPUT
|
||
; 20 - DELETE INPUT
|
||
; 10 - LOCAL
|
||
; 04 -GLOBAL
|
||
; NO BITS - PROGRAM NAME
|
||
|
||
OVRD: MOVSI B,-5 ;$>, $<
|
||
OVRD1: MOVE A,MSKTB(B)
|
||
AND A,LWT
|
||
TDNN D,MSKTB(B)
|
||
IOR D,A
|
||
AOBJN B,OVRD1
|
||
OVRD2: SETZM FRASE
|
||
TLZ F,TIF
|
||
SETZM WRD
|
||
JRST MASK2
|
||
|
||
MSKTB: 777000,,
|
||
0 17,0
|
||
@
|
||
(17)
|
||
,-1
|
||
|
||
ISTRING: PUSHJ P,SETISB
|
||
PUSHJ P,IIN
|
||
MOVEM D,TEM2
|
||
ISTR1: PUSHJ P,IIN
|
||
CAMN D,TEM2
|
||
JRST ISTR2
|
||
PUSHJ P,SASEM
|
||
JRST ISTR1
|
||
|
||
ISTR2: MOVE D,TEM
|
||
JRST MASK2
|
||
|
||
SETISB: TRZN F,Q2F
|
||
JRST STISB2
|
||
MOVEI W2,40
|
||
MOVE W1,WRD2
|
||
CAIN W1,6
|
||
HRRM W2,SASEM
|
||
CAIN W1,7
|
||
HLLZS SASEM
|
||
DPB W1,[300600,,STRB]
|
||
STISB2: MOVE W1,STRB
|
||
SETZM TEM
|
||
POPJ P,
|
||
|
||
SASEM: SUBI D,FOO
|
||
SASME: IDPB D,W1
|
||
HRRI W1,TEM
|
||
POPJ P,
|
||
|
||
IIN: PUSHJ P,IN
|
||
CAIE D,177
|
||
POPJ P,
|
||
JRST ERR
|
||
|
||
IN4: MOVE D,LIMBO
|
||
AOSN UNECHF ;IF ECHO DESIRED,
|
||
JRST TOUT ;THEN MAYBE ECHO IT
|
||
POPJ P, ;OTHERWISE JUST RETURN
|
||
|
||
TEXO2: TRZN F,Q2F
|
||
JRST TEXSET
|
||
SKIPN W1,WRD2
|
||
JRST ERR
|
||
HRRM W1,TEXCT2
|
||
MOVEI W2,40
|
||
CAIN W1,6
|
||
MOVEM W2,TEXOF
|
||
CAIN W1,7
|
||
SETZM TEXOF
|
||
JRST TEXSET
|
||
|
||
;1) INPUT CHARACTER
|
||
;2) CHECK FOR , ,
|
||
;3) MAYBE PRINT AND LPT IT
|
||
;4) CHECK FOR ,
|
||
|
||
.ZZ1==.
|
||
LOC .ZZ0
|
||
|
||
TEXOF: 0
|
||
|
||
LCT: PUSHJ P,TSPC
|
||
PUSHJ P,TSPC
|
||
TSPC: MOVEI D,40
|
||
JRST TOUT
|
||
|
||
TYOI: 0 ;NELSON HAC TO OUTPUT
|
||
MOVE D,TYOI ;ONE CHARACTER BY <XCT "T, CRF>
|
||
LDB D,[270600,,-1(D)]
|
||
PUSH P,TYOI
|
||
JRST TOUT
|
||
|
||
.ZZ2==.
|
||
LOC .ZZ1
|
||
|
||
LISTN: PUSHJ P,TYI
|
||
POPJ P,
|
||
PUSHJ P,TYI4
|
||
CAIE D,^B
|
||
CAIN D,^E
|
||
POPJ P,
|
||
CAIE D,^V
|
||
CAIN D,^W
|
||
POPJ P,
|
||
JRST CPOPJ1
|
||
|
||
IN: AOSN UNRCHF
|
||
JRST IN4
|
||
SKIPE ININST
|
||
JRST IN2
|
||
PUSHJ P,TYI3
|
||
JFCL
|
||
PUSHJ P,ECHOT ;IF CHARACTER SHOULD BE ECHOED,
|
||
PUSHJ P,LPTR ;THEN MAYBE LPT IT
|
||
JRST TYI4
|
||
|
||
LPTR: SKIPE LPTFLG
|
||
.IOT LPTC,D
|
||
POPJ P,
|
||
|
||
TTYON: SETOM TTYFLG
|
||
JRST L2
|
||
|
||
LPTF: 1,,(SIXBIT /LPT/)
|
||
SIXBIT /.DDT./
|
||
SIXBIT /LPTOUT/
|
||
|
||
TOUT: PUSHJ P,LPTR
|
||
SKIPN SILNT
|
||
SKIPN TTYFLG
|
||
POPJ P,
|
||
TYO2: .IOT TYOC,D
|
||
POPJ P,
|
||
|
||
TYI: .LISTEN D,
|
||
JUMPE D,CPOPJ
|
||
TYI3: .IOT TYIC,D
|
||
TYI3B: MOVEM D,LIMBO
|
||
CAIN D,^S
|
||
SETZM SILNT
|
||
CAIE D,^E
|
||
JRST TYI2
|
||
SETZM LPTFLG
|
||
.CLOSE LPTC,
|
||
TYI2: CAIN D,^W
|
||
SETZM TTYFLG
|
||
JRST CPOPJ1
|
||
|
||
;CHECK FOR AND
|
||
|
||
TYI4: CAIE D,^B
|
||
JRST TYI1
|
||
TSOPEN LPTC,LPTF
|
||
SETOM LPTFLG
|
||
TYI1: CAIN D,^V
|
||
SETOM TTYFLG
|
||
POPJ P,
|
||
|
||
;SKIP UNLESS CHARACTER SHOULD BE ECHOED
|
||
|
||
ECHOT: CAIE D,15
|
||
CAIN D,12
|
||
JRST CPOPJ1
|
||
CAIE D,^Q
|
||
CAIN D,^R
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
IN2: XCT ININST ;INPUT CHAR FROM FILE OR INFERIOR
|
||
ANDI D,177 ;MASK TO 7 BITS
|
||
SKIPE D
|
||
CAIN D,3
|
||
JRST UVLOOK ;END IF ZERO OR ^C
|
||
CAIN D,177
|
||
JRST IN ;IGNORE IF DEL
|
||
PUSHJ P,TYI3B ;SET OR CLEAR VARIOUS FLAGS
|
||
JFCL
|
||
PUSHJ P,ECHOT
|
||
PUSHJ P,TOUT
|
||
JRST TYI4
|
||
|
||
;FLOATING POINT OUTPUT
|
||
|
||
TFLOT: MOVE A,D
|
||
JUMPG A,TFL1
|
||
JUMPE A,FP1A
|
||
MOVNS A
|
||
XCT "-,CRF
|
||
TLZE A,400000
|
||
JRST FP1A
|
||
|
||
TFL1: MOVEI B,0
|
||
TLNN A,400
|
||
XCT "#,CRF ;NOT NORMALIZED
|
||
|
||
FP1: CAMGE A,FT01
|
||
JRST,FP4
|
||
CAML A,FT8
|
||
AOJA B,FP4
|
||
FP1A:
|
||
FP3: SETZB C,TEM1 ;CLEAR DIGIT CNTR, C TO RECEIVE FRACTION
|
||
MULI A,400
|
||
ASHC B,-243(A)
|
||
MOVE A,B
|
||
PUSHJ P,FP7
|
||
XCT ".,CRF
|
||
MOVNI A,10
|
||
ADD A,TEM1
|
||
MOVE W1,C
|
||
FP3A: MOVE D,W1
|
||
MULI D,12
|
||
PUSHJ P,FP7B
|
||
SKIPE,W1
|
||
AOJL A,FP3A
|
||
POPJ P,
|
||
|
||
;GET A CHARACTER FROM THE INPUT FILE OR VALRET STRING AND SKIP,
|
||
;OR DON'T SKIP IF GETTING CHARS. FROM TTY
|
||
|
||
RTYIC: SKIPN ININST ;IF GETTING CHARACTERS FROM TTY,
|
||
POPJ P, ;THEN JUST RETURN
|
||
SKIPGE UNRCHF ;IF CHARACTER SAVED,
|
||
JRST RTYIC2 ;THEN USE IT (LEAVE UNRCHF ALONE)
|
||
XCT ININST ;GET CHARACTER
|
||
ANDI D,177 ;MASK TO 7 BITS
|
||
CAIE D,3 ;IF NOT CONTROL C,
|
||
JUMPN D,RTYIC3 ;AND NOT ZERO, THEN USE IT, SET UNRCHF, AND SKIP-RETURN
|
||
MOVSI D,(MOVEI D,) ;END OF THIS FILE OR VALRET STRING,
|
||
;BUT DON'T LOOK FOR OTHERS
|
||
MOVEM D,ININST ;NEXT REGULAR CHARACTER FETCH WILL GET A ZERO
|
||
POPJ P,
|
||
|
||
RTYIC2: MOVE D,LIMBO ;RECOVER CHARACTER
|
||
JRST CPOPJ1 ;SKIP-RETURN
|
||
RTYIC3: MOVEM D,LIMBO ;SAVE AS NEXT CHARACTER
|
||
SETOM UNRCHF ;TELL INPUT ROUTINE TO USE IT
|
||
SETOM UNECHF ;TELL INPUT ROUTINE TO ECHO IT
|
||
JRST CPOPJ1
|
||
|
||
FP4: MOVNI C,6
|
||
MOVEI W2,0
|
||
FP4A: ADDI W2,1(W2)
|
||
XCT,FCP(B)
|
||
SOSA W2
|
||
FMPR A,@FCP+1(B)
|
||
FP4B: AOJN C,FP4A
|
||
PUSH P,EXPSGN(B)
|
||
PUSHJ P,FP3
|
||
MOVEI D,"E
|
||
PUSHJ P,TOUT
|
||
POP P,D
|
||
PUSHJ P,TOUT
|
||
MOVE A,W2
|
||
|
||
FP7: SKIPE A ;AVOID AOSING TEM1, NOT SIGNIFICANT DIGIT
|
||
AOS TEM1
|
||
IDIVI A,12
|
||
FP7A: HRLM B,(P)
|
||
JUMPE A,FP7A1
|
||
PUSHJ P,FP7
|
||
|
||
FP7A1: HLRZ D,(P)
|
||
FP7B: ADDI D,"0
|
||
JRST,TOUT
|
||
|
||
1.0^32.
|
||
1.0^16.
|
||
FT8: 1.0^8
|
||
1.0^4
|
||
1.0^2
|
||
1.0^1
|
||
FT: 1.0^0
|
||
1.0^-32.
|
||
1.0^-16.
|
||
1.0^-8
|
||
1.0^-4
|
||
1.0^-2
|
||
FT01: 1.0^-1
|
||
FT0=FT01+1
|
||
|
||
FCP: CAMLE A, FT0(C)
|
||
CAMGE A, FT(C)
|
||
0, FT0(C)
|
||
|
||
EXPSGN: "-
|
||
"+
|
||
|
||
ALTU: JUMPL F,ALTU3 ;DISPATCH FOR $U
|
||
TLNN F,LTF ;IF $$U TYPED, GO TO ALTU3
|
||
JRST ALTU2 ;RELOAD DDT FEATURE
|
||
MOVEI W2,UNAME ;REGULAR LOGIN
|
||
PUSHJ P,BITE ;GET ARG INTO UNAME IN 6BIT
|
||
NLOGI2: MOVE D,UNAME
|
||
.LOGIN D,
|
||
JRST PSDERR ;? IF LOGIN LOSES
|
||
MOVEM D,RUNAME
|
||
MOVEM D,RUNM1
|
||
MOVEM D,RUNM2
|
||
MOVEM D,PFILE1
|
||
MOVEM D,MSNAM ;SET SYS NAME FOR NEW JOBS
|
||
.OPEN COMC,INITF ;EXECUTE .DDT. (INIT) FILE IF ANY
|
||
JRST NLOGI3
|
||
MOVE D,[.IOT COMC,D]
|
||
MOVEM D,ININST
|
||
STRT [SIXBIT /INIT./]
|
||
NLOGI3: .OPEN FDRC,MAILF ;PRINT OUT MAIL IF ANY
|
||
JRST ALTL2
|
||
.FDELE OMAILF
|
||
JFCL
|
||
.FDELE MAILF
|
||
JFCL
|
||
JRST CTLF4
|
||
|
||
PSDERR: CTYPE "?
|
||
JRST RET
|
||
|
||
ALTU2: TLNN F,QF ;RELOAD DDT
|
||
SETZM SYL
|
||
PUSHJ P,IIN
|
||
CAIE D,". ;MUST BE FOLLOWED BY .
|
||
JRST ERR
|
||
.VALUE SYL
|
||
JRST ALTL2
|
||
|
||
ALTU3: TLNE F,LTF+QF ;IF ARG GIVEN, ERR
|
||
JRST ERR
|
||
LOGOUT: SETZM DDTTY
|
||
PUSHJ P,MASAC1 ;MAKE ROOM FOR COM: DIRECTORY
|
||
.FDELE OMAILF ;DELETE MAIL, IF ANY
|
||
JFCL
|
||
.LOGOUT ;GOOD BYE
|
||
PUSHJ P,TTYRET ;HELLO?
|
||
PUSHJ P,FORMF
|
||
7TYPE [ASCIZ /NOT TOP LEVEL, CAN'T LOGOUT/]
|
||
JRST ERR
|
||
|
||
ALTJ: MOVE A,JNAME ;$J COMMAND
|
||
TLNN F,LTF
|
||
JRST ALTJ2 ;IF NO ARG, GO FIND OLD JOB
|
||
MOVEI W2,JNAME
|
||
PUSHJ P,BITE ;GET ARG IN JNAME IN 6BIT
|
||
ALTJ3: MOVE D,JNAME
|
||
JUMPL F,ALTJ4 ;IF $$J CHANGE NAME OF CURRENT JOB
|
||
ALTJJ: PUSHJ P,OUSR ;OTHERWISE, CHANGE CURRENT JOB
|
||
JRST ALTL2
|
||
|
||
ALTJ4: PUSHJ P,QIJERR ;IS IT A REAL JOB?
|
||
MOVE D,JNAME
|
||
CAME D,[SIXBIT /PDP10/]
|
||
CAMN D,[SIXBIT /SYS/]
|
||
JRST ERR ;NOT SYSTEM
|
||
.USET USRI,[.SJNAME,,D] ;SET JOB NAME (MAY LOSE)
|
||
MOVEM D,UJNAME(U) ;DOCUMENT NEW NAME
|
||
JRST ALTL2
|
||
|
||
ALTJ2: JUMPL F,ALTJ5
|
||
TLNN F,QF
|
||
JRST ALTJ9 ;IF NO ARG, GET OLD JOB
|
||
MOVE D,SYL ;IF NUMERICAL ARG, USE IT FOR JOB NAME
|
||
TLNN D,770000
|
||
JRST ERR ;LOSING NAME
|
||
MOVEM D,JNAME
|
||
JRST ALTJ3
|
||
|
||
;$$J (NO ARG) TYPE OUT CURRENT JOB STATUS IN $$V FORMAT
|
||
|
||
ALTJ5: JUMPLE U,ALTL2 ;NOTHING IF NO JOB
|
||
PUSHJ P,LCT
|
||
TRO F,BPLF
|
||
JRST ULIST4
|
||
|
||
BITE: MOVEI W1,SYM ;CONVERT SQUOZE SYM TO SIXBIT
|
||
MOVE D,[JRST BITE5]
|
||
SETZM (W2)
|
||
MOVE A,[440600,,(W2)]
|
||
JRST .SPT
|
||
|
||
BITE5: TRC D,40
|
||
IDPB D,A
|
||
POPJ P,
|
||
|
||
|
||
CTLS: SETZM SILNT ;RESET SILENCE FLAG
|
||
TLNN F,QF ;IF NO ARG, THAT'S IT
|
||
JRST DD1 ;OTHERWISE, SET SYSTEM NAME
|
||
MOVEI W2,TEM
|
||
PUSHJ P,BITE
|
||
TLNE F,CF ;IF $ TYPED,
|
||
JRST CTLS1 ;THEN SET DDT'S SYSTEM NAME
|
||
PUSHJ P,QIJERR
|
||
.USET USRI,[.SSNAM,,TEM] ;SET INFERIOR PROCEDURE'S SYSTEM NAME
|
||
JRST ALTL2
|
||
CTLS1: .SUSET [.SSNAM,,TEM]
|
||
JUMPGE F,ALTL2 ;IF ONLY ONE $ TYPED THEN THAT'S ALL
|
||
MOVE W1,TEM
|
||
MOVEM W1,MSNAM ;SET SYSTEM NAME FOR NEW JOBS
|
||
JRST ALTL2
|
||
|
||
|
||
LOAD: TLO F,CF
|
||
ALTL: SKIPE FURN(U)
|
||
JRST JERR
|
||
PUSHJ P,RRFILE
|
||
MOVEI A,6
|
||
HRLM A,IFILE
|
||
HRRZ A,IFILE
|
||
CAIN A,(SIXBIT /TTY/)
|
||
TERR (SIXBIT /DEV/)
|
||
TSOPEN UTIC,IFILE
|
||
PUSHJ P,ALOAD
|
||
ALTL4: SKIPL GETTY
|
||
ALTL2: PUSHJ P,CRF ;HERE FROM UBRK1
|
||
ALTL5: SKIPL GETTY
|
||
JRST DD1B
|
||
ALTL3: SKIPL MONMOD
|
||
CTYPE "*
|
||
JRST DD1B
|
||
|
||
PDUMP: PUSHJ P,RRFILE
|
||
MOVEI A,3
|
||
HRLM A,IFILE
|
||
TSOPEN UTOC,IFILE
|
||
SETZM NCVARB
|
||
.CALL PDUMPB
|
||
OPNER
|
||
PUSHJ P,ADMPS
|
||
.CLOSE UTOC,
|
||
JRST ALTL4
|
||
|
||
DUMP:
|
||
ALTY: PUSHJ P,RRFILE ;SIGN OF F USED AT ADUMP
|
||
PUSHJ P,ADUMP
|
||
JRST ALTL4
|
||
|
||
|
||
OUSR: MOVE D,RUNAME ;CHECK USER NAME
|
||
AOJE D,LOGQ ;IF RUNAME IS -1, GUY IS NOT LOGGED IN
|
||
MOVEI U,USRS ;SET U TO BEGINNING OF USER STORAGE
|
||
MOVE C,UNAME ;PICK UP UNAME
|
||
MOVE D,JNAME ;AND JNAME
|
||
OUSR2: CAME C,UUNAME(U) ;DO UNAMES AGREE?
|
||
JRST OUSR5 ;NO, TRY NEXT
|
||
CAMN D,UJNAME(U) ;HOW ABOUT JNAME?
|
||
JRST OPUSR ;FOUND USER, MAKE HIM CURRENT JOB
|
||
OUSR5: ADDI U,USRLNG ;NOT THIS ONE, BUMP TO NEXT
|
||
CAIGE U,USREND ;ALL CHECKED YET?
|
||
JRST OUSR2 ;NO, KEEP TRYING
|
||
MOVEI U,USRS ;YES, GO BACK TO BEGINNING TO LOOK FOR FREE SLOT FOR NEW JOB
|
||
OUSR3: SKIPN UJNAME(U) ;IS THIS SLOT FREE?
|
||
JRST OUSR4 ;YES, CREATE NEW JOB
|
||
ADDI U,USRLNG ;NO, TRY NEXT
|
||
CAIGE U,USREND ;ALL CHECKED?
|
||
JRST OUSR3 ;NO, TRY AGAIN
|
||
MOVEI U,0 ;YES, INDICATE NO CURRENT JOB
|
||
TERR (SIXBIT /TMJ/) ;AND TELL USER
|
||
|
||
OUSR4: MOVE D,UNAME ;GET HERE FOR NEW JOB
|
||
MOVEM D,UUNAME(U) ;SET UP UNAME AND JNAME FOR NEW JOB
|
||
MOVE D,JNAME
|
||
MOVEM D,UJNAME(U)
|
||
CTYPE "! ;INDICATE THAT THIS IS NEW JOB
|
||
SETOM PERMIT(U) ;ALLOW VALRET STRINGS
|
||
MOVE D,SYMTOP
|
||
MOVEM D,JOBSYM(U) ;INITIALIZE SYMTAB POINTER FOR THIS JOB
|
||
MOVS D,JNAME
|
||
CAIN D,(SIXBIT /SYS/) ;CHECK FOR SYS JOB
|
||
JRST OUSR6 ;SYSJ OR SYS
|
||
SETZM UINT(U) ;CLEAR INT WORD
|
||
PUSHJ P,OPUSR ;OPEN JOB
|
||
.USET USRI,[.RUIND,,D] ;PICK UP INDEX #
|
||
MOVEM D,UIND(U) ;AND SAVE
|
||
MOVEI D,21
|
||
MOVEM D,UINTWD(U) ;INDICATE JOB NOT YET STARTED
|
||
.USET USRI,[.RUSTP,,D] ;PICK UP STOP WORD
|
||
TLNE D,100000 ;SKIP IF JOB RUNNING
|
||
JRST OUSR4B ;JOB STOPPED
|
||
SETZM UINTWD(U) ;INDICATE JOB RUNNING
|
||
JRST OUSR4A
|
||
OUSR4B: .USET USRI,[.RUPC,,D] ;GET JOB'S PC
|
||
CAMN D,[10000,,0] ;TEST TO SEE IF NEW JOB
|
||
JRST OUSR4A ;YES
|
||
MOVEM D,PPC(U) ;DISOWNED JOB. SIMULATE INTERRUPT IF NOT RUNNING
|
||
SETOM UINTWD(U)
|
||
OUSR4A: SKIPN FURN(U) ;IF NOT FOREIGN USER,
|
||
.USET USRO,[.SSNAM,,MSNAM] ;THEN SET SYSTEM NAME APPROPRIATELY
|
||
SKIPN DDTSW
|
||
POPJ P, ;EXIT IF NOT OPENING SELF
|
||
PUSHJ P,ELECTRON ;OTHERWISE FLUSH EXISTING SYMS
|
||
TSOPEN UTIC,TSDDT ;OPEN SYS DDT FILE
|
||
JRST CSMI1 ;AND LOAD SYMS THEREFROM
|
||
|
||
OUSR6: MOVE D,RUNAME ;IF REAL UNAME
|
||
CAME D,UNAME ;DOESN'T EQUAL INTERNAL UNAME
|
||
JRST OPUSRT ;FORCE UNAME TO RUNAME
|
||
SETZM UCHNLO ;INDICATE NO INFERIOR OPEN
|
||
.CLOSE USRI, ;AND MAKE SURE IT'S TRUE
|
||
.CLOSE USRO,
|
||
SETOB A,SYSSW ;SYSTEM FLAG + BLOCK LENGTH OF 1 FOR GETSYS
|
||
SETZM HIGH
|
||
SETZM UINTWD(U) ;INDICATE JOB RUNNING
|
||
MOVEM U,CU ;MAKE THIS CURRENT JOB
|
||
MOVE B,[SIXBIT /DSYMS/] ;PREPARE TO GET SYMS FROM SYS
|
||
.GETSYS A, ;SHOULD LOSE, AND PUT -LENGTH IN LH OF A
|
||
PUSHJ P,HOLE ;MAKE ROOM FOR SYMS
|
||
HRRZ A,JOBSYM(U) ;GET POINTER TO AREA CREATED BY HOLE
|
||
.GETSYS A, ;GOBBLE GOBBLE
|
||
TERR (SIXBIT /???/) ;LOSEY LOSEY
|
||
AOS D,NJ1
|
||
MOVEM D,JTIME(U)
|
||
POPJ P,
|
||
|
||
TSDDT: SIXBIT / &SYS@ HACTRN/
|
||
|
||
OPUSR1: SKIPE VALCOM(U) ;IS THERE A VALRET STRING FROM THIS JOB?
|
||
JRST OPUSRC ;YES, GO EXECUTE IT
|
||
PUSHJ P,CRF ;TYPE CRLF
|
||
OPUSRK: SETZM SILNT ;INSURE TYPEOUT NOT FLUSHED
|
||
CAMN U,CU ;IS THIS THE CURRENT JOB?
|
||
JRST OPUSR ;YES
|
||
PUSHJ P,NJTYP ;NO, TYPE MUMBLEJ
|
||
PUSHJ P,CRF ;AND CRLF
|
||
OPUSR: JUMPE U,JERR ;COMPLAIN IF ILLEGAL JOB
|
||
OPUSRN: AOS D,NJ1 ;GET NEXT JTIME VALUE
|
||
MOVEM D,JTIME(U) ;INDICATE THIS JOB MOST RECENT
|
||
MOVEM U,CU ;AND CURRENT
|
||
SETZM UCHNLO ;AVOID IOC ERROR FROM USR IO IF .OPEN LOSES
|
||
MOVE D,UJNAME(U)
|
||
MOVEM D,JNAME ;SET CURRENT JNAME
|
||
SETZM SYSSW ;FLUSH SYS FLAG
|
||
CAMN D,[SIXBIT /SYS/] ;IS JNAME SYS?
|
||
JRST OPUSRS ;YES, TAKE SPECIAL ACTION
|
||
SETOM DDTSW ;SET INTROSPECTION FLAG
|
||
MOVE B,RUNAME
|
||
CAME B,UNAME ;CHECK FOR UNAME BEING SAME AS DDT'S
|
||
SETZM DDTSW ;FLUSH FLAG IF NOT
|
||
.SUSET [.RJNAM,,B] ;GET DDT'S JNAME
|
||
CAME B,D ;CHECK AGAINST CURRENT JNAME
|
||
SETZM DDTSW ;FLUSH FLAG IF DIFFERENT
|
||
MOVEI D,2
|
||
HRLM D,UFUSR(U) ;SET OPEN MODE TO BLOCK INPUT
|
||
OPUSRR: .OPEN USRI,UFUSR(U) ;OPEN JOB
|
||
JRST OPUSR5 ;LOSE
|
||
MOVEI D,3
|
||
HRLM D,UFUSR(U) ;SET MODE TO BLOCK OUTPUT
|
||
OPUSRW: .OPEN USRO,UFUSR(U) ;OPEN JOB AGAIN
|
||
JRST OPUSR6 ;WIN ON INPUT & LOSS ON OUTPUT => FOREIGN USER
|
||
.USET USRI,[.RINTB,,D] ;PICK UP INTERRUPT BIT
|
||
MOVEM D,INTBIT(U) ;AND SAVE
|
||
SETZM FURN(U) ;INDICATE NOT FOREIGN USER
|
||
SETOM UCHNLO ;INDICATE INFERIOR OPEN
|
||
OPUSRB: .USET USRI,[.RMEMT,,HIGH] ;GET MEM BOUND
|
||
OPUSRA: MOVE D,JOBSYM(U)
|
||
MOVEM D,PRGM ;SET CURRENT SYMTAB POINTER TO POINTER FOR THIS JOB
|
||
SKIPE SYSSW
|
||
POPJ P, ;EXIT IF SYS
|
||
SKIPE D,UINT(U) ;IS JOB RUNNING?
|
||
JRST UBRK1 ;NO, TELL USER WHY
|
||
POPJ P, ;YES, EXIT
|
||
|
||
OPUSRS: SETOM SYSSW ;SET SYS JOB FLAG
|
||
SETZM HIGH
|
||
JRST OPUSRA ;BACK TO OPUSR FOR VARIOUS ODDS & ENDS
|
||
|
||
;.VALUE EXECUTED WITH EFFECTIVE ADDRESS .NE. 0
|
||
OPUSRC: MOVEI A,4 ;USED BY UBRK9 TO INDICATE LOSING VALRET
|
||
SKIPE ININST ;CHECK FOR OTHER HACKS ON SOURCE OF INPUT
|
||
JRST UBRK9 ;ININST NOT AVAILABLE
|
||
SETZM UINT(U) ;FLUSH INTERRUPT WORD
|
||
PUSHJ P,OPUSRK ;OPEN JOB
|
||
MOVSI D,-1
|
||
EXCH D,VALCOM(U) ;GET & FLUSH STRING POINTER
|
||
MOVEI B,(D) ;GET FIRST LOCATION OF STRING
|
||
.ACCESS USRI,B ;PREPARE TO GET STRING
|
||
MOVE D,[-VLRTSL,,UVCOM] ;AOBJN POINTER TO VALRET BUFFER, ASSUMING NO MEMTOP PROBLEMS
|
||
SUB B,HIGH ;CALCULATE -# WORDS BETWEEN STRING AND MEMTOP
|
||
CAMLE B,[-VLRTSL] ;IF NOT ENOUGH TO FILL UP THE BUFFER,
|
||
HRL D,B ;THEN USE AMOUNT THAT THERE IS
|
||
.IOT USRI,D ;GET THE STRING
|
||
SETZM (D) ;ENSURE AN "END OF FILE"
|
||
MOVE D,[ILDB D,VILDBP]
|
||
MOVEM D,ININST ;REDEFINE SOURCE OF INPUT
|
||
MOVE D,[440700,,UVCOM]
|
||
MOVEM D,VILDBP ;INITIALIZE BYTE POINTER
|
||
SETOM UINT(U) ;SET INTERRUPT WORD FOR NON-BPT INT
|
||
MOVE B,UPIRQ(U) ;GET PI REQUESTS
|
||
ILDB D,D ;GET CHARACTER FROM VALRET STRING
|
||
TRNN B,461464 ;IF NO INTERRUPTS TO COMPLAIN ABOUT,
|
||
CAIE D,^W ;AND CHARACTER IS CONTROL W,
|
||
JRST UBRK0 ;...
|
||
SETZM TTYFLG ;THEN SILENCE TYPEOUT NOW
|
||
IBP VILDBP ;KEEP CHARACTER FROM BEING INPUT AGAIN
|
||
JRST UBRK1
|
||
|
||
ALTV: JUMPGE F,ERR ;RESERVE $V FOR DISPLAY MODE
|
||
ULIST: PUSHJ P,CRF
|
||
MOVEM U,CU
|
||
MOVEI U,USRS
|
||
ULIST2: SKIPE UUNAME(U)
|
||
SKIPN D,UJNAME(U)
|
||
JRST ULIST1
|
||
MOVEI D,"
|
||
CAMN U,CU
|
||
MOVEI D,"*
|
||
PUSHJ P,TOUT
|
||
PUSHJ P,TSPC
|
||
|
||
ULIST4: SKIPN FURN(U)
|
||
JRST ULIST3
|
||
MOVE D,UUNAME(U)
|
||
PUSHJ P,SIXTYP
|
||
PUSHJ P,TSPC
|
||
ULIST3: MOVE D,UJNAME(U)
|
||
PUSHJ P,SIXTYP
|
||
PUSHJ P,TSPC
|
||
MOVE D,UINTWD(U)
|
||
CAIN D,21
|
||
XCT "-,CRF
|
||
JUMPL D,ULISTP
|
||
JUMPE D,ULISTR
|
||
CAIL D,8
|
||
JRST ULSTRT
|
||
PUSHJ P,TOC
|
||
MOVEI D,"B
|
||
PUSHJ P,TOUT
|
||
ULSTRT: PUSHJ P,TSPC
|
||
MOVE D,UIND(U)
|
||
PUSHJ P,TOC
|
||
TRZE F,BPLF
|
||
JRST ALTL2
|
||
PUSHJ P,CRF
|
||
ULIST1: ADDI U,USRLNG
|
||
CAIGE U,USREND
|
||
JRST ULIST2
|
||
MOVE U,CU
|
||
JRST ALTL2
|
||
|
||
ULISTR: MOVEI D,"W
|
||
SKIPN UINT(U)
|
||
MOVEI D,"R
|
||
JRST .+2
|
||
ULISTP: MOVEI D,"P
|
||
PUSHJ P,TOUT
|
||
JRST ULSTRT
|
||
|
||
NJTYP: MOVE D,UJNAME(U) ;TYPE JNAME OF CUR JOB AND "$J"
|
||
PUSHJ P,SIXTYP
|
||
MOVSI D,(SIXBIT /$J/)
|
||
SIXTYP: MOVEM D,TEM ;PRINT D AS SIXBIT STOPPING WHEN ZERO
|
||
SETZM TEM1
|
||
MOVE C,[440600,,TEM]
|
||
SIXTP2: ILDB D,C
|
||
JUMPE D,CPOPJ
|
||
CTYPE 40(D)
|
||
JRST SIXTP2
|
||
|
||
;N<FOO^H
|
||
;1 DO NOT AOS NAME, DO FOO^H
|
||
;0 AOS NAME (DECIMAL), FOO^H
|
||
;-1 AOS NAME (OCTAL), BUT PROCEED IF JOB EXISTS
|
||
|
||
EDFIL: MOVEI A,1
|
||
MOVEM A,DEFV ;ED DOES 1<TECO^H
|
||
JRST EDFIL1
|
||
|
||
CRFIL: PUSHJ P,RRFLB
|
||
PUSHJ P,CRST ;REMEMBER THESE FILE NAMES
|
||
EDFIL1: TLO F,FAF+LTF
|
||
MOVE A,[SQUOZE 0,TECO]
|
||
MOVEM A,SYM
|
||
ACTRLH: JUMPL F,DISOWN ; COMMAND -- $$ IS DISOWN
|
||
TLNE F,CF
|
||
JRST ACTLHS ;$ MEANS LOAD SYMS OF LAST 'ED PROG
|
||
TLNN F,LTF
|
||
JRST ERR ;NO ARG IS ERROR
|
||
CTLHS: MOVEI W2,SYSN2
|
||
TRZN F,SIXF
|
||
PUSHJ P,BITE ;PUT ARG IN SYSN2 IN 6BIT
|
||
CCTLH: MOVS D,SYSN2 ;ENTRY FROM $?
|
||
CAIN D,(SIXBIT /SYS/)
|
||
JRST CTLH3
|
||
CAME D,[SIXBIT /TRNHAC/]
|
||
JRST CTLH1 ;GO GET JOB&FILE
|
||
CTLH3: MOVSM D,JNAME ;LOOK AT SYSTEM OR DDT
|
||
PUSHJ P,OUSR
|
||
JRST ALTL2
|
||
|
||
HDPT: IDIVI B,10.
|
||
JUMPE B,HDPT1
|
||
HRLM C,(P)
|
||
PUSHJ P,HDPT
|
||
HLRZ C,(P)
|
||
HDPT1: ADDI C,'0
|
||
IDPB C,A
|
||
POPJ P,
|
||
|
||
CTLH1: MOVEI D,(SIXBIT /DSK/) ;TRY USER'S DISK FIRST
|
||
HRRM D,SFILE
|
||
.OPEN UTIC,SFILE
|
||
JRST .+2 ;OPEN LOST, TRY SYS
|
||
JRST CHWIN
|
||
MOVEI D,(SIXBIT /SYS/) ;DSK OPEN LOST, TRY SYS
|
||
HRRM D,SFILE
|
||
TSOPEN UTIC,SFILE ;ERROR IF THIS OPEN LOSES
|
||
CHWIN: MOVE D,SYSN2 ;GET JNAME FOR JOB
|
||
MOVEM D,JNAME
|
||
PUSHJ P,OUSR
|
||
SKIPGE UCHNLO ;IF INFERIOR OPEN,
|
||
JRST .+3 ;THEN ALL RIGHT,
|
||
.CLOSE UTIC, ;INFERIOR NOT OPEN, CLOSE INPUT FILE
|
||
JRST JERR ;COMPLAIN IN ENGLISH
|
||
SKIPGE DEFV ;LOAD NEW COPY
|
||
TLNN F,FAF
|
||
JRST CTLH2
|
||
MOVE D,UINTWD(U)
|
||
CAIE D,21
|
||
JUMPN D,HSETUP
|
||
CTLH2: MOVEI D,B1ADR+1(U)
|
||
HRLI D,-1(D)
|
||
SETZM B1ADR(U)
|
||
BLT D,BPEND-1(U)
|
||
PUSHJ P,ALOAD
|
||
MOVE D,STARTA(U)
|
||
TLNN F,FAF
|
||
JRST HGO
|
||
|
||
|
||
;SKIPPED INTO
|
||
|
||
HSETUP: SKIPLE DEFV ;AOS NAME
|
||
JRST HSET3
|
||
MOVE D,SFILN2
|
||
EXCH D,NEWFIL
|
||
MOVEM D,OLDFIL
|
||
MOVEI A,'9
|
||
SKIPGE DEFV ;-1< AOS IN OCTAL
|
||
MOVEI A,'7
|
||
MOVEM A,HSRAD
|
||
MOVEI A,0 ;-1 NO CARRY, 0 NO NUMBER, 1-6 LEFT END OF NUMERIC FIELD
|
||
MOVEI B,6 ;START AT LEFT END
|
||
HSNON: SETOM NUMSN' ;NOT PROCESSING NUMERIC FIELD
|
||
JUMPLE B,HSAS2 ;RIGHT END
|
||
HSAS1: LDB C,SIXP(B)
|
||
JUMPE C,[SOJA B,HSAS2] ;SPACE AT END OF NAME
|
||
CAIG C,'9
|
||
CAIGE C,'0
|
||
SOJA B,HSNON ;NON NUMERIC
|
||
AOSN NUMSN
|
||
MOVE A,B ;SAVE LEFT END OF NUMBER
|
||
CAMGE C,HSRAD ;LARGEST DIGIT
|
||
SETOM A ;THIS FIELD CANNOT CARRY
|
||
MOVE D,B ;SAVE CURRENT RIGHT END
|
||
SOJG B,HSAS1
|
||
HSAS2: JUMPL A,HSAOS ;NO CARRY TO OCCUR,JUST AOS
|
||
JUMPE A,HSNO1 ;NO NUMBER
|
||
CAIN D,1 ;NUMBER UP AGAINST RIGHT END
|
||
AOJA A,HSAO1 ;EXPAND LEFT
|
||
LDB C,[360600,,SIXP(A)] ;INSERT EXTRA DIGIT IN NUMBER
|
||
DPB C,[300600,,SIXP] ;PUT POS FIELD INTO SIZE FIELD, POSITION 0
|
||
MOVE C,SFILN2
|
||
ROT C,-6
|
||
DPB C,SIXP ;SHOVE EVERTHING OVER
|
||
SOS D
|
||
HSAO1: MOVEI C,'0
|
||
DPB C,SIXP(A) ;CLOBBER IN EXTRA DIGIT
|
||
HSAOS: LDB A,SIXP(D) ;AOS FIELD
|
||
CAIG A,'9
|
||
CAIGE A,'0
|
||
JRST HSET3
|
||
CAML A,HSRAD
|
||
MOVEI A,'0-1
|
||
AOS A
|
||
DPB A,SIXP(D)
|
||
CAIN A,'0
|
||
AOJA D,HSAOS
|
||
HSET3: MOVEI A,50 ;PUT FILE NAMES INTO LOCN 50,...
|
||
MOVE D,SFILN1
|
||
PUSHJ P,DEP
|
||
MOVEI A,53
|
||
MOVE D,OLDFIL
|
||
PUSHJ P,DEP
|
||
MOVEI A,51
|
||
MOVE D,NEWFIL
|
||
PUSHJ P,DEP
|
||
MOVEI A,52
|
||
MOVE D,SFILN2
|
||
PUSHJ P,DEP
|
||
MOVE D,STARTA(U)
|
||
SKIPE A,UINTWD(U)
|
||
CAIN A,21
|
||
JRST HGO
|
||
SKIPGE DEFV ;PROCEED ONLY ON -1<
|
||
JRST PROCED
|
||
JRST HGO
|
||
|
||
HSNO1: MOVEI C,'1
|
||
DPB C,SIXP+1(B) ;SMASH SPACE OR LAST CH
|
||
JRST HSET3
|
||
|
||
CRST: MOVE A,FILN1
|
||
MOVEM A,SFILN1
|
||
MOVEI A,(SIXBIT \DSK\)
|
||
MOVEM A,IFILE
|
||
MOVE A,MSNAM
|
||
.WSNAM A,
|
||
CLEARM DEFV
|
||
.OPEN UTIC,IFILE
|
||
AOS DEFV
|
||
MOVSI A,(SIXBIT \BIN\)
|
||
EXCH A,FILN2
|
||
MOVEM A,SFILN2
|
||
SETZM OLDFIL
|
||
SETZM NEWFIL
|
||
POPJ P,
|
||
|
||
STFIL: PUSHJ P,RRFLB
|
||
PUSHJ P,CRST
|
||
.CLOSE UTIC,
|
||
JRST ALTL5
|
||
|
||
ACTLHS: TLNE F,LTF
|
||
JRST CTLHS
|
||
PUSHJ P,QJERR
|
||
TSOPEN UTIC,SFILE
|
||
JRST CSMI1
|
||
|
||
OPUSR6: .STATUS USRI,D
|
||
ANDI C,77
|
||
CAIE D,SNFUSER
|
||
JRST OPUSRU
|
||
CTYPE "#
|
||
MOVEI D,-1
|
||
MOVEM D,UCHNLO
|
||
MOVEM D,FURN(U)
|
||
JRST OPUSRB
|
||
|
||
OPUSRU: MOVE D,RUNAME ;ATTACHING DISOWNED JOB
|
||
MOVEM D,UUNAME(U)
|
||
.USET USRI,[.RJNAME,,D]
|
||
CAMN D,UJNAME(U) ;NAME MAY BE CHANGED TO PROTECT THE INNOCENT
|
||
JRST OPUSRW
|
||
MOVEM D,UJNAME(U)
|
||
CTYPE 40
|
||
PUSHJ P,SIXTYP
|
||
MOVSI D,(SIXBIT /$J/)
|
||
PUSHJ P,SIXTYP
|
||
JRST OPUSRW
|
||
|
||
OPUSR5: MOVE D,RUNAME
|
||
CAME D,UUNAME(U)
|
||
JRST OPUSRT
|
||
PUSHJ P,MRDR2 ;WIPE OUT THIS USER SLOT
|
||
MOVEI U,0
|
||
OPNER USRI,[(SIXBIT /USR/)] ;COMPLAIN
|
||
|
||
OPUSRT: MOVEM D,UNAME
|
||
CTYPE 40
|
||
MOVE D,RUNAME
|
||
PUSHJ P,SIXTYP
|
||
MOVSI D,(SIXBIT /$U/)
|
||
PUSHJ P,SIXTYP
|
||
PUSHJ P,MRDR2
|
||
JRST OUSR
|
||
|
||
CTLU: SKIPA D,[.TRANDL]
|
||
CTLT: MOVSI D,(.TRANAD)
|
||
HLLM D,CTRAN
|
||
PUSHJ P,TSPC
|
||
MOVE B,[CTTABF,,TTABF]
|
||
BLT B,TTABF+5
|
||
MOVSI B,-6
|
||
CTLT2: PUSHJ P,RFILEN
|
||
JRST CTLT3
|
||
PUSHJ P,CTLTT
|
||
AOBJN B,CTLT2
|
||
CTLT3: CAMN B,[-6,,0]
|
||
JRST ERR
|
||
SKIPE A
|
||
PUSHJ P,CTLTT
|
||
PUSH P,JNAME
|
||
MOVE D,[SIXBIT /*/]
|
||
TLNE F,CF
|
||
MOVEM D,JNAME
|
||
TLNN F,LTF
|
||
JRST CTRAN2
|
||
SETZM CTEM1
|
||
MOVEI W2,CTEM
|
||
PUSHJ P,BITE
|
||
CTLT0: MOVE W2,[440600,,CTEM]
|
||
CTLT1: ILDB D,W2
|
||
JUMPE D,CTRAN1
|
||
CAIN D,'A
|
||
JRST CTATOM
|
||
CAIN D,'I
|
||
JRST CTIN
|
||
CAIN D,'O
|
||
JRST CTOUT
|
||
CTERR: POP P,JNAME
|
||
JRST ERR
|
||
|
||
CTLTT: MOVEM A,TTABF(B)
|
||
CAME B,[-6,,0]
|
||
CAMN B,[-3,,3]
|
||
HLRZM A,TTABF(B)
|
||
POPJ P,
|
||
|
||
CTATOM: MOVSI D,(SETZ)
|
||
IORM D,TTABF
|
||
JRST CTLT1
|
||
|
||
CTOUT: SKIPA D,[2,,]
|
||
CTIN: MOVSI D,1
|
||
IORM D,CTEM1
|
||
JRST CTLT1
|
||
|
||
CTRAN1: SKIPN D,CTEM1
|
||
CTRAN2: MOVSI D,3
|
||
IORM D,TTABF
|
||
CTRAN: .TRAND UNAME
|
||
JRST CTERR
|
||
POP P,JNAME
|
||
JRST ALTL2
|
||
|
||
CTLF: JUMPL F,CTLF3
|
||
TLNE F,CF
|
||
JRST LINK
|
||
PUSHJ P,GDEV
|
||
CTLF0: HRRM D,FFILE
|
||
.OPEN FDRC,FFILE
|
||
JRST ERR
|
||
CTLF4: SETZM PFLUSH
|
||
PUSHJ P,FORMF
|
||
PUSHJ P,MORFIN
|
||
CTLF1: .IOT FDRC,D
|
||
JUMPL D,CTLF2
|
||
CAIN D,14
|
||
JRST CTLF6
|
||
SKIPE PFLUSH
|
||
JRST CTLF2
|
||
CAIE D,^C
|
||
PUSHJ P,MORFLS
|
||
JRST CTLF2
|
||
PUSHJ P,TOUT
|
||
JRST CTLF1
|
||
|
||
CTLF2: TRZ F,PRINTF
|
||
.CLOSE FDRC,
|
||
JRST ALTL2
|
||
|
||
CTLF6: TRNE F,PRINTF
|
||
PUSHJ P,FFMOR
|
||
JRST CTLF2
|
||
JRST CTLF4
|
||
|
||
CTLF3: TLNN F,QF
|
||
JRST ERR
|
||
MOVE D,SYL
|
||
FFLAP2: .UDISMT D,
|
||
TERR (SIXBIT /UNF/)
|
||
JRST ALTL2
|
||
|
||
FORMF: PUSHJ P,CRF
|
||
SKIPE GETTY
|
||
CTYPE ^L
|
||
POPJ P,
|
||
|
||
MORFIN: .STATUS TYOC,D
|
||
LDB D,[150500,,D]
|
||
SUBI D,2
|
||
CAIGE D,0
|
||
ADDI D,26.
|
||
MOVEM D,MORPOS
|
||
POPJ P,
|
||
|
||
MORFLS: PUSH P,D
|
||
.STATUS TYOC,D
|
||
SKIPE TTYFLG
|
||
SKIPN GETTY
|
||
JRST MORFL4
|
||
SKIPE SILNT
|
||
JRST MORFL4
|
||
LDB D,[150500,,D]
|
||
CAMN D,MORPOS
|
||
JRST MORFL3
|
||
MORFL4: POP P,D
|
||
JRST CPOPJ1
|
||
|
||
MORFL3: 7TYPE 1,[ASCIZ /--MORE--/]
|
||
PUSHJ P,IN
|
||
CAIE D,40
|
||
JRST MORFL2
|
||
PUSHJ P,CRF
|
||
MOVEI D,24.
|
||
CAME D,MORPOS
|
||
MOVEI D,25.
|
||
SUBI D,24.-^L
|
||
PUSHJ P,TOUT+1
|
||
POP P,D
|
||
JRST CPOPJ1
|
||
|
||
MORFL2: SETOM UNRCHF
|
||
7TYPE 1,[ASCIZ /FLUSHED/]
|
||
POP P,D
|
||
POPJ P,
|
||
|
||
FFMOR: .IOT FDRC,D
|
||
JUMPL D,CTLF2
|
||
SKIPE GETTY
|
||
SKIPN TTYFLG
|
||
JRST CPOPJ1
|
||
PUSH P,D
|
||
JRST MORFL3
|
||
|
||
|
||
LINK: MOVEI A,(SIXBIT /DSK/)
|
||
HRRM A,LFILN
|
||
MOVEI A,1
|
||
PUSHJ P,TSPC
|
||
LINK1: MOVEI B,0
|
||
MOVE C,[440600,,B]
|
||
LINK2: PUSHJ P,IIN
|
||
CAIN D,":
|
||
JRST LINK7
|
||
CAIN D,";
|
||
JRST LINK4
|
||
CAIN D,^Q
|
||
JRST LINK8
|
||
SUBI D,40
|
||
JUMPL D,LINK5
|
||
CAIL A,5
|
||
JRST LINK2
|
||
JUMPG D,LINK3
|
||
JUMPE B,LINK1
|
||
PUSHJ P,LFILE
|
||
AOJA A,LINK1
|
||
|
||
LINK8: PUSHJ P,IIN
|
||
SUBI D,40
|
||
LINK3: TLNE C,770000
|
||
IDPB D,C
|
||
JRST LINK2
|
||
|
||
LINK7: CAIG A,1 ;SYS: MUST BE FIRST FOR LINKS ON SYS DEV
|
||
HLRM B,LFILN
|
||
LINK4: MOVEM B,LFILN+5
|
||
JRST LINK1
|
||
|
||
LINK5: PUSHJ P,LFILE
|
||
CAIL A,3
|
||
JRST LINK6
|
||
MOVE B,LFILN+1
|
||
MOVEM B,LFILN+3
|
||
MOVE B,LFILN+2
|
||
MOVEM B,LFILN+4
|
||
LINK6: TSOPEN FDRC,LFILN
|
||
.CLOSE FDRC,
|
||
MOVE D,LFILN
|
||
SKIPN GETTY
|
||
JRST ALTL2
|
||
JRST CTLF0
|
||
|
||
LFILE: TRNN A,1
|
||
JRST LFILE1
|
||
MOVEM B,LFILN+1(A)
|
||
POPJ P,
|
||
|
||
LFILE1: EXCH B,LFILN(A)
|
||
MOVEM B,LFILN-1(A)
|
||
POPJ P,
|
||
|
||
RRFILE: PUSHJ P,QJERR
|
||
SETZM PCROCK
|
||
RRFLA: PUSHJ P,TSPC
|
||
PUSHJ P,GDEV
|
||
RRFLB: MOVEI C,IFILE
|
||
RRFL1: PUSHJ P,RFILEN
|
||
JSP W1,RRFL2
|
||
MOVEM A,1(C)
|
||
PUSHJ P,RFILEN
|
||
JSP W1,RRFL2
|
||
MOVEM A,2(C)
|
||
PUSHJ P,RFILEN
|
||
JSP W1,RRFL2
|
||
HLRM A,(C)
|
||
MOVEI A,0
|
||
RRFL2: PUSHJ P,CRF
|
||
JUMPE A,.+2
|
||
XCT (W1)
|
||
.SUSET [.RSNAM,,LSNAM]
|
||
MOVE A,4(C)
|
||
.SUSET [.SSNAM,,A]
|
||
POPJ P,
|
||
|
||
RFILEN: MOVE W1,[440600,,A]
|
||
MOVEI A,0
|
||
RFLNL: PUSHJ P,IIN
|
||
CAIE D,33
|
||
CAIN D,15
|
||
POPJ P,
|
||
SETZM PCROCK
|
||
CAIE D,"
|
||
CAIN D,11
|
||
JRST RFLN3
|
||
CAIN D,":
|
||
JRST RFLN4
|
||
CAIN D,";
|
||
JRST RFLN5
|
||
CAIN D,^Q
|
||
PUSHJ P,IIN
|
||
SUBI D,40
|
||
TLNE W1,770000
|
||
IDPB D,W1
|
||
JRST RFLNL
|
||
|
||
RFLN3: JUMPE A,RFLNL
|
||
JRST CPOPJ1
|
||
|
||
RFLN4: JUMPE A,RFLNL
|
||
HLRM A,(C)
|
||
JRST RFILEN
|
||
|
||
RFLN5: MOVEM A,4(C)
|
||
JRST RFILEN
|
||
|
||
GDEV: TLNN F,LTF
|
||
JRST GDEV2
|
||
MOVEI W2,TEM
|
||
PUSHJ P,BITE
|
||
HLRZ D,TEM
|
||
GDEV3: HRRM D,IFILE
|
||
POPJ P,
|
||
|
||
GDEV2: TLNN F,QF
|
||
JRST GDEV4
|
||
LDB D,[300,,SYL]
|
||
ADDI D,(SIXBIT /UT0/)
|
||
JRST GDEV3
|
||
|
||
GDEV4: MOVE D,IFILE
|
||
POPJ P,
|
||
|
||
CTLO: MOVE D,RUNAME
|
||
AOJE D,LOGQ
|
||
PUSHJ P,RRFLA
|
||
MOVEI D,IFILE
|
||
SKIPE PCROCK
|
||
MOVEI D,PFILE ;LAST FILE NAME READING COMMAND WAS A :PRINT
|
||
SETZM PCROCK
|
||
.FDELE (D)
|
||
OPNER 0,(D)
|
||
MOVE D,(D)
|
||
SKIPL GETTY
|
||
JRST ALTL2
|
||
JRST CTLF0
|
||
|
||
XFILE: PUSHJ P,RRFLB
|
||
HRRZS IFILE
|
||
TSOPEN COMC,IFILE
|
||
MOVE D,[.IOT COMC,D]
|
||
MOVEM D,ININST
|
||
JRST ALTL2
|
||
|
||
PRINT: MOVEI C,PFILE
|
||
PUSHJ P,RRFL1
|
||
SETOM SRFLAG
|
||
TSOPEN FDRC,PFILE
|
||
SETOM PCROCK
|
||
SETZM SRFLAG
|
||
.SUSET [.SSNAM,,LSNAM]
|
||
TRO F,PRINTF
|
||
JRST CTLF4
|
||
|
||
.ZZ3==.
|
||
LOC .ZZ2
|
||
|
||
;INTERRUPT HANDLER
|
||
|
||
TSINT: 0
|
||
0
|
||
SKIPL I1,TSINT
|
||
JRST OTHERI
|
||
TRNE I1,1_<TYIC>
|
||
PUSHJ P,TSINTT
|
||
TRNE I1,1_<COMC>
|
||
PUSHJ P,TSINTC
|
||
TLNN I1,177777
|
||
.DISMIS TSINT+1
|
||
SETZM DGO
|
||
MOVEI I2,USRS
|
||
PUSH P,A
|
||
PUSH P,B
|
||
PUSH P,D
|
||
PUSH P,W1
|
||
PUSH P,W2
|
||
PUSH P,W3
|
||
.IOPUSH USRI,
|
||
.IOPUSH USRO,
|
||
TSIN2: TDZE I1,INTBIT(I2)
|
||
JRST TSIN3
|
||
TSIN22: ADDI I2,USRLNG
|
||
CAIGE I2,USREND
|
||
JRST TSIN2
|
||
.IOPOP USRO,
|
||
.IOPOP USRI,
|
||
POP P,W3
|
||
POP P,W2
|
||
POP P,W1
|
||
POP P,D
|
||
POP P,B
|
||
POP P,A
|
||
TLNN I1,-1
|
||
TERR (SIXBIT /NML/)
|
||
SKIPN DGO
|
||
.DISMIS TSINT+1
|
||
SKIPN DDTTY ;DDT DOESNT HAVE TTY, MAY JUST BE LEAVING
|
||
SETOM DDINT;SET FLAG FOR RESTORE TO START DDT
|
||
SKIPE SARS
|
||
.DISMIS TSINT+1 ;DDT RUNNING
|
||
MOVE A,INTUSR ;WHICH USR INTERRUPTING (DONT CLOBBER D FOR SLP)
|
||
SKIPN DDTTY ;MAY REALLY STILL BE IN DDT
|
||
CAMN A,TTYUSR ;NOT THE SAME AS GAVE TTY TO
|
||
.DISMIS [UBREAK] ;ONLY NON-RETURN NON-ERROR EXIT FROM INTERRUPT ROUTINE
|
||
PUSHJ P,TSWARN ;MESSAGE TO LOSER
|
||
.DISMIS TSINT+1 ;RESTORE WORLD
|
||
|
||
.ZZ4==.
|
||
LOC .ZZ3
|
||
|
||
TSWARN: JSR %SAVE
|
||
SKIPE GETTY
|
||
.IOT TYOC,["^]
|
||
.IOT TYOC,[^G]
|
||
JRST %UNSAVE
|
||
|
||
OTHERI: TRZE I1,BIOC
|
||
PUSHJ P,IOCBRK
|
||
TRZE I1,SYSDDB
|
||
PUSHJ P,SYSDED
|
||
TLZE I1,(SYSDBB)
|
||
PUSHJ P,SYSDBG
|
||
TRZE I1,BCLI
|
||
PUSHJ P,CLIBRK
|
||
TLNE I1,200
|
||
TERR (SIXBIT /PUR/)
|
||
TRNE I1,ILUADB
|
||
TERR (SIXBIT /COR/)
|
||
TRNE I1,ILOPRB ;IF ILLOP,
|
||
PUSHJ P,ILOPBK ;CHECK FOR CERTAIN .USET'S
|
||
TRNN I1,-1
|
||
.DISMIS TSINT+1
|
||
PUSHJ P,COMPLN
|
||
MOVE D,I1
|
||
HRRZ D,TSINT+1
|
||
TERR (SIXBIT /INT/)
|
||
|
||
IOCBRK: SOS I2,TSINT+1
|
||
LDB I3,[270400,,(I2)]
|
||
DPB I3,[270400,,IOCX]
|
||
XCT IOCX ;THIS IS A .STATUS
|
||
LDB I4,[330500,,I4]
|
||
CAIN I4,9
|
||
JRST IOCFUL
|
||
CAIN I4,8
|
||
JRST IOCOPN
|
||
CAIN I4,7
|
||
JRST NOUSER ;USER NOT OPEN ON CHANNEL
|
||
IOCER2: PUSHJ P,COMPLN
|
||
MOVE D,I4
|
||
MOVE D,I3
|
||
HRRZ D,TSINT+1
|
||
TERR (SIXBIT /IOC/)
|
||
|
||
NOUSER: CAIE I3,USRI ;IF GUILTY IO CHANNEL...
|
||
CAIN I3,USRO ;IS EITHER USER IO CHANNEL,
|
||
JRST .+2 ;THEN CHECK FURTHER
|
||
JRST IOCER2 ;NOT USER CHANNEL, COMPLAIN
|
||
MOVE I2,-1(I2) ;GET GUILTY INSTRUCTION
|
||
TLZ I2,(0 17,) ;WIPE OUT AC FIELD
|
||
CAME I2,[.UCLOSE] ;IF NOT .UCLOSE,
|
||
JRST IOCER2 ;THEN COMPLAIN
|
||
POPJ P, ;.UCLOSE, LET IT CONTINUE
|
||
|
||
ILOPBK: MOVE I2,TSINT+1 ;ILLOP BREAK
|
||
MOVS I3,-1(I2) ;GET GUILTY INSTRUCTION
|
||
LDB I4,[050400,,I3] ;GET AC FIELD
|
||
CAIE I4,USRI ;IF USER INPUT,
|
||
CAIN I4,USRO ;OR USER OUTPUT,
|
||
TRNE I1,20000 ;THEN CHECK FURTHER UNLESS MPV.
|
||
POPJ P, ;DON'T CHECK FURTHER
|
||
ANDI I3,777000 ;MASK TO INSTRUCTION PART
|
||
CAIE I3,(.USET) ;IF NOT .USET,
|
||
POPJ P, ;THEN GO COMPLAIN
|
||
HLRZ I4,@-1(I2) ;GET LH OF CONTENTS OF EFFECTIVE ADDRESS
|
||
CAIE I4,.SJNAM ;IF NOT TRYING TO SET JNAME,
|
||
POPJ P, ;THEN GO COMPLAIN
|
||
PUSHJ P,ERTTY ;TRYING TO SET JNAME, COMPLAIN IN ENGLISH
|
||
STRT [SIXBIT /JOB ALREADY EXISTS./]
|
||
JRST ERR4
|
||
|
||
IOCFUL: CAIE I3,UTOC
|
||
JRST IOCER2
|
||
MOVEM I3,IOCF+2
|
||
.GENSYM I4,
|
||
MOVEM I4,IOCF+3
|
||
.FDELE IOCF
|
||
JRST ERR
|
||
.CLOSE UTOC,
|
||
MOVE I4,IFILE
|
||
MOVEM I4,IOCF+2
|
||
.FDELE IOCF+2
|
||
JFCL
|
||
PUSHJ P,TTYRET
|
||
PUSHJ P,CRF
|
||
STRT [SIXBIT /DEVICE FULL, DUMP ABORTED./]
|
||
MOVE I4,IFILE
|
||
TERR (I4)
|
||
|
||
TSINTT: SKIPA I3,[TYIC]
|
||
TSINTC: MOVEI I3,COMC
|
||
.ITYIC I3,
|
||
POPJ P,
|
||
CAIN I3,^S
|
||
JRST SILNCE
|
||
CAIN I3,^E
|
||
JRST LPTSTP
|
||
CAIE I3,^G
|
||
POPJ P,
|
||
PUSHJ P,%RESET
|
||
.RESET TYOC,
|
||
.RESET TYIC,
|
||
MOVEI I3,TQUIT
|
||
MOVEM I3,TSINT+1
|
||
POPJ P,
|
||
|
||
%RESET: .IOPDL ;RESET I/O PDL
|
||
.CLOSE COMC,
|
||
.CLOSE FDRC,
|
||
.CLOSE ERRC,
|
||
.CLOSE CLIC,
|
||
.CLOSE CLAC,
|
||
CLEARM LPTFLG
|
||
.RESET LPTC,
|
||
.CLOSE LPTC,
|
||
SETZM DDTTY
|
||
PUSHJ P,TTYRET ;GET BACK TTY IF GIVEN AWAY
|
||
SETOM DDTTY
|
||
SETOM TTYFLG
|
||
PUSHJ P,CLSU ;CLOSE DECTAPE CHANNELS
|
||
SETZM ININST
|
||
SETZM SILNT ;FLUSH TIMING ERROR
|
||
POPJ P,
|
||
|
||
TQUIT: SKIPN UUNAME(U)
|
||
SETZB U,HIGH
|
||
MOVE D,[[SIXBIT /QUIT/],,101]
|
||
JRST UUOH2
|
||
|
||
SILNCE: .RESET TYOC,
|
||
SETOM SILNT
|
||
SKIPN LPTFLG
|
||
SETOM PFLUSH
|
||
POPJ P,
|
||
|
||
LPTSTP: SETZM LPTFLG
|
||
SKIPE SILNT
|
||
SETOM PFLUSH
|
||
SKIPN TTYFLG
|
||
SETOM PFLUSH
|
||
POPJ P,
|
||
|
||
TSIN3: MOVE I3,UUNAME(I2)
|
||
MOVEM I3,TUNAME
|
||
MOVE I3,UJNAME(I2)
|
||
MOVEM I3,TJNAME
|
||
MOVEI I3,2
|
||
HRLM I3,TSUSRF
|
||
.OPEN USRI,TSUSRF
|
||
JRST TSIN22
|
||
MOVEI I3,3
|
||
HRLM I3,TSUSRF
|
||
.OPEN USRO,TSUSRF
|
||
JRST TSIN22
|
||
.USET USRI,[.RPIRQC,,I3]
|
||
MOVEM I3,UPIRQ(I2) ;USER PIR => UPIRQ
|
||
.USET USRI,[.RMASK,,W3]
|
||
ANDCM I3,W3
|
||
ANDI I3,267666 ;AND WITH BAD BITS
|
||
.USET USRI,[.SAPIRQ,,I3]
|
||
.USET USRI,[.RUPC,,I3]
|
||
TLZ I3,OIPBIT
|
||
MOVEM I3,IPC
|
||
MOVEM I3,PPC(I2) ;USER PC => PPC
|
||
MOVE I3,UPIRQ(I2)
|
||
TRNE I3,2 ;^Z BIT
|
||
JRST TSIN44
|
||
TRNN I3,BRKBIT
|
||
JRST TSIN44 ;NOT A .BREAK
|
||
.USET USRI,[.RSV40,,I40]
|
||
TSIN3A: LDB I3,[270400,,I40]
|
||
SETZM NBPTB(I2)
|
||
JRST @TSDISP(I3) ;DISPATCH ON AC FIELD OF .BREAK
|
||
|
||
SYSDED: JSR %SAVE
|
||
7TYPE [ASCIZ /
|
||
ITS GOING DOWN IN /]
|
||
.DIETIM D,
|
||
IDIVI D,30.
|
||
PUSHJ P,TMPT
|
||
PUSHJ P,CRF
|
||
%UNSAVE: POP P,UUOH
|
||
POP P,40
|
||
POP P,W1
|
||
POP P,TEM
|
||
POP P,D
|
||
POP P,C
|
||
POP P,DDTTY
|
||
SKIPN DDTTY
|
||
.ATTY USRI,
|
||
JFCL
|
||
POPJ P,
|
||
|
||
SYSDBG: JSR %SAVE
|
||
7TYPE [ASCIZ /
|
||
ITS BEING DEBUGGED!
|
||
/]
|
||
JRST %UNSAVE
|
||
|
||
.ZZ5==.
|
||
LOC .ZZ4
|
||
|
||
%SAVE: 0
|
||
PUSH P,DDTTY
|
||
PUSHJ P,TTYRET
|
||
PUSH P,C
|
||
PUSH P,D
|
||
PUSH P,TEM
|
||
PUSH P,W1
|
||
PUSH P,VLRTSL
|
||
PUSH P,UUOH
|
||
JRST @%SAVE
|
||
|
||
.ZZ6==.
|
||
LOC .ZZ5
|
||
|
||
IOCOPN: CAIE I3,TYIC
|
||
CAIN I3,TYOC
|
||
JRST .+2
|
||
JRST IOCER2
|
||
TSOPEN TYOC,TYOF
|
||
TSOPEN TYIC,TYIF
|
||
SETZM GETTY
|
||
.STATUS TYOC,I4
|
||
ANDI I4,77
|
||
CAIN I4,SYSGE
|
||
SETOM GETTY
|
||
POPJ P,
|
||
|
||
CLIBRK: JSR %SAVE
|
||
CLIBR2: .OPEN CLAC,CLAFNB
|
||
JRST %UNSAVE
|
||
MOVE I3,[-CLABL,,CLABUF]
|
||
.IOT CLAC,I3
|
||
.CLOSE CLAC,
|
||
MOVEI I4,0
|
||
MOVE I3,CLABUF
|
||
CAMN I3,RUNAME
|
||
ADDI I4,2
|
||
MOVE I3,CLABUF+1
|
||
CAME I3,[SIXBIT /HACTRN/]
|
||
ADDI I4,1
|
||
DPB I4,[360600,,CLABRP]
|
||
LDB I4,CLABRP
|
||
JUMPE I4,CLIBR2
|
||
7TYPE [ASCIZ /
|
||
MESSAGE FROM /]
|
||
MOVE D,CLABUF
|
||
PUSHJ P,SIXTYP
|
||
CTYPE 40
|
||
MOVE D,CLABUF+1
|
||
PUSHJ P,SIXTYP
|
||
CTYPE 40
|
||
PUSHJ P,CRF
|
||
7TYPE CLABUF+2
|
||
PUSHJ P,CRF
|
||
JRST CLIBR2
|
||
|
||
TMPT: MOVEI C,0
|
||
JUMPE D,CPOPJ
|
||
CAMGE D,TMT1(C)
|
||
AOJA C,.-1
|
||
TMP3: IDIV D,TMT1(C)
|
||
CTYPE "0(D)
|
||
MOVE D,W1
|
||
TRNN C,1
|
||
AOJA C,TMP3
|
||
CAIL C,5
|
||
POPJ P,
|
||
CTYPE ":
|
||
AOJA C,TMP3
|
||
|
||
TMT1: 36000.
|
||
3600.
|
||
600.
|
||
60.
|
||
10.
|
||
1
|
||
|
||
|
||
COMPLN: PUSHJ P,ERTTY
|
||
MOVEI D,8
|
||
MOVEM D,ODF ;SET CURRENT RADIX TO OCTAL
|
||
CMPLN2: PUSHJ P,TSPC
|
||
XCT @(P)
|
||
PUSHJ P,TOC
|
||
AOS (P)
|
||
MOVEI D,",
|
||
PUSHJ P,TOUT ;DON'T CHANGE TO A UUO, WILL CLOBBER 40, UUOH, ETC.
|
||
JRST CMPLN2
|
||
|
||
ERTTY: PUSHJ P,TTYRET
|
||
MOVNI A,1
|
||
AOSG STYSW ;IF TTYFLG NOT ALREADY SAVED,
|
||
EXCH A,TTYFLG ;THEN SAVE IT
|
||
MOVEM A,STYFLG
|
||
POPJ P,
|
||
|
||
TSIN44: TRNN I3,VALBIT
|
||
JRST TSIN4A
|
||
SKIPL PERMIT(I2)
|
||
JRST TSIN4
|
||
.USET USRI,[.RSV40,,I3]
|
||
TRNE I3,-1
|
||
MOVEM I3,VALCOM(I2)
|
||
PROCX:
|
||
TSIN4: SETOM I3
|
||
TSIN5: MOVEM I3,UINT(I2)
|
||
TSIN6: MOVEM I2,INTUSR
|
||
SKIPN DDTTY
|
||
JRST TSIN7
|
||
SKIPE GETTY ;HAS TTY, TYPE BELL
|
||
.IOT TYOC,["^]
|
||
.IOT TYOC,[^G] ;DING
|
||
TSIN7: SETOM DGO
|
||
JRST TSIN22 ;LOOP BACK FOR MORE LOSERS
|
||
|
||
TSIN4A: TRNN I3,OIPINT
|
||
JRST TSIN4
|
||
HRRZ D,IPC
|
||
CAIE D,32
|
||
CAIN D,33
|
||
AOS INCNT(I2)
|
||
MOVSI D,OIPBIT
|
||
SOSG INCNT(I2)
|
||
JRST TSIN4
|
||
IORM D,IPC ;MAKE SURE ONEPROC BIT ON IN PC FOR PROCEDE
|
||
JRST GO
|
||
|
||
TSDISP: TSIN4 ;RANDOM INST., INTERRUPT DDT
|
||
REPEAT NBP,TSIN9 ;REGULAR BPT
|
||
REPEAT 12-NBP,TSIN4 ;RANDOM
|
||
TSBPC1
|
||
TSBPC2
|
||
TSIN8 ;PROCEED INS POINTER
|
||
REPEAT 2,TSIN5 ;$X RETURN 1,2
|
||
|
||
TSIN9: MOVEM I3,UINT(I2)
|
||
IMULI I3,BPL
|
||
ADDI I3,-BPL(I2)
|
||
SOSG B1CNT(I3)
|
||
JRST TSIN6 ;COUNT RAN OUT,BREAK TO DDT
|
||
SKIPE D,BPCON(I3)
|
||
JRST TSBPC
|
||
MOVE W3,B1INS(I3)
|
||
HRR W3,I40
|
||
TLZ W3,37
|
||
JRST PROC ;PROCEED AND INTERPRET BPT INS
|
||
|
||
TSIN8: HRRZ I3,IPC
|
||
CAIE I3,$X+1
|
||
JRST TSIN4 ;AT A RANDOM PLACE
|
||
MOVE I3,OPC(I2)
|
||
MOVEM I3,IPC
|
||
MOVEM I3,PPC(I2) ;FAKE OUT PC DEPENDANT PROCEED
|
||
MOVE W3,BPLOC(I2)
|
||
LDB I3,[2200,,I40]
|
||
DPB I3,[2700,,W3]
|
||
JRST PROC ;INTERPRET INS @ LOC PROCEEDED FROM(POINTED TO BY .BREAK 15, IN $X)
|
||
|
||
TSBPC: HRRZ I3,UINT(I2)
|
||
MOVEM I3,CBPPS(I2)
|
||
MOVE A,I40
|
||
HRLM A,CBPPS(I2)
|
||
MOVEI A,CBPB
|
||
PUSHJ P,DEP
|
||
MOVSI D,(.BREAK 13,)
|
||
MOVEI A,CBPB+1
|
||
PUSHJ P,DEP
|
||
MOVSI D,(.BREAK 14,)
|
||
MOVEI A,CBPB+2
|
||
PUSHJ P,DEP
|
||
MOVEI D,CBPB
|
||
MOVEM D,PPC(I2)
|
||
EXCH D,IPC
|
||
MOVEM D,BPCPC(I2)
|
||
.USET USRI,[.SUPC,,IPC]
|
||
.USET USRI,[.SUSTP,,[0]]
|
||
SETZM UINT(I2)
|
||
JRST TSIN22
|
||
|
||
TSBPC1: MOVE D,BPCPC(I2)
|
||
MOVEM D,IPC
|
||
MOVEM D,PPC(I2)
|
||
HRRZ D,CBPPS(I2)
|
||
IMULI D,BPL
|
||
ADDI D,-BPL(I2)
|
||
MOVE W3,B1INS(D)
|
||
HLR W3,CBPPS(I2)
|
||
TLZ W3,37
|
||
JRST PROC
|
||
|
||
TSBPC2: MOVE D,BPCPC(I2)
|
||
MOVEM D,IPC
|
||
MOVEM D,PPC(I2)
|
||
HRRZ I3,CBPPS(I2)
|
||
SETOM NBPTB(I2)
|
||
JRST TSIN5
|
||
|
||
UVLOOK: .CLOSE COMC,
|
||
SETZB A,ININST
|
||
TROA A,2
|
||
UBREAK: MOVEI A,0
|
||
PUSHJ P,TTYRET
|
||
SKIPA
|
||
ALTJ9: MOVEI A,1
|
||
MOVEI P,PS
|
||
SETZM DDINT
|
||
MOVEM U,CU
|
||
SKIPN U
|
||
MOVEI U,USRS
|
||
SETOM THFLAG
|
||
UBRK2: SKIPE D,UINT(U)
|
||
JRST OPUSR1 ;JOB$J THEN JRST UBRK1
|
||
;OPUSR1 CLOBBERS A TO 4 IF VALRET WITH ININST .NE. 0 AND DOES JRST UBRK9
|
||
UBRK9: ADDI U,USRLNG
|
||
CAIGE U,USREND
|
||
JRST UBRK2
|
||
MOVEI U,USRS
|
||
AOSN THFLAG
|
||
JRST UBRK2
|
||
MOVE U,CU
|
||
TRZE A,6
|
||
JRST DD1B
|
||
SKIPN A
|
||
JRST ALTL2
|
||
SOS D,NJ2
|
||
MOVEM D,JTIME(U)
|
||
JRST FNJOB
|
||
|
||
UBRK0: PUSHJ P,CRF
|
||
UBRK1: JSR SAVE
|
||
PUSHJ P,REMOVB
|
||
MOVEI D,0
|
||
EXCH D,UINT(U)
|
||
MOVEM D,UINTWD(U)
|
||
AOJE D,UBRK3 ;RANDOM INS LOSSAGE (MPV ETC)
|
||
CAIG D,16
|
||
JRST UBRK4 ;BPT
|
||
MOVE A,XECPC(U)
|
||
MOVEM A,PPC(U)
|
||
MOVE A,XINTWD(U)
|
||
MOVEM A,UINTWD(U)
|
||
CAIN D,20 ;$X RETURN
|
||
PUSHJ P,CRF
|
||
JRST ALTL5
|
||
|
||
UBRK3: MOVE D,UPIRQ(U)
|
||
TDNE D,[200,,63644]
|
||
SOS PPC(U)
|
||
TRNE D,2 ;SKIP IF NOT CONTROL Z INTERRUPT
|
||
PUSHJ P,CRF
|
||
PUSHJ P,PCPNT
|
||
HRRZ A,TEM3
|
||
PUSHJ P,FETCH
|
||
JRST ERR
|
||
PUSHJ P,CONSYM
|
||
HRRZ D,UPIRQ(U)
|
||
TRNE D,VALBIT+40000
|
||
AOS PPC(U) ;CAUSE PROCEDE FROM VALDD1 TO PROCEDE
|
||
TRNE D,40000
|
||
.USET USRI,[.SMARA,,MARCON]
|
||
JRST RET
|
||
|
||
|
||
PCPNT: MOVE D,UPIRQ(U)
|
||
TLNE D,200
|
||
STRT [SIXBIT /PURPG./]
|
||
TRNE D,40000
|
||
STRT [SIXBIT /MAR./]
|
||
TRNE D,20000
|
||
STRT [SIXBIT /MPV./]
|
||
TRNE D,1000
|
||
STRT [SIXBIT /ILUAD./]
|
||
TRNE D,400
|
||
STRT [SIXBIT /IOC./]
|
||
TRNE D,40
|
||
STRT [SIXBIT /ILOPR./]
|
||
TRNE D,20
|
||
STRT [SIXBIT /DPY./]
|
||
TRNE D,4
|
||
STRT [SIXBIT /BADPI./]
|
||
SKIPGE VALCOM(U)
|
||
JRST PCPNT4 ;VALUE RETURN
|
||
HRRZ D,PPC(U)
|
||
CAIE D,31
|
||
JRST PCPNT1
|
||
MOVEI A,32
|
||
PUSHJ P,FETCH
|
||
JFCL
|
||
MOVEI D,-1(D)
|
||
PCPNT1: MOVEM D,TEM3
|
||
PUSHJ P,PADSO
|
||
MOVEI D,2
|
||
TDNE D,UPIRQ(U)
|
||
JRST PCPNT2
|
||
MOVEI D,">
|
||
SKIPL NBPTB(U)
|
||
PUSHJ P,TOUT
|
||
JRST TOUT
|
||
|
||
PCPNT2: MOVEI D,")
|
||
PUSHJ P,TOUT
|
||
JRST LCT
|
||
|
||
PCPNT4: SETZM VALCOM(U)
|
||
AOS PPC(U) ;CAUSE VALRET NOT TO UNSKIP
|
||
JRST ALTL2
|
||
|
||
UBRK4: IMULI D,BPL ;BREAK POINT (D IS UINT+1)
|
||
ADDI D,B1ADR-2*BPL+770000(U)
|
||
PUSHJ P,PCPNT1
|
||
SOS D,PPC(U)
|
||
MOVEM D,OPC(U)
|
||
AOS OPC(U)
|
||
PUSHJ P,PAD
|
||
MOVE A,TEM3 ;@ PCPNT1
|
||
HRRZ D,-770000(A)
|
||
MOVEM D,BPLOC(U)
|
||
HLRZ D,-770000(A)
|
||
JUMPE D,UBRK5
|
||
PUSHJ P,LCT
|
||
HLRZ D,-770000(A)
|
||
PUSHJ P,PLOC
|
||
PUSHJ P,LI1
|
||
UBRK5: MOVE A,UINTWD(U)
|
||
MOVEI B,1
|
||
LSH B,-1(A)
|
||
TDNN B,AUTOPI
|
||
JRST RET
|
||
PUSHJ P,LISTN
|
||
JRST PROCD1
|
||
JRST RET
|
||
|
||
RUBLK1: .ACCESS USRI,[0]
|
||
SETZM TEM1
|
||
POPJ P,
|
||
|
||
RUBLK: MOVE A,HIGH
|
||
MOVEI D,BUFL
|
||
CAMG A,TEM1
|
||
POPJ P,
|
||
ADDM D,TEM1
|
||
MOVE D,[-BUFL,,USRBF]
|
||
.IOT USRI,D
|
||
JRST CPOPJ1
|
||
BPBLK=31
|
||
CBPB==26
|
||
|
||
PROC: MOVEI B,100
|
||
PROC1: SOJLE B,PROCX
|
||
LDB W2,[270400,,W3]
|
||
LDB D,[331100,,W3]
|
||
CAIN D,260
|
||
JRST IPUSHJ
|
||
CAIN D,264
|
||
JRST IJSR
|
||
CAIN D,265
|
||
JRST IJSP
|
||
CAIN D,266
|
||
JRST IJSA
|
||
CAIN D,256
|
||
JRST IXCT
|
||
TRNN D,700
|
||
JRST IUUO
|
||
PROCR: MOVE D,W3 ;PUT INS IN 31,JRST INS+1 IN 32,JRST INS+2 IN 33
|
||
MOVEI A,BPBLK
|
||
PUSHJ P,DEP
|
||
MOVE D,IPC
|
||
HRRM A,IPC
|
||
HRLI D,(JRST)
|
||
MOVEI A,BPBLK+1
|
||
PUSHJ P,DEP
|
||
MOVEI A,BPBLK+2
|
||
AOS D
|
||
PUSHJ P,DEP
|
||
MOVSI D,OIPBIT
|
||
SKIPLE INCNT(I2)
|
||
IORM D,IPC
|
||
GO: .USET USRI,[.SUPC,,IPC] ;START LOSER BACK UP
|
||
.USET USRI,[.SUSTP,,[0]]
|
||
SETZM UINT(I2)
|
||
JRST TSIN22 ;BACK FOR MORE LOSERS
|
||
|
||
IJSP: TLCA W3,(MOVE#JSP)
|
||
IPUSHJ: TLC W3,(PUSH#PUSHJ)
|
||
MOVE D,IPC ;?
|
||
HRRM W3,IPC
|
||
HRRI W3,BPBLK-1
|
||
MOVEI A,BPBLK-1
|
||
PUSHJ P,DEP
|
||
JRST PROCR
|
||
|
||
|
||
IJSR: MOVE D,IPC
|
||
HRRZ A,W3
|
||
IJSR1: PUSHJ P,DEP
|
||
HRLI W3,(JRST)
|
||
AOJA W3,PROCR
|
||
|
||
IJSA: HRRZ A,W2
|
||
PUSHJ P,FETCH
|
||
JRST PROCX
|
||
HRRZ A,W3
|
||
CAILE A,HIGH
|
||
JRST PROCX
|
||
PUSHJ P,DEP
|
||
HRRZ A,W2
|
||
HRR D,IPC
|
||
HRL D,W3
|
||
JRST IJSR1
|
||
|
||
IXCT: HRRZ A,W3
|
||
IXCT1: PUSHJ P,FETCH
|
||
JRST PROCX
|
||
MOVE W3,D
|
||
MOVEI A,100
|
||
MOVEM A,TEM2
|
||
IXCT3: LDB A,[220400,,D]
|
||
JUMPE A,IXCT2
|
||
PUSHJ P,FETCH
|
||
JRST PROCX
|
||
ADDI W3,(D)
|
||
IXCT2: TLNE W3,20
|
||
JRST IXCTIN
|
||
TLZ W3,37
|
||
JRST PROC1
|
||
|
||
IXCTIN: SOSGE TEM2
|
||
JRST PROCX
|
||
HRRZ A,W3
|
||
PUSHJ P,FETCH
|
||
JRST PROCX
|
||
DPB D,[2700,,W3]
|
||
MOVE D,W3
|
||
JRST IXCT3
|
||
|
||
IUUO: CAIN D,45
|
||
JRST IBPT
|
||
CAIGE D,47
|
||
CAIGE D,40
|
||
JRST .+2 ;USER UUO
|
||
JRST PROCR
|
||
MOVE D,W3
|
||
MOVEI A,40
|
||
PUSHJ P,DEP<45>
|
||
MOVEI A,41
|
||
JRST IXCT1
|
||
IBPT: MOVEM W3,I40
|
||
JRST TSIN3A
|
||
|
||
ADUMP: TLNN F,FAF ;IF "<" NOT TYPED,
|
||
PUSHJ P,DCKSYS ;AND C(34) .NE. 0 AND TRYING TO DUMP ONTO SYS THEN BARF
|
||
SKIPL F
|
||
.FDELE IFILE
|
||
JFCL
|
||
MOVEI A,3
|
||
HRLM A,IFILE
|
||
TSOPEN UTOC,IFILE
|
||
PUSHJ P,ADMP
|
||
.CLOSE UTOC,
|
||
POPJ P,
|
||
|
||
DCKSYS: HRRZ A,IFILE ;GET DEVICE NAME
|
||
CAIE A,(SIXBIT /SYS/) ;IF NOT TRYING TO DUMP OUT ON SYS DEVICE (DON'T WORRY ABOUT SYS NAME),
|
||
POPJ P, ;THEN OK
|
||
MOVEI A,$X ;WANTS TO DUMP OUT IN SYS
|
||
PUSHJ P,FETCH ;GET JOB'S LOCATION 34
|
||
JFCL ;(SHOULD SKIP)
|
||
JUMPE D,CPOPJ ;IF CONTENTS WERE ZERO THEN ALL RIGHT
|
||
|
||
;JOB'S LOC. 34 NON-ZERO WHILE TRYING TO DUMP OUT ON SYS DEVICE
|
||
|
||
PUSHJ P,ERTTY ;CAUSE TYPEOUT TO EXIST
|
||
STRT [SIXBIT /JOB HAS BEEN RUN./] ;OVERRIDABLE WITH 1<$Y
|
||
JRST ERR5
|
||
|
||
ADMP: MOVE C,[JRST 1]
|
||
PUSHJ P,COUT
|
||
PUSHJ P,RUBLK1
|
||
ADMP1: PUSHJ P,RUBLK
|
||
JRST ADMPS ;IF NO SKIP, TIME TO WRITE OUT JMP BLK AND SYMS
|
||
MOVSI A,-BUFL ;INDEX INTO USRBF
|
||
ADMP7: SKIPN USRBF(A)
|
||
AOBJN A,.-1
|
||
JUMPGE A,ADMP1 ;READ NEXT BLOCK OF CORE
|
||
MOVEM A,W1 ;FOUND SOME NON-ZERO CORE, DUMP IT
|
||
SKIPE USRBF(A) ;LOOK FOR END OF NON-ZERO BLOCK
|
||
ADMP3: AOBJN A,.-1
|
||
JUMPGE A,ADMP2 ;CALL IT A BLOCK
|
||
SKIPE USRBF+1(A) ;HA HA
|
||
JRST ADMP3
|
||
ADMP2: MOVEM A,W2 ;SAVE FOR END TEST
|
||
SUBM W1,A
|
||
MOVEI C,-BUFL(W1) ;LEFT OF W1 IS BUFL TOO SMALL
|
||
ADD C,TEM1 ;TEM1 IS BUFL TOO LARGE
|
||
HRL C,A
|
||
MOVE A,C
|
||
PUSHJ P,COUT
|
||
ADDI W1,UBUF
|
||
HRR A,W1
|
||
.IOT UTOC,A
|
||
HLL W1,C
|
||
|
||
ADMP6: ROT C,1
|
||
ADD C,(W1)
|
||
AOBJN W1,ADMP6
|
||
PUSHJ P,COUT
|
||
MOVE A,W2
|
||
JRST ADMP7
|
||
|
||
ADMPS: PUSHJ P,DJBLK
|
||
SKIPL C,JOBSYM(U)
|
||
JRST DJBLK
|
||
HLLZS C
|
||
PUSHJ P,COUT
|
||
MOVE B,JOBSYM(U)
|
||
PUSHJ P,ALDRD1 ;CKSUM IN C
|
||
.IOT UTOC,B
|
||
PUSHJ P,COUT
|
||
DJBLK: MOVE C,STARTA(U)
|
||
HRLI C,(JUMPA)
|
||
COUT: HRROI D,C
|
||
.IOT UTOC,D
|
||
POPJ P,
|
||
|
||
ALD: MOVEI W1,0 ;ONLY LOADS SYMBOLS IF
|
||
ALD0: PUSHJ P,GTWD ;MIDAS FILE (PAPERTPAPE LOADER BEFORE FIRST JRST)
|
||
JFCL
|
||
CAME B,[JRST 1] ;DDT FILE (JUMPA OR JUMP BLOCK
|
||
AOJA W1,ALD0
|
||
;NOT MACDMP FILES (NO LOADER, JRST)
|
||
ALD1: PUSHJ P,GTWD
|
||
JUMPGE B,ALDJ
|
||
MOVE C,B
|
||
ALD2: MOVE D,B
|
||
CAMGE B,[-BUFL,,]
|
||
HRLI B,-BUFL
|
||
HRRI B,UBUF
|
||
PUSHJ P,ALDRD
|
||
MOVEI A,(D)
|
||
.ACCESS USRO,A
|
||
MOVE A,B
|
||
.IOT USRO,A
|
||
HLRS B
|
||
HRLI B,-1(B)
|
||
SUBM D,B
|
||
JUMPL B,ALD2
|
||
PUSHJ P,GTWD
|
||
CAME C,B
|
||
JRST CKSER
|
||
JRST ALD1
|
||
ALDJ: HRRZM B,PPC(U)
|
||
MOVEM B,STARTA(U)
|
||
TLNN F,CF
|
||
POPJ P,
|
||
CSMIF: JUMPN W1,ALDS
|
||
TLC B,(JUMPA)
|
||
TLNN B,777000
|
||
JRST ALDSS
|
||
POPJ P,
|
||
|
||
NLOAD: SETZM NCVARB
|
||
.CALL NLOADB
|
||
OPNER
|
||
JRST ALD1
|
||
|
||
NLOADB: SETZ
|
||
SIXBIT /LOAD/
|
||
[USRI]
|
||
[UTIC]
|
||
400000,,[-4,,NCVARB]
|
||
|
||
GTWD: HRROI A,B
|
||
GTWD1: .IOT UTIC,A
|
||
JUMPL A,EOF
|
||
POPJ P,
|
||
|
||
ALDSS: ;LOAD SYMBOLS
|
||
ALDS: PUSHJ P,GTWD
|
||
JUMPGE B,CPOPJ
|
||
MOVE A,B
|
||
PUSH P,B
|
||
PUSHJ P,HOLE
|
||
HRR B,C
|
||
POP P,C
|
||
PUSHJ P,ALDRD
|
||
PUSHJ P,GTWD
|
||
CAME C,B
|
||
JRST CKSER
|
||
JRST ALDS
|
||
|
||
|
||
ALDRD: MOVE A,B
|
||
PUSHJ P,GTWD1
|
||
ALDRD1: MOVE A,B
|
||
ROT C,1
|
||
ADD C,(A)
|
||
AOBJN A,.-2
|
||
POPJ P,
|
||
|
||
ALOAD: JUMPL F,ALOAD2
|
||
.RESET USRI,
|
||
.USET USRO,[.SSNAM,,MSNAM] ;SET SYSTEM NAME TO MASTER SYSTEM NAME
|
||
MOVEI D,21
|
||
MOVEM D,UINTWD(U)
|
||
PUSHJ P,ELECTRON
|
||
ALOAD2: PUSHJ P,ALD
|
||
.USET USRI,[.RMEMT,,HIGH]
|
||
CLSU: .CLOSE UTOC,
|
||
.CLOSE UTIC,
|
||
POPJ P,
|
||
|
||
CKSER: PUSHJ P,CLSU
|
||
TERR (SIXBIT /CKS/)
|
||
|
||
EOF: PUSHJ P,CLSU
|
||
TERR (SIXBIT /EOF/)
|
||
|
||
|
||
KILL: JUMPE U,ERR
|
||
TLNN F,LTF ;DELETE SYMBOLS
|
||
JRST,KILLA
|
||
PUSHJ P,EVAL
|
||
JRST KILL1
|
||
MOVEI D,DELO_-16. ;DELETE OUTPUT
|
||
TLNE F,CCF
|
||
MOVEI D,DELI_-16. ;NO INPUT OR OUTPUT
|
||
DPB D,[(420200+A)]
|
||
KILRET: JRST,RET
|
||
|
||
KILLA: TLNN F,QF
|
||
TLNN F,CCF
|
||
JRST ERR
|
||
PUSHJ P,ELECTRON
|
||
JRST ALTL2
|
||
|
||
KILL1: MOVE A,ESTU ;REMOVE UNDEFINED SYMS
|
||
JUMPGE A,UNDEF
|
||
KILL2: PUSHJ P,EVAL0
|
||
JRST RET
|
||
PUSHJ P,REMUN
|
||
JRST KILL2
|
||
|
||
REMUN: MOVE B,[(2)2] ;REMOVE ONE UNDEFINED SYM
|
||
ADDB B,ESTU
|
||
MOVE C,-2(B)
|
||
MOVEM C,(A)
|
||
MOVE C,-1(B)
|
||
MOVEM C,1(A)
|
||
POPJ P,
|
||
|
||
DS: MOVE A,DSSAV ;$$^C
|
||
MOVEI D,DELO_-16.
|
||
DPB D,[420200,,(A)]
|
||
MOVE D,1(A)
|
||
PUSHJ P,LOOK
|
||
JRST RET
|
||
JRST RET
|
||
|
||
ELECTRON: PUSH P,W2
|
||
HLRE D,JOBSYM(U)
|
||
HRRZ W2,JOBSYM(U)
|
||
HRLS W2
|
||
SUB W2,D
|
||
MOVSS W2 ;JOBSYM+NSYMS,,JOBSYM
|
||
ADD D,SYMTOP
|
||
BLT W2,-1(D) ;MOVE EVERTHING DOWN
|
||
HLRE W1,JOBSYM(U)
|
||
HRRZS A,JOBSYM(U) ;REDUCE LENGTH TO ZERO
|
||
RELOC: MOVE D,[-NINFP,,USRS] ;A HAS POINT WHERE MOVE OCCURED, W1 # REGS
|
||
REL1: HRRZ W2,JOBSYM(D)
|
||
CAIE U,(D)
|
||
CAMGE W2,A
|
||
JRST .+2
|
||
ADD W2,W1
|
||
HRRM W2,JOBSYM(D)
|
||
ADDI D,USRLNG-1
|
||
AOBJN D,REL1
|
||
ADD W1,SYMTOP
|
||
HRRZM W1,SYMTOP
|
||
HRRZS W1
|
||
LSH W1,-10.
|
||
.CORE 1(W1)
|
||
JFCL
|
||
MOVE D,JOBSYM(U)
|
||
MOVEM D,PRGM
|
||
POP P,W2
|
||
POPJ P,
|
||
|
||
HOLE: PUSH P,W2 ;CALLED WITH -#REGS,,0 IN A
|
||
HLRE C,JOBSYM(U) ;GOBBLE SYMS
|
||
MOVNS C ;NO. OF SYMS CURRENTLY THERE
|
||
ADD C,JOBSYM(U)
|
||
PUSH P,A ;TOP OF CURRENT SYM TABLE
|
||
HLRES A
|
||
MOVNS A
|
||
HRRZ D,SYMTOP ;NUMBER ADDITIONAL WANTED
|
||
ADD D,A
|
||
HRRZS D
|
||
LSH D,-10.
|
||
.CORE 1(D) ;MAKE ROOM (ALSO HACKED AT RELOC)
|
||
JRST HOLE2
|
||
POP P,W1
|
||
HLLZS W1
|
||
ADDM W1,JOBSYM(U)
|
||
HOLE1: HRRZ D,SYMTOP
|
||
SOS D
|
||
HRRM A,HOLPPX ;+#REGS NEW
|
||
MOVEI W1,(SETZ D) ;400000+SYMTOP-1 (AVOID PDL OV)
|
||
SUB W1,C
|
||
HRL D,W1 ;400000+#REGS TO MOVE-1,,SYMTOP-1
|
||
SKIPGE D
|
||
HOLPOP: XCT HOLPPX ;MOVE TOP OF SYM TAB UP BY LH(A)
|
||
JUMPL D,.-1
|
||
MOVE W1,A
|
||
HRRZ A,JOBSYM(U)
|
||
JRST RELOC
|
||
|
||
HOLE2: PUSHJ P,CLSU ;CLOSE INPUT CHANNELS
|
||
7TYPE [ASCIZ /NO CORE FOR SYMBOLS/]
|
||
JRST ERR
|
||
|
||
TAG: TLNN F,LTF
|
||
JRST NCOM ;:SYM COMMAND FORMMAT
|
||
TLNE F,CF ;DEFINE SYMBOL AS OPEN REGISTER
|
||
JRST SETNAM ;SYM $: SET PRGM NAME
|
||
MOVE C,LLOCO
|
||
TLNN F,FAF ;DEFINE SYM AS VALUE<
|
||
HRRZM C,DEFV
|
||
ADEFIN: JUMPE U,JERR
|
||
PUSHJ P,EVAL
|
||
JRST DEF1
|
||
JRST DEF2 ;REDEFINE
|
||
DEF1: MOVSI A,-2
|
||
PUSHJ P,HOLE
|
||
MOVE A,C
|
||
DEF2: MOVE D,DEFV
|
||
MOVEM D,1(A)
|
||
MOVSI D,GLOBAL
|
||
IORB D,SYM
|
||
MOVEM D,(A)
|
||
MOVE A,ESTU
|
||
|
||
DEF3: JUMPGE A,RET ;PATCH IN UNDEFINED SYM
|
||
MOVE D,SYM
|
||
CAME D,(A)
|
||
JRST DEF4
|
||
MOVE B,DEFV
|
||
SKIPGE 1(A)
|
||
MOVNS B
|
||
PUSH P,A
|
||
HRRZ A,1(A)
|
||
PUSHJ P,FETCH
|
||
JRST ERR
|
||
ADD B,D
|
||
HRRM B,D
|
||
PUSHJ P,DEP
|
||
POP P,A
|
||
PUSHJ P,REMUN
|
||
DEF4: ADD A,[(2)2]
|
||
JRST DEF3
|
||
|
||
CSMI: JUMPE U,JERR ;LOAD SYMS FROM FILE
|
||
PUSHJ P,RRFLB
|
||
MOVEI A,6
|
||
HRLM A,IFILE
|
||
TLNN F,CCF
|
||
PUSHJ P,ELECTRON
|
||
TSOPEN UTIC,IFILE
|
||
CSMI1: MOVEI W1,0 ;CLEAR COUNT
|
||
PUSHJ P,GTWD
|
||
CAME B,[JRST 1]
|
||
AOJA W1,.-2
|
||
CSMI3: PUSHJ P,GTWD
|
||
JUMPGE B,CSMIF1
|
||
CSMI2: MOVE D,B
|
||
CAMGE B,[-BUFL,,]
|
||
HRLI B,-BUFL
|
||
HRRI B,UBUF
|
||
MOVE A,B
|
||
.IOT UTIC,A
|
||
JUMPL A,EOF
|
||
HLRS B
|
||
HRLI B,-1(B)
|
||
SUBM D,B
|
||
JUMPL B,CSMI2
|
||
PUSHJ P,GTWD
|
||
JRST CSMI3
|
||
|
||
CSMIF1: PUSHJ P,CSMIF
|
||
JRST ALTL2
|
||
|
||
HWRDS: MOVEI A,HLFW-TFLOT ;H
|
||
SFLOT: ADDI A,TFLOT-SATP ;F
|
||
RATP: ADDI A,SATP-ITEXO ;T
|
||
TEXSET: ADDI A,ITEXO-PIN ;"
|
||
SYMBOL: ADDI A,PIN-FTOC ;S
|
||
CON: ADDI A,FTOC ;C
|
||
SET0: MOVEI C,0
|
||
JRST SET
|
||
|
||
;ALTMODE S
|
||
|
||
ALTS: TRNN F,Q2F ;IF NUMBER NOT TYPED AFTER ALTMODE,
|
||
JRST SYMBOL ;THEN SET TYPEOUT TO SYMBOLIC
|
||
MOVEI A,SQOZO
|
||
TLNN F,QF ;IF NO ARG TYPED,
|
||
JRST SET0 ;THEN SET TYPEOUT MODE TO SQUOZE
|
||
;NAME$NS <=> SQUOZE N,NAME
|
||
LDB D,[20400,,WRDO2] ;GET FLAGS (INTERPRETED IN OCTAL)
|
||
ROT D,-4 ;ROTATE INTO FLAGS FIELD
|
||
ADD D,SYM ;ADD IN THE ACTUAL SQUOZE
|
||
JRST MASK2
|
||
|
||
RELA: TLNE F,QF ;R
|
||
JRST,BASECH
|
||
MOVEI A,PADSO-TOC
|
||
ABSA: ADDI A,TOC ;A
|
||
JRST SET1
|
||
|
||
SDEC: ADDI A,2 ;D
|
||
SOCT: ADDI A,10 ;O
|
||
SKIPA C,[2]
|
||
SET1: MOVEI C,1
|
||
SET: HRRZM A,SCH(C)
|
||
HRRZM A,SCHMM(C)
|
||
MOVEI D,1
|
||
MOVEM D,FRASE1
|
||
JUMPGE F,QUAN3 ;FLUSH CF,CCF,AND WRD2
|
||
HRRZM A,SCHM(C)
|
||
JRST RET
|
||
|
||
SETNAM: JUMPE U,JERR
|
||
MOVE A,JOBSYM(U)
|
||
SET2: JUMPGE A,UNDEF
|
||
MOVE D,(A)
|
||
ADD A,[(2)2]
|
||
CAME D,SYM
|
||
JRST SET2
|
||
MOVEM A,PRGM
|
||
JRST RET
|
||
|
||
MULT: TLOA F,PTF+MLF ;*
|
||
DIVD: TLO F,DVF+PTF ;SINGLE QUOTE
|
||
JRST L1
|
||
|
||
ASSEM: JRST PLUS ;#
|
||
MINUS: TLO F,MF
|
||
PLUS: TLO F,PTF
|
||
JRST LIS2
|
||
|
||
LPRN: CAML P,[(LPDL-32)]
|
||
JRST,ERR
|
||
PUSH P,F ;RECURSE FOR OPEN PAREN
|
||
PUSH P,WRD
|
||
PUSH P,FRASE
|
||
PUSH P,FRASE1
|
||
AOS,PRNC
|
||
JRST,LISA
|
||
|
||
INDIRECT: MOVSI C,(@)
|
||
IORB C,WRD
|
||
TLO F,QF
|
||
JRST,LIS2
|
||
|
||
ACCF: TLNN F,COMF
|
||
HRRM D,COMWDX ;COMMA
|
||
MOVE A,D
|
||
HLLZS D
|
||
LDB W1,[(410300)WRD]
|
||
IDIVI W1,7
|
||
LSH A,27(W1)
|
||
ADD D,A
|
||
ADD D,WRD
|
||
TLOE F,COMF
|
||
COMWD: XCT COMWDX ;FOR THE SAKE OF PURITY
|
||
MOVEM D,WRD
|
||
JRST SPACE+1
|
||
|
||
SPACE: TLNE F,QF
|
||
TLO F,TIF
|
||
SPAC1: TLZ F,MF+PTF
|
||
JRST,LIS1
|
||
|
||
OCON: TLZE F,CF ;]
|
||
JRST ISTRIN
|
||
TROA F,LF1+CF1 ;OPEN AS CONSTANT
|
||
OSYM2: TRZ F,CF1 ;OPEN SYMBOLICALLY
|
||
TROA F,LF1
|
||
SUPTYO: TLOA F,STF ;SUPPRESS TYPEOUT
|
||
SLASH: TLZ F,STF ;TYPE OUT REGISTER
|
||
SKIPE PRNC
|
||
JRST ERR
|
||
PUSH P,KILRET
|
||
TLNE F,QF
|
||
PUSHJ P,PLOC ;QUANTITY TYPED
|
||
HLRZM D,LLOCO
|
||
TLZN F,CF
|
||
SLAS1: HRRZM D,LLOCO
|
||
JRST LI2
|
||
|
||
OSYM: TLZN F,CF
|
||
JRST OSYM2
|
||
PUSHJ P,SETISB
|
||
JSTR1: PUSHJ P,IIN
|
||
CAIL D,40
|
||
CAILE D,140
|
||
JRST ISTR2
|
||
PUSHJ P,SASEM
|
||
JRST JSTR1
|
||
|
||
|
||
RPRN: MOVS D,WRD ;)
|
||
SOSGE,PRNC
|
||
JRST,ERR
|
||
POP P,FRASE1
|
||
POP P,FRASE
|
||
POP P,WRD
|
||
POP P,F
|
||
TLO F,QF
|
||
TLNE F,PTF
|
||
TLOE F,SF
|
||
JRST,RPRN1
|
||
MOVEM D,SYL
|
||
JRST,L1RPR
|
||
RPRN1: ADDB D,WRD
|
||
JRST,L1RPR-1
|
||
|
||
ICON: TLZE F,CF
|
||
JRST IKON
|
||
PUSHJ P,DEPRA ;\
|
||
JRST SLAS1
|
||
|
||
PLOC: CAMN D,LLOC
|
||
POPJ P,
|
||
AOS A,PLCR ;ADVANCE RING POINTER
|
||
CAIL A,NLEVS
|
||
SETZB A,PLCR
|
||
EXCH D,LLOC
|
||
MOVEM D,LOCBF(A)
|
||
MOVE D,LLOC
|
||
HRRZS LLOC
|
||
POPJ P,
|
||
|
||
TAB: JUMPL F,OEFADR ;OPEN EFFECTIVE ADDRESS
|
||
TLZE F,CF
|
||
MOVSS D
|
||
PUSHJ P,PLOC
|
||
JRST LI1B
|
||
|
||
VARRW: SOS LLOC ;^
|
||
LI1B: SOS LLOC
|
||
|
||
LINEF: PUSHJ P,DEPRA ;NEXT REGISTER
|
||
TLZN F,CF
|
||
JRST LI0
|
||
LI1A: MOVE A,PLCR ;MOVE BACK IN RING BUFFER
|
||
MOVE D,LOCBF(A)
|
||
SOSGE A
|
||
MOVEI A,NLEVS-1
|
||
MOVEM A,PLCR
|
||
HRRZM D,LLOC
|
||
JRST (C)
|
||
LI0: PUSHJ P,CRF
|
||
LI1C: AOS D,LLOC
|
||
LI1: HRRZM D,LLOC
|
||
HRRZM D,LLOCO
|
||
PUSHJ P,PAD
|
||
MOVEI D,"/ ;SLASH
|
||
TLNE F,STF
|
||
MOVEI D,"! ;EXCLAMATION MARK
|
||
PUSHJ P,TOUT
|
||
LI2: TLZ F,ROF
|
||
PUSHJ P,LCT
|
||
MOVE A,LLOCO
|
||
PUSHJ P,FETCH
|
||
JRST ERR
|
||
TLO F,ROF
|
||
TLNE F,STF
|
||
JRST DD2
|
||
JRST CONSYM
|
||
|
||
CARR: PUSHJ P,DEPRA
|
||
MOVEI C,LI1B
|
||
TLZE F,CF
|
||
JRST LI1A
|
||
JRST DD1
|
||
|
||
DEPRA: TLNE F,ROF ;IF REGISTER IS BEING CHANGED
|
||
TLNN F,QF ;REMOVE ALL PREVIOUS UNDEFINED
|
||
JRST DEPRS ;SYMBOL REFERENCES TO IT
|
||
MOVE A,ESTU
|
||
MOVEM W1,ESTU
|
||
DEPRA2: JUMPGE A,DEPRS
|
||
HRRZ C,1(A)
|
||
CAMN C,LLOCO
|
||
PUSHJ P,REMUN
|
||
ADD A,[(2)2]
|
||
JRST DEPRA2
|
||
|
||
RETYP: JUMPL F,RETY1
|
||
TLNE F,CF
|
||
JRST RETY2
|
||
IRPS A,,SCH AR ODF
|
||
PUSH P,A
|
||
TERMIN
|
||
RETY2: MOVE A,[SCHMM,,SCH]
|
||
BLT A,ODF
|
||
PUSHJ P,CONSYM
|
||
TLNE F,CF+CCF
|
||
POPJ P,
|
||
IRPS A,,ODF AR SCH
|
||
POP P,A
|
||
TERMIN
|
||
POPJ P,
|
||
|
||
RETY1: MOVE A,[SCHMM,,SCHM]
|
||
BLT A,ODFM
|
||
JRST RETY2
|
||
|
||
EQUAL: TROA F,LF1+CF1 ;=
|
||
PSYM: TRZ F,CF1 ;@
|
||
TRO F,LF1
|
||
JRST CONSYM
|
||
|
||
SQOZO:
|
||
R50PNT: MOVEM D,LWT ;AMPERSANT
|
||
LSH D,-36
|
||
TRZ D,3
|
||
PUSHJ P,TOC
|
||
PUSHJ P,TSPC
|
||
MOVEI W1,LWT
|
||
JRST SPT
|
||
|
||
BASECH: MOVEI C,BASC1
|
||
JRST L211 ;EVAL ARG
|
||
|
||
BASC1: SOJLE D,ERR
|
||
MOVEI A,1(D)
|
||
HRRZM A,ODF
|
||
HRRZM A,ODFMM
|
||
JUMPGE F,LISA
|
||
HRRZM A,ODFM
|
||
JRST RET
|
||
|
||
AAGO: TLO F,QF\CCF
|
||
SKIPE TOKTRM
|
||
JRST AGO2 ;NO ARG
|
||
PUSHJ P,RONUM
|
||
JRST AGO2
|
||
MOVE D,B
|
||
AGO: HRLI D,(JRST)
|
||
TLC F,QF+CCF
|
||
TLCN F,QF+CCF
|
||
MOVEM D,STARTA(U)
|
||
TLOE F,QF
|
||
JRST HGO
|
||
AGO2: SKIPE D,STARTA(U)
|
||
XEC: TLNN F,QF ;X
|
||
JRST ,ERR
|
||
HGO: MOVEM D,34SAV
|
||
PUSHJ P,QJERR
|
||
MOVEI A,0
|
||
EXCH A,UINTWD(U)
|
||
JUMPE A,ERR ;PROG RUNNING
|
||
MOVEM A,XINTWD(U)
|
||
TLZ F,LTF
|
||
MOVE D,PPC(U)
|
||
MOVEM D,XECPC(U)
|
||
AOS XCRFSW
|
||
XEC1B: MOVEI D,34
|
||
HRRM D,PPC(U)
|
||
XEC1A: AOS D,XCRFSW
|
||
CAIE D,1 ;IF SWITCH WASN'T SET,
|
||
PUSHJ P,CRF ;THEN TYPE CRLF
|
||
PUSHJ P,INSRTB
|
||
TLNE F,LTF
|
||
JRST PROCE2 ;^P
|
||
PUSHJ P,TTYLEV
|
||
JRST RESTORE ;$X,$P OR ANY RANDOM INT PROCEED
|
||
|
||
CTLP: TLOA F,LTF
|
||
PROCED: TLZ F,LTF
|
||
MOVE A,UINTWD(U)
|
||
SOS A
|
||
PUSHJ P,AUTOP1
|
||
TLNN F,QF
|
||
PROCD1: MOVEI D,1
|
||
AOS XCRFSW ;INCREMENT CRF SWITCH IN CASE OF ERROR
|
||
PUSHJ P,QJERR
|
||
MOVEI A,0
|
||
EXCH A,UINTWD(U)
|
||
TLNE F,LTF
|
||
JUMPE A,PROCD2 ;^P ON RUNNING PROGRAM
|
||
JUMPE A,PRUN ;RUNNING, GIVE IT TTY
|
||
MOVSI B,OIPBIT
|
||
SKIPLE INCNT(U)
|
||
IORM B,PPC(U)
|
||
JUMPL A,XEC1A ;STOPPED BY RANDOM INT, START IT BACK UP
|
||
CAIN A,21
|
||
JRST PROCD2 ;NOT PROCEEDABLE
|
||
IMULI A,BPL
|
||
ADDI A,-BPL(U)
|
||
MOVEM D,B1CNT(A)
|
||
MOVE A,BPLOC(U)
|
||
PUSHJ P,FETCH
|
||
JRST ERR
|
||
MOVEM D,BPLOC(U)
|
||
MOVSI A,(.BREAK 15,)
|
||
TLZ D,777740
|
||
IOR D,A
|
||
MOVEM D,34SAV
|
||
JRST XEC1B
|
||
|
||
ONEPRO: JUMPL F,ERR
|
||
TLZN F,QF
|
||
MOVEI D,1
|
||
SKIPL D
|
||
MOVEM D,INCNT(U)
|
||
MOVSI D,400 ;MAR INT BIT
|
||
IORM D,PPC(U) ;PUT IT IN
|
||
TLNN F,CF
|
||
JRST PROCED
|
||
JRST CTLP ;NO TTY
|
||
|
||
PROCE2: .ACCESS USRO,[34]
|
||
MOVE D,[-3,,34SAV]
|
||
.IOT USRO,D
|
||
MOVE D,PPC(U)
|
||
.USET USRI,[.SUPC,,D]
|
||
.USET USRI,[.SUSTP,,[0]]
|
||
JRST DD1
|
||
|
||
PROCD2: EXCH A,UINTWD(U)
|
||
JRST ERR
|
||
|
||
PRUN: SKIPE FURN(U)
|
||
JRST PROCD2
|
||
PUSHJ P,CRF
|
||
PUSHJ P,TTYLEV
|
||
SETZM SARS
|
||
JRST SLP
|
||
|
||
TEXO: TLNE F,CF
|
||
JRST TEXO2
|
||
MOVEM D,LWT ;DOUBLE QUOTE
|
||
ITEXO: SETZM TEMT
|
||
MOVE W1,D
|
||
TDNE W1,[-1,,777400]
|
||
JRST TEXO1
|
||
SKIPN TEXOF
|
||
LSH W1,1
|
||
TEXO1: MOVEI D,0
|
||
TEXO10: JUMPE W1,CPOPJ
|
||
TEXO11: XCT TEXCT2
|
||
TEXO12: SKIPN TEMT
|
||
JUMPE D,TEXO1
|
||
SETOM TEMT
|
||
ADD D,TEXOF
|
||
PUSHJ P,TOUT
|
||
JRST TEXO1
|
||
|
||
|
||
ASLASH: TLZE F,CF
|
||
JRST INFO
|
||
TLNN F,QF
|
||
JRST QUESTN
|
||
CTYPE "/
|
||
JRST SLASH
|
||
|
||
INFO: MOVE A,[SIXBIT /INFO/]
|
||
MOVEM A,SYSN2
|
||
JRST CCTLH
|
||
|
||
IKON: MOVEM D,LWT
|
||
PUSHJ P,EASETU ;SET UP AC'S FOR EFF ADR SEARCH
|
||
PUSHJ P,EFFEC0
|
||
JRST ERR
|
||
MOVE A,D
|
||
PUSHJ P,FETCH
|
||
JRST ERR
|
||
JRST OVRD2
|
||
|
||
OEFADR: PUSHJ P,EASETU ;$$\
|
||
PUSHJ P,EFFEC0
|
||
JRST ERR
|
||
PUSHJ P,PLOC
|
||
JRST LI1B
|
||
|
||
;INSERT BREAKPOINTS
|
||
|
||
INSRTB: MOVEI B,B1ADR(U)
|
||
MOVE W1,[.BREAK 1,]
|
||
INSRT1: SKIPE A,(B)
|
||
PUSHJ P,FETCH
|
||
JRST INSRT2
|
||
MOVEM D,B1INS-B1ADR(B)
|
||
TLZ D,777740
|
||
IOR D,W1
|
||
PUSHJ P,DEPCLA
|
||
INSRT2: ADD W1,[0 1,]
|
||
ADDI B,BPL
|
||
CAIE B,BPEND(U)
|
||
JRST INSRT1
|
||
POPJ P,
|
||
|
||
;REMOVE BREAKPOINTS
|
||
|
||
REMOVB: MOVEI B,B1ADR(U)
|
||
REMOV1: SKIPE A,(B)
|
||
PUSHJ P,FETCH
|
||
JRST REMOV2
|
||
LDB W1,[271500,,B1INS-B1ADR(B)]
|
||
DPB W1,[271500,,D]
|
||
PUSHJ P,DEPCLA
|
||
REMOV2: ADDI B,BPL
|
||
CAIE B,BPEND(U)
|
||
JRST REMOV1
|
||
POPJ P,
|
||
|
||
BPS: PUSHJ P,QJERR
|
||
TLZE F,QF
|
||
JRST,BPS1
|
||
TRZE F,Q2F
|
||
JRST,BPS2
|
||
JUMPGE F,BPS6
|
||
MOVEI D,B1ADR+1(U)
|
||
HRLI D,-1(D)
|
||
SETZM B1ADR(U)
|
||
BLT D,BPEND-1(U)
|
||
JRST DD1
|
||
|
||
BPS6: MOVE D,UINTWD(U)
|
||
CAIL D,1
|
||
CAILE D,10
|
||
JRST ERR
|
||
MOVEI A,0
|
||
TRO F,BPLF
|
||
JRST BPS7
|
||
|
||
BPS1: TRZN F,Q2F
|
||
JRST,BPS3
|
||
MOVE A,D
|
||
TRO F,BPLF
|
||
BPS2: MOVE D,WRD2
|
||
CAIL D,1
|
||
CAILE D,11 ;ALLOW $9B FOR HACKS IN USER AREA
|
||
JRST,ERR
|
||
BPS7: IMULI D,BPL
|
||
ADDI D,B1ADR-BPL+770000(U)
|
||
TRZN F,BPLF
|
||
JRST,MASK2
|
||
SUBI D,770000
|
||
EXCH A,D
|
||
JRST BPS5
|
||
BPS3: MOVEI A,B1ADR(U)
|
||
BPS4: HRRZ C,(A)
|
||
CAIE C,(D)
|
||
SKIPN C
|
||
JRST,BPS5
|
||
ADDI A,BPL
|
||
CAIGE A,BPEND(U)
|
||
JRST,BPS4
|
||
JRST,ERR
|
||
|
||
BPS5: SKIPN FURN(U)
|
||
SKIPN UINTWD(U)
|
||
JRST ERR ;DON'T INSERT BPTS WHEN RUNNING
|
||
MOVEM D,(A)
|
||
SETZM,1(A)
|
||
SETZM,2(A)
|
||
AUTOP: SUBI A,B1ADR(U)
|
||
IDIVI A,BPL
|
||
AUTOP1: MOVEI B,1
|
||
LSH B,(A)
|
||
ANDCAM B,AUTOPI
|
||
TLNE F,CCF
|
||
IORM B,AUTOPI
|
||
POPJ P,
|
||
|
||
|
||
|
||
DEPRS: MOVEM D,LWT
|
||
DEPR: MOVE A,LLOCO ;QUAN TYPED IN REGIS EXAM
|
||
TLZE F,ROF
|
||
TLNN F,QF
|
||
POPJ P,0
|
||
DEPCLA: TLZ A,-1 ;LH (A) MUST BE CLEAR, THIS IS ENTRY TO DO IT
|
||
DEP: SKIPE SYSSW
|
||
JRST DEP0
|
||
TRC A,760000
|
||
TRCN A,760000
|
||
JRST DEP1
|
||
SKIPE DDTSW
|
||
JRST DEP4
|
||
PUSHJ P,QIJERR
|
||
.ACCESS USRO,A
|
||
HRROI W4,D
|
||
.IOT USRO,W4
|
||
POPJ P,
|
||
|
||
DEP0: SKIPL SYSDPS
|
||
JRST ERR
|
||
MOVSI W4,D
|
||
HRR W4,A
|
||
.SETLOC W4,
|
||
POPJ P,
|
||
|
||
DEP4: CAML A,HIGH
|
||
JRST ERR
|
||
MOVEM D,(A)
|
||
POPJ P,
|
||
|
||
DEP1: TRC A,10000
|
||
TRCE A,10000
|
||
JRST DEP2
|
||
MOVEM D,-770000(A)
|
||
POPJ P,
|
||
|
||
DEP2: PUSHJ P,QIJERR
|
||
ANDI A,177
|
||
CAMLE A,MAXUSET
|
||
JRST ERR
|
||
DPB A,[220700,,DEP3]
|
||
.USET USRI,DEP3
|
||
POPJ P,
|
||
DEP3: SETZ F,D
|
||
|
||
FETCH: HRRZ D,A
|
||
SKIPE SYSSW
|
||
JRST FETCHA
|
||
CAIL D,760000
|
||
JRST FETCH1
|
||
SKIPE DDTSW
|
||
JRST FETCHB
|
||
CAML D,HIGH
|
||
JRST FETCH2
|
||
FTCH2A: .ACCESS USRI,D
|
||
HRROI W4,D
|
||
.IOT USRI,W4
|
||
JRST CPOPJ1
|
||
|
||
FETCH2: SKIPE UCHNLO
|
||
.USET USRI,[.RMEMT,,HIGH]
|
||
CAML D,HIGH
|
||
POPJ P,
|
||
JRST FTCH2A
|
||
|
||
FETCH1: TRC A,10000
|
||
TRCE A,10000
|
||
JRST FETCH3
|
||
MOVE D,-770000(A)
|
||
JRST CPOPJ1
|
||
|
||
FETCH3: ANDI A,177
|
||
CAIL A,100
|
||
CAILE A,157
|
||
CAMG A,MAXUSET
|
||
FETCH6: SKIPN UCHNLO
|
||
POPJ P,
|
||
DPB A,[220700,,FETCH4]
|
||
.USET USRI,FETCH4
|
||
JRST CPOPJ1
|
||
|
||
|
||
FETCHA: MOVS D,A
|
||
HRRI D,D
|
||
.GETLOC D,
|
||
JRST CPOPJ1
|
||
|
||
FETCHB: CAML A,HIGH
|
||
JRST ERR
|
||
MOVE D,(A)
|
||
JRST CPOPJ1
|
||
|
||
FIRARG: MOVEM D,DEFV
|
||
TLO F,FAF
|
||
JRST,ULIM1
|
||
ULIM: TLO F,SAF
|
||
HRRZM D,ULIMIT
|
||
ULIM1: TLNE F,CF
|
||
JRST OVRD
|
||
TLNN F,QF
|
||
JRST,ERR
|
||
JRST,LISB
|
||
|
||
LOOK: SETZB W1,B
|
||
JUMPE U,LOOK1
|
||
MOVSI W1,DELI+DELO
|
||
MOVE A,PRGM
|
||
MOVSI W2,PNAME
|
||
SKIPGE D
|
||
MOVSI B,400000
|
||
MOVE C,[444400,,ENDT]
|
||
MOVEM C,TEM
|
||
LEND1A: ILDB C,TEM
|
||
MOVEM C,LLUP1
|
||
JRST LLUP+1
|
||
|
||
ENDT: SKIPL A ;LOOK AT REST OF SYM TABLE
|
||
MOVE A,JOBSYM(U) ;THEN LOOK THRU BOTTOM
|
||
|
||
CAMN A,PRGM ;UP TO CURRENT PRGM
|
||
MOVE A,ISYMP ;THEN THRU INITAL SYMS
|
||
|
||
CAMN A,ISYME ;STOP AT END OF INITIAL SYMS
|
||
TLZA W1,-1 ;EXIT, SIGNAL NOT FOUND ANYTHING
|
||
|
||
LLUP: ADD A,[2,,2]
|
||
XCT LLUP1 ;END TEST
|
||
JRST LEND1
|
||
CAML D,1(A)
|
||
CAML B,1(A)
|
||
JRST LLUP
|
||
HLLZ C,W1
|
||
TDNN W2,(A) ;PRGM NAME
|
||
TLOA W1,LOCAL ;STOP LOOKING FOR LOCALS
|
||
TDNE C,(A) ;SKIP ON BAD BITS SET (DELO,DELI, MAYBE LOCAL)
|
||
JRST LLUP ;WRONG FLAVOR SYM
|
||
HRR W1,A
|
||
CAMN D,1(A)
|
||
JRST SPT ;EXACT MATCH
|
||
MOVE B,1(A) ;NEW BEST SO FAR
|
||
JRST LLUP
|
||
LEND1: AOS C,TEM
|
||
XCT (C)
|
||
JRST LEND1A
|
||
LOOK1: MOVEM D,TEM
|
||
TRNE W1,-1
|
||
SUB D,B ;SUBTRACT TO FIND REMAINDER OF SYMBOLIC QUAN
|
||
JRST CPOPJ1
|
||
|
||
MARSET: PUSHJ P,QJERR
|
||
TLNN F,FAF
|
||
JRST .+3
|
||
MOVSS D
|
||
HRR D,DEFV
|
||
TLNN D,7
|
||
HRLI D,6
|
||
TLNN F,QF+FAF
|
||
JRST MARS1
|
||
HRRZ A,D
|
||
CAML A,HIGH
|
||
JRST ERR
|
||
MOVEM D,MARCON
|
||
.USET USRI,[.SMARA,,MARCON]
|
||
JRST ALTL2
|
||
|
||
MARS1: SETZM MARCON
|
||
.USET USRI,[.SMARA,,MARCON]
|
||
JRST ALTL2
|
||
|
||
|
||
CONSYM: MOVEM D,LWT
|
||
CONSM: TRNN F,LF1
|
||
CONS1: JRST @SCH
|
||
TRNE F,CF1
|
||
JRST, FTOC
|
||
;VALUE TO BE TYPED IN D
|
||
|
||
PIN: TRZ F,NAF+OPERF1+OPERF2
|
||
TLC D,700000
|
||
TLCN D,700000
|
||
JRST INOUT
|
||
PUSHJ P,OPTYPE
|
||
MOVSI D,777000
|
||
AND D,LWT
|
||
CAMN D,[.CALL]
|
||
JRST PCALL
|
||
CAMN D,[.OPER]
|
||
JRST POPER
|
||
JUMPE D,PI3+1
|
||
TRNN F,1RF
|
||
PI3.05: PUSHJ P,LOOK
|
||
PI3.1: TROA F,NAF
|
||
JRST HLFW
|
||
PI3: PUSHJ P,TSPC
|
||
LDB D,[(270400)LWT] ;AC
|
||
JUMPE D,PI4
|
||
PUSHJ P,PAD
|
||
PI3A: XCT ",,CRF
|
||
PI4: TRNE F,OPERF2
|
||
POPJ P,
|
||
PI4A: MOVE W1,LWT
|
||
MOVEI D,"@ ;AT SIGN
|
||
TLNE W1,20 ;CHECK FOR INDIRECT BIT
|
||
PUSHJ P,TOUT
|
||
PI5: HRRZ D,LWT
|
||
LDB W1,[(331100)LWT]
|
||
CAIL W1,240
|
||
CAILE W1,247
|
||
PUSHJ P,SPAD
|
||
PUSHJ P,PADS3A
|
||
PI7: TRZ F,NAF
|
||
LDB A,[(220400)LWT] ;INDEX REGISTER CHECK
|
||
JUMPE A,PADS1
|
||
PI7.1: XCT "(,CRF
|
||
move d,a
|
||
PUSHJ P,PAD
|
||
MOVEI D,")
|
||
JRST TOUT ;EXIT
|
||
|
||
POPER: HRLOI D,777037
|
||
TROA F,OPERF1
|
||
PCALL: MOVSI D,777740
|
||
AND D,LWT
|
||
PUSHJ P,LOOK
|
||
JRST PI4.1
|
||
MOVSI D,777000
|
||
AND D,LWT
|
||
JRST PI3.05
|
||
PI4.1: TROE F,OPERF1+OPERF2
|
||
JRST PI3
|
||
PUSHJ P,TSPC
|
||
JRST PI4A
|
||
|
||
HLFW: TRO F,NAF
|
||
HLRZ D,LWT
|
||
PUSHJ P,PAD
|
||
XCT ",,CRF
|
||
XCT ",,CRF
|
||
SKIPA D,LWT
|
||
SPAD: AOS (P)
|
||
PAD: ANDI D,777777 ;PRINT ADDRESS
|
||
JRST @AR ;PADSO OR PAD1
|
||
PADSO: JUMPE D,TOC2+1
|
||
PUSHJ P,LOOK
|
||
PADS1: POPJ P,0
|
||
MOVE W2,1(W1)
|
||
CAIGE D,100
|
||
CAIGE W2,60
|
||
JRST,PADS3
|
||
MOVEM D,TEM
|
||
JUMPE W1,PAD1
|
||
PUSHJ P,SPT
|
||
PADS3D: XCT "+,CRF
|
||
PADS2: HRRZ D,TEM
|
||
PAD1: JRST TOC ;EXIT
|
||
|
||
PADS3: MOVE D,TEM
|
||
PADS3A: TRNE F,NAF
|
||
CAIGE D,776000
|
||
JRST PADS3C
|
||
PADS3B: MOVNM D,TEM
|
||
PADS4: XCT "-,CRF
|
||
JRST PADS2
|
||
|
||
INOUT: TDC D,[(,-1)400000]
|
||
TDCN D,[(,-1)400000]
|
||
JRST PADS3B
|
||
HLRZ A,D
|
||
CAILE A,(CONO 774,@)
|
||
JRST HLFW
|
||
AND D,[(700340)]
|
||
PUSHJ P,LOOK
|
||
JRST,.+2
|
||
JRST,HLFW
|
||
PUSHJ P,TSPC
|
||
MOVE D,LWT
|
||
AND D,[(77400)]
|
||
INOUT1: JUMPE D,PI4 ;USED BY "WORD"
|
||
PUSHJ P,LOOK ;LOOK FOR DEVICE NUMBER
|
||
JRST,PI3A
|
||
MOVE D,TEM
|
||
LSH D,-30
|
||
PUSHJ P,TOC
|
||
JRST,PI3A
|
||
PADS3C: CAIL D,B1ADR+770000(U)
|
||
CAIL D,BPEND+770000(U)
|
||
JRST TOC
|
||
SUBI D,B1ADR+770000(U)
|
||
IDIVI D,BPL
|
||
PUSH P,D
|
||
XCT "$,CRF
|
||
POP P,D
|
||
ADDI D,"1
|
||
PUSHJ P,TOUT
|
||
MOVEM W1,TEM
|
||
MOVEI D,"B
|
||
PUSHJ P,TOUT
|
||
JUMPE W1,CPOPJ
|
||
JRST PADS3D
|
||
|
||
MASK: TLNE F,QF
|
||
JRST MASK1
|
||
MOVEI D,MSK+770000
|
||
MASK2: MOVEI C,1
|
||
MOVEM C,FRASE1
|
||
JRST QUAN1
|
||
|
||
MASK1: MOVEM D,MSK
|
||
JRST RET
|
||
|
||
EASETU: .ACCESS USRI,[0]
|
||
MOVE A,[-20,,AC0]
|
||
.IOT USRI,A
|
||
POPJ P,
|
||
|
||
EFFEC: JUMPE U,JERR
|
||
TLO F,LTF
|
||
SKIPN SYSSW
|
||
SKIPE DDTSW
|
||
JRST AWORD
|
||
PUSHJ P,EASETU
|
||
HRRZ D,D
|
||
AWORD: SKIPA C,INOUT1 ;JUMPE D,
|
||
NWORD: MOVSI C,(JUMPN D,)
|
||
HLLM C,SEAR2
|
||
SEARC: JUMPE U,JERR
|
||
TLZN F,QF
|
||
JRST ERR
|
||
SETOM BADR
|
||
SETCAM D,WRD
|
||
MOVE D,ULIMIT
|
||
TLNE F,SAF
|
||
TLO F,QF
|
||
PUSHJ P,SETUP1
|
||
PUSHJ P,CRF
|
||
PUSHJ P,MORFIN
|
||
SEAR1: HRRZ D,BADR
|
||
XORI D,(A)
|
||
TRNN D,777600
|
||
JRST SEAR1A
|
||
SKIPN SYSSW
|
||
JRST SEAR1C
|
||
MOVS D,A
|
||
HRRI D,D
|
||
.GETLOC D,
|
||
JRST SEAR1D
|
||
|
||
SEAR1C: SKIPE DDTSW
|
||
JRST SEAR1E
|
||
PUSH P,A
|
||
ANDI A,<-1>#177
|
||
HRRZM A,BADR
|
||
.ACCESS USRI,A
|
||
MOVE D,[-BUFL,,UBUF]
|
||
.IOT USRI,D
|
||
POP P,A
|
||
JRST SEAR1
|
||
|
||
SEAR1A: SKIPA D,UBUF(D)
|
||
SEAR1E: MOVE D,(A)
|
||
SEAR1D: TLNE F,LTF ;CHECK FOR EFFECTIVE ADDRESS SEARCH
|
||
JRST SEAR2B
|
||
SEAR1B: EQV D,WRD
|
||
AND D,MSK
|
||
SEAR2: JUMPE D,SEAR3
|
||
TRNN A,77
|
||
SEAR2A: PUSHJ P,LISTN
|
||
AOBJN A,SEAR1
|
||
JRST ALTL4
|
||
|
||
SEAR2B: PUSHJ P,EFFEC0
|
||
JRST SEAR4
|
||
EQV D,WRD
|
||
ANDI D,777777
|
||
JRST SEAR2
|
||
|
||
SEAR3: PUSHJ P,FETCH
|
||
JRST ERR
|
||
MOVEM D,LWT ;SET $Q FROM CONTENTS OF LOCATION
|
||
MOVEM A,TEM2
|
||
MOVEM A,D
|
||
HRRZM A,LLOCO ;UPDATE CURRENT LOCATION
|
||
PUSHJ P,PLOC ;ADVANCE RING POINTER
|
||
PUSHJ P,PAD ;PRINT ADDRESS
|
||
XCT "/,CRF
|
||
PUSHJ P,LCT
|
||
MOVE D,LWT ;GET $Q AS STORED ABOVE
|
||
PUSHJ P,CONSYM
|
||
PUSHJ P,CRF
|
||
PUSHJ P,MORFLS
|
||
JRST ALTL2
|
||
SEAR4: MOVE A,TEM2
|
||
JRST, SEAR2A
|
||
|
||
EFFEC0: MOVEM A,TEM2 ;CALLED BY SEARCH AND $\
|
||
SKIPN SYSSW
|
||
SKIPE DDTSW
|
||
JRST EFFEC3
|
||
MOVEI C,100
|
||
MOVEM C,TEM
|
||
EFFEC1: MOVE C,D
|
||
LDB A,[(220400)D]
|
||
JUMPE A,EFFEC2
|
||
HRRZ D,AC0(A)
|
||
ADD D,C
|
||
EFFEC2: HRR A,D
|
||
TLNN C,20 ;INDIRECT BIT CHECK
|
||
JRST EFFEC3
|
||
SOSE TEM
|
||
PUSHJ P,FETCH
|
||
JRST EFFEC4
|
||
JRST EFFEC1
|
||
|
||
EFFEC3: AOS (P)
|
||
EFFEC4: MOVE A,TEM2
|
||
POPJ P,
|
||
|
||
SETUP: TLO F,LTF ;ZERO
|
||
SETUP1: MOVEI D,1(D)
|
||
TLNN F,QF
|
||
SETUP2: JRST SETUP3
|
||
SETUP4: HRRM D,ULIMIT
|
||
HRRZ A,DEFV
|
||
TLNN F,FAF
|
||
MOVEI A,0
|
||
SKIPE HIGH
|
||
CAMG D,HIGH
|
||
CAML A,ULIMIT
|
||
JRST ERR
|
||
MOVEM A,DEFV
|
||
MOVE C,A
|
||
SUB C,ULIMIT
|
||
HRLM C,A
|
||
POPJ P,0
|
||
|
||
SETUP3: SKIPE UCHNLO
|
||
.USET USRI,[.RMEMT,,HIGH]
|
||
HRRZ D,HIGH
|
||
SKIPE SYSSW
|
||
MOVEI D,60000
|
||
JRST SETUP4
|
||
|
||
ZERO: PUSHJ P,QJERR
|
||
SKIPE FURN(U)
|
||
JRST JERR
|
||
JUMPGE F,ERR
|
||
SETZM UBUF
|
||
MOVE C,[UBUF,,UBUF+1
|
||
BLT C,UBUF+BUFL-1
|
||
PUSHJ P,SETUP
|
||
TLZ A,-1
|
||
.ACCESS USRO,A
|
||
ZERO1: HRRI D,UBUF
|
||
HRL D,C
|
||
CAMGE C,[-BUFL
|
||
HRLI D,-BUFL
|
||
.IOT USRO,D
|
||
ADDI C,BUFL
|
||
JUMPL C,ZERO1
|
||
JRST DD1
|
||
|
||
FTOC:
|
||
TOC: HRRZ W1,ODF
|
||
CAIN W1,12
|
||
JRST, TOC4
|
||
TOCA: LSHC D,-43
|
||
LSH W1,-1 ;W1=D+1
|
||
TOC1: DIVI D,@ODF
|
||
HRLM W1,0(P)
|
||
TOC3: JUMPE D,TOC2
|
||
PUSHJ P,TOCA
|
||
TOC2: HLRZ D,0(P)
|
||
ADDI D,"0
|
||
CJTOUT: JRST TOUT ;DOES POPJ TO TOC2 OR EXIT
|
||
|
||
TOC4: MOVM W1,D
|
||
JUMPGE D,TOC5
|
||
XCT "-,CRF
|
||
TOC5: MOVEI D,0
|
||
PUSHJ P,TOC1
|
||
TPER: MOVEI D,".
|
||
JRST TOUT
|
||
|
||
SPT: MOVE D,CJTOUT
|
||
.SPT: MOVEM D,SPTS
|
||
MOVE D,0(W1) ;SYMBOL PRINT
|
||
MOVEM W1,DSSAV
|
||
TLZ D,740000
|
||
SPT1: IDIV D,[50*50*50*50*50]
|
||
PUSHJ P,SPT2
|
||
MOVE D,W1
|
||
IMULI D,50
|
||
JUMPN D,SPT1
|
||
POPJ P,
|
||
|
||
SPT2: ADDI D,260-1
|
||
CAILE D,271
|
||
ADDI D,301-272
|
||
CAILE D,332
|
||
SUBI D,334-244
|
||
CAIN D,243
|
||
MOVEI D,256
|
||
XCT SPTS
|
||
POPJ P,
|
||
|
||
TTYRET: SKIPN DDTTY
|
||
.DTTY USRI,
|
||
POPJ P,
|
||
.RESET TYIC,
|
||
SETOM DDTTY
|
||
POPJ P,
|
||
|
||
TTYLEV: MOVEM U,TTYUSR
|
||
SETZM DDTTY
|
||
.ATTY USRI,
|
||
TERR (SIXBIT /CFT/)
|
||
POPJ P,
|
||
|
||
CPATCH: TLNN F,ROF
|
||
JRST ERR
|
||
MOVE D,WRD
|
||
MOVE A,LLOCO
|
||
TLNE F,QF
|
||
PUSHJ P,DEPRA
|
||
MOVE D,[SQUOZE 0,PATCH
|
||
PUSHJ P,SYME1
|
||
JRST CPTCH2
|
||
CPTCH3: MOVEM D,PATCHL(U)
|
||
CPTCH1: PUSHJ P,CRF
|
||
TRO F,PF
|
||
MOVE A,LLOCO
|
||
MOVEM A,CPTCHL
|
||
MOVEM A,CPTCHM
|
||
PUSHJ P,FETCH
|
||
JRST PERR
|
||
PUSH P,D
|
||
MOVE D,PATCHL(U)
|
||
PUSHJ P,LI1
|
||
PUSHJ P,LCT
|
||
POP P,D
|
||
TLO F,QF+ROF
|
||
MOVEM D,WRD
|
||
PUSHJ P,CONSYM
|
||
JRST LIS1
|
||
|
||
CPTCH2: MOVE D,[SQUOZE 0,PAT
|
||
PUSHJ P,SYME1
|
||
MOVEI D,50
|
||
JRST CPTCH3
|
||
|
||
SYME1: MOVEM D,SYM
|
||
JRST EVAL
|
||
|
||
PERR: TRZA F,PF
|
||
CEOP: TRZN F,PF
|
||
JRST ERR
|
||
PUSHJ P,CRF
|
||
TLNE F,ROF
|
||
JRST CEOP2
|
||
CEOP3: MOVE A,CPTCHL
|
||
PUSHJ P,ERF
|
||
TLNE F,CF
|
||
PUSHJ P,FDEP
|
||
TLO F,LTF
|
||
CEOP1: AOS D,CPTCHL
|
||
HRLI D,(JUMPA 1,)
|
||
PUSHJ P,FDEP
|
||
TLZE F,LTF
|
||
JRST CEOP1
|
||
SOS D,CPTCHM
|
||
EXCH D,LLOC
|
||
AOS D
|
||
EXCH D,PATCHL(U)
|
||
HRLI D,(JUMPA 3,)
|
||
TLNE F,CF
|
||
HRLI D,(JUMPA 2,)
|
||
PUSHJ P,FDEP
|
||
MOVE D,[SQUOZE 0,PATCH
|
||
MOVEM D,SYM
|
||
PUSHJ P,EVAL
|
||
JRST CPND
|
||
JRST CPD
|
||
CPND: MOVSI A,-2
|
||
PUSHJ P,HOLE
|
||
MOVE A,C
|
||
CPD: MOVE D,PATCHL(U)
|
||
MOVEM D,1(A)
|
||
MOVSI D,GLOBAL
|
||
IOR D,SYM
|
||
MOVEM D,(A)
|
||
JRST DD1
|
||
|
||
CEOP2: MOVE D,WRD
|
||
MOVE A,LLOCO
|
||
TLNE F,QF
|
||
PUSHJ P,DEPRA ;WILL CLEAR ROF
|
||
TLNE F,ROF
|
||
SOS LLOC
|
||
JRST CEOP3
|
||
|
||
FDEP: PUSH P,D
|
||
PUSHJ P,LI1C
|
||
PUSHJ P,LCT
|
||
MOVE D,(P)
|
||
PUSHJ P,CONSYM
|
||
PUSHJ P,CRF
|
||
POP P,D
|
||
MOVE A,LLOC
|
||
TLO F,QF+ROF
|
||
MOVE W1,ESTU
|
||
JRST DEPRA
|
||
|
||
UNPATCH: TLNN F,ROF
|
||
JRST ERR
|
||
MOVE A,LLOCO
|
||
PUSHJ P,ERF
|
||
MOVE A,D
|
||
TLC D,(JUMPA 2,)
|
||
TLNN D,-1
|
||
JRST UNPA1
|
||
UNPA2: PUSHJ P,ERF
|
||
PUSH P,D
|
||
PUSHJ P,CONSYM
|
||
POP P,D
|
||
TLO F,QF
|
||
JRST CARR
|
||
UNPA1: MOVEI W1,100.
|
||
UNPA3: PUSHJ P,ERF
|
||
TLC D,(JUMPA 1,)
|
||
TLNN D,-1
|
||
SOJA A,UNPA2
|
||
SOJL W1,ERR
|
||
AOJA A,UNPA3
|
||
|
||
ERF: PUSHJ P,FETCH
|
||
JRST ERR
|
||
POPJ P,
|
||
|
||
PURIFY: MOVEI A,MINPUR+MINPUR_9+400000
|
||
.CBLK A,
|
||
.VALUE [ASCIZ /:PURIFY LOST/]
|
||
ADDI A,1001
|
||
CAIE A,400000+NPUR_9+NPUR
|
||
JRST PURIFY+1
|
||
.VALUE [ASCIZ /:PURIFIED/]
|
||
JRST DDT
|
||
|
||
INITF: SIXBIT / DSK/
|
||
SIXBIT /.DDT./
|
||
SIXBIT /(INIT)/
|
||
|
||
TYIF: 30,,(SIXBIT /TTY/)
|
||
SIXBIT /.DDT. TYI/
|
||
|
||
TYOF: 1,,(SIXBIT /TTY/)
|
||
SIXBIT /.DDT. TYO/
|
||
|
||
.ZZ7==.
|
||
LOC .ZZ6
|
||
|
||
SAVE: 0
|
||
SETOM SARS
|
||
MOVEI P,PS
|
||
MOVE F,[SCHM,,SCH]
|
||
BLT F,ODF
|
||
SETZB F,F
|
||
JRST @SAVE
|
||
|
||
.ZZ8==.
|
||
LOC .ZZ7
|
||
|
||
RESTORE:
|
||
RESTR1: .ACCESS USRO,[34]
|
||
MOVE D,[-3,,34SAV]
|
||
.IOT USRO,D
|
||
MOVE D,PPC(U)
|
||
.USET USRI,[.SUPC,,D]
|
||
RESTR2: SETZM SARS
|
||
.USET USRI,[.SUSTP,,[0]]
|
||
SLP: PUSHJ P,RTYIC ;GET CHAR FROM VALRET OR FILE
|
||
JRST SLP2 ;NONE AVAILABLE
|
||
CAIE D,^V ;IF NEXT CHARACTER CONTROL V,
|
||
JRST SLP2 ;...
|
||
PUSHJ P,IN ;THEN GOBBLE DOWN CHARACTER,
|
||
SETOM TTYFLG ;AND TURN ON TYPEON NOW
|
||
SLP2: SKIPE DDINT
|
||
JRST UBREAK
|
||
MOVSI D,200000
|
||
.SLEEP D, ;YAWN
|
||
|
||
CRF: JSR I4,TYOI
|
||
|
||
LF: MOVEI D,12 ;LINE FEED
|
||
JRST TOUT
|
||
|
||
TATP: CAIG D,44
|
||
SKIPG D
|
||
JRST ERR
|
||
MOVEI C,36.
|
||
DPB D,[300600,,SATPP]
|
||
IDIV C,D
|
||
MOVEM C,SATPC
|
||
JRST RATP
|
||
|
||
SATP: MOVEI C,44
|
||
DPB C,[360600,,SATPP]
|
||
MOVE C,SATPC
|
||
MOVEM D,SATPT
|
||
SATPL: ILDB D,SATPP
|
||
PUSHJ P,TOC
|
||
PUSHJ P,TSPC
|
||
SOJG C,SATPL
|
||
POPJ P,
|
||
|
||
CTLX: TLNE F,CF
|
||
JRST MURDER
|
||
PUSHJ P,QJERR ;DOES NOT ALLOW SYS
|
||
SKIPE UINTWD(U)
|
||
JRST ERR
|
||
.USET USRI,[.SUSTP,,[-1]]
|
||
.USET USRI,[.SIPIRQ,,[2]]
|
||
JRST RESTR2
|
||
|
||
MURDER: SKIPL F
|
||
JUMPE U,JERR ;ALLOW SYS
|
||
PUSHJ P,IIN
|
||
CAIE D,".
|
||
JRST ERR
|
||
JUMPL F,MASACR
|
||
JKILL2: PUSHJ P,MRDR
|
||
FNJOB: MOVEI U,USRS
|
||
SETOM TEM
|
||
FNJOB4: SKIPN UUNAME(U)
|
||
JRST FNJOB5
|
||
MOVE A,JTIME(U)
|
||
CAMG A,TEM
|
||
JRST FNJOB5
|
||
MOVEM A,TEM
|
||
MOVEM U,TEM1
|
||
FNJOB5: ADDI U,USRLNG
|
||
CAIGE U,USREND
|
||
JRST FNJOB4
|
||
SKIPGE TEM
|
||
JRST MASAC4
|
||
MOVE U,TEM1
|
||
PUSHJ P,TSPC
|
||
PUSHJ P,NJTYP
|
||
PUSHJ P,OPUSRN
|
||
JRST ALTL2
|
||
|
||
MRDR: MOVE D,UJNAME(U)
|
||
CAMN D,[SIXBIT /SYS/]
|
||
JRST MRDR3
|
||
SETZM UCHNLO
|
||
.UCLOSE USRI,
|
||
MRDR2: SETZM UUNAME(U);(FOR TRANDL) ;CALLED BY OPUSRT
|
||
.TRANDL UUNAME(U) ;FLUSH ALL TRAN ENTRIES FOR THIS JOB
|
||
JFCL
|
||
MRDR3: SETZM UUNAME(U)
|
||
SETZM SYSSW
|
||
SETZM DDTSW
|
||
HRRI D,UUNAME(U)
|
||
HRLS D
|
||
AOS D
|
||
BLT D,USRLNG-2(U) ;DON'D WIPE OUT JOBSYM
|
||
JRST ELECTRON
|
||
|
||
MASACR: PUSHJ P,MASAC1
|
||
MASAC4: SETZB U,HIGH
|
||
JRST ALTL2
|
||
|
||
MASAC1: MOVEI U,USRS
|
||
MASAC2: SKIPN D,UJNAME(U)
|
||
JRST MASAC3
|
||
MOVEI A,2
|
||
HRLM A,UFUSR(U) ;MAKE SURE INPUT MODE, WIN FOR FOREIGN USERS
|
||
CAME D,[SIXBIT /SYS/]
|
||
.OPEN USRI,UFUSR(U)
|
||
JFCL
|
||
PUSHJ P,MRDR
|
||
MASAC3: ADDI U,USRLNG
|
||
CAIGE U,USREND
|
||
JRST MASAC2
|
||
POPJ P,
|
||
|
||
DISOWN: PUSHJ P,QIJERR ;REALLY $$^H OR :DISOWN
|
||
SETZM UCHNLO
|
||
.DISOWN USRI,
|
||
TERR (SIXBIT /DSN/)
|
||
PUSHJ P,MRDR2
|
||
JRST FNJOB
|
||
|
||
CTLD1: SKIPN GETTY
|
||
CTYPE "^
|
||
SKIPE GETTY
|
||
CTYPE "_
|
||
JUMPGE F,CTLD4
|
||
SKIPN SUSMNG
|
||
SKIPN SYSSW
|
||
JRST CTLD3
|
||
CTYPE "D
|
||
SETOM SYSDPS
|
||
CTYPE "?
|
||
JRST RET
|
||
|
||
CTLD2: SETOM SUSMNG
|
||
SETZM SYSDPS
|
||
JRST ERR
|
||
|
||
CTLD3: CTYPE "D
|
||
JRST ERR
|
||
|
||
CTLD4: CTYPE "R
|
||
JRST ERR
|
||
|
||
CTLY: PUSHJ P,QJERR
|
||
TLNE F,CCF ;"$$" TYPED?
|
||
JRST ALTCY ;GO MOVE SYMBOLS INTO USER'S CORE
|
||
PUSH P,D
|
||
TLNE F,CF
|
||
PUSHJ P,ELECTRON
|
||
HLLZ A,(P)
|
||
JUMPE A,ALTL2
|
||
HLRE B,A
|
||
MOVNS B
|
||
ADD B,(P)
|
||
HRRZS B
|
||
CAML B,HIGH
|
||
JRST ERR
|
||
PUSHJ P,HOLE
|
||
HRRZ A,(P) ;GET ADDRESS OF BEGINNING OF AREA
|
||
.ACCESS USRI,A
|
||
POP P,A ;RESTORE WHOLE AOBJN POINTER
|
||
HRR A,C
|
||
.IOT USRI,A
|
||
JRST ALTL2
|
||
|
||
ALTCY: .ACCESS USRI,D ;ACCESS AOBJN POINTER
|
||
PUSH P,D ;STACK ACCESS POINTER
|
||
HRROI A,D ;SET UP IOT
|
||
.IOT USRI,A ;GET AOBJN POINTER
|
||
JUMPGE D,YERR1 ;OBVIOUSLY NOT AOBJN POINTER
|
||
PUSH P,D ;STACK AOBJN POINTER
|
||
HRRZ A,D ;GET LOW ADDRESS
|
||
HLRE D,D ;GET COUNT
|
||
MOVM D,D ;GET COUNT MAGNITUDE
|
||
ADD A,D ;GET THEORETIC HIGH ADDRESS
|
||
.USET USRI,[.RMEMT,,D] ;GET TOP OF WORLD
|
||
CAML A,D ;ADDRESS TOO HIGH?
|
||
JRST YERR2 ;YES
|
||
HLRE A,JOBSYM(U) ;ENOUGH ROOM FOR ADDITIONAL SYMBOLS?
|
||
HRRZ D,(P)
|
||
ADD D,A
|
||
JUMPL D,YERR2 ;NO
|
||
.ACCESS USRO,D ;AND TRANSFER THE SYMBOLS
|
||
MOVE D,JOBSYM(U)
|
||
.IOT USRO,D
|
||
HLRE A,JOBSYM(U) ;GET NEW SYMBOL COUNT
|
||
HLRE D,(P)
|
||
ADD D,A
|
||
HRLZ D,D ;TRUNCATE COUNT
|
||
HRR D,(P) ;GET NEW LOW ADDRESS
|
||
ADDI A,(D)
|
||
HRR D,A
|
||
.ACCESS USRO,-1(P)
|
||
HRROI A,D
|
||
.IOT USRO,A ;AND SAVE IT
|
||
SUBI P,2 ;UNWIND THE STACK
|
||
JRST ALTL2
|
||
|
||
YERR2: SOS P
|
||
YERR1: SOS P
|
||
TERR
|
||
|
||
|
||
DISP: ERR,,CTLA
|
||
L2,,DS
|
||
CTLD2,,L2
|
||
CTLF,,L2
|
||
ACTRLH,,TAB
|
||
LINEF,,ACTRLH
|
||
L2,,CARR
|
||
ONEPRO,,CTLO
|
||
CTLP,,VARRW ;CTL Q IS BLACK UP ARROW BUTTON
|
||
CTLD1,,CTLS
|
||
CTLT,,CTLU
|
||
TTYON,,L2
|
||
CTLX,,CTLY
|
||
ERR,,CONTROL
|
||
CPATCH,,CEOP
|
||
ERR,,UNPATCH
|
||
SPACE,,SUPTYO
|
||
TEXO,,ASSEM
|
||
DOLLAR,,PERC
|
||
R50PNT,,DIVD
|
||
LPRN,,RPRN ;ALL DISPATCHES AFTER RPRN HAVE ARG EVALUATED
|
||
MULT,,PLUS
|
||
ACCF,,MINUS
|
||
PERIOD,,SLASH
|
||
NUM,,NUM
|
||
NUM,,NUM
|
||
NUM,,NUM
|
||
NUM,,NUM
|
||
NUM,,NUM
|
||
TAG,,RETYP
|
||
FIRARG,,EQUAL
|
||
ULIM,,ASLASH
|
||
INDIRECT,,ABSA
|
||
BPS,,CON
|
||
SDEC,,EFFEC
|
||
SFLOT,,AGO
|
||
HWRDS,,MARSET
|
||
ALTJ,,KILL
|
||
ALTL,,MASK
|
||
NWORD,,SOCT
|
||
PROCEDE,,QUAN
|
||
RELA,,ALTS
|
||
TATP,,ALTU
|
||
ALTV,,AWORD
|
||
XEC,,ALTY
|
||
ZERO,,OCON
|
||
ICON,,OSYM
|
||
VARRW,,PSYM
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
ERR,,ERR
|
||
CONTROL,,CONTROL
|
||
ERR,,ERR
|
||
|
||
NPUR==<.+1>/2000 ;PURE PAGE HACK
|
||
|
||
INFORM [TOP OF PURE]\.-1
|
||
|
||
DDTEND:
|
||
IISYM:
|
||
IRP A,,[CLEARM,CLEARB,CONSZ,CONSO,DATAI,DATAO,BLKI,BLKO,CONI,CONO,$X]
|
||
SQUOZE 4,A
|
||
A
|
||
TERMIN
|
||
SQUOZE 4,.FILE
|
||
.FILE+770000
|
||
|
||
INISYE: INFORM [HIGHEST USED]\.-1
|
||
|
||
.ZZ9==.
|
||
LOC .ZZ8
|
||
|
||
CONSTANTS
|
||
VARIABLES
|
||
|
||
.ZZ10==.
|
||
LOC .ZZ9
|
||
|
||
END DDT
|