1 /5 LP08/LS8E/LA180/LV8E HANDLER
11 /COPYRIGHT (C) 1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
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.
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.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
50 DEVICE LPSV;DEVICE LPT;1040;LPT&177;ZBLOCK 2
52 /LPT HANDLER FOR EITHER LP08 OR LS8E LINE PRINTER.
53 /HANDLES TABS, PASSES EVERYTHING ELSE ON TO THE HARDWARE.
55 LSF=6661 /SKIP ON FLAG
56 LSR=6663 /SKIP ON ERROR
57 LLS=6666 /LOAD LPT BUFFER
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
64 LA180=0 /SET TO 1 TO USE LA180
68 /ADDED IN LA180 SUPPORT
71 LPWDTH, -205 /-(WIDTH+1) [USE -121 FOR 80 COLUMNS]
73 LVCCNV, -40 /0 IF PRINTER PRINTS LC
76 LPT, LPVERSION /NORMAL ENTRY POINT
78 TAD I LPT / R/W BIT TO LINK L
80 CMA /TREAT 0 PG CNT AS 0 WD CNT N
81 DCA LPTWC /SAVE -(DBLWD COUNT+1) K
84 DCA LPTXIT /SAVE CIF CDF RETRN FIELD U
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
94 ISZ LPT /POINT TO ERROR RETURN G
97 JMP LPTERR /CAN'T READ FROM LPT
99 TAD LPT214 /OUTPUT FORM FEED IF BLOCK 0
100 LPTELP, JMS LPTPCH /PRINT 3RD CHAR OF DOUBLEWORD
102 JMP LPTLP /GET 3 MORE CHARS
105 JMS LPTPCH /OUTPUT FORM FEED IF ^Z SEEN (EOT OF LV8)
106 ISZ LPT /BUMP TO NORMAL RETURN
107 LPTXIT, HLT /RESTORE FIELDS
109 \f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE
110 /THIRD CHARACTER IN EACH DOUBLEWORD.
112 LPTLP, STL /GUARD BIT OF SHIFT REGISTER
115 SPA /DO WE HAVE 8 BITS SHIFTED IN?
117 DCA LPTCDF /SAVE SHIFT REGISTER
119 JMS LPTPCH /PRINT A CHAR
121 ISZ LPTCA /BUMP INPUT POINTER
122 LP7400, 7400 /PROTECT ISZ
125 TAD LPTCDF /SHIFT HIGH 4 BITS INTO
126 JMP LPROTL /SHIFT REGISTER
128 LPTERR, STL CLA RAR /PUT 4000 IN AC
129 JMP LPTXIT /AND TAKE ERROR RETURN
133 \f/CHAR PRINT ROUTINE
139 JMP LPFLSH /FLUSH CODES 175-177
142 TAD LVCCNV /CONVERT LC TO UC IF DESIRED
145 TAD (11 /CHANGE ALTMODE TO $
148 JMP LPTCTZ /^Z - END OF FILE
151 JMP LPTTAB /TABS MUST BE SIMULATED
152 LPLFHK, TAD (11 /RESTORE CHAR
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 !)
160 LPFLSH, SMA CLA /NEVER SKIPS
163 LPCHAR, 0 /LOW LEVEL PRINT ROUTINE
165 NOP /NOP'S NEEDED FOR SET
166 LLS /PUT CHAR IN LPT BUFFER
171 DBTD /PUT CHAR IN LP BUFFER
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
181 TAD (-7603 /CHECK FOR ^C FROM CONSOLE
185 LPTCIF, CDF CIF 0 /YES, RETURN TO OS/8
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
196 \fLPTTAB, TAD LPBLNK /GET PSEUDO BLANK
200 TAD LPLPTR /GET # CHARS IN LINE
202 LPBLNK, SZA CLA /LOOP 'TILL MULTIPLE OF 8