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 $