mirror of
https://github.com/PDP-10/its.git
synced 2026-03-03 10:22:59 +00:00
DEMST - demon status.
This commit is contained in:
@@ -6,3 +6,7 @@ log_progress "ENTERING BUILD SCRIPT: DM"
|
||||
# Demon starter.
|
||||
respond "*" ":midas sys; atsign demstr_sysen2; demstr\r"
|
||||
expect ":KILL"
|
||||
|
||||
# Demon status. Self purifying.
|
||||
respond "*" ":midas sysen2; ts demst_sysen2; demst\r"
|
||||
expect ":KILL"
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
- DCROCK, digital watch.
|
||||
- DDTDOC, interactive DDT documentation.
|
||||
- DECUUO, TOPS-10 and WAITS emulator.
|
||||
- DEMST, demon status.
|
||||
- DEMSTR, demon starter.
|
||||
- DFTP, Datacomputer file transfer.
|
||||
- DIGEST, digestify a mailing list.
|
||||
|
||||
415
src/sysen2/demst.19
Executable file
415
src/sysen2/demst.19
Executable file
@@ -0,0 +1,415 @@
|
||||
TITLE RDDMST TAA 11/16/77
|
||||
|
||||
O=0
|
||||
A=1
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5 ; MUNGED BY SOUT
|
||||
F=6
|
||||
G=7
|
||||
H=8
|
||||
P=17
|
||||
|
||||
TTYO==1
|
||||
USRI==2
|
||||
|
||||
; CONSTANT STRING OUTPUT
|
||||
DEFINE SOUT CHAN,TXT
|
||||
MOVE E,[440700,,[ASCII /TXT/]]
|
||||
MOVEI F,.LENGTH /TXT/
|
||||
.CALL [SETZ
|
||||
SIXBIT /SIOT/
|
||||
MOVSI %TJDIS
|
||||
MOVEI CHAN
|
||||
E
|
||||
SETZ F]
|
||||
.LOSE 1000
|
||||
TERMIN
|
||||
|
||||
DEFINE OHPOS NUM
|
||||
.IOT TTYO,[^P]
|
||||
.IOT TTYO,["H]
|
||||
.IOT TTYO,[NUM+8.]
|
||||
TERMIN
|
||||
|
||||
SYSVER: 0 ; SYSTEM VERSION
|
||||
JCLBUF: BLOCK 3
|
||||
EVTBL:
|
||||
SQUOZE 0,L
|
||||
L: 0
|
||||
SQUOZE 0,DMNFLG ; DEMONS ALLOWED?
|
||||
DMNFLG: 0
|
||||
SQUOZE 0,DMTTBL
|
||||
DMTTBL: 0
|
||||
SQUOZE 0,DMLNG
|
||||
DMLNG: 0
|
||||
SQUOZE 0,DMTLL
|
||||
DMTLL: 0 ; DMTLL,,DMTLL AFTER INIT
|
||||
SQUOZE 0,FLSINS
|
||||
FLSINS: 0
|
||||
SQUOZE 0,LSUUO
|
||||
LSUUO: 0
|
||||
SQUOZE 0,USTP
|
||||
USTP: 0
|
||||
SQUOZE 0,APRC
|
||||
APRC: 0
|
||||
SQUOZE 0,UPC
|
||||
UPC: 0
|
||||
SQUOZE 0,SUUOH
|
||||
SUUOH: 0
|
||||
EVPTR: EVTBL-.,,EVTBL
|
||||
DEMTAB: 0 ; AOBJN POINTER TO DMTTBL
|
||||
TIME: 0 ; CURRENT TIME, DISK FORMAT
|
||||
DAYPTR: 220500,,TIME ; POINTER TO DATE FIELD
|
||||
MONPTR: 270400,,TIME ; POINTER TO MONTH FIELD
|
||||
PDLLEN==20
|
||||
PDL: BLOCK PDLLEN
|
||||
|
||||
|
||||
START: MOVE P,[-PDLLEN,,PDL]
|
||||
.RSYSI A,
|
||||
CAME A,SYSVER
|
||||
JRST INIT
|
||||
.CALL [SETZ
|
||||
SIXBIT /OPEN/
|
||||
[.UAO+%TJDIS,,TTYO]
|
||||
[SIXBIT /TTY/]
|
||||
[SIXBIT /TTY/]
|
||||
SETZ [SIXBIT /TTY/]]
|
||||
.LOSE 1000
|
||||
SOUT TTYO,[It is now ]
|
||||
.CALL [SETZ
|
||||
SIXBIT /RQDATE/
|
||||
SETZM TIME]
|
||||
.LOSE 1000
|
||||
HRRZ B,TIME
|
||||
IDIVI B,120. ; MINUTES SINCE MIDNIGHT
|
||||
IDIVI B,60. ; HOURS IN B, MINUTES IN C.
|
||||
CAIGE B,10.
|
||||
.IOT TTYO,["0]
|
||||
MOVE A,B
|
||||
PUSHJ P,DECPRT
|
||||
.IOT TTYO,[":]
|
||||
CAIGE C,10.
|
||||
.IOT TTYO,["0]
|
||||
MOVE A,C
|
||||
PUSHJ P,DECPRT
|
||||
SOUT TTYO,[, ]
|
||||
LDB A,MONPTR
|
||||
PUSHJ P,DECPRT
|
||||
.IOT TTYO,["/]
|
||||
LDB A,DAYPTR
|
||||
PUSHJ P,DECPRT
|
||||
.IOT TTYO,[".]
|
||||
SKIPG @DMNFLG ; SKIP IF DEMONS ARE LEGAL
|
||||
JRST [SOUT TTYO,[ Loading of demons is disabled.]
|
||||
JRST .+1]
|
||||
.SUSET [.ROPTIO,,A]
|
||||
TLNN A,OPTCMD ; JCL?
|
||||
JRST RDALL
|
||||
.BREAK 12,[..RJCL,,JCLBUF] ; YES
|
||||
MOVE B,[440700,,JCLBUF]
|
||||
MOVE C,[440600,,A]
|
||||
MOVEI A,0
|
||||
JCLLOP: TLNN C,770000
|
||||
JRST JCLDON
|
||||
ILDB D,B
|
||||
CAIE D,^M
|
||||
CAIN D,^C
|
||||
JRST JCLDON
|
||||
JUMPE D,JCLDON
|
||||
SUBI D,40
|
||||
CAIL D,100
|
||||
SUBI D,40
|
||||
IDPB D,C
|
||||
JRST JCLLOP
|
||||
JCLDON: MOVE B,DEMTAB
|
||||
SCLOOP: CAMN A,(B)
|
||||
JRST DOPRT
|
||||
ADD B,DMTLL
|
||||
JUMPL B,SCLOOP
|
||||
SOUT TTYO,[
|
||||
No such demon?]
|
||||
.BREAK 16,160000
|
||||
|
||||
DOPRT: PUSHJ P,DMPRT ; WANTS DEMON NAME IN A, ENTRY IN B
|
||||
.BREAK 16,160000
|
||||
|
||||
RDALL: SOUT TTYO,[
|
||||
Name Index Next signal Interval]
|
||||
MOVE B,DEMTAB
|
||||
RDALOP: SKIPE A,(B)
|
||||
PUSHJ P,DMPTAB
|
||||
ADD B,DMTLL
|
||||
JUMPL B,RDALOP
|
||||
.BREAK 16,160000
|
||||
|
||||
; COME HERE TO PRINT STATUS FOR TABLE. NAME IS IN A, TABLE IN B.
|
||||
DMPTAB: SOUT TTYO,[
|
||||
]
|
||||
PUSHJ P,SIXPRT ; NAME
|
||||
OHPOS 8. ; NEXT COLUMN
|
||||
SKIPE C,1(B)
|
||||
JRST DMPST1
|
||||
SOUT TTYO,[ Down]
|
||||
JRST DMPNXT
|
||||
DMPST1: JUMPL C,[SOUT TTYO,[ Load]
|
||||
JRST DMPNXT]
|
||||
SOUT TTYO,[ ]
|
||||
IDIV C,L
|
||||
CAIGE C,10
|
||||
.IOT TTYO,[" ]
|
||||
MOVE A,C
|
||||
PUSHJ P,OCTPRT
|
||||
MOVE C,1(B)
|
||||
MOVE A,@USTP ; JOB STOPPED?
|
||||
TLNN A,100000
|
||||
JRST RUNNIN
|
||||
SKIPL @APRC ; DISOWNED?
|
||||
JRST MANSTP
|
||||
SOUT TTYO,[==] ; DEAD, NEEDS CLEANING UP
|
||||
POPJ P,
|
||||
MANSTP: .IOT TTYO,["=] ; MANUALLY STOPPED
|
||||
POPJ P,
|
||||
RUNNIN: SKIPN @FLSINS
|
||||
POPJ P,
|
||||
MOVE A,@LSUUO
|
||||
TLZ A,777
|
||||
CAME A,[.SLEEP] ; SLEEPING?
|
||||
JRST [CAME A,[.HANG]
|
||||
POPJ P, ; NO
|
||||
MOVEI E,"+
|
||||
JRST NRMSLP]
|
||||
MOVEI E,"*
|
||||
MOVE A,@UPC
|
||||
TLNE A,%PCUSR ; IN EXEC MODE?
|
||||
JRST NRMSLP ; THINGS SURE HAPPEN FAST HERE
|
||||
HRRZ A,@SUUOH
|
||||
SUBI A,1
|
||||
IDIV C,L ; USER INDEX
|
||||
TRO C,400000
|
||||
.CALL [SETZ
|
||||
SIXBIT /OPEN/
|
||||
[<10\.UII>,,USRI]
|
||||
[SIXBIT /USR/]
|
||||
C
|
||||
SETZI 0]
|
||||
POPJ P, ; OH, WELL
|
||||
.ACCESS USRI,A ; LOOK AT CURRENT INSTRUCTION
|
||||
.IOT USRI,A
|
||||
.CLOSE USRI,
|
||||
CAME A,[XCT 35(2)] ; IF .SLEEP IS THIS, THEN IT'S A DEAD MUDDLE
|
||||
JRST NRMSLP
|
||||
SOUT TTYO,[**]
|
||||
POPJ P,
|
||||
NRMSLP: .IOT TTYO,E
|
||||
POPJ P,
|
||||
DMPNXT: OHPOS 18.
|
||||
HLRZ A,2(B)
|
||||
JUMPE A,[SOUT TTYO,[Never]
|
||||
POPJ P,]
|
||||
MOVE A,3(B)
|
||||
JUMPE A,[SOUT TTYO,[Never]
|
||||
POPJ P,]
|
||||
PUSHJ P,NXTPRT ; TIME OF NEXT SIGNAL
|
||||
OHPOS 36.
|
||||
HLRZ A,2(B)
|
||||
ASH A,1
|
||||
CAIL A,10000.
|
||||
JRST DOPR
|
||||
.IOT A,[" ]
|
||||
CAIL A,1000.
|
||||
JRST DOPR
|
||||
.IOT A,[" ]
|
||||
CAIL A,100.
|
||||
JRST DOPR
|
||||
.IOT A,[" ]
|
||||
CAIL A,10.
|
||||
JRST DOPR
|
||||
.IOT A,[" ]
|
||||
DOPR: PUSHJ P,DECPRT
|
||||
POPJ P,
|
||||
|
||||
; COME HERE TO PRINT A DEMON'S STATUS, NOT FOR TABLE.
|
||||
; NAME OF DEMON IS IN A, ENTRY IN TABLE IS IN B.
|
||||
|
||||
DMPRT: SOUT TTYO,[
|
||||
Demon ]
|
||||
PUSHJ P,SIXPRT ; SIXBIT NAME OF DEMON
|
||||
SKIPE C,1(B) ; IDX, 0, OR -1
|
||||
JRST ST1
|
||||
HLRZ A,2(B)
|
||||
JUMPE A,[SOUT TTYO,[ is never automatically signalled.
|
||||
]
|
||||
JRST DPNDRQ]
|
||||
MOVE A,3(B)
|
||||
JUMPE A,[SOUT TTYO,[ will never be automatically signalled.
|
||||
]
|
||||
JRST DPNDRQ]
|
||||
SOUT TTYO,[ will be signalled at ]
|
||||
PUSHJ P,NXTPRT
|
||||
.IOT TTYO,[".]
|
||||
JRST STRAND
|
||||
ST1: JUMPL C,[SOUT TTYO,[ is coming up.]
|
||||
JRST STRAND]
|
||||
SOUT TTYO,[ is up; job index is ]
|
||||
IDIV C,L
|
||||
MOVE A,C
|
||||
PUSHJ P,OCTPRT
|
||||
.IOT TTYO,[".]
|
||||
POPJ P,
|
||||
STRAND: HLRZ A,2(B)
|
||||
JUMPE A,DONTSG
|
||||
ASH A,1
|
||||
SOUT TTYO,[
|
||||
After next signal, will be signalled every ]
|
||||
PUSHJ P,DECPRT
|
||||
SOUT TTYO,[ minutes; ]
|
||||
JRST DPNDRQ
|
||||
DONTSG: SOUT TTYO,[
|
||||
Demon is not periodic; ]
|
||||
DPNDRQ: HRRZ A,2(B)
|
||||
PUSHJ P,DECPRT
|
||||
SOUT TTYO,[ pending requests.]
|
||||
POPJ P,
|
||||
|
||||
; OUTPUT OCTAL # ON TTYO. # IS IN A.
|
||||
OCTPRT: PUSH P,B
|
||||
PUSH P,C
|
||||
MOVE C,OCTLEN
|
||||
JRST DECOTL
|
||||
|
||||
; OUTPUT DECIMAL # ON TTYO. # IS IN A.
|
||||
DECPRT: PUSH P,B
|
||||
PUSH P,C
|
||||
MOVE C,DECLEN
|
||||
DECOTL: IDIV A,(C)
|
||||
JUMPN A,DECOT1
|
||||
MOVE A,B
|
||||
AOBJN C,DECOTL
|
||||
.IOT TTYO,["0]
|
||||
JRST DECDON
|
||||
DECOT0: IDIV A,(C)
|
||||
DECOT1: ADDI A,"0
|
||||
.IOT TTYO,A
|
||||
MOVE A,B
|
||||
AOBJN C,DECOT0
|
||||
DECDON: POP P,C
|
||||
POP P,B
|
||||
POPJ P,
|
||||
DECTAB: 1000000. ? 100000. ? 10000. ? 1000. ? 100. ? 10. ? 1.
|
||||
DECLEN: DECTAB-.,,DECTAB
|
||||
OCTTAB: 1000000 ? 100000? 10000 ? 1000? 100 ? 10 ? 1
|
||||
OCTLEN: OCTTAB-.,,OCTTAB
|
||||
|
||||
; OUTPUT SIXBIT. WORD IS IN A.
|
||||
SIXPRT: PUSH P,B
|
||||
PUSH P,C
|
||||
MOVE B,[440600,,A]
|
||||
SIXLOP: ILDB C,B
|
||||
JUMPE C,SIXDON
|
||||
ADDI C,40
|
||||
.IOT TTYO,C
|
||||
TLNE B,770000
|
||||
JRST SIXLOP
|
||||
SIXDON: POP P,C
|
||||
POP P,B
|
||||
POPJ P,
|
||||
|
||||
; PRINT TIME OF NEXT SIGNAL. TIME TO NEXT SIGNAL IS IN A.
|
||||
NXTPRT: PUSH P,C
|
||||
PUSH P,D
|
||||
PUSH P,E
|
||||
PUSH P,F
|
||||
PUSH P,G
|
||||
HRRZ D,TIME
|
||||
IDIVI D,120. ; MINUTES SINCE MIDNIGHT
|
||||
ASH A,1
|
||||
ADD D,A ; MINUTES BETWEEN MIDNIGHT AND SIGNAL
|
||||
IDIVI D,60.*24. ; DAYS IN D, MINUTES IN E
|
||||
IDIVI E,60. ; HOURS IN E, MINUTES IN F
|
||||
MOVE A,E
|
||||
CAIGE A,10.
|
||||
.IOT TTYO,["0]
|
||||
PUSHJ P,DECPRT
|
||||
.IOT TTYO,[":]
|
||||
MOVE A,F
|
||||
CAIGE A,10.
|
||||
.IOT TTYO,["0]
|
||||
PUSHJ P,DECPRT
|
||||
JUMPE D,NXTOUT
|
||||
SOUT TTYO,[, ]
|
||||
LDB E,MONPTR ; GET MONTH
|
||||
LDB F,DAYPTR ; GET DAY
|
||||
ADD F,D
|
||||
IDIV F,MONLEN(E) ; TURN INTO MONTHS PLUS DAYS
|
||||
JUMPE G,[MOVE G,MONLEN(E)
|
||||
JRST NXTPR1]
|
||||
ADD E,F
|
||||
NXTPR1: MOVEI A,(E)
|
||||
PUSHJ P,DECPRT
|
||||
.IOT TTYO,["/]
|
||||
MOVEI A,(G)
|
||||
PUSHJ P,DECPRT
|
||||
NXTOUT: POP P,G
|
||||
POP P,F
|
||||
POP P,E
|
||||
POP P,D
|
||||
POP P,C
|
||||
POPJ P,
|
||||
|
||||
; INITIALIZE: EVAL SYMBOLS, MAP IN SYSTEM, DO PDUMP.
|
||||
; SYSTEM VERSION IS IN A.
|
||||
INIT: MOVEM A,SYSVER
|
||||
MOVE A,EVPTR
|
||||
EVLOP: MOVE B,(A)
|
||||
.EVAL B,
|
||||
.VALUE
|
||||
MOVEM B,1(A)
|
||||
ADD A,[2,,2]
|
||||
JUMPL A,EVLOP
|
||||
MOVE A,DMTLL
|
||||
HRLI A,(A)
|
||||
MOVEM A,DMTLL ; DMTLL,,DMTLL FOR SEARCH LOOP
|
||||
MOVN A,DMLNG
|
||||
HRLI A,(A)
|
||||
HRR A,DMTTBL
|
||||
MOVEM A,DEMTAB ; AOBJN POINTER TO DEMON TABLE
|
||||
MOVE A,FLSINS ; TO DECIDE IF CROCK IS SLEEPING
|
||||
HRLI A,C
|
||||
MOVEM A,FLSINS
|
||||
MOVE A,LSUUO
|
||||
HRLI A,C
|
||||
MOVEM A,LSUUO
|
||||
MOVE A,APRC
|
||||
HRLI A,C
|
||||
MOVEM A,APRC
|
||||
MOVE A,USTP
|
||||
HRLI A,C
|
||||
MOVEM A,USTP
|
||||
MOVE A,UPC
|
||||
HRLI A,C
|
||||
MOVEM A,UPC
|
||||
MOVE A,SUUOH
|
||||
HRLI A,C
|
||||
MOVEM A,SUUOH
|
||||
MOVE B,[-377,,1]
|
||||
MOVEI A,1
|
||||
.CALL [SETZ
|
||||
SIXBIT /CORBLK/
|
||||
MOVEI %CBRED
|
||||
MOVEI %JSELF
|
||||
B
|
||||
MOVEI %JSABS
|
||||
SETZ A]
|
||||
.LOSE 1000
|
||||
.VALUE [ASCIZ /
|
||||
:PDUMP SYS2;TS DEMST
|
||||
:CONTIN
|
||||
/]
|
||||
JRST START
|
||||
|
||||
MONLEN: 0 ? 31. ? 28. ? 31. ? 30. ? 31. ? 30. ? 31. ? 31. ? 30. ? 31. ? 30. ? 31.
|
||||
|
||||
END START
|
||||
Reference in New Issue
Block a user