mirror of
https://github.com/PDP-10/its.git
synced 2026-02-28 09:27:41 +00:00
SURGIV - Demon to send SURVEY data.
Applications like HOSTAT can connect to DM to retrieve host status data. This is the demon that serves the data.
This commit is contained in:
@@ -27,3 +27,9 @@ expect ":KILL"
|
||||
# Arpanet survey demon.
|
||||
respond "*" ":midas sys; atsign survey_survey; survey\r"
|
||||
expect ":KILL"
|
||||
|
||||
# Survey giver demon.
|
||||
respond "*" ":midas survey; atsign surgiv_surgiv\r"
|
||||
expect ":KILL"
|
||||
respond "*" ":link sys; atsign surgiv, survey;\r"
|
||||
type ":vk\r"
|
||||
|
||||
@@ -1730,6 +1730,7 @@ shrdlu/ts.twdemo 197110312144.38
|
||||
sra/usefmt.9 198905011833.08
|
||||
stan_k/3406.40 197411302122.54
|
||||
_/@.stink 197306120431.21
|
||||
survey/surgiv.mmb012 197606212141.59
|
||||
survey/survey.msg207 197801272221.28
|
||||
sys1/ts.speedy 197408060500.00
|
||||
sys2/ts.ralp 198001301933.20
|
||||
|
||||
@@ -320,6 +320,7 @@
|
||||
- STYLOG, convert PTY output file into ASCII file.
|
||||
- SUPARD, draw ARDS graphics to SUPDUP.
|
||||
- SUPDUP, Supdup client.
|
||||
- SURGIV, survey giver demon.
|
||||
- SURVEY, survey Arpanet hosts.
|
||||
- SWAR, Imlac Spacewar.
|
||||
- SYSCHK, check up on system job.
|
||||
|
||||
376
src/survey/surgiv.mmb012
Normal file
376
src/survey/surgiv.mmb012
Normal file
@@ -0,0 +1,376 @@
|
||||
TITLE SURVEY GIVER DAEMON
|
||||
; VERSION 8 MB 3/22/74 FILTER OUT "HOST" > 377 AT MLOOP+5
|
||||
; VERSION 9 MB 6/5/74 FLUSH SOCKET NOT=1M FOR NEW AND OLD FORMAT
|
||||
; VERSION 10 MB 5/5/76 CLOSE CONNECTION RATHER THAN ACCEPT IF NO DATA
|
||||
|
||||
.MLLIT==1 ;MULTI-LINE LITERALS
|
||||
|
||||
A=1
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5
|
||||
F=6
|
||||
G=7
|
||||
H=10
|
||||
I=11
|
||||
J=12
|
||||
K=13
|
||||
L=14
|
||||
M=15
|
||||
;N=16
|
||||
P=17
|
||||
|
||||
|
||||
|
||||
NETI==1
|
||||
NETO==2
|
||||
DSKI==3
|
||||
|
||||
INBIT==1_NETI
|
||||
OUTBIT==1_NETO
|
||||
|
||||
CLKBIT=10000
|
||||
IOCBIT=400
|
||||
|
||||
CLOCK=16
|
||||
|
||||
RFCSNT==4
|
||||
OPEN==5
|
||||
; NETWAIT MACRO. WAITS UNTIL NETWORK CHANNEL MAKES DEFINED TRANSITION.
|
||||
|
||||
; NOSKIP -> TIME-OUT
|
||||
; 1 SKIP -> ERROR, FUNNY STATE ENCOUNTERED
|
||||
; 2 SKIP -> WIN, SPECIFIED TRANSITION WINS
|
||||
|
||||
DEFINE NETWAIT CHAN,OLD,NEWSTATE,TLIMIT\OK,TEXIT,EEXIT,EXIT
|
||||
OK==IRP N,,[NEWSTATE]
|
||||
1_<N>+!TERMIN!0
|
||||
PUSH P,A
|
||||
PUSH P,B
|
||||
MOVEI B,30.*TLIMIT
|
||||
.CALL [SETZ ? 'NETBLK ? 1000,,CHAN ? 1000,,OLD ? B ? SETZM A]
|
||||
JRST EEXIT
|
||||
JUMPE B,TEXIT ;TIMED OUT
|
||||
MOVEI B,1
|
||||
LSH B,(A)
|
||||
TRNN B,OK
|
||||
JRST EEXIT ;NOT OK STATE
|
||||
POP P,B
|
||||
POP P,A
|
||||
JRST EXIT+2
|
||||
EEXIT:: POP P,B ;ERROR OR BAD STATE
|
||||
POP P,A
|
||||
JRST EXIT+1
|
||||
TEXIT:: POP P,B ;TIMED OUT
|
||||
POP P,A
|
||||
EXIT:: IF2 EXPUNGE OK,TEXIT,EEXIT,EXIT
|
||||
TERMIN
|
||||
|
||||
ICPBLK: 40067,,(SIXBIT/NET/)
|
||||
15.
|
||||
0
|
||||
0
|
||||
|
||||
OCHCNT: 0
|
||||
ASCII / / ;5 SPACES TO FILL OBUFFR
|
||||
OBUFFR: BLOCK 400.
|
||||
OBUFFE: BLOCK 1
|
||||
|
||||
PDL: BLOCK 50
|
||||
PATCH: BLOCK 20
|
||||
|
||||
BUF: BLOCK 10.
|
||||
|
||||
DBLK: 6,,(SIXBIT/DSK/)
|
||||
SIXBIT/CSDATA/
|
||||
SIXBIT/NOW/
|
||||
|
||||
ZZZ==.
|
||||
LOC 40
|
||||
0
|
||||
0
|
||||
JSR TSINT
|
||||
LOC ZZZ
|
||||
|
||||
FOO: SIXBIT /HST000/ ;FOR TERMINAL "HSTXXX"
|
||||
|
||||
START: MOVE P,[-50,,PDL]
|
||||
MOVEI A,IOCBIT+CLKBIT
|
||||
SETZM B
|
||||
.SETM2 A, ;ENABLE IOC ERR AND 30TH SEC CLK
|
||||
|
||||
;ICP - SERVER ON SOCKET 15.
|
||||
SETZM CLOCK
|
||||
.OPEN NETO,ICPBLK
|
||||
JRST LOGLOS
|
||||
NETWAIT NETO,1,2,120.
|
||||
JRST DONE
|
||||
JRST DONE
|
||||
MOVE F,[NETO,,A]
|
||||
.RCHST F, ;D/FOR HOST C/FORSOC E/STATE
|
||||
ANDI D,377 ; 8 BITS FOR HOST
|
||||
; CHECK HERE FOR FILE GOODNESS, BEFORE ACCEPTING CONNECTION
|
||||
.SUSET [.SSNAM,,[SIXBIT/NETWRK/]]
|
||||
.OPEN DSKI,DBLK
|
||||
JRST DFAIL
|
||||
MOVE A,[-5,,BUF] ;GET HEADER
|
||||
.IOT DSKI,A
|
||||
HRRZ A,BUF
|
||||
SOJL A,DFAIL ;FILE FAILS TEST
|
||||
|
||||
.NETAC NETO, ;WON ACCEPT CONNECTION
|
||||
JRST LOGLOS
|
||||
|
||||
MOVE A,D
|
||||
DPB A,[000300,,FOO]
|
||||
LSH A,-3
|
||||
DPB A,[060300,,FOO]
|
||||
LSH A,-3
|
||||
DPB A,[140300,,FOO]
|
||||
|
||||
.SUSET [.RUNAM,,A] ;UNAME IS -1 IF DEMON
|
||||
HLLOS A
|
||||
AOJN A,START2
|
||||
.DEMON
|
||||
JFCL
|
||||
|
||||
MOVE A,[SIXBIT /SURGIV/]
|
||||
.CALL [SETZ ? 'LOGIN_6 ? A ? SETZ FOO]
|
||||
AOJA A,[ MOVEI 30.
|
||||
.SLEEP
|
||||
JRST .-1]
|
||||
|
||||
START2: ;FALL THRU
|
||||
;CREATE AN OPNBLK IN A B C D
|
||||
SETZM CLOCK
|
||||
MOVE A,[50,,(SIXBIT /NET/)]
|
||||
MOVEI B,0
|
||||
ADDI C,3 ;U+3
|
||||
.OPEN NETI,A
|
||||
JRST DONE
|
||||
|
||||
MOVE F,[NETI,,A]
|
||||
.RCHST F, ;LOC SOC "S" IN B
|
||||
|
||||
MOVE F,[-1,,B]
|
||||
SETZM CLOCK
|
||||
.IOT NETO,F ;SEND 32 BITS
|
||||
|
||||
ADDI B,1 ;S+1, NOW
|
||||
SUBI C,1 ;"U+2"
|
||||
MOVE A,[3,,(SIXBIT/NET/)] ;S+1
|
||||
SETZM CLOCK
|
||||
.OPEN NETO,A
|
||||
JRST DONE
|
||||
SETZB E,CLOCK
|
||||
; NETWAIT NETO,4,5,3600. ;MOVED TO ALLOW OVERLAP WITH MAKING TBL
|
||||
; JFCL
|
||||
; JRST DONE
|
||||
;NOW ENABLE CHANNEL INTERRUPTS ALSO
|
||||
.SUSET [.SMSK2,,[INBIT+OUTBIT]]
|
||||
STX: MOVE G,[OBUFFR-1,,OBUFFR]
|
||||
BLT G,OBUFFE
|
||||
MOVE G,[440700,,OBUFFR]
|
||||
|
||||
;MAIN LOOP FOR SENDING DATA
|
||||
|
||||
HRRZ A,BUF ;SET UP WHEN FILE OPENED ABOVE
|
||||
SOSGE A ;FOR BYTE INDEX 1 MEANS FIRST IN TABLE
|
||||
MOVEI A,96. ;WRAPPED AROUND? 0?
|
||||
IDIVI A,12.
|
||||
ADD A,BLIST(B)
|
||||
MOVE C,[440600,,BUF+4]
|
||||
MOVEI D,4
|
||||
DTL: ILDB E,C ; OUTPUT DATE AS MM,DD,19YY
|
||||
ADDI E,40
|
||||
IDPB E,G
|
||||
TRNN D,1
|
||||
JRST DTLX
|
||||
MOVEI E,",
|
||||
IDPB E,G
|
||||
DTLX: CAMN D,[-1]
|
||||
JRST DTL2
|
||||
SOJN D,DTL
|
||||
MOVEI E,"1
|
||||
IDPB E,G
|
||||
MOVEI E,"9
|
||||
IDPB E,G
|
||||
JRST DTL
|
||||
|
||||
DTL2: MOVEI D,4
|
||||
MOVE C,[440600,,BUF+3]
|
||||
DTL3: ILDB E,C ; OUTPUT TIME AS HH,MM
|
||||
ADDI E,40
|
||||
IDPB E,G
|
||||
CAIE D,3
|
||||
JRST DTL4
|
||||
MOVEI E,",
|
||||
IDPB E,G
|
||||
DTL4: SOJG D,DTL3
|
||||
MOVEI B,16.
|
||||
MOVEM B,OCHCNT
|
||||
PUSHJ P,CRLF
|
||||
HRRZ H,BUF ; SAVE SURVEY COUNT
|
||||
MLOOP: MOVE B,[-10.,,BUF]
|
||||
.IOT DSKI,B
|
||||
HRRZ C,BUF
|
||||
CAIE C,-1
|
||||
CAIN C,10000
|
||||
JRST OUTOVR ;-1 OR 10000 IS END OF FILE FLAG
|
||||
CAIL C,400
|
||||
JRST MLOOP ;IGNORE HOST # NOT LES 400
|
||||
HLRZ D,BUF ;GET NEW FMT SOCKET#
|
||||
CAIE D,1 ;OK IF SOCKET #1
|
||||
JUMPN D,MLOOP ;IF NOT 0, THEN NEW FILE, IGNORE SOCKET NOT = 1
|
||||
MOVEI D,3
|
||||
PUSHJ P,NUMOUT
|
||||
MOVEI C,",
|
||||
IDPB C,G
|
||||
AOS OCHCNT
|
||||
LDB C,A
|
||||
MOVEI D,-5(C)
|
||||
ADDI C,"0
|
||||
IDPB C,G
|
||||
AOS OCHCNT
|
||||
MOVEI C,",
|
||||
IDPB C,G
|
||||
AOS OCHCNT
|
||||
MOVEI C,200.
|
||||
JUMPN D,MLX2
|
||||
MOVE C,BUF+1
|
||||
IDIVI C,3
|
||||
SETZM D
|
||||
MOVE E,[440300,,BUF+2]
|
||||
PUSH P,H
|
||||
MLX1: ILDB F,E
|
||||
CAIN F,5
|
||||
AOS D
|
||||
SOJG H,MLX1
|
||||
POP P,H
|
||||
IDIV C,D
|
||||
MLX2: MOVEI D,3
|
||||
PUSHJ P,NUMOUT
|
||||
PUSHJ P,CRLF
|
||||
JRST MLOOP
|
||||
|
||||
OUTOVR: MOVEI A,"-
|
||||
IDPB A,G
|
||||
AOS OCHCNT
|
||||
MOVEI A,"1
|
||||
IDPB A,G
|
||||
AOS OCHCNT
|
||||
PUSHJ P,CRLF
|
||||
JRST DONEX
|
||||
|
||||
; OUTPUT ROUTINE
|
||||
|
||||
STOUT: ILDB D,C
|
||||
SKIPN D
|
||||
POPJ P,
|
||||
IDPB D,G
|
||||
AOS OCHCNT
|
||||
JRST STOUT
|
||||
|
||||
CRLF: MOVEI D,15
|
||||
IDPB D,G
|
||||
AOS OCHCNT
|
||||
MOVEI D,12
|
||||
IDPB D,G
|
||||
AOS OCHCNT
|
||||
POPJ P,
|
||||
|
||||
NUMOUT: PUSH P,A
|
||||
PUSH P,B
|
||||
PUSH P,[-1]
|
||||
MOVE A,C
|
||||
NMLP: IDIVI A,10.
|
||||
ADDI B,"0
|
||||
PUSH P,B
|
||||
SOJG D,NMLP
|
||||
NMLP2: POP P,B
|
||||
JUMPL B,NMLPX
|
||||
IDPB B,G
|
||||
AOS OCHCNT
|
||||
JRST NMLP2
|
||||
|
||||
NMLPX: POP P,B
|
||||
POP P,A
|
||||
POPJ P,
|
||||
|
||||
BLIST: 410300,,BUF+2
|
||||
360300,,BUF+2
|
||||
330300,,BUF+2
|
||||
300300,,BUF+2
|
||||
250300,,BUF+2
|
||||
220300,,BUF+2
|
||||
170300,,BUF+2
|
||||
140300,,BUF+2
|
||||
110300,,BUF+2
|
||||
060300,,BUF+2
|
||||
030300,,BUF+2
|
||||
000300,,BUF+2
|
||||
|
||||
|
||||
;FINISHED
|
||||
|
||||
DONEX: NETWAIT NETO,4,5,120.
|
||||
JRST DONE
|
||||
JRST DONE ;ALL THAT WORK FOR NAUGHT
|
||||
MOVE A,OCHCNT
|
||||
ADDI A,4
|
||||
IDIVI A,5
|
||||
MOVNS A
|
||||
HRLS A
|
||||
HRRI A,OBUFFR
|
||||
.IOT NETO,A
|
||||
.NETS NETO,
|
||||
JFCL
|
||||
LOGLOS::
|
||||
DFAIL::
|
||||
DONE: .CLOSE NETO,
|
||||
.CLOSE NETI,
|
||||
.LOGOUT
|
||||
.VALUE
|
||||
;INTERRUPT CODE
|
||||
TSINT: 0
|
||||
RETURN: 0
|
||||
SKIPGE J,TSINT
|
||||
JRST WRDTWO
|
||||
SKIPG TSINT
|
||||
JRST TSINTX ;NO INTRRUPTS TO SERVICE
|
||||
TRNN J,IOCBIT ;IOC?
|
||||
JRST NOTIOC ;NO
|
||||
JRST INTLOS
|
||||
|
||||
NOTIOC: TRNN J,CLKBIT ;CLOCK INTERRUPT?
|
||||
JRST TSINTX ;NO
|
||||
ADDI CLOCK,1
|
||||
CAIGE CLOCK,240. ;TWO MINUTES??
|
||||
JRST TSINTX ;NO
|
||||
JRST INTLOS
|
||||
|
||||
WRDTWO: TRNN J,OUTBIT
|
||||
JRST TESTIN
|
||||
.STATU NETO,K
|
||||
LDB K,[140400,,K]
|
||||
CAIL K,5
|
||||
CAILE K,6
|
||||
JRST INTLOS
|
||||
TESTIN: TRNN J,INBIT
|
||||
JRST TSINTX
|
||||
.STATU NETI,K
|
||||
LDB K,[140400,,K]
|
||||
CAIN K,5
|
||||
JRST TSINTX
|
||||
CAIE K,10
|
||||
CAIN K,11
|
||||
JRST TSINTX
|
||||
|
||||
INTLOS: MOVEI K,DONE
|
||||
MOVEM K,RETURN
|
||||
TSINTX: .DISMI RETURN
|
||||
|
||||
|
||||
END START
|
||||
|
||||
Reference in New Issue
Block a user