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