perm filename IMP.FAI[S,NET] blob
sn#727548 filedate 1983-09-17 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 TITLE IMP RFCS RFCR CLSS CLSR LGONCE REAPRV WRTPRV UPGPRV ACWPRV LUPPRV PRIVS HSTSTR PDL IMPDIE FLNOPS WHYDWN REASON UNWUNW UNWIDX
C00005 00003 IMP PROMPT ERROR CRLRET GIVHLP
C00007 00004 IMPOP BACKWH GTHOUR HRWIN NOWHEN
C00011 00005 DECOUT OCTOUT NUMOUT GETNUM GETNM1 GETOCT GETOC1
C00012 ENDMK
C⊗;
TITLE IMP ;⊗ RFCS RFCR CLSS CLSR LGONCE REAPRV WRTPRV UPGPRV ACWPRV LUPPRV PRIVS HSTSTR PDL IMPDIE FLNOPS WHYDWN REASON UNWUNW UNWIDX
;Original MIDAS program by Mark Crispin, 3/79.
;Converted to FAIL and IP/TCP (most functions removed) by Joe Weening, 9/83.
; General purpose IMP utility
RFCS←← 200000,,0
RFCR←← 100000,,0
CLSS←← 040000,,0
CLSR←← 020000,,0
LGONCE←←004000,,0
REAPRV←←040000,,0
WRTPRV←←020000,,0
UPGPRV←←004000,,0
ACWPRV←←000040,,0
LUPPRV←←000001,,0
PRIVS←←REAPRV!WRTPRV!UPGPRV!ACWPRV!LUPPRV
HSTSTR: BLOCK =20
PDL: BLOCK =50
IMPDIE: 0
FLNOPS: 0
WHYDWN: 23
REASON: 0
UNWUNW: 24
UNWIDX: 0
;⊗ IMP PROMPT ERROR CRLRET GIVHLP
SUBTTL Main program
IMP: CAI
RESET
MOVE 17,[IOWD =50,PDL]
MOVSI 377777
SETPR2
JRST 4,.-1
MOVSI (UPGPRV)
SETPRV ; we need this priv for almost everything
OPEN [0 ↔ 'IMP',, ↔ 0]
JRST 4,.-1
MOVEI [RADIX50 0,IMPDIE ↔ 0]
.SYML
JRST 4,.-1
ADDI 400000
MOVEM IMPDIE
MOVEI [RADIX50 0,FLNOPS ↔ 0] ; first entry in our tables
.SYML
JRST 4,.-1
ADDI 400000
MOVEM FLNOPS
PROMPT: INSKIP
CAI
OUTCHR ["!"]
INCHRW
CAIN 15
INCHRW
CAIN "?"
JRST [ OUTSTR [ASCIZ/ H/]
JRST GIVHLP]
ANDI 137
CAIN 12
JRST PROMPT
CAIN "H"
JRST GIVHLP
CAIN "E"
JRST [ OUTSTR [ASCIZ/xit/]
EXIT 1,
JRST IMP]
CAIN "I"
JRST IMPOP
CAIN "C"
JRST [ OUTSTR [ASCIZ/ycle the network/]
;; EIOTM
;; CONO 400,100000 ;this doesn't work on F2, where IMP=550
SKIPN @IMPDIE ;skip if NCP already down
MTAPE [13] ;take NCP down
MTAPE [12] ;put NCP up
JRST 2,@[CRLRET]]
ERROR: CLRBFI
OUTCHR ["?"]
CRLRET: OUTSTR [ASCIZ/
/]
JRST PROMPT
GIVHLP: OUTSTR [ASCIZ\elp:
Cycle, Exit, Help, IMP on/off
\]
JRST PROMPT
;⊗ IMPOP BACKWH GTHOUR HRWIN NOWHEN
SUBTTL IMP operations
IMPOP: OUTSTR [ASCIZ/MP o/]
INCHRW
ANDI 137
CAIN "N"
JRST [ SKIPN @IMPDIE
JRST ERROR
MTAPE [12] ;put IMP up
JRST CRLRET]
CAIE "F"
JRST ERROR
OUTCHR ["f"]
SKIPE @IMPDIE
JRST ERROR
OUTSTR [ASCIZ/, back up on /]
BACKWH: INCHRW
CAIN "?"
JRST [ OUTSTR [ASCIZ/
Day of week back up (or "D" for "Don't tell IMP when up or why down")
Back up on /]
CLRBFI
JRST BACKWH]
ANDI 137
CAIN "D"
JRST [ OUTSTR [ASCIZ\on't tell IMP when or why. Confirm w/CR.\]
INCHRW
CAIE 15
JRST ERROR
INCHSL ;read the LF
JFCL ;isn't one?? oh well.
JRST NOWHEN ] ;Just take network down
CAIN "M"
JRST [ OUTSTR [ASCIZ/onday/]
SETZ 2,
JRST GTHOUR]
CAIN "W"
JRST [ OUTSTR [ASCIZ/ednesday/]
MOVEI 2,2
JRST GTHOUR]
CAIN "F"
JRST [ OUTSTR [ASCIZ/riday/]
MOVEI 2,4
JRST GTHOUR]
CAIN "S"
JRST [ INCHRW
ANDI 137
CAIN "A"
JRST [ OUTSTR [ASCIZ/turday/]
MOVEI 2,5
JRST GTHOUR]
CAIE "U"
JRST ERROR
OUTSTR [ASCIZ/nday/]
MOVEI 2,6
JRST GTHOUR]
CAIE "T"
JRST ERROR
INCHRW
ANDI 137
CAIN "U"
JRST [ OUTSTR [ASCIZ/esday/]
MOVEI 2,1
JRST GTHOUR]
CAIE "H"
JRST ERROR
OUTSTR [ASCIZ/ursday/]
MOVEI 2,3
GTHOUR: OUTSTR [ASCIZ/ at /]
JSR GETNUM
CAIG =23
CAIE 1,":"
JRST ERROR
JUMPL ERROR
ADDI =8 ; PST to GMT
MOVE 1,400261 ; DAYLIT
MOVE 1,400000(1)
SKIPE 1
SOS ; daylight losing time
CAIG =23
JRST HRWIN
SUBI =24
AOS 2
CAIN 2,7
SETZ 2,
HRWIN: LSH 2,5
ADD 2,
JSR GETNUM
CAIG =59
CAIE 1,12
JRST ERROR
JUMPL ERROR
IDIVI 5
LSH 2,4
ADD 2,
HRRM 2,REASON
OUTSTR [ASCIZ/Reason:
5 → Scheduled PM
6 → Scheduled hardware work
7 → Scheduled software work
8 → Emergency restart
9 → Power outage
10 → Software breakpoint
11 → Hardware failure
12 → Not scheduled up
Why down?/]
JSR GETNUM
CAIL 5
CAILE 14
JRST ERROR
CAIE 1,12
JRST ERROR
HRLM REASON
MTAPE WHYDWN ;tell IMP why down and when up
NOWHEN: MTAPE [13] ;take IMP down
JRST PROMPT
;⊗ DECOUT OCTOUT NUMOUT GETNUM GETNM1 GETOCT GETOC1
SUBTTL Subroutines
; Decimal/octal print routine
DECOUT: SKIPA 2,[10.] ; decimal print
OCTOUT: MOVEI 2,8. ; octal print
NUMOUT: IDIVI (2)
PUSH 17,1
SKIPE
PUSHJ 17,NUMOUT
POP 17,
ADDI "0"
OUTCHR
POPJ 17,
GETNUM: 0
SETZ
GETNM1: INCHWL 1
CAIN 1,15
INCHWL 1
ANDI 1,177
CAIL 1,"0"
CAILE 1,"9"
JRST @GETNUM
IMULI 10.
ADDI -"0"(1)
JRST GETNM1
GETOCT: 0
SETZ
GETOC1: INCHWL 1
CAIN 1,15
INCHWL 1
ANDI 1,177
CAIL 1,"0"
CAILE 1,"7"
JRST @GETOCT
LSH 3
ADDI -"0"(1)
JRST GETOC1
END IMP