| 1 | /PRINTER & PLOTTER HANDLER ADCOM X80SP\r |
| 2 | / PLOTTER HANDLER CONVERTS [ INTO DC3 AND ] INTO DC1\r |
| 3 | / X80SP HANDLES HT,VT,CR,LF,FF\r |
| 4 | / HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) COMMANDS FROM X80SP.\r |
| 5 | / SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER.\r |
| 6 | / ALL CONTROL CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE X80SP.\r |
| 7 | / JOHANN J. ANDRES UNIVERSITY GOETTINGEN\r |
| 8 | /\r |
| 9 | / H.A. 10.DEC.1981 REV 0.0\r |
| 10 | / H.A. 4. APR.1982 REV 1.0 INSERTS [ --> DC3 AND ] --> DC1\r |
| 11 | / H.A. 5. OCT.1982 REV 1.1 LITTLE CHANGES SAVE 2 WORDS OF MEMORY\r |
| 12 | / H.A. 10.OCT.82 REV 1.2 REMOVES POSSIBLE LISF/LIRB TIMING PROBLEMS \r |
| 13 | / H.A. 26.OCT.82 REV 1.3 REMOVES FRTS PROBLEM: SOME CHARS WERE LOST\r |
| 14 | / H.A. 17.DEC.82 NON VALID STATUS INPUT CAUSE: HLT\r |
| 15 | / H.A. 5.JAN.83 REMOVES RANDOM DATA ERROR INSERTED ON 17.DEC.82\r |
| 16 | / H.A. 27.JAN.83 XON/XOFF CHARACTER CHANGED, '['&']' CONVERSION ROUTINE IMPROVED\r |
| 17 | /\r |
| 18 | X80VER="E&77 /VERSION 4\r |
| 19 | TTYDVC=03 / TTY\r |
| 20 | INDVC=31 / LPT INTERFACE DEVICE CODE\r |
| 21 | OUTDVC=32 / LPT\r |
| 22 | XON=021 / BUFFER EMPTY MESSAGE\r |
| 23 | XOFF=23 / BUFFER FULL MESSAGE\r |
| 24 | /\r |
| 25 | LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG\r |
| 26 | LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER\r |
| 27 | LISF=10^INDVC+6001 / SKIP ON LPT FLAG\r |
| 28 | LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS \r |
| 29 | KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG\r |
| 30 | KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC\r |
| 31 | / ACL=7701 / PAL8 DOESN'T KNOW HIS COMPUTER!\r |
| 32 | / MQL=7421\r |
| 33 | /\r |
| 34 | /\r |
| 35 | *0 / 8 WORD HANDLER BLOCK\r |
| 36 | -2 / TWO UNITS\r |
| 37 | DEVICE X80S\r |
| 38 | DEVICE LP1\r |
| 39 | 1040\r |
| 40 | LPT&177 / STARTING ADR.\r |
| 41 | 0;0\r |
| 42 | DEVICE X80S\r |
| 43 | DEVICE PL1\r |
| 44 | 1040 / WRITE ONLY LINE PRINTER\r |
| 45 | PLT&177 / STARTING ADR.\r |
| 46 | 0;0 / 2 WORDS MUST BE ZERO\r |
| 47 | /\r |
| 48 | /\r |
| 49 | *200 / START OF HANDLER\r |
| 50 | PLT, X80VER / ENTRY FOR PLOTTER HANDLER\r |
| 51 | DCA SAC\r |
| 52 | TAD PLT / HERE WE SAVE THE RETURN ADR.\r |
| 53 | DCA LPT / INTO THE LPT RETURN POINT\r |
| 54 | TAD TPLT / INSERT PLOTTER CALL CMD\r |
| 55 | DCA TYPE\r |
| 56 | JMP START\r |
| 57 | LPT, X80VER\r |
| 58 | DCA SAC / SAVE AC\r |
| 59 | TAD TLPT / INSERT LPT CALL CMD\r |
| 60 | DCA TYPE\r |
| 61 | TAD (23) / SWITCH OFF THE \r |
| 62 | JMS LPTPCH / PLOTTER MODE\r |
| 63 | START,/\r |
| 64 | TAD SAC / RESTORE AC\r |
| 65 | CLL CML CLA RAR\r |
| 66 | TAD I LPT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED\r |
| 67 | AND LP7700\r |
| 68 | CMA\r |
| 69 | DCA LPTWC\r |
| 70 | LPT214, RDF / FF CONSTANT\r |
| 71 | TAD LPTCIF\r |
| 72 | DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE\r |
| 73 | TAD I LPT\r |
| 74 | AND LPT70\r |
| 75 | TAD LPCDF0\r |
| 76 | DCA LPTCDF /GET BUFFER FIELD\r |
| 77 | ISZ LPT\r |
| 78 | TAD I LPT\r |
| 79 | DCA LPTCA /LPTCA GETS BUFFER ADDRESS\r |
| 80 | ISZ LPT\r |
| 81 | TAD I LPT\r |
| 82 | LPTCDF, HLT\r |
| 83 | ISZ LPT\r |
| 84 | SNL /IF LINK NOT SET,GIVE ERROR\r |
| 85 | JMP LPTERR\r |
| 86 | SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT\r |
| 87 | JMP LPT177\r |
| 88 | TAD LPT214 / FF --> AC\r |
| 89 | JMP LPTKLG\r |
| 90 | \r |
| 91 | \f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.\r |
| 92 | /\r |
| 93 | / LOOP TO PICK UP THE CHARACTERS\r |
| 94 | /\r |
| 95 | LPTLP, CLA\r |
| 96 | TAD I LPTCA\r |
| 97 | JMS LPTPCH\r |
| 98 | TAD I LPTCA\r |
| 99 | AND LP7400\r |
| 100 | DCA LPTCDF\r |
| 101 | ISZ LPTCA\r |
| 102 | LP7400, 7400\r |
| 103 | TAD I LPTCA\r |
| 104 | JMS LPTPCH\r |
| 105 | TAD I LPTCA\r |
| 106 | AND LP7400\r |
| 107 | CLL RTR\r |
| 108 | LPTLF, RTR\r |
| 109 | TAD LPTCDF\r |
| 110 | RTR\r |
| 111 | RTR\r |
| 112 | ISZ LPTCA\r |
| 113 | NOP /PROTECT ISZ\r |
| 114 | LPTKLG, JMS LPTPCH\r |
| 115 | LPT177, 177\r |
| 116 | ISZ LPTWC\r |
| 117 | JMP LPTLP\r |
| 118 | LPRTRN, ISZ LPT\r |
| 119 | LPTXIT, HLT\r |
| 120 | JMP I LPT\r |
| 121 | LPTWC, 0\r |
| 122 | LPTCA, 0\r |
| 123 | /\r |
| 124 | LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN\r |
| 125 | JMP LPTXIT / HOME TO MAM\r |
| 126 | /\r |
| 127 | /\r |
| 128 | / HERE WE PRINT THE CHARACTERS\r |
| 129 | /\r |
| 130 | LPTPCH, 0\r |
| 131 | /\r |
| 132 | AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER\r |
| 133 | TYPE, 0 / CHANGED AT EXECUTION TIME SEE TPLT & TLPT\r |
| 134 | TAD (-135)\r |
| 135 | SNA / ']' --> DC3\r |
| 136 | TAD (23-135)\r |
| 137 | TAD (135-133)\r |
| 138 | SNA / '[' --> DC1\r |
| 139 | TAD (21-133)\r |
| 140 | TAD (133-32)\r |
| 141 | SNA / ^Z (SUB) TREAT AS END OF FILE\r |
| 142 | JMP LPRTRN\r |
| 143 | TAD (32)\r |
| 144 | L4,/\r |
| 145 | LLS / CLEAR FLAG LOAD CHARACTER & PRINT\r |
| 146 | LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE\r |
| 147 | JMP .-1 / ELSE WE WAIT FOR DONE FLAG\r |
| 148 | LP7600, 7600 / CLA\r |
| 149 | TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER\r |
| 150 | \r |
| 151 | KRS / OR TTY KBD INTO AC\r |
| 152 | TAD LPT175 / TEST FOR ETX (^C)\r |
| 153 | SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG\r |
| 154 | KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR\r |
| 155 | JMP LPISF / TEST INPUT FROM PRINTER\r |
| 156 | LPTCIF, CDF CIF 0\r |
| 157 | JMP I LP7600\r |
| 158 | LPISF,\r |
| 159 | LIRB / READ ACTUAL LPT STATUS WORD\r |
| 160 | DCA LPOLD / SAVE THE ACTUAL STATUS WORD\r |
| 161 | TAD LPOLD / RESTORE STATUS --> AC\r |
| 162 | AND LPT177 / MASK OUT 7 BITS\r |
| 163 | TAD LPM23 / TEST DC3 (^S)\r |
| 164 | SNA\r |
| 165 | JMP LP7600 / DC3 ENTERED WAIT FOR DC1\r |
| 166 | TAD LPOFON / TEST FOR DC1 (^Q)\r |
| 167 | SNA CLA\r |
| 168 | JMP I LPTPCH / DC1 OR MEANINGLESS INPUT, SO WE CONTINUE PRINTING\r |
| 169 | CLA\r |
| 170 | JMP I LPTPCH\r |
| 171 | /\r |
| 172 | /\r |
| 173 | TLPT, JMP L4 / LINE PRINTER HANDLER\r |
| 174 | TPLT, NOP / SAVE AC\r |
| 175 | /\r |
| 176 | SAC, 0 / ON ENTRY WE SAVE THE AC\r |
| 177 | /\r |
| 178 | LP7700, 7700\r |
| 179 | LPT70, 70\r |
| 180 | LP21, XON\r |
| 181 | LP23, XOFF\r |
| 182 | LPOLD, XON\r |
| 183 | LPM23, -XOFF\r |
| 184 | LPOFON, XOFF-XON\r |
| 185 | LPT175, 175\r |
| 186 | LPCDF0, CDF 0\r |
| 187 | /\r |
| 188 | $$\r |
| 189 | \1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 |