/ INTERPROCESSOR BUFFER HANDLER FOR PDP8/L / FILE: IPB.PA / WITH DB08 / RON LARKIN MARCH 1977 / MODIFIED FROM HIGH-SPEED READER/PUNCH HANDLER PBNF=6662 PBRD=6666 *0 -2 DEVICE DBO8;DEVICE PTP;1020;0;ZBLOCK 2 DEVICE DBO8;DEVICE IPB;2010;IPB&177;ZBLOCK 2 PTVERSION="A&77 *200 /PACKS 3 CHARACTERS IN 2 WORDS ON INPUT, UNPACKS ON OUTPUT /PAGE RELOCATABLE PTP, PTVERSION 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 IPB ISZ PTPCA PT7700, 7700 TAD I PTPCA JMS PTPPCH /SECOND CHAR IN LOW ORDER 8 BITS OF WORD 2 CLL RTR RTR TAD IPB 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 JMP I .+1 7600 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=IPB) TAD I PTP /GET FUNCTION WORD ISZ PTP SPA /CHECK CORRECT MODE JMP PTPERR /SIGNAL "UNRECOVERABLE DEVICE ERROR" AND PT7700 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 CLA 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? ISZ PTP ISZ PTP PTPXIT, HLT /EXIT CDF GOES HERE JMP I PTP PTPPCH, 0 PLS /NOTICE THE GLORIOUS LACK OF OVERLAP PSF JMP .-1 AND PT7400 JMP I PTPPCH PTPCA, 0 IPB, PTVERSION / CLA CLL IAC DCA SW /WHEN CLEARED, INDICATES EOF TAD IPB DCA PTP JMS PSETUP /SET UP ADDRESS, COUNT, FIELDS IPBLP, JMS IPBGCH /READ FIRST CHARACTER OF 3 DCA I PTPCA JMS IPBGCH DCA PTPPCH JMS IPBGCH RTL RTL AND PT7400 TAD I PTPCA DCA I PTPCA /HIGH ORDER 4 BITS INTO WORD 1 TAD IPB /GET THE CHAR FROM THE IPB BUFFER RTR RTR RAR /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 IPBGCH, 0 CLA TAD SW /RETURN A 0 IF ^Z HAS BEEN SEEN SNA CLA JMP DONE PBNF JMP .-1 /READER NOT READY - CHECK TIMING PBRD /READER READY - READ CHAR NOP DCA IPB TAD IPB /CHECK FOR ^Z TAD (-232 SNA CLA DCA SW /WE HAVE EOF DONE, TAD IPB JMP I IPBGCH /AND RETURN PTPERR, CLA CLL CML RAR /SIGNAL A "PERMANENT I/O ERROR" ON THE DEVICE JMP PTPXIT-2 PCDF, CDF 0 PTPTMP, 0 PTPWC, 0 PTPM3, -3 SW, -1 PTP336, 336 /FALL THROUGH CONSTANTS TO STALL FOR TIME PTP177, 177 $$$$$$$$