/PLOTTER HANDLER FOR HP 7475A / HANDLER CONVERTS \ (=0134) INTO ESC (=033) / | (=0174) INTO ETX (=03) / SUB (=032, CNTRL Z) IS TREATED AS END OF FILE / ALL OTHER CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE PLOTTER. / HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) HANDSHAKE PROCEDURE WITH HP 7475A. / SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER TO THE MONITOR. / JOHANN J. ANDRES FOR UNIVERSITY GOETTINGEN / / H.A. 3-MAY-85 REV 0.0 / H.A. 12-AUG-85 REV 0.1 / HPVER="A&77 /VERSION 0 TTYDVC=03 / TTY INDVC=33 / INPUT FROM PLOTTER OUTDVC=34 / OUTPUT TO PLOTTER XON=021 / BUFFER EMPTY MESSAGE XOFF=23 / BUFFER FULL MESSAGE / LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER LISF=10^INDVC+6001 / SKIP ON LPT FLAG LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC / / *0 / 8 WORD HANDLER BLOCK -1 / ONE UNIT DEVICE HP74 DEVICE PLT 1040 PLT&177 / STARTING ADR. 0;0 / / *200 / START OF HANDLER PLT, HPVER / ENTRY FOR PLOTTER HANDLER DCA SAC START,/ TAD SAC / RESTORE AC CLL CML CLA RAR TAD I PLT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED AND LP7700 CMA DCA LPTWC RDF TAD LPTCIF DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE TAD I PLT AND LPT70 TAD LPCDF0 DCA LPTCDF /GET BUFFER FIELD ISZ PLT TAD I PLT DCA LPTCA /LPTCA GETS BUFFER ADDRESS ISZ PLT TAD I PLT LPTCDF, HLT ISZ PLT SNL /IF LINK NOT SET,GIVE ERROR JMP LPTERR SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT JMP LPT177 TAD ("O / COME HERE IF BLOCK# EQL 0 JMS LPTPCH TAD ("E JMS LPTPCH TAD ("; JMS LPTPCH TAD (15 / CR SINCE FORTRAN OUTPUT STARTS WITH LF SOMETIMES JMS LPTPCH JMP LPT177 /NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT. / / LOOP TO PICK UP THE CHARACTERS / LPTLP, CLA TAD I LPTCA JMS LPTPCH TAD I LPTCA AND LP7400 DCA LPTCDF ISZ LPTCA LP7400, 7400 TAD I LPTCA JMS LPTPCH TAD I LPTCA AND LP7400 CLL RTR LPTLF, RTR TAD LPTCDF RTR RTR ISZ LPTCA NOP /PROTECT ISZ LPTKLG, JMS LPTPCH LPT177, 177 ISZ LPTWC JMP LPTLP LPRTRN, ISZ PLT LPTXIT, HLT JMP I PLT LPTWC, 0 LPTCA, 0 / LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN JMP LPTXIT / HOME TO MAM / / / HERE WE PRINT THE CHARACTERS / LPTPCH, 0 / AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER TAD (-134) SNA / (0134) '\' --> ESC (033) TAD (33-134) TAD (134-174) SNA / (0174) '|' --> ETX (03) TAD (03-174) TAD (174-32) SNA / ^Z (SUB) TREAT AS END OF FILE JMP LPRTRN TAD (32) L4,/ LLS / CLEAR FLAG LOAD CHARACTER & PRINT LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE JMP .-1 / ELSE WE WAIT FOR DONE FLAG LP7600, 7600 / CLA TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER KRS / OR TTY KBD INTO AC TAD LPT175 / TEST FOR ETX (^C) SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR JMP LPISF / TEST INPUT FROM PRINTER LPTCIF, CDF CIF 0 JMP I LP7600 LPISF, LIRB / READ ACTUAL LPT STATUS WORD AND LPT177 / MASK OUT 7 BITS TAD LPM23 / TEST FOR XOFF CHARACTER SZA / ZERO IF XOFF CHARACTER ENCOUNTERED JMP .+3 DCA LPOLD / XOFF CLEARS LPOLD FLAG: 0--> LPOLD JMP LP7600 / WAIT FOR XON CHARACTER CLL / CLEAR LINK FOR TAD INSTR. INSTEAD OF OR INSTRUCTION TAD LPOFON / TEST FOR XON CHARACTER TAD LPOLD / OR WITH LEADING XOFF CHARACTER SZA SZL CLA / ZERO ONLY: XON FOLLOWS XOFF CHARACTER JMP .+3 ISZ LPOLD / WE CLEAR THE XOFF FLAG 1 --> LPOLD JMP I LPTPCH / AND CONTINUE PRINTING JMP I LPTPCH / MEANINGLESS INPUT, CONTINUE PRINTING / / SAC, 0 / ON ENTRY WE SAVE THE AC HERE / LP7700, 7700 LPT70, 70 LP21, XON LP23, XOFF LPOLD, XON LPM23, -XOFF LPOFON, XOFF-XON LPT175, 175 LPCDF0, CDF 0 / $$