perm filename LAVSER.MID[S,NET] blob
sn#385344 filedate 1978-09-30 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 LAVSER QUIT LAVBLK LAVSIZ LSNBLK LSNSTS
C00006 ENDMK
C⊗;
;LAVSER QUIT LAVBLK LAVSIZ LSNBLK LSNSTS
TITLE LAVSER
SUBTTL Mark Crispin, SU-AI, June 1978
LAVSER: JFCL
RESET
MOVE ['LAVSER]
SETNAM
MOVEI [DEBREAK ? EXIT]
MOVEM JOBAPR
CLKINT 30.*60. ; set up death time
; Listen for a 371 connection
INIT 17 ; open in dump mode
'IMP,, ; device IMP:
0 ; no buffers
JRST QUIT
MTAPE [17 ? .BYTE 6 ?1?5?5?1?0?0]; set timeouts
MTAPE LSNBLK
MOVE LSNSTS ; check for MTAPE error
TRNN 77
STATZ 763600
JRST QUIT
TLC 300000 ; for next instruction to win
TLCE 300000 ; legal socket state?
JRST QUIT
; Map in the system
MOVSI 377777 ; 128K
SETPR2
JRST QUIT
; # of pages of core "whatever that means"
MOVE 1,400216
MOVE 400000(1) ; CORMAX
MOVEM LAVBLK+4
; Load average
MOVE 1,400331 ; LDSHF*1000+LDPWR,,LDAVG
FLTR 400000(1) ; LDAVG (in floating point)
LDB 2,[221100,,1] ; LDPWR
LSH 1,-27. ; LDSHF
ADDI 1,(2)
MOVEI 2,1
LSH 2,(1) ; 2↑(LDPWR+LDSHF)
FLTR 2,2
FDVR 2 ; floating point load avg
MOVEM LAVBLK+5 ? MOVEM LAVBLK+6 ? MOVEM LAVBLK+7
; Number of users
SETZM LAVBLK+10
MOVSI 40000 ; JNA
HRLO 1,400222 ; JOBN-1
EQV 1,400210 ; PRJPRG
ADJSP 1,1 ; forget job 0
TDNE 400000(1)
AOS LAVBLK+10
AOBJN 1,.-2
; Checksum
SETZ
MOVE 1,[-7,,LAVBLK+2]
XOR (1)
AOBJN 1,.-1 ; compute silly checksum
; Send statistics
MOVEM LAVBLK+1
MOVE [-LAVSIZ,,LAVBLK-1] ; pointer to block
SETZ 1, ; stop code for dump mode
OUTPUT
QUIT: RESET
EXIT ; and that's it
LAVBLK: -7 ; 7 words in actual message
BLOCK 1 ; checksum
1,,-6 ; type 1; 6 words in info
-1 ; I think I am up!
BLOCK 5 ; other info
LAVSIZ==.-LAVBLK
LSNBLK: 1 ; LISTEN
LSNSTS: BLOCK 1 ; returned status bits
371 ; local socket to listen to
-1 ; ≠ 0 → wait for connection
36. ; byte size
BLOCK 1 ; foreign socket
BLOCK 1 ; foreign host
END LAVSER