Add README.md
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / LPSV.PA
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