perm filename NETWHO.MID[S,NET] blob sn#697656 filedate 1983-01-28 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	NIORTS CORBEG PDL USRBUF HSTBUF COREND NETWHO CMDSCN GETCMD MUMBLE GETUSR GETHST GETHCH
C00005 00003	GOGOGO
C00006 00004	YUMMIE SNDUSR SNTUSR
C00008 00005	GOBLIN GOBBLE MSGLUP
C00009 ENDMK
C⊗;
;NIORTS CORBEG PDL USRBUF HSTBUF COREND NETWHO CMDSCN GETCMD MUMBLE GETUSR GETHST GETHCH

TITLE NETWHO

; QUICK NETWORK WHO KLUDGE UNTIL I DO THE RIGHT THING

NIORTS==-1 ? ERRHAN==-1 ? HSTTAB==-1		; MARVELOUS NETWORK ROUTINES
.INSRT NETWRK

CORBEG==.
PDL:	BLOCK 20.
USRBUF:	BLOCK 10.
HSTBUF:	BLOCK 10.
COREND==.-1

SUBTTL INITIALIZATION AND COMMAND PARSING

NETWHO:	JFCL
	RESET
	MOVE 17,[PDL(-20)]
	SETZM CORBEG
	MOVE [CORBEG,,CORBEG+1]
	BLT COREND
	RESCAN 1
	JUMPE 1,GETCMD
	INCHRS
	 JRST GETCMD
	CAIE "W
	 CAIN "w
	  SKIPA 1,[" ]
	   MOVEI 1,";
CMDSCN:	INCHRS
	 JRST GETCMD
	CAIE ↑J
	 CAIN 175
	  JRST GETCMD
	CAIE "%
	 CAIN "@
	  JRST MUMBLE
	CAIE (1)
	 JRST CMDSCN
	JRST MUMBLE

GETCMD:	INSKIP
	 OUTSTR [ASCIZ/(User@)Host: /]

; GET USER NAME

MUMBLE:	MOVE 1,[440700,,USRBUF]
GETUSR:	INCHWL
	CAIE <" >
	 CAIN ↑M
	  JRST GETUSR
	CAIE 175
	 CAIN ↑J
	  JRST [SKIPN USRBUF
		 JRST GETCMD
		MOVE [USRBUF,,HSTBUF]
		BLT HSTBUF+9.
		SETZM USRBUF
		JRST GOGOGO]
	CAIE "%				; CRETIN SAIL CONVENTION
	 CAIN "@
	  JRST GETHST
	IDPB 1
	JRST GETUSR

; GET HOST NAME

GETHST:	MOVE 1,[440700,,HSTBUF]
GETHCH:	INCHWL
	CAIE <" >
	 CAIN ↑M
	  JRST GETHCH
	CAIE 175
	 CAIN ↑J
	  JRST GOGOGO
	IDPB 1
	JRST GETHCH
;GOGOGO

SUBTTL FIRE UP A CONNECTION

GOGOGO:	PUSHJ 17,MAPHST
	MOVEI HSTBUF
	PUSHJ 17,HSTNAM
	 JRST [	OUTSTR [ASCIZ/No such host.
/]
		CLRBFI
		PUSHJ 17,UNMHST
		JRST NETWHO]
	 JRST [	OUTSTR [ASCIZ/Ambiguous host name.
/]
		CLRBFI
		PUSHJ 17,UNMHST
		JRST NETWHO]
	MOVEM HOST
	PUSHJ 17,UNMHST
	MOVEI 365
	MOVEM ICPSKT
	PUSHJ 17,CONECT
; FALLS THROUGH
;YUMMIE SNDUSR SNTUSR

SUBTTL SEND COMMAND

	IRPC GARPLY,,[ERSTR]
	 MOVEI "GARPLY
	 PUSHJ 17,NETOCH
	TERMIN
	MOVEI ↑M ? PUSHJ 17,NETOCH
	MOVEI ↑J ? PUSHJ 17,NETOCH
	PUSHJ 17,NETSND			; FORCE COMMAND OUT
YUMMIE:	PUSHJ 17,NETICW
	CAIE "@
	 JRST YUMMIE
	SKIPN USRBUF			; EVERYBODY?
	 JRST [	IRPC GARPLY,,[SSINF]
		 MOVEI "GARPLY
		 PUSHJ 17,NETOCH
		TERMIN
		JRST SNTUSR]
	IRPC GARPLY,,[USINF ]
	 MOVEI "GARPLY
	 PUSHJ 17,NETOCH
	TERMIN
	MOVE 1,[440700,,USRBUF]
SNDUSR:	ILDB 1
	JUMPE SNTUSR
	PUSHJ 17,NETOCH
	JRST SNDUSR
SNTUSR:	MOVEI ↑M ? PUSHJ 17,NETOCH
	MOVEI ↑J ? PUSHJ 17,NETOCH
	PUSHJ 17,NETSND			; FORCE COMMAND OUT
; FALLS THROUGH
;GOBLIN GOBBLE MSGLUP

SUBTTL FOOL AROUND WITH REPLIES

	PUSHJ 17,NETICW
	CAIN "+
	 JRST MSGLUP
	CAIE "-
	 JRST 4,.-1
GOBLIN:	PUSHJ 17,NETICW
	CAIE <" >
	 JRST GOBLIN
GOBBLE:	PUSHJ 17,NETICW
	CAIN "@
	 EXIT
	OUTCHR
	JRST GOBBLE
MSGLUP:	PUSHJ 17,NETICW
	CAIN "+
	 EXIT
	OUTCHR
	JRST MSGLUP

END NETWHO