File: TTRP.PA of Tape: Various/System-Tapes/s5
(Source file text) 

/TTY EXTRA READER/PUNCH : TTR,TTP
/W.V.D.MARK, FEB 1977

/DEVICE CODES OF FOREGROUND TERMINAL:
/ONLY USED WHEN NO FOREGROUND!!

	RSF1=6331	/KSF
	RRB1=6334	/KRS
	RFC1=6332	/KCC
	PSF1=6341	/TSF
	PLS1=6346	/TLS

	*0
	-2	/TWO DEVICES
	DEVICE	TTRP
	DEVICE	TTP
	1002
	PTP-200
	0
	0
	DEVICE	TTRP
	DEVICE	TTR
	2001
	PTR-200
	0
	0
	*200

PTP,	60		/VERSION 0
	CLA CLL CML	/SET LINK ON TO INDICATE PUNCH
	JMS PSETUP	/DO COMMON CRAP
PTPLP,	TAD I PTPCA
	JMS PTPPCH	/FIRST CHAR IN LOW ORDER 8 BITS OF WORD 1
	DCA PTR
	ISZ PTPCA
PT7600,	7600
	TAD I PTPCA
	JMS PTPPCH	/SECOND CHAR IN LOW ORDER 8 BITS OF WORD 2
	CLL RTR
	RTR
	TAD PTR
	RTR
	RTR	/THIRD CHARACTER NOW IN AC
	JMS PTPPCH
PTPEND,	ISZ PTPCA
PT70,	70	/JUST IN CASE WERE PUNCHING PG 7600 KEEP THIS LITERAL HERE
	KSF
	JMP PTPISZ	/KEYBOARD FLAG OFF - DON'T WORRY ABOUT ^C
PTPKRS,	KRS
	AND PTP177
	TAD PTPM3
	SZA CLA	/IS THERE A ^C IN THE TTY BUFFER?
	JMP PTPISZ	/NO
PTPCIF,	CDF CIF 0
PT7700,	7700		/AC=0; NO SKIP ON SMA CLA. DON'T MOVE!!!
	JMP I	PT7600

PSETUP,	0
	RDF	/GET FIELD OF CALLING PROGRAM
	TAD PTPCIF
	DCA PTPXIT	/SET UP RETURN SEQUENCE
	TAD I PTP
	AND PT70
	TAD PCDF
	DCA PTPCDF
	RAR		/GET LINK(1=PTP,0=PTR)
	TAD I PTP	/GET FUNCTION WORD
	ISZ PTP
	SPA		/CHECK CORRECT MODE
	JMP PTPERR	/SIGNAL "UNRECOVERABLE DEVICE ERROR"
PTP232,	AND PT7700	/*K*
	CMA		/SET UP -(WORD COUNT)/2-1
	DCA PTPWC
	TAD I PTP	/SET UP STARTING ADDRESS
	ISZ PTP
	DCA PTPCA
	TAD I PTP
PTPCDF,	0		/SET DATA FIELD TO ACCESS BUFFER
	PTPEOF=PTPCDF
	SNA CLA
	SZL
	JMP PTPKRS
	TAD PTP336	/INPUT INITIALIZATION - TYPE "^" AND WAIT
	TLS
	KSF
	JMP .-1
	JMS PTRGCH	/INITIALIZE THE PTR BUFFER CHAR
	6032		/CLEAR AC AND KEYBOARD FLAG
	JMP PTPKRS	/CHECK FOR ^C
PTPISZ,	ISZ PTPWC
	JMP I PSETUP	/LOOP FOR BUFFER SIZE (128 WORDS)

PTPRTN,	TAD PTPEOF
	SZA CLA		/DID WE RUN OUT OF TAPE?
PTPERR,	ISZ PTP		/SIGNAL A "PERMANENT I/O ERROR" ON THE DEVICE
	ISZ PTP
PTPXIT,	HLT	/EXIT CDF GOES HERE
	JMP I PTP

PTPPCH,	0
	PLS1	/NOTICE THE GLORIOUS LACK OF OVERLAP
	PSF1
	JMP .-1
	AND PT7400
	JMP I PTPPCH
PTR,	60		/VERSION 0
	CLA CLL
	TAD PTR
	DCA PTP
	JMS PSETUP	/SET UP ADDRESS, COUNT, FIELDS
PTRLP,	JMS PTRGCH	/READ FIRST CHARACTER OF 3
	DCA I PTPCA
	JMS PTRGCH
	DCA PTPPCH
	JMS PTRGCH
	RTL
	RTL
	AND PT7400
	TAD I PTPCA
	DCA I PTPCA	/HIGH ORDER 4 BITS INTO WORD 1
	TAD PTR		/GET THE CHAR FROM THE PTR BUFFER
	BSW
	RTL		/PUT THE LOW ORDER BITS INTO AC 0-3
	AND PT7400
	TAD PTPPCH
	ISZ PTPCA
PT7400,	7400
	DCA I PTPCA	/LOW ORDER 4 BITS INTO WORD 2
	JMP PTPEND
PTPCA,	0
PTRGCH,	0
	TAD PTPEOF
	SNA CLA
	JMP PTRBF0	/ZERO OUT BUFFER
	RFC1
	CLA CLL CMA RTL	/-3
	DCA PTPEOF
	DCA	PTPTIM
PTTIME,	ISZ	PTPTIM
	JMP	PGCHLP
	ISZ PTPEOF	/THIS LOOP OVERFLOWS IN APPROX. 200 MS 
	JMP PGCHLP	/ON A PDP-8/E
	TAD PTP232	/SEND ^Z TO BUFFER
PTRBF0,	DCA PTR
	JMP PTRXX	/AND 0 GARBAGE CHARACTER
PGCHLP,	TAD PTPTMP
	DCA PTR
PTP336,	336		/FALL THROUGH CONSTANTS TO STALL FOR TIME
PTP177,	177
	RSF1
	JMP PTTIME	/READER NOT READY - CHECK TIMING
	RRB1		/READER READY - READ CHAR
PTRXX,	DCA PTPTMP	/BUFFER READER BY ONE CHARACTER TO ELIMINATE
	TAD PTR		/GARBAGE CHARACTER AT END OF TAPE
	JMP I PTRGCH	/AND RETURN

PCDF,	CDF 0
PTPTMP,	0
PTPTIM,	0
PTPWC,	0
PTPM3,	-3

	$-$-$