Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | /MANNESMANN TP80 PRINTER HANDLER\r |
2 | /\r | |
3 | LPVERSION="B&77\r | |
4 | \r | |
5 | *0\r | |
6 | \r | |
7 | -1\r | |
8 | DEVICE LPSV;DEVICE LPT;1040;LPT&177;ZBLOCK 2\r | |
9 | \r | |
10 | /LPT HANDLER FOR EITHER LP08 OR LS8E LINE PRINTER\r | |
11 | /HANDLES TABS, PASSES EVERYTHING ELSE ON THE HARDWARE.\r | |
12 | \r | |
13 | LSF=6661 /SKIP ON FLAG\r | |
14 | LSR=6663 /SKIP ON ERROR\r | |
15 | LLS=6666 /LOAD LPT BUFFER\r | |
16 | \r | |
17 | *200\r | |
18 | \r | |
19 | LPWDTH, -205 /-(WIDTH+1) [USE -121 FOR 80 COLUMNS]\r | |
20 | LTERMC, 14 /4 FOR LV8\r | |
21 | LVCCNV, -40 /0 IF PRINTER PRINTS LC\r | |
22 | LPT, LPVERSION /NORMAL ENTRY POINT\r | |
23 | CLA STL RAR\r | |
24 | TAD I LPT / R/W BIT TO LINK\r | |
25 | AND LP7700\r | |
26 | CMA /TREAT 0 PG CNT AS 0 WD CNT\r | |
27 | DCA LPTWC /SAVE -(DBLWD COUNT+1)\r | |
28 | LPT214, RDF\r | |
29 | TAD LPTCIF \r | |
30 | DCA LPTXIT /SAVE CIF CDF RETRN FIELD\r | |
31 | TAD I LPT\r | |
32 | AND (70\r | |
33 | TAD (CDF 0\r | |
34 | DCA LPTCDF\r | |
35 | ISZ LPT /PT TO BUFFER\r | |
36 | TAD I LPT /GET BUFFER ADR\r | |
37 | DCA LPTCA /SAVE BUFFER PTR\r | |
38 | ISZ LPT /PT TO BLOCK #\r | |
39 | TAD I LPT /GET IT\r | |
40 | ISZ LPT /POINT TO ERROR RETURN\r | |
41 | LPTCDF, HLT\r | |
42 | SNL\r | |
43 | JMP LPTERR /CAN'T READ FROM LPT\r | |
44 | SNA CLA\r | |
45 | TAD LPT214 /OUTPUT FORM FEED IF BLOCK 0\r | |
46 | JMP LPTELP /JUMP INTO END OF LOOP\r | |
47 | \f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE\r | |
48 | /THIRD CHARACTER IN EACH DOUBLEWORD.\r | |
49 | \r | |
50 | LPTLP, STL /GUARD BIT OF SHIFT REGISTER\r | |
51 | LPROTL, RTL\r | |
52 | RTL\r | |
53 | SPA /DO WE HAVE 8 BITS SHIFTED IN?\r | |
54 | JMP LPTELP\r | |
55 | DCA LPTCDF /SAVE SHIFT REGISTER\r | |
56 | TAD I LPTCA\r | |
57 | JMS LPTPCH /PRINT A CHAR\r | |
58 | TAD I LPTCA\r | |
59 | ISZ LPTCA /BUMP INPUT POINTER\r | |
60 | LP7400, 7400 /PROTECT ISZ\r | |
61 | AND LP7400\r | |
62 | CLL RAL\r | |
63 | TAD LPTCDF /SHIFT HIGH 4 BITS INTO\r | |
64 | JMP LPROTL /SHIFT REGISTER\r | |
65 | \r | |
66 | LPTELP, JMS LPTPCH /PRINT 3RD CHAR OF DOUBLEWORD\r | |
67 | ISZ LPTWC\r | |
68 | JMP LPTLP /GET 3 MORE CHARS\r | |
69 | SKP\r | |
70 | LPTCTZ, TAD LTERMC\r | |
71 | JMS LPTPCH /OUTPUT FORM FEED IF ^Z SEEN (EOT OF LV8)\r | |
72 | ISZ LPT /BUMP TO NORMAL RETURN\r | |
73 | LPTXIT, HLT /RESTORE FIELDS\r | |
74 | JMP I LPT /EXIT\r | |
75 | \r | |
76 | LPTERR, STL CLA RAR /PUT 4000 IN AC\r | |
77 | JMP LPTXIT /AND TAKE ERROR RETURN\r | |
78 | \r | |
79 | LPTWC, 0\r | |
80 | LPTCA, 0\r | |
81 | \f/CHAR PRINT ROUTINE\r | |
82 | \r | |
83 | LPTPCH, 0\r | |
84 | AND (177\r | |
85 | TAD (-175\r | |
86 | SMA\r | |
87 | JMP LPFLSH /FLUSH CODES 175-177\r | |
88 | TAD (175-140\r | |
89 | SMA\r | |
90 | TAD LVCCNV /CONVERT LC TO UC IF DESIRED\r | |
91 | TAD (140-33\r | |
92 | SNA\r | |
93 | TAD (11 /CHANGE ALTMODE TO $\r | |
94 | IAC\r | |
95 | SNA\r | |
96 | JMP LPTCTZ /^Z - END OF FILE\r | |
97 | TAD (32-11\r | |
98 | SNA\r | |
99 | JMP LPTTAB /TABS MUST BE SIMULATED\r | |
100 | LPLFHK, TAD (11 /RESTORE CHAR\r | |
101 | SZA /FLUSH NULLS\r | |
102 | JMS LPCHAR\r | |
103 | TAD LPLPTR /IF COL. CTR GET 0\r | |
104 | SMA /WE HIT A CONTROL CHAR\r | |
105 | TAD LPWDTH /OR EOL - SET TO FULL\r | |
106 | DCA LPLPTR /WIDTH (NOT LPLPTR=1 !)\r | |
107 | LP7700,\r | |
108 | LPFLSH, SMA CLA /NEVER SKIPS\r | |
109 | JMP I LPTPCH /RETURN\r | |
110 | \r | |
111 | LPCHAR, 0 /LOW LEVEL PRINT ROUTINE\r | |
112 | LLS /PUT CHAR IN LP BUFFER\r | |
113 | AND (7770 /KLUDGE - CLEARS COLUMN COUNTER\r | |
114 | TAD (7770 /ON CR, LF, VT, FF BUT ALSO\r | |
115 | SNA CLA /ON ^H, ^N AND ^O; BIG DEAL\r | |
116 | DCA LPLPTR /?SR RICHIE SAID 'LPCRFG'\r | |
117 | LP7600, 7600 /CLEAR AC\r | |
118 | LPCTCL, TAD LP7600\r | |
119 | KRS\r | |
120 | TAD (-7603 /CHECK FOR ^C FROM CONSOLE\r | |
121 | SNA CLA\r | |
122 | KSF /WITH FLAG UP\r | |
123 | JMP .+3\r | |
124 | LPTCIF, CDF CIF 0 /YES, RETURN TO OS/8\r | |
125 | JMP I LP7600\r | |
126 | LSF /NO\r | |
127 | JMP LPCTCL /WAIT FOR FLAG\r | |
128 | ISZ LPLPTR /CHECK LINE OVERFLOW\r | |
129 | JMP I LPCHAR\r | |
130 | TAD (15\r | |
131 | JMS LPCHAR\r | |
132 | CLA IAC\r | |
133 | JMP LPLFHK\r | |
134 | \fLPTTAB, TAD LPBLNK /GET PSEUDO BLANK\r | |
135 | JMS LPCHAR /PRINT IT\r | |
136 | TAD LPWDTH\r | |
137 | CMA\r | |
138 | TAD LPLPTR /GET # CHARS IN LINE\r | |
139 | AND (7\r | |
140 | LPBLNK, SZA CLA /LOOP 'TILL MULTIPLE OF 8\r | |
141 | JMP LPTTAB\r | |
142 | JMP I LPTPCH\r | |
143 | \r | |
144 | LPLPTR, 0\r | |
145 | $\r | |
146 | \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\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\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 |