mirror of
https://github.com/PDP-10/its.git
synced 2026-05-01 05:59:11 +00:00
MONIT 200.
This version is dated 1972-12-21 in a comment, and works on current ITS without modification.
This commit is contained in:
committed by
Adam Sampson
parent
2b0963aeaf
commit
e2fe757d6a
2
Makefile
2
Makefile
@@ -11,7 +11,7 @@ SRC = system syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \
|
|||||||
jim jm jpg macrak maxdoc maxsrc mrg munfas paulw reh rlb rlb% share \
|
jim jm jpg macrak maxdoc maxsrc mrg munfas paulw reh rlb rlb% share \
|
||||||
tensor transl wgd zz graphs lmlib pratt quux scheme gsb ejs mudsys \
|
tensor transl wgd zz graphs lmlib pratt quux scheme gsb ejs mudsys \
|
||||||
draw wl taa tj6 budd sharem ucode rvb kldcp math as imsrc gls demo \
|
draw wl taa tj6 budd sharem ucode rvb kldcp math as imsrc gls demo \
|
||||||
macsym lmcons
|
macsym lmcons dmcg
|
||||||
DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \
|
DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \
|
||||||
chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \
|
chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \
|
||||||
xfont maxout ucode moon acount alan channa fonts games graphs humor \
|
xfont maxout ucode moon acount alan channa fonts games graphs humor \
|
||||||
|
|||||||
@@ -1112,5 +1112,7 @@ respond "*" ":midas sys3;ts george_syseng;george\r"
|
|||||||
expect ":KILL"
|
expect ":KILL"
|
||||||
|
|
||||||
# MONIT
|
# MONIT
|
||||||
respond "*" ":midas sys;ts monit_syseng;monit\r"
|
# The ERROR lines printed during assembly are locations of unlikely
|
||||||
|
# runtime errors (e.g. not being able to open TTY:).
|
||||||
|
respond "*" ":midas sys;ts monit_dmcg;monit\r"
|
||||||
expect ":KILL"
|
expect ":KILL"
|
||||||
|
|||||||
1144
src/dmcg/monit.200
Normal file
1144
src/dmcg/monit.200
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,897 +0,0 @@
|
|||||||
TITLE MONITOR AND MERRY MAKING
|
|
||||||
|
|
||||||
;ACCUMULATOR DEFS
|
|
||||||
FF==0 ;FLAG AC
|
|
||||||
A=1
|
|
||||||
B=2
|
|
||||||
C=3
|
|
||||||
D=4
|
|
||||||
P=17 ;PUSH DOWN POINTER
|
|
||||||
|
|
||||||
;FLAGS FOR FF REG
|
|
||||||
USRUN==1 ;INFERIOR EXISTS
|
|
||||||
VALCM==10 ;LOOKING AT .VALUE FROM INFERIOR
|
|
||||||
CRLF==40 ;CR WAS LAST CHARACTER OUTPUT TO TTY
|
|
||||||
RDF==200 ;READING COMMANDS FROM FILE
|
|
||||||
ECHF==400 ;ECHO TYPING
|
|
||||||
TTYGN==1000 ;TTY GIVEN AWAY
|
|
||||||
INFIL==2000 ;FILE INPUT FOR LOAD OPEN
|
|
||||||
OUTFLS==4000 ;OUTPUT STOPPED BY ^S
|
|
||||||
|
|
||||||
;CHANNELS FOR I/O
|
|
||||||
TYIC==1 ;TTY INPUT
|
|
||||||
TYOC==2 ;TTY OUTPUT
|
|
||||||
SYSI==3 ;INPUT OF PROGRAMS
|
|
||||||
USRO==4 ;OUTPUT TO INFERIOR
|
|
||||||
USRT==5 ;TEMPORARY SECOND INFERIOR
|
|
||||||
PRTC==6 ;PRINT AND LISTF INPUT AND ERROR DEVICE
|
|
||||||
CLAC==7 ;CLA INPUT
|
|
||||||
CLIC==10 ;CLI OUTPUT
|
|
||||||
|
|
||||||
PDLLNG==30
|
|
||||||
COMLNG==24 ;WDS FOR COMMANDS
|
|
||||||
BUFLNG==200 ;IO BUFF LNG
|
|
||||||
|
|
||||||
ZZZ==.
|
|
||||||
LOC 41
|
|
||||||
JSR UUOH
|
|
||||||
JSR TSINT
|
|
||||||
LOC ZZZ
|
|
||||||
|
|
||||||
DEFINE FATAL MESS
|
|
||||||
JSP A,XFATAL
|
|
||||||
INFOR2 \.,MESS
|
|
||||||
TERMIN
|
|
||||||
|
|
||||||
DEFINE INFORM N,MESS
|
|
||||||
IF1,[PRINTC / N MESS
|
|
||||||
/] TERMIN
|
|
||||||
|
|
||||||
DEFINE INFOR2 N,MESS
|
|
||||||
IF2,[PRINTC / N MESS
|
|
||||||
/] TERMIN
|
|
||||||
|
|
||||||
FFSAV=5
|
|
||||||
STARTA=6
|
|
||||||
COMPTR=7
|
|
||||||
LCMCHR=10
|
|
||||||
LOGNAM=11
|
|
||||||
LPOS=12
|
|
||||||
BASE=13
|
|
||||||
NOATTY: PSIXI (SIXBIT /ATY/) ;CFT - UNABLE TO GIVE CONSOLE TO INFERIOR
|
|
||||||
QBEG: PASCR [ASCIZ /?/]
|
|
||||||
QBUST: TLZ FF,RDF+ECHF+VALCM ;IN CASE _G'ED
|
|
||||||
BEG: TLZ FF,OUTFLS
|
|
||||||
.SUSET [.SPICL,,[-1]] ;? ? MAKE ME INTERUPT-PRONE
|
|
||||||
MOVE P,[-PDLLNG,,PDL-1] ;FLUSH OUT PDL
|
|
||||||
TLNN FF,VALCM ;VALRETED FROM PREV
|
|
||||||
PUSHJ P,RCMD ;READ STRING IN
|
|
||||||
PUSHJ P,SCMD ;SCAN COMMAND
|
|
||||||
JUMPE B,.-2 ;COMMAND BLANK, TRY AGAIN
|
|
||||||
PASCI ^M
|
|
||||||
MOVE A,[-NUMCOM,,MYCOM]
|
|
||||||
CAMN B,(A) ;CHECK FOR LOCAL COMMANDS
|
|
||||||
JRST @1(A) ;FOUND
|
|
||||||
AOBJN A,.+1
|
|
||||||
AOBJN A,.-3 ;GET ANOTHER
|
|
||||||
|
|
||||||
MOVEM B,SYSF+2 ;STORE SYS FILE NAME
|
|
||||||
CAMN B,USRF+2
|
|
||||||
PUSHJ P,USRCLO ;KILL CURRENT ONE FIRST
|
|
||||||
MOVEM B,USRF+2 ;AND NAME TO CREATE
|
|
||||||
TLZ FF,INFIL ;SHOW NO INFILE OPEN (IN CASE RE-OWN JOB)
|
|
||||||
UOPEN: MOVEI A,7 ;SET MODE FOR USER FILE
|
|
||||||
HRLM A,USRF ;IMAGE, BLOCK, OUTPUT
|
|
||||||
TLNN FF,INFIL
|
|
||||||
PUSHJ P,USROPE ;SEE IF DISOWNED - AND OPEN THE USER
|
|
||||||
PUSHJ P,ALD ;LOAD THE FILE - SKIPPED IF RE-OWNED JOB
|
|
||||||
.USET USRO,[.SUPC,,STARTA] ;SET INF PC TO START - MAY BE SKIPPED TOO
|
|
||||||
.CLOSE SYSI,
|
|
||||||
PUSHJ P,ATTY ;GIVE HIM THE CONSOLE
|
|
||||||
.USET USRO,[.SUSTP,,BLANK] ;START INF
|
|
||||||
JRST QBUST
|
|
||||||
|
|
||||||
; MOVSI A,200000
|
|
||||||
; .SLEEP A, ;RIP VAN WINKLE
|
|
||||||
; JRST .-2 ;IN CASE 40 YRS PASS
|
|
||||||
|
|
||||||
RCMD: SETZM LCMCHR
|
|
||||||
TLNN FF,RDF ;READING
|
|
||||||
JRST RCMD2 ;NO, TYPE
|
|
||||||
TLNN FF,ECHF
|
|
||||||
JRST RCMD3 ;NOT ECHO => NO TYPE
|
|
||||||
RCMD2: .IOT TYOC,[15] ;CR IF (RDF OFF) OR (ECHF ON)
|
|
||||||
.IOT TYOC,[";] ;PROMPT CHARACTER
|
|
||||||
RCMD3: MOVE B,[440700,,COMMND] ;BEG INPUT
|
|
||||||
MOVEM B,COMPTR ;SET COMMAND PTR
|
|
||||||
MOVEI C,0 ;COUNTER
|
|
||||||
RCMD1: .IOT TYIC,A ;GET CHAR
|
|
||||||
CAIN A,33 ;ALT MODE
|
|
||||||
JRST QBEG
|
|
||||||
CAIN A,"?
|
|
||||||
JUMPE C,PHELP ;INIT ? MEANS HELP
|
|
||||||
TLNN A,-1 ;MAGIC EOF CONDITION
|
|
||||||
CAIN A,^C ;EOF ON READ?
|
|
||||||
JRST CLSRD ;YES, OPEN TTY
|
|
||||||
CAIE A,^S
|
|
||||||
CAIN A,^G ;BELL TO FLUSH LINE - DOESNT HAPPEN ON THIS LEVEL
|
|
||||||
JRST RCMD1 ;IGNORE
|
|
||||||
CAIN A,177 ;RUBOUT
|
|
||||||
JRST RUB
|
|
||||||
IDPB A,B ;STORE CHAR IN STRING
|
|
||||||
CAML B,[350700,,COMMND+COMLNG-1] ;BYTE P TO END OF BUFF
|
|
||||||
JRST RCFUL ;FULL BUFFER
|
|
||||||
CAIL A,40 ;OUT FOR ANY CONTROL CHARACTER
|
|
||||||
AOJA C, RCMD1 ;NO, GET MORE
|
|
||||||
RCMDX: MOVEI A,0 ;YES, TERM WITH NULL FOR TYPE
|
|
||||||
IDPB A,B
|
|
||||||
TLZ FF,OUTFLS
|
|
||||||
POPJ P, ;RETURN BEFORE POSSIBLE END OF FILE
|
|
||||||
|
|
||||||
CLSRD: MOVEM A,LCMCHR
|
|
||||||
TLZ FF,ECHF+RDF ;END OF READ
|
|
||||||
.OPEN TYIC,TYIF ;SWITCH BACK TO TTY INPUT OF COMMANDS
|
|
||||||
JSP A,ANALER ;ENDS UP BEING FATAL
|
|
||||||
RCFUL: MOVEI A,15 ;END UP COMMAND
|
|
||||||
IDPB A,B
|
|
||||||
JRST RCMDX ;MUST BE END OF COMM
|
|
||||||
|
|
||||||
RUB: SOJL C,RCMD ;IF RUBBED OUT EVERYTHING
|
|
||||||
LDB A,B ;GET LAST INSERTED
|
|
||||||
.IOT TYOC,A ;ECHO IT OUT
|
|
||||||
ADD B,[070000,,] ;BUMP CH POINTER
|
|
||||||
TLNE B,400000 ;AT WORD BOUND
|
|
||||||
ADD B,[347777777777]
|
|
||||||
JRST RCMD1
|
|
||||||
|
|
||||||
SCMD: MOVE A,COMPTR ;SCAN COMMAND
|
|
||||||
ILDB A,A
|
|
||||||
CAIE A,": ;WAS FIRST CHAR A :
|
|
||||||
JRST GETSYL
|
|
||||||
PUSHJ P,GETCAT ;YES, IGNORE IT
|
|
||||||
IBP COMPTR
|
|
||||||
JRST GETSYL
|
|
||||||
|
|
||||||
GETCCA: ILDB A,COMPTR ;FETCH COMM CHAR TO A
|
|
||||||
CAIE A,^L ;FLUSH FORM FEED
|
|
||||||
CAIN A,^J ;FLUSH LF
|
|
||||||
JRST GETCCA
|
|
||||||
CAIE A,^C ;EOF
|
|
||||||
SKIPN A ;NULL AT END OF ASCIZ
|
|
||||||
TLZ FF,VALCM+ECHF ;TURN OFF .VALUE READING
|
|
||||||
GETCAT: TLNE FF,VALCM+ECHF
|
|
||||||
JRST IOTA ;ECHO IF VALRET OR ECHO FLAG
|
|
||||||
POPJ P, ;ELSE JUST RETURN
|
|
||||||
; SCNAME - ROUTINE TO SCAN COMMAND LINE FROM CURRENT POSITION
|
|
||||||
; RETURNS A FILE NAME. A,B,C,D <= NAME1,NAME2,DEVICE,USER
|
|
||||||
; USING "[DEV:][USR;]NAME1 NAME2" OR "NAME1 NAME2 [DEV [USR]]"
|
|
||||||
|
|
||||||
SCNAME: PUSH P,[SIXBIT /@/] ;WORK SCRATCH ON STACK
|
|
||||||
PUSH P,[SIXBIT /@/] ;NAME1,NAME2
|
|
||||||
PUSH P,BLANK ;DEV
|
|
||||||
PUSH P,BLANK ;USR
|
|
||||||
MOVEI C,-3(P) ;INIT PTR TO N1
|
|
||||||
SCNGET: PUSHJ P,GETSYL ;RET A,B <= BRKCHR,6BIT SYL
|
|
||||||
SKIPN B
|
|
||||||
JUMPL A,POPIT ;EMPTY SYLLABLE AT END OF LINE
|
|
||||||
CAIN A,': ;CHECK WHICH BREAK
|
|
||||||
MOVEM B,-1(P) ;MOVE SYL: TO DEVICE
|
|
||||||
CAIN A,'; ;MOVE SYL; TO USR
|
|
||||||
MOVEM B,0(P)
|
|
||||||
JUMPG A,SCNGET ;NOT SPACE, GET MORE SYL(NOT CTL EITHER)
|
|
||||||
CAIN C,-2(P) ;POINT TO NAME2?
|
|
||||||
EXCH B,-3(P) ;YES, MOVE SYL1 TO NAME1
|
|
||||||
MOVEM B,(C)
|
|
||||||
JUMPL A,POPIT ;CTL TERMINATES
|
|
||||||
CAIGE C,(P) ;ALSO 4 SYLS DOES
|
|
||||||
AOJA C,SCNGET ;UP PTR, GET MORE
|
|
||||||
POPIT: POP P,D ;USR;
|
|
||||||
POP P,C ;DEV:
|
|
||||||
POP P,A ;N1
|
|
||||||
JRST GETSX ;N2
|
|
||||||
|
|
||||||
;GETSYL - ROUTINE TO GET SINGLE WORD OFF COMMAND LINE
|
|
||||||
; ONLY BRK CHAR ARE : ; SPACE AND CONTROLS EXCEPT ^Q WHICH
|
|
||||||
; QUOTES THE NEXT NON CTL CHAR (: ; SP)
|
|
||||||
|
|
||||||
GETSYL: PUSH P,BLANK ;INIT SYL ON STACK
|
|
||||||
MOVE B,[440600,,0(P)] ;BYT PTR TO STACK
|
|
||||||
GETSLP: PUSHJ P,GETCCA ;GET CHAR
|
|
||||||
CAIN A,^Q ;IS IT "QUOTE"
|
|
||||||
JRST GETQOT ;YES
|
|
||||||
SUBI A,40 ;MAKE SIXBIT
|
|
||||||
JUMPL A,GETSX ;CTL=EXIT
|
|
||||||
JUMPE A,GETSP ;INIT SPACES FLUSHED
|
|
||||||
CAIE A,':
|
|
||||||
CAIN A,';
|
|
||||||
JRST GETSX ; ; OR : TERM
|
|
||||||
GETSPT: CAIL A,100 ;LC?
|
|
||||||
SUBI A,40 ;MAKE UC
|
|
||||||
TLNE B,770000 ;CHECK FIT
|
|
||||||
IDPB A,B ;STORE CHAR
|
|
||||||
JRST GETSLP
|
|
||||||
|
|
||||||
GETQOT: PUSHJ P,GETCCA ;GET CHAR TO QUOTE
|
|
||||||
SUBI A,40 ;6BIT
|
|
||||||
JUMPGE A,GETSPT ;CANT ^Q A CTL
|
|
||||||
JRST GETSX
|
|
||||||
|
|
||||||
GETSP: TLNE B,400000 ;IF NONE YET PUT IN
|
|
||||||
JRST GETSLP ;SPACE IGNORED
|
|
||||||
GETSX: POP P,B ;ASSEMBLED SYL TO B
|
|
||||||
POPJ P, ;BREAK IS LEFT IN A
|
|
||||||
|
|
||||||
ALDLOS: MOVEI A,(SIXBIT /DSK/)
|
|
||||||
HRRM A,SYSF
|
|
||||||
.OPEN SYSI,SYSF ;TRY DSK:TS <NAME>
|
|
||||||
SKIPA
|
|
||||||
JRST USRCAS ;FLUSH OLD ONE, OPEN NEW ONE
|
|
||||||
MOVEI A,(SIXBIT /SYS/)
|
|
||||||
HRRM A,SYSF
|
|
||||||
.OPEN SYSI,SYSF ;NOW SYS:TS <NAME>
|
|
||||||
JSP A,ANALER
|
|
||||||
JRST USRCAS ;FLUSH OLD ONE, OPEN NEW ONE
|
|
||||||
|
|
||||||
ALD: TLZN FF,INFIL ;IS FILE OPEN ?
|
|
||||||
PUSHJ P,ALDLOS ;CROCK !
|
|
||||||
ALDO: PUSHJ P,GTWD ;READ BEGIN FILE
|
|
||||||
JUMPE B,PURE ;PURE PROCEDURE !!
|
|
||||||
CAME B,[JRST 1] ;CHECK FOR END OF LOADER
|
|
||||||
JRST ALDO
|
|
||||||
|
|
||||||
ALD1: PUSHJ P,GTWD ;GET CTL WD
|
|
||||||
JUMPGE B,ALDJ ;JRST OR CTL
|
|
||||||
MOVE C,B ;-N,,ADR
|
|
||||||
ALD2: MOVE D,B
|
|
||||||
CAMGE B,[-BUFLNG,,] ;CHECK FIT IN BUFF
|
|
||||||
HRLI B,-BUFLNG ;USE OWN SIZE
|
|
||||||
HRRI B,UBUF ;INBUFFER
|
|
||||||
PUSHJ P,ALDRD ;GET BLOCK
|
|
||||||
MOVEI A,(D)
|
|
||||||
.ACCESS USRO,A ;BEGIN OUTPUT AT LD ADR
|
|
||||||
MOVE A,B
|
|
||||||
.IOT USRO,A ;MOVE BLOCK THERE
|
|
||||||
SUB B,[-1,,]
|
|
||||||
SUB B,D ;CHECK IF MORE IN LD BLK
|
|
||||||
JUMPL B,ALD2 ;GET ANOTHR BUFF
|
|
||||||
PUSHJ P,GTWD ;END BLOCK, GET SUM
|
|
||||||
CAMN C,B ;CHECK
|
|
||||||
JRST ALD1 ;LOAD NEXT BLK
|
|
||||||
PSIXI (SIXBIT /CKS/)
|
|
||||||
SKIPA
|
|
||||||
EOF: PSIXI (SIXBIT /EOF/)
|
|
||||||
.CLOSE SYSI,
|
|
||||||
PUSHJ P,USRCLO ;FLUSH OUT JOB
|
|
||||||
JRST QBEG ;WILL SCRATCH PDL
|
|
||||||
|
|
||||||
ALDJ: HRRZM B,STARTA ;START IN FILE
|
|
||||||
POPJ P, ;RETURN
|
|
||||||
|
|
||||||
ALDRD: MOVE A,B
|
|
||||||
PUSHJ P,GTWD1 ;READ BUFF
|
|
||||||
MOVE A,B
|
|
||||||
ROT C,1 ;ACCUM CHECK SUM
|
|
||||||
ADD C,(A)
|
|
||||||
AOBJN A,.-2 ;FOR WHOLE BUFF
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
GTWD: HRROI A,B ;SINGLE WORD TO B
|
|
||||||
GTWD1: .IOT SYSI,A ;BLOCK IN
|
|
||||||
JUMPL A,EOF ;UNABLE TO READ DESIRED CT
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
PURE: SETZM BLK
|
|
||||||
.CALL CBLK ;GET SYSTEM TO LOAD THIS PURE PROCEDURE
|
|
||||||
PSIXI (SIXBIT /CBK/)
|
|
||||||
JRST ALD1
|
|
||||||
|
|
||||||
CBLK: 400000,,0
|
|
||||||
SIXBIT /LOAD/
|
|
||||||
[USRO]
|
|
||||||
[SYSI]
|
|
||||||
400000,,ARG3
|
|
||||||
|
|
||||||
ARG3: -3,,BLK
|
|
||||||
|
|
||||||
BLK: 0
|
|
||||||
0
|
|
||||||
0
|
|
||||||
DEATH: TLNE USRUN
|
|
||||||
PUSHJ P,DISOW
|
|
||||||
JRST DEAT
|
|
||||||
|
|
||||||
XFATAL: POCTI (A) ;MAY VERY WELL NOT OUTPUT ANYTHING
|
|
||||||
PASCR [ASCIZ / FATAL ERR/]
|
|
||||||
DEAT: .VALUE ;?? - MAY CAUSE RELOADING OF MONIT
|
|
||||||
PSIXI (SIXBIT /DTH/)
|
|
||||||
JRST QBEG ;IN CASE
|
|
||||||
|
|
||||||
ANALER: TLNN FF,RDF ;ERR DURING READING
|
|
||||||
JRST ANAL1 ;NO
|
|
||||||
.OPEN TYIC,TYIF ;SWITCH BACK TO TTY FOR INPUT OF COMMANDS
|
|
||||||
FATAL CANT RE-OPEN TTY
|
|
||||||
ANAL1: TLZ FF,RDF+ECHF+VALCM ;ERROR => NO TAPE IN OR VALRET
|
|
||||||
MOVEI A,@-2(A)
|
|
||||||
PSIX (A) ;POINTS TO OPEN BLOCK
|
|
||||||
PASCI ":
|
|
||||||
PSIX 1(A) ;NAME1
|
|
||||||
PASCI " ;SPACE
|
|
||||||
PSIX 2(A) ;NAME2
|
|
||||||
PASCI 40 ;SP
|
|
||||||
|
|
||||||
ERR: .OPEN PRTC,[SIXBIT / ERR !/] ;OPEN ERROR COMMENT
|
|
||||||
FATAL CANT OPEN ERROR DEVICE
|
|
||||||
XPRINT: .IOT PRTC,A
|
|
||||||
TLNN A,-1 ;MAGIC EOF?
|
|
||||||
CAIN A,^C
|
|
||||||
JRST BEG ;YES, FINISHED
|
|
||||||
CAIE A,^L ;IGNORE FF
|
|
||||||
PUSHJ P,IOTA ;PRINT SYSTEM COMMENT
|
|
||||||
TLZN FF,OUTFLS
|
|
||||||
JRST XPRINT
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
USROPE: PUSHJ P,CKLOG ;MUST BE LOGGED IN
|
|
||||||
.OPEN USRT,USRF ;NAME PTR IN A
|
|
||||||
JSP A,ANALER ;YOU LOST
|
|
||||||
.USET USRT,[.RMEMT,,A] ;ATTEMPT TO SEE IF REOWNED JOB
|
|
||||||
CAIE A,2000
|
|
||||||
JRST USRAT1 ;CERTAINLY
|
|
||||||
.USET USRT,[.RUPC,,A] ;??
|
|
||||||
TRNN A,-1
|
|
||||||
JRST USRILT ;NO, NO SUCH REOWNED JOB EXISTS
|
|
||||||
USRAT1: AOS (P) ;TO SKIP LOAD - SINCE JOB ALREADY EXISTS
|
|
||||||
AOS (P) ;TO SKIP GIVING IT PC
|
|
||||||
.CLOSE USRT, ;CLOSE TEMPORARY INFERIOR
|
|
||||||
USRCAS: PUSHJ P,USRCLO ;
|
|
||||||
.OPEN USRO,USRF ;FINALLY OPEN ON RIGHT CHANNEL
|
|
||||||
JSP A,ANALER
|
|
||||||
TLO FF,USRUN ;INDICATE THERE EXISTS ONE
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
USRILT: .UCLOSE USRT, ;FLUSH TEMPORARY INFERIOR
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
USRCLO: PUSHJ P,DTTY ;MAKE SURE TTY IS UP
|
|
||||||
TLZE FF,USRUN ;CHECK IF ACTUALLY OPEN
|
|
||||||
.UCLOSE USRO, ;YES, WIPE IT OUT
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
ATTY: TLNE FF,USRUN ;CANT IF NO USR OPEN
|
|
||||||
.ATTY USRO, ;TRY TO GIVE IT UP
|
|
||||||
JRST NOATTY ;LOST
|
|
||||||
TLO FF,TTYGN ;FLAG TTY GONE
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
DTTY: TLZN FF,TTYGN ;SEE IF TTY GIVEN AWAY
|
|
||||||
POPJ P, ;I GOT IT ALREADY
|
|
||||||
.DTTY USRO, ;GOBBLE IT BACK
|
|
||||||
FATAL CANT GET TTY BACK FM INF
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
LISTF: PUSHJ P,SCARE ;OUTPUT FILE DIRECTORY
|
|
||||||
JUMPN C,.+3
|
|
||||||
CAME B,[SIXBIT /@/]
|
|
||||||
MOVE C,B ;1ST ARG IS DEV IF NO :
|
|
||||||
MOVE A,[SIXBIT /.FILE./]
|
|
||||||
MOVE B,[SIXBIT /(DIR)/]
|
|
||||||
PUSHJ P,SCARE1
|
|
||||||
SKIPE C
|
|
||||||
HLRM C,PRTF ;SET DEV
|
|
||||||
HRRZS PRTF
|
|
||||||
JRST PRNCOM
|
|
||||||
|
|
||||||
PRINT: PUSHJ P,SCARE ;GET A,B,C,D = N1,N2,DEV,USR
|
|
||||||
PUSHJ P,COMTTT
|
|
||||||
PRNCOM: .OPEN PRTC,PRTF
|
|
||||||
JSP A,ANALER
|
|
||||||
JRST XPRINT
|
|
||||||
|
|
||||||
LOAD: PUSHJ P,SCARE ;GET FILE NAME
|
|
||||||
CAME A,[SIXBIT /TS/]
|
|
||||||
CAMN A,[SIXBIT /@/]
|
|
||||||
MOVE A,B
|
|
||||||
CAMN A,USRF+2
|
|
||||||
PUSHJ P,USRCLO ;KILL OLD ONE FIRST
|
|
||||||
MOVEM A,USRF+2 ;'@' OR 'TS' FIRST NAME => SECOND FOR JOB NAME
|
|
||||||
PUSHJ P,COMTTT
|
|
||||||
MOVSI C,6
|
|
||||||
HLLM C,PRTF ;SET BLOCK IMAGE INPUT
|
|
||||||
.OPEN SYSI,PRTF
|
|
||||||
JSP A,ANALER
|
|
||||||
TLO FF,INFIL
|
|
||||||
PUSHJ P,USRCAS ;FLUSH OLD INFERIOR, OPEN NEW ONE
|
|
||||||
JRST UOPEN
|
|
||||||
|
|
||||||
DELETE: PUSHJ P,SCARE
|
|
||||||
PUSHJ P,COMTTT
|
|
||||||
.FDELE PRTF ;SYS CALL DELETE
|
|
||||||
JRST CANNOT ;OOPS, ERROR RET
|
|
||||||
JRST BEG ;OK
|
|
||||||
|
|
||||||
XFILE: PUSHJ P,SCARE ;READ COMMANDS FROM FILE
|
|
||||||
TLO FF,RDF+ECHF ;FLAG READING
|
|
||||||
PUSHJ P,COMTTT
|
|
||||||
.OPEN TYIC,PRTF
|
|
||||||
JSP A,.+2
|
|
||||||
JRST BEG
|
|
||||||
.OPEN TYIC,TYIF ;GET BACK TTY - COULDNT OPEN COMMAND FILE
|
|
||||||
JSP A,ANALER ;COULDNT GET TTY - WILL BE FATAL ??
|
|
||||||
JRST ANALER
|
|
||||||
|
|
||||||
|
|
||||||
SCARE: PUSHJ P,SCNAME
|
|
||||||
SCARE1: CAMN B,[SIXBIT /@/]
|
|
||||||
JRST UNCHN ;IF HE DIDNT GIVE FILE NAME,USE OLD ONE ????
|
|
||||||
MOVEM A,PRTF+1
|
|
||||||
MOVEM B,PRTF+2
|
|
||||||
UNCHN: SKIPE D ;CHANGE SNAME
|
|
||||||
.SUSET [.SSNAME,,D]
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
COMTTT: SKIPE C
|
|
||||||
HLRM C,PRTF ;SET DEV
|
|
||||||
HRRZ C,PRTF
|
|
||||||
MOVEM C,PRTF
|
|
||||||
CAIE C,(SIXBIT /TTY/)
|
|
||||||
POPJ P,
|
|
||||||
PSIXI (SIXBIT /DEV/)
|
|
||||||
JRST QBEG
|
|
||||||
|
|
||||||
LOGIN: PUSHJ P,GETSYL
|
|
||||||
MOVEM B,USRF+1 ;SET NEW UNAME (? SO CAN HACK OTHERS DISOWNED PROCEDURES)
|
|
||||||
.CALL LBLK
|
|
||||||
JRST CANNOT
|
|
||||||
MOVEM B,LOGNAM
|
|
||||||
MOVEM B,COMPF+1
|
|
||||||
MOVEI B,(SIXBIT /COM/)
|
|
||||||
HRRM B,COMPF
|
|
||||||
.OPEN PRTC,COMPF
|
|
||||||
JRST BEG ;NO COM:USER MAIL
|
|
||||||
JRST XPRINT
|
|
||||||
|
|
||||||
LBLK: 400000,,0
|
|
||||||
SIXBIT /LOGIN/
|
|
||||||
400000,,B
|
|
||||||
|
|
||||||
DISOWN: PUSHJ P,CKRUN
|
|
||||||
PUSHJ P,DISOW
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
DISOW: .DISOWN USRO, ;DSN
|
|
||||||
FATAL WONT DISOWN INFERIOR
|
|
||||||
SETOM USRF+2 ;TO AVOID LOSSAGE ON REOWNING
|
|
||||||
TLZ FF,USRUN
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
CONTIN: PUSHJ P,CKRUN
|
|
||||||
PUSHJ P,ATTY ;GIVE UP THE TTY
|
|
||||||
PROCED: PUSHJ P,CKRUN
|
|
||||||
.USET USRO,[.SUSTP,,BLANK] ;SEE HIM RUN !
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
KILL: PUSHJ P,CKRUN
|
|
||||||
PUSHJ P,USRCLO ;FLUSH JOB IF ANY
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
CKLOG: SKIPE LOGNAM ;CHECK IF LOGGED IN
|
|
||||||
POPJ P,
|
|
||||||
PASC [ASCIZ /LOGIN/]
|
|
||||||
JRST QBEG
|
|
||||||
|
|
||||||
CKRUN: TLNE FF,USRUN ;CHECK IF JOB CURRENTLY EXISTS
|
|
||||||
POPJ P,
|
|
||||||
PASCR [ASCIZ /NO PROGRAM RUN/] ;JOB
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
DEFINE COMTAB A,B
|
|
||||||
SIXBIT /A/
|
|
||||||
SIXBIT /B/+A
|
|
||||||
TERMIN
|
|
||||||
|
|
||||||
MYCOM: COMTAB HELP
|
|
||||||
COMTAB LOGOUT
|
|
||||||
COMTAB DELETE
|
|
||||||
COMTAB FLAP
|
|
||||||
COMTAB DISOWN
|
|
||||||
COMTAB CONTIN
|
|
||||||
COMTAB PROCED
|
|
||||||
COMTAB KILL
|
|
||||||
COMTAB LOAD
|
|
||||||
COMTAB LISTF
|
|
||||||
COMTAB PRINT
|
|
||||||
COMTAB ERR
|
|
||||||
COMTAB XFILE
|
|
||||||
COMTAB LOGIN
|
|
||||||
COMTAB DEATH
|
|
||||||
COMTAB SEND
|
|
||||||
COMTAB DDT
|
|
||||||
NUMCOM==.-MYCOM ;COUNT FOR TABLE USES
|
|
||||||
|
|
||||||
PHELP: POP P,A ;HMM FOR ?
|
|
||||||
HELP: PASC [ASCIZ /COMMANDS /]
|
|
||||||
MOVE A,[-NUMCOM,,MYCOM]
|
|
||||||
PASCI 40 ;SPACE
|
|
||||||
PSIX (A) ;TABLE ENTRY
|
|
||||||
AOBJN A,.+1
|
|
||||||
AOBJN A,.-3
|
|
||||||
PASCI ^M ;CR TO END IT
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
LOGOUT: .LOGOUT ;IF AT TOP LEVEL
|
|
||||||
.VALUE [ASCIZ /:LOGOUT /] ;OTHERWISE
|
|
||||||
PSIXI (SIXBIT /LOG/)
|
|
||||||
JRST QBEG ;IN CASE
|
|
||||||
|
|
||||||
FLAP: MOVE B,[.UDISMT A,]
|
|
||||||
ACOMM: PUSHJ P,GETCCA ;GETCOMM CHAR TO A
|
|
||||||
SUBI A,"0 ;MAKE ASCII TO UNIT #
|
|
||||||
JUMPLE A,.+3 ;CHECK FOR VALID
|
|
||||||
CAIG A,8
|
|
||||||
XCT B ;DO IT
|
|
||||||
SKIPA ;HMM!
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
CANNOT: PASC [ASCIZ /CAN'T /]
|
|
||||||
MOVEI A,0
|
|
||||||
IDPB A,COMPTR ;FUDGE FOR ASC PRT
|
|
||||||
PASCR COMMND
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
DDT: .TRANDL TBLOCK ;UNTRANSLATE TO ATSIGN HACTRN
|
|
||||||
PSIXI (SIXBIT /TRN/)
|
|
||||||
JRST DEATH ; DISOWN AND GET CLASS ONE INTERUPT TO RELOAD
|
|
||||||
|
|
||||||
|
|
||||||
TBLOCK: 0 ;UNAME
|
|
||||||
SIXBIT /*/ ;JNAME
|
|
||||||
|
|
||||||
UUOCT==0
|
|
||||||
UUOTAB: JRST ILUUO
|
|
||||||
IRPS X,,[PDEC PDECI POCT POCTI PSIX PSIXI PASC PASCI PASCR]
|
|
||||||
UUOCT==UUOCT+1
|
|
||||||
X=UUOCT_33
|
|
||||||
JRST U!X
|
|
||||||
TERMIN
|
|
||||||
|
|
||||||
UUOMAX==.-UUOTAB
|
|
||||||
|
|
||||||
UUOH: 0
|
|
||||||
PUSH P,A
|
|
||||||
PUSH P,B
|
|
||||||
PUSH P,C
|
|
||||||
MOVE A,LPOS
|
|
||||||
CAIGE A,35. ;CHECK LINE POS
|
|
||||||
JRST .+3
|
|
||||||
MOVEI A,^M
|
|
||||||
PUSHJ P,IOTA
|
|
||||||
LDB A,[270400,,40] ;GET UUO AC,
|
|
||||||
HRRZ B,40 ;AND ADR
|
|
||||||
LDB C,[330600,,40] ;OP CODE
|
|
||||||
CAIL C,UUOMAX
|
|
||||||
MOVEI C,0 ;GRT=>ILLEGAL
|
|
||||||
TLNN FF,OUTFLS
|
|
||||||
JRST @UUOTAB(C) ;GO TO PROPER ROUT
|
|
||||||
SKIPE C
|
|
||||||
JRST UUORET
|
|
||||||
ILUUO: MOVEI B,[ASCIZ /ILLGL UUO/] ;ILUUO
|
|
||||||
UPASCR: SKIPA C,[15] ;CR FOR END OF TYPE
|
|
||||||
UPASC: MOVEI C,0 ;NO CR
|
|
||||||
HRLI B,440700 ;MAKE ASCII POINTER
|
|
||||||
ILDB A,B ;GET CHAR
|
|
||||||
JUMPE A,.+3 ;FINISH?
|
|
||||||
PUSHJ P,IOTA ;TYPE "A"
|
|
||||||
JRST .-3 ;AND GET ANOTHER
|
|
||||||
SKIPE A,C ;GET SAVED CR?
|
|
||||||
PUSHJ P,IOTA
|
|
||||||
UUORET: POP P,C
|
|
||||||
POP P,B
|
|
||||||
POP P,A
|
|
||||||
JRST 2,@UUOH
|
|
||||||
|
|
||||||
UPASCI: MOVE A,B ;PRT ASCII IMMEDIATE
|
|
||||||
PUSHJ P,IOTA
|
|
||||||
JRST UUORET
|
|
||||||
|
|
||||||
UPSIX: SKIPA A,[440600,,0(B)] ;PRINT A SIXBIT WORD
|
|
||||||
UPSIXI: MOVE A,[220600,,40] ;PRT SIXBIT IMMEDIATE
|
|
||||||
UPSLA: ILDB C,A
|
|
||||||
ADDI C,40 ;MAKE TO ASCII(+40)
|
|
||||||
CAIE C,40 ;BUT SKIP IF SPACE
|
|
||||||
PUSHJ P,IOTC
|
|
||||||
TLNE A,770000 ;SEE IF FINISH
|
|
||||||
JRST UPSLA ;NOPE, MORE
|
|
||||||
JRST UUORET
|
|
||||||
|
|
||||||
UPDEC: SKIPA C,[10.] ;GET BASE FOR DECIMAL
|
|
||||||
UPOCT: MOVEI C,8. ;OCTAL BASE
|
|
||||||
MOVE B,(B) ;GET ACTUAL WORD TO PRT
|
|
||||||
JRST .+3 ;JOIN CODE
|
|
||||||
UPDECI: SKIPA C,[10.] ;DECIMAL
|
|
||||||
UPOCTI: MOVEI C,8.
|
|
||||||
MOVEM C,BASE
|
|
||||||
SKIPN A
|
|
||||||
HRREI A,-1 ;A=DIGIT COUNT
|
|
||||||
PUSHJ P,UPNUM ;PRINT NUMBR
|
|
||||||
JRST UUORET
|
|
||||||
|
|
||||||
UPNUM: IDIV B,BASE
|
|
||||||
HRLM C,(P) ;SAVE DIGIT
|
|
||||||
SOJE A,UPNUM1 ;DONE IF 0
|
|
||||||
SKIPG A ;+ => MORE
|
|
||||||
SKIPE B ;- => B=0 => DONE
|
|
||||||
PUSHJ P,UPNUM ;ELSE MORE
|
|
||||||
UPNUM1: HLRZ C,(P) ;RETREIVE DIGITS
|
|
||||||
ADDI C,"0 ;MAKE TO ASCII
|
|
||||||
IOTC: EXCH A,C
|
|
||||||
PUSHJ P,IOTA
|
|
||||||
EXCH A,C
|
|
||||||
POPJ P,
|
|
||||||
|
|
||||||
IOTA: CAIE A,^C
|
|
||||||
TLNE FF,OUTFLS
|
|
||||||
POPJ P,
|
|
||||||
CAIN A,^J ;IS LF
|
|
||||||
TLZN FF,CRLF ;IF AFTER CR
|
|
||||||
.IOT TYOC,A ;TYPE OUT A
|
|
||||||
AOS LPOS
|
|
||||||
CAIE A,^M ;TYPE CR?
|
|
||||||
POPJ P,
|
|
||||||
.IOT TYOC,[^J] ;PUT OUT LF FOR CR
|
|
||||||
TLO FF,CRLF ;AND FLG
|
|
||||||
SETZM LPOS ;YES, ZERO
|
|
||||||
POPJ P,
|
|
||||||
TSINT: 0 ;MASK WD HERE
|
|
||||||
0 ;RETURN LOC
|
|
||||||
PUSH P,A ;SAVE IN CASE
|
|
||||||
MOVEM FF,FFSAV
|
|
||||||
SKIPL A,TSINT ;IS IT INFERIOR PROBLEM ?
|
|
||||||
JRST MONINT ;NO, MY OWN !
|
|
||||||
.USET USRO,[.RPIRQ,,A] ;GET USER INT BITS
|
|
||||||
.USET USRO,[.SPIRQ,,BLANK] ;FLUSH ALL ???
|
|
||||||
TLO FF,USRUN ;IN CASE YOU DIDN'T KNOW !!
|
|
||||||
TLZ FF,OUTFLS
|
|
||||||
TRZE A,2 ;_Z TYPED AT INFERIOR
|
|
||||||
TLO FF,TTYGN ;IN CASE YOU DIDN'T KNOW !!
|
|
||||||
PUSHJ P,DTTY ;GET TTY BACK
|
|
||||||
TRZE A,20 ;DISPLAY PROTECTION VIOLATION
|
|
||||||
PSIXI (SIXBIT /DPV/)
|
|
||||||
TRZE A,40 ;ILLEGAL INSTRUCTION
|
|
||||||
PSIXI (SIXBIT /ILL/)
|
|
||||||
TRZE A,200 ;.VALUE FROM INFERIOR
|
|
||||||
JRST VALRET ;READ HIS STRING
|
|
||||||
TRZE A,400 ;I/O CHANNEL ERROR
|
|
||||||
PSIXI (SIXBIT /IOC/)
|
|
||||||
TRZE A,2000 ;.BREAK
|
|
||||||
PSIXI (SIXBIT /BRK/)
|
|
||||||
TRZE A,20000 ;MEMORY PROTECTION VIOLATION
|
|
||||||
PSIXI (SIXBIT /MPV/)
|
|
||||||
TRNN A,-1
|
|
||||||
JRST IFLUSH ;NOMORE INTS
|
|
||||||
POCTI 6,(A) ;PRT RH ONLY
|
|
||||||
PASC [ASCIZ / INTRPT FM INF/]
|
|
||||||
IFLUSH: POP P,A ;GET OFF STACK
|
|
||||||
.RESET TYIC,
|
|
||||||
.DISMISS [QBEG] ;ALWAYS STOP HIM FOR INTERUPTING
|
|
||||||
|
|
||||||
MONINT: PUSHJ P,DTTY
|
|
||||||
TRZE A,2 ;_Z TYPED AT ME
|
|
||||||
PASCI ^Z
|
|
||||||
TRZE A,1 ;CHARACTER TYPED
|
|
||||||
PUSHJ P,TYILK
|
|
||||||
TRNE A,-1
|
|
||||||
TLZ FF,OUTFLS ;IF ANY BUGS TO REPORT ABOUT
|
|
||||||
TRZE A,100 ;FIVE MINUTES
|
|
||||||
PUSHJ P,CKDIE ;PRINT DOWN MESS
|
|
||||||
TRZE A,1000 ;NO INF CORE
|
|
||||||
JRST NOCORA
|
|
||||||
TRZE A,400000 ;CLI INTERUPT
|
|
||||||
PUSHJ P,GULPMS
|
|
||||||
TRNN A,-1
|
|
||||||
JRST NOCORB
|
|
||||||
POCTI 6,(A) ;PRINT ERROR BITS
|
|
||||||
PASC [ASCIZ / INTRPT /]
|
|
||||||
MOVE A,TSINT+1
|
|
||||||
POCTI 6,(A)
|
|
||||||
JRST IFLUSH ;YES, FLUSH-SINCE IT WASNT STANDARD INTERUPT
|
|
||||||
|
|
||||||
NOCORB: MOVE A,FFSAV
|
|
||||||
TLNE A,TTYGN ;WAS IT GONE AT INTERUPT TIME ?
|
|
||||||
PUSHJ P,ATTY ;GIVE TTY BACK TO INF
|
|
||||||
POP P,A
|
|
||||||
.DISMISS TSINT+1 ;GO ON - I SERVICED IT OK
|
|
||||||
|
|
||||||
NOCORA: PSIXI (SIXBIT /COR/)
|
|
||||||
JRST IFLUSH
|
|
||||||
|
|
||||||
GULPMS: .OPEN CLAC,[SIXBIT / "CLA/]
|
|
||||||
POPJ P, ;MIGHT WANT TO BARF
|
|
||||||
PUSH P,A
|
|
||||||
PASCI ^M
|
|
||||||
PASC [ASCIZ /MESSAGE FROM /]
|
|
||||||
PUSHJ P,REDONE
|
|
||||||
PSIX ONEWRD
|
|
||||||
PASCI "
|
|
||||||
PUSHJ P,REDONE
|
|
||||||
PSIX ONEWRD
|
|
||||||
PASCI ^M
|
|
||||||
GULPM1: PUSHJ P,REDONE
|
|
||||||
PASC ONEWRD
|
|
||||||
JRST GULPM1
|
|
||||||
|
|
||||||
REDONE: HRROI A,ONEWRD
|
|
||||||
.IOT CLAC,A
|
|
||||||
SKIPL A
|
|
||||||
POPJ P,
|
|
||||||
SUB P,[1,,1]
|
|
||||||
CLOCRR: .CLOSE CLAC,
|
|
||||||
PASCI ^M
|
|
||||||
JRST POPAJ
|
|
||||||
|
|
||||||
SEND: PUSHJ P,GETSYL ;GET LOSER NAME
|
|
||||||
MOVEM B,CLIFN1
|
|
||||||
MOVEM B,CLUFN1
|
|
||||||
.OPEN CLIC,CLUFNB ;SEE IF LOGGED IN
|
|
||||||
JRST CLSNDB ;NO
|
|
||||||
.CLOSE CLIC,
|
|
||||||
.OPEN CLIC,CLIFNB
|
|
||||||
JSP A,ANALER
|
|
||||||
SEND1: ILDB A,COMPTR ;SEND STUFF ON CLI
|
|
||||||
.IOT CLIC,A
|
|
||||||
CAIE A,^M
|
|
||||||
JRST SEND1
|
|
||||||
MOVE A,LCMCHR
|
|
||||||
CAIN A,^C
|
|
||||||
JRST DONCLI
|
|
||||||
MOVE A,CLUFN1
|
|
||||||
CAMN A,LOGNAM ;TO SELF ?
|
|
||||||
JRST DONCLI ;BARF ! GROSS DANGER !
|
|
||||||
PUSHJ P,RCMD ;GET MORE UNTIL GET EOF
|
|
||||||
.IOT CLIC,[^M]
|
|
||||||
JRST SEND1
|
|
||||||
|
|
||||||
DONCLI: .CLOSE CLIC,
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
CLSNDB: PASCR [ASCIZ /NOT LOGGED IN/]
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
CLIFNB: 1,,(SIXBIT /CLI/)
|
|
||||||
CLIFN1: .
|
|
||||||
SIXBIT /HACTRN/
|
|
||||||
|
|
||||||
CLUFNB: (SIXBIT /USR/)
|
|
||||||
CLUFN1: .
|
|
||||||
SIXBIT /HACTRN/
|
|
||||||
ONEWRD: 0
|
|
||||||
BLANK: 0 ;AND ANOTHER TO STOP ASCIZ
|
|
||||||
|
|
||||||
TYILK: PUSH P,A
|
|
||||||
MOVEI A,TYIC
|
|
||||||
.ITYIC A,
|
|
||||||
JRST POPAJ
|
|
||||||
CAIN A,^G
|
|
||||||
JRST FLSTYO
|
|
||||||
CAIE A,^S
|
|
||||||
JRST POPAJ
|
|
||||||
TLO FF,OUTFLS ;INDICATE OUTPUT FLUSHAGE
|
|
||||||
.RESET TYOC,
|
|
||||||
JRST POPAJ
|
|
||||||
|
|
||||||
FLSTYO: .RESET TYOC,
|
|
||||||
.IOT TYOC,[7] ;ECHO THE CNTRL G
|
|
||||||
JRST IFLUSH ;PDL WILL GET RESET LATER
|
|
||||||
|
|
||||||
VALRET: .USET USRO,[.RSV40,,A]
|
|
||||||
TRNN A,-1
|
|
||||||
JRST VALRE2 ;ZERO ADDRESS
|
|
||||||
MOVEI B,6
|
|
||||||
HRLM B,USRF ;SET MODE TO IMAGE, BLOCK, INPUT
|
|
||||||
.OPEN SYSI,USRF
|
|
||||||
JSP A,ANALER
|
|
||||||
.ACCES SYSI,A ;?
|
|
||||||
MOVE B,[-COMLNG,,COMMND]
|
|
||||||
.IOT SYSI,B ;MOVE STRING OVER
|
|
||||||
TLO FF,VALCM ;SET TO SCAN
|
|
||||||
MOVE B,[440700,,COMMND] ;RESET COMMAND SCANNER
|
|
||||||
MOVEM B,COMPTR
|
|
||||||
.CLOSE SYSI,
|
|
||||||
VALRE1: POP P,A
|
|
||||||
.RESET TYIC,
|
|
||||||
.DISMISS [BEG] ;JRST BEG
|
|
||||||
|
|
||||||
VALRE2: PSIXI (SIXBIT /VAL/)
|
|
||||||
JRST IFLUSH
|
|
||||||
|
|
||||||
CKDIE: PUSH P,A
|
|
||||||
.DIETIM A, ;GET TIME TIL SYS DWN
|
|
||||||
JUMPL A,POPAJ ;NO DYING NOW
|
|
||||||
PUSH P,B
|
|
||||||
PUSH P,C
|
|
||||||
PUSH P,D
|
|
||||||
IDIVI A,30.*60.*60. ;HOURS IN A
|
|
||||||
IDIVI A+1,30.*60. ;MINS IN A+1
|
|
||||||
IDIVI A+2,30. ;SEC IN A+2
|
|
||||||
PDECI (A) ;PRT HRS
|
|
||||||
PASCI ":
|
|
||||||
PDECI 2,(A+1) ;PRT MINS
|
|
||||||
PASCI ":
|
|
||||||
PDECI 2,(A+2) ;PRT SECS
|
|
||||||
PASCR [ASCIZ / UNTIL SYS DWN/]
|
|
||||||
POPDJ: POP P,D
|
|
||||||
POPCJ: POP P,C
|
|
||||||
POPBJ: POP P,B
|
|
||||||
POPAJ: POP P,A
|
|
||||||
POPJP: POPJ P,
|
|
||||||
|
|
||||||
COMPF: SIXBIT / SYSSYSTEMMAIL / ;FOR MAIL PRINT, SET FOR USER WHEN LOGIN
|
|
||||||
SYSF: SIXBIT / &SYSTS /
|
|
||||||
USRF: SIXBIT / 'USR /
|
|
||||||
TYIF: SIXBIT / (TTYMONITRTTYIN /
|
|
||||||
PRTF: SIXBIT / DSK / ;EXTRA LONG FOR DELETE
|
|
||||||
|
|
||||||
CONSTANTS
|
|
||||||
VARIABLES
|
|
||||||
|
|
||||||
;OVERLAYED BY COMMANDS LATER ON AND PART OF I/O BUFFER (FOR LOADING PROGS)
|
|
||||||
|
|
||||||
COMMND: ;HERE STARTS COMMND,I/O BUFFER
|
|
||||||
|
|
||||||
STARTU: .CLOSE 3,
|
|
||||||
.SUSET [.RJNAME,,A] ;THIS GETS OVERLAYED
|
|
||||||
CAME A,[SIXBIT /HACTRN/]
|
|
||||||
.VALUE [ASCII /:DDT ISYS ATSIGN HACTRN SYS TS MONITîU./]
|
|
||||||
;FLUSH UNLESS TOP LEVEL
|
|
||||||
MOVE P,[-PDLLNG,,PDL-1]
|
|
||||||
.OPEN TYOC,[SIXBIT / !TTYMONITRTTYOUT/]
|
|
||||||
JRST LOGOUT ;FLUSH IMMEDIATE IF CANT TYPE
|
|
||||||
.OPEN TYIC,TYIF
|
|
||||||
FATAL CANT OPEN TTY INPUT
|
|
||||||
TLZ FF,-1 ;RESET ALL FLAGS
|
|
||||||
.STATUS TYIC,A
|
|
||||||
TRNE A,2 ;IS IT GE-BITER ?
|
|
||||||
PASCI ^L
|
|
||||||
PASCI ^M
|
|
||||||
PSIX [.FNAM1]
|
|
||||||
PASCI ".
|
|
||||||
PSIX [.FNAM2]
|
|
||||||
.SUSET [.RUINDEX,,A] ;GIVE USER INDEX
|
|
||||||
PASC [ASCIZ / U=/]
|
|
||||||
POCTI (A)
|
|
||||||
PASCI ^M ;CR
|
|
||||||
PUSHJ P,CKDIE ;CHECK IF SYS GOING DOWN
|
|
||||||
MOVEI A,621561 ;MASK WORDS FOR INTERRUPTS
|
|
||||||
; CHRTYP DPMPV ILLINS SYSDIE IOCHNER MPVINF MPV PDLOV + BAD42 _Z .VALUE .BREAK _N CLI
|
|
||||||
MOVSI A+1,1 ;BIT FOR INFERIOR
|
|
||||||
.SETM2 A, ;SET MASKWDS
|
|
||||||
|
|
||||||
.SUSET [.RUNAM,,B] ;GET USERS NAME
|
|
||||||
AOJE B,STAR1 ;JUMP IF NOT LOGGED YET
|
|
||||||
SOS B
|
|
||||||
MOVEM B,LOGNAM ;ALREADY LOGGED IN IF NOT -1
|
|
||||||
JRST BEG
|
|
||||||
|
|
||||||
STAR1: .OPEN PRTC,COMPF
|
|
||||||
JRST BEG ;NO SYS:SYSTEM MAIL
|
|
||||||
JRST XPRINT ;YES, THERE IS, PRINT IT
|
|
||||||
|
|
||||||
CONSTANTS
|
|
||||||
VARIABLES
|
|
||||||
|
|
||||||
INFORM \.-STARTU,STARTUP LENGTH
|
|
||||||
|
|
||||||
;MIGHT WANT TO PUT UBUF IN TRANSIENT SECOND BLOCK OF CORE IF WE NEED MORE SPACE.
|
|
||||||
|
|
||||||
UBUF=COMMND+COMLNG ;LEAVE COMMAND BUFF SEPARATE
|
|
||||||
IFL .-UBUF-BUFLNG,LOC UBUF+BUFLNG
|
|
||||||
|
|
||||||
PDL: BLOCK PDLLNG
|
|
||||||
|
|
||||||
INFORM \NUMCOM/2,NUMBER OF COMMANDS
|
|
||||||
|
|
||||||
INFORM \.,PROG LENGTH
|
|
||||||
|
|
||||||
END STARTU
|
|
||||||
.VALUE FROM INFERIOR
|
|
||||||
JRST VALRET ;READ HIS STRING
|
|
||||||
TRZE A,400 ;I/O CHANNEL ERROR
|
|
||||||
Reference in New Issue
Block a user