A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / lpsv.pa
CommitLineData
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
19LPWDTH, -205 /-(WIDTH+1) [USE -121 FOR 80 COLUMNS]\r
20LTERMC, 14 /4 FOR LV8\r
21LVCCNV, -40 /0 IF PRINTER PRINTS LC\r
22LPT, 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
28LPT214, 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
41LPTCDF, 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
50LPTLP, STL /GUARD BIT OF SHIFT REGISTER\r
51LPROTL, 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
60LP7400, 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
66LPTELP, JMS LPTPCH /PRINT 3RD CHAR OF DOUBLEWORD\r
67 ISZ LPTWC\r
68 JMP LPTLP /GET 3 MORE CHARS\r
69 SKP\r
70LPTCTZ, TAD LTERMC\r
71 JMS LPTPCH /OUTPUT FORM FEED IF ^Z SEEN (EOT OF LV8)\r
72 ISZ LPT /BUMP TO NORMAL RETURN\r
73LPTXIT, HLT /RESTORE FIELDS\r
74 JMP I LPT /EXIT\r
75\r
76LPTERR, STL CLA RAR /PUT 4000 IN AC\r
77 JMP LPTXIT /AND TAKE ERROR RETURN\r
78\r
79LPTWC, 0\r
80LPTCA, 0\r
81\f/CHAR PRINT ROUTINE\r
82\r
83LPTPCH, 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
100LPLFHK, 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
107LP7700,\r
108LPFLSH, SMA CLA /NEVER SKIPS\r
109 JMP I LPTPCH /RETURN\r
110\r
111LPCHAR, 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
117LP7600, 7600 /CLEAR AC\r
118LPCTCL, 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
124LPTCIF, 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
140LPBLNK, SZA CLA /LOOP 'TILL MULTIPLE OF 8\r
141 JMP LPTTAB\r
142 JMP I LPTPCH\r
143\r
144LPLPTR, 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