Commit | Line | Data |
---|---|---|
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 | |
38 | PLT, HPVER / ENTRY FOR PLOTTER HANDLER\r | |
39 | DCA SAC\r | |
40 | START,/\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 | |
59 | LPTCDF, 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 | |
79 | LPTLP, 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 | |
86 | LP7400, 7400\r | |
87 | TAD I LPTCA\r | |
88 | JMS LPTPCH\r | |
89 | TAD I LPTCA\r | |
90 | AND LP7400\r | |
91 | CLL RTR\r | |
92 | LPTLF, RTR\r | |
93 | TAD LPTCDF\r | |
94 | RTR\r | |
95 | RTR\r | |
96 | ISZ LPTCA\r | |
97 | NOP /PROTECT ISZ\r | |
98 | LPTKLG, JMS LPTPCH\r | |
99 | LPT177, 177\r | |
100 | ISZ LPTWC\r | |
101 | JMP LPTLP\r | |
102 | LPRTRN, ISZ PLT\r | |
103 | LPTXIT, HLT\r | |
104 | JMP I PLT\r | |
105 | LPTWC, 0\r | |
106 | LPTCA, 0\r | |
107 | /\r | |
108 | LPTERR, 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 | |
114 | LPTPCH, 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 | |
127 | L4,/\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 | |
131 | LP7600, 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 | |
139 | LPTCIF, CDF CIF 0\r | |
140 | JMP I LP7600\r | |
141 | LPISF,\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 | |
159 | SAC, 0 / ON ENTRY WE SAVE THE AC HERE\r | |
160 | /\r | |
161 | LP7700, 7700\r | |
162 | LPT70, 70\r | |
163 | LP21, XON\r | |
164 | LP23, XOFF\r | |
165 | LPOLD, XON\r | |
166 | LPM23, -XOFF\r | |
167 | LPOFON, XOFF-XON\r | |
168 | LPT175, 175\r | |
169 | LPCDF0, 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 |