Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | /5 LP08/LS8E/LA180/LV8E HANDLER |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | / | |
10 | / | |
11 | /COPYRIGHT (C) 1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION | |
12 | / | |
13 | / | |
14 | / | |
15 | / | |
16 | / | |
17 | / | |
18 | / | |
19 | / | |
20 | / | |
21 | / | |
22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE | |
23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT | |
24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY | |
25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. | |
26 | / | |
27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER | |
28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED | |
29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH | |
30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. | |
31 | / | |
32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE | |
33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY | |
34 | /DIGITAL. | |
35 | / | |
36 | / | |
37 | / | |
38 | / | |
39 | / | |
40 | / | |
41 | / | |
42 | / | |
43 | / | |
44 | / | |
45 | \f LPVERSION="C&77 | |
46 | ||
47 | *0 | |
48 | ||
49 | -1 | |
50 | DEVICE LPSV;DEVICE LPT;1040;LPT&177;ZBLOCK 2 | |
51 | ||
52 | /LPT HANDLER FOR EITHER LP08 OR LS8E LINE PRINTER. | |
53 | /HANDLES TABS, PASSES EVERYTHING ELSE ON TO THE HARDWARE. | |
54 | ||
55 | LSF=6661 /SKIP ON FLAG | |
56 | LSR=6663 /SKIP ON ERROR | |
57 | LLS=6666 /LOAD LPT BUFFER | |
58 | ||
59 | DBST= 6570 /SKIP IF DEMAND SET AND CLEAR IT | |
60 | DBTD= 6574 /LOAD COMPLEMENT OF AC0-11 TO TRANSMIT BUFFER | |
61 | DBSE= 6575 /SET INTERRUPT ENABLE | |
62 | DBCE= 6575 /CLEAR INTERRUPT ENABLE | |
63 | ||
64 | LA180=0 /SET TO 1 TO USE LA180 | |
65 | ||
66 | /V3D CHANGES: | |
67 | ||
68 | /ADDED IN LA180 SUPPORT | |
69 | \f *200 | |
70 | ||
71 | LPWDTH, -205 /-(WIDTH+1) [USE -121 FOR 80 COLUMNS] | |
72 | LTERMC, 14 /4 FOR LV8 | |
73 | LVCCNV, -40 /0 IF PRINTER PRINTS LC | |
74 | LP7770, 7770 | |
75 | LP0007, 0007 | |
76 | LPT, LPVERSION /NORMAL ENTRY POINT | |
77 | CLA STL RAR | |
78 | TAD I LPT / R/W BIT TO LINK L | |
79 | AND LP7700 / I | |
80 | CMA /TREAT 0 PG CNT AS 0 WD CNT N | |
81 | DCA LPTWC /SAVE -(DBLWD COUNT+1) K | |
82 | LPT214, RDF / | |
83 | TAD LPTCIF / M | |
84 | DCA LPTXIT /SAVE CIF CDF RETRN FIELD U | |
85 | TAD I LPT / S | |
86 | AND (70 / T | |
87 | TAD (CDF 0 / | |
88 | DCA LPTCDF / N | |
89 | ISZ LPT /PT TO BUFFER O | |
90 | TAD I LPT /GET BUFFER ADDRESS T | |
91 | DCA LPTCA /SAVE BUFFER PTR | |
92 | ISZ LPT /PT TO BLOCK # C | |
93 | TAD I LPT /GET IT H | |
94 | ISZ LPT /POINT TO ERROR RETURN G | |
95 | LPTCDF, HLT / ! | |
96 | SNL | |
97 | JMP LPTERR /CAN'T READ FROM LPT | |
98 | SNA CLA | |
99 | TAD LPT214 /OUTPUT FORM FEED IF BLOCK 0 | |
100 | LPTELP, JMS LPTPCH /PRINT 3RD CHAR OF DOUBLEWORD | |
101 | ISZ LPTWC | |
102 | JMP LPTLP /GET 3 MORE CHARS | |
103 | SKP | |
104 | LPTCTZ, TAD LTERMC | |
105 | JMS LPTPCH /OUTPUT FORM FEED IF ^Z SEEN (EOT OF LV8) | |
106 | ISZ LPT /BUMP TO NORMAL RETURN | |
107 | LPTXIT, HLT /RESTORE FIELDS | |
108 | JMP I LPT /EXIT | |
109 | \f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE | |
110 | /THIRD CHARACTER IN EACH DOUBLEWORD. | |
111 | ||
112 | LPTLP, STL /GUARD BIT OF SHIFT REGISTER | |
113 | LPROTL, RTL | |
114 | RTL | |
115 | SPA /DO WE HAVE 8 BITS SHIFTED IN? | |
116 | JMP LPTELP | |
117 | DCA LPTCDF /SAVE SHIFT REGISTER | |
118 | TAD I LPTCA | |
119 | JMS LPTPCH /PRINT A CHAR | |
120 | TAD I LPTCA | |
121 | ISZ LPTCA /BUMP INPUT POINTER | |
122 | LP7400, 7400 /PROTECT ISZ | |
123 | AND LP7400 | |
124 | CLL RAL | |
125 | TAD LPTCDF /SHIFT HIGH 4 BITS INTO | |
126 | JMP LPROTL /SHIFT REGISTER | |
127 | ||
128 | LPTERR, STL CLA RAR /PUT 4000 IN AC | |
129 | JMP LPTXIT /AND TAKE ERROR RETURN | |
130 | ||
131 | LPTWC, 0 | |
132 | LPTCA, 0 | |
133 | \f/CHAR PRINT ROUTINE | |
134 | ||
135 | LPTPCH, 0 | |
136 | AND (177 | |
137 | TAD (-175 | |
138 | SMA | |
139 | JMP LPFLSH /FLUSH CODES 175-177 | |
140 | TAD (175-140 | |
141 | SMA | |
142 | TAD LVCCNV /CONVERT LC TO UC IF DESIRED | |
143 | TAD (140-33 | |
144 | SNA | |
145 | TAD (11 /CHANGE ALTMODE TO $ | |
146 | IAC | |
147 | SNA | |
148 | JMP LPTCTZ /^Z - END OF FILE | |
149 | TAD (32-11 | |
150 | SNA | |
151 | JMP LPTTAB /TABS MUST BE SIMULATED | |
152 | LPLFHK, TAD (11 /RESTORE CHAR | |
153 | SZA /FLUSH NULLS | |
154 | JMS LPCHAR / | |
155 | TAD LPLPTR /IF COL. CTR GT 0 | |
156 | SMA /WE HIT A CONTROL CHAR | |
157 | TAD LPWDTH /OR EOL- SET TO FULL | |
158 | DCA LPLPTR /WIDTH (NOTE LPLPTR=1 !) | |
159 | LP7700, | |
160 | LPFLSH, SMA CLA /NEVER SKIPS | |
161 | JMP I LPTPCH /RETURN | |
162 | ||
163 | LPCHAR, 0 /LOW LEVEL PRINT ROUTINE | |
164 | IFZERO LA180 < | |
165 | NOP /NOP'S NEEDED FOR SET | |
166 | LLS /PUT CHAR IN LPT BUFFER | |
167 | NOP | |
168 | > | |
169 | IFNZRO LA180 < | |
170 | CMA | |
171 | DBTD /PUT CHAR IN LP BUFFER | |
172 | CMA | |
173 | > | |
174 | AND LP7770 /KLUDGE - CLEARS COLUMN CTR | |
175 | TAD LP7770 /ON CR, LF, VT, FF BUT ALSO | |
176 | SNA CLA /ON ^H,^N, AND ^O. BIG DEAL | |
177 | DCA LPLPTR /?SR RICHIE SAID 'LPCRFG' | |
178 | LP7600, 7600 /CLEAR AC | |
179 | LPCTCL, TAD LP7600 | |
180 | KRS | |
181 | TAD (-7603 /CHECK FOR ^C FROM CONSOLE | |
182 | SNA CLA | |
183 | KSF /WITH FLAG UP | |
184 | JMP .+3 | |
185 | LPTCIF, CDF CIF 0 /YES, RETURN TO OS/8 | |
186 | JMP I LP7600 | |
187 | IFNZRO LA180 <DBST> /NO MUST BE HERE | |
188 | IFZERO LA180 <LSF> /NO FOR SET | |
189 | JMP LPCTCL /WAIT FOR FLAG | |
190 | ISZ LPLPTR /CHECK LINE OVERFLOW | |
191 | JMP I LPCHAR | |
192 | TAD (15 | |
193 | JMS LPCHAR | |
194 | CLA IAC | |
195 | JMP LPLFHK | |
196 | \fLPTTAB, TAD LPBLNK /GET PSEUDO BLANK | |
197 | JMS LPCHAR /PRINT IT | |
198 | TAD LPWDTH | |
199 | CMA | |
200 | TAD LPLPTR /GET # CHARS IN LINE | |
201 | AND LP0007 | |
202 | LPBLNK, SZA CLA /LOOP 'TILL MULTIPLE OF 8 | |
203 | JMP LPTTAB | |
204 | JMP I LPTPCH | |
205 | ||
206 | LPLPTR, 0 | |
207 | $ | |
208 | \f |