Google
 

Trailing-Edge - PDP-10 Archives - BB-X140B-BB_1986 - 10,7/703anf/dnrda.p11
There are 3 other files named dnrda.p11 in the archive. Click here to see a list.
.SBTTL	DNRDA - ASCII RDE DRIVERS  11 DEC 84

;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1977,1978,1979,1980,1981,1984 BY DIGITAL EQUIPMENT CORP., MAYNARD, MASS.

VRRDA=010			;FILE EDIT NUMBER

.IF NE FT.RDA


;DDB IS DEFINED IN DNTTY.P11 CAUSE IT LOOKS THE SAME (ALMOST) AS A TTY.
;
;IN FACT, RDA SERVICE IS MOSTLY DRIVEN AS A "TTY" DEVICE

RDASER:	CMP	#RDAMML,DB.MML(J)	; SEE IF MESSAGE IS TOO LONG
	BHIS	10$			; FINE
	MOV	#RDAMML,DB.MML(J)	; USE OUR LENGTH
10$:	MOVB	#B0,DB.DCM(J)		; IMAGE MODE FOR EVER
	JSR	PC,DVCCFM		; CONNECT CONFIRM IF NEEDED
	BIT	#DS.CON,(J)		; ARE WE STILL THERE ??
	BNE	20$			; YES, LETS GO TO IT
	BIC	#DS.XDS,@J		;CLEAR STATUS BIT IN CASE AUTO DIAL USING IT
	RTS	PC			; NO, THIS PACKET GETS TOSSED OUT

20$:	JSR	PC,DVXDRQ		; ASK FOR MORE DATA IF NEEDED
	BIS	#TS.IMI+TS.IMO,DB.DCS(J); REMIND ME THAT I AM IMAGE MODE
	TST	DB.OBF(J)		; DATA FROM 10??
	BNE	27$			; YES
	JMP	TTYICK			; USE DNTTY "INPUT" PROCESSING
27$:	JMP	TOGMSG			; USE DNTTY "OUTPUT" PROCESSING


;RDATIM: USES TTYTIM AND CTYTIM CODE
RDDZIN:
RDDHIN:	BIT	#DHROVR,R1		; CHECK FOR OVERRUN
	BNE	99$			; YES, DUMP CHARS
	BIT	#DHRFER,R1		; FRAME ERROR ??
	BNE	99$			; YES, DUMP THIS ONE ALSO
	JSR	PC,TTYINP		; USE TTY ROUTINE FOR TASK INTERFACE
99$:	RTS	PC			; DONE FOR NOW


RDDZOU=TTDZOU
RDDHOU=TTDHOU

.IF NE FT.TSK
.IF NE DN11N
;
;
;	ROUTINE TO SET BITS FOR AN AUTO-DIAL LINE
;
DNSTA:	BIT	#40,DB.DVT(J)	;AUTO-DIAL LINE?
	BEQ	99$		;NO
	BITB	#DNDIAL,DB.DNS(J)	;DIAL STILL IN PROGRESS?
	BNE	99$		;YES,DON'T SET STATUS YET
	MOV	@(P),R0		;GET BITS
	BIS	R0,DB.DNR(J)	;SET THE BITS IN STATUS WORD
99$:	ADD	#2,(P)		;BYPASS ARGUEMENT
	RTS	PC		;RETURN
;ROUTINE TO CHECK FOR A STATUS REQUEST IN RDXSER
;THESE REQUESTS WOULD NORMALLY BE SENT TO THE
;10 FOR TTY LINES.

RDXSTA:	BIT	#DS.XDS,@J	;NEED TO HANDLE STATUS CHANGE?
	BEQ	35$		;NO
	BIC	#DS.XDS,@J	;DON'T KEEP COMING THROUGH HERE
	BIT	#TS.DTR,DB.DCS(J)	;LINE ENABLE UP?
	BNE	40$		;YES, AUTODIAL ANSWER, OR A LINE DISCONNECT
	MOV	DB.LCB(J),R0
	CMPB	#LCS.LC,LC.STA(R0) ;LOST CARRIER?
	BEQ	45$		;YES
	CMPB	#LCS.HG,LC.STA(R0)
	BEQ	45$		;HUNG-UP
	CMPB	#LCS.RG,LC.STA(R0)
	BNE	60$		;FORGET IT RING NOT UP
	BIS	#TS.DTR,DB.DCS(J) ;WANT DTR.  WILL BE DONE BY
				;CLOCK DSR
	JSR	PC,DNSTA	;IF AUTO-DIAL,SET CALL ANSWERED
	.WORD	DNRANS
30$:	JSR	PC,WAKEPP	;WAKE THE APPROPRIATE TASKS
35$:	RTS	PC
40$:			;IF AUTO-DIAL THE CALL MAY HAVE BEEN ANSWERED
	MOV	DB.LCB(J),R0
	CMPB	#LCS.DF,LC.STA(R0) ;DIAL FAILED
	BEQ	45$		;YES
	CMPB	#LCS.LC,LC.STA(R0) ;LOST CARRIER?
	BEQ	45$		;YES
	CMPB	#LCS.HG,LC.STA(R0) ;HUNG UP
	BNE	50$		;NO
45$:	JSR	PC,DNSTA	;DROPPED CARRIER OR NEVER HAD CALL
				;ANSERED IN FIRST PLACE
	.WORD	DNRERR+DNRENC	;NO CARRIER
	BR	30$		;WAKE UP TASK
50$:	JSR	PC,DNSTA	;SET CALL ANSWERED
	.WORD	DNRANS
	BR	30$		;WAKE TASK

60$:	JSR	PC,DNSTA	;SEND DN STATUS OF AUTO DIAL LINE
	.WORD	DNRERR+DNREAD	;AUTO DIAL FAILURE
	BR 	30$		;INFORM TASK AND CONTINUE
.ENDC ;IF NE DN11N
.ENDC ;IF NE FT.TSK
.ENDC ;IF NE FT.RDA