A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / x2.ra
1 / \ eX Y P L O T . R A
2 / \ eF O R X 8 0 - S P
3 /
4 IFSW 1 <ASCIITEST=1 > / TRACE ASCII OUTPUT TO PLOTTER
5 IFNSW 1 <ASCIITEST=0> / NO TRACE
6 /
7 / PART TWO OF DEC'S XYPLOT DEC-S8-LPLTA-A-LA JULY 1973 M.HURLEY
8 / INCLUDED IS THE LATEST UPDATE F4 4.AAAA FROM LIBRARY FORLIB.RL NOV 77
9 / COPIED J.J. ANDRES 1.NOV. 1980
10 / PLOTS,XYPLOT,FACTOR,WHERE,SYMBOL,SYMB(FOR NUMBER ONLY)
11 /
12 /
13 / PLOTTER ROUTINES FOR PDP 8
14 /
15 / VER 1.0 1.NOV. 1980 H.A.
16 / VER 2.0 12.NOV 1980 H.A.
17 / VER 2.1 20.NOV 1980 H.A. CORRECTS BUG IN SYMBOL CONCERNING #XFCTX,#XFCTY
18 / VER 3.0 27.NOV 1980 H.A. INSERTS SYMBOL (999.,999.,....)
19 / VER 3.1 27.NOV.1980 H.A. CORRECTS PEN UP/DOWN TIMING ERROR
20 / VER 3.2 18.JAN.1981 H.A. CORRECTS WHERE AND OVERLAY PROBLEMS
21 / VER 3.3 4.AUG.1982 H.A. REDUCES NUMBER OF EXTERNAL REFERENCES
22 / VER 3.4 24.NOV.1983 H.A. REDUCES ASCII OUTPUT (VARIABLE OUTPUT FORMAT)
23 / VER 3.5 24-APR-1984 H.A. NOW HANDLES X-Y PLOTTER AND X80-SP PLOTTER WITH THE SAME ROUTINE
24 /
25 / UPDATES:
26 / 1. PLEXIT LOCKED OUT THE PLOTTER.
27 / 2. PLOTS DIDN'T DROVE PLOTTER TO THE ORIGIN
28 / * #XONCE IS REMOVED, SO #XNTST IS CALLED FROM PLOTS ALL TIMES
29 / 1-NOV-80 H.A.
30 / 3. FACTOR DID NOT WORK CORRECT ALL THE TIMES.
31 / FACTOR(1),XYPLOT(1,1),FACTOR(2),XYPLOT(1,1) DID NOT WORK
32 / 4. TRUNCATION ERROR IN XYPLOT CAUSED ROUNDING PROBLEMS:
33 / XSTEPS=INT(INT(X/#XINCR)*FACTOR)
34 / * FACTOR NOW WORKS CORRECT IN ANY CASE
35 / * FACTOR NOW HAS AN OPTIONAL SECOND PARAMETER. IF BOTH PRESENT
36 / * THEY SPECIFY THE X-FACTOR AND THE Y-FACTOR.
37 / * A NEGATIVE FACTOR IS NO MORE VALID YET. (ERROR WALKBACK)
38 / * ZERO FACTOR DISABLES PLOTTING.
39 / * XYPLOT NOW COMPUTES XSTEPS=INT(X/#XINCR*FACTOR)
40 / * WHERE HAS GOT AN OPTIONAL FOURTH PARAMETER FOR THE Y-FACTOR.
41 / * IF X AND Y FACTOR DO NOT MATCH AND THERE ARE ONLY THREE PARAMETERS
42 / * AN ERROR WALKBACK IS TAKEN.
43 / 7-NOV-80 H.A.
44 / 5. SYMBOL CALLS #XMBTB TO LOAD THE SYMBOL TABLE
45 / 12-NOV-80 H.A.
46 / 6. CALLING SYMBOL/NUMBER WITH X/Y EQUAL TO 999. WILL REPLACE THE
47 / 999. WITH THE ACTUAL POSITION OF THE PEN. VERY USEFULL IF YOU
48 / ARE EDITING AN OUTPUT LINE USEING SOME CALLS TO SYMBOL & NUMBER.
49 / IF YOU CALL FACTOR PRIOR TO SYMBOL(999.,....) THEN THE POSITION
50 / OF THE PEN IS NEVER CHANGED PRIOR PLOTTING THE SYMBOL. BUT THE
51 / FACTOR IS USED WHEN PLOTTING THE SYMBOL.
52 / 27-NOV-80 H.A.
53 / 7. EACH TIME XYPLOT WAS CALLED IT ISSUED A PEN UP/DOWN COMMAND.
54 / THIS CAUSED A STEP BY STEP MOVING OF THE PEN ALTHOUGH THE
55 / DIRECTION WAS NOT CHANGED. INTERFACE PROBLEM.
56 / NOW WE ISSUE THE PEN MOVE COMMAND ONLY WHEN WE WANT TO CHANGE
57 / THE DIRECTION OF THE PEN. THIS SPEEDS UP THE PLOTTER!
58 / * NOT VALID PEN VALUES (NOT -3 TO 3) CAUSE #ARGERR WITH X0 =1
59 / 27-NOV-80 H.A. A HARD DAY'S NIGHT.... AND MIDNIGHT TOO!
60 / 8. REMOVES BUG IN WHERE ROUTINE
61 / 9. TOO LARGE DELTA X (DELETA Y) CAUSE #ARGER WITH X0=2 (3)
62 / 18-JAN-81 H.A.
63 /
64 \f/
65 / FPP CODE PART CONTAINING PLOTS,PLOT,PLEXIT,WHERE,FACTOR
66 / THIS PROGRAM MAY BE PLACED INTO AN OVERLAY.
67 / IT REFERENCES THE PROGRAM PDPPLT LOCATED IN FIELD 1.
68 /
69 SECT #XYPLT
70 /
71 / REFERENCES INTO FRTS (FIELD 0)
72 /
73 EXTERN #ARGER / WRONG NUMBER OF PARAMETERS
74 EXTERN #REW
75 EXTERN #WRITO
76 EXTERN #RSVO
77 EXTERN #RENDO
78 /
79 / REFERENCES INTO FIELD 1 (PDPPLT)
80 /
81 EXTERN #XETXR
82 EXTERN #XETUP
83 EXTERN #XDPXR
84 EXTERN #XATIO
85 EXTERN #XNPLT
86 EXTERN #XCHTP
87 EXTERN #XCHCK
88 EXTERN #XNTST
89 EXTERN #XDNCK
90 EXTERN #XORGX / LAST ABSOLUTE ORIGIN IN PLOTTER STEPS X (REAL)
91 #XORGY= #XORGX+3
92 #XABSX= #XORGY+3 / ACTUAL ABSOLUTE X POSITION IN STEPS (REAL)
93 #XABSY= #XABSX+3
94 #XOLDP= #XABSY+3 / OLD PEN STATUS
95 #XXOLD= #XOLDP+3 / OLD XPT WITH EFFECT OF FACTOR
96 #XYOLD= #XXOLD+3 / OLD YPT WITH EFFECT OF FACTOR
97 #XPENC= #XYOLD+3 / OLD PEN STATUS ( USED BY SYMBOL, NUMBER)
98 #XINCX= #XPENC+3 / INCREMENT SIZE FOR X STEP MOTOR OF PLOTTER
99 #XINCY= #XINCX+3 / INCREMENT SIZE FOR Y STEP MOTOR OF PLOTTER
100 #XFCTX= #XINCY+3 / X - FACTOR
101 #XFCTY= #XFCTX+3 / Y - FACTOR
102 /
103 / HERES THE INITIALIZATION ROUTINE
104 / STANDARD CALLING SEQUENCE, SHARED BY ALL SUBROUTINES
105 /
106 XRPLOT, 0 / MULTI PURPOSE XRS
107 X0= 0 / AT #ARGER X0 HOLDS THE XYPLOT ERROR NUMBER
108 X1= 1
109 XR1, 0
110 XR2, 0
111 XR3, 0
112 XR4, 0
113 XR5, 0
114 XR6, 0 / NOT USED
115 X7= 7
116 XR7, 0 / NUMBER OF PARAMETERS AT SUBROUTINE CALL
117 WBW, TEXT #XYPLOT# / WALK BACK WORD
118 PLOTXR, SETX XRPLOT
119 SETB BPPLOT
120 BPPLOT, FNOP
121 0
122 0
123 TERM2, F 0.
124 YPT, F 0. / VALUE ACTUALLY PLOTTED WITH EFFECT OF FACTOR
125 XPT, F 0. / X VALUE ACTUALLY PLOTTED WITH EFFECT OF FACTOR
126 TERM1, F 0.
127 ARG1, F 0.
128 ARG2,
129 YDIFF, F 0. / PEN VALUE
130 ORG 10*3+BPPLOT
131 FNOP
132 JA PLOTXR
133 ORG .+1 / TO MAKE A 3 WORD BASE ENTRY FOR PLTRTN
134 PLTRTN, JA .
135 MAJOR, F 0. / HORIZONTAL AXIS MOVE
136 MINOR, F 0. / DIAGONAL AXIS MOVE
137 XACT, F 0.
138 YACT, F 0. / HOLDS X,Y VALUES TYPED IN
139 XDIFF, F 0 / DELTA X
140 P1, F 1.
141 PF2, F 2.
142 P3, F 3.
143 P4, F 4.
144 PF7, F 7.
145 TWO,/ / 0;2;0 = F 0.5
146 PT5, F .5
147 PORS, F 0. / =1 IF ENTERED FROM SYMBOL ROUTINE
148 XCHRPT, F 0. / X,Y VALUES FROM PDP TABLES
149 YCHRPT, F 0.
150 NUMENT, F 0. / INDICATES ENTRY FROM NUMBER SUBROUTINE
151 COSANG, F 0.
152 SINANG, F 0.
153 DEGRAD, F 0.017453293 / RADIANS TO DEGREES
154 F999, F 999.
155 F100, F 100.
156 XREAL, F 0. / FOR ORIGIN AND WHERE RTN
157 YREAL, F 0.
158 CENTSY, F 0. / CENTERED SYMBOL INDICATOR
159 NUMSYM, F 0. / NO. OF CHARACTERS TO PLOT
160 ANGADJ, F 0.
161 P22, F 18. / 22 OCTAL=18 DECIMAL
162 F4095, F 4095. / LARGEST NUMBER FITTING INTO 12 BITS PDP 8 WORD
163 WRP, F 0. / HOLDS PEN CMD FOR FORMATTED OUTPUT TO X80-SP PLOTTER
164 WRX, F 0. / HOLDS X VALUE
165 WRY, F 0. / HOLDS Y VALUE
166 /
167 / - - - - - - - - - - - - -
168 \f 0
169 SYMSTR, JA . / SYMBOL ENTRY
170 JA SYMST / NEEDED TO PICK UP 2 WORD ADDRESSES
171 0
172 BASE 0
173 /
174 / SET UP THE BASE PAGE AND INDEX REGISTERS FOR THE PLOT ROUTINES
175 / PLOTS,XYPLOT,WHERE,FACTOR AND SYMBOL
176 /
177 /
178 PLTSTR, JA . / SAVE TWO WORDS FOR RETURN
179 STARTD
180 FLDA 3*10 / SAVE CALLERS RETURN ARGUMENT LIST
181 FSTA PLTRTN
182 FLDA% 0 / COMPUTE THE NUMBER OF PARAMETERS
183 FSUB 0
184 FSUB# TWO
185 SETX XRPLOT
186 LDX 1,1 / DIVIDE BY TWO
187 ALN 1
188 FNEG / MAKE COUNTER
189 ATX X7 / AND BUMP INTO X7
190 FLDA 0 / POINTER TO THE PARAMETER LIST --> FAC
191 SETB BPPLOT
192 BASE BPPLOT
193 FSTA ARG1 / POINTER TO PARAMETER LIST --> ARG1
194 JA PLTSTR / 1 --> X1, INDEX TO PARAMETER LIST
195 \f/
196 / XYPLOT SUBROUTINE
197 / CALL XYPLOT (XPT,YPT,PENCMD)
198 /
199 / REAL XPT,YPT AND MUST BE POSSIBLE TO FIX INTO 24 BIT NUMBER
200 / INTEGER PENCMD (-3,-2,2,3 AND NOTHING ELSE)
201 /
202 / ARGERR ERRORS:
203 / 1 BAD PENCMD
204 / 2 DELTA X EXCEEDS 4095
205 / 3 DELTA Y EXCEEDS 4095
206 / 4 XPT UNNORMALIZED OR TO LARGE ( FOR 24 BIT FRACTIONAL)
207 / 5 YPT "" "" "
208 /
209 /
210 ENTRY XYPLOT
211 WB0, TEXT 'XYPLOT' / INSERT THE CORRECT WALK BACK WORD
212 XYPLOT,
213 FLDA# WB0 / INSERT THE CORRECT WALK BACK WORD
214 FSTA WBW / IN FRONT OF THE BASE PAGE
215 JSA PLTSTR / SET UP THE BASE PAGE AND X REGISTERS
216 SYMENT, FLDA% ARG1,1
217 FSTA XPT
218 FLDA% ARG1,1+
219 FSTA YPT
220 FLDA% ARG1,1+
221 FSTA YDIFF / VALUE OF PEN
222 STARTF
223 FLDA% XPT / X POINT
224 FDIV #XINCX / ALL INTERNAL CALCULATIONS DONE IN TERMS OF
225 / PLOTTING INTERVALS, HENCE INTEGERS SO
226 FMUL #XFCTX
227 / SAVE STEPS DONE
228 FSTA XACT / TEMP SAVE OF FAC
229 FADD #XORGX / REMEMBER THE X OFFSET
230 FSTA #XABSX / ABSOLUTE NUMBER OF STEPS IN REAL
231 FLDA XACT / RESTORE FAC
232 /
233 JAL XPTERR / IF IT IS IMPOSSIBLE TO FIX XPT THEN ERROR OFF
234 JA XPTOK
235 XPTERR, LDX 4,X0 / WITH #ARGER 4
236 TRAP4 #ARGER
237 XPTOK,
238 JSA MAKINT / INTERGERIZE IT
239 FSTA XACT / WITH FACTOR
240 FSTA XPT / WITH EFFECT OF FACTOR
241 FLDA% YPT
242 FDIV #XINCY
243 FMUL #XFCTY
244 FSTA YACT
245 FADD #XORGY / ADD THE ORIGIN Y
246 FSTA #XABSY / HERE WE STORE THE ABSOLUTE NUMBER OF STEPS DONE
247 FLDA YACT / RESTORE FAC
248 /
249 JAL YPTERR / IF IT IS IMPOSSIBLE TO FIX YPT THEN WE ERROR OFF
250 JA YPTOK
251 YPTERR, LDX 5,X0 / WITH #ARGERR 5
252 TRAP4 #ARGER
253 YPTOK,
254 JSA MAKINT / INTERGERIZE IT
255 FSTA YACT
256 FSTA YPT / WITH EFFECT OF FACTOR
257 FLDA% YDIFF / 2=DOWN, 3=UP, NEG=NEW ORG
258 FSTA #XPENC / PEN CMD --> #XPENC
259 JGE MORPEN
260 FNEG
261 MORPEN, JSA MAKINT
262 SETX #XETXR
263 ATX 0 / ABS VALUE PEN --> #XETXR
264 XTA 0 / FOR THE FPP SIMULATOR
265 SETX XRPLOT
266 FSTA YDIFF / SAVE NEW STATUS OF PEN
267 FSUB P1 / IF PEN LT 2 THEN
268 JLE PENERR / GOTO PENERR EXIT
269 FSUB PF2 / PASS ONLY 2,3
270 JLE ALEGAL / GOOD BOY
271 PENERR, FLDA YDIFF / PEN --> FAC
272 LDX 1,0 / BAD PEN CMD CAUSES XYPLOT ERROR 1
273 TRAP4 #ARGERR / FUCK OFF
274 ALEGAL,
275 FLDA YDIFF / RESTORE THE NEW VALUE OF PEN
276 FSUB #XOLDP / COMPARE WITH THE OLD VALUE
277 JEQ NOCHNG / IF THEY MATCH THEN GOTO NOCHANGE
278 FLDA PLTTYP / WE CHANGE THE PEN ONLY IF X-Y PLOTTER OUTPUT DESIRED
279 FSUB PF2 / 1 OR 3 FOR X-Y PLOTTER OUTPUT
280 JEQ NOCHNG / NO X-Y PLOTTER, SO NO PEN CHANGE CMD
281 TRAP4 #XETUP / ELSE SET UP THE NEW PEN
282 NOCHNG,
283 FLDA YDIFF / SAVE THE NEW PEN STATUS FOR THE NEXT CALL
284 FSTA #XOLDP
285 JA REALPT
286 /
287 /
288 MAKINT, JA . / FOR ALL THOSE INTEGERIZATIONS REQUIRED
289 FADD PT5 / ROUND THE VALUE
290 ALN 0 / GET RID OF FRACTIONAL PART
291 FNORM / NORMALIZE IT FOR OTHER FPP OPERXATIONS
292 JA MAKINT
293 \f/ HERES THE CALCULATING PART OF THE PLOT ROUTINES
294 PRERL1, FCLA
295 PREREL, JA . / RTN USED AS SUBROUTINE
296 REALPT, FLDA XPT / AND JA'D TO
297 FSUB #XXOLD / COMPARE NEW X AND OLD
298 FSTA XDIFF
299 JGE ABSDX
300 FNEG
301 ABSDX, FSTA TERM1 / ABS DELTA X
302 /
303 FSUB F4095 / IF THE DELTA X DOES NOT FIT INTO
304 JLE DXOK / A 12 BIT PDP 8 WORD THEN TAKE ERROR 2
305 LDX 2,0 / ELSE CONTINUE FI
306 TRAP4 #ARGER / HOME TO CCL
307 DXOK, /
308 /
309 FLDA YPT
310 FSUB #XYOLD / SAME FOR Y PNTS
311 FSTA YDIFF
312 JLE DELXY
313 FNEG
314 DELXY, FADDM TERM1 / DX-DY
315 /
316 FNEG / ABS DELTA Y --> FAC
317 FSUB F4095 / IF DELTA Y DOESN'T FIT INTO 12 BITS THEN
318 JLE DYOK / WE ERROR OFF ELSE CONTINUE FI
319 LDX 3,0 / THIS IS ERROR 3
320 TRAP4 #ARGER
321 DYOK,/
322 FLDA #XOLDP / GET ACTUAL PEN STATUS
323 FSUB P3
324 JLT DP0
325 FLDA# SDP / PEN 2 ( PEN UP) [# MUST BE HERE BECAUSE WE ARE IN BASE PAGE]
326 JA DP1
327 SDP, TEXT 'P' / PEN = 3
328 SDK, TEXT 'K' / PEN = 2
329 DP0,
330 FLDA# SDK
331 DP1, FSTA WRP / STORE PEN CMD INTO FORMATTED WRITE RTN
332 FLDA #XABSY
333 FSTA WRY
334 FLDA #XABSX
335 FSTA WRX
336 FLDA PLTTYP / FORMATTED OUTPUT TO X80-SP PLOTTER
337 FSUB PF2 / REMEMBER: IF X80-SP THEN PLTTYP:=2
338 JLT NX1
339 JSA WRITEIT / DO FORMATTED I/O
340 JA NX1
341 \f/
342 / FORMATTED WRITE ROUTINE
343 / ENTRY: STARTF, DESTROYED FAC
344 / PARAMETERS ARE STORED INTO WRP,WRX,WRY PRIOR TO CALL
345 /
346 WRITEIT, ORG .+2
347 TRAP3 #WRITO
348 JA UNIX80
349 IFNZRO ASCIITEST < JA FORM0 >
350 IFZERO ASCIITEST < JA FORM1 >
351 FLDA WRP
352 TRAP3 #RSVO
353 /
354 / HERE WE COMPUTE THE FORMAT FORM1
355 /
356 FLDA WRY / HERE WE DETERMINE THE FIELD WIDTH FOR THE ABSOLUTE NUMBER OF STEPS
357 JSA COLUMNS / COMPUTE MAGNITUDE OF NUMBER, SWITCH TO STARTD
358 FADD FORM1C / ADD LEADING SPACES
359 FSTA FORM1A / AND INSERT INTO FORMAT (I.E. 2I,...)
360 STARTF
361 FLDA WRX
362 FNEG / WE OUTPUT THE NEGATIVE NUMBER
363 JSA COLUMNS / COMPUTE MAGNITUDE OF NUMBER, SWITCH TO STARTD !!
364 FADD FORM1D / ADD '1X ' TO THE FORMAT
365 FSTA FORM1B / INSERT SECOND FORMAT STATEMENT
366 STARTF
367 /
368 / WRITE (2,FORM1) WRP,-WRY,WRX
369 / DIAGNOSTIC OUTPUT:
370 / WRITE (2,FORM0) WRP,#XPENC,#XORGX,#XFCTX,#XINCX,XACT
371 / * ,#XORGY,#XFCTY,#XINCY,YACT,FORM1,-WRY,WRX
372 /
373 IFNZRO ASCIITEST < FNOP;FNOP >
374 IFZERO ASCIITEST < JA DP4711 >
375 FLDA #XPENC
376 TRAP3 #RSVO
377 FLDA #XORGX
378 TRAP3 #RSVO
379 FLDA #XFCTX
380 TRAP3 #RSVO
381 FLDA #XINCX
382 TRAP3 #RSVO
383 FLDA XACT
384 TRAP3 #RSVO
385 FLDA #XORGY
386 TRAP3 #RSVO
387 FLDA #XFCTY
388 TRAP3 #RSVO
389 FLDA #XINCY
390 TRAP3 #RSVO
391 FLDA YACT
392 TRAP3 #RSVO
393 FLDA FORM1
394 TRAP3 #RSVO
395 FLDA FORM1+3
396 TRAP3 #RSVO
397 FLDA FORM1+6
398 TRAP3 #RSVO
399 DP4711,/
400 FLDA WRY / AND NOW WE OUTPUT THEM UNDER CONTROL OF FORM1
401 TRAP3 #RSVO
402 FLDA WRX
403 FNEG
404 TRAP3 #RSVO
405 TRAP3 #RENDO
406 /
407 JA WRITEIT
408 /
409 / SUBROUTINE TO COMPUTE FORMAT FOR OUTPUT
410 / ENTRY: WITH STARTF, FAC CONTAINS NUMBER (POS. OR NEG.)
411 / RETURN: FAC CONTAINS FORMAT, DOUBLE PRECISION MODE (STARTD)!
412 / DESTROYED: X1
413 /
414 COLUMNS, ORG .+2
415 LDX 1,X1 / HERE WE COUNT THE DIGITS USED TO PRINT THE NUMBER
416 JGE LOOP
417 ADDX 1,X1 / NEGATIVE NUMBERS: ONE MORE COL FOR SIGN
418 FNEG / I DO NOT KNOW IF IT MUST BE DONE, DO YOU KNOW?
419 LOOP,
420 FDIV TEN
421 JSA MAKINT / INTEGER DIVISION, STRIP OFF REMAINDER
422 JEQ DONE
423 JXN LOOP,X1+ / COUNT THE NUMBER OF DIVISIONS BY 10
424 DONE,
425 STARTD
426 XTA X1
427 FADD C60 / CONVERT TO ASCII
428 JA COLUMNS
429 TEN, F 10.
430 C60, 0;1160 / I0
431 /
432 FORM0, TEXT #(1X,A1,A6,2(I7,2F9.3,I8),2X,3A6,2I6)#
433 FORM1, TEXT #(1XA1,#
434 FORM1A, TEXT # I0, #
435 FORM1B, TEXT #1XI0) #
436 FORM1C, TEXT # #; 0
437 FORM1D, TEXT #1X#; 0
438 \fNX1,
439 /
440 FLDA TERM1 / DETERMINE OCTANT + MAJOR AXIS
441 JGT XMAJ
442 FLDA YDIFF / Y AXIS IS MAJOR
443 FSTA MAJOR
444 FLDA XDIFF
445 FSTA MINOR
446 JA KNOWOC
447 XMAJ, FLDA XDIFF / X AXIS MAJOR
448 FSTA MAJOR
449 FLDA YDIFF
450 FSTA MINOR
451 KNOWOC, LDX 2,1 / 2*OCTANT VALUE COLLECTED IN XR1
452 / USES A SPECIAL (NON SEQUENTIAL) ORDERING
453 FLDA XDIFF
454 JLE .+4
455 ADDX 10,1
456 FLDA YDIFF
457 JLE .+4
458 ADDX 4,1
459 FLDA TERM1
460 JLE .+4
461 ADDX 2,1 / KEEP IT IN XR1
462 LDX 0,2
463 FLDA MAJOR / GET MAJOR MOVE
464 JGT POSMAJ / NEED AS ABS. VALUE
465 JEQ NOTHIN / IF NO MAJOR MOVES, THEN NO MOVES
466 FNEG
467 FSTA MAJOR / NO ABS. VALUE
468 POSMAJ, JSA MAKINT
469 SETX #XDPXR
470 ATX 1 / PASS THIS TO PDP CODE
471 SETX XRPLOT
472 / USE 2 WORD #XATIO IN PDP CODE TO DET SEQ OF MOVES
473 FLDA MINOR
474 JGT POSMIN / ABS VALUE
475 JEQ ZROCAS
476 FNEG
477 POSMIN, FDIV MAJOR / FORM #XATIO OF MINOR TO MAJOR MOVES
478 ALN 2
479 ZROCAS, FSTA #XATIO / DOWN TO PDP CODE
480 XTA 1
481 SETX #XDPXR / GET 2*OCTATNT
482 ATX 0
483 SETX XRPLOT
484 FLDA PLTTYP / X-Y OUTPUT ONLY TO X-Y PLOTTER
485 FSUB PF2
486 JEQ NOTHIN
487 TRAP4 #XNPLT
488 \fNOTHIN, FLDA PORS
489 JEQ REGPLT / 0 MEANS WAS FROM XYPLOT
490 JLT SYMSET / WAS A MOVE IN SYMBOL
491 FCLA / IS FIRST MOVE IN SYMBOL (0 ORG)
492 FSTA #XXOLD
493 FSTA #XYOLD
494 FSTA PORS
495 JA SYMSTR
496 REGPLT, FLDA #XPENC
497 JLT ZEROLD / NEQ MEANS ZERO THE ORG
498 / SET X AND Y FOR NEXT MOVE TO START AT END OF THIS MOVE
499 FLDA XACT
500 FSTA #XXOLD
501 FLDA YACT
502 FSTA #XYOLD
503 JA PLTRTN
504 SYMSET, FLDA XPT / CONT FROM CURRENT POINT
505 FSTA #XXOLD
506 FLDA YPT
507 FSTA #XYOLD
508 JA PRERL1
509 /
510 / NEGATIVE PEN STATUS, SO WE ZERO THE ORIGIN
511 /
512 ZEROLD,
513 FLDA #XABSX / SAVE THE ACTUAL PEN POSITION (MOTOR STEPS)
514 FSTA #XORGX
515 FLDA #XABSY
516 FSTA #XORGY
517 FCLA
518 FSTA #XXOLD
519 FSTA #XYOLD
520 JA PLTRTN
521 ENTRY SYMSTR
522 SYMST,
523 FLDA P1 / ENTERED WITH 36 BIT MODE TURNED ON
524 FSTA PORS / SET THE FROM SYMBOL FLAG
525 STARTD / USED BY SYMBOL FOR ORIGIN PLOT
526 FLDA SYMSTR / GET START OF ARG CHAIN
527 FSTA ARG1
528 LDX 1,1
529 JA SYMENT
530 \f ENTRY WHERE / WITHOUT EFFECT OF FACTOR
531 WB1, TEXT 'WHERE ' / THE WALK BACK WORD
532 WHERE,
533 FLDA# WB1
534 FSTA WBW
535 JSA PLTSTR
536 JXN WH0,7 / NO PARAMETERS AT ALL THEN
537 TRAP4 #ARGER / ABORT THE USER PROGRAM
538 / WARNING: WHERE RETURNS A WRONG RESULT IF YOU CALL FACTOR PRIOR
539 / TO THE WHERE ROUTINE WITHOUT PLOTTING WITH XYPLOT.
540 WH0,
541 FLDA% ARG1,1
542 FSTA TERM1 / ADDRESS OF X (FIRST PARAMETER)
543 FLDA% ARG1,1+
544 FSTA YDIFF / SAVE ADDRESS OF Y (SECOND PARAMETER)
545 STARTF
546 FLDA #XXOLD
547 FMUL #XINCX
548 FDIV #XFCTX / WHERE RETURNS X WITHOUT EFFECT OF FACTOR
549 FSTA% TERM1
550 JXN WH1,7+ / IF ONLY ONE PARAMETER, THEN ABORT USER
551 TRAP4 #ARGER
552 WH1,
553 FLDA #XYOLD
554 FMUL #XINCY
555 FDIV #XFCTY / RETURNED WITHOUT EFFECT OF FACTOR
556 FSTA% YDIFF / SEND BACK THE VALUES
557 JXN WH2,7+ / IF ONLY TWO PARAMETERS, THEN ABORT USER
558 TRAP4 #ARGER
559 WH2,
560 STARTD
561 FLDA% ARG1,1+
562 FSTA ARG2 / ADR. OF X -FACTOR (THIRD PARAMETER)
563 FLDA% ARG1,1+
564 FSTA ARG1 / ADR. OF Y -FACTOR (FOURTH PARAMETER) --> ARG1
565 STARTF
566 FLDA #XFCTX / IF THE X AND Y FACTOR MATCH THEN
567 FSUB #XFCTY
568 JNE WHXYF / WE NEED THREE PARAMETERS ONLY, ELSE WE GO WHXYF
569 FLDA #XFCTX
570 FSTA% ARG2
571 JXN PLTRTN,X7+ / IF THERE ARE ONLY THREE PARAMETERS THEN RETURN
572 FSTA% ARG1 / ELSE INSERT FACTOR INTO FOURTH PARAMETER AND
573 JA PLTRTN / RETURN
574 WHXYF, / WE REQUIRE X AND Y FACTOR PARAMETERS
575 FLDA #XFCTX
576 FSTA% ARG2 / INSERT THE X FACTOR INTO THE OUTPUT
577 JXN WH3,X7+
578 TRAP4 #ARGER / SORRY, BUT THERE ARE NOT ENOUGH ARGUMENTS
579 WH3,
580 FLDA #XFCTY
581 FSTA% ARG1
582 JA PLTRTN
583 ENTRY FACTOR / RESET FACTOR VALUE
584 WB2, TEXT 'FACTOR'
585 FACTOR,
586 FLDA# WB2
587 FSTA WBW
588 JSA PLTSTR
589 JXN FA0,7 / IF THERE ARE NO PARAMETERS AT ALL THEN
590 TRAP4 #ARGER / ABORT USER PROGRAM
591 FA0,
592 FLDA% ARG1,1
593 FSTA ARG2
594 STARTF
595 FLDA% ARG2
596 JGE FA1 / IF NEGATIVE FACTOR THEN
597 TRAP4 #ARGER / ABORT USER PROGRAM ELSE
598 FA1,
599 FSTA #XFCTX / STORE X AND Y FACTOR
600 FSTA #XFCTY / ONE PARAMETER MEANS X&Y GET THE SAME FACTOR
601 JXN FA3,7+
602 JA FACRTN
603 FA3,
604 STARTD / TWO PARAMETERS, GET THE Y FACTOR
605 FLDA% ARG1,1+
606 FSTA ARG2
607 STARTF
608 FLDA% ARG2
609 JGE FA2 / IF NEGATIVE FACTOR THEN
610 TRAP4 #ARGER / ABORT USER PROGRAM
611 FA2,
612 FSTA #XFCTY
613 FACRTN,
614 STARTF
615 JA PLTRTN
616 \f/ MUST DO A PLOTS AS FIRST ROUTINE IN ANY PLOTTING SEQUENCE
617 / USER SPECIFIES INCREMENT AND MACHINE TYPE (0=8/E, 1=12,8/I,8/L)
618 ENTRY PLOTS
619 WB3, TEXT 'PLOTS '
620 /
621 / CONSTANTS USED IN PLOTS
622 /
623 INXYPL, F 0.0095 / INCREMENT SIZE XY PLOTTER
624 INX80Y, F 0.02648 / INCREMENT SIZE X80-SP X DIRECTION (96 CHAR. LINE)
625 INX80X, F 0.03968 / INCREMENT SIZE X80-SP Y DIRECTION (6 STEPS PER LINE)
626 FORM2, TEXT "(' [STP 6'/' MC1'/' P 0 0')"
627 FORM3, TEXT "(' STP 8]')"
628 UNIX80, F 2.
629 PLTTYP, F 0. / HERE WE STORE THE PLOTTER TYPE DESIRED
630 /
631 /
632 PLOTS, / CALL PLOTS (PLOTTER TYPE, MACHINE TYPE)
633 /
634 / INTEGER PLOTTER TYPE: 1 XY PLOTTER
635 / 2 X80-SP PRINTER PLOTTER
636 / 3 BOTH (DOESN'T WORK TODAY BECAUSE THERE ARE DIFFERENT X-Y INCREMENTS FOR EACH PLOTTER)
637 / INTEGER MACHINE TYPE: 0 PDP 8/E
638 / 1 OTHER PDP 8 OR 12
639 /
640
641 FLDA# WB3
642 FSTA WBW
643 JSA PLTSTR
644 FLDA% ARG1,1
645 FSTA XPT
646 FLDA% ARG1,1+
647 FSTA ARG1
648 STARTF / THIS ROUTINE SETS UP A LOT OF CONSTANTS
649 FLDA% XPT / LOAD FIRST ARGUMENT (PLOTTER TYPE ) --> FAC
650 JSA MAKINT / INTEGERIZE IT
651 FSTA PLTTYP / HERE WE SAVE THE PLOTTER DEVICE NUMBER
652 JLE PLTSER / WRONG INPUT PARAMETER, ERROR OFF
653 FSUB P1
654 JGT PLS1 / 2 OR LARGER
655 FLDA INXYPL / XY PLOTTER INCREMENT
656 FSTA #XINCX
657 FSTA #XINCY
658 JA MACHIN
659 PLS1, FSUB P1
660 JGT PLTSER / BOTH PLOTTER TYPES NOT ALLOWED TODAY
661 FLDA INX80X
662 FSTA #XINCX / X80 SP PRINTER PLOTTER
663 FLDA INX80Y
664 FSTA #XINCY
665 TRAP3 #WRITO
666 JA UNIX80
667 JA FORM2 / ' [STP6'/' MC1'/' P 0 0'
668 TRAP3 #RENDO
669 MACHIN,
670 FLDA% ARG1
671 JEQ EIGHTE
672 FLDA P22 / SET MATCHTP TO 22 IF NON-8/E
673 EIGHTE, SETX #XCHTP
674 ATX 0 / 0=8/E, 022=12,8/I,8/L
675 XTA 0
676 SETX #XCHCK / FOR INITIALISATION CHECK
677 ATX 0
678 SETX XRPLOT
679 TRAP4 #XNTST
680 FLDA P1
681 FSTA #XFCTX / FACTOR=1 INITIALLY
682 FSTA #XFCTY
683 FCLA
684 FSTA #XOLDP / AND REALLY MOVE IT!
685 FSTA #XPENC / SO WILL DO FIRST PEN MOVEMENT
686 FSTA #XXOLD
687 FSTA #XYOLD
688 FSTA #XORGX
689 FSTA #XORGY
690 FSTA PORS
691 JA PLTRTN
692 ENTRY PLEXIT / BE SHURE ALL DONE
693 WB4, TEXT 'PLEXIT'
694 PLEXIT,
695 FLDA# WB4
696 FSTA WBW
697 JSA PLTSTR
698 STARTF
699 FLDA PLTTYP
700 FSUB PF2
701 JLT PLEXI1
702 TRAP3 #WRITO / X80-SP PLOTTER EXIT ROUTINE
703 JA UNIX80
704 JA FORM3
705 TRAP3 #RENDO
706 TRAP3 #REW / OUTPUT THE BUFFER AND RESET OUTPUT UNIT ( NOT GOOD FOR FILE STRUCTURED DEVICES)
707 JA PLTRTN
708 /
709 PLEXI1, / X-Y PLOTTER EXIT ROUTINE
710 TRAP4 #XDNCK
711 JA PLTRTN
712 /
713 PLTSER, / PLOTS ERROR RETURN ROUTINE
714 LDX 1,X0 / ERROR # 1 FOR INVALID PLOTTER TYPE
715 TRAP4 #ARGER \f SECT #SYMBL
716 EXTERN SIN
717 EXTERN COS
718 EXTERN #XMBTB / HERE STARTS THE SYMBOL TABLE
719 /
720 / EXTERNAL REFERENCES INTO FIELD 1 (PDPPLT)
721 /
722 EXTERN #XTXAD
723 EXTERN #XLTCD
724 EXTERN #XPNOP
725 EXTERN #XLEFT
726 EXTERN #XRGHT
727 EXTERN #XNDLF
728 EXTERN #XNDRT
729 EXTERN #XPSNM
730 EXTERN #XPSIN
731 /
732 /
733 ENTRY SYMBOL
734 WB5, TEXT 'SYMBOL'
735 SYMBOL,
736 FLDA# WB5
737 FSTA WBW
738 JSA PLTSTR
739 JSR #XMBTB / LOAD THE SYMBOL TABLE ( SYMBTB )
740 SYM1, FLDA% ARG1,1
741 FSTA XPT / X POINT
742 FLDA% ARG1,1+
743 FSTA YPT / Y VALUE
744 FLDA% ARG1,1+
745 FSTA YDIFF / HEIGHT
746 FLDA% ARG1,1+
747 FSTA TERM1 / TEXT
748 FLDA% ARG1,1+
749 FSTA TERM2 / ANGLE
750 FLDA% ARG1,1+
751 FSTA ARG1 / NUMBER CHARS.
752 STARTF
753 FLDA% TERM2
754 FMUL DEGRAD / CONVERT TO RADIANS
755 FSTA XCHRPT / THEN DONT NEED SIND
756 FLDA% XPT
757 FSTA COSANG / VALUE OF X
758 FSUB F999 / IF X NEQ 999 THEN
759 JNE SY0 / WE USE THE X VALUE SPECIFIED ELSE
760 FLDA #XXOLD / WE START WITH THE OLD VALUE
761 FMUL #XINCX / THIS WILL CAUSE SOME TRUNCATION ERROR
762 FDIV #XFCTX / IN XYPLOT ROUTINE BUT THE ERROR IS SMALL
763 FSTA COSANG / AND WE HOPE FAC > 0 BUT THIS MUST NOT BE SO!
764 SY0,
765 FLDA% YPT
766 FSTA SINANG
767 FSUB F999 / IF Y NEQ 999 THEN
768 JNE SY1 / WE USE THE Y VALUE SPECIFIED ELSE
769 FLDA #XYOLD / WE START WITH THE OLD Y VALUE
770 FMUL #XINCY / THIS CAUSES SOME TRUNCATION ERRORS
771 FDIV #XFCTY
772 FSTA SINANG
773 SY1,
774 FCLA
775 FSTA #XTXAD
776 FSTA #XPENC / SO ALWAYS DOES INITIAL PEN U/D
777 FSTA CENTSY
778 FLDA TERM1 / GET TEXT ADDRESS
779 FSTA #XTXAD / PUT IT DOWN IN PDP PART
780 \f FLDA% YDIFF / ASSUME ITS A REGULAR
781 JGE NOTNEG / NEGATIVE SIZE IS NOT NICE
782 FNEG
783 NOTNEG, FDIV PF7 / ADJUST LATER IF A CENT
784 FSTA ANGADJ
785 FLDA% ARG1 / SHOWNS NUM. CHARS + PEN STATUS
786 FSTA NUMSYM
787 JGE REGSYM / GT OR =0 IS REG SYM
788 FLDA% TERM1 / CHECK FOR REG CHAR PASSED
789 FSUB F100 / AS AN INTEGER EQUIV.
790 JLT INTEQ / ITS A INTEGER EQUIV
791 FLDA% YDIFF / CENTERED SYMBOL
792 JGE NOTNG1
793 FNEG
794 NOTNG1, FDIV P4
795 FSTA ANGADJ
796 FLDA NUMSYM / -1=PEN UP, -2=PEN DOWN (CNTRD ONLY)
797 FADD P1
798 JGE UPPEN / MOVE WITH PEN UP
799 FSTA CENTSY / NEG MEANS DOWN FROM THE START
800 PTITON, FLDA PF2
801 CPEN, FSTA YCHRPT / =-2 FOR DOWN (CENT. + INTEQ ONLY)
802 / -3 FOR UP FOR ALL SYMBOLS + INTEQ
803 JSA SYMSTR / PLOT ORIGIN
804 JA .+10
805 JA COSANG
806 JA SINANG
807 JA YCHRPT
808 FLDA XPT
809 FMUL #XFCTX
810 FSTA XREAL / KEEP TRACK OF PASSED VALUES
811 FLDA YPT
812 FMUL #XFCTY
813 FSTA YREAL
814 JSA PENUP
815 FLDA CENTSY
816 JLE PENOK
817 JSA PNDOWN / PUT PEN DOWN NOW (CENT ONLY)
818 PENOK, JSR SIN
819 JA .+4
820 JA XCHRPT
821 FMUL ANGADJ
822 FSTA SINANG / SAVE SIN+HGT, USE FOR ALL VALUES
823 JSR COS
824 JA .+4
825 JA XCHRPT
826 FMUL ANGADJ
827 FSTA COSANG / COS(ANGLE)+HGT (IN INCREMENTS NOW)
828 LDX 0,4 / ZERO STEP COUNT
829 FLDA NUMENT
830 JGT NUM2 / JUMP IF FROM NUMBER
831 JA FSTLFT
832 UPPEN, FLDA P3 /
833 FSTA CENTSY / PUT PEN DOWN AFTER INITIAL MOVE
834 JA CPEN / MOVE WITH PEN UP
835 \fPENSET, JSA PNDOWN
836 ONEXY, JA .
837 SETX #XLTCD
838 XTA 2 / SET Y
839 FSTA YCHRPT
840 XTA 1 / GET X
841 FSTA XCHRPT / GET FIRST MOVE
842 SETX XRPLOT
843 FSUB PF7 / 7,0=PEN UP, 7,7=END
844 JEQ PENUPM
845 FLDA CENTSY
846 JEQ CALALL / CENTEREDS REQUIRE MODIFIED ORIGIN
847 FLDA PF2
848 FNEG
849 FADDM XCHRPT
850 FADDM YCHRPT
851 CALALL, JSA CALANG
852 JXN PENSET,5 / PUT PEN BACK DOWN IF NEG
853 JA ONEXY
854 INTEQ, FLDA NUMSYM / CHECK ON PEN
855 FADD P1
856 JLT PTITON
857 REGSYM, FLDA P3
858 JA CPEN
859 PENUPM, JSA PENUP
860 FLDA YCHRPT / CHECK FOR 7,7 END
861 FSUB PF7
862 JEQ NXTCHR / JUMP IF END OF CHARACTER
863 JA ONEXY / ON TO NEXT PAIR
864 PENUP, JA .
865 LDX 1,5 / SET FOR PEN UP
866 SETX #XDPXR
867 LDX 0,0 / PASS A ZERO FOR UP
868 SETX XRPLOT
869 / TRAP4 #XPNOP
870 FLDA# SDP / 'P' PEN UP
871 FSTA SYMPEN
872 JA PENUP
873 PNDOWN, JA .
874 SETX #XDPXR
875 LDX 1,0 / PASS A ONE FOR DOWN
876 SETX XRPLOT
877 / TRAP4 #XPNOP
878 FLDA# SDK / 'K' PEN DOWN
879 FSTA SYMPEN
880 LDX 0,5
881 JA PNDOWN
882 \fSYMPEN, F 0.0
883 CALANG, JA .
884 FLDA YCHRPT
885 FDIV #XINCY
886 FSTA YCHRPT / Y MOVE AS STEPS (UNITERGERIZED)
887 FMUL SINANG
888 FNEG
889 FSTA TERM1 / =-SINA*Y
890 FLDA XCHRPT
891 FDIV #XINCX
892 FSTA XCHRPT
893 FMUL COSANG
894 FADD TERM1
895 FMUL #XFCTX
896 JSA MAKINT
897 FSTA XACT / FOR AT END OF TEXT
898 FSTA XPT / X*COSA+OLDX-SINA*Y
899 / REQUIRES AN OLDX+OLDY TERM, BUT I DO THIS ALL REL TO A
900 / LOGICAL 0,0 FOR EACH CHAR, SO I #XLEFT THEM OUT.
901 FLDA YCHRPT
902 FMUL COSANG
903 FSTA TERM1 / COSA*Y
904 FLDA XCHRPT
905 FMUL SINANG
906 FADD TERM1
907 FMUL #XFCTY
908 JSA MAKINT
909 FSTA YACT
910 FSTA YPT / NEWX*SINA*OLDY*COSA*Y
911 FLDA P1
912 FSTA #XPENC / USE SAME ORIGIN THROUOUT THE LETTER
913 FNEG
914 FSTA PORS
915 / JSA PREREL / PEN MUST BE IN NEC POS BY NOW
916 FLDA SYMPEN
917 FSTA WRP
918 FLDA YREAL
919 FDIV #XFCTY
920 FADD YPT
921 FADD #XORGY
922 FSTA WRY
923 FLDA XREAL
924 FDIV #XFCTX
925 FADD XPT
926 FADD #XORGX
927 FSTA WRX
928 JSA WRITEIT
929 JA CALANG
930 \fLEFTJS, XTA 4 / NUM OF MOVES
931 SETX #XLTCD
932 ATX 0 / PASS NUMBER OF STEPS INTO LETTER
933 SETX XRPLOT
934 TRAP4 #XLEFT / RETURN WITH A X,Y PAIR
935 JSA ONEXY
936 XTA 4
937 SETX #XLTCD
938 ATX 0 / STEP COUNT
939 SETX XRPLOT
940 JNE NOTFST / CHANGE IF BEFORE FIRST MOVE OF CHARACTER
941 JSA PNDOWN / PUT PEN DOWN NOW
942 NOTFST, TRAP4 #XRGHT / SET NEXT XY PAIR
943 JSA ONEXY
944 ADDX 1,4 / UPDATE COUNT
945 JA LEFTJS / 77 AT END OF CHAR USED TO DET END
946 \fCENTEX, JSA PENUP
947 JA CENTOO
948 NXTCHR, FLDA CENTSY
949 JNE CENTEX / LEAVE PEN AT CENTER FOR CENTS ONLY
950 FSTA YCHRPT
951 FLDA PF7
952 FSTA XCHRPT / MOVE PEN TO 7,0 FOR REG CHARS
953 JSA CALANG / PLOT IT
954 FLDA XACT / UPDATE COLLECTIVE ENDING X VALUE
955 FMUL #XFCTX / WITH EFFECT OF FACTOR
956 FADDM XREAL / ALSO WITH EFFECT OF FACTOR
957 FLDA YACT / UPDATE COLLECTIVE ENDING Y VALUE
958 FMUL #XFCTY / WITH EFFECT OF FACTOR
959 FADDM YREAL
960 CENTOO, LDX 0,4 / ZERO STEP NUM WITHIN CHAR
961 FCLA
962 FSTA #XXOLD
963 FSTA #XYOLD
964 FLDA P1
965 FNEG
966 FADD NUMSYM / UPDATE COUNTER
967 JLE SYMDON / NO MORE
968 FSTA NUMSYM / MORE, SAVE COUNT
969 FLDA NUMENT
970 JGT NUM3 / EXIT FOR NUM SUBR
971 FCLA
972 JXN RTCHAR,3 / 1=CHAR IS #XRGHT SIX BITS
973 FSTLFT, LDX 1,3 / POINT TO #XRGHT 6 WHEN TIME FOR NEXT CHAR
974 FLDA NUMSYM
975 JLT NUM5 / JUMP IF CENTERED SYM OR INTEQ
976 / CENTEREDS + INTEQ EQUIV PASSING 3 WORD VALUE IN NUM5
977 / REG SYM USES PDP ROUTINE TO GET ONE WORD OF LIST
978 FCLA
979 TRAP4 #XNDLF
980 JA LEFTJS / GO PLOT THE ACTUAL CHAR
981 RTCHAR, LDX 0,3 / POINT TO #XLEFT 6 BITS FOR NEXT TIME
982 TRAP4 #XNDRT
983 JA LEFTJS
984 SYMDON, FCLA
985 FSTA PORS
986 FSTA NUMENT
987 FLDA XREAL / UPDATES ORG X VALUE
988 FDIV #XFCTX
989 JSA MAKINT
990 FSTA #XXOLD
991 FLDA YREAL / UPDATES ORG Y VALUE
992 FDIV #XFCTY
993 JSA MAKINT
994 FSTA #XYOLD
995 JA PLTRTN / NOW CAN CONTINUE PLOT FROM HERE
996 \f/ SPECIAL ENTRY FOR NUMBER SUBROUTINE
997 ENTRY SYMB
998 WB6, TEXT 'SYMB '
999 SYMB,
1000 FLDA# WB6
1001 FSTA WBW
1002 JSA PLTSTR / SPECIAL ENTRY FOR NUMBER SUBROUTINE
1003 JSR #XMBTB / LOAD THE SYMBOL TABLE (SYMBTB)
1004 STARTF
1005 FLDA P1
1006 FSTA NUMENT
1007 STARTD
1008 JA SYM1
1009 NUM2, SETX NUMENT / FOR NUMBER SUBROUTINE ONLY
1010 / HERE ONLY FOR FIRST NUMBER OF STRING
1011 LDX -1,2
1012 NUM3, JSA GETARG / FOR SECOND AND LATER NUMBERS
1013 TRAP4 #XPSNM
1014 JA LEFTJS
1015 NUM5, SETX NUMENT / FOR INTEQ + CENETEREDS
1016 LDX -1,2
1017 JSA GETARG
1018 TRAP4 #XPSIN
1019 JA LEFTJS
1020 GETARG, JA .
1021 SETX NUMENT / USED FOR MORE THAN ONE CHARACTER
1022 STARTD
1023 FLDA #XTXAD+1 / CENTEREDS SYMBOLS AND NUM SUBROUTINE
1024 / PASS VALUES AS THREE WORDS
1025 FSTA ARG1
1026 STARTF
1027 FLDA% ARG1,2+ / PASS A NUMBER
1028 SETX #XTXAD
1029 JSA MAKINT
1030 ATX 0
1031 SETX XRPLOT
1032 JA GETARG
1033 END
1034
1035 \1a