/******** MULTI8 PAPERTAPE READER DRIVER ******** /LAST EDIT: 25-AUG-75, ELC PRTMP, "P^100+"R&3777 201 /CONNECTED TO PAPARTAPE READER INT'S PRQPTR, PTR /DEVICE NUMBER PAPERTAPE READER PRINT /INTERRUPT ENTRYPOINT QPRLOOP,PRLOOP+1 0 PR, DCA ZTEM1 //REQUEST ADDRESS TAD QPRLOOP DCA PRGET //INITIALISE CO-ROUTINES AC4000 TAD I ZTEM1 //SET LINK IF WRITE AND C3700 CIA DCA PRWC TAD I ZTEM1 AND C70 TAD C6201 DCA PRCDF //DATAFIELD OF BUFFER ISZ ZTEM1 TAD I ZTEM1 DCA PRCA //ADDRESS OF BUFFER TAD MYCDF DCA PRFLD CDTOIF CIF MONFLD JMS I ZRESERV JMS ALARM /NOT SLOT AVAILABLE ! JMS MONITOR RETURN CONTINUE DCA PRSLOT SZL JMP PRERR1 /CAN'T WRITE ON PR ! 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 TAD (232 /A ^Z TO CLOSE THE FILE DCA I PRCA /MAYBY WE LOSE A CHAR OR TWO TAD (EOMERR-HRDERR /SIGNAL END-OF-MEDIUM 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 PRGET, PRLOOP+1 ///CO-ROUTINE ! RFC CDF CIF MONFLD 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 MONFLD JMS I ZSOFINT PRWC, 0 ///THE WORDCOUNT SHOULD BE ZERO NOW ! PRCA, 0 PRCHAR, 0 $