1
0
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:
Lars Brinkhoff
2021-01-22 08:07:53 +01:00
parent 8122f0334b
commit eca5df75cf
4 changed files with 384 additions and 0 deletions

View File

@@ -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"

View File

@@ -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

View File

@@ -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
View 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