Commit | Line | Data |
---|---|---|
81e70d48 PH |
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 |