A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / x80sp.pa
CommitLineData
81e70d48
PH
1/PRINTER & PLOTTER HANDLER ADCOM X80SP\r
2/ PLOTTER HANDLER CONVERTS [ INTO DC3 AND ] INTO DC1\r
3/ X80SP HANDLES HT,VT,CR,LF,FF\r
4/ HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) COMMANDS FROM X80SP.\r
5/ SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER.\r
6/ ALL CONTROL CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE X80SP.\r
7/ JOHANN J. ANDRES UNIVERSITY GOETTINGEN\r
8/\r
9/ H.A. 10.DEC.1981 REV 0.0\r
10/ H.A. 4. APR.1982 REV 1.0 INSERTS [ --> DC3 AND ] --> DC1\r
11/ H.A. 5. OCT.1982 REV 1.1 LITTLE CHANGES SAVE 2 WORDS OF MEMORY\r
12/ H.A. 10.OCT.82 REV 1.2 REMOVES POSSIBLE LISF/LIRB TIMING PROBLEMS \r
13/ H.A. 26.OCT.82 REV 1.3 REMOVES FRTS PROBLEM: SOME CHARS WERE LOST\r
14/ H.A. 17.DEC.82 NON VALID STATUS INPUT CAUSE: HLT\r
15/ H.A. 5.JAN.83 REMOVES RANDOM DATA ERROR INSERTED ON 17.DEC.82\r
16/ H.A. 27.JAN.83 XON/XOFF CHARACTER CHANGED, '['&']' CONVERSION ROUTINE IMPROVED\r
17/\r
18 X80VER="E&77 /VERSION 4\r
19 TTYDVC=03 / TTY\r
20 INDVC=31 / LPT INTERFACE DEVICE CODE\r
21 OUTDVC=32 / LPT\r
22 XON=021 / BUFFER EMPTY MESSAGE\r
23 XOFF=23 / BUFFER FULL MESSAGE\r
24/\r
25 LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG\r
26 LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER\r
27 LISF=10^INDVC+6001 / SKIP ON LPT FLAG\r
28 LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS \r
29 KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG\r
30 KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC\r
31/ ACL=7701 / PAL8 DOESN'T KNOW HIS COMPUTER!\r
32/ MQL=7421\r
33/\r
34/\r
35 *0 / 8 WORD HANDLER BLOCK\r
36 -2 / TWO UNITS\r
37 DEVICE X80S\r
38 DEVICE LP1\r
39 1040\r
40 LPT&177 / STARTING ADR.\r
41 0;0\r
42 DEVICE X80S\r
43 DEVICE PL1\r
44 1040 / WRITE ONLY LINE PRINTER\r
45 PLT&177 / STARTING ADR.\r
46 0;0 / 2 WORDS MUST BE ZERO\r
47/\r
48/\r
49 *200 / START OF HANDLER\r
50PLT, X80VER / ENTRY FOR PLOTTER HANDLER\r
51 DCA SAC\r
52 TAD PLT / HERE WE SAVE THE RETURN ADR.\r
53 DCA LPT / INTO THE LPT RETURN POINT\r
54 TAD TPLT / INSERT PLOTTER CALL CMD\r
55 DCA TYPE\r
56 JMP START\r
57LPT, X80VER\r
58 DCA SAC / SAVE AC\r
59 TAD TLPT / INSERT LPT CALL CMD\r
60 DCA TYPE\r
61 TAD (23) / SWITCH OFF THE \r
62 JMS LPTPCH / PLOTTER MODE\r
63START,/\r
64 TAD SAC / RESTORE AC\r
65 CLL CML CLA RAR\r
66 TAD I LPT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED\r
67 AND LP7700\r
68 CMA\r
69 DCA LPTWC\r
70LPT214, RDF / FF CONSTANT\r
71 TAD LPTCIF\r
72 DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE\r
73 TAD I LPT\r
74 AND LPT70\r
75 TAD LPCDF0\r
76 DCA LPTCDF /GET BUFFER FIELD\r
77 ISZ LPT\r
78 TAD I LPT\r
79 DCA LPTCA /LPTCA GETS BUFFER ADDRESS\r
80 ISZ LPT\r
81 TAD I LPT\r
82LPTCDF, HLT\r
83 ISZ LPT\r
84 SNL /IF LINK NOT SET,GIVE ERROR\r
85 JMP LPTERR\r
86 SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT\r
87 JMP LPT177\r
88 TAD LPT214 / FF --> AC\r
89 JMP LPTKLG\r
90\r
91\f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.\r
92/\r
93/ LOOP TO PICK UP THE CHARACTERS\r
94/\r
95LPTLP, CLA\r
96 TAD I LPTCA\r
97 JMS LPTPCH\r
98 TAD I LPTCA\r
99 AND LP7400\r
100 DCA LPTCDF\r
101 ISZ LPTCA\r
102LP7400, 7400\r
103 TAD I LPTCA\r
104 JMS LPTPCH\r
105 TAD I LPTCA\r
106 AND LP7400\r
107 CLL RTR\r
108LPTLF, RTR\r
109 TAD LPTCDF\r
110 RTR\r
111 RTR\r
112 ISZ LPTCA\r
113 NOP /PROTECT ISZ\r
114LPTKLG, JMS LPTPCH\r
115LPT177, 177\r
116 ISZ LPTWC\r
117 JMP LPTLP\r
118LPRTRN, ISZ LPT\r
119LPTXIT, HLT\r
120 JMP I LPT\r
121LPTWC, 0\r
122LPTCA, 0\r
123/\r
124LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN\r
125 JMP LPTXIT / HOME TO MAM\r
126/\r
127/\r
128/ HERE WE PRINT THE CHARACTERS\r
129/\r
130LPTPCH, 0\r
131/\r
132 AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER\r
133TYPE, 0 / CHANGED AT EXECUTION TIME SEE TPLT & TLPT\r
134 TAD (-135)\r
135 SNA / ']' --> DC3\r
136 TAD (23-135)\r
137 TAD (135-133)\r
138 SNA / '[' --> DC1\r
139 TAD (21-133)\r
140 TAD (133-32)\r
141 SNA / ^Z (SUB) TREAT AS END OF FILE\r
142 JMP LPRTRN\r
143 TAD (32)\r
144L4,/\r
145 LLS / CLEAR FLAG LOAD CHARACTER & PRINT\r
146 LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE\r
147 JMP .-1 / ELSE WE WAIT FOR DONE FLAG\r
148LP7600, 7600 / CLA\r
149 TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER\r
150\r
151 KRS / OR TTY KBD INTO AC\r
152 TAD LPT175 / TEST FOR ETX (^C)\r
153 SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG\r
154 KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR\r
155 JMP LPISF / TEST INPUT FROM PRINTER\r
156LPTCIF, CDF CIF 0\r
157 JMP I LP7600\r
158LPISF,\r
159 LIRB / READ ACTUAL LPT STATUS WORD\r
160 DCA LPOLD / SAVE THE ACTUAL STATUS WORD\r
161 TAD LPOLD / RESTORE STATUS --> AC\r
162 AND LPT177 / MASK OUT 7 BITS\r
163 TAD LPM23 / TEST DC3 (^S)\r
164 SNA\r
165 JMP LP7600 / DC3 ENTERED WAIT FOR DC1\r
166 TAD LPOFON / TEST FOR DC1 (^Q)\r
167 SNA CLA\r
168 JMP I LPTPCH / DC1 OR MEANINGLESS INPUT, SO WE CONTINUE PRINTING\r
169 CLA\r
170 JMP I LPTPCH\r
171/\r
172/\r
173TLPT, JMP L4 / LINE PRINTER HANDLER\r
174TPLT, NOP / SAVE AC\r
175/\r
176SAC, 0 / ON ENTRY WE SAVE THE AC\r
177/\r
178LP7700, 7700\r
179LPT70, 70\r
180LP21, XON\r
181LP23, XOFF\r
182LPOLD, XON\r
183LPM23, -XOFF\r
184LPOFON, XOFF-XON\r
185LPT175, 175\r
186LPCDF0, CDF 0\r
187/\r
188$$\r
189\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