Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_SRC_3_19910112 - mit/monitor/chaos.dif
There are no other files named chaos.dif in the archive.
;COMPARISON OF SRC:<SYS.MONITOR>CHAOS.MAC.429 AND SSY:<BERLIN.M5>CHAOS.MAC.15
;OPTIONS ARE    /3

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 1-1 (0)
;<SYS.MONITOR>CHAOS.MAC.429, 21-Jul-82 14:25:26, Edit by MMCM
;300 DCP's fix to NVT's.  Retransmission bug when packet numbers
;above 100000.
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 1-1 (0)
; Turn off debugging - CHABDP leaves junk in syserr block and
;  causes ILLUUO when referenced.  Need to fix some bugs soon.
;1017 Also make this bug go away for the time being...
;<BERLIN>CHAOS.MAC.12, 24-Aug-82 21:56:47, Edit by BERLIN
;1016 Turn on debugging for a while...
;  The problem is that apparently a connection block is getting
;  used after it is released.  The latest bughlt (piptr1) came
;  at CHIDT9, when CHAPBF was -1, and PKT check wants 0 for empty q
;<BERLIN.M5>CHAOS.MAC.9, 21-Aug-82 23:07:50, Edit by BERLIN
;1014 Real check for empty q (How did this ever work???)
;1005 Force BBNFLG to 0 for MIT, remove gatinc,gattdnc
;<BERLIN.M5>CHAOS.MAC.5, 10-Aug-82 09:36:49, Edit by BERLIN
;1004 Remove support for receiving packets from the Arpanet
;<5.MITMON>CHAOS.MAC.4, 21-Jul-82 19:57:49, Edit by JTW
;1003 MMcM's fix for retrans problem with big packet numbers,
; DCP's fix for input packets sometimes not noticed
;<BERLIN.M5>CHAOS.MAC.3,  5-Jul-82 12:36:11, Edit by BERLIN
;1002 Remove arpa routing again
;<SYS.MONITOR>CHAOS.MAC.429,  5-Jul-82 01:30:36, Edit by BERLIN
;1000 V5 merge
;Fixes and changes from TAPPAN@BBN:
 ;<BBN-4-MONITOR>CHAOS.MAC.18, 10-Jan-82 17:47:31, Edit by TAPPAN
 ; Make CHGETP save temporaries to fix problem with T3 getting
 ; clobbered from GETINP
 ;<BBN-4-MONITOR>CHAOS.MAC.10, 18-Nov-81 19:00:57, Edit by TAPPAN
 ; Fixes to internet code, involving the fact that we
 ; can't call GETBLK while NOSKED
 ;[BBND]SNARK:<TAPPAN.4>CHAOS.MAC.26, 27-Oct-81 12:39:01, Ed: TAPPAN
 ; Make internet stuff work, some cleanup to NOSKDP/OKSKDP
 ; CHXINT cannot send packets if called from schedular context
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 3-3 (10791)
IFN ARPAF,<SEARCH IMPPAR>
IFNDEF FRNDLY,<FRNDLY==0>	;FRIENDLY HOST SUPPORT CODE
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 3-4 (12318)
	BBNFLG=0		;1005 BBNFLG is 0 at MIT
;1000 Setup default parameter switches
DEFINE NDG (SYM,VAL)<
   IFNDEF SYM,<
	SYM==:VAL>>
NDG ARPAF,0			; Arpaanet packetizing
NDG CHINET,0			; Internet packetizing
NDG MNET,0			; Multinet system
NDG BBNFLG,0			; BBN monitor mods
NDG F3FLG,0			; Foonly processor
NDG KLFLG,0			; KL processor
NDG SMFLG,0			; 2020 processor
NDG T20FLG,0			; TOPS-20 monitor
NDG TNXFLG,0			; TENEX monitor
NDG NETDTE,-1			;DEFAULT IS NO DTE USAGE
NDG FRNDLY,0			; friendly host support code
;;;DEBUGGING/METERING SETTINGS
NDG CHSDBG,0			;DEBUGGING OFF BY DEFAULT
NDG CHSMTR,0			;METERING OFF BY DEFAULT
;1000 End Addition
IFN ARPAF,<SEARCH IMPPAR>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 3-13 (10951)
;;;DEBUGGING/METERING SETTINGS
chsdbg==0			;252 Turn off debugging for CHAOS
IFNDEF CHSDBG,<CHSDBG==-1>	;DEBUGGING ON BY DEFAULT
IFNDEF CHSMTR,<CHSMTR==0>	;METERING OFF BY DEFAULT
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 3-35 (13086)
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 3-88 (13423)
	EXTN <GATINC,GATDNC>
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 3-105 (15372)
;1005	EXTN <GATINC,GATDNC>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 3-154 (15019)
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 3-171 (16973)
IFGE NETDTE,<			;1000
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 3-159 (15213)
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 3-176 (17188)
> ;1000 end IFGE NETDTE
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 4-11 (17948)
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 4-11 (19950)
IFN CHINET,<
	SETOM CHPKTI		; Hold off on internet buffer pointer
>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 4-22 (18305)
	SETOM MYCHAD		;INDICATE WE DON'T KNOW OUR HARDWARE ADDRESS YET
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 4-25 (20378)
IFG NETDTE,<
	SETOM MYCHAD		; WE DON'T KNOW OUR HARDWARE ADDRESS YET
>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 9-8 (28425)
	JUMPE T3,[MOVX T2,SC%WHL!SC%OPR!SC%NWZ!SC%NAS ;YES, CHECK CAPAS
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 9-8 (30507)
	JUMPE T3,[
IFE BBNFLG,<
		MOVX T2,SC%WHL!SC%OPR!SC%NWZ!SC%NAS ;YES, CHECK CAPAS
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 9-12 (28636)
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 9-14 (30736)
>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 10-75 (33864)
	SETOM CHAPBF(CONN)	;MARK THIS Q AS INACTIVE NOW
	MOVEI Q2,CHAIBF(CONN)	;INPUT BUFFERS
	CALL CHALFR
	SETOM CHAIBF(CONN)	;THIS Q IS INACTIVE
	CALL CHALFO
	SETOM CHAOBF(CONN)	;DITTO
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 10-75 (35967)
;1017	SETOM CHAPBF(CONN)	;MARK THIS Q AS INACTIVE NOW
	SETZM CHAPBF(CONN)	;1017 MARK THIS Q AS INACTIVE NOW
	MOVEI Q2,CHAIBF(CONN)	;INPUT BUFFERS
	CALL CHALFR
;1017	SETOM CHAIBF(CONN)	;THIS Q IS INACTIVE
	SETZM CHAIBF(CONN)	;1017 THIS Q IS INACTIVE
	CALL CHALFO
;1017	SETOM CHAOBF(CONN)	;DITTO
	SETZM CHAOBF(CONN)	;1017 DITTO
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 12-35 (38936)
CHTCDN:	
;300	SETOM CHATTW		;DONE, CLEAR OUT QUEUE
	RET
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 12-35 (41188)
;1003 CHTCDN: SETOM CHATTW	;DONE, CLEAR OUT QUEUE
				;1003 NOW CLEARED BY EXCH CONN,(Q2) ABOVE
CHTCDN:	RET			;1003  SO JUST RETURN
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 15-33 (43592)
	PUSH P,T1		;SAVE BYTE POINTER
	CALL CHGETP		;GET THIS PACKET, DO ACKING, ETC.
	 JRST [	ADJSP P,-1	;FLUSH BP
		JRST GETIN4 ]	;OOPS, NO MORE, JUST RETURN
	POP P,T1		;GET BACK BYTE POINTER
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 15-33 (45920)
	CALL CHGETP		;GET THIS PACKET, DO ACKING, ETC.
	 JRST GETIN4		;1000 CHGETP preserves temps now
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 15-61 (44552)
CHGETP:	CALL NOSKDP		;LOCK THIS UP
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 15-58 (46786)
CHGETP:	SAVET			;1000 Save temps here
	CALL NOSKDP		;LOCK THIS UP
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 15-73 (44945)
;HANDLE ACK OF DATA AND EOF PACKETS; REMEMBER WE'VE SEEN AN EOF PACKET IF SO FOR
;STREAM I/O'S SAKE.
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 15-71 (47211)
;HANDLE ACK OF DATA AND EOF PACKETS;
; REMEMBER WE'VE SEEN AN EOF PACKET IF SO FOR STREAM I/O'S SAKE.
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 19-10 (58524)
	MOVEI T1,1		;WE NEED PRIORITY, STAY IN HIGHEST Q
	MOVEM T1,JOBBIT
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 19-10 (60791)
IFE BBNFLG,<
	MOVEI T1,1		;WE NEED PRIORITY, STAY IN HIGHEST Q
	MOVEM T1,JOBBIT
>
IFN BBNFLG,<
	CALL SETSPQ		; Special Q for high priority
>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 20-20 (62188)
	MOVEI T1,1		;SAY WE SHOULD ALWAYS STAY IN HIGHEST-PRIORITY
	MOVEM T1,JOBBIT		; QUEUE
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 20-20 (64534)
IFE BBNFLG,<
	MOVEI T1,1		;SAY WE SHOULD ALWAYS STAY IN HIGHEST-PRIORITY
	MOVEM T1,JOBBIT		; QUEUE
>
IFN BBNFLG,<
	CALL SETSPQ		; Special Q us
>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 20-31 (62613)
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 20-35 (65021)
IFN CHINET,<
	MOVEI T1,^D5000		; Sleep for a little
	DISMS			; to let the Internet initialize
	SETZM CHPKTI		; Now allow us to get an internet buffer
>
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 24-7 (77496)
	CALL GATDNC		;255 yes, poke internet
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 24-6 (80059)
;;	CALL GATDNC		;255 yes, poke internet
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 24-15 (77656)
	CALL GATINC		;255 up now, poke internet
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 24-14 (80221)
;;	CALL GATINC		;255 up now, poke internet
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 36-52 (123655)
;300	MOVEI T1,177777		;LAST PACKET NUMBER WE RE-XMITTED (16B -1)
	HRRZ T1,CHAACK(CONN)	;300 GET LAST PACKET NUMBER ACK'ED
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 36-52 (126222)
	HRRZ T1,CHAACK(CONN)	;1003 LAST PACKET NUMBER WE RE-XMITTED
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 40-19 (136326)
	 JRST OKSKDP		;NO GOOD, JUST GET OUT
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 40-19 (138831)
	 CALLRET OKSKDP		;NO GOOD, JUST GET OUT
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 40-25 (136489)
		  JRST OKSKDP]
	HRLM PKT,(Q2)		;WAS EMPTY, ON BOTH ENDS
	JRST OKSKDP
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 40-25 (138997)
		  CALLRET OKSKDP]
	HRLM PKT,(Q2)		;WAS EMPTY, ON BOTH ENDS
	CALLRET OKSKDP
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 40-36 (136752)
	JUMPE PKT,CHAQG0
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 40-36 (139266)
	CAMN PKT,[777777]	;1014 IS Q EMPTY?
	 SETZ PKT,		;1014 WAS EMPTY, USE CANONICAL FORM
	SKIPN PKT		;1014 MAYBE 0, MAYBE -1?
	 JRST CHAQG0		;1014 YES, EMPTY
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 40-58 (137314)
NOSKDP:	AOSG CHPIDF		;IF ALREADY ACTIVE OR
	 CONSZ PI,177B27	; IF AT PI LEVEL, DO NOTHING
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 40-61 (139968)
NOSKDP: CONSZ PI,177B27	; IF AT PI LEVEL, DO NOTHING
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 40-63 (137483)
	CONSO PI,1B<28+CHACHN>
	 JRST [ SETZM CHPIOF
		RET ]
	SETOM CHPIOF		;REMEMBER WE CHNOFF'ED
	CHNOFF CHACHN
>;IFGE CHACHN,
	RET
OKSKDP:	SOSGE CHPIDF		;LEAVING THIS LEVEL OF LOCKING; IF STILL NESTED
	 CONSZ PI,177B27	; OR IF AT PI LEVEL,
	 RET			; DO NOTHING
	OKSKD1
IFGE CHACHN,<
	SKIPE CHPIOF		;DID WE DO A CHNOFF?
	 CHNON CHACHN		;YES, RESTORE STATE
>;IFGE CHACHN,
	RET
	SUBTTL	ARPANET ROUTING SUPPORT
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 40-65 (140099)
	AOSG CHPIOF		; CHNOFF if we haven't already
	 CHNOFF CHACHN
>;IFGE CHACHN,
	RET
OKSKDP: CONSZ PI,177B27		; IF at PI level
	 RET			; DO NOTHING
IFGE CHACHN,<
	SOSGE CHPIOF		; Are we the top level ?
	 CHNON CHACHN		; Yes, all interrupts again also
>;IFGE CHACHN,
	OKSKD1
IFN CHINET,<
;;; The following code is because we cannot call GETBLK while
;;; NOSKED (since it might block on the free storage lock)
;;; and CHXINT is always called while NOSKED.
;;; Therefore we try to keep an internet  buffer on tap
	SKIPN INSKED		; We can't work in schedular
	 SKIPE NSKED		; or if NOSKED
	  RET			; so give up
	
	PIOFF			; Steal machine for a moment
	SKIPE CHPKTI		; Have we a buffer already?
	 JRST [	PION		; yes, do nothing
		RET]
	SETOM CHPKTI		; make others leave it alone
	PION			; and give back the machine
	STKVAR <FROMS1>		; Flag of the section we're in
	XMOVEI T1,0		; Get section number
	MOVEM T1,FROMS1		; Save
	SKIPN T1		; If in section 0
	 SE1CAL			; enter section 1
	MOVEI T1,PKTELI+<MINIHS+3>/4+CHPKDT+<^D488>/4+2
				; allocate space for maximum possible packet
	CALL GETBLK		; get a block of Internet free storage
	MOVEM T1,CHPKTI		; Save buffer if we got it
	SKIPN FROMS1		; If we came from section 0
	 SE0ENT			; return to it
>
	RET
	SUBTTL	ARPANET ROUTING SUPPORT
repeat 0,<		;1002 remove arpa routing support
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 42-4 (139078)
IFN ARPAF!CHINET,<
;SUPPORT FOR RECEIVING PACKETS FROM ANOTHER MODULE IN ANOTHER SECTION
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 42-3 (142635)
>;1002 End repeat 0 (remove arpa routing support)
IFN ARPAF!CHINET,<
;SUPPORT FOR RECEIVING PACKETS FROM ANOTHER MODULE IN ANOTHER SECTION
REPEAT 0,<		;1004
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 42-13 (139376)
>;IFN ARPAF
;ENTER HERE WITH T2 POINTER TO ACTUAL CHAOSNET PACKET, COPY TO PRIMARY SECTION
;AND CALL CHAOSNET PACKET RECEIVER.
CHIIM1:	LOAD T1,CPKNB,(T2)	;GET BYTE COUNT
	ADDI T1,CHPKDT*4+3	;PLUS PACKET HEADER
	LSH T1,-2		;TURN INTO WORDS
	MOVEI T3,CHATPB		;THIS TEMP PACKET IS THE DESTINATION
	MOVEI PKT,(T3)		; AND LEAVE HERE FOR CHIPKT
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 42-15 (143005)
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 42-25 (139835)
	CAMG T1,CHPMXW		;COMPARE SIZE AGAINST MAXIMUM
	 CAILE T1,(T4)		;COMPARE THE TWO SIZES
	 RET			;BAD, FLUSH IT
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 42-18 (143115)
>;IFN ARPAF
>;Repeat 0
;;;
;;; Here with T2 pointing to Chaosnet packet, T4 holding amount
;;; of data received, copy packet to primary section and
;;; give it to packet receiver
;;;
CHIIM1:	LOAD T1,CPKNB,(T2)	;GET BYTE COUNT
	ADDI T1,3		; Round up
	LSH T1,-2		;TURN INTO WORDS
	CAMLE T1,CHPMXW		;COMPARE SIZE AGAINST MAXIMUM
	 RET			; Bad
	ADDI T1,CHPKDT		;PLUS PACKET HEADER
	CAILE T1,(T4)		;COMPARE THE TWO SIZES
	 RET			; Bad
	MOVEI T3,CHATPB		;THIS TEMP PACKET IS THE DESTINATION
	MOVEI PKT,(T3)		; AND LEAVE HERE FOR CHIPKT
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 43-3 (140237)
;INPUT MESSAGE FROM INTERNET MODULE, AGAIN MAY BE IN NON-ZERO SECTION.
CHIINT::SAVEQ
	MOVE T2,IPKT		;POINTER TO INTERNET PACKET
	LOAD T1,PIDO,(IPKT)	;DATA OFFSET
	ADD T2,T1		;ADD IT IN
	JRST CHIIM1		;CALL CHAOSNET
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 43-3 (143951)
; Input message from INTERNET module, again may be in non-zero section.
CHIINT::SAVEQ
	MOVE T2,IPKT		; Pointer to INTERNET packet
	LOAD T1,PIDO,(IPKT)	; Data offset
	LOAD T4,PIPL,(IPKT)	; Data size
	ADDI T2,PKTELI(T1)	; Add offset to pointer
	SUB T4,T1		; subtract header from size
	JRST CHIIM1		; And enter CHAOSNet
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 43-18 (140608)
CHXINT:	PUSH P,IPKT
	MOVEI IPKT,PKTINT(PKT)	;POINT TO INTERNET HEADER
	SETZM .IPKVR(IPKT)
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 43-20 (144427)
CHXINT:	STKVAR <FROMS1>		; flag of the section we're called from
	XMOVEI T1,0		; Get section number
	MOVEM T1,FROMS1		; save
	SKIPN T1		; Don't enter if we're already there
	 SE1CAL			; enter section 1
	PUSH P,IPKT		; Save Internet packet register
	SKIPE INSKED		; Called from the schedular?
	 JRST CHXINX		; Can't send packet if so
				; (because can't lock down memory)
	SKIPG IPKT,CHPKTI	; Is there an internet buffer on tap?
	 JRST CHXINX		; No, must drop packet
	SETZM CHPKTI		; clear pointer
	SETZRO PFLGS,(IPKT)	; clear all flags
	SETZM .IPKVR(IPKT)	
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 43-25 (140847)
	LOAD T1,CPKNB,(PKT)	;GET SIZE
	ADDI T1,<CHPKDT-PKTINT>*4	;INCLUDE HEADER
	STOR T1,PIPL,(IPKT)	;INTO INTERNET PORTION
	SETZM .IPKSG(IPKT)	;NO FRAGMENTATION
	SETZM .IPKPR(IPKT)
	MOVEI T1,.CHAFM		;CHAOSNET PROTOCOL
	STOR T1,PIPRO,(IPKT)
	LOAD T1,CPKSA,(PKT)	;SOURCE HOST
	IOR T1,[CHINTM]		;MASK IN INTERNET
	STOR T1,PISH,(IPKT)
	LOAD T1,CPKDA,(PKT)	;DESTINATION HOST
	IOR T1,[CHINTM]		;MASK IN INTERNET
	STOR T1,PIDH,(IPKT)	
	SE1ENT
	CALL SNDGAT
	SE0ENT
	POP P,IPKT
	POPJ P,
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 43-38 (145145)
	MOVEI T1,10		; reasonable TTL
	STOR T1,PITTL,(IPKT)	; save in packet
	LOAD T1,CPKNB,(PKT)	; get data size
	ADDI T1,CHPKDT*4	; Size of CHAOS header
	PUSH P,T1		; save for later
	ADDI T1,MINIHS		; + Size of inet leader
	STOR T1,PIPL,(IPKT)	; Store as packet size
	SETZM .IPKSG(IPKT)	; No fragmentation
	SETZM .IPKPR(IPKT)	; ...
	MOVEI T1,.CHAFM		; CHAOSNET protocol
	STOR T1,PIPRO,(IPKT)
	MOVE T1,DEFADR		; get default address
	STOR T1,PISH,(IPKT)	; set as source host
	LOAD T1,CPKDA,(PKT)	; destination host
	IOR T1,[CHINTM]		; mask in internet
	STOR T1,PIDH,(IPKT)	; and set internet destination
	XMOVEI T3,PKTELI+<MINIHS+3>/4(IPKT)	; Point to Data area
	MOVE T2,PKT		; transfer from here
	POP P,T1		; Number of bytes to transfer
	LSH T1,-2		; convert to words
	AOS T1			; in case of non-integer 
	CALL XBLTA		; ....
	CALL SNDGAT		; send it off
CHXINX:	POP P,IPKT		; restore register
	HRROS PKTLNK(PKT)	; Packet is no longer XMIT active
	RCALL RELPKM,22		; Packet is not in use, so release it
	SKIPN FROMS1		; don't return to sc 0 if we came from 1
	 SE0ENT			; return to section 0
	RETSKP			; and return
***************

**** FILE SRC:<SYS.MONITOR>CHAOS.MAC.429, 44-60 (143188)
CHKLCK:	SKIPGE CHPIDF		;HAS NOSKDP BEEN CALLED?
**** FILE SSY:<BERLIN.M5>CHAOS.MAC.15, 44-60 (148130)
CHKLCK:
IFGE CHACHN,<
	SKIPGE CHPIOF		;HAS NOSKDP BEEN CALLED?
>
IFL CHACHN,<
	SKIPN NSKED		; are we safe from pre-emption?
>
***************