Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99g-bb - d8kint.c10
There is 1 other file named d8kint.c10 in the archive. Click here to see a list.
 REP 2/1	;10C1
	SUBTTL	W. E. MATSON/TARL	25 JAN 84
 WIT
	SUBTTL	W. E. MATSON/TARL/TL	25 JAN 84
 INS 7/1	;10C2
		.DIRECT	FLBLST

 REP 53/1	;10C3

 WIT
 DEL 1/5	;10C4

 DEL 1/11	;10C5

 REP 55/11	;10C6

 WIT
 DEL 1/12	;10C7

 DEL 1/13	;10C8

 REP 50/14	;10C9

 WIT
 DEL 1/20	;10C10

 DEL 1/21	;10C11

 REP 14/24	;10C12
	TITLE	KDPINT - SERVICE FOR KMC-11/DUP-11 V001
	SUBTTL	W. E. MATSON	4 DEC 80
 WIT
	TITLE	KDPINT - SERVICE FOR KMC-11/DUP-11 V002
	SUBTTL	W. E. MATSON/TL	21-OCT-84
 INS 20/24	;10C13
		.DIRECT	FLBLST

 REP 40/24	;10C14

 WIT
	IFNDEF FTUBLT,<FTUBLT==:0>		;DEFAULT UBABLT OFF FOR 7.02

	IFN FTUBLT,<
		OPDEF	BLTBU	[716B8]		;FAST BYTE TO UNIBUS
		OPDEF	BLTUB	[717B8]		;FAST UNIBUS TO BYTE
	>
 REP 12/25	;10C15
 WIT


		;COMPUTE CODE FOR "TIMER STOPPED" BASED ON FIELD SIZE
		KD%MXT==-1_-^D<36-<<KD%TIM&^O<007700,,0>>_-24>>
 DEL 1/27	;10C16

 DEL 1/28	;10C17

 DEL 1/29	;10C18

 REP 27/30	;10C19

 WIT
 INS 31/30	;10C20
	IFN FTUBLT,<
		APRID	T1		;SEE WHAT UCODE WE HAVE
		TLNE	T1,40K		;SUPPORT FAST BYTE SWAP?
		 JRST	KDPOCL		;YES, CONTINUE
		MOVE	U,OPRLDB##	;NO, COMPLAIN
		PUSHJ	P,INLMES##
		 ASCIZ	/?Wrong processor Ucode, deleting KMC
	/
		JRST	KDPNXP		;DELETE IT AND EXIT
	>
 INS 39/30	;10C21
		PUSH	P,KDLUSR(F)	;PRESERVE THE MONGEN LINE USER
 INS 43/30	;10C22
		POP	P,KDLUSR(F)	;RESTORE LINE USER SO WE AUTO START
 INS 14/34	;10C23
		CAIN	T2,KD%MXT	;STOPPED?
		 JRST	KDPSE2		;YES, IGNORE IT
 REP 18/34	;10C24
		SETZ	T2,		;IF IT'S OVERFLOWED, GET A ZERO
		DPB	T2,KDLTIM##	;  AND RESET THE TIMER
		MOVE	T2,[EXP KDSSTR,KDSSTK,KDSREP](T1) ;GET "REQUEST BIT" TO SET.
		IORM	T2,KDLSTS(F)	;REQUEST THE APPROIATE CONTROL MESSAGE
 WIT
		SETO	T2,		;IF IT'S OVERFLOWED, STOP IT
		DPB	T2,KDLTIM##	;  (NEXT EVENT WILL RESTART IT IF NECESSARY)
		MOVE	T2,[EXP KDSSTR,KDSSTK,KDSREP](T1) ;GET "REQUEST BIT" TO SET.
		IORM	T2,KDLSTS(F)	;REQUEST THE APROPRIATE CONTROL MESSAGE
 DEL 1/35	;10C25

 DEL 1/37	;10C26

 DEL 1/38	;10C27


 DEL 1/39	;10C28

 DEL 1/40	;10C29

 DEL 1/41	;10C30

 DEL 1/42	;10C31

 DEL 1/43	;10C32

 DEL 1/44	;10C33

 REP 32/44	;10C34
		MOVSI	T1,(KDSSTR)	;GET THE "NEED TO SEND START" BIT
		IORM	T1,KDLSTS(F)	;  AND SET IT SO WE SEND ONE SOON
 WIT
		MOVSI	T1,(XMTBTS)	;MAKE SURE WE LEAVE NO CONTROL MESSAGES
		ANDCAM	T1,KDLSTS(F)	;PENDING FROM LAST TIME
		MOVSI	T1,(KDSSTR)	;GET THE "NEED TO SEND START" BIT
		IORM	T1,KDLSTS(F)	;  AND SET IT SO WE SEND ONE SOON
		PUSHJ	P,CLCTRS	;MAKE SURE WE START CORRECTLY
 REP 28/45	;10C35
		MOVE	T3,KDPKDL(W)	;POINT TO KDL TABLE
		SOJG	T2,[CAME F,(T3)		;DO WE HAVE A MATCH
			    JRST KDLSD1		;YES, THAT MEANS WE FOUND KDP NUMBER
			    ADDI T3,1		;NO, POINT TO NEXT BLOCK
			    JRST .]		; AND CHECK IT OUT
		PUSHJ	P,NTDSTP	;OOPS, SEVERE PROBLEM

	KDLSD1:	SUB	T3,KDPKDL(W)	;FIND THE KDP NUMBER
 WIT
		MOVEI	T3,KDPKDL(W)	;POINT TO KDL TABLE
		SOJGE	T2,[CAMN F,(T3)		;DO WE HAVE A MATCH
			    JRST KDLSD1		;YES, THAT MEANS WE FOUND KDP NUMBER
			    AOJA T3,.]		;NO, ADVANCE TO NEXT AND CHECK IT OUT
		PUSHJ	P,NTDSTP	;OOPS, SEVERE PROBLEM
	KDLSD1:	SUBI	T3,KDPKDL(W)	;FIND THE KDP NUMBER
 REP 52/46	;10C36

 WIT
 DEL 1/47	;10C37

 INS 14/48	;10C38
		MOVSI	T1,(XMTBTS)	;MAKE SURE WE LEAVE NO CONTROL MESSAGES
		ANDCAM	T1,KDLSTS(F)	;PENDING FROM LAST TIME
 DEL 1/51	;10C39

 DEL 1/52	;10C40

 DEL 1/53	;10C41

 DEL 1/55	;10C42

 DEL 1/56	;10C43

 DEL 1/57	;10C44

 DEL 1/58	;10C45

 DEL 1/59	;10C46

 DEL 1/60	;10C47

 DEL 1/61	;10C48


 DEL 1/62	;10C49

 REP 9/62	;10C50
	RCVMSG:	ADDI	T4,4		;MAKE T4 POINT TO BUFFER 4 (10 WORDS AFTER BDL)
		LDB	T1,BYTABL	;GET FIRST CHAR FROM MESSAGE
 WIT
	RCVMSG:	ADDI	T4,3		;POINT TO BUFFER 3 PDP-10 WORDS AFTER BDL
		HRLI	T4,2		;DDCMP HEADER STARTS IN RH SO DATA IS ON A WORD
		LDB	T1,BYTABL+2	;GET FIRST CHAR FROM MESSAGE
 DEL 1/63	;10C51

 REP 18/64	;10C52
		LDB	T3,BYTABL+1	;GET THE LOW 8 BITS OF THE LENGTH
		LDB	T2,BYTABL+2	;GET THE HIGH 6 BITS
 WIT
		LDB	T3,BYTABL+3	;GET THE LOW 8 BITS OF THE LENGTH
		LDB	T2,BYTABL+4	;GET THE HIGH 6 BITS
 INS 30/64	;10C53
					;(HEADER IS 6 BYTES, WE WANT PRE-DEC CBP)
 REP 39/64	;10C54
	RCVMA2:	SOJGE	T3,[PUSHJ P,ILDCB ;LOOP GETTING AND
			    IDPB S,T2	;  STORING THE DATA
			    JRST .]	;UNTIL THERE IS NO MORE.
 WIT
	RCVMA2:
	IFE FTUBLT,<
		SOJGE	T3,[PUSHJ P,ILDCB ;LOOP GETTING AND
			    IDPB S,T2	;  STORING THE DATA
			    JRST .]	;UNTIL THERE IS NO MORE.
	>
	IFN FTUBLT,<
		IBP	T2		;POINT TO WORD CONTAINING FIRST BYTE
		MOVEI	T2,@T2		;RESOLVE ANY INDEXING, ETC
		HRLI	T2,1(T4)	;POINT TO FIRST DATA WORD OF MESSAGE
		SOS	T3		;ROUND BYTE COUNT AND CONVERT TO WDS (+3 -4)
		LSH	T3,-2		;BYTES - WORDS
		ADDI	T3,(T2)		;END ADDRESS
		BLTUB	T2,(T3)		;MOVE MESSAGE TRANSLATED. (MABYE FEW EXTRA)
	>
 DEL 1/65	;10C55

 REP 18/65	;10C56
		LDB	T1,BYTABL+1	;GET THE SECOND BYTE (CONTROL TYPE)
 WIT
		LDB	T1,BYTABL+3	;GET THE SECOND BYTE (CONTROL TYPE)
 DEL 1/66	;10C57

 REP 7/66	;10C58
	RCVNAK:	LDB	T1,BYTABL+2	;GET THE NAK REASON
 WIT
	RCVNAK:	LDB	T1,BYTABL+4	;GET THE NAK REASON
 REP 15/66	;10C59
		PJRST	RCVBUF		;DON'T PROCSS ANY NAK'S
		PUSHJ	P,CHKACK	;PROCESS THE ACK FIELD
 WIT
		PJRST	RCVBUF		;DON'T PROCESS ANY NAK'S
		PUSHJ	P,CHKACK	;PROCESS THE ACK FIELD
		PUSHJ	P,STPTMR	;STOP THE TIMER
 REP 39/66	;10C60
	RCVREP:	LDB	T1,KDLRMN##	;GET THE LAST RECIEVED MESSAGE NUMBER
		LDB	T2,BYTABL+4	;GET THE "N" FIELD OF THE REP MESSAGE
		MOVSI	S,(KDSACK)	;ASSUME RANDOM REP (RESPOND WITH ACK)
		CAIE	T1,(T2)		;COMPARE MESSAGE NUMBERS. SKIP IF ALL OK
		JRST	[MOVEI T1,RSNREP ;IF WE MISSED SOME, GET CODE "REP RESPONSE"
			 DPB T1,KDLXNK##	;STORE IT IN THE "XMIT NAK REASON" FIELD
			 MOVSI S,(KDSNAK) ;GET THE "SEND NAK" BIT
			 JRST .+1]	;CONTINUE WITH MAIN STREAM CODE
		IORB	S,KDLSTS(F)	;SET THE NEED TO SEND "?" MESSAGE FLAG
		PUSHJ	P,XMTBUF	;KICK THE TRANSMITTER
		PJRST	RCVBUF		;QUEUE ANOTHER RECEIVE BUFFER AND EXIT
 WIT
	RCVREP:	LDB	T1,KDLSTA##	;GET LINE STATE
		CAIE	T1,KD%RUN	;MUST IGNORE UNLESS RUNNING
		 PJRST	RCVBUF		;IGNORE, REQUEUE RECEIVE BUFFER
		LDB	T1,KDLRMN##	;GET THE LAST RECIEVED MESSAGE NUMBER
		LDB	T2,BYTABL+6	;GET THE "N" FIELD OF THE REP MESSAGE
		CAIE	T1,(T2)		;COMPARE MESSAGE NUMBERS. SKIP IF ALL OK
		JRST	[MOVEI T1,RSNREP ;IF WE MISSED SOME, GET CODE "REP RESPONSE"
			 PJRST	RCVXNK]	;AND GO SEND A NAK
		MOVSI	S,(KDSACK)	;ASSUME RANDOM REP (RESPOND WITH ACK)
		IORM	S,KDLSTS(F)	;SET THE NEED TO SEND "?" MESSAGE FLAG
		MOVSI	S,(KDSNAK)	;CLEAR ANY PENDING NAK
		ANDCAM	S,KDLSTS(F)	;BECAUSE IT WOULD BE POINTLESS NOW
		PJRST	RCVNK2
 REP 19/67	;10C61
		JRST	RCVST3		;NOW GO DIRECTLY TO "SENDING STACKS" STATE
 WIT

		;DDCMP SAYS WE SHOULD JUST HALT.  BUT WE WANT TO TRY AND KEEP THE
		;LINE UP.  SO WE ENTER SENDING STARTS STATE.  WE CAN NOT SKIP TO
		;SENDING STACKS, AS ANF PDP-11S GET VERY CONFUSED.

		MOVEI	T1,KD%STR	;SEND STARTS
		DPB	T1,KDLSTA##	;STARTING NOW
		MOVSI	T1,(XMTBTS)	;MAKE SURE PAST QUEUED REQUESTS ARE CANCELED
		ANDCAM	T1,KDLSTS(F)	;AS WE'D ONLY GET CONFUSED LATER
		MOVSI	T1,(KDSSTR)	;SEND A START
		IORM	T1,KDLSTS(F)	;WHEN WE GET A CHANGE
		PJRST	RCVNK2		;CRANK UP THE KMC
 REP 23/67	;10C62
		PJRST	RCVBUF		;THEN DON'T PROCESS THE START
	RCVST3:	MOVEI	T1,KD%STK	;GET THE "SENDING STACK'S STATE"
 WIT
		 CAIN	T1,KD%STK	; OR SENDING STACKS
		CAIA			;OK
		 PJRST	RCVBUF		;THEN DON'T PROCESS THE START
		MOVEI	T1,KD%STK	;GET THE "SENDING STACK'S STATE"
 REP 30/67	;10C63
		PUSHJ	P,XMTBUF	;TRY TO SEND THE MESSAGE
		PJRST	RCVBUF		;  AND QUEUE ANOTHER RECEIVE REQUEST

	RCVSTK:	CAIE	T3,KD%STR	;IF WE AREN'T SENDING STARTS, THEN
		PJRST	RCVBUF		;  IGNORE ALL STACKS

 WIT
		PJRST	RCVNK2		;CRANK US UP
	RCVSTK:	CAIE	T3,KD%RUN	;IF NOT RUNNING
		 JRST	RCVSK1		;PROCEED
		MOVSI	T1,(KDSACK)	;RUNNING, SEND AN ACK
		IORM	T1,KDLSTS(F)	;TO KEEP OTHER END HAPPY
		MOVSI	T1,(KDSNAK)	;DON'T ALLOW NAK
		ANDCAM	T1,KDLSTS(F)	;WHICH WOULD KEEP THE ACK FROM GOING OUT
		JRST	RCVNK2		;CRANK THINGS UP

	RCVSK1:	CAIE	T3,KD%STR	;IF WE AREN'T SENDING STARTS, THEN
		 CAIN	T3,KD%STK	; OK IF SENDING STACKS TOO
		CAIA
		PJRST	RCVBUF		;  IGNORE ALL STACKS
		PUSHJ	P,STPTMR	;STOP THE TIMER
 REP 42/67	;10C64

		PUSHJ	P,KDLPUP	;TELL NETSER THAT THIS KDL IS ONLINE
		PUSHJ	P,XMTBUF	;TRY TO SEND THE ACK
		PJRST	RCVBUF		;REQUEUE THIS RECEIVE BUFFER
 WIT
		PUSHJ	P,KDLPUP	;TELL NETSER THAT THIS KDL IS ONLINE
		JRST	RCVNK2		;CRANK THINGS UP
 REP 22/68	;10C65
		LDB	T1,BYTABL+4	;GET THIS MESSAGES NUMBER
 WIT
		LDB	T1,BYTABL+6	;GET THIS MESSAGES NUMBER
 REP 29/68	;10C66
		LDB	T3,BYTABL+1	;FIRST GET THE LOW 8 BITS
		LDB	T1,BYTABL+2	;  AND THEN THE UPPER 6
 WIT
		LDB	T3,BYTABL+3	;FIRST GET THE LOW 8 BITS
		LDB	T1,BYTABL+4	;  AND THEN THE UPPER 6
 INS 8/70	;10C67
					;(DDCMP HEADER IS 6 BYTES, WANT PRE DEC CBP)
	IFE FTUBLT,<
 REP 12/70	;10C68
		HRRZ	S,(T4)		;GET BYTES #3 AND #2
 WIT
		MOVS	S,1(T4)		;GET BYTES #1 AND #0
		IDPB	S,T2		;STORE #0
		LSH	S,-^D8		;SHIFT #1 DOWN
		IDPB	S,T2		;  AND STORE THAT
		LSH	S,-^D<8+2>	;GET BYTES #3 AND #2
 DEL 16/70	;10C69
		HLRZ	S,1(T4)		;GET BYTES #1 AND #0
		IDPB	S,T2		;STORE #0
		LSH	S,-^D8		;SHIFT #1 DOWN
		IDPB	S,T2		;  AND STORE THAT
 INS 28/70	;10C70
	>
	IFN FTUBLT,<
		IBP	T2		;POINT TO WORD CONTAINING FIRST BYTE
		MOVEI	T2,@T2		;RESOLVE ANY INDEXING, ETC
		HRLI	T2,1(T4)	;POINT TO FIRST DATA WORD OF MESSAGE
		SOS	T3		;ROUND BYTE COUNT AND CONVERT TO WDS (+3 -4)
		LSH	T3,-2		;BYTES - WORDS
		ADDI	T3,(T2)		;END ADDRESS
		BLTUB	T2,(T3)		;MOVE MESSAGE TRANSLATED. (MAYBE FEW EXTRA)
	>
 REP 33/70	;10C71
		PJRST	RCVBUF		;FINALLY REQUEUE THIS KDL BUFFER
	;	PUSHJ	P,RCVBUF	;TRY TO QUEUE ANOTHER RECEIVE BUFFER
	;	MOVSI	T1,(KDSACK)	;NOW FOR THE SAKE OF THE DMC-11,
	;	IORM	T1,KDLSTS(F)	; TRY TO SEND AN ACK IMMEDIATLY
	;	PJRST	XMTBUF		; SO IT CAN FREE IT'S BUFFERS
 WIT
		PUSHJ	P,RCVBUF	;TRY TO QUEUE ANOTHER RECEIVE BUFFER
		MOVSI	T1,(KDSNAK)	;NO POINT ANY MORE
		ANDCAM	T1,KDLSTS(F)	;...
		MOVSI	T1,(KDSACK)	;SEND AN ACK WHEN XMITTER IS IDLE
		IORM	T1,KDLSTS(F)	;TO ALLOW REMOTE TO FREEE BUFFERS & FILL PIPE
		PJRST	XMTBUF		;ANY DATA MESSAGE 'IMPLIED ACK' WILL CANCEL
 REP 1/72	;10C72

	;FROM ABOVE.  HERE TO CONSTRUCT THE BDL AND QUEUE THE BUFFER-IN TRANSACTION

		MOVEI	T1,4(P4)	;GET START OF DATA MESSAGE AREA
		SUBI	T1,(F)		;CONVERT TO OFFSET ON PAGE
		LSH	T1,2		;CONVERT FROM WORDS TO BYTES
		ADD	T1,KDLADR(F)	;CONVERT PAGE OFFSET TO UNIBUS ADDR
		MOVEI	T2,-20(T1)	;SAVE ADDR OF BDL FOR LATER
 WIT
	;FROM ABOVE.  HERE TO CONSTRUCT THE BDL AND QUEUE THE BUFFER-IN TRANSACTION

		MOVEI	T1,3(P4)	;GET START OF DATA MESSAGE AREA
		SUBI	T1,(F)		;CONVERT TO OFFSET ON PAGE
		LSH	T1,2		;CONVERT FROM WORDS TO BYTES
		ADDI	T1,2		;STARTS AT 3+1/2 WDS SO USER DATA IS WORD
					;ALIGNED & CAN UBABLT
		ADD	T1,KDLADR(F)	;CONVERT PAGE OFFSET TO UNIBUS ADDR
		MOVEI	T2,-16(T1)	;SAVE ADDR OF BDL FOR LATER
 DEL 1/73	;10C73

 REP 1/74	;10C74

	XMTSTR:	MOVEI	T1,%START	;GET THE START MESSAGE TYPE
		MOVSI	T2,(KDSSTR)	;GET THE "BIT TO CLEAR"
 WIT
	XMTSTR:	MOVEI	T1,%START	;GET THE START MESSAGE TYPE
		MOVSI	T2,(KDSSTR)	;GET THE "BIT TO CLEAR"
		DPB	T2,KDLTIM##	;START THE TIMER
 INS 9/74	;10C75
		DPB	T2,KDLTIM##	;START THE TIMER
 INS 14/74	;10C76
		DPB	T2,KDLTIM##	;START THE TIMER
 REP 19/74	;10C77
	XMTNAK:	MOVEI	T1,%NAK		;GET THE NAK MESSAGE TYPE
 WIT
	XMTNAK:	MOVSI	T1,(KDSACK)	;IF ACK QUEUE'D TOO
		TDNE	T1,KDLSTS(F)	;I'M VERY CONFUSED
		 PUSHJ	P,NTDSTP##	;SO I'D BETTER QUIT
		MOVEI	T1,%NAK		;GET THE NAK MESSAGE TYPE
 DEL 1/76	;10C78

 DEL 1/77	;10C79

 REP 40/80	;10C80


 WIT
 REP 52/80	;10C81
		BLT	T1,(T2)		;COPY THE DATA
	;	JRST	XMTXIT		;GO SWAP THE BYTES AND SEND THE MESSAGE
 WIT
	IFE FTUBLT,<
		BLT	T1,(T2)		;COPY THE DATA
	;	JRST	XMTXIT		;GO SWAP THE BYTES AND SEND THE MESSAGE
	>
	IFN FTUBLT,<
		BLTBU	T1,(T2)		;COPY AND SWAP IN ONE SWELL FOOP
		JRST	XMTDON		;DONE
	>
 REP 5/81	;10C82

	XMTXIT:	MOVNI	T1,3(T3)	;GET MINUS THE NUMBER OF BYTES (ROUND UP)
 WIT
	;
	;DECNET MESSAGES CAN COME AS CHAINED MSDS OF ODD BYTE LENGTHS, AND
	;ANF MESSAGES CAN HAVE CONVERSION.  SO UBABLT HAS TO WAIT TILL NOW, 
	;WHEN THE DATA IS IN A FINAL FORM, AND THE START IS WORD-ALIGNED.

	XMTXIT:
	IFE FTUBLT,<
		MOVNI	T1,3(T3)	;GET MINUS THE NUMBER OF BYTES (ROUND UP)
 REP 21/81	;10C83
	;HERE TO WRITE THE BUFFER DESCRIPTOR HEADER

		LDB	T1,KDLSTA##	;GET STATE (MAINT OR NOT) WE USE IT A LOT
 WIT
	>
	IFN FTUBLT,<
		MOVEI	T1,3(T3)	;GET THE NUMBER OF BYTES, ROUND UP
		ASH	T1,-2		;CONVERT TO A -10 WORD COUNT
		ADDI	T1,6(P4)	;SKIP THE BUFFER DESCRIPTIOR, PT TO USER DATA
		MOVEI	T4,6(P4)	;T1 HAS THE END ADDR +1, T4 THE START
		HRLI	T4,0(T4)	;THIS BLT GOES IN PLACE (SET SOURCE)
		BLTBU	T4,-1(T1)	;DO THE SWAP
	>
	;HERE TO WRITE THE BUFFER DESCRIPTOR HEADER

	XMTDON:	LDB	T1,KDLSTA##	;GET STATE (MAINT OR NOT) WE USE IT A LOT
 INS 34/82	;10C84
		MOVSI	S,(KDSACK)	;NO NEED TO ACK
		CAIE	T1,KD%MAI	;AT LEAST IF A DATA MESSAGE
		 ANDCAM	S,KDLSTS(F)	;BECAUSE THE RESP IS JUST AS GOOD
					;NOTE: RH OF S IS STILL ZERO
 INS 41/82	;10C85
	;TIMER
		SETZ	S,		;PREPARE TO START TIMER
		LDB	T1,KDLTIM##	;IF IT'S RUNNING
		CAIN	T1,KD%MXT	;WE DON'T CHANGE IT
		 DPB	S,KDLTIM##	;IT'S NOT, START IT
					;IT'S OK NOT TO CHECK MAINT - TIMER IS IGNORED
 DEL 1/83	;10C86

 DEL 1/86	;10C87

 DEL 1/89	;10C88

 REP 23/89	;10C89
			 JRST .+1]	;RETURN TO MAIN LINE CODE
 WIT
			 JRST CHKAC1]	;RETURN TO MAIN LINE CODE
 DEL 1/90	;10C90

 REP 8/90	;10C91
	CHKAC1:	LDB	T1,BYTABL+3	;GET THE ACK FIELD OF THE MESSAGE
 WIT
	CHKAC1:	LDB	T1,BYTABL+5	;GET THE ACK FIELD OF THE MESSAGE
 DEL 1/91	;10C92

 REP 27/91	;10C93
		DPB	T1,KDLTIM##	;RESTART REP TIMER
		POPJ	P,
 WIT
		PUSHJ	P,STPTMR	;STOP THE TIMER, THERE'S NOTHING OUTSTANDING
		POPJ	P,
 DEL 1/93	;10C94

 DEL 1/94	;10C95

 DEL 1/95	;10C96

 DEL 1/96	;10C97

 INS 31/96	;10C98
		MOVSI	T1,(KDSACK)	;NO POINT IN ACKING...
		ANDCAM	T1,KDLSTS(F)	; WHEN WE'RE NAKING
 DEL 1/98	;10C99

 DEL 1/99	;10C100

 DEL 1/100	;10C101

 DEL 1/101	;10C102

 DEL 1/103	;10C103

 INS 33/105	;10C104
 INS 52/105	;10C105
	;STPTMR ROUTINE TO STOP THE DDCMP TIMER

	STPTMR:	SETO	T1,		;STOP TIMER
		HRRZ	T2,KDLUSR(F)	;CHECK FOR ANF CROCK
		CAIN	T2,DD.ANF	;BECAUSE IT WANTS TO
		 SETZ	T1,		;IDLE REPS, SO WE JUST RESTART TIMER
		DPB	T1,KDLTIM##	;WHATEVER
		POPJ	P,
 DEL 1/106	;10C106

 DEL 1/107	;10C107

 REP 24/107	;10C108
	;	POINT	8,1(T4),35	;SEVENTH BYTE (BCC.  NOT USED)
	;	POINT	8,1(T4),27	;EIGHTH BYTE (BCC.  NOT USED)
 WIT
		POINT	8,1(T4),35	;SEVENTH BYTE
		POINT	8,1(T4),27	;EIGHTH BYTE
 SUM 144375