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