Add README.md
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / p2.ra
CommitLineData
81e70d48
PH
1/ \ ePDPPLT.RA\ e\r
2/\r
3/ PART ONE OF DEC'S XYPLOT DEC-S8-LPLTA-A-LA JULY 1973 M. HURLEY\r
4/ INCLUDED IS THE LATEST UPDATE F4 4.AAAA FROM LIBRARY FORLIB.RL NOV. 77\r
5/ COPIED: J.J. ANDRES 1.NOV. 1980\r
6/\r
7/ PLOTTER ROUTINES FOR OS8 FORTRAN 4 FOR LAB 8/E ONLY!\r
8/ VER 1.0 1. NOV. 1980 H.A.\r
9/ VER 2.0 12. NOV. 1980 H.A.\r
10/ VER 2.1 18. NOV. 1981 H.A.\r
11/ VER 2.2 4. AUG. 1982 H.A.\r
12/ VER 2.3 24-NOV-83 H.A. INSERTS VARIABLES FOR XYPLOT VER 3.3\r
13/ VER 3.0 21-FEB-85 H.A. ASCII OUTPUT ONLY\r
14/\r
15/ UPDATES:\r
16/ 1. PLEXIT DISABLED THE PLOTTER INTERRUPTS AT ALL AND PLOTS DID\r
17/ NOT SWITCH THEM ON A SECOND TIME.\r
18/ 2. X-Y PLOTTER CANNOT BE DRIVEN TO THE ORIGIN (0,0) BY PLOTS.\r
19/ * #XNTST IS CALLED FROM PLOTS EACH TIME PLOTS ITSELF IS CALLED.\r
20/ * NOW #XNTST TEST AND SETS THE ONCE FLAG.\r
21/ * #XNTST PUSHES THE PLOTTER 4095 TIMES INTO THE LOWER LEFT CORNER.\r
22/ 1-NOV-1980 H.A.\r
23/ 3. #XMSMBP = ADDR SYMBTB\r
24/ #XSMBP = ADDR SYMCNT\r
25/ THESE TWO VALUES ARE NOW INSERTED VIA A CALL TO SYMBOL.\r
26/ SYMBOL CALLS #XMBTB TO SWAP IN THE SYMBOL TABLE OVERLAY.\r
27/ 12-NOV-1980 H.A.\r
28/ 4. THE AMOUNT OF EXTERNAL REF TO XYPLOT IS REDUCED\r
29/ 5. DELETES OUTPUT ROUTINE TO X-Y PLOTTER INTERFACE.\r
30/ NOW THERE IS ONLY ASCII OUTPUT VIA XYPLOT ROUTINE.\r
31/ THE OUTPUT BUFFER IS DELETED.\r
32/\r
33\f/\r
34/ THE PDP8 CODE LOCATED IN FIELD 1\r
35/\r
36/\r
37/ INTO THESE WORDS SYMBOL INSERTS THE ADR. OF THE SYMBOL TABLE AND LENGTH\r
38/ THIS MUST BE DONE SINCE THE SYMBOL TABLE #XMBTB MAY BE LOCATED INTO\r
39/ AN OVERLAY AND THEREFORE THE ADDR DIRECTIVE WILL PRODUCE WRONG CODE.\r
40/ THE LOADER INSERTS THE ADR. OF THE OVERLAY LOADER BUT NOT THE DESIRED\r
41/ ONE.\r
42/\r
43 ENTRY #XMCNT\r
44 ENTRY #XSMBP\r
45/ \r
46/ EXTERNAL REFERENCED FROM XYPLOT ONLY\r
47/\r
48/ ENTRIES USED BY XYPLOT:\r
49 ENTRY #XETXR\r
50 ENTRY #XDPXR\r
51 ENTRY #XATIO\r
52 ENTRY #XCHTP\r
53 ENTRY #XCHCK\r
54 ENTRY #XNTST\r
55 ENTRY #XORGX\r
56/\r
57/ ENTRIES USED BY SYMBOL\r
58/\r
59 ENTRY #XNDLF\r
60 ENTRY #XNDRT\r
61 ENTRY #XLEFT\r
62 ENTRY #XLTCD\r
63 ENTRY #XPSIN\r
64 ENTRY #XPSNM\r
65 ENTRY #XPNOP\r
66 ENTRY #XRGHT\r
67 ENTRY #XTXAD\r
68/\r
69PLCE= 06500 / CLEAR INTERRUPT ENABLE\r
70PLSF= 06501 / SKIP ON PLOTTER FLAG SET\r
71PLCF= 06502 / CLEAR PLOTTER FLAG\r
72PLLR= 06504 / LOAD PLOTTER DIRECTION REGISTER\r
73PLSE= 06507 / SET INTERRUPT ENABLE\r
74/\r
75/\r
76 FIELD1 PDPPLT\r
77/ ALL THESE ROUTINES USES XRS TO GET ARGS FROM FPP CODE\r
78/ASSUMES USER ADDED 6502(CLEAR FLAG) TO FRTS CLEAR QUEUE\r
79#XNTST, ORG .+1 / INIT PTRS + ADD JOB TO INTERRUPT QUEUE\r
80 CLA CMA / SET UP POINTERS\r
81 DCA% PBFCNT+1 / COUNTER FOR LOCN OF NEXT CHARACTER TO PLOT\r
82 CIF CDF\r
83 JMP% #XNTST\r
84/\r
85A3, 3\r
86#XETXR,\r
87OCHAR, ADDR POCHAR+1\r
88#XCHCK,\r
89ICHAR, ADDR PICHAR+1\r
90PMBFLG, ADDR MBUFLG\r
91/\r
92/ FPP 12 VARIABLES SET BY XYPLOT WICH MAY NOT BE LOADED INTO AN OVERLAY\r
93/\r
94#XORGX, ORG .+3 / LAST ABSOLUTE ORIGIN LOCATION OF PEN IN MOTOR STEPS\r
95#XORGY, ORG .+3 / LAST ABSOLUTE ORIGIN LOCATION OF PEN IN MOTOR STEPS Y DIRECTION\r
96#XABSX, ORG .+3 / ABSOLUTE LOCATION OF PEN IN MOTOR STEPS X DIRECTION (REAL)\r
97#XABSY, ORG .+3 / ABSOLUTE LOCATION OF PEN IN MOTOR STEPS Y DIRECTION\r
98#XOLDP, ORG .+3 / VALUE OF PEN AT LAST XYPLOT\r
99#XXOLD, ORG .+3 / OLD X PT WITH EFFECT OF FACTOR\r
100#XYOLD, ORG .+3 / OLD Y PT WITH EFFECT OF FACTOR\r
101#XPENC, ORG .+3 / OLD PEN STATUS (SYMBOL & NUMBER)\r
102#XINCX, ORG .+3 / INCREMENT SIZE DEPENDENT OF EACH PLOTTER X DIRECTION\r
103#XINCY, ORG .+3 / INCREMENT SIZE DEPENDENT OF EACH PLOTTER Y DIRECTION\r
104#XFCTX, ORG .+3 / X - FACTOR\r
105#XFCTY, ORG .+3 / Y - FACTOR\r
106X80SPX, ORG .+3\r
107X80SPY, ORG .+3\r
108\f ORG #XNTST+200\r
109/ THESE ROUTINES GET THE PLOTTING CODES WITHIN A LETTER\r
110/ PASS THEM AS X,Y PAIRS FOR PLOT ROUTINE\r
111#XLEFT, 0\r
112 JMS GETXYS / GET A #XLEFT HAND X,Y PAIR\r
113 RTR\r
114 RTR\r
115 RTR\r
116 JMS PASSXY\r
117 CDF CIF\r
118 JMP% #XLEFT\r
119P7, 7\r
120PASSXY, 0\r
121 DCA LETCD2 / SAVE X,Y PAIR\r
122 TAD LETCD2\r
123 CLL RTR\r
124 RAR / GET IN LO THREE BITS\r
125 AND P7\r
126 DCA LETCD1 / PASS X VALUE\r
127 TAD LETCD2 / NOW FOR THE Y PART\r
128 AND P7\r
129 DCA LETCD2 / PASS THE Y VALUE\r
130 JMP% PASSXY\r
131#XRGHT, 0 / GET A #XRGHT HAND X,Y PAIR\r
132 JMS GETXYS\r
133 JMS PASSXY\r
134 CDF CIF\r
135 JMP% #XRGHT\r
136#XLTCD, 0\r
137LETCD1, 0\r
138LETCD2, 0\r
139\f/ THIS ROUTINE GETS X,Y PAIRS FROM THE PACKED SEQ FOR EACH LETTER\r
140GETXYS, 0\r
141 TAD #XLTCD\r
142 CLL\r
143 TAD LOCNPT / START OF LETTER CODE\r
144 DCA LETCD2 / UPDATE PTR TO LETTER\r
145 RAL / IF LINK SET, CROSSED FIELDS, SO UPDATE FIELD\r
146 / POINTER\r
147 TAD LOCNFL / FIELD PASSED FROM FINDIT ROUTINE\r
148 CLL RTL\r
149 RAL\r
150 TAD CDFINS\r
151 DCA NFLD\r
152NFLD, 0 / GET FIELD\r
153 TAD% LETCD2 / GET PLOTTING CODES\r
154 CDF 10\r
155 JMP% GETXYS\r
156CDFINS, 6201\r
157LOCNFL, 0 / FIELD\r
158LOCNPT, 0\r
159\f ORG #XLEFT+200\r
160NXTLCN,\r
161PLETPS, ADDR LOCNPT / POINTS TO START OF CODE FOR PASSED LETTER\r
162COUNT, / COUNT OF STEPS INTO CHAR PLOTTING CODE TABLE\r
163PLCNM1, ADDR LOCNFL / USED TO PASS FIELD\r
164#XTXAD, 0\r
165 0\r
166 0 / ADDRESS OF PACKED 6 BIT LETTERS TO PRINT\r
167LETTER, 0\r
168#XSMBP, / HERE WE INSERT THE ADR. OF THE SYMBOL TABLE\r
169PSYMB, ORG .+2\r
170PP7, 7\r
171/ THESE ROUTINES DETERMINE THE START OF PLOTTING CODES FOR A CHARACTER\r
172/ PASSED AS A HOLERITH (6 BIT) FROM SYMBOL ROUTINE.\r
173/ FIND LOCATION OF START OF PLOT VECTORS\r
174/ FOR THE #XLEFT HALF OF 2 6 BIT CHARACTERS\r
175#XNDLF, 0\r
176 TAD #XTXAD+1 / DO FIELD STUFF\r
177 AND PP7\r
178 CLL RTL\r
179 RAL\r
180 TAD CDF\r
181 DCA DOCDF\r
182DOCDF, NOP\r
183 TAD% #XTXAD+2 / GET TWO 6 BIT VALUES\r
184 CDF 10\r
185 DCA LETTER\r
186 CLL\r
187 TAD LETTER / MOVE #XLEFT CHARACTER\r
188 RTR\r
189 RTR\r
190 RTR\r
191 AND P77 / INTO THE #XRGHTMOST 6 BITS\r
192 JMS FINDIT\r
193 ISZ #XTXAD+2 / PREPARE FOR NEXT CHARACTER TO #XLEFT\r
194 JMP FLDOK / IF SKIPS, THEN AT FIELD BOUNDARY\r
195 ISZ #XTXAD+1 / SO UPDATE FIELD ALSO\r
196FLDOK, CDF CIF\r
197 JMP% #XNDLF\r
198\fFINDIT, 0 / GET LOC OF LETTER IN SYMBOL TABLE\r
199 SPA SNA / CHECK FOR ZERO\r
200 TAD P40 / WHICH DEFAULTS TO SPACE\r
201 CIA CLL / MAKE A COUNTER\r
202 DCA #XTXAD\r
203 DCA COUNT / ZERO TOTAL STEP COUNTER\r
204 TAD PTRTBL+1\r
205 DCA NXTLCN / POINTS TO LOCN IN POINTER TABLE\r
206 / THIS TABLE HAS STEPS FOR EACH LETTER, SO\r
207 / COUNT TOTAL STEPS TO DESIRED LETTER\r
208 TAD PTRTBL\r
209 CLL RTL\r
210 RAL\r
211 TAD CDF\r
212 DCA SCANTB\r
213SCANTB, NOP\r
214 TAD% NXTLCN / GET NEXT STEP COUNT\r
215 CDF 10\r
216 TAD COUNT / AND ADD IT TO TOTAL STEP COUNT\r
217 DCA COUNT\r
218 ISZ NXTLCN / BUMP POINTER\r
219 SKP / SKIP IF DIDN'T CROSS BOUNDARIES\r
220 TAD P10 / IT DID, UPDATE FIELD WORD\r
221 TAD SCANTB\r
222 DCA SCANTB\r
223 ISZ #XTXAD\r
224 JMP SCANTB / NOT THERE YET\r
225 CLL\r
226 TAD COUNT / ADD COUNT TO\r
227 TAD PSYMB+1 / START OF CODE TABLE\r
228 DCA% PLETPS+1 / NOW IT'S CORRECT POINTER\r
229 RAL / IF LINK SET, WE CROSSED FIELD BOUNDARIES\r
230 TAD PSYMB / GET FIELD OF TABLE\r
231 DCA% PLCNM1+1 / PASS IT\r
232 JMP% FINDIT / GOT THE LETTER\r
233P40, 40\r
234P77, 77\r
235#XMCNT, / HERE WE INSERT THE POINTER INTO THE SYMBOL TABLE\r
236PTRTBL, ORG .+2\r
237CDF, 6201\r
238P10, 10\r
239\f#XNDRT, 0\r
240 TAD LETTER / #XLEFT FROM LAST #XLEFT LETTER\r
241 AND P77\r
242 JMS FINDIT\r
243 CDF CIF\r
244 JMP% #XNDRT\r
245/ ROUTINE TO HANDLE NUMBERS FROM FORTRAN SUBR. NUMBER\r
246/ NOT CALLED BY USER DIRECTLY\r
247#XPSNM, 0\r
248 TAD #XTXAD\r
249 IAC\r
250 SNA\r
251 JMP USZRO / IF EQ -1, USE 0\r
252 TAD T2\r
253 SPA / L.T. -3 BAD\r
254 JMP USZRO / SO USE ZERO\r
255 TAD M15\r
256 SPA CLA / G.T. 9 BAD TOO\r
257 JMP USEIT / IT'S -3,-2,0-9\r
258USZRO, CLA\r
259INDEX, TAD P60 / INDEX INTO TABLE\r
260 JMS FINDIT\r
261 CDF CIF\r
262 JMP% #XPSNM\r
263USEIT, TAD #XTXAD\r
264 JMP INDEX\r
265/ PLOT AN INTEGER EQUIV OR CENTERED (100-117 DEC =144-165 OCT)\r
266#XPSIN, 0\r
267 TAD #XTXAD\r
268 SPA SNA / .L.T. ZERO NO GOOD\r
269 JMP USSPAC\r
270 TAD M166 / G.T. 117 DEC. BAD\r
271 SMA\r
272 JMP USSPAC\r
273 TAD A22\r
274 SMA\r
275 JMP OKVAL / ITS A CENTERED 100-121 (0144-0165)\r
276 TAD P44\r
277 SMA CLA\r
278 JMP USSPAC / 0100-0143 ILLEGAL\r
279 TAD #XTXAD\r
280ACHAR, JMS FINDIT\r
281 CDF CIF\r
282 JMP% #XPSIN\r
283USSPAC, CLA\r
284 TAD P40 / DEFAULT TO SPACE\r
285 JMP ACHAR\r
286OKVAL, TAD P100 / PASS CENTERED AS 100-121\r
287 JMP ACHAR\r
288P100, 100\r
289A22, 22\r
290P44, 44\r
291M166, -166\r
292P60, 60\r
293M15, -15\r
294T2, 2\r
295\f END\r
296\f\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