A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / hp7475.pa
CommitLineData
81e70d48
PH
1/PLOTTER HANDLER FOR HP 7475A\r
2/ HANDLER CONVERTS \ (=0134) INTO ESC (=033)\r
3/ | (=0174) INTO ETX (=03)\r
4/ SUB (=032, CNTRL Z) IS TREATED AS END OF FILE\r
5/ ALL OTHER CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE PLOTTER.\r
6/ HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) HANDSHAKE PROCEDURE WITH HP 7475A.\r
7/ SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER TO THE MONITOR.\r
8/ JOHANN J. ANDRES FOR UNIVERSITY GOETTINGEN\r
9/\r
10/ H.A. 3-MAY-85 REV 0.0\r
11/ H.A. 12-AUG-85 REV 0.1\r
12/\r
13 HPVER="A&77 /VERSION 0\r
14 TTYDVC=03 / TTY\r
15 INDVC=33 / INPUT FROM PLOTTER\r
16 OUTDVC=34 / OUTPUT TO PLOTTER\r
17 XON=021 / BUFFER EMPTY MESSAGE\r
18 XOFF=23 / BUFFER FULL MESSAGE\r
19/\r
20 LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG\r
21 LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER\r
22 LISF=10^INDVC+6001 / SKIP ON LPT FLAG\r
23 LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS \r
24 KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG\r
25 KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC\r
26/\r
27/\r
28 *0 / 8 WORD HANDLER BLOCK\r
29 -1 / ONE UNIT\r
30 DEVICE HP74\r
31 DEVICE PLT\r
32 1040\r
33 PLT&177 / STARTING ADR.\r
34 0;0\r
35/\r
36/\r
37 *200 / START OF HANDLER\r
38PLT, HPVER / ENTRY FOR PLOTTER HANDLER\r
39 DCA SAC\r
40START,/\r
41 TAD SAC / RESTORE AC\r
42 CLL CML CLA RAR\r
43 TAD I PLT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED\r
44 AND LP7700\r
45 CMA\r
46 DCA LPTWC\r
47 RDF\r
48 TAD LPTCIF\r
49 DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE\r
50 TAD I PLT\r
51 AND LPT70\r
52 TAD LPCDF0\r
53 DCA LPTCDF /GET BUFFER FIELD\r
54 ISZ PLT\r
55 TAD I PLT\r
56 DCA LPTCA /LPTCA GETS BUFFER ADDRESS\r
57 ISZ PLT\r
58 TAD I PLT\r
59LPTCDF, HLT\r
60 ISZ PLT\r
61 SNL /IF LINK NOT SET,GIVE ERROR\r
62 JMP LPTERR\r
63 SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT\r
64 JMP LPT177\r
65 TAD ("O / COME HERE IF BLOCK# EQL 0\r
66 JMS LPTPCH\r
67 TAD ("E \r
68 JMS LPTPCH\r
69 TAD ("; \r
70 JMS LPTPCH\r
71 TAD (15 / CR SINCE FORTRAN OUTPUT STARTS WITH LF SOMETIMES\r
72 JMS LPTPCH\r
73 JMP LPT177\r
74\r
75\f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.\r
76/\r
77/ LOOP TO PICK UP THE CHARACTERS\r
78/\r
79LPTLP, CLA\r
80 TAD I LPTCA\r
81 JMS LPTPCH\r
82 TAD I LPTCA\r
83 AND LP7400\r
84 DCA LPTCDF\r
85 ISZ LPTCA\r
86LP7400, 7400\r
87 TAD I LPTCA\r
88 JMS LPTPCH\r
89 TAD I LPTCA\r
90 AND LP7400\r
91 CLL RTR\r
92LPTLF, RTR\r
93 TAD LPTCDF\r
94 RTR\r
95 RTR\r
96 ISZ LPTCA\r
97 NOP /PROTECT ISZ\r
98LPTKLG, JMS LPTPCH\r
99LPT177, 177\r
100 ISZ LPTWC\r
101 JMP LPTLP\r
102LPRTRN, ISZ PLT\r
103LPTXIT, HLT\r
104 JMP I PLT\r
105LPTWC, 0\r
106LPTCA, 0\r
107/\r
108LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN\r
109 JMP LPTXIT / HOME TO MAM\r
110/\r
111/\r
112/ HERE WE PRINT THE CHARACTERS\r
113/\r
114LPTPCH, 0\r
115/\r
116 AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER\r
117 TAD (-134)\r
118 SNA / (0134) '\' --> ESC (033)\r
119 TAD (33-134)\r
120 TAD (134-174)\r
121 SNA / (0174) '|' --> ETX (03)\r
122 TAD (03-174)\r
123 TAD (174-32)\r
124 SNA / ^Z (SUB) TREAT AS END OF FILE\r
125 JMP LPRTRN\r
126 TAD (32)\r
127L4,/\r
128 LLS / CLEAR FLAG LOAD CHARACTER & PRINT\r
129 LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE\r
130 JMP .-1 / ELSE WE WAIT FOR DONE FLAG\r
131LP7600, 7600 / CLA\r
132 TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER\r
133\r
134 KRS / OR TTY KBD INTO AC\r
135 TAD LPT175 / TEST FOR ETX (^C)\r
136 SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG\r
137 KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR\r
138 JMP LPISF / TEST INPUT FROM PRINTER\r
139LPTCIF, CDF CIF 0\r
140 JMP I LP7600\r
141LPISF,\r
142 LIRB / READ ACTUAL LPT STATUS WORD\r
143 AND LPT177 / MASK OUT 7 BITS\r
144 TAD LPM23 / TEST FOR XOFF CHARACTER\r
145 SZA / ZERO IF XOFF CHARACTER ENCOUNTERED\r
146 JMP .+3\r
147 DCA LPOLD / XOFF CLEARS LPOLD FLAG: 0--> LPOLD\r
148 JMP LP7600 / WAIT FOR XON CHARACTER\r
149 CLL / CLEAR LINK FOR TAD INSTR. INSTEAD OF OR INSTRUCTION\r
150 TAD LPOFON / TEST FOR XON CHARACTER\r
151 TAD LPOLD / OR WITH LEADING XOFF CHARACTER\r
152 SZA SZL CLA / ZERO ONLY: XON FOLLOWS XOFF CHARACTER\r
153 JMP .+3\r
154 ISZ LPOLD / WE CLEAR THE XOFF FLAG 1 --> LPOLD\r
155 JMP I LPTPCH / AND CONTINUE PRINTING\r
156 JMP I LPTPCH / MEANINGLESS INPUT, CONTINUE PRINTING\r
157/\r
158/\r
159SAC, 0 / ON ENTRY WE SAVE THE AC HERE\r
160/\r
161LP7700, 7700\r
162LPT70, 70\r
163LP21, XON\r
164LP23, XOFF\r
165LPOLD, XON\r
166LPM23, -XOFF\r
167LPOFON, XOFF-XON\r
168LPT175, 175\r
169LPCDF0, CDF 0\r
170/\r
171$$\r
172\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