/PRINTER & PLOTTER HANDLER ADCOM X80SP / PLOTTER HANDLER CONVERTS [ INTO DC3 AND ] INTO DC1 / X80SP HANDLES HT,VT,CR,LF,FF / HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) COMMANDS FROM X80SP. / SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER. / ALL CONTROL CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE X80SP. / JOHANN J. ANDRES UNIVERSITY GOETTINGEN / / H.A. 10.DEC.1981 REV 0.0 / H.A. 4. APR.1982 REV 1.0 INSERTS [ --> DC3 AND ] --> DC1 / H.A. 5. OCT.1982 REV 1.1 LITTLE CHANGES SAVE 2 WORDS OF MEMORY / H.A. 10.OCT.82 REV 1.2 REMOVES POSSIBLE LISF/LIRB TIMING PROBLEMS / H.A. 26.OCT.82 REV 1.3 REMOVES FRTS PROBLEM: SOME CHARS WERE LOST / TTYDVC=03 / TTY INDVC=31 / LPT RS-232C INTERFACE OUTDVC=32 / LPT / 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 / ACL=7701 / PAL8 DOESN'T KNOW HIS COMPUTER! / MQL=7421 / / *0 / 8 WORD HANDLER BLOCK -2 / TWO UNITS DEVICE X80M DEVICE LPM 1040 LPT&177 / STARTING ADR. 0;0 DEVICE X80M DEVICE PLM 1040 / WRITE ONLY LINE PRINTER PLT&177 / STARTING ADR. 0;0 / 2 WORDS MUST BE ZERO / / *200 / START OF HANDLER PLT, 0 / ENTRY FOR PLOTTER HANDLER DCA SAC TAD PLT / HERE WE SAVE THE RETURN ADR. DCA LPT / INTO THE LPT RETURN POINT TAD TPLT / INSERT PLOTTER CALL CMD DCA TYPE JMP START LPT, 0 DCA SAC / SAVE AC TAD TLPT / INSERT LPT CALL CMD DCA TYPE TAD LP23 / SWITCH OFF THE JMS LPTPCH / PLOTTER MODE START,/ TAD SAC / RESTORE AC CLL CML CLA RAR TAD I LPT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED AND LP7700 CMA DCA LPTWC LPT214, RDF / FF CONSTANT TAD LPTCIF DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE TAD I LPT AND LPT70 TAD LPCDF0 DCA LPTCDF /GET BUFFER FIELD ISZ LPT TAD I LPT DCA LPTCA /LPTCA GETS BUFFER ADDRESS ISZ LPT TAD I LPT LPTCDF, HLT ISZ LPT 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 LPT214 / FF --> AC JMP LPTKLG /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 / BUFFER MAY BE AT FIELD BOUNDARY LPTKLG, JMS LPTPCH LPT177, 177 ISZ LPTWC JMP LPTLP LPRTRN, ISZ LPT LPTXIT, HLT JMP I LPT 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 TYPE, 0 / CHANGED AT EXECUTION TIME SEE TPLT & TLPT TAD SAC / RELOAD CHARACTER TO PRINT TAD LPM135 / TEST FOR ] SZA JMP L2 / IF ] THEN TAD LP23 / WE PRINT A DC1 JMP L4 / CONVERSION ] INTO DC3 DONE L2, TAD LPT02 SZA CLA JMP L3 / TEST [ TAD LP21 JMP L4 L3, TAD SAC / RESTORE AC 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, TAD LPOLD / LOAD THE LAST STATUS WORD LISF / IS THERE ANY NEW STATUS? SKP LIRB / IF THERE IS A NEW STATUS THEN WE READ ELSE WE TAKE THE OLD ONE DCA LPOLD / SAVE THE ACTUAL STATUS WORD TAD LPOLD / RESTORE STATUS --> AC AND LPT177 / MASK OUT 7 BITS TAD LPM23 / TEST DC3 (^S) SNA CLA JMP LP7600 / DC3 ENTERED WAIT FOR DC1 JMP I LPTPCH / DC1 OR MEANINGLESS INPUT, SO WE CONTINUE PRINTING / / TLPT, JMP L4 / LINE PRINTER HANDLER TPLT, DCA SAC / SAVE AC / SAC, 0 / ON ENTRY WE SAVE THE AC / LP7700, 7700 LPM06, -06 LP21, 21 LP23, 23 LPOLD, 1 LPM23, -23 LPT02, 02 LPWISZ, ISZ LPLPTR JMP I LPTPCH LPFLSH, LPT70, 70 LPM135, -135 LPT175, 175 LPCDF0, CDF 0 LPLPTR, 0 / $$