/LPT HANDLER FOR USE WITH KL8JA CARD WITH DEVICE CODE=15 /MODIFIED FROM DECUS 8-694 /EMULATES THE LP08 LINE PRINTER ON SERIAL PRINTER. HANDLES /TABS, LINE OVERFLOW (72 CHARACTERS), FORM FEEDS, AND /AUTOMATIC PAGING. VERTICAL TAB GENERATES A SINGLE CR/LF. /THERE ARE NO ERRORS - AN ATTEMPT TO READ FROM THE LPT: /RESULTS IN AN IMMEDIATE EXIT WITHOUT ERROR. AUTOMATIC /PAGING IS AT 62 LINES. /HEADER BLOCK *0 -1 /ONLY 1 DEVICE DEVICE LTY; DEVICE LPT; 1040; 0000; ZBLOCK 2 *200 PSF=6151 PLS=6156 LPT, 0 /ENTRY HERE CLL CML CLA RAR /SET AC TO 4000, LINK TO 0 TAD I LPT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED LPT215, AND LP7700 /MASK FUNCTION WORD TO GET CMA / WORD COUNT DCA LPTWC LPT214, RDF /SET UP RETURN TAD LPTCIF / BY FORMULATING A 'CDI' DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE TAD I LPT /RECALL THE FUNCTION WORD TO GET AND LPT70 / DATA FIELD BITS TAD LPCDF0 /FORMULATE THE DATA FIELD DCA LPTCDF /NOTE!!!!!!!! LP7700, 7700 /MUST BE AT LOC. 15 OF PAGE! ISZ LPT /GET NEXT ARG. TAD I LPT /STARTING ADDRESS OF DATA DCA LPTCA ISZ LPT /NEXT ARG. TAD I LPT /BLOCK NO. - GENERATE FF FIRST ENTRY LPTCDF, HLT /'CDF' OVERLAID HERE ISZ LPT /MOVE PAST LAST ARG. SNL /IF LINK NOT SET, READ REQUESTED JMP LPRTRN /READ WANTED - EXIT NOW SNA CLA /IS THIS FIRST ENTRY? TAD LPT214 /YES - LOAD A FF TO INITIALIZE JMP LPTKLG /BY-PASS UNPACKING AND JUMP IN /NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT. /TEST FOR:TABS, LINE FEEDS,VERTICAL TABS, FORM FEEDS. LPTLP, TAD I LPTCA /GET FIRST CHAR. OF 1-2-3 JMS LPTPCH /PRINT IT OR WHATEVER TAD I LPTCA /GET LEFT 4 BITS OF 3RD CHAR. AND LP7400 DCA LPTCDF /LOCATION NOW AVAILABLE FOR TEMP. ISZ LPTCA /NEXT WORD LP7400, 7400 /EFFECTIVE NOP WHEN EXECUTED TAD I LPTCA /GET 2ND CHAR. JMS LPTPCH /DO ITS THING TAD I LPTCA /NOW GET REST OF 3RD CHAR. AND LP7400 CLL RTR /ASSEMBLE THE TWO 4 BITS LPTLF, RTR TAD LPTCDF RTR RTR ISZ LPTCA /NEXT WORD LPTKLG, JMS LPTPCH /LET IT DO ITS THING LPT177, 177 /EFFECTIVE NOP AS AC IS CLEAR ISZ LPTWC /ANY MORE DATA? JMP LPTLP /YES - GO FOR MORE LPRTRN, ISZ LPT /NO - MOVE PAST ERROR RETURN LPTXIT, HLT /OVERLAID WITH THE PROPER 'CDI' JMP I LPT /HOME LPTWC, 0 /WORD COUNT LPTCA, 0 /CURRENT DATA ADDRESS LPTPCH, 0 /SUB. TO SCREEN FOR SPECIAL CHAR. AND LPT177 /KEEP ONLY THE GOOD THINGS CIA /SCREENS OUT 'ESCAPE' & 'RUBOUT' CLL CML TAD LPT175 SZL SNA /JUMP OUT ON CODES 176-177 JMP LPM140 TAD LPM143 /CHECK FOR CTRL/Z SNA /GOT IT? JMP LPRTRN /YES - EXIT (SORRY NO ROOM FOR TAD LPTM15 / CLOSING FF) CLL CML CMA /SET UP TO TRAP CODES 211-216 TAD LPT7 / AND JMP OUT WITH A CONSTANT SNL SZA / IN THE AC JMP LPTCTL / AC=1 FOR TAB, 2 FOR LF, ETC. TAD LPT7 /RESTORE THE INITIAL CODE JMS LPWAIT /PRINT THE CHAR. LPTJMP, JMP LPJTAB-2 /LPJTAB-2 = "JMP I LPTPCH" LPWAIT, 0 /PRINT ROUTINE PLS LP7600, 7600 /DOES A CLA TAD LP7600 /CHECK KB FOR CTRL/C KRS TAD LPT175 SNA CLA /GOT IT? KSF /YES - EXIT TO MONITOR JMP .+3 /NO - GO ON LPTCIF, CDF CIF 0 /OUT TO FIELD 0 - 7600 JMP I LP7600 PSF /WAIT FOR PRINTER TO FINISH JMP LP7600 /KEEP CHECKING WHILE YOU WAIT LPWISZ, ISZ LPLPTR /IS LINE FULL? JMP I LPWAIT /NO - GO FOR MORE LPLF, TAD LPM112 /RESET CHAR. COUNT TO 74 (CR/LF INCL.) DCA LPLPTR TAD LPT215 /LP08 DOES A CR/LF ON LF - IGNORES CR JMS LPWAIT TAD LPTLF JMS LPWAIT ISZ LPTLC /62 LINES YET? SKP /NO - FALL THRU LPTCTL & RETURN JMP LPTFF /YES - FEED A FORM LPTCTL, TAD LPTJMP DCA .+1 /SETS UP FOR SPECIAL CHAR. LPTXXX, HLT / ROUTINE JMP LPTTAB, TAD LPM140 /HORIZONTAL TABS JMS LPWAIT TAD LPLPTR AND LPT7 SNA CLA JMP I LPTPCH /MUST BE AT LPJTAB-2!! LPT7, 7 LPJTAB, JMP LPTTAB JMP LPLF JMP LPLF /SORRY - NO ROOM FOR USUAL 9 LF'S JMP LPTFF LPM140, -140 /CLA WHEN EXECUTED (7640) LPT70, 70 /NOP WHEN EXEC. JMP I LPTPCH /END OF CHARACTER HANDLING ROUT. LPTM15, -15 LPT175, 175 LPM143, -143 LPCDF0, CDF 0 LPLPTR, 0 /LINE CHARACTER COUNT LPM112, -112 /74 CHAR. LINES - INCLUDES CR/LF LPTFF, TAD LPTLC /MAKE UP TOTAL OF 62+3+1 LINES TAD M3 / FOR 11 INCHES DCA LPLPTR /LOAD CHAR. COUNT WITH REMAINING TAD M77 /RE-INITIALIZE THE LINE COUNT DCA LPTLC TAD LPTLF /SET UP FOR REPEATED LF'S JMS LPWAIT /WAIT FOR CHAR. COUNT TO OVERFLOW JMP .-2 / AND TAKE OVERFLOW EXIT / WHICH FEEDS 1 MORE LINE! LPTLC, 0 /LINE COUNT - FIRST FF ADVANCES / ONLY 4 LINES M3, -3 M77, -77 /LINE COUNT TRIPS AT 62 / INITIALIZED AT 63 AS FINAL / LF OF FF DROPS COUNT $$$$$