;<134-TENEX>FILTTY.MAC;15    28-APR-75 11:38:44    EDIT BY CLEMENTS
;<134-TENEX>FILTTY.MAC;14    24-APR-75 14:19:32    EDIT BY CLEMENTS
;<TENEX-132>FILTTY.MAC;13     9-NOV-73 19:57:16	EDIT BY CLEMENTS
; NTTYS TO NVTLO
;<TENEX-132>FILTTY.MAC;12    13-JUN-73 21:37:18	EDIT BY CLEMENTS
;<DLM/TEMP>FILTTY.MAC;11    19-OCT-72 19:57:41	EDIT BY TOMLINSON
;<FILESYSTEM>FILTTY.MAC;10    25-AUG-72 17:49:32	EDIT BY TOMLINSON
;<FILESYSTEM>FILTTY.MAC;9    29-JUN-72 10:11:50	EDIT BY TOMLINSON

	SEARCH	STENEX,PROLOG
	TITLE	FILTTY
	USE	SWAPPC

EXTERN	PBYTPO,PBYTSZ
EXTERN	SAVAC,RESAC,CHKDEV,CAPENB
EXTERN	CPOPJ,SKPRET
EXTERN	CTRLTT		; Controlling tty
EXTERN	TCI,TCIB	; Character type in routine
EXTERN	TCO,TCOB	; Character type out routine
EXTERN	TTFORK		; Lh ==> job to which tty is assigned
EXTERN	JOBNO		; Current job number
IFDEF NETN,<EXTERN NVTDET>

; tty dispatch table

TTYDTB::TTYSET
REPEAT OPEND-1,<CPOPJ>
	TTYOPN
	TTYIN
	TTYOUT
	TTYCLZ
	REPEAT SDSTD-CLOSD,<CPOPJ>

TTYSET:	TEST(O,NVERF,NNAMF)
	POPJ P,

TTYIN:	CAIL JFN,400000		; Real jfn?
	 JRST TTYINX		; No
	LDB B,[POINT 4,STS,35]
	JUMPE B,[LDB B,PBYTSZ
		CAIE B,8
		JRST .+2
		JRST .+3]
	CAIE B,10
TTYINX:	SKIPA B,[TCI]
	MOVEI B,TCIB
	PUSHJ P,SAVAC
	HLRZ 2,DEV
	PUSHJ P,@B-NSAC+1(P)
	MOVEM 1,A-NSAC+1(P)
	PUSHJ P,RESAC
	CAIL JFN,400000
	 POPJ P,
	HLLZ B,FILBYT(JFN)
	TLZ B,770000
	HRRI B,A
	LDB A,B
	POPJ P,

TTYOUT:	CAIL JFN,400000
	 JRST TTYOUX
	HLLZ B,FILBYT(JFN)
	TLZ B,770000
	HRRI B,A
	LDB A,B
	LDB B,[POINT 4,STS,35]
	JUMPE B,[LDB B,PBYTSZ
		CAIE B,8
		JRST .+2
		JRST .+3]
	CAIE B,10
TTYOUX:	SKIPA B,[TCO]
	MOVEI B,TCOB
	PUSHJ P,SAVAC
	HLRZ B,DEV
	PUSHJ P,@B-NSAC+1(P)
	PUSHJ P,RESAC
	POPJ P,

TTYOPN:	HLRZ B,DEV		; Get tty line number
	HLRZ C,TTFORK(B)	; Get job to which tty is assigned
	MOVE A,CAPENB
	TRNN A,WHEEL!OPR
	CAMN C,JOBNO		; Is assigned to this job?
	JRST TTYOP1
	MOVEI A,OPNX7
	CAIE C,777777		; Or not assigned?
	POPJ P,			; No. fail
	MOVE C,JOBNO
	HRLM C,TTFORK(B)
TTYOP1:	TEST(ZE,RNDF)		;TURN APPENDING INTO WRITING
	TEST(O,WRTF)		; ..
	TEST(O,SIZF)
	JRST SKPRET

TTYCLZ:	HLRZ B,DEV
	HLRZ A,TTFORK(B)
	CAME B,CTRLTT
	CAME A,JOBNO
	JRST SKPRET
	MOVEI A,400000(B)
	PUSHJ P,CHKDEV
	 POPJ P,
	TLNE C,(1B6)
	JRST SKPRET
	HRROS TTFORK(A)
IFDEF NETN,<
	HRRZ B,A
	CAIL B,NVTLO
	PUSHJ P,NVTDET>
	JRST SKPRET

	END

