File: PR.TK of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text) 

/PR.TK 14-FEB-79
PRTMP,	"P^100+"R&3777
	201		/CONNECTED TO PAPERTAPE READER INT'S
PRQPTR,	PTR		/DEVICE NUMBER PAPERTAPE READER
	PRINT		/INTERRUPT ENTRYPOINT
QPRLOOP,PRLOOP+1
TEM1,	0
PR,	SNA		//CLOSE ?
	 JMP PRCLOSE	//YES
	DCA TEM1	//REQUEST ADDRESS
	TAD QPRLOOP
	DCA PRGET	//INITIALISE CO-ROUTINES
	JMS MONITOR
	   RESERV RETURN CONTINUE
	DCA PRSLOT
	TAD I TEM1	//GET FUNCTION WORD
	SPA		/READ OR WRITE ?
	 JMP PRERR1	/CAN'T WRITE ON THE READER
	AND C3700	/EXTRACT FIELD BITS
	CIA
	DCA PRWC
	TAD I TEM1
	AND C70
	TAD C6201
	DCA PRCDF	//DATAFIELD OF BUFFER
	ISZ TEM1
	TAD I TEM1
	DCA PRCA	//ADDRESS OF BUFFER
	TAD MYCDF
	DCA PRFLD
RETRY,	RFC
	TAD (-DGNTICK%2!4000	/HALF SECOND TIMEOUT
	JMS MONITOR
	   WAIT
	   PTR
	SNA CLA
	 JMP PRRTRN	/ALL DONE
	ISZ PRRETR	/RETRY AGAIN ?
	 JMP RETRY	/YES, START TAPE AGAIN
	TAD PRCDF
	DCA .+1
	HLT		/'CDF TO BUFFER FIELD
	DCA I PRCA	/ZERO THE REST OF THE BUFFER
	ISZ PRCA
	DCA I PRCA	/(MAYBE WE LOSE THE LAST FEW CHARACTERS)
	ISZ PRCA
	ISZ PRWC
	 JMP .-5
	TAD (EOMERR-HRDERR
PRERR1,	TAD (HRDERR
PREXIT,	JMS MONITOR
	   SIGNAL HALT CLEAR SWPOUT
PRSLOT,	   0
PRRETR,	-3		/RETRY COUNT

PRRTRN,	TAD PRSLOT
	DCA PRSLT1
	JMS MONITOR
	   SIGNAL HALT RELEASE
PRSLT1,	   0

PRCLOSE,	ACM1
	JMS MONITOR
	   EXIT SWPOUT

PRGET,	PRLOOP+1	///CO-ROUTINE !
	RFC
	CDF CIF 00
	TAD (-DGNTICK%2!4000 ///RESET TIMEOUT COUNTER
	DCA I (PTR^2+HRDLST ///RESET TIMEOUT
	ACM3
	DCA PRRETR	///RESET RETRY COUNTER
	JMP I ZFSTEXT

PRINT,	CLA CLL		///INTERRUPT ENTRYPOINT
	RRB		///READ CHAR
PRCDF,	CDF		///'CDF TO BUFFER FIELD
	JMP I PRGET

PRLOOP,	JMS PRGET	///GET FIRST CHARACTER
	DCA I PRCA	///STORE IN WORD 0
	JMS PRGET	///GET SECOND CHARACTER
	DCA PRTMP	///KEEP IT AT HAND
	JMS PRGET	///GET THIRD CHARACTER
	CLL RTL
	RTL
	DCA PRCHAR	///LEFT JUSTIFIED
	TAD PRCHAR
	AND (7400	///UPER FOUR BITS GO ALONG
	TAD I PRCA	///WITH FIRST
	DCA I PRCA	///INTO THE BUFFER AT WORD 0
	TAD PRCHAR
	CLL RTL
	RTL
	AND (7400	///NEXT FOUR BITS OF THIRD
	ISZ PRCA	///CHARACTER GO ALONG
	TAD PRTMP	///WITH SECOND CHARACTER INTO
	DCA I PRCA	///SECOND WORD OF BUFFER
	ISZ PRCA	///BUMP CURRENT ADDRESS POINTER AND
	ISZ PRWC	///DOUBLE WORD COUNTER. DONE ?
	 JMP PRLOOP	///NO, DOE ANOTHER THREE CHAR'S
	TAD PRQPTR	///YES, INTERRUPT TASKS PART AT PTR SLOT
PRFLD,	CDF		///'CDF TO THIS FIELD
	CIF 00
	JMS I ZSOFINT
PRWC,	0		///THE WORDCOUNT SHOULD BE ZERO NOW !
PRCA,	0
PRCHAR,	0

$