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