1 /FOCAL: PLOT, LABEL, MARK JVZ 2 3 /THESE ROUTINES ADAPT FOCAL TO A CALCOMP 565 DIGITAL INCRE- 4 /MENTAL PLOTTER BY PROVIDING THE COMMAND 'PLOT X,Y,L,M' AND 5 /ALTERING THE MEANING OF THE 'TYPE $' COMMAND. PLOT ESTAB- 6 /LISHES A COORDINATE SYSTEM RELATIVE TO AN ARBITRARY ORIGIN 7 /AND MOVES THE PEN IN A STRAIGHT LINE BETWEEN POINTS GIVEN 8 /AS THE X,Y ARGUMENTS OF THE COMMAND. 9 10 /COORDINATES ARE EXPRESSED IN UNITS OF .01" AND THE RANGE 11 /IS + OR - 20.47 INCHES. ADDITIONALLY CHANGES ARE LIMITED 12 /TO THIS RANGE. 'PLOT 100*X,100*Y' MAY BE USED TO CONVERT 13 /TO INCH UNITS. 14 15 /L CONTROLS THE PEN POSITION: L=0 SETS THE PEN UP (THUS 0= 16 /'NO LINE'), WHILE L=1 LOWERS THE PEN. EXPANSION OF THE 17 /PROGRAM COULD PERMIT L=2... TO DESIGNATE VARIOUS DOTTED & 18 /DASHED LINES. L=-1 IS USED TO ESTABLISH A NEW ORIGIN AT 19 /THE (X,Y) POSITION INDICATED. THE PEN IS RAISED DURING 20 /THIS MOTION. THIS CALL IS FREQUENTLY USED AT THE BEGIN- 21 /NING OF A PROGRAM TO RUN THE PEN OFF-SCALE AND THEN SET 22 /THE ORIGIN A FIXED DISTANCE IN FROM THE EDGE. IT IS ALSO 23 /USED AT THE END OF A PLOT TO ADVANCE THE PAPER: 24 25 /PLOT 1000,0,-1;C RUN OUT 10" OF PAPER ALONG X 26 27 /L=-2 SETS VARIOUS ROTATIONS AS DISCUSSED ON THE NEXT PAGE. 28 29 /M SPECIFIES THE MARK TO BE DRAWN AT THE CONCLUSION OF THE 30 /MOVE. MARK 0 IS A BLANK. THE OTHER 15 MARKS MAY BE USED 31 /FOR DISPLAYING DATA POINTS - WITH SAY A FITTED LINE DRAWN 32 /THROUGH THEM: 1-DOT 2-BAR 3-TICK 4-PLUS MARK 5-X MARK 33 /6-CIRCLE 7-FILLED CIRCLE 8-TRIANGLE 9-FILLED TRIANGLE 34 /10-SQUARE 11-FILLED SQUARE 12-DIAMOND 13-FILLED DIAMOND 35 /14-STAR 15-MALTESE CROSS. SPACE IS AVAILABLE FOR OTHERS. 36 37 /IN GENERAL ONLY THOSE ARGUMENTS WHICH DIFFER FROM A PRE- 38 /VIOUS CALL NEED TO BE WRITTEN. THUS IF M NEVER CHANGES 39 /FROM ITS INITIAL VALUE OF 0 IT CAN BE OMITTED. HOWEVER 40 /IF AN ARGUMENT IS CHANGED ALL PRECEEDING ONES MUST BE IN- 41 /DICATED BY THE PROPER NUMBER OF COMMAS. OMITTING A VALUE 42 /IN THIS CASE IS THE SAME AS SPECIFYING 0. SUCH SHORTCUTS 43 /MAY BE USED TO SPEED PROGRAM WRITING AND TO SAVE SPACE IN 44 /THE TEXT STORAGE AREA. NOTE THAT THE PLOT COMMAND MUST BE 45 /FOLLOWED BY A TERMINATOR (SPACE, COMMA, SEMICOLON, OR CAR- 46 /RIAGE RETURN) AND THAT THE ARGUMENTS (IF MORE THAN ONE) 47 /MUST BE SEPARATED BY COMMAS (PLUS OPTIONAL SPACES). 48 /EXAMPLE: (DRAWS A RECTANGLE) 49 50 /P,,1;P X;P X,Y;P;P,;P,, 51 52 /IS THE SAME AS: 53 54 /PLOT 0,0,1,0;PLOT X,0,1,0;PLOT X,Y,1,0 55 /PLOT 0,Y,1,0;PLOT 0,0,1,0;PLOT 0,0,0,0 56 /ANNOTATION IN THE FORM OF TEXT (LABELS) AND VARIABLES CAN 57 /BE WRITTEN ON THE PLOTTER WITH THE FOCAL 'TYPE' (OR 'ASK') 58 /COMMANDS BY INSERTING A $ AHEAD OF PLOTTER OUTPUT. THIS 59 /USE OF THE $ ELIMINATES THE SYMBOL TABLE DUMP. A SINGLE 60 /COMMAND CAN BE USED TO PRODUCE BOTH TTY AND PLOTTER OUT- 61 /PUT PROVIDED THE TTY INFORMATION IS WRITTEN FIRST. OUT- 62 /PUT AUTOMATICALLY RETURNS TO THE TTY AT THE END OF THE 63 /COMMAND AND THE PEN IS RETURNED TO THE START OF THE FIRST 64 /CHARACTER (LOWER LEFT-HAND CORNER). A PROGRAM INTERRUPT 65 /(SUCH AS A FUNCTION ERROR OR HITTING CTRL F) PERFORMS THE 66 /SAME OPERATIONS. THERE IS NO 'WRITE $' COMMAND, BUT IF 67 /DESIRED THE COMMANDS TYPE $;WRITE ... CAN BE USED TO LIST 68 /PROGRAMS ON THE PLOTTER. SUCH OUTPUT IS TERMINATED BY A 69 /'TYPE' COMMAND. THE OPERATIONS PERFORMED BY '!' AND '#' 70 /ARE SIMULATED, BUT IN GENERAL ARE EFFECTIVE ONLY DURING 71 /ONE COMMAND BECAUSE OF THE AUTOMATIC PEN RETURN AT THE END 72 /THIS MAY BE DEFEATED FOR THE PURPOSE OF PRODUCING TABLES, 73 /ETC. BY ENDING ALL BUT THE LAST TYPE COMMAND WITH AN UN- 74 /BALANCED QUOTE (") MARK FOLLOWED BY A CARRIAGE RETURN: 75 76 /01.10 TYPE $"TITLE 1 - WHICH IS A VERY LONG TITLE 77 /01.20 TYPE !"TITLE 2 - WHICH IS SOMEWHAT SHORTER" 78 79 /VARIABLES WILL BE PLOTTED JUST AS THEY WOULD BE TYPED - 80 /ACCORDING TO THE FORMAT SPECIFICATION (%) IN USE. THUS 81 /PLOTTER OUTPUT IS ESSENTIALLY IDENTICAL TO TTY OUTPUT BUT 82 /BOTH THE SIZE AND THE ORIENTATION OF THE WRITING MUST 83 /BE SPECIFIED. LETTER SIZES ARE MULTIPLES OF .05" X .07" 84 /(INCLUDING SEPARATION) AND WRITING CAN BE DONE ALONG ANY 85 /OF THE 8 BASIC PLOTTER DIRECTIONS (0-7) WHERE DIRECTION 0 86 /IS ALONG THE +Y AXIS, DIRECTION 2 IS ALONG THE +X AXIS 87 /ETC. WRITING ALONG A DIAGONAL IS LARGER BY THE SQRT(2). 88 89 /THE SIZE AND DIRECTION ARE SPECIFIED BY PLOT WHEN L=-2. X 90 /IS THE SIZE AND Y IS THE DIRECTION. EXAMPLE: PLOT 3,2,-2 91 /THIS SPECIFIES SIZE 3 LETTERS ALONG THE X-AXIS (DIR 2). 92 /EXPANSION OF THE PROGRAM CAN PROVIDE FOR VARIOUS CHARACTER 93 /STYLES (UPPER OR LOWER CASE FOR EXAMPLE) DETERMINED BY M. 94 95 /L=-2 IS ALSO USED TO SPECIFY THE ORIENTATION OF THE MARKS. 96 /IN THIS CASE X=0,Y=THE DESIRED ROTATION, AND M=THE MARK. 97 /AGAIN ODD ROTATIONS CREATE LARGER MARKS. EX: PLOT,1,-2,12 98 99 /FINALLY L=-2 IS USED TO SPECIFY A GENERAL ROTATION OF THE 100 /AXES WHICH IS EFFECTIVE FOR ALL PLOTTER OPERATIONS. THIS 101 /PERMITS ROTATING THE X-AXIS (WHICH NORMALLY RUNS ALONG THE 102 /LENGTH OF THE PAPER) SO THAT IT RUNS ALONG THE CARRIAGE 103 /INSTEAD: A CONVENIENCE FOR SMALL PLOTS SO THAT THEY CAN BE 104 /VIEWED WITHOUT TWISTING ONE'S HEAD. SUCH ROTATIONS ARE 105 /SPECIFIED BY SETTING X=0, Y=ROTATION, AND M=0. THE EXAMPLE 106 /MENTIONED ABOVE IS CODED: PLOT,2,-2,(CARRIAGE RETURN OR ;) 107 108 /THESE ROUTINES LOAD INTO FIELD 0 FROM 3235 TO 4577 AND RE- 109 /DUCE THE TEXT SPACE BY ONE BLOCK. THE FILE 'OUTPUT' COM- 110 /MANDS (BUT NOT THE 'INPUT' & 'DATE' COMMANDS) ARE REPLACED 111 /SYSTEM SYMBOLS: 112 113 CDI=6203 114 PLSF=6501 115 PLCF=6502 116 PLPU=6504 117 PLPR=6511 118 PLDU=6512 119 PLDD=6514 120 PLPL=6521 121 PLUD=6522 122 PLPD=6524 123 FIXTAB 124 125 /FOCAL SYMBOLS: 126 127 ATLIST=1567 128 AUTO=16 129 BOTTOM=226 130 BUFR=60 131 CHAR=66 132 COMGO=1160 133 COMLST=770 134 ERROR2=4566 135 ERROR5=2732 136 EVAL=1613 137 FIXIT=4453 138 FLEN=5547 139 GETC=4545 140 ILIST=2414 141 LINE1=224 142 MCOM=72 143 MCR=116 144 OUTDEV=63 145 PUSHJ=4540 146 SORTJ=4547 147 TASK4=1232 148 TDUMP=3052 149 TLIST=1400 150 TXTEND=302 151 XDYS=1142 152 153 154 155 /MULTIPLY ROUTINE FOR EAE HARDWARE (SEE PAGE 15) 156 / 157 / 158 /MULT, 0 159 / AND N7 /MASK LOW ORDER DIGIT 160 / MQL MUY /MULTIPLY BY SIZE 161 /SIZE, 0 162 / SWP /PUT RESULT IN AC 163 / JMP I MULT 164 / 165 / ZBLOCK 4 /FOR STANDARD ROUTINE 166 /THIS PART MOVES THE PLOTTING ROUTINES INTO PLACE AFTER THE 167 /PACKAGE IS CALLED BY THE COMMAND: 'LOAD IN PLOT' 168 169 *200 170 000200 5601 JMP I .+1 /SAVE 'PLOT.FC' 171 000201 6437 SAVE+1 172 173 000202 0000 ZBLOCK 1 /ERASE PROGRAM 174 175 *214 176 000214 0422 MOOV 177 000215 0451 CHEK 178 000216 0224 LINE1 /CHECK POINT 179 000217 6213 FIELD1, CDI 10 180 000220 1216 TAD .-2 /INITIALIZE BUFR 181 000221 3555 DCA I 155 182 000222 7410 SKP /LEAVE CR INTACT 183 *LINE1 184 000224 1377 TAD (PL0T-1 /SET UP PDLXR 185 000225 3556 DCA I 156 186 000226 1377 TAD (PL0T-1 /FIX UP RESTARTS 187 000227 3776 DCA I (BOTTOM 188 000230 1375 TAD (3176 /TEXT SPACE IS SMALLER 189 000231 3774 DCA I (TXTEND 190 000232 1373 TAD (ERROR5 /'FLEN' DOESN'T WORK 191 000233 3772 DCA I (373 192 000234 1371 TAD ("P /CREATE A 'PLOT' COMMAND 193 000235 3770 DCA I (COMLST+21 194 000236 1367 TAD (PLT 195 000237 3766 DCA I (COMGO+21 196 000240 1365 TAD (TRAP /RESTORE TTY: AT THE 197 000241 3764 DCA I (ATLIST+10 198 000242 1365 TAD (TRAP /END OF EACH LINE 199 000243 3763 DCA I (ATLIST+11 200 000244 1217 TAD FIELD1 /PATCH 'RECOVR' 201 000245 3762 DCA I (3001 202 000246 1361 TAD (5267 /'JMP TRAP-1' 203 000247 3760 DCA I (3002 204 205 000250 6203 FIELD0, CDI 206 000251 3122 DCA LDIR /SET UP PAGE ZERO 207 000252 1357 TAD (PLD8 208 000253 3123 DCA PLD9 209 000254 1356 TAD (ROTATE 210 000255 3124 DCA PLTR 211 000256 1355 TAD (PEN 212 000257 3125 DCA PLPO 213 000260 1354 TAD (7 214 000261 3126 DCA P7 215 000262 1353 TAD (77 216 000263 3127 DCA P77 217 000264 1274 TAD P4600 218 000265 3116 DCA 116 /INPUT HANDLER MOVED 219 000266 1273 TAD P5000 220 000267 3752 DCA I (IBLK-1 /INPUT BUFFER MOVED 221 000270 7126 STL RTL /MOVE HANDLER 222 000271 3676 DCA I .+5 223 000272 4614 JMS I 214 224 000273 5000 P5000, 5000 225 000274 4600 P4600, 4600 226 000275 4615 JMS I 215 227 000276 5200 5200 228 000277 7126 STL RTL /MOVE BUFFER 229 000300 3705 DCA I .+5 230 000301 4614 JMS I 214 231 000302 4000 4000 232 000303 5000 5000 233 000304 4615 JMS I 215 234 000305 4400 4400 235 000306 1120 TAD INHND 236 000307 1150 TAD 150 /(200) 237 000310 7510 SPA /SYSTEM DEVICE? 238 000311 1160 TAD 160 /(-200) 239 000312 1160 TAD 160 /RESET ENTRY POINT 240 000313 3120 DCA INHND 241 000314 1751 TAD I (IPNTR 242 000315 1350 TAD (1000 /AND BUFFER POINTER 243 000316 3751 DCA I (IPNTR 244 000317 1347 TAD (EXIT /REMOVE 'OUTPUT ABORT' 245 000320 3746 DCA I (FILEGO+1 246 000321 1347 TAD (EXIT /& ALSO 'OUTPUT CLOSE' 247 000322 3745 DCA I (FILEGO+2 248 000323 1344 TAD (RESTOR /'OPEN RESTORE' MOVED 249 000324 3743 DCA I (FILEGO+3 250 000325 1342 TAD (OERROR /REMOVE 'OPEN OUTPUT' 251 000326 3741 DCA I (FILEGO+6 252 000327 3073 DCA DEVHLD /JUST IN CASE 253 000330 5740 JMP I (PAGE2 254 EJECT 255 000340 0400 PAGE 000341 5566 000342 5463 000343 5563 000344 5440 000345 5562 000346 5561 000347 0027 000350 1000 000351 5546 000352 5472 000353 0077 000354 0007 000355 5410 000356 5430 000357 5547 000360 3002 000361 5267 000362 3001 000363 1600 000364 1577 000365 3070 000366 1201 000367 3114 000370 1011 000371 0320 000372 0373 000373 2732 000374 0302 000375 3176 000376 0226 000377 3234 256 /NOW FOR THE BIG PIECES: 257 258 000400 6211 PAGE2, CDF 10 259 000401 4222 JMS MOOV 260 000402 0461 GETA 261 000403 1142 XDYS 262 000404 6211 CDF 10 263 000405 4222 JMS MOOV 264 000406 0477 PTRAP 265 000407 3052 TDUMP 266 000410 4222 JMS MOOV 267 000411 0634 BIG1 268 000412 3235 PL0T 269 000413 4222 JMS MOOV 270 000414 0546 SMAL 271 000415 5400 PLD0 272 000416 4222 JMS MOOV 273 000417 0624 LITL 274 000420 5547 FLEN 275 000421 5022 JMP NONAME+2 /CLEAR HEADER 276 277 000422 0000 MOOV, 0 278 000423 6214 RDF 279 000424 1225 TAD .+1 280 000425 6201 CDF 281 000426 3246 DCA DF2 282 000427 7040 CMA 283 000430 1622 TAD I MOOV 284 000431 3010 DCA 10 285 000432 2222 ISZ MOOV 286 000433 7040 CMA 287 000434 1622 TAD I MOOV 288 000435 3011 DCA 11 289 000436 2222 ISZ MOOV 290 291 000437 6201 DF1, CDF 292 000440 7144 CMA CLL RAL 293 000441 1410 TAD I 10 294 000442 7450 SNA 295 000443 5622 JMP I MOOV 296 000444 7001 IAC 297 000445 7001 IAC 298 000446 6201 DF2, CDF 299 000447 3411 DCA I 11 300 000450 5237 JMP DF1 301 302 000451 0000 CHEK, 0 303 000452 1651 TAD I CHEK 304 000453 2251 ISZ CHEK 305 000454 7041 CIA 306 000455 1010 TAD 10 307 000456 7700 SMA CLA 308 000457 5651 JMP I CHEK 309 000460 5244 JMP DF2-2 310 STOP=2 311 /THIS IS THE ARGUMENT FETCH PART OF PLOT WHICH RESIDES 312 /WHERE FDIS ONCE DID. PLOT MAY HAVE FROM 1 TO 4 ARGU- 313 /MENTS: X,Y,L,M. THESE ARE STORED IN FIELD 0 AND WHEN 314 /THE LAST ONE HAS BEEN EVALUATED, THE PROGRAM BRANCHES 315 /TO XPLT. 316 317 *PAGE2+61 318 GETA=.; NOPUNCH 319 *XDYS 320 ENPUNCH 321 322 001142 4545 CONT, GETC /SKIP OVER COMMA 323 001143 4540 PUSHJ /EVALUATE ARGUMENT WHICH 324 001144 1613 EVAL /MAY BE AN EXPRESSION 325 001145 4453 FIXIT /LOAD AC WITH INTEGER 326 001146 6203 CDI 327 001147 3416 DCA I AUTO /STORE ARGUMENTS IN SEQUENCE 328 001150 1066 TAD CHAR /CHECK NEXT CHARACTER 329 001151 1072 TAD MCOM /TO SEE IF IT IS A COMMA 330 001152 7640 SZA CLA 331 001153 5756 JMP I .+3 /NO: CALL PLOTTING ROUTINE 332 001154 6213 CDI 10 333 001155 5342 JMP CONT /YES: MORE ARGUMENTS 334 001156 3575 XPLT 335 001157 0002 STOP 336 /THESE ROUTINES TRAP A $ AND SEND SUBSEQUENT OUTPUT TO 337 /THE PLOTTER UNTIL A ; OR A CR IS ENCOUNTERED. ALSO 338 /INCLUDED IN THIS AREA IS THE INITIALIZE PART OF PLOT. 339 /THE ERROR RECOVERY ROUTINE USES TRAP TO RETURN THE PEN 340 /IN CASE OF A BREAK OR FUNCTION ERROR DURING LABEL OUTPUT. 341 342 *GETA+16 343 PTRAP=.;NOPUNCH 344 *TDUMP /LOCATION OF $ TRAP 345 ENPUNCH 346 347 003052 6203 POUT, CDI 348 003053 5654 JMP I .+1 /PICK UP CURRENT LOCATION AND 349 003054 3375 INITL /TELL PLOT WHAT DIRECTION TO USE 350 003055 1311 TAD XLABEL 351 003056 3063 DCA OUTDEV /CHANGE OUTPUT TO PLOTTER 352 003057 5660 JMP I .+1 353 003060 1232 TASK4 /AND CONTINUE VIA LABEL 354 355 003061 0000 LABEL, 0 356 003062 1116 TAD MCR /SET UP AC FOR CR TEST 357 003063 6203 CDI 358 003064 4666 JMS I .+2 359 003065 5661 JMP I LABEL /BACK FOR MORE 360 003066 3412 DRAW 361 362 003067 3066 DCA CHAR /FORCE AN EXIT FROM SORTJ 363 003070 1261 TRAP, TAD LABEL /CHECK TO SEE IF THE 364 003071 7650 SNA CLA /PLOTTER HAS BEEN USED 365 003072 5300 JMP RETURN /NO 366 003073 1374 TAD 3174 /YES: RESTORE TTY OUTPUT 367 003074 3063 DCA OUTDEV 368 003075 6203 CDI /RETURN PEN TO THE START 369 003076 4712 JMS I FINAL 370 003077 3261 DCA LABEL /CLEAR FLAG 371 372 003100 4547 RETURN, SORTJ /FIGURE OUT WHERE TO GO 373 003101 1400 TLIST / ; OR CR 374 003102 1014 ILIST-TLIST /PROCESS OR PC1 375 003103 1066 TAD CHAR /CHECK FOR RECOVR 376 003104 7640 SZA CLA 377 003105 4566 ERROR2 /FAULTY PLOT COMMAND 378 003106 6002 IOF 379 003107 6203 CDI 380 003110 5777 JMP I 3177 /CONTINUE WITH RECOVR 381 382 003111 3061 XLABEL, LABEL 383 003112 3562 FINAL, LTAD 384 385 003113 3577 X-1 /INITIAL ADDRESS 386 003114 1313 PLT, TAD .-1 /PLOT COMMAND 387 003115 3016 DCA AUTO /SET UP INDEX REGISTER 388 003116 5717 JMP I .+1 /AND FETCH PARAMETERS 389 003117 1143 CONT+1 390 003120 0002 STOP 391 /PEN MOTION AND PLOT ROTATION SUBROUTINES 392 393 *PTRAP+47 394 SMAL=.; NOPUNCH 395 *5400 396 ENPUNCH 397 398 005400 6521 PLD0, PLPL /PLOTTER OPERATION TABLE 399 005401 4523 PLD1, JMS I PLD9 400 005402 6514 PLD2, PLDD 401 005403 6515 PLD3, PLPR PLDD 402 005404 6511 PLD4, PLPR 403 005405 6513 PLD5, PLPR PLDU 404 005406 6512 PLD6, PLDU 405 005407 6523 PLD7, PLPL PLUD 406 407 005410 0000 PEN, 0 /CHECK PEN POSITION 408 005411 7106 CLL RTL /AC=0->PEN UP; AC=1->DOWN 409 005412 7126 STL RTL /SHIFT BIT INTO PLACE 410 005413 1226 TAD PNOP+3 /ADD CODE FOR PEN UP 411 005414 7041 CIA /NEGATE 412 005415 1223 TAD PNOP /OLD - NEW 413 005416 7450 SNA /OLD = NEW ? 414 005417 5610 JMP I PEN /YES: DON'T MOVE PEN 415 005420 7041 CIA /NEW - OLD 416 005421 1223 TAD PNOP /NEW 417 005422 3223 DCA PNOP 418 005423 6504 PNOP, PLPU /ASSUME PEN UP INITIALLY 419 005424 6501 PLSF /ALLOW PLOTTER TO FINISH 420 005425 5224 JMP .-1 421 005426 6502 PLCF 422 005427 5610 JMP I PEN 423 424 005430 0000 ROTATE, 0 /ROTATE IN 45 DEGREE STEPS 425 005431 1753 TAD I PD /ADD PLOT ROTATION (0-7) 426 005432 1754 TAD I TD /AND LABEL ROTATION (IF ANY) 427 005433 0126 AND P7 /MODULO EIGHT 428 005434 1355 TAD PLOP /ADD CODE FOR PLD0 429 005435 3210 DCA PEN /SAVE TABLE ADDRESS 430 005436 1610 TAD I PEN /GET INSTRUCTION 431 005437 5630 JMP I ROTATE /AND RETURN 432 433 005440 4574 RESTOR, TSPNOR /'OPEN RESTORE' COMMAND 434 005441 1065 TAD CHR /SAVE COMMAND CHARACTER 435 005442 3347 DCA PLD8 436 005443 7040 CMA /INITIALIZE ECHO SWITCH 437 005444 3105 DCA GOSW 438 005445 4571 GTNAME /TO SET ECHO MODE 439 005446 1347 TAD PLD8 440 005447 4573 TJUMP /SORT OUT 'I' 441 005450 6374 ORLIST-1 442 005451 7056 ORGO-ORLIST 443 005452 5263 JMP OERROR 444 005453 5615 ORGO, IRST 445 005454 5463 OERROR /'OPEN RESTORE OUTPUT' 446 005455 0002 STOP 447 /CHANGES TO THE 'OPEN' COMMANDS: 448 449 CHR=65 450 DEVHLD=73 451 EXIT=27 452 FILEGO=5560 453 GOSW=105 454 GTNAME=4571 455 IBLK=5473 456 INFLG=121 457 INHND=120 458 IPNTR=5546 459 IRST=5615 460 NONAME=20 461 OERROR=5463 462 ORLIST=6375 463 SAVE=6436 464 TJUMP=4573 465 TSPNOR=4574 466 467 *SMAL+56 468 LITL=.; NOPUNCH 469 *FLEN 470 ENPUNCH 471 472 005547 0000 PLD8, 0 /DIRECTION 1 473 005550 6521 PLPL 474 005551 6514 PLDD 475 005552 5747 JMP I PLD8 476 477 005553 3706 PD, PDIR 478 005554 3572 TD, TDIR 479 005555 5400 PLOP, PLD0 480 005556 0002 STOP 481 482 /SELF-LOADING CONSTANTS: 483 484 *54 485 000054 5723 5723 /DSK 486 487 *66 488 000066 2014 FILENAME PLOT.FC 000067 1724 000070 0000 000071 0603 489 490 *SAVE 491 006436 7600 7600 /'SAVE' EXITS TO THE MONITOR 492 493 FIELD 1 494 *BUFR 495 010060 2177 2177 496 497 FIELD 0 498 /PDP 8 PLOTTING ROUTINE USING STANDARD D.E.C. INTERFACE 499 500 /CALLING SEQUENCE: 501 / PLOT = JMS I (PL0T) 502 / X X COORDINATE 503 / Y Y COORDINATE 504 /THIS VERSION SKIPS THE NEXT TWO WORDS 505 506 /C(AC) DETERMINES POSITION OF THE PEN: 507 / C(AC)= -2 SET (SIZE), DIRECTION 508 / C(AC)= -1 PEN UP; POSITION AT END OF MOTION SET TO 0,0 509 / C(AC)= 0 PEN UP (ZERO MEANS "NO LINE") 510 / C(AC)= 1 PEN DOWN 511 / C(AC)= 2... RESERVED FOR DOTTED AND DASHED LINES, ETC. 512 513 /COORDINATES ARE EXPRESSED IN UNITS OF PLOTTER STEPS: 0.01" 514 /THUS MAXIMUM MOTION IS +20.47" AND -20.47" FROM THE ORIGIN 515 /IN FACT THE MAXIMUM DIFFERENCE BETWEEN TWO POINTS IS ALSO 516 /RESTRICTED TO +20.47" OR -20.47" SO THAT IN SOME CASES TWO 517 /CALLS MAY BE REQUIRED TO REACH A POINT. 518 519 /THIS VERSION PERMITS ROTATING THE AXES IN 45 DEGREE STEPS. 520 /THIS FEATURE IS USEFUL FOR PLACING THE X AXIS ALONG THE 521 /CARRIAGE (ROTATION BY 2) AND IS ALSO USED BY THE LABEL 522 /ROUTINE. PLOTTING DONE WITH A ROTATION OF AN ODD MULTI- 523 /PLE OF 45 DEGREES WILL BE "STRETCHED" UNIFORMLY BY THE 524 /SQRT(2) DUE TO THE NATURE OF THE PLOTTER MOTIONS. 525 526 *122 /IN PLACE OF 'OUTBLK' 527 000122 0000 LDIR, 0 /LABEL DIRECTION 528 000123 5547 PLD9, PLD8 /FOR DIRECTION 1 529 000124 5430 PLTR, ROTATE /ROTATION ROUTINE 530 000125 5410 PLPO, PEN /PEN CONTROL ROUTINE 531 000126 0007 P7, 7 532 000127 0077 P77, 77 533 534 *LITL+10 535 BIG1=.; NOPUNCH 536 *3235 537 ENPUNCH 538 539 003235 0000 PL0T, 0 540 003236 6002 IOF /NO INTERRUPTIONS 541 003237 7500 SMA /TEST FOR NEGATIVE LINE VALUE 542 003240 5245 JMP .+5 /CONTINUE IF C(AC)=0 OR 1 543 003241 7130 STL RAR /ARITHMETIC SHIFT RIGHT 544 003242 7420 SNL /EVEN OR ODD ? 545 003243 5773 JMP I PLDR /GET PLOT, LABEL PARAMETERS 546 003244 3332 DCA DIAG /CLEAR AC AND SAVE -1 547 003245 4525 JMS I PLPO /CHECK & SET PEN POSITION 548 003246 4351 JMS DXY /GET X, COMPARE WITH OLD VALUE 549 003247 0000 LX, 0 /LAST X VALUE 550 003250 3347 DCA DX /STORE ABSOLUTE X MOTION 551 003251 4351 JMS DXY /GET Y, COMPARE WITH OLD VALUE 552 003252 0000 LY, 0 /LAST Y VALUE 553 003253 7161 STL CIA /NEGATE DY 554 003254 1347 TAD DX /AC=DX-DY 555 003255 7630 SZL CLA /LINK=0 IF DX>DY 556 003256 5266 JMP DYGTDX 557 558 003257 1347 DXGTDY, TAD DX /EXCHANGE DY AND DX 559 003260 3351 DCA DXY 560 003261 1350 TAD DY 561 003262 3347 DCA DX 562 003263 1351 TAD DXY 563 003264 3350 DCA DY 564 003265 7001 IAC /SET BIT 10 (SIGN OF X) 565 566 003266 7001 DYGTDX, IAC /SET BIT 11 (SIGN OF Y) 567 003267 0332 AND DIAG /CHECK FOR NEGATIVE VALUES 568 003270 7420 SNL /SKIP IF DY>DX 569 003271 7010 RAR /SIGN OF X -> BIT 11; LINK=0 570 003272 7026 CML RTL /BIT 11 + LINK = DIRECTION/4 571 003273 4524 JMS I PLTR /ADD ROTATION 572 003274 3334 DCA AXIS /STORE IN AXIS INSTRUCTION 573 574 003275 1332 TAD DIAG /CHECK ON SIGNS AGAIN 575 003276 7012 RTR 576 003277 7430 SZL /MODIFY SIGNS TO REFLECT 577 003300 7040 CMA /PLOTTER DIRECTIONS 578 003301 7006 RTL 579 003302 7124 STL RAL /2*RESULT+1 = DIRECTION 580 003303 4524 JMS I PLTR /ADD ROTATION 581 003304 3332 DCA DIAG /STORE IN DIAGONAL INSTRUCTION 582 583 003305 7001 STRCH, IAC /FIND OUT IF ROTATION 584 003306 0525 AND I PLPO /IS EVEN OR ODD 585 003307 7640 SZA CLA /TABLE AT EVEN ADDRESS 586 003310 5315 JMP SETUP /EVEN: CONTINUE 587 003311 1347 TAD DX /ODD: ADJUST RATIO 588 003312 1350 TAD DY 589 003313 3350 DCA DY 590 003314 1347 TAD DX /DOUBLE DIAGONAL STEPS 591 592 003315 1347 SETUP, TAD DX /DX IS MINOR MOTION 593 003316 7041 CIA /NEGATE FOR EASY SUBTRACTION 594 003317 3347 DCA DX 595 003320 1350 TAD DY /DY IS MAJOR MOTION 596 003321 7040 CMA /AND DETERMINES STEP COUNT 597 003322 3351 DCA DXY 598 003323 1350 TAD DY /HALF THE TOTAL MOTION 599 003324 7110 CLL RAR /IS SET IN THE AC 600 003325 5340 JMP AXIS+4 601 003326 1347 LOOP, TAD DX /SUBTRACT DIAGONAL INCREMENT 602 003327 7500 SMA /TEST IF DIAG MOTION REQUIRED 603 003330 5334 JMP AXIS /NO 604 003331 1350 TAD DY /YES: RESTORE AXIS INCREMENT 605 003332 0000 DIAG, 0 /COMBINED MOTION (X + Y) 606 003333 7410 SKP 607 003334 0000 AXIS, 0 /SINGLE MOTION (X OR Y) 608 003335 6501 PLSF /WAIT 'TILL DONE 609 003336 5335 JMP .-1 610 003337 6502 PLCF 611 003340 2351 ISZ DXY /COUNT THE STEPS 612 003341 5326 JMP LOOP 613 003342 3332 DCA DIAG /CLEAR AC & DIAG BITS 0-1 614 003343 6001 ION /DONE: INTERRUPTS OK NOW 615 003344 2235 ISZ PL0T /ADVANCE PAST 616 003345 2235 ISZ PL0T /NEXT TWO WORDS 617 003346 5635 JMP I PL0T /AND RETURN 618 619 003347 0000 DX, 0 /ABSOLUTE VALUE OF X MOTION 620 003350 0000 DY, 0 /ABSOLUTE VALUE OF Y MOTION 621 003351 0000 DXY, 0 622 003352 1751 TAD I DXY /GET LAST X OR LAST Y 623 003353 7041 CIA /NEGATE 624 003354 1635 TAD I PL0T /AC=NEW-OLD 625 003355 7100 CLL /SET LINK FOR POSITIVE SIGN 626 003356 7510 SPA /TEST FOR SIGN 627 003357 7061 CML CIA /REMEMBER SIGN & NEGATE 628 003360 3350 DCA DY /STORE ABSOLUTE Y MOTION 629 003361 1332 TAD DIAG 630 003362 7004 RAL /SAVE MINUS SIGN 631 003363 3332 DCA DIAG 632 003364 7420 SNL /CHECK FOR NEW ORIGIN 633 003365 1635 TAD I PL0T /GET NEW VALUE 634 003366 3751 DCA I DXY /REPLACE PREVIOUS ONE 635 003367 1350 TAD DY /SET AC FOR NEXT OPERATION 636 003370 2235 ISZ PL0T /SET NEXT ADDRESS 637 003371 2351 ISZ DXY /SET RETURN ADDRESS 638 003372 5751 JMP I DXY /RETURN 639 640 003373 3711 PLDR, DRXN /SIZE AND DIRECTION ROUTINE 641 /THIS ROUTINE DRAWS ANY ASCII SYMBOL ON THE PLOTTER. 642 /IN ADDITION TO THE 63 ASCII SYMBOLS, THE CODES FOR 643 /CR AND LF ARE RECOGNIZED AND USED TO SIMULATE THESE 644 /COMMANDS. SYMBOLS ARE BASED ON A 5 X 7 GRID OF WHICH 645 /4 X 6 IS USED SO AS TO PROVIDE SPACING. SIZE 2 CHAR- 646 /ACTERS ARE THUS .08" X .12" WITH .02" BETWEEN THEM. 647 /LF MOVES .1" X SIZE BELOW THE PRESENT LINE, BUT IS EF- 648 /FECTIVE ONLY DURING A SINGLE OUTPUT COMMAND AS THE PEN 649 /IS ALWAYS RETURNED TO THE STARTING POSITION AT THE END. 650 651 003374 3564 SX 652 003375 1247 INITL, TAD LX /SAVE CURRENT POSITION 653 003376 3774 DCA I .-2 654 003377 1252 TAD LY /PAGE BOUNDARY 655 003400 3365 DCA SY 656 003401 1364 TAD SX /"S" MEANS STARTING 657 003402 3357 DCA RX /"R" MEANS RUNNING 658 003403 1365 TAD SY 659 003404 3360 DCA RY 660 003405 1122 TAD LDIR /GET LABEL DIRECTION 661 003406 3372 DCA TDIR 662 003407 6213 CDI 10 663 003410 5611 JMP I .+1 /CONTINUE WITH OUTPUT 664 003411 3055 POUT+3 665 666 003412 0000 DRAW, 0 667 003413 7450 SNA /ASCII-CR IN AC 668 003414 5315 JMP CR /RETURN PEN TO (SX,RY) 669 003415 1313 TAD N3 670 003416 7450 SNA /TEST FOR LF 671 003417 5320 JMP LF /PLACE PEN AT (RX,RY-.1*SIZE) 672 003420 1272 TAD FIVE+2 /RESTORE ORIGINAL CODE 673 003421 0127 AND P77 /ONLY NEED SIX BITS 674 003422 7450 SNA /IGNORE ZERO 675 003423 5311 JMP SEVEN /("@" NOT AVAILABLE) 676 003424 7041 CIA /NEGATE 677 003425 3254 DCA TWO /LETTER COUNTER 678 003426 1367 TAD TBAD /LOAD STARTING ADDRESS 679 003427 3362 DCA LTAD /INTO SEARCH ADDRESS 680 003430 5241 JMP HALF /AND GO SEARCH 681 682 003431 0000 ZBLOCK 3 /PATCH FOR ALTERNATE MODES 003432 0000 003433 0000 683 684 003434 1762 ZERO, TAD I LTAD /LOOK AT THIS WORD 685 003435 2362 ISZ LTAD /POINT TO NEXT ONE 686 003436 7040 CMA 687 003437 0127 AND P77 688 003440 7650 SNA CLA /DOES IT END IN 77 ? 689 003441 2254 HALF, ISZ TWO /YES: FOUND IT ? 690 003442 5234 JMP ZERO /NO: KEEP GOING 691 003443 1762 ONE, TAD I LTAD /GET FIRST MOVE 692 003444 7012 RTR /COULD USE 693 003445 7012 RTR /BSW = 7002 694 003446 7012 RTR /ON PDP 8/E 695 003447 4254 JMS TWO 696 003450 1762 TAD I LTAD /GET SECOND MOVE 697 003451 4254 JMS TWO 698 003452 2362 ISZ LTAD /ADVANCE TO NEXT WORD 699 003453 5243 JMP ONE /CONTINUE 700 701 003454 0000 TWO, 0 702 003455 0127 AND P77 /GET RID OF THE OTHER PIECE 703 003456 3343 DCA MOVE /AND SAVE MOVE 704 705 003457 7126 THREE, STL RTL /=2 - TRICKY WAY TO GET -76 706 003460 1266 TAD FOUR /THIS INSTRUCTION ADDS 7700 707 003461 1343 TAD MOVE /ADD -76 TO MOVE 708 003462 7440 SZA 709 003463 5266 JMP FOUR /NOT PEN UP, CHECK FOR END 710 003464 3366 DCA LN /76 MEANS RAISE THE PEN 711 003465 5654 JMP I TWO /AND CONTINUE 712 713 003466 7700 FOUR, SMA CLA /TEST FOR 77 (INST. = 7700) 714 003467 5302 JMP SIX /MOVE TO POSITION (5,0) 715 716 003470 1343 FIVE, TAD MOVE /GET X MOTION 717 003471 7010 RAR 718 003472 7012 RTR /THIS INSTRUCTION ENDS IN 12 719 003473 4331 JMS MULT /MULTIPLY BY SIZE 720 003474 3355 DCA IX /"I" MEANS "INCREMENTAL" 721 003475 1343 TAD MOVE /GET Y MOTION 722 003476 4331 JMS MULT 723 003477 4343 JMS MOVE /"IY" IS IN AC 724 003500 2366 ISZ LN /INCREASE LINE VALUE 725 003501 5654 JMP I TWO /GET NEXT BYTE 726 727 003502 1314 SIX, TAD N5 /EQUALS WIDTH OF LETTER 728 003503 4331 JMS MULT /TIMES SIZE 729 003504 3355 DCA IX /STORE MOTION AND SET IY=0 730 003505 3366 DCA LN /MOVE WITH PEN UP 731 003506 4343 JMS MOVE /"IY"=0 732 003507 1355 TAD IX 733 003510 3357 DCA RX /UPDATE CURRENT X VALUE 734 735 003511 6213 SEVEN, CDI 10 736 003512 5612 JMP I DRAW /END OF THIS LETTER 737 738 003513 0003 N3, 3 739 003514 0005 N5, 5 740 003515 1364 CR, TAD SX /GET STARTING VALUE 741 003516 3357 DCA RX /AND RESET RX 742 003517 5304 JMP SIX+2 /CLEAR IX,IY(=AC), AND LN 743 744 003520 3355 LF, DCA IX /SET IX TO ZERO 745 003521 1314 TAD N5 746 003522 4331 JMS MULT /5*SIZE 747 003523 7041 CMA IAC /NEGATE 748 003524 7104 CLL RAL /AND MULTIPLY BY 2 749 003525 4343 JMS MOVE /TO (RX,-10*SIZE) 750 003526 1356 TAD IY 751 003527 3360 DCA RY /UPDATE RY 752 003530 5311 JMP SEVEN /RETURN TO CALLING PROG. 753 754 003531 0000 MULT, 0 755 003532 0126 AND P7 /MASK LOW ORDER DIGIT 756 003533 7040 CMA /EQUALS -(MOVE+1) 757 003534 3356 DCA IY /STORE IN STEP COUNTER 758 003535 7410 SKP /IN CASE MLPR=0 759 003536 1342 TAD SIZE /ADD MCND UNTIL 760 003537 2356 ISZ IY /MLPR RUNS OUT 761 003540 5336 JMP .-2 762 003541 5731 JMP I MULT 763 003542 0000 SIZE, 0 /THIS IS THE LETTER SIZE 764 765 003543 0000 MOVE, 0 /ROUTINE TO CALL PLOT 766 003544 1360 TAD RY /ADD STARTING VALUE TO AC 767 003545 3356 DCA IY /TO GET NEXT Y POSITION 768 003546 1357 TAD RX /GET START OF THIS LETTER 769 003547 1355 TAD IX /ADD IN X INCREMENT 770 003550 3355 DCA IX /TO GET NEXT X POSITION 771 003551 1366 TAD LN /GET LINE VALUE 772 003552 7640 SZA CLA /CHECK FOR PEN UP 773 003553 7001 IAC /OTHERWISE SET AC=1 (PEN DOWN) 774 003554 4774 PLOT /GET PLOT TO MOVE THE PEN 775 003555 0000 IX, 0 /X COORDINATE 776 003556 0000 IY, 0 /Y COORDINATE 777 003557 0000 RX, 0 /THESE TWO ARE SKIPPED 778 003560 0000 RY, 0 779 003561 5743 JMP I MOVE 780 781 003562 0000 LTAD, 0 782 003563 4774 PLOT /RETURN TO THE BEGINNING 783 003564 0000 SX, 0 784 003565 0000 SY, 0 785 003566 0000 LN, 0 786 003567 4200 TBAD, LTRA 787 003570 6213 CDI 10 788 003571 5762 JMP I LTAD /AND RETURN TO FOCAL 789 790 003572 0000 TDIR, 0 791 003573 3602 L 792 793 PLOT=JMS I . 794 003574 3235 PL0T 795 /PDP 8 CALCOMP ROUTINE: MARK 796 797 /THIS ROUTINE DRAWS A SPECIFIED MARK CENTERED AT THE 798 /CURRENT PLOTTER POSITION. MARK 0 IS A NULL AND NO 799 /ACTION OCCURS. SPECIFYING A NON-EXISTENT MARK WILL 800 /CAUSE A SIMILAR EXIT. 801 802 /MARKS ARE CODED AT THE END OF THE PROGRAM ACCORDING 803 /TO THE FOLLOWING PLAN: RDRD,RDRD,... WHERE R = 804 /REPETITION NUMBER (0-7) AND D = PLOTTER DIRECTION 805 /(0-7). DIRECTIONS ARE COMPUTED RELATIVE TO ANY RO- 806 /TATION SPECIFIED BY PLOT. THIS PERMITS MARKS WITHOUT 807 /C/8 SYMMETRY TO FOLLOW ROTATIONS OF THE AXES. 808 /RD = 00/01 SPECIFIES PEN UP/DOWN AND RD = 07 OR 0707 809 /SIGNIFIES THE END OF A MARK. THE CODE 0706 FOLLOWS 810 /THE LAST MARK. THE TABLE MAY BE CHANGED AS DESIRED. 811 812 813 003575 3372 XPLT, DCA TDIR /ENTRY FROM PLOT CALL 814 003576 1773 TAD I .-3 /CLEAR TDIR & GET L 815 816 003577 4774 PLOT 817 003600 0000 X, 0 /CALLING PARAMETERS 818 003601 0000 Y, 0 /ARE STORED HERE IN 819 003602 0000 L, 0 /SEQUENCE 820 003603 0000 M, 0 821 822 003604 0000 MARK, ZBLOCK 1 /TOO MANY COMMAS! 823 003605 1203 TAD M /GET MARK NUMBER 824 003606 7550 SPA SNA /TEST FOR MARK >0 825 003607 5333 JMP BACK /ZERO = NONE 826 003610 7041 CIA /NEGATE 827 003611 3243 DCA ZWEI /STORE IN MARK COUNTER 828 003612 1215 TAD TABL /GET START OF MARK TABLE 829 003613 3216 DCA MKAD 830 003614 5227 JMP HALB 831 832 003615 3737 TABL, DOT /FIRST MARK 833 003616 0000 MKAD, 0 834 835 003617 7001 NULL, IAC /TEST FOR END OF TABLE 836 003620 7650 SNA CLA 837 003621 5333 JMP BACK /NON-EXISTENT MARK 838 003622 1616 TAD I MKAD /LOOK AT THIS WORD 839 003623 2216 ISZ MKAD /AND POINT TO NEXT 840 003624 0127 AND P77 /ONLY KEEP LOWER BYTE 841 003625 1310 TAD M7 842 003626 7450 SNA /END OF THIS MARK ? 843 003627 2243 HALB, ISZ ZWEI /HAVE WE FOUND IT ? 844 003630 5217 JMP NULL /NO 845 003631 6002 IOF /PROTECT PLOT ORIGIN 846 003632 1616 EINS, TAD I MKAD /GET FIRST MOTION 847 003633 7012 RTR /COULD USE 848 003634 7012 RTR /BSW = 7002 849 003635 7012 RTR /ON PDP 8/E 850 003636 4243 JMS ZWEI 851 003637 1616 TAD I MKAD /GET SECOND MOTION 852 003640 4243 JMS ZWEI 853 003641 2216 ISZ MKAD /ADVANCE 854 003642 5232 JMP EINS /CONTINUE 855 856 003643 0000 ZWEI, 0 857 003644 0127 AND P77 /GET RID OF THE OTHER PIECE 858 003645 3200 DCA X /TEMPORARY STORAGE 859 003646 1310 TAD M7 860 003647 1200 TAD X /NOW LOOK AT CODE 861 003650 7450 SNA /TEST FOR END OF MARK 862 003651 5333 JMP BACK /RETURN WITH AC=0 863 003652 7700 SMA CLA /TEST FOR PEN MOTION 864 003653 5257 JMP DREI /EXECUTE XY MOTION 865 003654 1200 TAD X /GET PEN CODE 866 003655 4525 JMS I PLPO /MOVE PEN IF NECESSARY 867 003656 5643 JMP I ZWEI /DO NEXT OPERATION 868 869 003657 1200 DREI, TAD X /GET DIRECTION 870 003660 1307 TAD MDIR /ADD ROTATION 871 003661 4524 JMS I PLTR /FORMULATE AND 872 003662 3277 DCA VIER+1 /SAVE INSTRUCTION 873 003663 1307 TAD MDIR 874 003664 1306 TAD PDIR /CHECK ROTATION 875 003665 0200 AND X /FOR ODDNESS 876 003666 7050 CMA RAR /SAVE -(BIT 11) 877 003667 7240 CLA CMA 878 003670 0200 AND X /GET REPETITION 879 003671 0272 AND .+1 /STRIP BITS 6-8 880 003672 7470 SNA SZL /SAME AS SZL BUT CODE XX70 881 003673 7110 CLL RAR /SKIP = EFFECTIVE X2 882 003674 7012 RTR /SHIFT INTO PLACE 883 003675 7041 CIA /NEGATE 884 885 003676 7001 VIER, IAC /INCREMENT LOOP COUNT 886 003677 0000 0 /PLOTTER INSTRUCTION 887 003700 6501 PLSF /WAIT FOR PLOTTER 888 003701 5300 JMP .-1 889 003702 6502 PLCF 890 003703 7440 SZA /TEST LOOP COUNT 891 003704 5276 JMP VIER /KEEP GOING 892 003705 5643 JMP I ZWEI /GET NEXT BYTE 893 894 003706 0000 PDIR, 0 /PLOT ROTATION 895 003707 0000 MDIR, 0 /MARK ROTATION 896 003710 7771 M7, -7 897 003711 7200 DRXN, CLA /THIS ROUTINE ENTERED 898 003712 1200 TAD X /FROM PLOT WHEN L=-2 899 003713 7440 SZA /TEST X 900 003714 5327 JMP BACK-4 /IF X IS NON-ZERO SET SIZE 901 003715 1203 TAD M /OTHERWISE CHECK M 902 003716 7650 SNA CLA 903 003717 5323 JMP .+4 /IF ZERO GET PLOT ROTATION 904 905 003720 1201 TAD Y 906 003721 3307 DCA MDIR /SAVE MARK ROTATION 907 003722 5333 JMP BACK 908 909 003723 1201 TAD Y 910 003724 3306 DCA PDIR /SAVE PLOT ROTATION 911 003725 5333 JMP BACK 912 913 003726 3542 SIZE 914 003727 3726 DCA I .-1 /SAVE LETTER SIZE 915 003730 7144 CMA CLL RAL /SET AC=-2 BECAUSE LETTERS 916 003731 1201 TAD Y /ARE CODED FOR DIRECTION 2 917 003732 3122 DCA LDIR 918 919 003733 6001 BACK, ION /RE-ENABLE INTERRUPTS 920 003734 6213 CDI 10 921 003735 5736 JMP I .+1 922 003736 3100 RETURN /COMMAND RETURN 923 924 925 /NEXT COME THE MARKS: 926 003737 0110 DOT, 0110 /MARK NUMBER 1 927 003740 1315 1315 928 003741 1016 1016 929 003742 2216 2216 930 003743 1015 1015 931 003744 1310 1310 932 003745 0007 0007 933 003746 0152 BAR, 0152 /MARK NUMBER 2 934 003747 5656 5656 935 003750 5207 5207 936 003751 0150 TICK, 0150 /MARK NUMBER 3 937 003752 5054 5054 938 003753 5407 5407 939 003754 0142 0142 /MARK NUMBER 4 940 003755 4646 4646 941 003756 4244 4244 942 003757 4040 4040 943 003760 4407 4407 944 003761 0131 XMARK, 0131 /MARK NUMBER 5 945 003762 6531 6531 946 003763 3367 3367 947 003764 3307 3307 948 003765 0025 CIRCLE, 0025 /MARK NUMBER 6 949 003766 0117 0117 950 003767 2021 2021 951 003770 2223 2223 952 003771 2425 2425 953 003772 2617 2617 954 003773 0021 0021 955 003774 0707 0707 956 003775 0125 SCIRCL, 0125 /MARK NUMBER 7 957 003776 1720 1720 958 003777 2122 2122 959 004000 2324 2324 960 004001 2526 2526 961 004002 1730 1730 962 004003 1122 1122 963 004004 1324 1324 964 004005 1526 1526 965 004006 3022 3022 966 004007 2416 2416 967 004010 1007 1007 968 004011 0021 TRIANG, 0021 /MARK NUMBER 8 969 004012 0113 0113 970 004013 1413 1413 971 004014 1413 1413 972 004015 5656 5656 973 004016 1021 1021 974 004017 1011 1011 975 004020 1011 1011 976 004021 1011 1011 977 004022 1423 1423 978 004023 1400 1400 979 004024 2507 2507 980 004025 0121 STRIAN, 0121 /MARK NUMBER 9 981 004026 1314 1314 982 004027 1314 1314 983 004030 1356 1356 984 004031 5610 5610 985 004032 2110 2110 986 004033 1110 1110 987 004034 1110 1110 988 004035 1114 1114 989 004036 2334 2334 990 004037 1314 1314 991 004040 7621 7621 992 004041 1011 1011 993 004042 1011 1011 994 004043 1412 1412 995 004044 3413 3413 996 004045 4611 4611 997 004046 1011 1011 998 004047 2407 2407 999 004050 0035 SQUARE, 0035 /MARK NUMBER 10 1000 004051 0160 0160 1001 004052 6264 6264 1002 004053 6600 6600 1003 004054 3107 3107 1004 004055 0137 SSQUAR, 0137 /MARK NUMBER 11 1005 004056 6264 6264 1006 004057 6650 6650 1007 004060 5244 5244 1008 004061 4630 4630 1009 004062 3224 3224 1010 004063 2610 2610 1011 004064 1207 1207 1012 004065 0023 DIAMND, 0023 /MARK NUMBER 12 1013 004066 0125 0125 1014 004067 4741 4741 1015 004070 4325 4325 1016 004071 0027 0027 1017 004072 0707 0707 1018 004073 0123 SDIAMN, 0123 /MARK NUMBER 13 1019 004074 2547 2547 1020 004075 4143 4143 1021 004076 2516 2516 1022 004077 1537 1537 1023 004100 3133 3133 1024 004101 1516 1516 1025 004102 1527 1527 1026 004103 2123 2123 1027 004104 1615 1615 1028 004105 1711 1711 1029 004106 1407 1407 1030 004107 0024 STAR, 0024 /MARK NUMBER 14 1031 004110 0125 0125 1032 004111 1615 1615 1033 004112 1011 1011 1034 004113 2011 2011 1035 004114 2011 2011 1036 004115 2011 2011 1037 004116 1413 1413 1038 004117 1413 1413 1039 004120 2413 2413 1040 004121 2413 2413 1041 004122 1417 1417 1042 004123 1627 1627 1043 004124 1627 1627 1044 004125 1627 1627 1045 004126 6262 6262 1046 004127 2516 2516 1047 004130 2516 2516 1048 004131 0020 0020 1049 004132 0707 0707 1050 004133 0032 CROSS, 0032 /MARK NUMBER 15 1051 004134 1001 1001 1052 004135 2721 2721 1053 004136 6623 6623 1054 004137 2527 2527 1055 004140 6421 6421 1056 004141 2325 2325 1057 004142 6227 6227 1058 004143 2123 2123 1059 004144 6025 6025 1060 004145 0014 0014 1061 004146 3607 3607 1062 004147 0706 LAST, 0706 /END OF MARK TABLE 1063 1064 004150 0000 ZBLOCK LTRA-LAST-1 /ROOM FOR ADDITIONS 004151 0000 004152 0000 004153 0000 004154 0000 004155 0000 004156 0000 004157 0000 004160 0000 004161 0000 004162 0000 004163 0000 004164 0000 004165 0000 004166 0000 004167 0000 004170 0000 004171 0000 004172 0000 004173 0000 004174 0000 004175 0000 004176 0000 004177 0000 1065 1066 NOPUNCH 1067 PAGE 1068 ENPUNCH 1069 004200 0004 LTRA, 0004 /CHARACTER TABLE FOR CALCOMP PLOTTER 1070 004201 1636 1636 1071 004202 4443 4443 1072 004203 0343 0343 1073 004204 4077 4077 1074 004205 0333 LTRB, 0333 1075 004206 4241 4241 1076 004207 3000 3000 1077 004210 0636 0636 1078 004211 4544 4544 1079 004212 3377 3377 1080 004213 4536 LTRC, 4536 1081 004214 1605 1605 1082 004215 0110 0110 1083 004216 3041 3041 1084 004217 7777 7777 1085 004220 3000 LTRD, 3000 1086 004221 0636 0636 1087 004222 4541 4541 1088 004223 3077 3077 1089 004224 4606 LTRE, 4606 1090 004225 0333 0333 1091 004226 0300 0300 1092 004227 4077 4077 1093 004230 0003 LTRF, 0003 1094 004231 3303 3303 1095 004232 0646 0646 1096 004233 7777 7777 1097 004234 4536 LTRG, 4536 1098 004235 1605 1605 1099 004236 0110 0110 1100 004237 3041 3041 1101 004240 4323 4323 1102 004241 7777 7777 1103 004242 0006 LTRH, 0006 1104 004243 0343 0343 1105 004244 4640 4640 1106 004245 7777 7777 1107 004246 0040 LTRI, 0040 1108 004247 2026 2026 1109 004250 0646 0646 1110 004251 7777 7777 1111 004252 0201 LTRJ, 0201 1112 004253 1030 1030 1113 004254 4146 4146 1114 004255 7777 7777 1115 004256 0600 LTRK, 0600 1116 004257 0246 0246 1117 004260 2440 2440 1118 004261 7777 7777 1119 004262 0600 LTRL, 0600 1120 004263 4077 4077 1121 004264 0006 LTRM, 0006 1122 004265 2346 2346 1123 004266 4077 4077 1124 004267 0006 LTRN, 0006 1125 004270 4046 4046 1126 004271 7777 7777 1127 004272 4130 LTRO, 4130 1128 004273 1001 1001 1129 004274 0516 0516 1130 004275 3645 3645 1131 004276 4177 4177 1132 004277 0006 LTRP, 0006 1133 004300 3645 3645 1134 004301 4433 4433 1135 004302 0377 0377 1136 004303 2240 LTRQ, 2240 1137 004304 1001 1001 1138 004305 0516 0516 1139 004306 3645 3645 1140 004307 4130 4130 1141 004310 7777 7777 1142 004311 0006 LTRR, 0006 1143 004312 3645 3645 1144 004313 4433 4433 1145 004314 0323 0323 1146 004315 4077 4077 1147 004316 0110 LTRS, 0110 1148 004317 3041 3041 1149 004320 4233 4233 1150 004321 1304 1304 1151 004322 0516 0516 1152 004323 3645 3645 1153 004324 7777 7777 1154 004325 2026 LTRT, 2026 1155 004326 0646 0646 1156 004327 7777 7777 1157 004330 0601 LTRU, 0601 1158 004331 1030 1030 1159 004332 4146 4146 1160 004333 7777 7777 1161 004334 0620 LTRV, 0620 1162 004335 4677 4677 1163 004336 0610 LTRW, 0610 1164 004337 2330 2330 1165 004340 4677 4677 1166 004341 0046 LTRX, 0046 1167 004342 2306 2306 1168 004343 4077 4077 1169 004344 2023 LTRY, 2023 1170 004345 0623 0623 1171 004346 4677 4677 1172 004347 0646 LTRZ, 0646 1173 004350 0040 0040 1174 004351 7777 7777 1175 004352 3616 LBRAKT, 3616 1176 004353 1030 1030 1177 004354 7777 7777 1178 004355 0640 BSLASH, 0640 1179 004356 7777 7777 1180 004357 1636 RBRAKT, 1636 1181 004360 3010 3010 1182 004361 7777 7777 1183 004362 2026 UPAROW, 2026 1184 004363 0426 0426 1185 004364 4477 4477 1186 004365 1103 LFAROW, 1103 1187 004366 1503 1503 1188 004367 4377 4377 1189 004370 7777 SPACE, 7777 1190 004371 2011 EXCLPT, 2011 1191 004372 2215 2215 1192 004373 2635 2635 1193 004374 2231 2231 1194 004375 2077 2077 1195 004376 1614 QUOTE, 1614 1196 004377 7636 7636 1197 004400 3477 3477 1198 004401 1026 NUMSGN, 1026 1199 004402 2414 2414 1200 004403 4446 4446 1201 004404 3242 3242 1202 004405 1232 1232 1203 004406 3077 3077 1204 004407 0110 DOLLAR, 0110 1205 004410 3041 3041 1206 004411 4233 4233 1207 004412 1304 1304 1208 004413 0516 0516 1209 004414 3645 3645 1210 004415 3626 3626 1211 004416 2077 2077 1212 004417 0046 PERCNT, 0046 1213 004420 7614 7614 1214 004421 0516 0516 1215 004422 2514 2514 1216 004423 7630 7630 1217 004424 2132 2132 1218 004425 4130 4130 1219 004426 7777 7777 1220 004427 4220 AMPER, 4220 1221 004430 0001 0001 1222 004431 2516 2516 1223 004432 0540 0540 1224 004433 7777 7777 1225 004434 2624 APOST, 2624 1226 004435 7777 7777 1227 004436 2012 LPAREN, 2012 1228 004437 1426 1426 1229 004440 7777 7777 1230 004441 2032 RPAREN, 2032 1231 004442 3426 3426 1232 004443 7777 7777 1233 004444 0145 ASTER, 0145 1234 004445 2320 2320 1235 004446 2623 2623 1236 004447 0541 0541 1237 004450 7777 7777 1238 004451 2125 PLUS, 2125 1239 004452 2303 2303 1240 004453 4377 4377 1241 004454 1021 COMMA, 1021 1242 004455 2212 2212 1243 004456 1121 1121 1244 004457 7777 7777 1245 004460 0343 MINUS, 0343 1246 004461 7777 7777 1247 004462 2122 PERIOD, 2122 1248 004463 1211 1211 1249 004464 2177 2177 1250 004465 0046 SLASH, 0046 1251 004466 7777 7777 1252 004467 4130 NMBR0, 4130 1253 004470 1001 1001 1254 004471 0516 0516 1255 004472 3645 3645 1256 004473 4177 4177 1257 004474 0040 NMBR1, 0040 1258 004475 2026 2026 1259 004476 1577 1577 1260 004477 0516 NMBR2, 0516 1261 004500 3645 3645 1262 004501 4401 4401 1263 004502 0040 0040 1264 004503 7777 7777 1265 004504 0110 NMBR3, 0110 1266 004505 3041 3041 1267 004506 4233 4233 1268 004507 1333 1333 1269 004510 4445 4445 1270 004511 3616 3616 1271 004512 0577 0577 1272 004513 3036 NMBR4, 3036 1273 004514 0242 0242 1274 004515 7777 7777 1275 004516 0110 NMBR5, 0110 1276 004517 3041 3041 1277 004520 4233 4233 1278 004521 0306 0306 1279 004522 4677 4677 1280 004523 2602 NMBR6, 2602 1281 004524 0110 0110 1282 004525 3041 3041 1283 004526 4233 4233 1284 004527 2377 2377 1285 004530 2046 NMBR7, 2046 1286 004531 0677 0677 1287 004532 1333 NMBR8, 1333 1288 004533 4241 4241 1289 004534 3010 3010 1290 004535 0102 0102 1291 004536 1304 1304 1292 004537 0516 0516 1293 004540 3645 3645 1294 004541 4433 4433 1295 004542 7777 7777 1296 004543 2044 NMBR9, 2044 1297 004544 4536 4536 1298 004545 1605 1605 1299 004546 0413 0413 1300 004547 3377 3377 1301 004550 1121 COLON, 1121 1302 004551 2212 2212 1303 004552 1176 1176 1304 004553 1424 1424 1305 004554 2515 2515 1306 004555 1477 1477 1307 004556 1021 SCOLON, 1021 1308 004557 2212 2212 1309 004560 1121 1121 1310 004561 7624 7624 1311 004562 2515 2515 1312 004563 1424 1424 1313 004564 7777 7777 1314 004565 3513 LSTHAN, 3513 1315 004566 3177 3177 1316 004567 4404 EQUAL, 4404 1317 004570 7602 7602 1318 004571 4277 4277 1319 004572 1133 GTTHAN, 1133 1320 004573 1577 1577 1321 004574 1426 QUESTN, 1426 1322 004575 3645 3645 1323 004576 4433 4433 1324 004577 3077 3077 /END OF CHARACTER TABLE 1325 004600 0002 STOP 1326 $ AMPER 4427 unreferenced APOST 4434 unreferenced ASTER 4444 unreferenced ATLIST 1567 AUTO 0016 AXIS 3334 BACK 3733 BAR 3746 unreferenced BIG1 0634 BOTTOM 0226 BSLASH 4355 unreferenced BUFR 0060 CDI 6203 CHAR 0066 CHEK 0451 CHR 0065 CIRCLE 3765 unreferenced COLON 4550 unreferenced COMGO 1160 COMLST 0770 COMMA 4454 unreferenced CONT 1142 CR 3515 CROSS 4133 unreferenced DEVHLD 0073 DF1 0437 DF2 0446 DIAG 3332 DIAMND 4065 unreferenced DOLLAR 4407 unreferenced DOT 3737 DRAW 3412 DREI 3657 DRXN 3711 DX 3347 DXGTDY 3257 unreferenced DXY 3351 DY 3350 DYGTDX 3266 EINS 3632 EQUAL 4567 unreferenced ERROR2 4566 ERROR5 2732 EVAL 1613 EXCLPT 4371 unreferenced EXIT 0027 FIELD0 0250 unreferenced FIELD1 0217 FILEGO 5560 FINAL 3112 FIVE 3470 FIXIT 4453 FLEN 5547 FOUR 3466 GETA 0461 GETC 4545 GOSW 0105 GTNAME 4571 GTTHAN 4572 unreferenced HALB 3627 HALF 3441 IBLK 5473 ILIST 2414 INFLG 0121 unreferenced INHND 0120 INITL 3375 IPNTR 5546 IRST 5615 IX 3555 IY 3556 L 3602 LABEL 3061 LAST 4147 LBRAKT 4352 unreferenced LDIR 0122 LF 3520 LFAROW 4365 unreferenced LINE1 0224 LITL 0624 LN 3566 LOOP 3326 LPAREN 4436 unreferenced LSTHAN 4565 unreferenced LTAD 3562 LTRA 4200 LTRB 4205 unreferenced LTRC 4213 unreferenced LTRD 4220 unreferenced LTRE 4224 unreferenced LTRF 4230 unreferenced LTRG 4234 unreferenced LTRH 4242 unreferenced LTRI 4246 unreferenced LTRJ 4252 unreferenced LTRK 4256 unreferenced LTRL 4262 unreferenced LTRM 4264 unreferenced LTRN 4267 unreferenced LTRO 4272 unreferenced LTRP 4277 unreferenced LTRQ 4303 unreferenced LTRR 4311 unreferenced LTRS 4316 unreferenced LTRT 4325 unreferenced LTRU 4330 unreferenced LTRV 4334 unreferenced LTRW 4336 unreferenced LTRX 4341 unreferenced LTRY 4344 unreferenced LTRZ 4347 unreferenced LX 3247 LY 3252 M 3603 M7 3710 MARK 3604 unreferenced MCOM 0072 MCR 0116 MDIR 3707 MINUS 4460 unreferenced MKAD 3616 MOOV 0422 MOVE 3543 MULT 3531 N3 3513 N5 3514 NMBR0 4467 unreferenced NMBR1 4474 unreferenced NMBR2 4477 unreferenced NMBR3 4504 unreferenced NMBR4 4513 unreferenced NMBR5 4516 unreferenced NMBR6 4523 unreferenced NMBR7 4530 unreferenced NMBR8 4532 unreferenced NMBR9 4543 unreferenced NONAME 0020 NULL 3617 NUMSGN 4401 unreferenced OERROR 5463 ONE 3443 ORGO 5453 ORLIST 6375 OUTDEV 0063 P4600 0274 P5000 0273 P7 0126 P77 0127 PAGE2 0400 PD 5553 PDIR 3706 PEN 5410 PERCNT 4417 unreferenced PERIOD 4462 unreferenced PL0T 3235 PLCF 6502 PLD0 5400 PLD1 5401 unreferenced PLD2 5402 unreferenced PLD3 5403 unreferenced PLD4 5404 unreferenced PLD5 5405 unreferenced PLD6 5406 unreferenced PLD7 5407 unreferenced PLD8 5547 PLD9 0123 PLDD 6514 PLDR 3373 PLDU 6512 PLOP 5555 PLOT 4774 PLPD 6524 unreferenced PLPL 6521 PLPO 0125 PLPR 6511 PLPU 6504 PLSF 6501 PLT 3114 PLTR 0124 PLUD 6522 PLUS 4451 unreferenced PNOP 5423 POUT 3052 PTRAP 0477 PUSHJ 4540 QUESTN 4574 unreferenced QUOTE 4376 unreferenced RBRAKT 4357 unreferenced RESTOR 5440 RETURN 3100 ROTATE 5430 RPAREN 4441 unreferenced RX 3557 RY 3560 SAVE 6436 SCIRCL 3775 unreferenced SCOLON 4556 unreferenced SDIAMN 4073 unreferenced SETUP 3315 SEVEN 3511 SIX 3502 SIZE 3542 SLASH 4465 unreferenced SMAL 0546 SORTJ 4547 SPACE 4370 unreferenced SQUARE 4050 unreferenced SSQUAR 4055 unreferenced STAR 4107 unreferenced STOP 0002 STRCH 3305 unreferenced STRIAN 4025 unreferenced SX 3564 SY 3565 TABL 3615 TASK4 1232 TBAD 3567 TD 5554 TDIR 3572 TDUMP 3052 THREE 3457 unreferenced TICK 3751 unreferenced TJUMP 4573 TLIST 1400 TRAP 3070 TRIANG 4011 unreferenced TSPNOR 4574 TWO 3454 TXTEND 0302 UPAROW 4362 unreferenced VIER 3676 X 3600 XDYS 1142 XLABEL 3111 XMARK 3761 unreferenced XPLT 3575 Y 3601 ZERO 3434 ZWEI 3643