1 /MANNESMANN TP80 PRINTER HANDLER
8 DEVICE LPSV;DEVICE LPT;1040;LPT&177;ZBLOCK 2
10 /LPT HANDLER FOR EITHER LP08 OR LS8E LINE PRINTER
11 /HANDLES TABS, PASSES EVERYTHING ELSE ON THE HARDWARE.
13 LSF=6661 /SKIP ON FLAG
14 LSR=6663 /SKIP ON ERROR
15 LLS=6666 /LOAD LPT BUFFER
19 LPWDTH, -205 /-(WIDTH+1) [USE -121 FOR 80 COLUMNS]
21 LVCCNV, -40 /0 IF PRINTER PRINTS LC
22 LPT, LPVERSION /NORMAL ENTRY POINT
24 TAD I LPT / R/W BIT TO LINK
26 CMA /TREAT 0 PG CNT AS 0 WD CNT
27 DCA LPTWC /SAVE -(DBLWD COUNT+1)
30 DCA LPTXIT /SAVE CIF CDF RETRN FIELD
36 TAD I LPT /GET BUFFER ADR
37 DCA LPTCA /SAVE BUFFER PTR
38 ISZ LPT /PT TO BLOCK #
40 ISZ LPT /POINT TO ERROR RETURN
43 JMP LPTERR /CAN'T READ FROM LPT
45 TAD LPT214 /OUTPUT FORM FEED IF BLOCK 0
46 JMP LPTELP /JUMP INTO END OF LOOP
47 \f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE
48 /THIRD CHARACTER IN EACH DOUBLEWORD.
50 LPTLP, STL /GUARD BIT OF SHIFT REGISTER
53 SPA /DO WE HAVE 8 BITS SHIFTED IN?
55 DCA LPTCDF /SAVE SHIFT REGISTER
57 JMS LPTPCH /PRINT A CHAR
59 ISZ LPTCA /BUMP INPUT POINTER
60 LP7400, 7400 /PROTECT ISZ
63 TAD LPTCDF /SHIFT HIGH 4 BITS INTO
64 JMP LPROTL /SHIFT REGISTER
66 LPTELP, JMS LPTPCH /PRINT 3RD CHAR OF DOUBLEWORD
68 JMP LPTLP /GET 3 MORE CHARS
71 JMS LPTPCH /OUTPUT FORM FEED IF ^Z SEEN (EOT OF LV8)
72 ISZ LPT /BUMP TO NORMAL RETURN
73 LPTXIT, HLT /RESTORE FIELDS
76 LPTERR, STL CLA RAR /PUT 4000 IN AC
77 JMP LPTXIT /AND TAKE ERROR RETURN
87 JMP LPFLSH /FLUSH CODES 175-177
90 TAD LVCCNV /CONVERT LC TO UC IF DESIRED
93 TAD (11 /CHANGE ALTMODE TO $
96 JMP LPTCTZ /^Z - END OF FILE
99 JMP LPTTAB /TABS MUST BE SIMULATED
100 LPLFHK, TAD (11 /RESTORE CHAR
103 TAD LPLPTR /IF COL. CTR GET 0
104 SMA /WE HIT A CONTROL CHAR
105 TAD LPWDTH /OR EOL - SET TO FULL
106 DCA LPLPTR /WIDTH (NOT LPLPTR=1 !)
108 LPFLSH, SMA CLA /NEVER SKIPS
111 LPCHAR, 0 /LOW LEVEL PRINT ROUTINE
112 LLS /PUT CHAR IN LP BUFFER
113 AND (7770 /KLUDGE - CLEARS COLUMN COUNTER
114 TAD (7770 /ON CR, LF, VT, FF BUT ALSO
115 SNA CLA /ON ^H, ^N AND ^O; BIG DEAL
116 DCA LPLPTR /?SR RICHIE SAID 'LPCRFG'
117 LP7600, 7600 /CLEAR AC
120 TAD (-7603 /CHECK FOR ^C FROM CONSOLE
124 LPTCIF, CDF CIF 0 /YES, RETURN TO OS/8
127 JMP LPCTCL /WAIT FOR FLAG
128 ISZ LPLPTR /CHECK LINE OVERFLOW
134 \fLPTTAB, TAD LPBLNK /GET PSEUDO BLANK
138 TAD LPLPTR /GET # CHARS IN LINE
140 LPBLNK, SZA CLA /LOOP 'TILL MULTIPLE OF 8