| 1 | /OS8 FORTRAN II COMPILER V5 |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | // |
| 10 | / |
| 11 | / |
| 12 | / |
| 13 | / |
| 14 | /COPYRIGHT (C) 1971,1974,1975 |
| 15 | /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. |
| 16 | / |
| 17 | / |
| 18 | / |
| 19 | /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A |
| 20 | /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- |
| 21 | /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER |
| 22 | /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE |
| 23 | /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO |
| 24 | /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE |
| 25 | /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. |
| 26 | / |
| 27 | / |
| 28 | /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
| 29 | /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL |
| 30 | /EQUIPMRNT COROPATION. |
| 31 | / |
| 32 | /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS |
| 33 | /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. |
| 34 | / |
| 35 | / |
| 36 | / |
| 37 | / |
| 38 | / |
| 39 | / |
| 40 | \f/ |
| 41 | / SYMBOL TABLE FOR FORTRAN COMPILER (8K- PDP-8) |
| 42 | / FOR USE WITH DISK/DECTAPE MONITOR SYSTEM |
| 43 | / CHANGE LOCATION 'XFINI' TO A 'JMP I LFINI' THEN |
| 44 | /ASSEMBLE AND SAVE |
| 45 | / .PAL FORT.PA |
| 46 | / .PAL FPATCH.PA |
| 47 | / |
| 48 | / .LO FORT.BN$FPATCH.BN$ |
| 49 | / |
| 50 | / .SA SYS FORT |
| 51 | / |
| 52 | / |
| 53 | |
| 54 | FIELD 0 |
| 55 | *200 |
| 56 | INBUF, TEXT /PDP-8 FORTRAN DEC-08-A2B1-5A/ |
| 57 | |
| 58 | *1000 |
| 59 | BEGIN, PLS /INITIALIZATION ROUTINE |
| 60 | TLS |
| 61 | RFC |
| 62 | CDF 00 |
| 63 | TAD CM1300 /SET SYMBOL TABLE TO ZEROS (6300-7577 FIELD 1) |
| 64 | DCA INDX |
| 65 | TAD BSYMP |
| 66 | DCA TPTT |
| 67 | LP, DCA I TPTT |
| 68 | ISZ INDX |
| 69 | JMP LP |
| 70 | TAD CM60 |
| 71 | DCA INDX |
| 72 | TAD BTTAB |
| 73 | DCA TPTT |
| 74 | DCA I TPTT /ZERO OUT TEMPORARY TABLES IN FIELD 0 |
| 75 | ISZ INDX |
| 76 | JMP .-2 |
| 77 | CDF 10 |
| 78 | TAD MIN104 /ZERO EVERYTHING FROM ZERO TO 107 |
| 79 | DCA INDX |
| 80 | TAD CP6 |
| 81 | DCA TPTT |
| 82 | LPP, DCA I TPTT |
| 83 | ISZ INDX |
| 84 | JMP LPP |
| 85 | TAD TPT /MOVE DATA FROM TABLE TO FIELD 0 |
| 86 | DCA TPTT |
| 87 | REP, CDF 00 |
| 88 | TAD I TPTT |
| 89 | SNA /END OF FIELD 0 INITIALIZATION? |
| 90 | JMP DN /YES |
| 91 | DCA LOC |
| 92 | TAD I TPTT |
| 93 | CDF 10 |
| 94 | DCA I LOC |
| 95 | JMP REP |
| 96 | DN, TAD I TPTT /MOVE DATA FROM TABLE TO FIELD 1 |
| 97 | SNA /END FIELD 1 INITIALIZATION |
| 98 | JMP DNN /YES |
| 99 | DCA LOC |
| 100 | TAD I TPTT |
| 101 | DCA I LOC |
| 102 | JMP DN |
| 103 | DNN, CIF 10 |
| 104 | JMP I STRT |
| 105 | LOC, 0 |
| 106 | INDX, 0 |
| 107 | MIN104, L7-ASSIGN |
| 108 | CP6, L7-1 |
| 109 | CM1300, -1300 |
| 110 | CM60, -60 |
| 111 | BTTAB, ITTAB-1 |
| 112 | BSYMP, BSYM-1 /BOTTOM OF TEMPORARY SYMBOL TABLE |
| 113 | STRT, FORST /STARTING POINT AFTER INITIALIZATION |
| 114 | TPTT=10 |
| 115 | TPT, TABLE-1 |
| 116 | TABLE, |
| 117 | PUNCH |
| 118 | LTTYPE |
| 119 | 15 |
| 120 | DOEND |
| 121 | 45 |
| 122 | FTTAB |
| 123 | 51 |
| 124 | ITTAB |
| 125 | 47 |
| 126 | TSYM-3 |
| 127 | 50 |
| 128 | TSYM |
| 129 | 55 |
| 130 | -25 |
| 131 | 56 |
| 132 | BSYM |
| 133 | 57 |
| 134 | BSYM |
| 135 | 71 |
| 136 | 5777 |
| 137 | 74 |
| 138 | 3000 |
| 139 | MIKE4 |
| 140 | 3377 |
| 141 | POINTZ |
| 142 | 3377 |
| 143 | BASE |
| 144 | INBUF |
| 145 | BASE2 |
| 146 | INBUF+100 |
| 147 | SCOUNT |
| 148 | 0 |
| 149 | SCOUNT+1 |
| 150 | 0 |
| 151 | SCOUNT+2 |
| 152 | 0 |
| 153 | QONE |
| 154 | 0 |
| 155 | QONE+1 |
| 156 | 0 |
| 157 | QONE+2 |
| 158 | 0 |
| 159 | QONE+3 |
| 160 | 0 |
| 161 | QONE+4 |
| 162 | 0 |
| 163 | QONE+5 |
| 164 | 0 |
| 165 | QONE+6 |
| 166 | 0 |
| 167 | 0 /THIS TERMINATES FIELD ZERO INITIALIZATION |
| 168 | 2375 |
| 169 | 4000 |
| 170 | 2376 |
| 171 | 4000 |
| 172 | 2377 |
| 173 | 4000 |
| 174 | 0 |
| 175 | |
| 176 | \f/ ERROR MESSAGE TABLE AND TEXT |
| 177 | |
| 178 | ELIST, -ERR1-1; EMSG1 /ILLEGAL CONTINUATION |
| 179 | -ERR2-1; IE /ILLEGAL ARITHMETIC EXPRESSION |
| 180 | -ERR3-1; IE |
| 181 | -ERR6-1; IE |
| 182 | -ERR9-1; EMSG3 |
| 183 | -ERR10-1; EMSG4 |
| 184 | -ERR12-1; EMSG4 |
| 185 | -ERR14-1; EMSG4 |
| 186 | -ERR15-1; EMSG3 |
| 187 | -ERR16-1; EMSG5 |
| 188 | -ERR17-1; EMSG6 |
| 189 | -ERR18-1; SE /SYNTAX ERROR |
| 190 | -ERR28-1; SE |
| 191 | -ERR29-1; SE |
| 192 | -ERR30-1; EMSG8 /ILLEGAL VARIABLE |
| 193 | -ERR31-1; SE |
| 194 | -ERR35-1; SE |
| 195 | -ERR36-1; EMSG36 |
| 196 | -ERR37-1; CE |
| 197 | -ERR38-1; EMSG9 /ILLEGAL DO NESTING |
| 198 | -ERR39-1; SE |
| 199 | -ERR40-1; IE |
| 200 | -ERR41-1; EMSG10 /EXPRESSION TOO BIG |
| 201 | -ERR42-1; IE |
| 202 | -ERR43-1; EMSG11 /MIXED MODE |
| 203 | -ERR44-1; EMSG9 |
| 204 | -ERR47-1; SF /SUBR. OR FUNCT. STMT. NOT FIRST |
| 205 | -ERR48-1; SE |
| 206 | -ERR50-1; SE |
| 207 | -ERR51-1; SE |
| 208 | -ERR52-1;IE |
| 209 | -ERR53-1; EMSG12 /ILLEGAL SUBSCRIPT |
| 210 | -ERR54-1; EMSG13 /ILLEGAL EQUIVALENCING |
| 211 | -ERR59-1; SE |
| 212 | -ERR60-1; EMSG3 |
| 213 | 0; EMSG14 /COMPILER MALFUNCTION |
| 214 | |
| 215 | EMSG1, TEXT /ILLEGAL CONTINUATION/ |
| 216 | IE, TEXT /ILLEGAL ARITHMETIC EXPRESSION/ |
| 217 | EMSG3, TEXT /ILLEGAL STATEMENT/ |
| 218 | EMSG4, TEXT /ILLEGAL CONSTANT/ |
| 219 | EMSG5, TEXT /ILLEGAL STATEMENT NUMBER/ |
| 220 | EMSG6, TEXT /SYMBOL TABLE EXCEEDED/ |
| 221 | SE, TEXT /SYNTAX ERROR/ |
| 222 | EMSG8, TEXT /ILLEGAL VARIABLE/ |
| 223 | EMSG9, TEXT /ILLEGAL OR EXCESSIVE DO NESTING/ |
| 224 | EMSG10, TEXT /ARITHMETIC EXPRESSION TOO COMPLEX/ |
| 225 | EMSG11, TEXT /MIXED MODE EXPRESSION/ |
| 226 | EMSG12, TEXT /EXCESSIVE SUBSCRIPTS/ |
| 227 | EMSG13, TEXT /ILLEGAL EQUIVALENCING/ |
| 228 | EMSG14, TEXT /COMPILER MALFUNCTION/ |
| 229 | CE, TEXT /UNBALANCED QUOTES/ |
| 230 | SF, TEXT /SUBR. OR FUNCT. STMT. NOT FIRST/ |
| 231 | EMSG36, TEXT /ARRAY TOO LARGE/ |
| 232 | \fITTAB=710 |
| 233 | FTTAB=ITTAB+30 |
| 234 | DOEND=2377 |
| 235 | BSYM=6300 |
| 236 | TSYM=7600 |
| 237 | |
| 238 | / THE STATEMENT TYPE TABLE FOLLOWS |
| 239 | *2600 |
| 240 | STYPE, 7361 /-DO |
| 241 | 0000 |
| 242 | LDO |
| 243 | 6672 /-IF |
| 244 | 0000 |
| 245 | LIF |
| 246 | 7061 /-GO |
| 247 | 5361 /-TO |
| 248 | LGOTO |
| 249 | 7477 /-CA |
| 250 | 6364 /-LL |
| 251 | CAL |
| 252 | 5573 /-RE |
| 253 | 5353 /-TU |
| 254 | LRET |
| 255 | 7461 /-CO |
| 256 | 6154 /-NT |
| 257 | LCONT |
| 258 | 5454 /-ST |
| 259 | 6060 /-OP |
| 260 | LSTOP |
| 261 | 5777 /-PA |
| 262 | 5255 /-US |
| 263 | LPAUSE |
| 264 | 5573 /-RE |
| 265 | 7674 /-AD |
| 266 | LREAD |
| 267 | 5056 /-WR |
| 268 | 6654 /-IT |
| 269 | LWRIT |
| 270 | 7161 /-FO |
| 271 | 5563 /-RM |
| 272 | LFRMAT |
| 273 | 7262 /-EN |
| 274 | 7400 /-D |
| 275 | LLAST |
| 276 | 7461 /-CO |
| 277 | 6263 /-MM |
| 278 | LCOMON |
| 279 | 7367 /-DI |
| 280 | 6273 /-ME |
| 281 | LDIMEN |
| 282 | 7257 /-EQ |
| 283 | 5267 /-UI |
| 284 | |
| 285 | EQUI |
| 286 | -0611 /-FI |
| 287 | -1611 /-NI |
| 288 | LFIN |
| 289 | XXSUBR, 5453 /-SU |
| 290 | 7556 /-BR |
| 291 | LSUB |
| 292 | 7153 /-FU |
| 293 | 6175 /-NC |
| 294 | LFUNC |
| 295 | 0000 /THIS IS THE END OF LIST |
| 296 | AREA1, 0 |
| 297 | AREA2, 0 |
| 298 | |
| 299 | / THE PRECEDENCE TABLE FOLLOWS, NON-ZERO PREC. OPERATORS APPEAR |
| 300 | -45 / PREC('%') = 7 NOTE: '%' REPLACES '**' |
| 301 | 700 |
| 302 | -52 / PREC('*') = 5 |
| 303 | 500 |
| 304 | -57 / PREC('/') = 5 |
| 305 | 500 |
| 306 | -53 / PREC('+') = 4 |
| 307 | 400 |
| 308 | -55 / PREC('-') = 4 |
| 309 | 400 |
| 310 | -75 / PREC('=') = 1 |
| 311 | 100 |
| 312 | -74 / PREC('<') = 1 NOTE: '<' IMPLIES SUBSCRIPTED ASSIGNMENT |
| 313 | 100 |
| 314 | 1 /THIS IS THE END OF THE TABLE |
| 315 | THOU, -1750 |
| 316 | -144 |
| 317 | -12 |
| 318 | -1 |
| 319 | |
| 320 | / THE PERMANENT SYMBOL TABLE BEGINS HERE |
| 321 | *6000 |
| 322 | 1501 /MAIN |
| 323 | 1116 |
| 324 | 0001 |
| 325 | 0601 /FAD |
| 326 | 0400 |
| 327 | 0001 |
| 328 | 2324 /STO |
| 329 | 1700 |
| 330 | 0001 |
| 331 | 0623 /FSB |
| 332 | 0200 |
| 333 | 0001 |
| 334 | 0615 /FMP |
| 335 | 2000 |
| 336 | 0001 |
| 337 | 0604 /FDV |
| 338 | 2600 |
| 339 | 0001 |
| 340 | 1520 /MPY |
| 341 | 3100 |
| 342 | 0001 |
| 343 | 0411 /DIV |
| 344 | 2600 |
| 345 | 0001 |
| 346 | 2205 /READ |
| 347 | 0104 |
| 348 | 0001 |
| 349 | 2722 /WRITE |
| 350 | 1124 |
| 351 | 0501 |
| 352 | 1117 /IOH |
| 353 | 1000 |
| 354 | 0001 |
| 355 | 5060 /(0 |
| 356 | 0000 |
| 357 | 0001 |
| 358 | 1215 /JMP |
| 359 | 2000 |
| 360 | 0001 |
| 361 | 1617 /NOP |
| 362 | 2000 |
| 363 | 0001 |
| 364 | 0516 /ENTRY |
| 365 | 2422 |
| 366 | 3101 |
| 367 | 0501 /EAP |
| 368 | 2000 |
| 369 | 0001 |
| 370 | 2001 /PAUSE |
| 371 | 2523 |
| 372 | 0501 |
| 373 | OPTADI, 2401 /TAD I |
| 374 | 0440 |
| 375 | 1101 |
| 376 | OPTAD, 2401 /TAD |
| 377 | 0400 |
| 378 | 0001 |
| 379 | OPDCA, 0403 /DCA |
| 380 | 0100 |
| 381 | 0001 |
| 382 | OPJMPI, 1215 /JMP I |
| 383 | 2040 |
| 384 | 1101 |
| 385 | 2205 /RETRN |
| 386 | 2422 |
| 387 | 1601 |
| 388 | 0320 /CPAGE |
| 389 | 0107 |
| 390 | 0501 |
| 391 | OPSNA, 2316 /SNA |
| 392 | 0100 |
| 393 | 0001 |
| 394 | 2320 /SPC |
| 395 | 0300 |
| 396 | 0001 |
| 397 | 0301 /CALL |
| 398 | 1414 |
| 399 | 0001 |
| 400 | 0313 /CKIO |
| 401 | 1117 |
| 402 | 0001 |
| 403 | 1014 /HLT |
| 404 | 2400 |
| 405 | 0001 |
| 406 | OPCLA, 0314 /CLA |
| 407 | 0100 |
| 408 | 0001 |
| 409 | 0614 /FLOT |
| 410 | 1724 |
| 411 | 0001 |
| 412 | 1106 /IFAD |
| 413 | 0104 |
| 414 | 0001 |
| 415 | 0311 /CIA |
| 416 | 0100 |
| 417 | 0001 |
| 418 | 0310 /CHS |
| 419 | 2300 |
| 420 | 0001 |
| 421 | 0611 /FIX |
| 422 | 3000 |
| 423 | 0001 |
| 424 | 1123 /ISTO |
| 425 | 2417 |
| 426 | 0001 |
| 427 | 2001 /PAGE |
| 428 | 0705 |
| 429 | 0001 |
| 430 | BLCK, 0214 /BLOCK |
| 431 | 1703 |
| 432 | 1301 |
| 433 | 0516 /END |
| 434 | 0400 |
| 435 | 0001 |
| 436 | 1401 /LAP |
| 437 | 2000 |
| 438 | 0001 |
| 439 | 0317 /COMMN |
| 440 | 1515 |
| 441 | 1601 |
| 442 | 1123 /ISZ |
| 443 | 3200 |
| 444 | 0001 |
| 445 | 2325 /SUBSC |
| 446 | 0223 |
| 447 | 0301 |
| 448 | DUMMY, 0425 /DUMMY |
| 449 | 1515 |
| 450 | 3101 |
| 451 | 0122 /ARG |
| 452 | 0700 |
| 453 | 0001 |
| 454 | 0314 /CLEAR |
| 455 | 0501 |
| 456 | 2201 |
| 457 | 1111 /IIPOW |
| 458 | 2017 |
| 459 | 2701 |
| 460 | 0611 /FIPOW |
| 461 | 2017 |
| 462 | 2701 |
| 463 | 1106 /IFPOW |
| 464 | 2017 |
| 465 | 2701 |
| 466 | 0606 /FFPOW |
| 467 | 2017 |
| 468 | 2701 |
| 469 | 0403 /DCA I |
| 470 | 0140 |
| 471 | 1101 |
| 472 | 0103 /ACH |
| 473 | 1000 |
| 474 | 0001 |
| 475 | OPEN, 1720 /OPEN |
| 476 | 0516 |
| 477 | 0001 |
| 478 | 0522 /ERROR |
| 479 | 2217 |
| 480 | 2201 |
| 481 | 1116 /INC |
| 482 | 0300 |
| 483 | 0001 |
| 484 | FORTR, 0617 /FORTR |
| 485 | 2224 |
| 486 | 2201 |
| 487 | OPCMA, 0315 /CMA |
| 488 | 0100 |
| 489 | 0001 |
| 490 | OPIAC, 1101 /IAC |
| 491 | 0300 |
| 492 | 0001 |
| 493 | EXIT, 0530 /EXIT |
| 494 | 1124 |
| 495 | 0001 |
| 496 | \f FIELD 1 |
| 497 | *0 |
| 498 | FIRSTF, 1 |
| 499 | *7 |
| 500 | L7, 0 |
| 501 | L10, 0 |
| 502 | L11, 0 |
| 503 | L12, 0 /LAST LINE'S CONTENTS FOR OPTOMIZATION |
| 504 | 0 |
| 505 | L14, 0 |
| 506 | L15, 2377 /POINTER INTO DOEND LIST |
| 507 | L16, 0 |
| 508 | L17, 0 |
| 509 | L20, 0 /FLAG, NON-ZERO IF '=' SEEN |
| 510 | L21, 0 |
| 511 | L22, 0 /SUBSCRIPT NESTING LEVEL |
| 512 | L23, 0 /USED BY "DUMARG" AND "IOHAR" PATCH |
| 513 | L24, 0 /LINE POINTER |
| 514 | L25, 0 /HIGHEST SUBSCRIPT TEMP USED |
| 515 | L26, 0 /USED FOR DIMENSION INFORMATION |
| 516 | 0 /UNUSED |
| 517 | L30, 0 /FOLLOWING EIGHT LOCS ARE USED BY ENTITY |
| 518 | L31, 0 |
| 519 | L32, 0 |
| 520 | L33, 0 |
| 521 | L34, 0 |
| 522 | L35, 0 |
| 523 | L36, 0 |
| 524 | L37, 0 |
| 525 | L40, 0 /CONTAINS THE CURRENT TRIPLE NUMBER |
| 526 | L41, 0 /THIS IS THE POINTER INTO THE PUSH DOWN LIST |
| 527 | L42, 0 /THESE TWO LOCATIONS ARE USED BY THE TRIPLE PROCESSOR |
| 528 | L43, 0 / |
| 529 | L44, 0 /CONTAINS ONE FOR RIGHT OF EQUALS, ZERO FOR LEFT |
| 530 | L45, FTTAB /CONTAINS LARFEST FLOATING POINT TEMPORARY NUMBER USED |
| 531 | L46, 0 /CONTAINS NUMBER OF THE TRIPLE CURRENTLY IN THE AC |
| 532 | L47, 7575 /CONTAINS THREE LESS THAN START OF FCON TABLE |
| 533 | L50, 7600 /CONTAINS START OF DIMENSION TABLE |
| 534 | L51, ITTAB /CONTAINS LARGEST INTEGER TEMPORARY NUMBER USED |
| 535 | L52, 0 /CONTAINS ONE IF RETURN FROM GENER IS DESIRED FOR BALANCE |
| 536 | L53, 0 /CONTAINS THE LAST CREATED LABEL |
| 537 | L54, 0 /CONTAINS THE LABEL FOR THE CURRENT STATEMENT |
| 538 | L55, -25 /CONTAINS THE MAXIMUM ALLOWABLE NUMBER OF UNENDED DOS |
| 539 | L56, 6300 /CONTAINS BEGINNING OF SYMBOL TABLE |
| 540 | L57, 6300 /CONTAINS END OF SYMBOL TABLE |
| 541 | L60, 0 /"INDIRECT =" FLAG FOR S.S LEFT OF EQUALS SIGN |
| 542 | L61, 0 /NON-ZERO IF LAST STMT READ IS A COMMENT |
| 543 | L62, 0 /NEXT FOUR LOCATIONS USED BY GENER AND ENTITY |
| 544 | L63, 0 /CONTAINS THE CURRENT OPERATOR |
| 545 | L64, 0 /POINTS TO THE LAST OPERATOR IN THE STACK |
| 546 | L65, 0 /CONTAINS THE PRECEDENCE OF THE CURRENT OPERATOR |
| 547 | BPAREN, 0 /PARENTHESIS COUNTER |
| 548 | L67, 0 /ONE FOR FUNCTION AND ZERO FOR SUBROUTINE |
| 549 | L70, 0 /CONTAINS POINTER TO SUBPROGRAM NAME |
| 550 | L71, 5777 /BEGINNING OF PUSHDOWN LIST |
| 551 | L72, 0 /SET TO ONE IF SUBSCRIPT IS ENCOUNTERED |
| 552 | L73, 0 / |
| 553 | L74, 3000 /BEGINNING OF ERASABLE LOCATIONS USED FOR PARAMETERS |
| 554 | L75, 0 /SET TO ONE SUPPRESS /OUTPUT FROM COMPILER |
| 555 | L76, 0 / |
| 556 | L77, 0 /CONTAINS ADDRESS OF LAST ENTRY INTO FCON OR SYMBOL TABLE |
| 557 | /THE FOLLOWING THREE LOCS ARE USED BY THE |
| 558 | /LITERAL COLLECTER |
| 559 | COUNT2, 0 /NUMBER OF DIGITS TO RIGHT OF DECIMAL POINT |
| 560 | ESIGN, 0 /0 MEANS POSITIVE EXPONENT, 1 MEANS NEGATIVE |
| 561 | FPSW, 0 /0 MEANS INTEGER CONSTANT, 1 MEANS FLOATING POINT |
| 562 | MIKE4,MA, 3377 |
| 563 | MIKE8,TOTAL, 0 |
| 564 | INTA, 0 |
| 565 | INTB,MIKE7, 0 |
| 566 | SNUM,MB, 0 |
| 567 | POINTZ, 3377 |
| 568 | CHK, 0 |
| 569 | IMPDO, 0 /"IMPLIED DO-LOOP IN PROGRESS" FLAG |
| 570 | KOUNT, 0 |
| 571 | ASSIGN, LASIGN /ROUTINE TO PROCESS ASSIGNMENT STATEMENTS |
| 572 | PUTCH, LPUTCH /ROUTINE TO PUT A CHARACTER BACK IN THE INPUT BUFFER |
| 573 | PROP, LPROP /PRINTS OPCODES |
| 574 | PRCRL, LPRCRL /PRINTS CREATED LABELS |
| 575 | PRINT, LPRINT /PRINTS ONE ASCII CHAR |
| 576 | P2, LP2 /PRINT TWO PACKED ASCII CHARS |
| 577 | GETCH, LGETCH /GETS ONE CHARACTER OUT OF THE INPUT BUFFER |
| 578 | LUNCH, LLUNCH /PRINTS ERROR COMMENTS |
| 579 | MODE, LMODE /DETERMINES THE MODE OF THE ARGUMENT |
| 580 | LOOK, LLOOK /CHECKS FOR THE REST OF THE INPUT STATEMENT |
| 581 | ZZZ, LZZZ /PRINTS OUT STATEMENT LABELS |
| 582 | ENTITY, LENTT /GETS THE NEXT LOGICAL INPUT PARAMETER |
| 583 | SYMTAB, LSYMTB /ENTERS SYMBOLS INTO THE SYMBOL TABLE |
| 584 | DUMARG, LDMARG /SEES IF PARAMETER IS A DUMMY ARG OR SUBSCRIPT |
| 585 | PRSYM, LPRSYM /PRINTS SYMBOLS |
| 586 | CREATE, LCREAT /CREATES LABELS |
| 587 | PROTAC, LPRTAC /PRINTS CONTENTS OF AC IN OCTAL |
| 588 | PLAB, LPLAB /PRINTS LABELS |
| 589 | PIFF, LPIFF /PUTS OUT AN IFF FOR THE CONTENTS OF THE AC |
| 590 | TRIPL, LTRIPL /PROCESSES THE TRIPLES GENERATED FROM AN EXPRESSION |
| 591 | GENER, LGENER /GENERATES THE TRIPLES |
| 592 | LCHNG, CHNG /TEST FOR DUMMY ARG AND REPLACE |
| 593 | CLAB, LCLAB /HANGS A CREATED LABEL ON THE NEXT LINE |
| 594 | STORE, LSTORE /STORES THE CONTENTS OF THE AC |
| 595 | FPROP, LFPROP /PUT OUT CALLS TO F.P. ROUTINES |
| 596 | ZER, LZER |
| 597 | DUM, LDUM /PROCESSES OCCURRANCES OF DUMMY ARGUMENTS IN LISTS |
| 598 | DIM, LDIM /LOOKS UP DIMENSION INFORMATION ON VARIABLES |
| 599 | PUNCH, LTTYPE /ADDRESS OF CURRENT OUTPUT ROUTINE |
| 600 | C2, 2 |
| 601 | C3, 3 |
| 602 | \fC40, 40 |
| 603 | C7240, 5440 /THIS WAS COLON-SPACE NOW ITS COMMA-SPACE |
| 604 | C77, 77 |
| 605 | CM40, -40 |
| 606 | CM4046, -4046 |
| 607 | CM50, -50 |
| 608 | CM51, -51 |
| 609 | CM54, -54 |
| 610 | CM2, -2 |
| 611 | CM3, -3 |
| 612 | CHECK, LCHECK |
| 613 | SMODE, LSMODE |
| 614 | BSS, LBSS |
| 615 | ARG, LARG |
| 616 | C54, 54 |
| 617 | BASE, INBUF |
| 618 | BASE2, INBUF+100 |
| 619 | C4000, 4000 |
| 620 | GNB, LGNB |
| 621 | \f *177 |
| 622 | START, CLA /COME HERE AT BEGINNING OF EACH STMT |
| 623 | DCA FIRSTF |
| 624 | START1, TAD IMPDO |
| 625 | SZA CLA |
| 626 | JMP ERR1 /IF IMPDO<>0 THEN WE MUST HAVE SCREWED UP ON |
| 627 | /CONTINUATIONS (I THINK) |
| 628 | ISZ CHK /IS THERE A STMT IN THE BUFFER? |
| 629 | JMP .+3 |
| 630 | JMS I SWAP /YES, SWITCH BUFFER POINTERS |
| 631 | JMP .+3 |
| 632 | TAD BASE |
| 633 | JMS I RCD /NO, READ THE NEXT LINE |
| 634 | TEST, TAD L15 |
| 635 | TAD CM3 |
| 636 | DCA L16 /SET UP XR FOR DO TERMINATION TEST |
| 637 | TAD L54 |
| 638 | CIA |
| 639 | TAD I L16 |
| 640 | SZA CLA /ARE WE TERMINATING A DO? |
| 641 | JMP ATRY |
| 642 | JMS LDNEXT /TERMINATE DO LOOP |
| 643 | JMP TEST /SEE IF THERE IS ANY MORE... |
| 644 | ATRY, TAD L61 |
| 645 | SZA CLA /A COMMENT? |
| 646 | JMP CMNT |
| 647 | TAD CHK |
| 648 | SZA CLA /ILLEGAL CONTINUATION? |
| 649 | ERR1, JMS I LUNCH |
| 650 | JMS I STMT /GET THE STMT NR... |
| 651 | TAD L32 |
| 652 | SNA |
| 653 | JMP .+4 /NO STMT NUMBER |
| 654 | CIA |
| 655 | TAD L12 |
| 656 | SZA CLA /CAN WE OMIT A TERMINAL JMP? |
| 657 | JMS I PRINT |
| 658 | DCA L24 |
| 659 | FLST, JMS LIST /PUNCH SOURCE STMT |
| 660 | JMS I WIPE /ZERO THE SUBSCRIPT TEMP. TABLE |
| 661 | TAD L32 |
| 662 | DCA L54 |
| 663 | TAD CM2 |
| 664 | DCA L64 |
| 665 | SKP |
| 666 | ACA, DCA I BAREA1 |
| 667 | JMS I GETCH |
| 668 | JMP ALPH |
| 669 | NOP |
| 670 | JMS I PUTCH /PUT CHARACTER BACK |
| 671 | ALPH, RTL CLL |
| 672 | RTL |
| 673 | RTL |
| 674 | DCA L65 |
| 675 | JMS I GETCH |
| 676 | JMP ALPH2 |
| 677 | NOP |
| 678 | JMS I PUTCH /PUT CHARACTER BACK |
| 679 | ALPH2, TAD L65 |
| 680 | ISZ L64 |
| 681 | JMP ACA |
| 682 | DCA I BAREA2 |
| 683 | DCA CHK |
| 684 | TAD SSTYP /COMPARE THESE CHARS WITH DISPATCH TABLE |
| 685 | DCA L17 |
| 686 | TRY, TAD I L17 |
| 687 | SNA /END OF THE TABLE? |
| 688 | JMP I ASSIGN /YES, MUST BE ARITHMETIC STMT |
| 689 | TAD I BAREA1 |
| 690 | SZA CLA |
| 691 | JMP NOHIT2 |
| 692 | TAD I BAREA2 |
| 693 | TAD I L17 |
| 694 | SZA CLA |
| 695 | JMP NOHIT1 |
| 696 | TAD I L17 /FOUND A MATCH, GO TO PROPER HANDLER... |
| 697 | DCA L30 |
| 698 | JMP I L30 |
| 699 | NOHIT2, ISZ L17 |
| 700 | NOHIT1, ISZ L17 |
| 701 | JMP TRY /DOESN'T MATCH, TRY AGAIN |
| 702 | |
| 703 | LDNEXT, 0 |
| 704 | TAD L15 /RESET THE DO END POINTER |
| 705 | TAD CM3 |
| 706 | DCA L15 |
| 707 | TAD L15 |
| 708 | IAC |
| 709 | DCA L16 |
| 710 | CMA |
| 711 | TAD L55 |
| 712 | DCA L55 |
| 713 | JMS I PROP /PUNCH 'JMP <LABEL>' |
| 714 | 6044 |
| 715 | TAD I L16 |
| 716 | JMS I PRCRL |
| 717 | JMS I PRINT |
| 718 | TAD I L16 /PUNCH '<LABEL>,' |
| 719 | JMS I CLAB |
| 720 | JMS I PRINT |
| 721 | JMP I LDNEXT |
| 722 | |
| 723 | PTEM, 0 |
| 724 | |
| 725 | LIST, 0 /PUNCH THE SOURCE STATEMENT |
| 726 | TAD BASE /GET THE POINTER |
| 727 | DCA PTEM |
| 728 | TAD I PTEM /PUNCH A CHARACTER PAIR... |
| 729 | JMS I P2 |
| 730 | TAD I PTEM |
| 731 | ISZ PTEM |
| 732 | AND C77 |
| 733 | SZA CLA /END OF THE BUFFER? |
| 734 | JMP LIST+3 |
| 735 | JMS I PRINT /YES, PUNCH A CR-LF AND RETURN |
| 736 | JMP I LIST |
| 737 | |
| 738 | CMNT, JMS I PRINT /WE HAVE A COMMENT |
| 739 | DCA L24 |
| 740 | JMS LIST |
| 741 | JMP START1 /ALLOW COMMENTS BEFORE SUBR. OR FUNCTION STMT. |
| 742 | |
| 743 | |
| 744 | BAREA1, AREA1 |
| 745 | BAREA2, AREA2 |
| 746 | RCD, LRCD |
| 747 | SSTYP, STYPE-1 /POINTER TO STATMENT TABLE IN FIELD 1 |
| 748 | WIPE, LWIPE |
| 749 | STMT, LSTMT |
| 750 | SWAP, LSWAP |
| 751 | \f *400 |
| 752 | / THE FOLLOWING ROUTINE IS ENTERED WITH THE BUFFER POINTER IN THE AC |
| 753 | / IT PUTS ONE LINE INTO THE BUFFER, |
| 754 | / CHECKS FOR COMMENTS AND COUTINUATION LINES, AND IF IT IS A |
| 755 | / CONTINUATION IT SETS KOUNT TO THE PROPER COLUMN |
| 756 | / |
| 757 | LRCD, 0 |
| 758 | DCA TEM1 /SAVE THE BUFFER POINTER |
| 759 | DCA I TEM1 |
| 760 | DCA CHK /ZERO CONTINUATION FLAG |
| 761 | DCA L20 /ZERO THE EQUALS FLAG |
| 762 | DCA L61 /ZERO THE COMMENT FLAG |
| 763 | TAD CM111 /BUFFER LIMIT IS 72 CHARACTERS |
| 764 | DCA IX |
| 765 | LRCDL, CLA |
| 766 | JMS LPTRIN |
| 767 | AND D177 |
| 768 | SZA /LEADER OR BLANK TAPE? |
| 769 | TAD CM177 |
| 770 | SNA /RUBOUT? |
| 771 | JMP LRCDL |
| 772 | TAD (177-15 |
| 773 | SNA |
| 774 | JMP LCAR |
| 775 | TAD (15-11 |
| 776 | SNA |
| 777 | JMP TAB |
| 778 | TAD (11-40 |
| 779 | SPA |
| 780 | JMP LRCDL |
| 781 | TAD (40-75 |
| 782 | SNA /AN '=' ? |
| 783 | ISZ L20 |
| 784 | TAD C75 /CHAR OK... RESTORE IT & PUT IN BUFFER |
| 785 | JMS KRONK /PUT IT IN THE BUFFER... |
| 786 | JMP LRCDL /AND GET ANOTHER |
| 787 | |
| 788 | LCAR, TAD IX /PROCESS A CAR RETURN... |
| 789 | CIA |
| 790 | TAD CM111 |
| 791 | SNA CLA /NULL STATEMENT? |
| 792 | JMP LRCDL /YES, IGNORE |
| 793 | JMS KRONK /PUT A ZERO IN THE BUFFER |
| 794 | TAD I TEM1 |
| 795 | TAD CM3 |
| 796 | SNA |
| 797 | JMP COMNT |
| 798 | TAD CM20 |
| 799 | SZA CLA /TEST FOR "S" IN COLUMN ONE |
| 800 | JMP TINUE |
| 801 | JMP I (SCODE |
| 802 | COMNT, ISZ L61 /SET COMMENT FLAG... |
| 803 | TAD C40 |
| 804 | JMP STORSL |
| 805 | |
| 806 | TINUE, TAD TEM1 /CHECK FOR CONTINUATION... |
| 807 | TAD C3 |
| 808 | DCA P /SET THE POINTER TO COLS. 6 AND 7 |
| 809 | TAD I P |
| 810 | AND C5700 /NON-ZERO OR NON BLANK IN COL 6 |
| 811 | TAD C4000 /MAKES THIS A CONTINUATION... |
| 812 | SNA CLA /IS IT? |
| 813 | JMP LRCDA /MAYBE... |
| 814 | LRCDX, TAD B7 /YES, MAKE IT START IN COL 7 |
| 815 | DCA KOUNT |
| 816 | ISZ CHK /INCREMENT THE CONTINUATION FLAG |
| 817 | TAD I TEM1 |
| 818 | STORSL, TAD C5700 /MAKE THIS INTO A COMMENT LINE |
| 819 | DCA I TEM1 |
| 820 | JMP I LRCD /THEN RETURN |
| 821 | |
| 822 | LRCDA, TAD I P /NUMERIC AND NON-ZERO IN COL 7 MAKES |
| 823 | AND C77 /THIS A CONTINUATION... |
| 824 | TAD CM61 |
| 825 | SPA CLA /IS IT? |
| 826 | JMP LRCDX+3 /NO, RETURN |
| 827 | IAC /YES, MAKE IT START IN COL 8 |
| 828 | JMP LRCDX |
| 829 | |
| 830 | TAB, TAD C40 /PROCESS TAB CHARACTERS... |
| 831 | JMS KRONK /PUT SOME SPACES IN THE BUFFER |
| 832 | TAD IX |
| 833 | TAD C3 /MAKE 1ST TAB GO TO COL 7 |
| 834 | SMA /ARE WE AT END OF THE BUFFER? |
| 835 | CLA /YES, FORCE TERMINATION |
| 836 | AND B7 |
| 837 | SZA CLA /MODULO 8? |
| 838 | JMP TAB /NO, PUNCH SOME MORE SPACES |
| 839 | JMP LRCDL /YES, GET ANOTHER CHAR |
| 840 | |
| 841 | KRONK, 0 /PUT A CHARACTER IN THE BUFFER... |
| 842 | DCA CAR |
| 843 | CLA IAC |
| 844 | TAD IX /FIRST COMPUTE BUFFER ADDRESS... |
| 845 | SNA /PAST COL. 72? |
| 846 | JMP I KRONK /YES-RETN. |
| 847 | TAD C111 /NO |
| 848 | CLL RAR |
| 849 | TAD TEM1 |
| 850 | DCA P |
| 851 | TAD CAR /PICK UP THE CHARACTER |
| 852 | AND C77 |
| 853 | SZL /ZERO LINK SAYS WE WANT THE LEFT HALF |
| 854 | JMP .+5 |
| 855 | RTL |
| 856 | RTL |
| 857 | RTL |
| 858 | DCA I P |
| 859 | TAD I P /ADD IN THE LEFT 6 BITS |
| 860 | DCA I P /AND SALT THEM AWAY... |
| 861 | ISZ IX /BUFFER OVERFLOW? |
| 862 | JMP I KRONK |
| 863 | |
| 864 | LPTRIN, 0 /PAPER TAPE READER INPUT ROUTINE |
| 865 | RSF |
| 866 | JMP .-1 |
| 867 | RRB RFC |
| 868 | JMP I LPTRIN |
| 869 | |
| 870 | CAR, 0 /TEMPORARY, HOLDS THE CURRENT CHARACTER |
| 871 | P, 0 /THIS IS THE BUFFER POINTER |
| 872 | TEM1, 0 /THIS CONTAINS THE CURRENT BUFFER ADDRESS |
| 873 | IX, 0 /THIS IS THE CHARACTER COUNTER |
| 874 | CM111, -111 /MINUS THE BUFFER LIMIT PLUS ONE |
| 875 | C111, 111 /THIS IS THE BUFFER LIMIT PLUS ONE |
| 876 | D177, 177 |
| 877 | CM177, -177 |
| 878 | C75, 75 |
| 879 | B7, 7 |
| 880 | C5700, 5700 |
| 881 | CM61, -61 |
| 882 | CM20, -20 |
| 883 | M1700, -1700 |
| 884 | \f *600 |
| 885 | CAL, TAD KOUNT /SUBROUTINE CALL STMT PROCESSOR |
| 886 | DCA COUNT3 |
| 887 | JMS I ENTITY |
| 888 | JMP I ASSIGN |
| 889 | JMP ON |
| 890 | COUNT3, 0 |
| 891 | Q12, 12 |
| 892 | JMP I ASSIGN |
| 893 | ON, JMS I GNB |
| 894 | SNA /ANY ARGUMENTS? |
| 895 | JMP CR2 /NO |
| 896 | TAD CM50 |
| 897 | SZA /MAYBE, IS THIS A '(' ? |
| 898 | JMP I ASSIGN |
| 899 | JMS I ZZZ /YES, PUNCH STMT NR, IF ANY |
| 900 | TAD COUNT3 |
| 901 | DCA KOUNT |
| 902 | ISZ L44 |
| 903 | DCA L46 /AC SWITCH |
| 904 | DCA L52 /IF STATEMENT SWITCH |
| 905 | JMS I GENER /LET TRIPLE GENERATOR PROCESS IT |
| 906 | DCA L46 /ZERO AC AGAIN |
| 907 | JMP START /COMPLETE, GET NEXT STATEMENT |
| 908 | CR2, ISZ L32 /NO ARGUMENTS |
| 909 | JMS I SYMTAB |
| 910 | TAD L77 |
| 911 | DCA GLU |
| 912 | JMS I ZZZ /PUNCH '<LABEL>, CALL 0,<NAME>' |
| 913 | JMS I FPROP |
| 914 | GLU, 0 |
| 915 | JMP START |
| 916 | LGNB, 0 |
| 917 | JMS LGTC |
| 918 | DCA GLU |
| 919 | TAD GLU |
| 920 | TAD CM40 |
| 921 | SNA CLA |
| 922 | JMP LGNB+1 |
| 923 | TAD GLU |
| 924 | JMP I LGNB |
| 925 | LGETCH, 0 |
| 926 | JMS I GNB |
| 927 | SNA /IS IT A END OF CARD |
| 928 | JMP PUNC /YES ITS PUNTUATION |
| 929 | TAD QM32 |
| 930 | SPA SNA /IS IT ALPHABETIC |
| 931 | JMP ALPHA //YES |
| 932 | TAD CM40 |
| 933 | CLL |
| 934 | TAD Q12 |
| 935 | SZL /IS IT NUMERIC? |
| 936 | ISZ LGETCH /NUMERIC |
| 937 | PUNC, ISZ LGETCH /PUNCTUATION |
| 938 | ALPHA, CLA /ALPHABETIC |
| 939 | TAD GLU |
| 940 | JMP I LGETCH /RETURN |
| 941 | / THIS ROUTINE DETERMINES WHETHER SYMBOL IS FP OR INTEBER |
| 942 | / ROUTINE SKIPS IF SYMBOL IS INTEGER |
| 943 | LMODE, 0 |
| 944 | SMA /IF ITS PLUS WE HAVE AN INTEGER |
| 945 | JMP AINT /WE HAVE AN INTEGER |
| 946 | RAL /GET NEXT BIT |
| 947 | SPA /CHECK THIS BIT |
| 948 | JMP FV /ITS EITHER A FCON OR VARIABLE |
| 949 | RTL /GET NEXT TWO BITS |
| 950 | SNL /IS IT AN OPERATOR |
| 951 | ERR2, JMS I LUNCH /YES |
| 952 | AFP, SMA CLA /CHECK THIS BIT |
| 953 | JMP AINT /ITS AN INTEGER |
| 954 | JMP I LMODE /SYMBOL WAS F P MODE |
| 955 | FV, RAR /RESTORE AC TO ORIGINAL CONTENTS |
| 956 | CIA /SET NEGATIVE |
| 957 | TAD L47 /ADD START OF FCON TABLE |
| 958 | SPA /IS /SYMBOL FCON |
| 959 | JMP AFP /YES |
| 960 | CIA /NO /RESTORE AC AGAIN |
| 961 | TAD L47 |
| 962 | DCA ATEM /SAVE THE RESTORED NUMBER |
| 963 | TAD I ATEM /GET THE POINTER TO THE VARIABLE |
| 964 | TAD CM1100 /SUBTRACT AN I |
| 965 | SPA /IS IT LESS THAN I |
| 966 | JMP AFP /YES ITS FLOATING POINT |
| 967 | TAD CON1 /NOW SUBTRACT AN N |
| 968 | SPA CLA /IS IT LESS THAN N |
| 969 | AINT, ISZ LMODE /YES |
| 970 | CON1, CLA /CLEAR THE AC FOR THE RETURN |
| 971 | JMP I LMODE |
| 972 | ATEM, 0 |
| 973 | CM1100, -1100 |
| 974 | QM32, -32 |
| 975 | LGTC, 0 /GET A CHARACTER FROM THE BUFFER |
| 976 | TAD KOUNT |
| 977 | ISZ KOUNT |
| 978 | CLL RAR /LINK TELLS IF LEFT OR RIGHT HALF |
| 979 | TAD BASE |
| 980 | DCA GLU |
| 981 | TAD I GLU |
| 982 | SZL /WHICH CHARACTER |
| 983 | JMP MMSK |
| 984 | RTR |
| 985 | RTR |
| 986 | RTR |
| 987 | MMSK, AND C77 |
| 988 | SZA |
| 989 | JMP I LGTC |
| 990 | TAD CHK |
| 991 | SPA CLA /DO WE WANT A NEW LINE YET? |
| 992 | JMP I LGTC /NOT YET... |
| 993 | TAD BASE2 /YES, USE THE ALTERNATE BUFFER |
| 994 | JMS I RLCD |
| 995 | TAD CHK |
| 996 | SZA CLA /IS IT A CONTINUATION? |
| 997 | JMP .+4 |
| 998 | CMA /NO, SET FLAG AND RETURN W ZERO AC |
| 999 | DCA CHK |
| 1000 | JMP I LGTC |
| 1001 | JMS LSWAP /YES, SWITCH BUFFERS AND CONTINUE |
| 1002 | DCA CHK |
| 1003 | JMP LGTC+1 |
| 1004 | |
| 1005 | RLCD, LRCD |
| 1006 | LSWAP, 0 /SWITCH THE LINE BUFFER POINTERS |
| 1007 | TAD BASE |
| 1008 | DCA ATEM |
| 1009 | TAD BASE2 |
| 1010 | DCA BASE |
| 1011 | TAD ATEM |
| 1012 | DCA BASE2 |
| 1013 | JMP I LSWAP |
| 1014 | \f *1000 |
| 1015 | / THE POINTER TO THE CURRENT LOCATION IN THE PUSH LIST IS |
| 1016 | / IN LOC 41, THE CURRENT TRIPLE NUMBER IS IN LOCATION 40 |
| 1017 | / LOC 44 MUST BE SET TO 0 IF THERE IS AN '=' , TO 1 IF NOT. |
| 1018 | PBEGN, AREA2 /START OF THE PRECEDENCE LIST |
| 1019 | BINTEG, TAD L32 /HERE IF ENTITY SENT AN INTEGER |
| 1020 | JMP I BPUSH /PUSH IT INTO STACK |
| 1021 | FLPT, JMS I FCON /HERE IF ENTITY FOUND A FLOATING POINT CON |
| 1022 | SKP /ENTER IT INTO FPTABLE |
| 1023 | BLPHA, JMS I SYMTAB /HERE IF ENTITY FOUND A VARIABLE |
| 1024 | TAD L77 /PICK UP POINTER INTO SYM TAB OR FLPT TAB AN |
| 1025 | JMP I BPUSH /PUSH IT DOWN |
| 1026 | LABELX, JMP I LGENER |
| 1027 | LGENER, 0 /ENTRY POINT |
| 1028 | TAD C5000 |
| 1029 | DCA L40 /* |
| 1030 | DCA L21 /ZERO THE SYMBOL TABLE SWITCH |
| 1031 | TAD L71 |
| 1032 | DCA L41 /SET PUSH DOWN POINTER |
| 1033 | DCA L22 |
| 1034 | DCA BPAREN /ZERO OUT THE PAREN SWITCH |
| 1035 | TAD C4000 |
| 1036 | DCA I L41 /FIRST PUSH DOWN LEFT CLOSURE NAMELY 0 |
| 1037 | BNEXT, JMS I ENTITY /THIS WILL GET THE NEXT DATUM TO BE PROCESSE |
| 1038 | JMP HOO /END OF STATEMENT RETURN,TREAT LIKE PUNCTION |
| 1039 | JMP BLPHA /VARIABLE RETURN |
| 1040 | JMP BINTEG /INTEGER RETURN |
| 1041 | JMP FLPT /FLOATING POINT RETURN |
| 1042 | HOO, TAD CM50 /PUNCTIOATION RETURN, |
| 1043 | SNA /IS IT ( |
| 1044 | JMP I BPAR /YES |
| 1045 | TAD C7753 |
| 1046 | SZA /IS IT AN '=' ? |
| 1047 | JMP BRET |
| 1048 | TAD L44 /WE HAVE AN '=', IS IT LEGAL? |
| 1049 | SNA CLA |
| 1050 | JMP BRET /IT IS |
| 1051 | TAD IMPDO |
| 1052 | SZA CLA /ARE WE IN AN IMPLIED DO LOOP? |
| 1053 | JMP I PIOEQL /YES - TERMINATE LOOP CODE |
| 1054 | ERR3, JMS I LUNCH |
| 1055 | PIOEQL, IOEQL |
| 1056 | BRET, TAD C0075 |
| 1057 | DCA L63 |
| 1058 | TAD I L41 /CHECK FOR A UNARY OPERATOR |
| 1059 | TAD C4000 |
| 1060 | AND C7000 |
| 1061 | SZA CLA /WAS IT AN OPERAATOR AT ALL |
| 1062 | JMP PREC /NO, STILL NOT UNARY OPERATOR |
| 1063 | TAD L63 |
| 1064 | TAD C7725 |
| 1065 | SNA /IS IT A '+' |
| 1066 | JMP BNEXT /YES, IGNORE IT |
| 1067 | TAD CM2 /NO |
| 1068 | SZA CLA /IS IT A '-' ? |
| 1069 | JMP ERR3 |
| 1070 | TAD C4643 /THIS IS THE UNARY MINUS |
| 1071 | JMP I BPUSH |
| 1072 | PREC, TAD PBEGN /HERE IS WHERE WE FIND THE PRECIDENCE |
| 1073 | DCA L17 |
| 1074 | DCA L65 |
| 1075 | SKP |
| 1076 | RETUR, ISZ L17 /PICK UP NEXT OP CODE IN LIST |
| 1077 | TAD I L17 /TO GET THE NEXT LIST ITEM |
| 1078 | SMA SZA /IS THIS THE END OF THE LIST |
| 1079 | JMP BMORE /NO, THE ASSUMPTION IS THAT THE PRECIDENCE |
| 1080 | TAD L63 /IS ZERO |
| 1081 | SZA CLA /IS THIS THE RIGHT TABLE ENTRY |
| 1082 | JMP RETUR /TRY AGAIN (IT WASN"T) |
| 1083 | TAD I L17 /TO GET THE PRECEDENCE |
| 1084 | DCA L65 |
| 1085 | BMORE, CLA IAC /HERE WE ARE GOING TO SEE IF THERE IS A PREC |
| 1086 | TAD L41 |
| 1087 | DCA L64 /L64 NOW POINTS TO THE PREVIOUS OPERATOR |
| 1088 | TAD I L64 |
| 1089 | TAD C4000 |
| 1090 | AND C7000 |
| 1091 | SZA /IS THERE A VALID OPERATOR ON THE STACK? |
| 1092 | JMP ERR3 /APPARENTLY NOT... |
| 1093 | TAD I L64 /IF THE PRECEDENCE OF THE PREVIOUS OPERATOR |
| 1094 | AND C700 /IS NON-ZERO, AND ITS PRECEDENCE IS GREATER |
| 1095 | SNA /THAN OR EQUAL TO THE PRECEDENCE OF THE |
| 1096 | JMP NO /CURRENT OPERATOR, THEN PROCESS THE PREVIOUS |
| 1097 | CIA /OPERATOR; IF NOT WE WILL PROBABLY PUT |
| 1098 | TAD L65 /THE CURRENT OPERATOR ON THE STACK AND GET |
| 1099 | SMA SZA CLA /ANOTHER ITEM FROM THE STATEMENT BUFFER... |
| 1100 | JMP NO |
| 1101 | ISZ L40 /YES, INCREMENT THE TRIPLE NUMBER AND.... |
| 1102 | JMS I TRIPL /PROCESS THE PREVIOUS OPERATOR |
| 1103 | ISZ L41 /*****NOTE WHAT IF IT WAS UNARY************ |
| 1104 | TAD I L41 |
| 1105 | TAD C3135 /THIS IS MINUS UNARY MINUS |
| 1106 | SZA CLA |
| 1107 | ISZ L41 /DELETE THE LAST 3 ITEMS AND REPLACE WITH TR |
| 1108 | TAD L46 |
| 1109 | DCA I L41 |
| 1110 | JMP BMORE /TRY FOR ANOTHER TRIPLE |
| 1111 | NO, TAD L63 |
| 1112 | SNA /IS IT A END OF STATEMENT MARK |
| 1113 | JMP I LCDONE /IT WAS--WE ARE ALL FINISHED, EXCEPT CHECKING |
| 1114 | TAD CM51 |
| 1115 | SNA /IS IT A ')' ? |
| 1116 | JMP I LKPAR /YES |
| 1117 | TAD CM3 |
| 1118 | SZA /IS IT A ',' ? |
| 1119 | JMP NCOMMA /NO |
| 1120 | TAD BPAREN |
| 1121 | SNA CLA /IS A COMMA LEGAL HERE? |
| 1122 | JMP I LCDONE /MAYBE... |
| 1123 | NCOMMA, TAD CM21 |
| 1124 | SNA CLA /IS IT AN EQUALS SIGN? |
| 1125 | ISZ L44 /YES - SET EQUALS SWITCH ON |
| 1126 | TAD L63 /PUT THE OPERATOR ON THE STACK |
| 1127 | TAD L65 /ADD THE PRECEDENCE |
| 1128 | TAD C4000 |
| 1129 | JMP I BPUSH |
| 1130 | / |
| 1131 | BPUSH, PUSH |
| 1132 | C5000, 5000 |
| 1133 | BPAR, ALPAR |
| 1134 | C7753, 7753 |
| 1135 | C0075, 75 |
| 1136 | C7000, 7000 |
| 1137 | CM21, -21 |
| 1138 | C7725, 7725 |
| 1139 | C4643, 4643 |
| 1140 | C700, 700 |
| 1141 | C3135, 3135 |
| 1142 | LCDONE, CDONE |
| 1143 | LKPAR, KPAR |
| 1144 | FCON, LFCON |
| 1145 | \f *1200 |
| 1146 | PUSH, DCA L63 |
| 1147 | CLA CMA |
| 1148 | TAD L41 /SPACE THE POINTER UP ONE |
| 1149 | DCA L41 /* |
| 1150 | TAD L63 |
| 1151 | DCA I L41 /* |
| 1152 | JMP I LBNEXT /BACK TO BEGINING |
| 1153 | / THIS IS TO PROCESS SUBSCRIPTS OR FUNCTION CALLS--- |
| 1154 | / IF ARITHMETIC, JUST DELETE BOTH ( AND ) |
| 1155 | KPAR, TAD I L64 |
| 1156 | TAD C3730 /MINUS LEFT PAREN |
| 1157 | SZA /IS IT ( |
| 1158 | JMP BCON /NO-- CHECK SOME MORE |
| 1159 | TAD I L41 /DELETE PARENS |
| 1160 | DCA I L64 |
| 1161 | ISZ L41 /UPDATE POINTER |
| 1162 | LAPP, ISZ BPAREN /DO PARENS BALENCE |
| 1163 | JMP I LBNEXT |
| 1164 | TAD L52 /YES |
| 1165 | SNA CLA /SHOULD WE RETURN IF BALANCED |
| 1166 | JMP I LBNEXT |
| 1167 | TAD L46 |
| 1168 | SZA CLA |
| 1169 | JMP CDONE |
| 1170 | TAD I L41 |
| 1171 | DCA L77 |
| 1172 | JMS I XTAD /GENERATE TAD OR (TAD I) |
| 1173 | DCA I L41 /ZERO IS INTEGER |
| 1174 | CDONE, TAD L41 |
| 1175 | CMA |
| 1176 | TAD L71 |
| 1177 | SZA /WELL... |
| 1178 | ERR6, JMS I LUNCH /HA...YOU GOOFED |
| 1179 | JMS I XZQ |
| 1180 | JMP I .+1 |
| 1181 | LABELX |
| 1182 | BCON, IAC /IS IT FUNCTION |
| 1183 | ISZ L40 |
| 1184 | SNA |
| 1185 | JMP BFOUT /YES |
| 1186 | IAC /NO-- NOW IS IT SUBSCRIPT |
| 1187 | SNA |
| 1188 | JMP SOUT /YES |
| 1189 | TAD C7772 /NO |
| 1190 | SZA /IS IT COMMA |
| 1191 | JMP ERR6 /NO - BYE BYE CHARLIE |
| 1192 | ISZ L64 |
| 1193 | ISZ L64 |
| 1194 | TAD I L64 |
| 1195 | TAD C3724 /IS IT A COMMA |
| 1196 | SNA |
| 1197 | JMP BFOUT /FOUND TWO COMMAS,MUST BE FUNCTION |
| 1198 | TAD C5 /NO |
| 1199 | SNA /IS IT A PRIME |
| 1200 | JMP BFOUT /GOT A FUNCTION |
| 1201 | IAC /NO |
| 1202 | SZA CLA |
| 1203 | JMP ERR6 /SORRY, IT AIN'T NUTTIN |
| 1204 | SOUT, JMS I PLSBSC /PROCESS A SUBSCRIPT |
| 1205 | CMA |
| 1206 | TAD L22 |
| 1207 | DCA L22 |
| 1208 | SKP |
| 1209 | BFOUT, JMS I FUNCT |
| 1210 | JMP LAPP |
| 1211 | FUNCT, LFUNCT |
| 1212 | / THIS IS WHERE WE FIND OUT WHAT KIND OF LPAR |
| 1213 | ALPAR, CMA |
| 1214 | TAD BPAREN |
| 1215 | DCA BPAREN |
| 1216 | TAD I L41 |
| 1217 | TAD C4000 |
| 1218 | AND B7000 /IS IT AN OPERAND |
| 1219 | SZA CLA |
| 1220 | JMP CUNT /NO , TRY SOME MORE |
| 1221 | IAC |
| 1222 | JMP PRIME |
| 1223 | CUNT, TAD I L41 /PICK UP TOP LIST ITEM |
| 1224 | TAD C2 /ADD TWO TO FIND THE DIMENSION INTO(INFO) |
| 1225 | DCA L64 |
| 1226 | TAD I L64 |
| 1227 | AND C20 /JUST WANT ONLY THIS ONE BIT(DIMENSION) |
| 1228 | SNA CLA /IS IT DIMENSIONED |
| 1229 | JMP PRIME /NO ITS GOT TO BE A FUNCTION CALL |
| 1230 | ISZ L22 |
| 1231 | CMA |
| 1232 | PRIME, TAD C4047 |
| 1233 | JMP PUSH /GO PUSH A PRIME, IT IS THE FUNCTIONS LEFT PAREN |
| 1234 | XZQ, LXZQ |
| 1235 | LBNEXT, BNEXT |
| 1236 | C3730, 3730 |
| 1237 | C7772, 7772 |
| 1238 | C3724, 3724 |
| 1239 | C5, 5 |
| 1240 | D7, 7 |
| 1241 | B7000, 7000 |
| 1242 | C20, 20 |
| 1243 | C4047, 4047 |
| 1244 | XTAD, LXTAD |
| 1245 | LPUTCH, 0 |
| 1246 | CLA CMA |
| 1247 | TAD KOUNT |
| 1248 | DCA KOUNT |
| 1249 | JMP I LPUTCH |
| 1250 | |
| 1251 | LASIGN, TAD L20 /ARITHMETIC STATEMENT PROCESSOR |
| 1252 | SNA CLA /IS THERE AN '=' IN THE STMT? |
| 1253 | ERR9, JMS I LUNCH /NO, BETTER COMPLAIN... |
| 1254 | TAD D7 /SET POINTER TO COL 7 |
| 1255 | DCA KOUNT |
| 1256 | JMS I ZZZ /PUNCH THE LABEL, IF ANY |
| 1257 | DCA L46 |
| 1258 | DCA L44 |
| 1259 | DCA L52 |
| 1260 | JMS I GENER /PROCESS IT... |
| 1261 | TAD L63 |
| 1262 | SZA CLA /WAS TERMINATOR A <CR/LF> ? |
| 1263 | JMP ERR9 /NO, ILLEGAL STATEMENT ERROR ... |
| 1264 | JMP START |
| 1265 | PLSBSC, LSUBSC |
| 1266 | |
| 1267 | LPRCRL, 0 /SUBROUTINE PRINTS CREATED LABELS |
| 1268 | DCA LPRCTM |
| 1269 | TAD C36 /PUNCH '^' |
| 1270 | JMS I PRINT |
| 1271 | TAD LPRCTM /PUNCH THE LETTERS |
| 1272 | JMS I P2 |
| 1273 | JMP I LPRCRL |
| 1274 | C36, 36 |
| 1275 | LPRCTM, 0 |
| 1276 | \f *1400 |
| 1277 | PRET, ISZ LENTT /PUNCTIONATION EXIT POINT |
| 1278 | FRET, ISZ LENTT /FLOATING POINT EXIT POINT |
| 1279 | XIRET, ISZ LENTT /INTEGER EXIT POINT |
| 1280 | XARET, ISZ LENTT /VARIABLE EXIT |
| 1281 | ERET, JMP I LENTT /CR END OF LINE EXIT |
| 1282 | LENTT, 0 /ENTRY POINT |
| 1283 | CLA /WIPE OUT PSEUDO ACCUMULATOR |
| 1284 | DCA L32 |
| 1285 | DCA L31 |
| 1286 | DCA COUNT2 /RESET ALL KINDS OF THINGS TO ZERO |
| 1287 | DCA L36 |
| 1288 | DCA L37 |
| 1289 | DCA L30 |
| 1290 | DCA FPSW |
| 1291 | DCA ESIGN |
| 1292 | TAD CM6 |
| 1293 | DCA L65 /SET UP FOR MAXIMUM OF 6 CHARS |
| 1294 | JMS I GETCH /GET THE FIRST INPUT CHARACTER |
| 1295 | JMP .+3 /ALPHA RETURN |
| 1296 | JMP PUNCT /PUNCTIONATION RETURN |
| 1297 | JMP DIG /DIGIT RETURN |
| 1298 | JMS PACK /STORE THIS CHARACTER |
| 1299 | JMS I GETCH /GET ANOTHER CHACTER |
| 1300 | JMP .-2 /ALPHA- IS OK |
| 1301 | SKP /PUNCTUATION |
| 1302 | JMP .-4 /DIGIT--IS OK PROCESS IT |
| 1303 | JMS I PUTCH /PUT THAT PUNCTUATION BACK IN THE BUFFER |
| 1304 | TAD L32 |
| 1305 | AND CC7700 /MAKE SURE NAME IS <= 5 CHARACTERS LONG |
| 1306 | DCA L32 |
| 1307 | JMP XARET /RETURN WITH VARIABLE |
| 1308 | |
| 1309 | PACK, 0 /THIS PACK CHARS INTO L30 L31 AND L32 |
| 1310 | DCA L64 /SAVE THE CHAR... |
| 1311 | TAD L65 |
| 1312 | SNA /DO WE HAVE SIX CHARS ALREADY? |
| 1313 | JMP I PACK /YES - IGNORE |
| 1314 | STL; RAR |
| 1315 | TAD P33 |
| 1316 | DCA LTEM |
| 1317 | ISZ L65 |
| 1318 | C7, 7 |
| 1319 | TAD L64 |
| 1320 | CDF 10 |
| 1321 | SNL /DO WE HAVE LEFT OR RIGHT HALF? |
| 1322 | JMP .+5 |
| 1323 | CLL RTL /MUST BE LEFT HALF... |
| 1324 | RTL |
| 1325 | RTL |
| 1326 | SKP |
| 1327 | TAD I LTEM |
| 1328 | DCA I LTEM |
| 1329 | CDF 00 |
| 1330 | JMP I PACK |
| 1331 | LTEM, 0 |
| 1332 | |
| 1333 | PUNCT, SNA /HERE TO PROCESS PUNCTION---IS IT A CARIAGE RET |
| 1334 | JMP ERET /YES, GO RIGHT BACKTO THE CALLER....BY-BY |
| 1335 | TAD C7722 /IS IT A PERIOD |
| 1336 | SNA |
| 1337 | JMP CC /YES--WE ASSUME THAT THIS LENTT IS A FLOATING |
| 1338 | TAD C7 |
| 1339 | SNA /IS IT A QUOTE? |
| 1340 | JMP I QUOTE /YES - CHARACTER LITERAL |
| 1341 | TAD CM3 |
| 1342 | SZA /IS IT AN ASTERISK |
| 1343 | JMP NAH /NO |
| 1344 | JMS I GETCH /YES- PEEK AT NEXT CHAR |
| 1345 | JMP NOASS /ALPHA-- PUT IT BACK |
| 1346 | JMP ASSCK /PUNCTUATION-- CHECK FOR AN ASTERISK |
| 1347 | NOASS, JMS I PUTCH /DIGIT---PUT IT BACK |
| 1348 | NAH, TAD X52 /RESTORE CHARACTER TO WHAT IT WAS |
| 1349 | JMP PRET /THATS ALL---IT WAS PUNCTIONATION |
| 1350 | ASSCK, TAD CM52 /ANOTHER PUNCTUATION--IS IT (*) |
| 1351 | SZA |
| 1352 | JMP NOASS /NO---PUT IT BACK |
| 1353 | TAD C45 /IT WAS-- CHANGE ** TO PERCENT |
| 1354 | JMP PRET /---ALTERED PUNCTUATION |
| 1355 | DIG, AND C17 /FIRST CHAR WAS A DIGIT, DONT KNOW IS INTEGER O |
| 1356 | DCA L32 /AT ANY RATE SAVE IT IN THE PSEUDO ACCUMULATER |
| 1357 | CA, JMS I GETCH /GET ANOTHER CHACTER |
| 1358 | JMP I LTESTE /ALPHA--GO SEE IF IT IS AN -E- |
| 1359 | SKP /PUNCT |
| 1360 | JMP BONT /DIGIT GO PROCESS IT |
| 1361 | TAD C7722 /PUNCTUATION HERE, IS IT A PERIOD |
| 1362 | SZA |
| 1363 | JMP I LCOP / IT IS . WE HAVE A FLOATING POINT NUMBER |
| 1364 | CC, TAD FPSW |
| 1365 | SZA |
| 1366 | ERR10, JMS I LUNCH /TOO MANY (.) |
| 1367 | ISZ FPSW |
| 1368 | DCA COUNT2 |
| 1369 | JMP CA /GO BACK AND GET ANOTHER CHAR |
| 1370 | BONT, AND C17 /***COME HERE WITH ANOTHER DIGIT. |
| 1371 | DCA L36 /SAVE IT |
| 1372 | ISZ COUNT2 |
| 1373 | JMS I LMUL10 / AC = AC * 10 + DIGIT |
| 1374 | JMP CA /GO GET ANOTHER CHAR |
| 1375 | P33, L30+3 |
| 1376 | CM6, -6 |
| 1377 | C7722, 7722 |
| 1378 | X52, 52 |
| 1379 | CM52, -52 |
| 1380 | C17, 17 |
| 1381 | LTESTE, TESTE |
| 1382 | C45, 45 |
| 1383 | LCOP, COP |
| 1384 | LMUL10, MUL10 |
| 1385 | QUOTE, LQUOTE |
| 1386 | |
| 1387 | |
| 1388 | DMPLIN, 0 /SUBROUTINE TO DUMP "LAST LINE" BUFFER |
| 1389 | ISZ L24 |
| 1390 | TAD I L24 /GET NEXT CHAR |
| 1391 | JMS I PUNCH /PUNCH IT |
| 1392 | TAD I L24 |
| 1393 | TAD CM212 |
| 1394 | SZA CLA /IS CHAR A LINE FEED? |
| 1395 | JMP DMPLIN+1 /NO |
| 1396 | CLA IAC |
| 1397 | DCA L24 /RESET POINTER |
| 1398 | DCA L12 /ZERO CONTENTS FLAG |
| 1399 | JMP I DMPLIN /RETURN |
| 1400 | CM212, -212 |
| 1401 | CC7700, 7700 |
| 1402 | \f *1600 |
| 1403 | TESTE, TAD C7773 /IS IT E |
| 1404 | SZA |
| 1405 | JMP COP /NO, GO PUT IT BACK AND PROCESS |
| 1406 | / HERE IF EXPONENT FOLLOWES |
| 1407 | DCA L37 /IT WAS AN E |
| 1408 | / THIS ROUTINE IS TO PROCESS THE EXPONENT THAT FOLLOWES THE -E- THAT WE |
| 1409 | / |
| 1410 | ISZ FPSW /MAKE SURE THE FLOATING POINT SWITCH WAS KICKED |
| 1411 | JMS I GETCH /GET ANOTHER CHAR |
| 1412 | JMP ERR12 /ALPHA , CANT BE-- SO LONG, ITS BEEN NICE |
| 1413 | SKP /PUNCT |
| 1414 | JMP CD /DIGIT, GO PROCESS IT |
| 1415 | TAD X7725 /IS IT PULS SIGN |
| 1416 | SNA |
| 1417 | JMP CF /YES, IGNOR IT |
| 1418 | TAD CM2 |
| 1419 | SZA /IS IT MINUS |
| 1420 | JMP COP /NO, GO PROCESS THE FLOATING POINT NUMBER |
| 1421 | CLA CMA |
| 1422 | DCA ESIGN /YES- REMEMBER THAT THE EXPONENT WAS MINUS |
| 1423 | CF, JMS I GETCH /GET ANOTHER CHAR |
| 1424 | JMP COP /ALPHA, ALL READY TO PROCESS |
| 1425 | JMP COP /PUNCTUATION, READY TO PROCESS |
| 1426 | CD, AND X17 /DIGIT |
| 1427 | DCA L36 /SAVE IT IN 36 AND.. |
| 1428 | TAD L37 /MULTIPLY THE - EXPONENT TO DATE- BY 10 |
| 1429 | RAL CLL |
| 1430 | DCA L37 |
| 1431 | TAD L37 |
| 1432 | RAL CLL |
| 1433 | RAL CLL |
| 1434 | TAD L37 |
| 1435 | TAD L36 /AND ADD IN THIS DIGIT I.E. 37C10* |
| 1436 | DCA L37 / L37 = 10 * L37 + L36 |
| 1437 | JMP CF /GO DO IT AGAIN |
| 1438 | COP, JMS I PUTCH |
| 1439 | CLA CLL /PROCESS THIS NUMBER |
| 1440 | TAD FPSW /IS IT AN INTEGER |
| 1441 | SZA CLA |
| 1442 | JMP CH /NO, MUST BE FLOATING POINT |
| 1443 | / INTEGER IS IN ACC |
| 1444 | TAD L30 /YESS |
| 1445 | SNA /MAKE SURE INTEGER IS VALID |
| 1446 | TAD L31 |
| 1447 | SZA CLA |
| 1448 | JMP ERR12 |
| 1449 | TAD L32 |
| 1450 | SPA CLA |
| 1451 | ERR12, JMS I LUNCH /TOO BIG |
| 1452 | JMP I .+1 /TAKE INTEGER RETURN WITH INTEGER IN 32 |
| 1453 | XIRET |
| 1454 | CH, TAD L37 /WAS THIS AN E-CONVERSION NUMBER |
| 1455 | ISZ ESIGN /EXPONENT POSITIVE? |
| 1456 | CIA /YES |
| 1457 | TAD COUNT2 /ADD POST-DECIMAL COUNTER |
| 1458 | CLL |
| 1459 | SNA |
| 1460 | JMP CM /NOTHING TO DO |
| 1461 | SMA /DETERMINE WHETHER TO |
| 1462 | CML CIA /MULTIPLY OR DIVIDE |
| 1463 | DCA COUNT2 |
| 1464 | RAL |
| 1465 | TAD CJ |
| 1466 | DCA CK |
| 1467 | JMS XFLOAT /SET UP THE NUMBER |
| 1468 | CK, HLT /JMP I (MULT OR JMP I (DIVIDE |
| 1469 | ISZ COUNT2 |
| 1470 | JMP CK /LOOP ON COUNT |
| 1471 | JMP I LPOLIS /FINISH UP |
| 1472 | |
| 1473 | CM, JMS XFLOAT |
| 1474 | JMP I LPOLIS |
| 1475 | CJ, JMS I .+1 |
| 1476 | MULT |
| 1477 | DIVIDE |
| 1478 | |
| 1479 | / THIS ROUTINE CONVERTS THE NUMBER TO FLOATING POINT |
| 1480 | XFLOAT, 0 |
| 1481 | CLA CLL |
| 1482 | TAD L32 /CHECK IF THE ACCUMULATED NUMBER IS ZERO |
| 1483 | SNA |
| 1484 | TAD L31 |
| 1485 | SNA |
| 1486 | TAD L30 |
| 1487 | SNA CLA |
| 1488 | JMP I LFRET /IT WAS ZERO SEND A FLOATING POINT ZERO BACK-- |
| 1489 | TAD C2440 /IT IS NOT ZERO--SET THE EXPON TO 36 BASE 10 |
| 1490 | DCA L37 |
| 1491 | JMS NORMAL /GO TO THE NORMALIZE ROUTINE |
| 1492 | JMP I XFLOAT /AT THIS POINT THE MANTISA AND EXPON ARE SEPERA |
| 1493 | / ALSO NOTICE THAT WE HAVE 36 BINARY DIGITS I E THE WHOLE 3 WORDS ARE U |
| 1494 | / NORMAL IZATION OF A F P NUMBER |
| 1495 | NORMAL, 0 |
| 1496 | DA, TAD L30 /WE MUST SHIFT UNTIL THE HIGH ORDER WORD GOES N |
| 1497 | SPA CLA |
| 1498 | JMP I NORMAL /IT IS NEG., ALL DONE |
| 1499 | JMS I LLSHIF /GO DO A TRIPLE PRECISION LEFT SHIFT |
| 1500 | TAD L37 /AND SUBTRACT ONE FROM THE EXPONENT |
| 1501 | TAD C7770 /NOTE-- THE 3 LOW ORDER BITS ARE NOT USED |
| 1502 | SPA /IF THIS DOESNT SKIP WE HAVE F P OVERFLOW |
| 1503 | JMP ERR12 /BY-BY NUMBER TOO LARGE FOR THE MACHINE |
| 1504 | DCA L37 |
| 1505 | JMP DA |
| 1506 | / THE FOLLOWING ROUTINE SAVES THE ACC IN THE MQ |
| 1507 | C7773, 7773 |
| 1508 | X7725, 7725 |
| 1509 | X17, 17 |
| 1510 | C7770, 7770 |
| 1511 | LPOLIS, POLISH |
| 1512 | LFRET, FRET |
| 1513 | C2440, 2440 |
| 1514 | LLSHIF, LSHIFT |
| 1515 | |
| 1516 | SCODE, CDF 10 /SHIFT S-CODE 2 COLS. LEFT |
| 1517 | TAD I (TEM1 |
| 1518 | CDF 0 |
| 1519 | DCA SLOC1 |
| 1520 | TAD SLOC1 |
| 1521 | IAC |
| 1522 | DCA SLOC2 |
| 1523 | ISZ L61 /SET COMMENT FLAG |
| 1524 | SCODL, TAD I SLOC2 |
| 1525 | DCA I SLOC1 |
| 1526 | TAD I SLOC2 |
| 1527 | AND C77 |
| 1528 | SNA CLA /END OF LINE? |
| 1529 | JMP I (STORSL+2 |
| 1530 | ISZ SLOC1 |
| 1531 | ISZ SLOC2 |
| 1532 | JMP SCODL /AND CONTINUE PROCESS |
| 1533 | |
| 1534 | SLOC1, 0 |
| 1535 | SLOC2, 0 |
| 1536 | \f *2000 |
| 1537 | XSAVE, 0 /-- THE F.P. AC IS IN LOCS 30-32 |
| 1538 | TAD L30 /-- THE "MQ" IS IN LOCS 33-35 |
| 1539 | DCA L33 /---THE EXPONENT IS IN LOCS 37 |
| 1540 | TAD L31 |
| 1541 | DCA L34 |
| 1542 | TAD L32 |
| 1543 | DCA L35 |
| 1544 | JMP I XSAVE |
| 1545 | / SHIFTS THE PSEUDO-ACC LEFT ONE PLACE |
| 1546 | LSHIFT, 0 |
| 1547 | CLA CLL |
| 1548 | TAD L32 |
| 1549 | RAL |
| 1550 | DCA L32 |
| 1551 | TAD L31 |
| 1552 | RAL |
| 1553 | DCA L31 |
| 1554 | TAD L30 |
| 1555 | RAL |
| 1556 | DCA L30 |
| 1557 | JMP I LSHIFT |
| 1558 | / THE FOLLOWING ROUTINE ADDS THE MQ TO THE ACC |
| 1559 | ADD, 0 |
| 1560 | CLA CLL |
| 1561 | TAD L32 |
| 1562 | TAD L35 |
| 1563 | DCA L32 |
| 1564 | RAL |
| 1565 | TAD L31 |
| 1566 | TAD L34 |
| 1567 | DCA L31 |
| 1568 | RAL |
| 1569 | TAD L30 |
| 1570 | TAD L33 |
| 1571 | DCA L30 |
| 1572 | JMP I ADD |
| 1573 | / THE FOLLOWING ROUTINE SHIFTS THE ACC RIGHT ONE PLACE |
| 1574 | RSHIFT, 0 |
| 1575 | CLA CLL |
| 1576 | TAD L30 |
| 1577 | RAR |
| 1578 | DCA L30 |
| 1579 | TAD L31 |
| 1580 | RAR |
| 1581 | DCA L31 |
| 1582 | TAD L32 |
| 1583 | RAR |
| 1584 | DCA L32 |
| 1585 | JMP I RSHIFT |
| 1586 | / |
| 1587 | / |
| 1588 | MULT, 0 /ACCCACC*10 MQ |
| 1589 | JMS RSHIFT |
| 1590 | JMS XSAVE |
| 1591 | JMS RSHIFT |
| 1592 | JMS RSHIFT |
| 1593 | JMS ADD /THIS FINISHES THE MULT BY 10 |
| 1594 | TAD L37 /NOW DIDDLE THE EXPONENT |
| 1595 | TAD C40 |
| 1596 | SPA /OVERFLOW TEST |
| 1597 | ERR14, JMS I LUNCH /FLOATING POINT OVERFLOW |
| 1598 | DCA L37 |
| 1599 | JMS I LNRMAL /MAKE SURE THE F P NUMBER IS STILL IN NORMAL FO |
| 1600 | JMP I MULT |
| 1601 | DIVIDE, 0 /DIVIDE THE F P NUMBER BY 10 |
| 1602 | JMS RSHIFT /BASED ON THE FACT THAT .1 BASE 10 C .000110011 |
| 1603 | JMS XSAVE /THAT IS WE MULTIPLE BY ONE TENTH |
| 1604 | TAD C7766 /THIS IS A COUNTER********************** |
| 1605 | DCA ZCTR |
| 1606 | DB, JMS RSHIFT |
| 1607 | JMS ADD |
| 1608 | ISZ ZCTR |
| 1609 | SKP |
| 1610 | JMP DC |
| 1611 | JMS RSHIFT |
| 1612 | JMS RSHIFT |
| 1613 | JMS RSHIFT |
| 1614 | JMS ADD |
| 1615 | JMP DB |
| 1616 | DC, TAD L37 |
| 1617 | TAD C7750 /********INSERT HERE THE CONSTANT************ |
| 1618 | DCA L37 /WE HAVE JUST DIDDLED THE EXPONENT BY THE PROP |
| 1619 | JMS I LNRMAL /MAKE SURE IT IS STILL NORMALIZ D |
| 1620 | JMP I DIVIDE |
| 1621 | ZCTR, 0 |
| 1622 | MUL10, 0 /THIS MULTIPLIES THE TRIPLE PREC. INTEGER INT E |
| 1623 | JMS LSHIFT /BY 10 |
| 1624 | JMS XSAVE |
| 1625 | JMS LSHIFT |
| 1626 | JMS LSHIFT |
| 1627 | JMS ADD |
| 1628 | TAD L36 /NOW CRAM THE DIGIT THAT WE WANT TO ADD INTO TH |
| 1629 | DCA L35 /* |
| 1630 | DCA L34 |
| 1631 | DCA L33 |
| 1632 | JMS ADD /AND ADD IT TO THE ACC |
| 1633 | JMP I MUL10 /IN OTHER WORDS ACCCACC*10 DIGIT |
| 1634 | POLISH, CLA CLL /THIS TAKES THE SEPARATE MANTISSA AND EXP--ENT. |
| 1635 | TAD C400 /AND PUTS THEM INTO 7090 FORM. THIS IS THE R-U |
| 1636 | DCA L35 /27 DIGITS |
| 1637 | DCA L34 /ROUND FACTOR IS CRAMED INTO THE MQ |
| 1638 | DCA L33 |
| 1639 | JMS ADD /AND ADDED TO THE INTEGER IN THE ACC |
| 1640 | SNL /IF THE LINK IS ON, WE OVERFLEW ON THE CARRY |
| 1641 | JMP POLSH /WE DIDNT |
| 1642 | TAD C4000 /SET THE ACC TO .1000000000 (THE REST OF IT IS |
| 1643 | DCA L30 |
| 1644 | TAD L37 /DIDDLE THE EXPONENT BY ONE. THIS IS A FINKIE N |
| 1645 | TAD J10 |
| 1646 | SNA |
| 1647 | JMP ERR14 /EXPONENT OVERFLOW ... |
| 1648 | DCA L37 |
| 1649 | POLSH, TAD C7767 /NOW SHIFT THE ENTIRE ACC RIGHT 9 TIMES |
| 1650 | DCA ZCTR /( THATS SO WE WILL HAVE ROOM TO STICK IN THE E |
| 1651 | HOOP, JMS RSHIFT |
| 1652 | ISZ ZCTR |
| 1653 | JMP HOOP |
| 1654 | TAD L37 /CRAM THE EXP |
| 1655 | TAD L30 /INTO THE ACC |
| 1656 | DCA L30 /AND VOILA, WE ARE DONE. GO TAKE THE FPOINT EX |
| 1657 | JMP I .+1 |
| 1658 | FRET |
| 1659 | LNRMAL, NORMAL |
| 1660 | C7766, 7766 |
| 1661 | C7750, 7750 |
| 1662 | C400, 400 |
| 1663 | J10, 10 |
| 1664 | C7767, 7767 |
| 1665 | \f *2200 |
| 1666 | / THE FOLLOWING ROUTINE LOOKS FOR A STATEMENT NUMBER |
| 1667 | LSTMT, 0 |
| 1668 | JMS I CLEAR /CLEAR THE PSEUDO ACC AND MQ |
| 1669 | TAD C7240 /DON'T LET LGTC GET ANOTHER LINE YET(CHK MUST BE NEG., BUT NOT 4000!!) |
| 1670 | DCA CHK |
| 1671 | IAC |
| 1672 | DCA KOUNT |
| 1673 | LABEL, JMS I GTCL /GET A CHARACTER |
| 1674 | SNA /IS THIS A CAR RET? |
| 1675 | ERR15, JMS I LUNCH /YES, INCOMPLETE STATEMENT |
| 1676 | TAD CM40 |
| 1677 | SNA /SPACE? |
| 1678 | JMP SPACE |
| 1679 | TAD CM32 |
| 1680 | CLL |
| 1681 | TAD C12 |
| 1682 | SNL / 260 <= CHAR < 272 ? |
| 1683 | ERR16, JMS I LUNCH |
| 1684 | DCA L36 /SAVE THIS DIGIT... |
| 1685 | JMS I MULT10 / ACC = 10 * ACC + L36 |
| 1686 | SPACE, TAD KOUNT |
| 1687 | TAD DM6 |
| 1688 | SPA CLA /END OF STMT NR FIELD? |
| 1689 | JMP LABEL /NOT YET... |
| 1690 | JMS I GTCL /SKIP OVER COL 6 |
| 1691 | SNA CLA /IS IT A CAR RET? |
| 1692 | JMP ERR15 |
| 1693 | TAD L31 /SEE IF STMT NR IS LEGAL... |
| 1694 | SZA |
| 1695 | JMP ERR16 |
| 1696 | TAD L32 |
| 1697 | SPA CLA /IS STMT NR < 2048 ? |
| 1698 | JMP ERR16 /NO, STMT NR TOO BIG |
| 1699 | JMP I LSTMT |
| 1700 | CLEAR, LCLEAR |
| 1701 | GTCL, LGTC |
| 1702 | MULT10, MUL10 |
| 1703 | CM32, -32 |
| 1704 | DM6, -6 |
| 1705 | C12, 12 |
| 1706 | / |
| 1707 | / SUBROUTINEE TO PRINT A SYMBOL |
| 1708 | / |
| 1709 | / JMS I PRSYM |
| 1710 | / |
| 1711 | LPRSYM, 0 /THIS ROUTINE PRINTS SYMBOLS |
| 1712 | DCA LCH |
| 1713 | TAD LCH |
| 1714 | SMA /IS IT AN INTEGER CONSTANT |
| 1715 | JMP ICON /YES PROCESS IT |
| 1716 | RTL /SHIFT THE NEXT BIT INTO THE LINK |
| 1717 | SNL /IS IT A TEMPORARY |
| 1718 | JMP TEMPO /ITS A TEMPORARY |
| 1719 | RTR /RESTORE THE SYMBOL |
| 1720 | CIA /SET IT NEGATIVE |
| 1721 | TAD L47 /SUBTRACT THE BEGINNING OF THE XFCON TABLE |
| 1722 | SPA CLA /DO WE HAVE AN FCON |
| 1723 | JMP XFCON /YES PROCESS IT |
| 1724 | TAD LCH |
| 1725 | TAD C2 /ADD TWO TO THE SYMBOL TABLE POINTER |
| 1726 | DCA LP2 /AND SAVE IT |
| 1727 | TAD I LP2 /GET THE CONTROL BITS FOR THE SYMBOL |
| 1728 | RAR /GET EXTERNAL SUBROUTINE BIT IN LINK |
| 1729 | SZL CLA /IS THIS AN EXTERNAL SUBROUTINE |
| 1730 | JMP SKPIT /YES...DONT PUT OUT THE BACK SLASH |
| 1731 | TAD C34 |
| 1732 | JMS I PRINT |
| 1733 | SKPIT, TAD I LCH |
| 1734 | JMS LP2 /PRINT THEM |
| 1735 | ISZ LCH |
| 1736 | TAD I LCH |
| 1737 | JMS LP2 /AND PRINT THEM |
| 1738 | ISZ LCH |
| 1739 | TAD I LCH |
| 1740 | AND X7700 /MASK SO WE DONT PUT OUT CONTROL BITS |
| 1741 | JMS LP2 /AND PRINT IT |
| 1742 | JMP I LPRSYM /NOW RETURN |
| 1743 | LP2, 0 /THIS IS THE ROUTINE THAT PRINTS TWO CHARACTERS |
| 1744 | DCA UNCH /SAVE THE CHARS |
| 1745 | TAD UNCH /GET THEM AGAIN |
| 1746 | RTR /ROTAT FIRST CHAR INTO POSITION |
| 1747 | RTR |
| 1748 | RTR |
| 1749 | AND C77 /MASK SECOND CHARACTER |
| 1750 | SZA /IS IT AN ACTUAL CHARACTER |
| 1751 | JMS I PRINT /YES PRINT IT |
| 1752 | TAD UNCH /GET THE TWO CHARS AGAIN |
| 1753 | AND C77 /MASK OUT FIRST CHARACTER |
| 1754 | SZA /IS IT ACTUALLY A CHARACTER |
| 1755 | JMS I PRINT /YES PRINT IT |
| 1756 | JMP I LP2 /AND RETURN |
| 1757 | ICON, CLA /INTEGER CONSTANT, PUNCH A '(' |
| 1758 | TAD K50 |
| 1759 | JMS I PRINT |
| 1760 | TAD LCH /AND THE NUMBER |
| 1761 | PROCT, JMS I PROTAC |
| 1762 | JMP I LPRSYM /RETURN |
| 1763 | TEMPO, RTL |
| 1764 | SPA CLA /SUBSCRIPT TEMPORARY? |
| 1765 | JMP SBSCR |
| 1766 | RTL |
| 1767 | TAD D33 /PUNCH '[' FOR INTEGER AND ']' FOR FLOATING PT |
| 1768 | JMS I PRINT /AND PRINT IT |
| 1769 | TAD LCH |
| 1770 | SPA /DO WE STILL HAVE A TEMPORARY |
| 1771 | JMS I TEMPOR /YES GET THE TEMPORARY NUMBER |
| 1772 | JMS I PRINT /AND PRINT IT |
| 1773 | JMP I LPRSYM /RETURN |
| 1774 | SBSCR, TAD D33 /SUBSCRIPT TEMPORARY, PUNCH A '[' |
| 1775 | JMS I PRINT |
| 1776 | TAD LCH |
| 1777 | JMS I SUBTEM /AND 4 DIGITS |
| 1778 | JMP PROCT |
| 1779 | XFCON, TAD C35 /FLOATING POINT CONSTANT... |
| 1780 | JMS I PRINT /PUNCH A ']' |
| 1781 | TAD LCH |
| 1782 | CIA |
| 1783 | TAD L50 /SUBTRACT FROM END OF TABLE |
| 1784 | JMP PROCT |
| 1785 | D33, 33 |
| 1786 | C35, 35 |
| 1787 | K50, 50 |
| 1788 | C34, 34 |
| 1789 | X7700, 7700 |
| 1790 | LCH, 0 |
| 1791 | UNCH, 0 |
| 1792 | SUBTEM, LSBTEM |
| 1793 | TEMPOR, LTMPOR |
| 1794 | \f *2400 |
| 1795 | / |
| 1796 | / SUBROUNTINE TO DO SYMBOL TABLE MANIPULATIONS |
| 1797 | / |
| 1798 | C300, 300 |
| 1799 | C212, 212 |
| 1800 | C215, 215 |
| 1801 | SCOUNT, 0 /CURRENT NUMBER OF SYMBOLS |
| 1802 | XCTR, 0 /COUNTER |
| 1803 | FCOUNT, 0 /CURRENT NUMBER OF FCONS |
| 1804 | LSYMTB, 0 |
| 1805 | CLA /CLEAR THE AC |
| 1806 | LOOP1, TAD L56 /GET BEGINNING OF SYMBOL TABLE |
| 1807 | DCA LSYMTM /AND SAVE IN TABLE |
| 1808 | TAD SCOUNT /GET NUMBER OF SYMBOLS CURRENTLY |
| 1809 | CMA |
| 1810 | DCA XCTR /USE AS A COUNTER |
| 1811 | TAD C7700 /GIVE SEARCH A MASK TO USE ON LAST SYMBOL |
| 1812 | JMS SEARCH /LOOK FOR OCCURRENCE OF SYMBOL IN TABLE |
| 1813 | JMP ZCHECK /SYMBOL IS IN TABLE CHECK IT |
| 1814 | TAD L57 /TELL ENTER WHERE TO PUT THE SYMBOL |
| 1815 | JMS ENTER /ENTER THE SYMBOL |
| 1816 | TAD C3 /UPDATE THE POINTER |
| 1817 | DCA L57 /AND SAVE IT |
| 1818 | DCA L21 /ZERO SWITCH SINCE SYMBOL JUST LOADED |
| 1819 | ISZ SCOUNT /UPDATE COUNT OF SYMBOLS |
| 1820 | JMP LOOP1 /GO BACK AND CHECK IT |
| 1821 | ZCHECK, TAD L77 /GET POINTER INTO SYMBOL TABLE |
| 1822 | TAD C2 /MOVE TO LAST WORD |
| 1823 | DCA LSYMTM /SAVE IT |
| 1824 | TAD I LSYMTM /GET THE CONTROL BITS |
| 1825 | AND L21 /AND THE MASK |
| 1826 | SZA CLA /ARE ANY ILLEGAL BITS ON |
| 1827 | ERR54, JMS I LUNCH /ERROR 54 ... PROBABLY IN EQUIVALENCING ... |
| 1828 | TAD L32 /NOW OR IN NEW BITS |
| 1829 | CMA |
| 1830 | AND I LSYMTM |
| 1831 | TAD L32 |
| 1832 | DCA I LSYMTM |
| 1833 | JMP I LSYMTB /RETURN |
| 1834 | / FLOATING CONSTANT IS IN 30 THRU 32 |
| 1835 | LFCON, 0 |
| 1836 | CLA |
| 1837 | MLOOP, TAD L47 /GET BEGINNING OF FCON TABLE |
| 1838 | TAD C3 /MOVE TO ACTUAL START OF TABLE |
| 1839 | DCA LSYMTM /AND SAVE |
| 1840 | TAD FCOUNT /GET NUMBER OF FCONS SO FAR |
| 1841 | CMA |
| 1842 | DCA XCTR /AND USE FOR A COUNTER |
| 1843 | CMA /GIVE SEARCH A MASK FOR THE LAST WORD |
| 1844 | JMS SEARCH /SEARCH THE TABLE FOR THE CURRENT FCON |
| 1845 | JMP I LFCON /ITS ALREADY IN THERE JUST RETURN |
| 1846 | TAD L47 /TELL ENTER WHERE TO PUT THE FCON |
| 1847 | JMS ENTER /ENTER THE FCON |
| 1848 | TAD CM3 /AND UPDATE IT |
| 1849 | DCA L47 /AND SAVE |
| 1850 | ISZ FCOUNT /UPDATE NUMBER OF FCONS |
| 1851 | JMP MLOOP /GO BACK AND CHECK |
| 1852 | / THIS IS THE ROUTINE THAT SEARCHES THE TABLES FOR |
| 1853 | / OCCURRENCES OF THE CURRENT SYMBOL OR FCON |
| 1854 | SEARCH, 0 |
| 1855 | DCA ENTER /SAVE THE MASK |
| 1856 | MBACK, ISZ XCTR /SEE IF WE HAVE PROCESSED ALL SYMBOLS |
| 1857 | SKP /NO GO ON |
| 1858 | JMP QRET /YES |
| 1859 | TAD I LSYMTM /GET FIRST WORD OF SYMBOL |
| 1860 | CIA /NEGATE |
| 1861 | TAD L30 /SUBTRACT FIRST WORD OF CURRENT SYMBOL |
| 1862 | ISZ LSYMTM /INCREMENT POINTER |
| 1863 | SZA CLA /DO THEY MATCH |
| 1864 | JMP I1 /NO GO TO NEXT SYMBOL |
| 1865 | TAD I LSYMTM /YES GET SECOND WORD OF SYMBOL |
| 1866 | CIA |
| 1867 | TAD L31 /SUBTRACT SECOND WORD OF CURRENT SYMBOL |
| 1868 | ISZ LSYMTM /ADVANCE POINTER |
| 1869 | SZA CLA /DO THEY MATCH |
| 1870 | JMP I2 /NO GO TO NEXT SYMBOL |
| 1871 | TAD I LSYMTM /SEE IF NEXT WORD MATCHES |
| 1872 | AND ENTER /MASK OUT DESIRED PORTIONS |
| 1873 | CIA |
| 1874 | TAD L32 /SUBTRACT THIRD CURRENT WORD |
| 1875 | AND ENTER /K AGAIN |
| 1876 | ISZ LSYMTM /ADVANCE POINTER |
| 1877 | SZA CLA /DO THEY MATCH |
| 1878 | JMP MBACK /NO GO TO NEXT SYMBOL |
| 1879 | TAD LSYMTM /YES |
| 1880 | TAD CM3 /MOVE BACK POINTYER |
| 1881 | DCA L77 /PUT POINTER IN PAGE ZERO |
| 1882 | JMP I SEARCH /RETURN |
| 1883 | QRET, ISZ SEARCH /SET UP RETURN FOR NOT FOUND |
| 1884 | JMP I SEARCH /RETURN |
| 1885 | I1, ISZ LSYMTM /ADVANCE POINTER |
| 1886 | I2, ISZ LSYMTM /ADVANCE PIINTER |
| 1887 | JMP MBACK /GO TO NEXT SYMBOL |
| 1888 | / THIS ROUTINE ENTERS THE CURRENT SYMBOL INTO THE TABLE SPECIFIED |
| 1889 | ENTER, 0 |
| 1890 | DCA LSYMTM /SAVE ADDRESS |
| 1891 | TAD L47 /GET BEGINNING OF FCON TABLE |
| 1892 | CMA |
| 1893 | TAD L57 /SUBTRACT END OF SYMBOL TABLE |
| 1894 | C7700, SMA CLA /IS THERE ROOM FOR ANOTHER SYMBOL OR FCON |
| 1895 | ERR17, JMS I LUNCH /NO |
| 1896 | TAD L30 /YES GEYT FIRST WORD |
| 1897 | DCA I LSYMTM /STORE IT |
| 1898 | TAD LSYMTM |
| 1899 | DCA L11 /SET UP AUTO - XR |
| 1900 | TAD L31 |
| 1901 | DCA I L11 |
| 1902 | TAD L32 |
| 1903 | DCA I L11 |
| 1904 | TAD LSYMTM /GET THE ADDRESS BACK INTO THE AC |
| 1905 | JMP I ENTER /AND RETURN |
| 1906 | DUMPLN, DMPLIN |
| 1907 | LSYMTM=. |
| 1908 | LPRINT, 0 / CONVERTS FROM TRIMMED TO EIGHT BIT ASCII |
| 1909 | DCA LFCON /SAVE THE CHARACTER |
| 1910 | TAD L75 /S GET THE SUPPRESS PRINTING WITCH |
| 1911 | SZA CLA |
| 1912 | JMP I LPRINT |
| 1913 | ISZ L24 /IS THIS A NEW LINE? |
| 1914 | SKP /NO |
| 1915 | JMS I DUMPLN /YES - DUMP THE OLD ONE FIRST |
| 1916 | TAD LFCON /NO...GET THE CHARACTER |
| 1917 | SNA /IS IT A CR |
| 1918 | JMP CRLF /YES...PUT OUT CRLF |
| 1919 | AND C40 /CHECK BIT SIX |
| 1920 | CLL RAL |
| 1921 | CIA /AC CONTAINS 0 OR -100 |
| 1922 | TAD C300 /NOW CONTAINS 300 OR 200 |
| 1923 | TAD LFCON /NOW ADD THE CHARACTER IN |
| 1924 | \fPRIT, DCA I L24 /AND STORE IT IN THE BUFFER |
| 1925 | JMP I LPRINT |
| 1926 | CRLF, TAD C215 /GET AN EIGHT BIT CR |
| 1927 | DCA I L24 /STORE IT IN THE BUFFER |
| 1928 | ISZ L24 |
| 1929 | TAD C212 |
| 1930 | DCA I L24 /STORE A LINE FEED TOO |
| 1931 | CLA CMA |
| 1932 | DCA L24 /SET SWITCH TO DUMP LINE ON NEXT CHAR |
| 1933 | JMP I .+1 |
| 1934 | PRIT+1 |
| 1935 | \fLCOMON, CLA |
| 1936 | JMS I LOOK /CHECK REST OF STATEMENT NAME |
| 1937 | -2 /TWO CHARACTERS |
| 1938 | -17 /O |
| 1939 | -16 /N |
| 1940 | GETVAR, JMS I ENTITY /GET A VARIABLE |
| 1941 | SKP /NOT A VARIZBLE |
| 1942 | JMP VARI /WE GOT A VARIABLE |
| 1943 | NOP |
| 1944 | B20, 20 |
| 1945 | ERR18, JMS I LUNCH /ERROR |
| 1946 | VARI, TAD C40 |
| 1947 | TAD L32 /PUT IN COMMON BIT |
| 1948 | DCA L32 |
| 1949 | TAD K37 /GET MASK FOR SYMBOL TABLE SWITCH |
| 1950 | DCA L21 /PUT IN THE SWITCH |
| 1951 | JMS I SYMTAB /PUT SYMBOL IN TABLE |
| 1952 | JMS I ENTITY /LOOK FOR A COMMA |
| 1953 | JMP START /THAT'S ALL GOT A CR-LF... |
| 1954 | K37, 37 |
| 1955 | K27, 27 |
| 1956 | JMP .+3 /ERROR |
| 1957 | TAD CM54 /CHECK FOR COMMA |
| 1958 | SZA CLA /IS IT A COMMA |
| 1959 | JMP ERR18 /NO...ERROR |
| 1960 | JMP GETVAR /GET ANOTHER VARIABLE |
| 1961 | LDIMEN, JMS I LOOK /LOOK FOR REST OF STATEMENT |
| 1962 | -5 /FIVE CHARS |
| 1963 | -16 /N |
| 1964 | -23 /S |
| 1965 | -11 /I |
| 1966 | -17 /O |
| 1967 | -16 /N |
| 1968 | QAGAIN, CLA CMA /-U |
| 1969 | DCA REDY /SET SWITH FOR VARIABLE |
| 1970 | QGET, JMS I ENTITY /GET WHATEVER IS NEXT IN LINE |
| 1971 | JMP QDONE /IT EAS A CR |
| 1972 | JMP .+4 /IT WAS A VARIABLE |
| 1973 | JMP ASUBSC /IT WAS ONE OF THE SUBSCRIPTS |
| 1974 | JMP ERR18 /WE BETTER NOT GET ANY FP NUMBERS |
| 1975 | JMP QPUNC /IT WAS A PUNCTION |
| 1976 | ISZ REDY |
| 1977 | JMP ERR18 /WE WERENT READY FOR A VAR |
| 1978 | TAD B20 |
| 1979 | TAD L32 |
| 1980 | DCA L32 |
| 1981 | TAD K27 /GET THE MASK FOR THE SYMBOL TABLE |
| 1982 | DCA L21 /PUT IN THE SWITCH |
| 1983 | JMS I SYMTAB /PUT SYMBOL IN TABLE |
| 1984 | CMA CLA |
| 1985 | TAD L47 /GET BEGINNING OF TABLE |
| 1986 | DCA L16 |
| 1987 | TAD L77 /GET TABLE ADDRESS |
| 1988 | DCA I L16 |
| 1989 | CLA CMA |
| 1990 | DCA V /SET WITCH TO SAY WEVE GOTTEN A VAR |
| 1991 | JMP QGET /GET NEXT THING |
| 1992 | QPUNC, TAD CM54 |
| 1993 | SNA /IS IT A COMMA |
| 1994 | JMP COMMA /YES |
| 1995 | TAD C3 |
| 1996 | SNA |
| 1997 | JMP QRPAR /RIGHT PAREN |
| 1998 | IAC |
| 1999 | SNA /IS IT A LEFT PAREN |
| 2000 | ISZ V /PRECEDED BY A VAR |
| 2001 | JMP ERR18 /NO - ERROR |
| 2002 | CLA CMA |
| 2003 | DCA XLP /SET SWITCH TO SHOW LPAR |
| 2004 | JMP QGET |
| 2005 | ASUBSC, ISZ XLP /DID WE JUST GET LPAR |
| 2006 | JMP SECOND /NO...BETTER BE SECOND SUBSC |
| 2007 | TAD L32 /GET INTEGER |
| 2008 | DCA I L16 /PUT IN DIMTAB |
| 2009 | CMA CLA |
| 2010 | DCA QONE /SET SWITCH TO SHOW WE HAVE ONE SUBSC |
| 2011 | JMP QGET |
| 2012 | COMMA, ISZ QONE /DOES THIS COMMA SEPARATE SUBSCS |
| 2013 | JMP RIGHT /NO...LAST CHAR BETTER HAVE BEEN L RPAR |
| 2014 | CMA CLA |
| 2015 | DCA SEC /SET SWITCH TO EXPECT SECOND SUBSCRIPT |
| 2016 | JMP QGET |
| 2017 | SECOND, ISZ SEC /IS THIS SECOND SUBSCRIPT |
| 2018 | JMP ERR18 /NO...ERROR |
| 2019 | TAD 32 /GET INTEGER |
| 2020 | DCA I L16 |
| 2021 | CMA CLA |
| 2022 | DCA R /SET SWITCH FOR RPAR |
| 2023 | JMP QGET |
| 2024 | QRPAR, ISZ QONE /HAVE WE GOTTEN ONE SUBSC |
| 2025 | JMP QTWO /NO...CHECK FOR TWO |
| 2026 | IAC /ONLY ONE SO USE 1 AS SECOND |
| 2027 | DCA I L16 |
| 2028 | QBACK, CMA CLA |
| 2029 | DCA RIG |
| 2030 | TAD L47 /GET BEGINNING OF TABLE |
| 2031 | DCA L50 /SAVE IN LOW CORE |
| 2032 | TAD L47 |
| 2033 | TAD CM3 /SUBTRACT THREE FROM ADDRESS |
| 2034 | DCA L47 /AND SAVE |
| 2035 | JMP QGET /WE EXPECT COMMA OR CR |
| 2036 | QTWO, ISZ R /HAVE WE GOTTEN TWO |
| 2037 | JMP ERR18 /NO...ERROR |
| 2038 | JMP QBACK |
| 2039 | RIGHT, ISZ RIG /DID WE JUST GET RPAR |
| 2040 | JMP ERR18 /NO...ERROR |
| 2041 | JMP QAGAIN |
| 2042 | QDONE, ISZ RIG |
| 2043 | JMP ERR18 |
| 2044 | JMP START |
| 2045 | QONE, 0 |
| 2046 | RIG, 0 |
| 2047 | R, 0 |
| 2048 | REDY, 0 |
| 2049 | V, 0 |
| 2050 | XLP, 0 |
| 2051 | SEC, 0 |
| 2052 | \f *3000 |
| 2053 | LGOTO, TAD L74 |
| 2054 | DCA L16 /USE AUTO INDEXING |
| 2055 | DCA L76 |
| 2056 | JMS I ENTITY |
| 2057 | NOP |
| 2058 | SKP |
| 2059 | JMP ALAB /WE HAVE A LABEL |
| 2060 | JMP I ASSIGN |
| 2061 | TAD CM50 /IF PUNCT...CHECK FOR LEFT PAREN |
| 2062 | SZA CLA /IS IT ( |
| 2063 | JMP I ASSIGN |
| 2064 | ANEXT, JMS I ENTITY |
| 2065 | NOP |
| 2066 | SKP |
| 2067 | JMP THERE /WE HAVE A LABEL |
| 2068 | NOP |
| 2069 | ERR28, JMS I LUNCH |
| 2070 | THERE, TAD L32 /GET THE LABEL |
| 2071 | DCA I L16 /PUT IN LIST |
| 2072 | ISZ L76 |
| 2073 | JMS I GNB |
| 2074 | TAD CM54 /CHECK FOR BEING A COMMA |
| 2075 | SNA /IS IT A COMMA |
| 2076 | JMP ANEXT /YES GET ANOTHER LABEL |
| 2077 | TAD C3 /CHECK FOR BEING A RIGHT PAREN |
| 2078 | SZA CLA /IS IT A ) |
| 2079 | JMP I ASSIGN |
| 2080 | JMS I GNB |
| 2081 | TAD CM54 /CHECK FOR ANOTHER COMMA |
| 2082 | SZA /IS IT ANOTHER |
| 2083 | JMS I PUTCH /IGNORE ANYTHING ELSE ... |
| 2084 | JMS I ENTITY /GET THE CONTROL VARIABLE |
| 2085 | SKP |
| 2086 | JMP .+4 /WE GOT IT |
| 2087 | NOP |
| 2088 | NOP |
| 2089 | ERR29, JMS I LUNCH |
| 2090 | DCA L21 /ZERO THE SYMBOL TABLE SWITCH |
| 2091 | JMS I SYMTAB /PUT VARIABLE IN SYMBOL TABLE |
| 2092 | TAD L77 /GET ADD RESS OF SYMBOL |
| 2093 | JMS I MODE /CHECK THE MODE OF THE VAIABLE |
| 2094 | ERR30, JMS I LUNCH /ITS FLOATING POINT |
| 2095 | JMS I ZZZ /PUT OUT STMT LABEL |
| 2096 | JMS LXTAD /LOAD VARIABLE WITH TAD OR TAD* |
| 2097 | JMS I PROP /PUT OUT OP CODE |
| 2098 | Q6066, 6066 /OP CODE IS TAD |
| 2099 | JMS I CREATE /GET THE NEXT CREATED LABEL |
| 2100 | JMS I PRCRL /PRINT THE CREATED LABEL |
| 2101 | JMS I PRINT /PUT OUT CR LF |
| 2102 | JMS I PROP /PUT OUT OP CODE |
| 2103 | 6071 /OP CODE IS DCA |
| 2104 | TAD GO7 |
| 2105 | JMS I PROTAC |
| 2106 | JMS I PRINT /PUT OUT CRLF |
| 2107 | JMS I PROP /PUNCH 'TAD I 7' |
| 2108 | OPTADI |
| 2109 | TAD GO7 |
| 2110 | JMS I PROTAC |
| 2111 | JMS I PRINT |
| 2112 | JMS I PROP /PUNCH 'DCA 7' |
| 2113 | OPDCA |
| 2114 | TAD GO7 |
| 2115 | JMS I PROTAC |
| 2116 | JMS I PRINT |
| 2117 | JMS I PROP /PUNCH 'JMP I 7' |
| 2118 | OPJMPI |
| 2119 | TAD GO7 |
| 2120 | JMS I PROTAC |
| 2121 | JMS I PRINT |
| 2122 | TAD L76 /PUNCH 'CPAGE <N+1>' |
| 2123 | IAC |
| 2124 | JMS I PIFF |
| 2125 | TAD L53 /PUNCH '<CR.LABEL2>, <CR.LABEL2>' |
| 2126 | JMS I CLAB |
| 2127 | TAD L53 |
| 2128 | JMS I PRCRL |
| 2129 | JMS I PRINT |
| 2130 | TAD L76 /NOW PUNCH THE LABELS |
| 2131 | CIA /SET NEGATIVE |
| 2132 | DCA L76 |
| 2133 | TAD L74 |
| 2134 | DCA L16 /USE AUTO INDEXING AGAIN |
| 2135 | TAD I L16 /GET THE NEXT LABEL |
| 2136 | JMS I PLAB /PRINT THE LABEL |
| 2137 | JMS I PRINT /PUT OUT CRLF |
| 2138 | ISZ L76 |
| 2139 | JMP .-4 /NO |
| 2140 | JMP START |
| 2141 | / THE FOLLOWING SECTION IS TO TREAT REGULAR GOTO S |
| 2142 | ALAB, JMS I ZZZ |
| 2143 | TAD L32 |
| 2144 | JMS PRJUMP /PUT OUT A JUMP TO THE LABEL IN "L32" |
| 2145 | JMP START |
| 2146 | |
| 2147 | LXTAD, 0 |
| 2148 | TAD L77 /GET ADDRESS AGAIN |
| 2149 | JMS I DUMARG |
| 2150 | TAD CM3 |
| 2151 | TAD Q6066 /TAD OR TAD* |
| 2152 | DCA OP /USE AS OPERATOR |
| 2153 | JMS I PROP /PUT OUT OP CODE |
| 2154 | OP, 0 |
| 2155 | TAD L77 /GET ADDRESS AGAIN |
| 2156 | JMS I PRSYM /PRINT THE SYMBOL |
| 2157 | JMS I PRINT /PUT OUT A CR LF |
| 2158 | JMP I LXTAD |
| 2159 | |
| 2160 | LLEAD, 0 /PUNCH SOME LEADER... |
| 2161 | DCA L7 |
| 2162 | JMS I PUNCH |
| 2163 | ISZ L7 |
| 2164 | JMP .-2 |
| 2165 | JMP I LLEAD |
| 2166 | GO7, 7 |
| 2167 | |
| 2168 | PRJUMP, 0 /SUBROUTINE TO PUT OUT A JUMP |
| 2169 | DCA LLEAD /STORE THE LABEL |
| 2170 | JMS I PROP |
| 2171 | 6044 /JMP |
| 2172 | TAD LLEAD |
| 2173 | JMS I PLAB /PUT OUT THE LABEL |
| 2174 | JMS I PRINT /PUT OUT A CRLF |
| 2175 | TAD LLEAD |
| 2176 | DCA L12 /SET CONTENTS OF LAST LINE TO LABEL |
| 2177 | JMP I PRJUMP |
| 2178 | \f *3200 |
| 2179 | / THE FOLLOWING ROUTINE PUNCHES OCTAL NUMBERS |
| 2180 | |
| 2181 | LPRTAC, 0 |
| 2182 | DCA TMP /SAVE THE NUMBER |
| 2183 | DCA TM |
| 2184 | TAD CM4 /PUT OUT FOUR CHARACTERS |
| 2185 | DCA DCTR /CHARACTER COUNTER |
| 2186 | BK, TAD TMP /GET THE NUMBER |
| 2187 | RAL /ROTATE IT LEFT ONE |
| 2188 | RTL /ROTATE TWO LEFT...THAT MAKES ONE OCTAL DIGIT |
| 2189 | DCA TMP /SAVE THE ROTATED NUMBER |
| 2190 | TAD TMP /GET IT IN ACCUMULATOR |
| 2191 | AND C3 |
| 2192 | RAL /GET THE DIGIT INTO THE LOW-ORDER AC |
| 2193 | ISZ DCTR /IS THIS THE LAST DIGIT? |
| 2194 | JMP .+4 /NO, CONTINUE |
| 2195 | TAD C60 /MAKE IT LOOK LIKE A TRIMMED ASCII DIGIT |
| 2196 | JMS I PRINT /PRINT THE DIGIT |
| 2197 | JMP I LPRTAC |
| 2198 | SZA /DO WE HAVE A ZERO DIGIT? |
| 2199 | JMP .+4 |
| 2200 | TAD TM |
| 2201 | SNA CLA /YES, IS IT A LEADING ZERO? |
| 2202 | JMP BK /YES, IGNORE IT |
| 2203 | TAD C60 |
| 2204 | JMS I PRINT |
| 2205 | ISZ TM /DON'T SUPPRESS ZEROS ANY MORE |
| 2206 | JMP BK /NOW...PUT OUT ANOTHER |
| 2207 | TMP, 0 |
| 2208 | TM, 0 |
| 2209 | CM4, -4 |
| 2210 | C60, 60 |
| 2211 | LIF, TAD CM4 |
| 2212 | DCA COUNT1 /SET UP COUNTER |
| 2213 | JMS I GNB |
| 2214 | TAD CM50 /CHECK FOR LEFT PAREN |
| 2215 | SZA CLA /IS IT A ( |
| 2216 | JMP I ASSIGN |
| 2217 | JMS I PUTCH /YES...PUT IT BACK FOR GENER |
| 2218 | JMS I ZZZ |
| 2219 | ISZ L52 /SET BALANCED PARENS SWITCH FOR GENER |
| 2220 | ISZ L44 /SET SWITCH FOR RIGHT SIDE OF EQUALS SIGN |
| 2221 | JMS I GENER /NOW CALL GENER AND PROCESS EXPRESSION |
| 2222 | TAD I L41 |
| 2223 | JMS I MODE /WHAT IS ITS MODE |
| 2224 | JMS I GETHI /GET HI ORDER P.P. AC |
| 2225 | TAD CDCA41 |
| 2226 | DCA LIFDCA /SET UP INSTRUCTION TO STORE LABELS |
| 2227 | LABL, JMS I ENTITY /GET A LABEL |
| 2228 | D34, 34 |
| 2229 | SKP |
| 2230 | JMP INTEG /WE GO A LABEL |
| 2231 | C46, 46 |
| 2232 | ERR31, JMS I LUNCH /DIDNT GET A LABEL |
| 2233 | INTEG, TAD L32 /GET THE LABEL |
| 2234 | ISZ LIFDCA |
| 2235 | LIFDCA, .-. /STORE LABELS IN L42 THROUGH L44 |
| 2236 | DCTR=LIFDCA |
| 2237 | ISZ COUNT1 /HAVE WE GOTTEN TOO MANY LABELS |
| 2238 | SKP /NO |
| 2239 | JMP ERR31 /YES |
| 2240 | JMS I GNB |
| 2241 | SNA /SEE IF ITS A CR |
| 2242 | JMP .+5 /ITS A CR |
| 2243 | TAD CM54 /CHECK FOR COMMA |
| 2244 | SZA CLA /IS IT A COMMA |
| 2245 | JMP ERR31 |
| 2246 | JMP LABL /YES |
| 2247 | ISZ COUNT1 /DID WE GET THE RIGHT NUMBER OF LABELS |
| 2248 | JMP ERR31 /NO |
| 2249 | TAD L42 |
| 2250 | CIA |
| 2251 | TAD L44 |
| 2252 | SNA CLA /IF THE JUMPS FOR AC<0 AND AC>0 ARE EQUAL |
| 2253 | JMP ISPECL /WE CAN SAVE SOME CODE |
| 2254 | TAD L43 |
| 2255 | CIA |
| 2256 | TAD L44 |
| 2257 | SNA CLA /IF THE JUMPS FOR AC=0 AND AC>0 ARE EQUAL |
| 2258 | JMP SPCONL /WE CAN ALSO SAVE SOME CODE |
| 2259 | JMS I PROP /PUT OUT OP CODE |
| 2260 | 6105 /OP CODE IS SNA |
| 2261 | JMS I PRINT /PUT OUT CRLF |
| 2262 | TAD L43 |
| 2263 | JMS I PRJMP /OUTPUT THE ZERO BRANCH |
| 2264 | SPCONL, JMS I PROP /PUT OUT OP CODE |
| 2265 | 6110 /OP CODE IS P SPA CLA |
| 2266 | JMS I PRINT /PUT OUT CRLF |
| 2267 | TAD L42 /OUTPUT THE NEGATIVE BRANCH |
| 2268 | IFCOMN, JMS I PRJMP |
| 2269 | TAD L44 |
| 2270 | JMS I PRJMP /OUTPUT THE POSITIVE (>0) BRANCH |
| 2271 | DCA L46 /ZERO AC |
| 2272 | JMP START /GO GET NEXT STATEMENT |
| 2273 | ISPECL, JMS I PROP /PUNCH 'SNA CLA' |
| 2274 | OPSNA |
| 2275 | JMS I PROP |
| 2276 | OPCLA |
| 2277 | JMS I PRINT |
| 2278 | TAD L43 |
| 2279 | JMP IFCOMN /OUTPUT THE ZERO AND POSITIVE BRANCHES |
| 2280 | PRJMP, PRJUMP |
| 2281 | COUNT1, 0 |
| 2282 | LCREAT, 0 |
| 2283 | ISZ L53 /INCREMENT BY ONE... |
| 2284 | TAD L53 |
| 2285 | AND C77 |
| 2286 | TAD CM33 |
| 2287 | SMA CLA /HAVE WE BEEN HERE 26 TIMES? |
| 2288 | TAD C46 /YES, BUMP THE HIGH ORDER DIGIT |
| 2289 | TAD L53 |
| 2290 | DCA L53 /AND SAVE |
| 2291 | TAD L53 /NOW RETURN IT IN AC |
| 2292 | JMP I LCREAT /RETURN |
| 2293 | LPLAB, 0 /THIS PRINTS REGULAR LABELS |
| 2294 | DCA TMP /FIRST SAVE LABEL |
| 2295 | TAD D34 /NOW PUNCH A '\' |
| 2296 | JMS I PRINT |
| 2297 | TAD TMP /GET LABEL |
| 2298 | JMS I DECOUT /AND PRINT IT |
| 2299 | JMP I LPLAB /RETURN |
| 2300 | GETHI, LGETHI |
| 2301 | CDCA41, DCA L41 |
| 2302 | CM33, -33 |
| 2303 | DECOUT, LDCOUT |
| 2304 | |
| 2305 | /TELETYPE OUTPUT ROUTINE FOR ERROR MESSAGES |
| 2306 | LTTYPE, 0 |
| 2307 | TSF |
| 2308 | JMP .-1 |
| 2309 | TLS |
| 2310 | CLA |
| 2311 | JMP I LTTYPE |
| 2312 | |
| 2313 | \f *3400 |
| 2314 | DORET, JMP I XDO |
| 2315 | ISZDO, JMS I PROP |
| 2316 | 6170 /ISZ |
| 2317 | TAD L30 |
| 2318 | JMS I PRSYM |
| 2319 | JMS I PRINT |
| 2320 | JMP DOSUBT /GO GENERATE THE LIMIT TEST |
| 2321 | NUMB, 0 |
| 2322 | SWIT, 0 |
| 2323 | DM5, -5 |
| 2324 | CM24, -24 |
| 2325 | C5001, 5001 |
| 2326 | LEQI, EQI |
| 2327 | |
| 2328 | LDO, JMS I ZZZ |
| 2329 | JMS I ENTITY /LOOK FOR THE SCOPE LABEL |
| 2330 | C55, 55 |
| 2331 | SKP |
| 2332 | JMP SLAB /WE GOT THE SCOPE LABEL |
| 2333 | E53, 53 |
| 2334 | JMP I ASSIGN |
| 2335 | SLAB, TAD L32 /GET THE INTEGER |
| 2336 | JMS XDO /PUT OUT DO-LOOP CODE |
| 2337 | JMP START /NORMAL EXIT |
| 2338 | JMP ERR35 /IMPLIED DO EXIT - ERROR |
| 2339 | |
| 2340 | XDO, 0 /DO LOOP SUBROUTINE - ENTERED WITH |
| 2341 | /TARGET LABEL IN AC |
| 2342 | DCA I L15 /PUT IN DO END PUSH DOWN LIST |
| 2343 | TAD L74 |
| 2344 | DCA L16 /SET UP LIST OF DO ENDS |
| 2345 | DCA L21 /ZERO THE SYMBOL TABLE SWITCH |
| 2346 | CMA CLA |
| 2347 | DCA SWIT /SET SWITCH FOR CONTROL VARIABLE |
| 2348 | TAD DM5 |
| 2349 | DCA NUMB /SET COUNTER OF NUMBER OF PARAMETERS |
| 2350 | GETMOR, JMS I ENTITY /LOOK FOR A PARAMETER |
| 2351 | JMP .+3 /ERR |
| 2352 | JMP CVAR /GOT A VARIABLE |
| 2353 | JMP DPAR /GOT AN INTEGER |
| 2354 | C21, 21 |
| 2355 | JMP ERR35 |
| 2356 | CVAR, JMS I SYMTAB /PUT SYMBOL IN TABLE |
| 2357 | TAD L77 /GET ADDRESS |
| 2358 | JMS I MODE /DETERMINE MODE OF SYMBOL |
| 2359 | JMP ERR35 |
| 2360 | TAD L77 /GET ADDRESS AGAIN |
| 2361 | DOSTOR, DCA I L16 /SAVE |
| 2362 | ISZ NUMB /HAVE WE GOTTEN TOO MANY PARAMS |
| 2363 | SKP /NO |
| 2364 | ERR35, JMS I LUNCH /YES, DO ERROR ... |
| 2365 | JMS I GNB |
| 2366 | SNA /IS IT CR |
| 2367 | JMP ALLDNE+1 /YES WERE DONE |
| 2368 | TAD CM51 |
| 2369 | SNA /IS IT A RIGHT PAREN? |
| 2370 | JMP ALLDNE /YES-FINISH UP AND TAKE IMPLIED DO EXIT |
| 2371 | TAD CM24 |
| 2372 | SZA /IS IT = |
| 2373 | JMP MCOM /NO |
| 2374 | ISZ SWIT /IS SWITCH SET FOR IT |
| 2375 | JMP ERR35 /NO |
| 2376 | JMP GETMOR /YESS...GO BACK FOR ANOTHER PARAMETER |
| 2377 | MCOM, TAD C21 /CHECK FOR COMMA |
| 2378 | ISZ SWIT /IF NO EQUAL SIGN YET |
| 2379 | SZA /OR IF THIS ISN'T A COMMA |
| 2380 | JMP ERR35 /THEN ITS AN ERROR |
| 2381 | JMP GETMOR /GET ANOTHER |
| 2382 | DPAR, TAD L32 /GET THE INTEGER |
| 2383 | ISZ SWIT /HAVE WE SEEN AN EQUAL SIGN? |
| 2384 | JMP DOSTOR /YES - SAVE THE INTEGER AND PROCEED |
| 2385 | JMP ERR35 /NO |
| 2386 | ALLDNE, ISZ XDO /BUMP RETURN POINTER IF TERMINATOR WAS RPAR |
| 2387 | CLA IAC |
| 2388 | DCA I L16 /STORE A ONE IN THE FOURTH (OR FIFTH) ARGUMENT |
| 2389 | TAD C2 |
| 2390 | TAD NUMB |
| 2391 | SPA CLA /DID WE GET AT LEAST THREE ARGS? |
| 2392 | JMP ERR35 /NO |
| 2393 | ISZ L44 |
| 2394 | TAD L74 /GET ERASABLE LOCATIONS |
| 2395 | DCA L16 /USE THE AUTO INDEX REGISTERS |
| 2396 | TAD I L16 /GET CONTROL VARIABLE |
| 2397 | DCA L30 /AND PUT IN THIRTY |
| 2398 | TAD I L16 /GET INITIAL VALUE |
| 2399 | DCA L31 /AND SAVE IT |
| 2400 | TAD I L16 /GET FINAL VALUE |
| 2401 | DCA L32 /AND SAVE IT |
| 2402 | TAD I L16 /GET INCREMENT |
| 2403 | DCA L33 /AND SAVE IT |
| 2404 | TAD L74 /GET ADDR OF ERASABLE AGAIN |
| 2405 | IAC /INCREMENT ONCE |
| 2406 | DCA L41 /TELL TRIPL WHERE TO FIND THE DUMMY TRIPLES |
| 2407 | TAD L74 /GET IT AGAIN |
| 2408 | DCA L16 /USE AUTO INDEX TO STORE TRIPLE |
| 2409 | DCA L46 /ZERO THE AC |
| 2410 | TAD C5001 /SET UP INITIAL TRIPLE NUMBER |
| 2411 | DCA L40 |
| 2412 | TAD L33 |
| 2413 | CIA |
| 2414 | TAD L31 |
| 2415 | SNA CLA /IF INITIAL VALUE = STEP SIZE |
| 2416 | JMP STCTLV /NO NEED TO COMPUTE THE DIFFERENCE |
| 2417 | TAD L33 /GET STEP SIZE |
| 2418 | DCA I L16 /PUT IN TRIPLE |
| 2419 | TAD C55 /PUT IN A MINUS SIGN |
| 2420 | DCA I L16 |
| 2421 | TAD L31 /GET INITIAL VALUE |
| 2422 | DCA I L16 |
| 2423 | JMS I TRIPL /PROCESS THE TRIPLE |
| 2424 | STCTLV, JMS I LEQI /STORE ANSWER IN CONTROL VARIABLE |
| 2425 | JMS I CLAB /PUT A CDREATED LABVEL ON THE NEXT STATEMENT |
| 2426 | TAD L53 /GET THE CREATED LABEL |
| 2427 | DCA I L15 /AND PUT IN DO END LIST |
| 2428 | TAD L74 |
| 2429 | DCA L16 |
| 2430 | TAD L33 /GET STEP SIZE |
| 2431 | CLL RAR |
| 2432 | SNA /IF STEP SIZE=1 THEN |
| 2433 | JMP ISZDO /WE CAN USE AN ISZ TO INCREMENT |
| 2434 | RAL |
| 2435 | DCA I L16 |
| 2436 | TAD E53 /WERE GOING TO ADD |
| 2437 | DCA I L16 |
| 2438 | / L30 IS IN THE THIRD POSITION SINCE WE CALLED "EQI" |
| 2439 | JMS I TRIPL /ADD STEP SIZE TO CONTROL VARIABLE |
| 2440 | JMS I LEQI /STORE ANSWER IN CONTROL VARIABLE |
| 2441 | DOSUBT, TAD L74 |
| 2442 | DCA L16 |
| 2443 | TAD L30 /GET THE CONTROL VARIABLE |
| 2444 | DCA I L16 |
| 2445 | TAD C55 /WERE GOING TO SUBTRACT |
| 2446 | DCA I L16 |
| 2447 | TAD L32 /GET FINAL VALUE |
| 2448 | DCA I L16 |
| 2449 | JMS I TRIPL /SUBTRACT CONTROL VARIABLE FROM FINAL VALUE |
| 2450 | \f DCA L46 /CLEAR THE AC FLAG |
| 2451 | JMS I PROP |
| 2452 | 6110 /SPA CLA |
| 2453 | JMS I PRINT |
| 2454 | JMS I PROP |
| 2455 | 6044 /PUT OUT A JMP |
| 2456 | JMS I CREATE /TO A CREATED LABEL |
| 2457 | DCA I L15 /PUT CREATED LABEL IN DO END LIST |
| 2458 | TAD L53 /GET LABEL |
| 2459 | JMS I PRCRL /AND PRINT IT |
| 2460 | JMS I PRINT /CRLF |
| 2461 | ISZ L55 /INCREMENT UNENDED DO COUNTER |
| 2462 | SKP |
| 2463 | ERR38, JMS I LUNCH /TOOO MANY UNENDED DOS |
| 2464 | JMP I .+1 |
| 2465 | DORET /RETURN FROM SUBROUTINE "XDO" |
| 2466 | |
| 2467 | EQI, 0 |
| 2468 | TAD L74 |
| 2469 | DCA L16 |
| 2470 | TAD L46 /GET RESULT OF PREVIOUS COMPUTATION |
| 2471 | DCA I L16 |
| 2472 | TAD E75 /GET EQUALS SIGN |
| 2473 | DCA I L16 |
| 2474 | TAD L30 /GET CONTROL VARAIBLE |
| 2475 | DCA I L16 |
| 2476 | JMS I TRIPL /PROCESS |
| 2477 | DCA L46 /WIPE AC SWITCH |
| 2478 | JMP I EQI /RETURN |
| 2479 | LFUNCT, 0 |
| 2480 | DCA ARGCNT |
| 2481 | TAD L46 /GET AC |
| 2482 | SZA CLA /IS IT ZERO |
| 2483 | JMS I STORE /NO...STORE THE AC |
| 2484 | TAD L53 /GET CURRENT CREATED LABEL |
| 2485 | DCA L73 /AND SAVE |
| 2486 | CLA CMA /AC IS MINUS ONE |
| 2487 | TAD L41 /PUSH LIST POINTER |
| 2488 | DCA L42 /PUSH LIST POINTER MINUS ONE |
| 2489 | CKFNCT, ISZ L42 /INCREMENT POINTER |
| 2490 | ISZ L42 /AGAIN |
| 2491 | TAD I L42 /GET THE OPERATOR |
| 2492 | TAD CM4047 /SUBTRACT THE FUNCTION OPERATOR |
| 2493 | SZA /IS THIS THE FUNCTION OPERATOR |
| 2494 | JMP CKSBSC /NO |
| 2495 | CLA IAC /YES...THE FUNCTION NAME IS IN THE NEXT LOCATIO |
| 2496 | TAD L42 /THIS POINTS TO IT |
| 2497 | DCA SAVE /AND SAVE |
| 2498 | TAD I SAVE |
| 2499 | TAD C2 |
| 2500 | DCA EQI |
| 2501 | TAD I EQI |
| 2502 | AND CM2 |
| 2503 | IAC |
| 2504 | DCA I EQI |
| 2505 | MOR, CLA CMA /NOW EXAM THE ARGUMENTS |
| 2506 | TAD L42 /WERE POINTING TO THE FIRST ARGUMENT |
| 2507 | DCA L42 /SAVE THE POINTER |
| 2508 | ISZ ARGCNT |
| 2509 | JMS I LCHNG /CHECK L42 FOR ZERO OR DUMMY ARG |
| 2510 | DCA I L42 /REPLACE IT BY UPDATED VALUE |
| 2511 | TAD L42 /IT WASNT...SEE IF IT WAS THE LAST ARGUMENT |
| 2512 | CIA |
| 2513 | TAD L41 /SUBTRACT THE END OF ARGUMENT LIST |
| 2514 | SNA CLA /IS IT ZERO |
| 2515 | JMP OUT /YES...WE'VE COMPLETED THIS PHASE |
| 2516 | CLA CMA /NO...MOVE THE POINTER BACK ONE |
| 2517 | TAD L42 |
| 2518 | DCA L42 /AND SAVE |
| 2519 | JMP MOR /NOW CHECK THE NEXT ARGUMENT |
| 2520 | OUT, TAD SAVE /GET THE POINTER TO THE FUMCTION NAME AGAIN |
| 2521 | DCA L42 /AND PUT IN 42 |
| 2522 | TAD I L42 /GET THE ARGUMENT |
| 2523 | DCA FUNOP /USE FPROP TO PUT OUT THE CALL TO THE FUNCTION |
| 2524 | TAD ARGCNT /GIVE FPROP THE NUMBER OF ARGUMENTS |
| 2525 | JMS I FPROP /PUT OUT THE CALL TO THE FUNCTION |
| 2526 | FUNOP, 0 |
| 2527 | TAD L73 /NOW RESTORE THE CREATED LABEL LOCATION |
| 2528 | DCA L53 |
| 2529 | MNEXT, TAD L42 /GET THE POINTER |
| 2530 | TAD CM2 /MOVE POINTER TO ARGUMENT |
| 2531 | DCA L42 /AND SAVE |
| 2532 | TAD I L42 /GET NEXT ARGUMENT |
| 2533 | JMS I PSYMOT /GENERATE AN "ARG" FOR THE ARGUMENT |
| 2534 | TAD L42 /GET THE POINTER |
| 2535 | CIA /SET IT NEGATIVE |
| 2536 | TAD L41 /ADD |
| 2537 | SZA CLA /ARE THEY EQUAL |
| 2538 | JMP MNEXT /NO THERE ARE MORE ARGS |
| 2539 | TAD I SAVE /YES...GET THE FUNCTION NAME |
| 2540 | JMS I MODE /WHAT MODE IS IT |
| 2541 | TAD E400 /ITS FLOATING POINT |
| 2542 | TAD L40 /ITS INTEGER |
| 2543 | DCA L46 /PUT THE TRIPLE NUMBER IN THE AC SWITCH |
| 2544 | TAD SAVE /YES...CHANGE PUSH LIST POINTER |
| 2545 | DCA L41 /STORE POINTER TO NAME IN PUSH LIST POINTER |
| 2546 | TAD L46 /GET CURRENT TRIPLE NUMBER |
| 2547 | DCA I L41 /AND PUT IT IN THE PUSH LIST |
| 2548 | JMP I LFUNCT /RETURN |
| 2549 | CKSBSC, IAC |
| 2550 | SZA CLA /IS IT THE SUBSCRIPT OPERATOR? |
| 2551 | JMP I CKF /NO - KEEP LOOKING |
| 2552 | JMP I .+1 |
| 2553 | ERR39 |
| 2554 | PSYMOT, SYMOUT |
| 2555 | SAVE, 0 |
| 2556 | ARGCNT, 0 |
| 2557 | E75, 75 |
| 2558 | CM4047, -4047 |
| 2559 | E400, 400 |
| 2560 | |
| 2561 | TAD C47 |
| 2562 | JMS I PPACK |
| 2563 | LQUOTE, JMS I PGTC /GET A CHARACTER |
| 2564 | SNA |
| 2565 | ERR37, JMS I LUNCH /CARRIAGE RETURN - ERROR |
| 2566 | TAD CM47 |
| 2567 | SZA |
| 2568 | JMP LQUOTE-2 /IF NOT A QUOTE, STORE IT |
| 2569 | JMP I .+1 |
| 2570 | FRET |
| 2571 | C47, 47 |
| 2572 | CM47, -47 |
| 2573 | PGTC, LGTC |
| 2574 | PPACK, PACK |
| 2575 | CKF, CKFND |
| 2576 | \f *4000 |
| 2577 | LCONT, JMS I LOOK /CHECK REST OF LINE |
| 2578 | -4 /LOOK FOR FOUR CHARACTERS |
| 2579 | -11 /I |
| 2580 | -16 /N |
| 2581 | -25 /U |
| 2582 | -5 /E |
| 2583 | JMS I ZZZ |
| 2584 | JMS I PROP /PUNCH 'NOP' |
| 2585 | 6047 |
| 2586 | JMS I PRINT /PUT OUT A CRLF |
| 2587 | JMP START /GO GET NEXT STATEMENT |
| 2588 | |
| 2589 | LPAUSE, JMS I LOOK /CHECK REST OF STATEMENT TYPE |
| 2590 | -1 /JUST ONE CHARACTER |
| 2591 | -5 /E |
| 2592 | CLA CMA |
| 2593 | LSTOP, DCA SW /SET SWITCH FOR STOP OR PAUSE |
| 2594 | DCA L32 |
| 2595 | JMS I ENTITY /LOOK FOR THE OPTIONAL INTEGER |
| 2596 | JMP MCR /WE GOT A CR |
| 2597 | SKP /ERR |
| 2598 | JMP .+3 /WE GOT AN INTEGER |
| 2599 | NOP /ERR |
| 2600 | JMP I ASSIGN |
| 2601 | |
| 2602 | MCR, JMS I ZZZ |
| 2603 | ISZ SW /PAUSE OR STOP? |
| 2604 | JMP STOP |
| 2605 | JMS I FPROP /PUNCH 'CALL 0,CKIO' |
| 2606 | 6116 |
| 2607 | JMS I PROP /PRINT OP CODE |
| 2608 | 6066 /OPCODE IS TAD |
| 2609 | TAD L32 /GET THE INTEGER |
| 2610 | JMS I PRSYM /PRINT IT |
| 2611 | JMS I PRINT /CR |
| 2612 | JMS I PROP |
| 2613 | 6121 |
| 2614 | JMS I PRINT |
| 2615 | JMS I PROP |
| 2616 | 6124 |
| 2617 | JMS I PRINT /PUT OUT CRLF |
| 2618 | JMP START /GO GET NEXT STATEMENT |
| 2619 | |
| 2620 | STOP, JMS OSTOP |
| 2621 | JMP START |
| 2622 | |
| 2623 | OSTOP, 0 /PUNCH 'CALL 0,CKIO' |
| 2624 | JMS I FPROP |
| 2625 | 6116 |
| 2626 | JMS I CLAB /PUNCH '<LAB>, HLT' |
| 2627 | JMS I PROP |
| 2628 | 6121 |
| 2629 | JMS I PRINT |
| 2630 | JMS I PROP /PUNCH 'JMP <LAB>' |
| 2631 | 6044 |
| 2632 | TAD L53 |
| 2633 | JMS I PRCRL |
| 2634 | JMS I PRINT |
| 2635 | JMP I OSTOP |
| 2636 | |
| 2637 | SW, 0 |
| 2638 | LFRMAT, JMS I LOOK /CHECK REST OF STATEMENT TYPE |
| 2639 | -2 /TWO CHARACTERS |
| 2640 | -1 /A |
| 2641 | -24 /T |
| 2642 | ISZ OSTOP |
| 2643 | TAD L74 |
| 2644 | DCA L10 |
| 2645 | DCA L76 |
| 2646 | JMS I PROP |
| 2647 | 6044 |
| 2648 | JMS I CREATE |
| 2649 | JMS I PRCRL |
| 2650 | JMS I PRINT |
| 2651 | JMS I GNB /READ UNTIL A PAREN IS GOTTEN |
| 2652 | TAD CM50 /SUBTRACT A ( |
| 2653 | SZA CLA /IS IT A ( |
| 2654 | ERR39, JMS I LUNCH /NO...ILLEGAL CHARACTER |
| 2655 | TAD C50 /GET A LEFT PAREN |
| 2656 | JMP PAREN /AND GO START COUNTING PARENS |
| 2657 | AGAIN, JMS I GTC |
| 2658 | SNA /IS IT A CR |
| 2659 | JMS I PUTCH |
| 2660 | PAREN, RTL CLL /SHIF CHAR LEFT |
| 2661 | RTL |
| 2662 | RTL |
| 2663 | DCA L32 /SAVE THE CHAR |
| 2664 | JMS I GTC |
| 2665 | SNA /IS IT A CR |
| 2666 | DCA OSTOP |
| 2667 | TAD L32 /PACK THE TWO CHARS (SOME DONE AT FRMTCK) |
| 2668 | JMP I FRMTCK /GO CHECK IF FORMAT STMT. TOO BIG |
| 2669 | FRMT, TAD OSTOP /GET BALANCED PAREN SWITCH |
| 2670 | SZA CLA /ARE THEY BALANCED |
| 2671 | JMP AGAIN /NO GET SOME MORE CHARS |
| 2672 | TAD L76 |
| 2673 | JMS I PIFF |
| 2674 | TAD L74 |
| 2675 | DCA L10 |
| 2676 | TAD L76 |
| 2677 | CIA |
| 2678 | DCA L76 |
| 2679 | JMS I ZZZ |
| 2680 | TAD I L10 |
| 2681 | JMS I PROTAC |
| 2682 | JMS I PRINT |
| 2683 | ISZ L76 |
| 2684 | JMP .-4 |
| 2685 | TAD L53 /PUNCH '<LABEL>,' |
| 2686 | JMS I CLAB |
| 2687 | JMS I PRINT |
| 2688 | JMP START |
| 2689 | GTC, LGTC |
| 2690 | PXSUBR, XXSUBR |
| 2691 | C50, 50 |
| 2692 | |
| 2693 | LPIFF, 0 /PUNCH 'IFF <N>' |
| 2694 | DCA LZZZ /ENTER WITH N IN THE AC |
| 2695 | JMS I PROP |
| 2696 | 6102 |
| 2697 | TAD LZZZ |
| 2698 | JMS I PROTAC |
| 2699 | JMS I PRINT |
| 2700 | JMP I LPIFF |
| 2701 | |
| 2702 | LZZZ, 0 /PUNCH THE CURRENT LABEL, IF ANY |
| 2703 | TAD L54 |
| 2704 | SNA /IS THERE A LABEL? |
| 2705 | JMP ZZZRET /NO |
| 2706 | JMS I PLAB /PUNCH '<LABEL>, ' |
| 2707 | TAD C7240 |
| 2708 | JMS I P2 |
| 2709 | ZZZRET, DCA I PXSUBR /MAKE SUBROUTINES AND FUNCTIONS ILLEGAL |
| 2710 | JMP I LZZZ |
| 2711 | FRMTCK, CKFRMT |
| 2712 | \f *4200 |
| 2713 | LTRIPL, 0 |
| 2714 | JMS I XZQL /FIRST CHECK IF A TRIPLE IS LEGAL HERE |
| 2715 | TAD L41 /GET PUSH LIST POINTER |
| 2716 | IAC /INCREMENT TO POINT TO OPERATOR |
| 2717 | DCA L42 /OPERATOR POINTER |
| 2718 | TAD L42 /GET IT AGAIN |
| 2719 | IAC /INCREMENT IT |
| 2720 | DCA L43 /OPERAND TWO POINTER |
| 2721 | TAD I L42 /GET OPERATOR |
| 2722 | AND C77 /MASK GARBAGE BITS |
| 2723 | TAD CM41 /SUBTRACT AN ADD INDIRECT OPERATOR |
| 2724 | SNA CLA /IS OPERATOR <DOLLAR> |
| 2725 | JMP I LADDIN /YES PROCESS IT |
| 2726 | TAD I L43 /NO...GET OPERAND TWO |
| 2727 | JMS I DUMARG /SEE IF ITS A DUMMY ARGUMENT |
| 2728 | SKP /YES IT IS |
| 2729 | JMP CK2 /NO ..CHECK THE OTHER ARGUMENT |
| 2730 | TAD I L42 /YES GET THE OPERATOR |
| 2731 | AND C77 /MASK GARBAGE BITS |
| 2732 | TAD EM75 /IS IT AN EQUALS SIGN |
| 2733 | SNA /IS OP C |
| 2734 | JMP LEQUIN /YES USE C* |
| 2735 | IAC /SEE IF ITS ALREADY EQUALS INDIRECT |
| 2736 | SZA CLA /IS OP C* |
| 2737 | JMS I LDUMTW /YES TWO IS DUMMY ARG |
| 2738 | CK2, CLA |
| 2739 | TAD I L41 /NO IS OPND ONE A SYMBOL |
| 2740 | JMS I DUMARG /SEE IF ITS A DUMMY ARGUMENT |
| 2741 | JMS I LDUMON /IT IS |
| 2742 | CLA CLL /NOW LETS SEE WHAT THE OPERATOR IS |
| 2743 | TAD I L42 /GET THE OPERATOR |
| 2744 | AND C77 /MASK OUT GARBAGE BITS |
| 2745 | TAD CM53 |
| 2746 | SNA /IS IT |
| 2747 | JMP I LAADD /YES |
| 2748 | IAC |
| 2749 | SNA /IS IT * |
| 2750 | JMP I LMUL /YES |
| 2751 | TAD CM3 |
| 2752 | SNA /IS IT - |
| 2753 | JMP I LASUB /YES |
| 2754 | TAD CM2 |
| 2755 | SNA /IS IT / |
| 2756 | JMP I LDIV /YES |
| 2757 | TAD CM16 |
| 2758 | SNA /IS IT C |
| 2759 | JMP I LEQU /YES |
| 2760 | IAC |
| 2761 | SNA /IS IT C* |
| 2762 | JMP I LEIND /YES |
| 2763 | TAD J27 |
| 2764 | SNA /IS IT ** |
| 2765 | JMP I LEXP /YES |
| 2766 | TAD C2 |
| 2767 | SNA /IS IT A UNARY MINUS |
| 2768 | JMP I LUMIN /YES |
| 2769 | ERR40, JMS I LUNCH /NO BETTER COP OUT |
| 2770 | LDMARG, 0 |
| 2771 | SMA /IS HIGH ORDER BIT ON |
| 2772 | JMP INC /NO...ITS NEITHER A SYMBOL OR A TRIPLE NUMBER |
| 2773 | RAL /GET NEXT BIT |
| 2774 | SMA /IS IT ON |
| 2775 | JMP MAYBE /NO...WE MIGHT HAVE A SUBSCRIPT THOUGH |
| 2776 | RAR /YES...RESTOR THE PARAMETER |
| 2777 | CIA /SET IT NEGATIVE |
| 2778 | TAD L47 /SUBTRACT IT FROMTHE START OF THE FCON TABLE |
| 2779 | SPA /IS THE RELULT POSITIVE |
| 2780 | JMP INC /NO...ITS AN FCON NOT A SYMBOL |
| 2781 | CIA /YESS...RESTORE ORIGINAL PARAMETER |
| 2782 | TAD L47 |
| 2783 | TAD C2 /YES MOVE POINTER TO CONTROL BITS |
| 2784 | DCA L23 /SAVE |
| 2785 | TAD I L23 /GET THE CONTROL BITS |
| 2786 | AND C10 /MASK ALL BUT DUMMY ARG BIT OUT |
| 2787 | INC1, SNA CLA /IS THIS SYMBOL. A DUMMY ARG |
| 2788 | INC, ISZ LDMARG /NO...INCREMENT THE RETURN |
| 2789 | CLA /CLEAR THE ACCUMULATOR |
| 2790 | JMP I LDMARG /AND RETURN |
| 2791 | MAYBE, AND F400 /MASK THE SUBSCRIPT BIT OF THE TRIPLE NUMBER |
| 2792 | JMP INC1 /AND CHECK BECAUSE WE TREAT SUBSCS AS DUMMY ARG |
| 2793 | ARET, JMP I LTRIPL /THIS IS THE RETURN FROM TRIPLE |
| 2794 | |
| 2795 | LEQUIN, TAD C74 |
| 2796 | DCA I L42 /SET OP TO =* |
| 2797 | JMP CK2 |
| 2798 | C74, 74 |
| 2799 | / |
| 2800 | / THIS ROUTINE CHECKS THE REST OF THE CHARS FOR A STATEMENT |
| 2801 | LLOOK, 0 |
| 2802 | JMS GLOOK /GET CHARACTER COUNT |
| 2803 | DCA LTRIPL |
| 2804 | ABACK, JMS I GNB |
| 2805 | JMS GLOOK /ADD IN THE TEST CHAR |
| 2806 | SZA CLA /WERE THEY EQUAL |
| 2807 | JMP I ASSIGN /NO...IT MUST BE AN ASSIGNMENT STATEMENT |
| 2808 | ISZ LTRIPL /THEY MATCH...ARE WE DONE |
| 2809 | JMP ABACK /NO |
| 2810 | JMP I LLOOK /RETURN |
| 2811 | |
| 2812 | GLOOK, 0 |
| 2813 | CDF 10 |
| 2814 | TAD I LLOOK |
| 2815 | ISZ LLOOK |
| 2816 | CDF 00 |
| 2817 | JMP I GLOOK |
| 2818 | / |
| 2819 | LAADD, AADD |
| 2820 | LADDIN, ADDIND |
| 2821 | LASUB, ASUB |
| 2822 | LEQU, EQU |
| 2823 | LEIND, EIND |
| 2824 | LEXP, EXP |
| 2825 | LUMIN, UMIN |
| 2826 | CM41, -41 |
| 2827 | EM75, -75 |
| 2828 | LDUMTW, DUMTWO |
| 2829 | CM16, -16 |
| 2830 | C10, 10 |
| 2831 | F400, 400 |
| 2832 | LDUMON, DUMONE |
| 2833 | CM53, -53 |
| 2834 | LMUL, MUL |
| 2835 | LDIV, DIV |
| 2836 | XZQL, LXZQ |
| 2837 | J27, 27 |
| 2838 | |
| 2839 | CKFND, TAD L42 /SEE IF POINTER IS INTO SYMB. TABLE |
| 2840 | TAD K2000 /(IT HAS HAPPENED!) |
| 2841 | SZA CLA |
| 2842 | JMP I CKFNCP |
| 2843 | JMP I .+1 /YES-ERROR |
| 2844 | ERR39 |
| 2845 | CKFNCP, CKFNCT |
| 2846 | K2000, 2000 |
| 2847 | \f *4400 |
| 2848 | / FIGURE OUT WHATS IN AC |
| 2849 | LCHECK, 0 |
| 2850 | TAD L46 /GET WHATS IN THE AC |
| 2851 | CIA /SET NEGATIVE |
| 2852 | TAD I L41 /SUBTRACT |
| 2853 | SNA CLA /ARE THEY EQUAL |
| 2854 | JMP ONE /YES |
| 2855 | TAD L46 /GET AC AGAIN |
| 2856 | CIA /SET NEGATIVE |
| 2857 | TAD I L43 /SUBTRACT TWO |
| 2858 | SNA CLA /ARE THEY EQUAL |
| 2859 | JMP TWO /YES |
| 2860 | TAD L46 /GET THE AC |
| 2861 | SNA CLA /IS IT ZERO |
| 2862 | JMP NONE /NO YES YES YES |
| 2863 | JMP SOME /JUST SIMETHING IN AC |
| 2864 | ONE, ISZ LCHECK |
| 2865 | NONE, ISZ LCHECK |
| 2866 | SOME, ISZ LCHECK |
| 2867 | TWO, JMP I LCHECK |
| 2868 | |
| 2869 | / FINDS TEMPORARY THAT TRIPLE NUMBER IS ASSIGNED TO |
| 2870 | |
| 2871 | LTMPOR, 0 |
| 2872 | DCA LFPROP /SAVE TRIPLE NUMBER |
| 2873 | TAD LFPROP |
| 2874 | JMS I MODE /DETERMINE ITS MODE |
| 2875 | TAD C30 /FLOATING POINT |
| 2876 | TAD TTAB /INTEGER |
| 2877 | DCA LCHECK |
| 2878 | TAD CM30 |
| 2879 | DCA FOP /SET UP COUNT FOR SEARCH |
| 2880 | LTLP1, TAD I LCHECK |
| 2881 | CIA |
| 2882 | TAD LFPROP |
| 2883 | SNA CLA /IS THIS THE ONE? |
| 2884 | JMP ZEROIT /YES - ZERO IT OUT AND RETURN IT |
| 2885 | ISZ LCHECK |
| 2886 | ISZ FOP |
| 2887 | JMP LTLP1 /LOOP OVER ENTIRE TABLE |
| 2888 | TAD LCHECK /NOT FOUND - WE HAVE TO ASSIGN IT |
| 2889 | TAD CM30 |
| 2890 | DCA LCHECK /RESET POINTERS FOR ZERO SEARCH |
| 2891 | TAD CM30 |
| 2892 | DCA FOP |
| 2893 | LTLP2, TAD I LCHECK |
| 2894 | SNA CLA /IS THIS TEMPORARY FREE? |
| 2895 | JMP TEMPTY /YES |
| 2896 | ISZ LCHECK |
| 2897 | ISZ FOP |
| 2898 | JMP LTLP2 /CHECK THEM ALL |
| 2899 | ERR41, JMS I LUNCH /OUT OF TEMPORARIES |
| 2900 | TEMPTY, TAD LCHECK |
| 2901 | CIA |
| 2902 | TAD L45 |
| 2903 | SNA CLA /ADJUST THE NUMBER OF FLOATING POINT TEMPS |
| 2904 | ISZ L45 |
| 2905 | TAD LCHECK |
| 2906 | CIA |
| 2907 | TAD L51 |
| 2908 | SNA CLA /ADJUST THE NUMBER OF INTEGER TEMPS |
| 2909 | ISZ L51 |
| 2910 | TAD LFPROP /STORE TRIPLE NUMBER IN THIS TEMPORARY SLOT |
| 2911 | ZEROIT, DCA I LCHECK |
| 2912 | TAD FOP |
| 2913 | TAD C31 /GET POSITIVE NUMBER FROM TABLE COUNTER |
| 2914 | JMP I LTMPOR /RETURN |
| 2915 | C31, 31 |
| 2916 | |
| 2917 | LFPROP, 0 /THIS ROUTINE PUNCHES SUBROUTINE CALLS |
| 2918 | DCA FOP /SAVE THE NUMBER OF ARGUMENTS |
| 2919 | JMS I PROP |
| 2920 | 6113 /PUT OUT THE CALL |
| 2921 | TAD FOP /GET THE NUMBER OF ARGUMENTS |
| 2922 | JMS I PROTAC /PRINT IT |
| 2923 | TAD C54 /GET A COMMA |
| 2924 | JMS I PRINT /PRINT IT |
| 2925 | CDF 10 |
| 2926 | TAD I LFPROP |
| 2927 | CDF 00 |
| 2928 | JMS I PRSYM |
| 2929 | JMS I PRINT |
| 2930 | ISZ LFPROP /INCREMENT RETURN |
| 2931 | JMP I LFPROP /RETURN |
| 2932 | FOP, 0 |
| 2933 | / COME HERE IF OP IS - |
| 2934 | ASUB, JMS I SMODE /MAKE SURE THAT BOTH ARGS ARE OF SAME MODE |
| 2935 | TAD I L43 /GET OPERAND TWO |
| 2936 | JMS I MODE |
| 2937 | JMP FSUB /ITS FLOATING POINT |
| 2938 | JMS LCHECK /ITS INTEGER...CHECK WHATS IN THE AC |
| 2939 | JMP STWO /TWO IS IN THE AC |
| 2940 | JMS I STORE /SMETHING IS IN THE AC |
| 2941 | JMS I LADDON /NOTHING IS IN THE AC...ADD ONE TO IT |
| 2942 | ASBCMN, JMS I LCOMP /ONE IS IN AC...COMPLEMENT IT |
| 2943 | JMS I LADDTW /ADD TWO TO IT |
| 2944 | JMP I LRETUR /AND RETURN |
| 2945 | STWO, JMS I LCOMP /TWO IS IN AC...COMPLEMENT IT |
| 2946 | JMS I LADDON /ADD ONE TO IT |
| 2947 | JMS I LCOMP /AND COMPLEMENT IT AGAIN |
| 2948 | JMP I LRETUR /AND RETURN |
| 2949 | FSUB, JMS LCHECK /FLOATING POINT...CHECK THE AC |
| 2950 | JMP FS /TWO IS IN AC |
| 2951 | JMS I STORE /SOMETHING IN AC...STORE IT |
| 2952 | JMP FAS /NOTHING IN AC |
| 2953 | JMP ASBCMN /ONE IS IN AC - COMPLEMENT AND ADD TWO |
| 2954 | FAS, JMS I LADDTW /NOTHING IN AC...ADD TWO IN |
| 2955 | FS, IAC /WE HAVE ONE ARG |
| 2956 | JMS I FPROP |
| 2957 | 6011 |
| 2958 | JMS I ARG /PUT OUT THE ARG PSEUDO OP |
| 2959 | TAD I L41 /GET ARGUMENT ONE |
| 2960 | IRET, JMS I PRSYM /AND PUT IT OUT |
| 2961 | JMS I PRINT /PUT OUT CRLF |
| 2962 | JMP I LRETUR |
| 2963 | TTAB, ITTAB /THIS IS THE STARTING ADDRESS OF THE TEMP TABLE |
| 2964 | LCOMP, COMP |
| 2965 | LADDON, ADDONE |
| 2966 | C30, 30 |
| 2967 | CM30, -30 |
| 2968 | LRETUR, RETURN |
| 2969 | LADDTW, ADDTWO |
| 2970 | |
| 2971 | /CHECK SIZE OF FORMAT STMT. |
| 2972 | / |
| 2973 | CKFRMT, DCA I L10 /CONTINUE PACK ROUTINE |
| 2974 | ISZ L76 |
| 2975 | TAD L76 |
| 2976 | TAD M174 /IS IT TOO BIG |
| 2977 | SMA CLA |
| 2978 | JMP I ILCON /YES-GIVE IT ILLEGAL CONT. MESSAGE |
| 2979 | JMP I LFRMT /NO-GO BACK |
| 2980 | LFRMT, FRMT |
| 2981 | M174, -174 |
| 2982 | ILCON, ERR1 /ILLEGAL CONTINUATION MESSAGE |
| 2983 | \f *4600 |
| 2984 | / PROCESS * |
| 2985 | ADDIND, JMS I CHECK /CHECK WHATS IN THE AC |
| 2986 | NOP /TWO IS IN AC |
| 2987 | SKP /N SOMETHING IS IN AC |
| 2988 | SKP /NOTHING IS IN AC |
| 2989 | JMS I STORE /STORE WHATEVER IS IN AC |
| 2990 | TAD I L41 /GET OPERAND ONE |
| 2991 | JMS I MODE /WHAT MODE IS IT |
| 2992 | JMP FLOT /YES IT FLOATING POINT |
| 2993 | JMS I PROP /IST INTEGER... |
| 2994 | 6063 /PUT OUT A TAD* |
| 2995 | LOOP6, TAD I L41 /GET THE FIRST OPERAND AGAIN |
| 2996 | JMP I LIRET /GO TO THE RETURN ROUTINE |
| 2997 | FLOT, IAC /WE ONLY HAVE ONE ARG |
| 2998 | JMS I FPROP /PUT OUT A CALL TO A FLOATING POINT ROUTINE |
| 2999 | 6132 /PUT OUT A CALL TO FLOATING INDIRECT ADD |
| 3000 | JMS I ARG /PUT OUT THE ARG PSEUDO OP |
| 3001 | JMP LOOP6 /AND JUMP BACK |
| 3002 | / THIS PUTS OUT OPCODES FOR AN ADD |
| 3003 | ADDL, 0 |
| 3004 | CLL RAR |
| 3005 | SNA /TEST FOR 0 OR 1 |
| 3006 | JMP ADSPCL |
| 3007 | RAL /NOT 0 OR 1, TREAT NORMALLY |
| 3008 | JMS I MODE /WHAT MODE ARE WE IN |
| 3009 | JMP LOOP7 /YES |
| 3010 | JMS I PROP /PUT OUT A TAD |
| 3011 | 6066 |
| 3012 | JMP I ADDL /RETURN |
| 3013 | LOOP7, IAC /WE ONLY HAVE ONE ARGUMENT |
| 3014 | JMS I FPROP /PUT OUT A CALL TO A FLOATING POINT ROUTINE |
| 3015 | 6003 /PUT OUT A FLOATING ADD |
| 3016 | JMS I ARG /PUT OUT THE ARG PSEUDO OP |
| 3017 | JMP I ADDL /AND RETURN |
| 3018 | ADSPCL, ISZ ADDL |
| 3019 | ISZ ADDL /BUMP RETURN POINT PAST ARGUMENT TO "TAD" |
| 3020 | SNL /0? |
| 3021 | JMP I ADDL /YUP - DON'T PUT OUT NUTTIN |
| 3022 | JMS I PROP |
| 3023 | OPIAC /PUT OUT "IAC" |
| 3024 | JMP I ADDL |
| 3025 | |
| 3026 | / STORES CONTENTS OF AC IN TEMPORARY |
| 3027 | / PUT OUT DCA OR CALL STO |
| 3028 | / FOLLOWED BY THE TEMPORARY LOC |
| 3029 | LSTORE, 0 |
| 3030 | TAD L46 /GET THE AC |
| 3031 | JMS I MODE /WHAT MODE IS IT |
| 3032 | JMP FSTO /ITS FLOATING POINT |
| 3033 | JMS I PROP |
| 3034 | 6071 /ITS INTEGER...PUT OUT A DCA |
| 3035 | STORET, TAD L46 /GET THE AC AGAIN |
| 3036 | JMS I PRSYM /PRINT WHATEVER IS IN IT |
| 3037 | JMS I PRINT /PUT OUT A CRLF |
| 3038 | DCA L46 /ZERO THE AC |
| 3039 | JMP I LSTORE /AND RETURN |
| 3040 | FSTO, IAC /WE ONLY HAVE ONE ARG |
| 3041 | JMS I FPROP /PUT OUT A CALL TO A FLOATING POINT ROUTINE |
| 3042 | 6006 /PUT OUT A CALL TOFLOATING STORE |
| 3043 | JMS I ARG /PUT OUT THE ARG PSEUDO OP |
| 3044 | JMP STORET /AND JMP BACK |
| 3045 | COMP, 0 |
| 3046 | TAD L46 /GET THE AC |
| 3047 | JMS I MODE /WHAT MODE IS IT |
| 3048 | JMP FCOM /ITS FLOATING POINT |
| 3049 | JMS I PROP /ITS INYTEGER |
| 3050 | 6135 /PUT OUT A CIA |
| 3051 | JMS I PRINT /PUT OUT A CRLF |
| 3052 | JMP I COMP /AND RETURN |
| 3053 | FCOM, JMS I FPROP |
| 3054 | 6140 /TO FLOATING CHANGE SIGN |
| 3055 | JMP I COMP |
| 3056 | / COME HERE IF OP IS * |
| 3057 | MUL, JMS I SMODE /CHECK FOR SAME MODE |
| 3058 | JMS I CHECK /CHECK WHATS IN THE AC |
| 3059 | JMP TMUL /TWO IS IN THE AC |
| 3060 | JMS I STORE /SOMETHING IS IN AC...STORE IT |
| 3061 | JMS I KADDON /NOTHING IS IN AC..GET ONE IN AC |
| 3062 | AMUL, TAD I L43 /GET OPERND TWO |
| 3063 | JMS I MODE /WHAT MODE IS IT |
| 3064 | TAD EM6 |
| 3065 | TAD C6022 |
| 3066 | DCA FML /SAVE OPCODE |
| 3067 | IAC |
| 3068 | JMS I FPROP /PUT OUT A CALL TO A FLOATING POINT ROUTINE |
| 3069 | FML, 0 |
| 3070 | JMS I ARG /PUT OUT THE ARG PSEUDO OP |
| 3071 | TAD I L43 /GET OPERAND TWO |
| 3072 | JMP I LIRET /AND GO TO THE RETURN ROUTINE |
| 3073 | TMUL, TAD I L41 /GET OPERAND ONE AND REPLACE OPERAND TWO |
| 3074 | DCA I L43 |
| 3075 | JMP AMUL /AND JUMP BACK |
| 3076 | KADDON, ADDONE |
| 3077 | LIRET, IRET |
| 3078 | EM6, -6 |
| 3079 | C6022, 6022 |
| 3080 | |
| 3081 | LSUB, JMS I LOOK /CHECK REST OF STATEMENT |
| 3082 | -6 / |
| 3083 | -17 /O |
| 3084 | -25 /U |
| 3085 | -24 /T |
| 3086 | -11 /I |
| 3087 | -16 /N |
| 3088 | -5 /E |
| 3089 | JMP I .+1 |
| 3090 | TART |
| 3091 | |
| 3092 | LCLEAR, 0 /CLEAR THE PSEUDO ACC AND MQ |
| 3093 | DCA L30 |
| 3094 | DCA L31 |
| 3095 | DCA L32 |
| 3096 | DCA L33 |
| 3097 | DCA L34 |
| 3098 | DCA L35 |
| 3099 | JMP I LCLEAR |
| 3100 | *5000 |
| 3101 | / THIS ROUTINE TAKES CARE OF TWO BEING DUMMY ARG |
| 3102 | DUMTWO, 0 |
| 3103 | TAD I L41 /GET OPND ONE |
| 3104 | DCA FDV /AND SAVE |
| 3105 | TAD I L43 /GET OPND TWO |
| 3106 | DCA I L41 /ZERO OPND ONE |
| 3107 | JMS DUMONE /PROCESS DUMMY ARGUMENT |
| 3108 | TAD FDV /GET SAVED OPERAND |
| 3109 | DCA I L41 /AND USE AS OPERAND |
| 3110 | TAD L46 /GET TRIPLE NUMBER |
| 3111 | DCA I L43 /AND REPLACE |
| 3112 | JMP I DUMTWO /RETURN |
| 3113 | / TAKES CARE OF ONE BIING DUMMY ARG |
| 3114 | DUMONE, 0 |
| 3115 | TAD I L42 /GET OPERATOR |
| 3116 | DCA ASTOP /AND SAVE |
| 3117 | TAD E41 /GET ADD INDIRECT OPERATOR |
| 3118 | DCA I L42 /AND REPLACE OPERATOR |
| 3119 | CDF 10 |
| 3120 | TAD I TRIPL |
| 3121 | CDF 00 |
| 3122 | DCA FEX /AND SAVE RETURN |
| 3123 | JMS I TRIPL /CALL TRIPL |
| 3124 | TAD L46 /GET TRIPLE NUMBER |
| 3125 | DCA I L41 /AND REPLACE OPERAND |
| 3126 | TAD ASTOP /RESTORE OPERATOR |
| 3127 | DCA I L42 |
| 3128 | ISZ L40 /ADVANCE TRIPLE |
| 3129 | TAD FEX /RESTORE RETURN |
| 3130 | CDF 10 |
| 3131 | DCA I TRIPL |
| 3132 | CDF 00 |
| 3133 | JMP I DUMONE /RETURN |
| 3134 | / COME HERE IF OP IS / |
| 3135 | DIV, JMS I SMODE /CHECK FOR SAME MODE |
| 3136 | JMS I CHECK /CHECK WHATS IN THE AC |
| 3137 | JMP DIVE /TWO IS IN AC |
| 3138 | \f JMS I STORE /THERES SOMETHING IN THE AC...STORE IT |
| 3139 | SKP /NOTHING IS IN AC |
| 3140 | JMS I STORE /THERES SOMETHING IN THE AC...STORE IT |
| 3141 | JMS I MADDTW /GET TWO INTO THE AC |
| 3142 | DIVE, TAD I L41 /GET OPERAND ONE |
| 3143 | JMS I MODE /WHAT MODE IS IT |
| 3144 | TAD FM6 |
| 3145 | TAD C6025 |
| 3146 | DCA FDV /SAVE OERATOR |
| 3147 | IAC |
| 3148 | JMS I FPROP /PUT OUT A CALL TO A FLOATING POINT ROUTINE |
| 3149 | FDV, 0 |
| 3150 | JMS I ARG /PUT OUT THE ARG PSEUDO OP |
| 3151 | TAD I L41 /GET OPERAND ONE |
| 3152 | JMP I MIRET /JUMP TO RETURN ROUTINE |
| 3153 | / COME HERE IF OP IS ** |
| 3154 | EXP, JMS I CHECK /CHECK WHATS IN THE AC |
| 3155 | JMP FEXP /TWO IS IN AC |
| 3156 | JMS I STORE /THERES SOMETHING IN THE AC...STORE IT |
| 3157 | SKP /NOW NOTHING IS IN AC |
| 3158 | JMS I STORE /THERES SOMETHING IN THE AC...STORE IT |
| 3159 | JMS I MADDTW /GET TWO IN AC |
| 3160 | FEXP, TAD I L41 |
| 3161 | JMS I MODE |
| 3162 | TAD C6 |
| 3163 | DCA FDV |
| 3164 | TAD I L43 /GET OPERAND TWO |
| 3165 | JMS I MODE /WHAT IS ITS MODE |
| 3166 | TAD C3 /FLOATING POINT |
| 3167 | TAD C6207 /INTEGER |
| 3168 | TAD FDV |
| 3169 | DCA FEX /SAVE REOUTINE POINTER |
| 3170 | IAC |
| 3171 | JMS I FPROP /PUT OUT A CALL TO A FLOATING POINT ROUTINE |
| 3172 | FEX, 0 |
| 3173 | TAD I L41 /GET OPERAND ONE |
| 3174 | DCA I L43 /SAVE IN OPERAND TWO |
| 3175 | TAD FEX /GET THE OP CODE JUST PUT OUT |
| 3176 | TAD CM6207 /SUBTRACT THE INTEGER TO INTEGER CASE |
| 3177 | SZA CLA /WAS THIS THE INTEGER INTEGER CASE |
| 3178 | TAD L50 /NO, GET A FLOATING POINT POINTER |
| 3179 | DCA I L41 /AND SUBSTITUTE IT FOR OPERAND ONE |
| 3180 | JMS I ARG /PUT OUT THE PSEUDO OP ARG |
| 3181 | \f TAD I L43 /GET THE REAL OPERAND ONE IN THE AC |
| 3182 | JMP I MIRET /JUMP TO THE RETURN ROUTINE |
| 3183 | /COMES HERE IF THE VARIABLE TO THE LEFT OF THE '=' IS SUBSCRIPTED |
| 3184 | EIND, TAD C132 /GET AN ASTERISK |
| 3185 | DCA L60 /PUT IT IN SIXTY |
| 3186 | /COMES HERE IF THE OPERATOR IS AN '=' |
| 3187 | EQU, JMS I CHECK /CHECK WHATS IN THE AC |
| 3188 | NOP /TWO IS IN THE AC |
| 3189 | JMS I STORE /THERES SOMETHING IN THE AC...STORE IT |
| 3190 | JMS I TADDON /NOTHING IS IN AC...ADD ONE TO IT |
| 3191 | TAD I L43 /GET OPERA ND TWO |
| 3192 | JMS I MODE /WHAT IS ITS MODE |
| 3193 | JMP FEQU /ITS FLOATING POINT |
| 3194 | TAD L46 /GET THE AC |
| 3195 | JMS I MODE /WHAT MODE IS IT |
| 3196 | JMP I LFIX /ITS FLOATING POINT |
| 3197 | EFIX, TAD L60 /GET EQUALS INDIRECT LOCATION |
| 3198 | TAD C6071 /ADD A DCA |
| 3199 | DCA ASTOP /AND SAVE OPCODE |
| 3200 | JMS I PROP /POT OUT THE OPCODE |
| 3201 | ASTOP, 3 |
| 3202 | EQRET, DCA L46 /ZERO THE AC |
| 3203 | TAD I L43 /GET OPERAND TWO |
| 3204 | JMS I PRSYM /PRINT IT |
| 3205 | JMS I PRINT /PUT OUT A CRLF |
| 3206 | DCA L60 /ZERO SIXTY |
| 3207 | JMP I .+1 /AND RETURN |
| 3208 | ARET |
| 3209 | FEQU, TAD L46 /GET THE AC |
| 3210 | JMS I MODE /WHAT MODE IS IT |
| 3211 | SKP /ITS FLOATING POINT |
| 3212 | JMS I LFLOAT /ITS INTEGER...FLOAT IT |
| 3213 | JMP I .+1 |
| 3214 | XXX |
| 3215 | |
| 3216 | LARG, 0 |
| 3217 | JMS I PROP |
| 3218 | 6201 |
| 3219 | JMP I LARG |
| 3220 | |
| 3221 | TADDON, ADDONE |
| 3222 | E41, 41 |
| 3223 | MADDTW, ADDTWO |
| 3224 | FM6, -6 |
| 3225 | C6025, 6025 |
| 3226 | MIRET, IRET |
| 3227 | C6, 6 |
| 3228 | C6207, 6207 |
| 3229 | LFIX, FIX |
| 3230 | C6071, 6071 |
| 3231 | LFLOAT, FLOAT |
| 3232 | CM6207, -6207 |
| 3233 | C132, 132 |
| 3234 | \f *5200 |
| 3235 | XXX, TAD L60 /GET THE INDIRECT EQUALS SWITCH |
| 3236 | SNA CLA /IS THE SWITCH ON |
| 3237 | TAD CM140 /NO, FLOATING POINT STORE |
| 3238 | TAD C6146 /YES...ISTO |
| 3239 | DCA FSTOP /SAVE OPCODE |
| 3240 | IAC /WE ONLY HAVE ONE ARG |
| 3241 | JMS I FPROP /PUT OUT A CALL TO A FLOATING POINT ROUTINE |
| 3242 | FSTOP, 6146 |
| 3243 | JMS I ARG /PUT OUT THE ARG PSEUDO OP |
| 3244 | JMP I .+1 /JUMP BACK |
| 3245 | EQRET |
| 3246 | / THIS ADDS OPERAND ONE TO THE AC |
| 3247 | ADDONE, 0 |
| 3248 | TAD I L41 /GET OPERAND ONE |
| 3249 | JMS I LADDL /PUT OUT OPCODES FOR AN ADD |
| 3250 | TAD I L41 /GET FIRST OPERAND |
| 3251 | JMS I PRSYM /PUT OUT SYMBOL |
| 3252 | JMS I PRINT /PUT OUT CR LF |
| 3253 | TAD I L41 /GET OPERAND ONE |
| 3254 | DCA L46 /PUTN THE AC |
| 3255 | JMP I ADDONE /RETURN |
| 3256 | UMIN, JMS I CHECK /CHECK WHATSN THE AC |
| 3257 | NOP /TWOSN AC |
| 3258 | JMS I STORE /THERES SOMETHINGN THE AC...STORET |
| 3259 | JMS ADDONE /NOTHINGSN AC NOW...PUT ONEN AC |
| 3260 | JMS I MCOMP /AND COMPLEMENTT |
| 3261 | JMP RETURN /AND RETURN |
| 3262 | AADD, JMS I SMODE |
| 3263 | JMS I CHECK /CHECK WHATSN THE AC |
| 3264 | JMP AONE /TWOSN AC |
| 3265 | JMS I STORE /THERES SOMETHINGN THE AC...STORET |
| 3266 | JMS ADDONE /GET ONEN AC |
| 3267 | JMS ADDTWO /ONESN AC |
| 3268 | JMP RETURN /RETURN |
| 3269 | AONE, JMS ADDONE /ADD ONE TO TWO |
| 3270 | JMP RETURN /AND RETURN |
| 3271 | LPROP, 0 |
| 3272 | CDF 10 |
| 3273 | TAD I LPROP |
| 3274 | CDF 00 |
| 3275 | JMS I PRSYM /AND PRINT THE SYMBOL |
| 3276 | TAD C40 /GET A SPACE |
| 3277 | JMS I PRINT /PUT OUT |
| 3278 | ISZ LPROP /INCREMENT RETURN |
| 3279 | JMP I LPROP /AND RETURN |
| 3280 | / THIS ADDS OPERAND TWO TO THE AC |
| 3281 | ADDTWO, 0 |
| 3282 | TAD I L43 /GET OPERAND TWO |
| 3283 | JMS I LADDL /PUT OUT OPCODES FOR AN ADD |
| 3284 | TAD I L43 /GET SECOND OPERAND |
| 3285 | JMS I PRSYM /PRINT THE SYMBOL |
| 3286 | JMS I PRINT /PUT OUT CR LF |
| 3287 | TAD I L43 /GET OPERAND TWO |
| 3288 | DCA L46 /AND PUTN AC |
| 3289 | JMP I ADDTWO /RETURN |
| 3290 | LXZQ, 0 /CHECK FOR EXPRESSION LEFT OF = |
| 3291 | CLA |
| 3292 | TAD L22 /GET SUBSCRIPT NESTING DEPTH |
| 3293 | TAD L44 /GET EQUALS SIGN SWITCH |
| 3294 | SNA CLA /ARE THEY BOTH ZERO |
| 3295 | ERR42, JMS I LUNCH /N YES ...THATS AN ERROR |
| 3296 | JMP I LXZQ /RETURN |
| 3297 | RETURN, TAD I L41 /THISS THE RETURN...GET OPERAND ONE |
| 3298 | JMS I MODE /WHAT MODEST |
| 3299 | TAD G400 /ITS FLOATING POINT...TURN F.P. BIT ON |
| 3300 | TAD L40 /ADD CURRENT TRIPLE NUMBER |
| 3301 | DCA L46 /PUTN AC SW |
| 3302 | JMP I NARET /AND NOW RETURN FROM THE ROUTINE |
| 3303 | FLOAT, 0 |
| 3304 | JMS I FPROP /PUT OUT A CAL TO THE FLOAT ROUTINE |
| 3305 | 6127 |
| 3306 | JMP I FLOAT /AND RETURN |
| 3307 | FIX, JMS I FPROP /PUT OUT A CAL |
| 3308 | 6143 /TO THE FIX ROUTINE |
| 3309 | JMP I .+1 /AND JUMP BACKLADDL, ADDL |
| 3310 | EFIX |
| 3311 | C6146, 6146 |
| 3312 | LADDL, ADDL |
| 3313 | MCOMP, COMP |
| 3314 | G400, 400 |
| 3315 | NARET, ARET |
| 3316 | LSMODE, 0 |
| 3317 | TAD I L43 /GET FIRST OPERAND |
| 3318 | JMS I MODE /FIND WHAT ITS MODE IS |
| 3319 | JMP IBM /ITS FLOATING POINT |
| 3320 | TAD I L41 /GET OPERAND TWO |
| 3321 | JMS I MODE /THIS BETTER BE INTEGER TOO |
| 3322 | JMP .+5 /ITS NOT, LUNCH |
| 3323 | JMP I LSMODE /GREAT, RETURN |
| 3324 | IBM, TAD I L41 /GET OPERAND TWO |
| 3325 | JMS I MODE /THIS BETTER BE F.P. TOO |
| 3326 | JMP I LSMODE /IT IS RETURN |
| 3327 | ERR43, JMS I LUNCH /ERROR |
| 3328 | LPUNCH, 0 |
| 3329 | PSF /IS PUNCH READY |
| 3330 | JMP .-1 /NO, TRY AGAIN |
| 3331 | PLS /YES, PUNCH THE CHARACTER |
| 3332 | CLA /CLEAR THE ACCUMULATOR |
| 3333 | JMP I LPUNCH /AND RETURN |
| 3334 | CM140, -140 |
| 3335 | |
| 3336 | LFINI, 0 /FINAL CLEANUP AT END OF COMPILATION |
| 3337 | JMS I FPROP /PUNCH 'CALL 0,OPEN' |
| 3338 | OPEN |
| 3339 | JMS I PROP /PUNCH A 'PAUSE' |
| 3340 | 6060 |
| 3341 | JMS I PRINT |
| 3342 | JMS I PRINT /FORCE LAST LINE OUT |
| 3343 | TAD CM100 |
| 3344 | JMS I LEADR /PUNCH SOME LEADER |
| 3345 | CDF 10 |
| 3346 | XFINI, HLT /JMP I LFINI, FOR DISK SYSTEM ... |
| 3347 | CIF 0 |
| 3348 | JMP I D1000 /BEGIN NEXT COMPILATION |
| 3349 | D1000, 1000 |
| 3350 | CM100, -100 |
| 3351 | LEADR, LLEAD |
| 3352 | |
| 3353 | FORST, JMS I PRINT /FORTRAN STARTING POINT |
| 3354 | JMS I (LIST |
| 3355 | DCA .-1 |
| 3356 | TAD (LPUNCH |
| 3357 | DCA PUNCH |
| 3358 | TAD CM50 |
| 3359 | JMS I LEADR |
| 3360 | JMS I PROP |
| 3361 | FORTR |
| 3362 | JMS I PRINT |
| 3363 | JMP I .+1 |
| 3364 | START1 |
| 3365 | |
| 3366 | PAGE |
| 3367 | \f *5400 |
| 3368 | LLAST, TAD C4000 /END OF COMPILATION, SET CHK SO THAT |
| 3369 | DCA CHK /LGTC WILL NOT READ ANOTHER LINE... |
| 3370 | JMS I GNB |
| 3371 | SZA |
| 3372 | JMP I ASSIGN |
| 3373 | JMS I (OSTOP /PUNCH A 'HLT' ETC. |
| 3374 | TAD L55 |
| 3375 | TAD C25 |
| 3376 | SZA CLA /IS DO LIST EMPTY? |
| 3377 | ERR44, JMS I LUNCH /NO, COMPLAIN... |
| 3378 | MORDUM, TAD L56 /GET POINTER INTO SYMBOL TABLE |
| 3379 | TAD C2 /ADD TWO TO IT FOR CONTROL BITS |
| 3380 | DCA L72 /SAVE ADDRESS OF CONTROL BITS |
| 3381 | TAD I L72 /GET THE CONTROL BITS |
| 3382 | AND E10 /MASK ALL BUT THE DUMMY ARG BIT |
| 3383 | SNA CLA /IS THE DUMMY ARG BIT ON |
| 3384 | JMP LEDOUT /NO, PUT OUT DUMMY SUBSCRIPT DEFNS |
| 3385 | JMS I DEFN /YES, PUT OUT THE VARIABLE NAME |
| 3386 | JMS I PROP /PUT OUT THE OP CODE |
| 3387 | 6154 /WHICH IS BSS |
| 3388 | TAD C2 /RESERVE TWO LOCATIONS |
| 3389 | JMS I PROTAC /PRINT THE TWO |
| 3390 | JMS I PRINT |
| 3391 | ISZ L56 /ADVANCE THE POINTER |
| 3392 | ISZ L56 |
| 3393 | ISZ L56 |
| 3394 | JMP MORDUM /GO BACK AND DO THE NEXT ONE |
| 3395 | LEDOUT, DCA L72 /ZERO LOCATION 72 |
| 3396 | LEDOT1, TAD L25 /GET THE NUMBER OF SUBSCRIPT TEMPS |
| 3397 | CMA |
| 3398 | TAD L72 /SUBTRACT FROM THE NUMBER WEVE DEFINED |
| 3399 | SNA CLA /HAVE WE DEFINED THEM ALL YET |
| 3400 | JMP GOOON /YES, NOW PUT OUT THE END |
| 3401 | TAD K5200 /GET SUBSCRIPT DESIGNATOR |
| 3402 | TAD L72 /GET WHICH SUBSCRIPT |
| 3403 | JMS I PRSYM /AND PRINT IT |
| 3404 | TAD C7240 /GET THE TERMINATOR |
| 3405 | JMS I P2 /PRINT IT |
| 3406 | JMS I PROP /PRINT THE OP CODE |
| 3407 | 6154 /WHICH IS BSS |
| 3408 | TAD C2 /RESERVE TWO LOCATIONS |
| 3409 | JMS I PROTAC |
| 3410 | JMS I PRINT /CRLF |
| 3411 | ISZ L72 /GO ON TO THE NEXT ONE |
| 3412 | JMP LEDOT1 |
| 3413 | GOOON, JMS I PROP |
| 3414 | 6157 /PUT OUT AN END |
| 3415 | JMS I PRINT /PUT OUT A CRLF |
| 3416 | DCA L65 /ZERO THE PSEUDO LOCATION COUNTER |
| 3417 | TAD START /CLA = -600 |
| 3418 | JMS I LEAD /PUT OUT LOTS OF LEADER CODE |
| 3419 | JMS I PROP |
| 3420 | 6162 /PUT OUT A LAP |
| 3421 | JMS I PRINT |
| 3422 | SYM, TAD L57 |
| 3423 | CIA |
| 3424 | TAD L56 |
| 3425 | SZA CLA /ARE THERE ANY SYMBOLS |
| 3426 | JMP SYM1 |
| 3427 | TAD MIKE8 |
| 3428 | SZA CLA /NO, IS THERE ANY EQUIVALENCING? |
| 3429 | JMP I LPTEMP |
| 3430 | JMP I .+1 |
| 3431 | PTEMP |
| 3432 | SYM1, TAD L56 |
| 3433 | TAD C2 |
| 3434 | DCA L72 |
| 3435 | TAD I L72 /GET THE CONTROL BITS |
| 3436 | DCA L72 /SAVE THEN |
| 3437 | TAD L72 /GET THE BITS |
| 3438 | AND E7 /MASK |
| 3439 | SZA CLA /ARE THEY FUNCT NAME, |
| 3440 | JMP UP /YES |
| 3441 | JMS I DEFN /PUT IT OUT |
| 3442 | TAD L72 |
| 3443 | AND E20 /MASK ALL BUT THE DIMEN |
| 3444 | SNA CLA /IS EITHER ONE ON |
| 3445 | JMP NORM /NO |
| 3446 | TAD L56 |
| 3447 | JMS I DIM |
| 3448 | DCA L26 |
| 3449 | TAD I L14 /GET THE SECOND DIMENSION |
| 3450 | CLL CIA /AND NEGATE |
| 3451 | DCA L73 /SAVE |
| 3452 | SZL |
| 3453 | ERR36, JMS I LUNCH |
| 3454 | TAD L26 |
| 3455 | ISZ L73 |
| 3456 | JMP .-4 |
| 3457 | ACK, DCA L26 |
| 3458 | TAD L56 |
| 3459 | JMS I MODE /DETERMINE MODE OF SYMBOL |
| 3460 | TAD L26 |
| 3461 | RAL CLL |
| 3462 | TAD L26 |
| 3463 | SZL |
| 3464 | JMP ERR36 |
| 3465 | DCA L26 |
| 3466 | TAD L72 |
| 3467 | AND C40 |
| 3468 | SZA CLA |
| 3469 | JMP COM |
| 3470 | JMS I BSS |
| 3471 | UP, ISZ L56 |
| 3472 | ISZ L56 |
| 3473 | ISZ L56 |
| 3474 | JMP SYM |
| 3475 | NORM, IAC |
| 3476 | JMP ACK |
| 3477 | C25, 25 |
| 3478 | E7, 7 |
| 3479 | K5200, 5200 |
| 3480 | DEFN, LDEFN |
| 3481 | E20, 20 |
| 3482 | E10, 10 |
| 3483 | LPTEMP, EEK |
| 3484 | LEAD, LLEAD |
| 3485 | COM, JMS I PROP |
| 3486 | 6165 |
| 3487 | TAD L26 |
| 3488 | JMS I PROTAC |
| 3489 | JMS I PRINT |
| 3490 | JMP UP |
| 3491 | \f *5600 |
| 3492 | C7600, 7600 |
| 3493 | C177, 177 |
| 3494 | LBSS, 0 |
| 3495 | TAD L65 /GET THE LOCATION COUNTER |
| 3496 | TAD L26 /ADD THE CURRENT AMOUNT TO IT |
| 3497 | AND C7600 /MASK ALL BUT THE PAGE BITS |
| 3498 | DCA L64 /SAVE THE NUMBER OF PAGES |
| 3499 | TAD L65 /GET THE LOCATION COUNTER AGAIN |
| 3500 | TAD L26 /ADD THE CURRENT DISPLACEMENT AGAIN |
| 3501 | AND C177 /NOW GET THE NUMBER OF LOCATIONS OVER A PAGE |
| 3502 | DCA L65 /AND SAVE |
| 3503 | L, TAD L64 /GET THE NUMBER OF PAGES TO BE RESERVED |
| 3504 | SNA /ARE THERE ANY TO BE RESERVED |
| 3505 | JMP CRAM /NO...JUST PUT OUT STRAIGHT NUMBER OF LOCATIONS |
| 3506 | TAD C7600 /YES...SUBTRACT ONE FROM THE PAGE COUNT |
| 3507 | DCA L64 /AND SAVE IT |
| 3508 | TAD L65 /GET THE NUMBER OF EXTRA LOCATIONS |
| 3509 | DCA L26 /AND PUT IN THE DISPLACEMENT LOCATION |
| 3510 | JMS I PROTAC /PUT OUT A ZERO |
| 3511 | JMS I PRINT /PUT OUT A CRLF |
| 3512 | JMS I PROP /PUT OUT THE OPCODE |
| 3513 | 6151 /WHICH IS THE PAGE PSEUDO OP |
| 3514 | JMS I PRINT /PUT OUT A CRLF |
| 3515 | JMP L /NOW SEE IF WE HAVE PUT OUT ENOUGH PAGES |
| 3516 | CRAM, JMS I PROP /NOW PUNCH 'BLOCK <N>' |
| 3517 | BLCK |
| 3518 | TAD L26 |
| 3519 | JMS I PROTAC |
| 3520 | JMS I PRINT |
| 3521 | JMP I LBSS |
| 3522 | LDEFN, 0 |
| 3523 | TAD L56 /GET THE POINTER TO THE SYMBOL |
| 3524 | JMS I PRSYM /PRINT THE SYMBOL |
| 3525 | TAD C7240 /GET THE TERMINATOR |
| 3526 | JMS I P2 /PRINT IT |
| 3527 | JMP I LDEFN /AND RETURN |
| 3528 | AFCON, TAD L47 /GET START OF FCON TABLE |
| 3529 | TAD C3 /UPDATE IT |
| 3530 | DCA L56 /SAVE UPDATED ADDRESS |
| 3531 | FLOOP, TAD L50 /GET END OF FCON TABLE |
| 3532 | CIA |
| 3533 | TAD L56 /SUBTRACT FROM CURRENT POINTER |
| 3534 | SNA CLA /ARE WE DONE |
| 3535 | JMP ALTHRU /YES |
| 3536 | TAD CM3 /NO, GET MINUS THREE |
| 3537 | DCA L63 /TO USE AS A COUNTER |
| 3538 | JMS LDEFN /DEFINE IT |
| 3539 | TAD I L56 /GET THE FIRST WORD |
| 3540 | ISZ L56 /ADVANCE THE POINTER TO THE NEXT WORD |
| 3541 | JMS I PROTAC /PRINT THE WORD |
| 3542 | JMS I PRINT /PUT OUT A CRLF |
| 3543 | ISZ L63 /HAVE WE PUT OUT ALL THREE WORDS |
| 3544 | JMP .-5 /NO...PUT OUT ANOTHER |
| 3545 | JMP FLOOP /YES...GET THE NEXT CONSTANT |
| 3546 | PTEMP, TAD K561 |
| 3547 | DCA L56 |
| 3548 | FTLOOP, TAD L45 |
| 3549 | CMA |
| 3550 | TAD L56 |
| 3551 | SNA CLA |
| 3552 | JMP ITEMP |
| 3553 | TAD C3 |
| 3554 | DCA L26 |
| 3555 | TAD K5400 /GET F.P. DESIGNATOR |
| 3556 | JMS LDEFN /PRINT THE SYMBOL |
| 3557 | JMS I BSS /RESERVE THE LOCATIONS FOR IT |
| 3558 | ISZ L56 /INCREMENT THE POINTER |
| 3559 | JMP FTLOOP |
| 3560 | ITEMP, TAD K531 |
| 3561 | DCA L56 |
| 3562 | ILOOP, TAD L51 |
| 3563 | CMA |
| 3564 | TAD L56 |
| 3565 | SNA CLA |
| 3566 | JMP SUBOUT |
| 3567 | IAC |
| 3568 | DCA L26 |
| 3569 | TAD K5000 /GET THE INTEGER TEMP DESIGNATOR |
| 3570 | JMS LDEFN /PRINT IT |
| 3571 | JMS I BSS /RESERVE LOCATIONS FOR IT |
| 3572 | ISZ L56 /INCREMENT THE POINTER |
| 3573 | JMP ILOOP |
| 3574 | ALTHRU, TAD D6 /PUNCH AN 'IFF 6' |
| 3575 | JMS I PIFF /SO THAT ENTRY WILL NOT BE AT END OF THE PAGE |
| 3576 | JMS I PROP |
| 3577 | 6055 /PUT OUT AN EAP |
| 3578 | JMS I PRINT |
| 3579 | TAD L70 /GET THE SUBROUTINE FUNCTION POINTER |
| 3580 | SZA CLA /IS IT ZERO |
| 3581 | JMP THRU /NO...WE MUST BE IN A SUBR OR A FUNC |
| 3582 | JMS I PROP /YES ...WERE IN A MAIN PROGRAM |
| 3583 | 6052 /PUT OUT ENT |
| 3584 | TAD C6000 /POINTER TO THE SYMBOL MAIN |
| 3585 | JMS I PRSYM /PRINT THE SYMBOL |
| 3586 | JMS I PRINT /PUT OUT A CRLF |
| 3587 | TAD C6000 /GET THE POINTER TO MAIN AGAIN |
| 3588 | JMS I PRSYM /PRINT IT |
| 3589 | TAD C7240 /GET A COLON |
| 3590 | JMS I P2 /PRINT THEM |
| 3591 | JMS I PROP |
| 3592 | 6047 |
| 3593 | JMS I PRINT /PUT OUT A CRLF |
| 3594 | THRU, JMS I FINI |
| 3595 | 6201 /CDF FIELD 0 |
| 3596 | JMP I C7600 /AND RETURN TO THE MONITOR ... |
| 3597 | C6000, 6000 |
| 3598 | SUBOUT, DCA L56 |
| 3599 | SUBOT1, TAD L25 |
| 3600 | CMA |
| 3601 | TAD L56 |
| 3602 | SNA CLA |
| 3603 | JMP AFCON |
| 3604 | JMS I PROP /PUT OUT THE OP CODE |
| 3605 | 6176 /WHICH IS DUMMY |
| 3606 | TAD X5200 /GET SUBSCRIPT DESIGNATOR |
| 3607 | TAD L56 /GET THE POINTER |
| 3608 | JMS I PRSYM /PRINT THE SYMBOL |
| 3609 | JMS I PRINT /CRLF |
| 3610 | ISZ L56 |
| 3611 | JMP SUBOT1 |
| 3612 | K5000, 5000-ITTAB |
| 3613 | K5400, 5400-FTTAB |
| 3614 | K531, ITTAB+1 |
| 3615 | K561, FTTAB+1 |
| 3616 | X5200, 5200 |
| 3617 | FINI, LFINI |
| 3618 | D6, 6 |
| 3619 | \f *6000 |
| 3620 | /FUNCTION AND SUBROUTINE STATEMENT PROCESSOR |
| 3621 | LFUNC, JMS I LOOK /CHECK REST OF STATEMENT |
| 3622 | MFOUR, -4 / |
| 3623 | -24 /T |
| 3624 | -11 /I |
| 3625 | -17 /O |
| 3626 | -16 /N |
| 3627 | CLA IAC /SET SWITCH |
| 3628 | TART, DCA L67 /THIS IS THE SWITCH |
| 3629 | TAD FIRSTF |
| 3630 | SNA CLA /INSURE SUBR. OR FUNCT. IS FIRST STMT. |
| 3631 | ERR47, JMS I LUNCH |
| 3632 | JMS SUBB |
| 3633 | CLA CMA |
| 3634 | TAD C6275 /THIS IS THE PLACE TO STORE FUNCTION NAME |
| 3635 | DCA L11 /USE AUTO INDEXING TO STORE THE NAME |
| 3636 | TAD L30 /GET THE FIRST WORD |
| 3637 | DCA I L11 /PUT IT IN THE SYMBOL TABLE |
| 3638 | TAD L31 /GET THE SECOND WORD |
| 3639 | DCA I L11 /PUT IT IN THE TABLE |
| 3640 | TAD L32 /GET THE THIRD WORD |
| 3641 | IAC /TURN THE EXTERNAL SYMBOL BIT ON |
| 3642 | DCA I L11 /AND PUT IT IN THE TABLE |
| 3643 | TAD C6275 /GET THE POINTER |
| 3644 | DCA L70 /AND PUT IT IN LOC 70 |
| 3645 | JMS I PROP |
| 3646 | 6052 /PUT OUT AN ENT |
| 3647 | TAD L70 /GET THE SUBROUTINE NAME |
| 3648 | JMS I PRSYM /PRINT IT |
| 3649 | JMS I PRINT /PUT OUT A CRLF |
| 3650 | CLA CMA |
| 3651 | DCA READY /SET SWITCH |
| 3652 | TAD L70 /GET THE SUB NAME |
| 3653 | JMS I PRSYM /PUT IT OUT |
| 3654 | TAD C7240 |
| 3655 | JMS I P2 /PUT IT OUT |
| 3656 | JMS I PROP /PUT OUT THE OP CODE 'BLOCK 2' |
| 3657 | BLCK |
| 3658 | TAD C2 |
| 3659 | JMS I PROTAC |
| 3660 | JMS I PRINT |
| 3661 | DCA WHICH /ZERO THE SWITCH WHICH TELLS WHICH WORD |
| 3662 | MORE, JMS I GNB |
| 3663 | SNA /CHECK FOR END OF CARD |
| 3664 | JMP CKCR |
| 3665 | TAD CM50 /CHECK FOR LEFT PAREN |
| 3666 | SNA /IS IT A LPAR |
| 3667 | JMP GET1 /YES |
| 3668 | TAD MFOUR |
| 3669 | SNA /IS IT A COMMA |
| 3670 | JMP XGET /YES |
| 3671 | TAD C3 |
| 3672 | SNA CLA /IS IT A LPAR |
| 3673 | JMP START /YES |
| 3674 | JMP ERR48 /NO |
| 3675 | GET1, ISZ READY /WERE WE READY FOR LPAR |
| 3676 | JMP ERR48 /NO, ERROR ... |
| 3677 | XGET, JMS SUBB |
| 3678 | TAD L32 |
| 3679 | TAD TEN |
| 3680 | DCA L32 |
| 3681 | TAD C77 /GET MASK FOR SYMBOL TABLE |
| 3682 | DCA L21 /AND PUT INTO THE SWITCH |
| 3683 | JMS I SYMTAB /AND PUT IN SYMBOL TABLE |
| 3684 | JMS I PROP |
| 3685 | DUMMY |
| 3686 | TAD L77 |
| 3687 | JMS I PRSYM |
| 3688 | JMS I PRINT |
| 3689 | DLOOP, JMS I PROP |
| 3690 | 6063 /PUT OUT A TAD* |
| 3691 | TAD L70 /GET THE FUNCTION NAME |
| 3692 | JMS I PRSYM /AND PRINT IT |
| 3693 | JMS I PRINT /PUT OUT A CRLF |
| 3694 | JMS I PROP |
| 3695 | 6071 /PUT OUT A DCA |
| 3696 | TAD L77 /GET ADDRESS OF SYMBOL |
| 3697 | JMS I PRSYM /PRINT IT |
| 3698 | TAD WHICH /GET THE WHICH SWITCH |
| 3699 | RAR /GET THE LOW BIT INTO THE LINK |
| 3700 | SNL CLA /IS THE WHICH SWITCH BIT SWITCHED |
| 3701 | JMP NEXT /NO...THAT MEANS WERE ON THE FIRST WORD |
| 3702 | TAD E43 /YES...WERE ON SECOND WORD...GET A "#" |
| 3703 | JMS I PRINT /PRINT IT |
| 3704 | NEXT, JMS I PRINT |
| 3705 | JMS I PROP /PUT OUT AN INC (ISZ WHICH DOES NOT SKIP) |
| 3706 | 6237 |
| 3707 | TAD L70 /GET THE FUNCTION NAME |
| 3708 | JMS I PRSYM /AND PRINT IT |
| 3709 | TAD E43 |
| 3710 | JMS I PRINT |
| 3711 | JMS I PRINT /PUT OUT A CRLF |
| 3712 | ISZ WHICH /INCREMENT THE SHICH SWITCH |
| 3713 | TAD WHICH /GET THE SWITCH |
| 3714 | RAR /GET LOW BIT IN THE LINK |
| 3715 | SZL CLA /IS THE LOW BIT ON |
| 3716 | JMP DLOOP /YES...WORK ON THE SECOND WORD |
| 3717 | JMP MORE /GO GET SOME MORE |
| 3718 | READY, 0 |
| 3719 | SUBB, 0 |
| 3720 | JMS I ENTITY |
| 3721 | SKP |
| 3722 | JMP I SUBB |
| 3723 | E43, 43 |
| 3724 | TEN, 10 |
| 3725 | JMP ERR48 |
| 3726 | WHICH, 0 |
| 3727 | C6275, 6275 /SUBROUTINE OR FUNCTION NAME POINTER |
| 3728 | CKCR, ISZ READY |
| 3729 | ERR48, JMS I LUNCH |
| 3730 | JMP START |
| 3731 | |
| 3732 | IOEQL, CLA CMA /ROUTINE TO TERMINATE IMPLIED DO LOOPS |
| 3733 | TAD IMPDO |
| 3734 | DCA IMPDO /REDUCE THE DEPTH BY 1 |
| 3735 | JMS I DONEXT /GENERATE END-OF-LOOP CODE |
| 3736 | JMS I GNB |
| 3737 | TAD CM51 |
| 3738 | SZA CLA /SKIP TO A RIGHT PAREN |
| 3739 | JMP .-3 |
| 3740 | JMP I .+1 |
| 3741 | IOH0 |
| 3742 | DONEXT, LDNEXT |
| 3743 | \f *6172 |
| 3744 | C6030, 6030 |
| 3745 | LWRIT, JMS I LOOK /LOOK FOR REST OF STATEMENT |
| 3746 | -1 |
| 3747 | -5 |
| 3748 | TAD C3 |
| 3749 | LREAD, TAD C6030 /GET THE POINTER TO READ AND WRITE |
| 3750 | DCA IOP /USE AS A PARAMETER WITH FPROP |
| 3751 | JMS I GNB |
| 3752 | TAD CM50 |
| 3753 | SZA CLA /IS THIS A LEFT PAREN? |
| 3754 | JMP I ASSIGN |
| 3755 | JMS SUBA |
| 3756 | JMS I ZZZ |
| 3757 | TAD C2 |
| 3758 | JMS I FPROP |
| 3759 | IOP, 0 |
| 3760 | JMS I ARG |
| 3761 | TAD L32 |
| 3762 | JMS I PRSYM |
| 3763 | JMS I PRINT |
| 3764 | JMS I ARG |
| 3765 | JMS I GNB |
| 3766 | TAD CM54 /IS IT A COMMA |
| 3767 | SZA CLA |
| 3768 | JMP ERR50 /NO, ERROR ... |
| 3769 | JMS SUBA |
| 3770 | TAD L32 /GET FORMAT |
| 3771 | SMA |
| 3772 | JMS I PLAB |
| 3773 | SPA |
| 3774 | JMS I PRSYM |
| 3775 | JMS I GNB |
| 3776 | TAD CM51 /CHECK FOR A RIGHT PAREN |
| 3777 | SZA CLA /IS IT? |
| 3778 | ERR50, JMS I LUNCH |
| 3779 | JMS I PRINT |
| 3780 | IOH0, JMS I GNB |
| 3781 | SNA |
| 3782 | JMP IOH2 |
| 3783 | TAD CM54 |
| 3784 | SNA CLA /IS IT A COMMA |
| 3785 | JMP IOH3 /YES ... |
| 3786 | IOH1, JMS I PUTCH /NO...PUT IT BACK |
| 3787 | JMS I GNB /THIS STMT IS TRANSFERRED TO! |
| 3788 | TAD CM50 |
| 3789 | SNA CLA |
| 3790 | JMP I IOPEN /OPEN PAREN - MAY BE IMPLIED DO-LOOP |
| 3791 | IOH1BK, JMS I PUTCH |
| 3792 | DCA L52 /SET SWITCHES FOR GENER |
| 3793 | DCA L46 |
| 3794 | ISZ L44 |
| 3795 | JMS I GENER /START PROCESSING THE IO LIST |
| 3796 | TAD L41 |
| 3797 | DCA L42 |
| 3798 | TAD L53 |
| 3799 | DCA L73 /SAVE CREATED LABEL LOC |
| 3800 | DCA L23 /ZERO TEMPORARY FOR "DUMARG" |
| 3801 | JMS I LCHNG /TEST FOR 0 OR DUMMY ARG |
| 3802 | DCA I L41 |
| 3803 | TAD L23 /GET TEMPORARY FROM "DUMARG" |
| 3804 | SZA CLA /ZERO MEANS NON-VARIABLE NAME |
| 3805 | TAD I L23 /NON-ZERO POINTS TO FLAG WORD OF VAR |
| 3806 | AND Q20 |
| 3807 | SNA CLA /DO WE HAVE AN ARRAY NAME? |
| 3808 | JMP NOSYMB /NO |
| 3809 | JMS I PROP |
| 3810 | OPCMA /PUT OUT A "CMA" TO DISTINGUISH THIS CALL |
| 3811 | JMS I PRINT /FROM A REGULAR CALL TO "IOH" |
| 3812 | TAD C2 |
| 3813 | JMS I FPROP |
| 3814 | 6036 /OUTPUT A "CALL 2,IOH" |
| 3815 | JMS I ARG |
| 3816 | TAD L23 |
| 3817 | TAD CM2 |
| 3818 | JMS I DIM /GET THE DIMENSIONS |
| 3819 | DCA IOP |
| 3820 | TAD I L14 |
| 3821 | CIA |
| 3822 | DCA L44 |
| 3823 | TAD L23 |
| 3824 | TAD CM2 |
| 3825 | JMS I MODE /GET THE MODE OF THE ARRAY |
| 3826 | TAD C4000 /FLOATING POINT - ADD 4000 TO AC |
| 3827 | TAD IOP |
| 3828 | ISZ L44 |
| 3829 | JMP .-2 /COMPUTE PRODUCT OF DIMENSIONS PLUS MODE BIT |
| 3830 | JMS I PROTAC /PRINT IT |
| 3831 | JMS I PRINT |
| 3832 | JMP IOHRSM /GO PRINT ARRAY NAME |
| 3833 | NOSYMB, TAD L46 |
| 3834 | SZA CLA |
| 3835 | JMS I STORE |
| 3836 | IAC /THERE WILL BE ONE ARGUMENT |
| 3837 | JMS I FPROP /PUT OUT THE CALL TO IOH |
| 3838 | 6036 |
| 3839 | IOHRSM, TAD L73 |
| 3840 | DCA L53 /RESTORE CREATED LABEL LOC |
| 3841 | TAD I L41 |
| 3842 | JMS I QSYMOT |
| 3843 | TAD L63 /GET TERMINATING CHAR |
| 3844 | SNA CLA /WAS IT A <CR>? |
| 3845 | JMP IOH2 /YES |
| 3846 | IOH3, JMS I GNB /GENTLY LOOK AHEAD ... |
| 3847 | SNA CLA /DO WE HAVE A ',<CR>' ? |
| 3848 | JMP START /YES, DO NOT TERMINATE YET ... |
| 3849 | JMP IOH1 /NO, PUSH IT BACK & PROCESS NEXT ITEM |
| 3850 | IOH2, IAC /THERE WILL BE ONE ARGUMENT |
| 3851 | JMS I FPROP /PUT OUT A CALL TO IOH |
| 3852 | 6036 |
| 3853 | JMS I ARG /PUT OUT THE PSEUDO OP ARG |
| 3854 | JMS I PROTAC |
| 3855 | JMS I PRINT |
| 3856 | JMP START |
| 3857 | SUBA, 0 |
| 3858 | JMS I ENTITY |
| 3859 | JMP ERR51 /ITS A CR |
| 3860 | JMP ERR51+1 /ITS A VARIABLE |
| 3861 | JMP I SUBA |
| 3862 | Q20, 20 |
| 3863 | ERR51, JMS I LUNCH |
| 3864 | DCA L21 /ZERO THE SYMBOL TABLE SWITCH |
| 3865 | JMS I SYMTAB |
| 3866 | TAD L77 |
| 3867 | JMS I MODE |
| 3868 | JMP ERR51 |
| 3869 | TAD L77 |
| 3870 | DCA L32 |
| 3871 | TAD L32 |
| 3872 | JMS I DUMARG |
| 3873 | JMP ERR51 |
| 3874 | JMP I SUBA |
| 3875 | IOPEN, IOOPEN |
| 3876 | QSYMOT, SYMOUT |
| 3877 | \f *6400 |
| 3878 | LRET, JMS I LOOK /CHECK REST OF STATEMENT |
| 3879 | -2 |
| 3880 | -22 |
| 3881 | -16 |
| 3882 | JMS I ZZZ |
| 3883 | TAD L70 |
| 3884 | SNA CLA /ARE WE COMPILING MAIN PROGRAM? |
| 3885 | ERR60, JMS I LUNCH /YES |
| 3886 | TAD L67 |
| 3887 | SNA CLA |
| 3888 | JMP INT /ITS A SUBROUTINE |
| 3889 | TAD L70 /GET HE NAME OF THE FUNCTION |
| 3890 | JMS I MODE /IS IT FP OR INTEGER |
| 3891 | JMP .+4 /ITS FP |
| 3892 | JMS I PROP |
| 3893 | 6066 /OPCODE IS TAD |
| 3894 | JMP .+5 /PUT OUT THE SYMBOL |
| 3895 | IAC /THERE IS ONE ARGUMENT |
| 3896 | JMS I FPROP |
| 3897 | 6003 |
| 3898 | JMS I ARG |
| 3899 | TAD F34 /GET A BACK SLASH |
| 3900 | JMS I PRINT |
| 3901 | TAD L70 /GET THE NAME OF THE FUNCTION |
| 3902 | JMS I PRSYM /PRINT THE NAME |
| 3903 | JMS I PRINT /PUT OUT A CRLF |
| 3904 | INT, JMS I PROP |
| 3905 | 6077 /OPCODE IS RTN |
| 3906 | TAD L70 /GET THE FUNCTION NAME |
| 3907 | JMS I PRSYM /PRINT IT |
| 3908 | JMS I PRINT /PUT OUT A CRLF |
| 3909 | JMP START /WERE DONE |
| 3910 | |
| 3911 | LGETHI, 0 /PUNCH 'TAD ACH' |
| 3912 | JMS I PROP |
| 3913 | 6066 |
| 3914 | JMS I PROP /PRINT THE OP CODE |
| 3915 | 6226 /WHICH IS ACH (HIGH ORDER AC) |
| 3916 | JMS I PRINT |
| 3917 | JMS I FPROP /PUNCH 'CALL 0,CLEAR' |
| 3918 | 6204 |
| 3919 | JMP I LGETHI |
| 3920 | LDIM, 0 /GETS THE 1ST DIMENSION OF THIS VARIABLE |
| 3921 | DCA LGETHI /SYMBOL TABLE ADDRESS IS IN THE AC |
| 3922 | CMA |
| 3923 | TAD L50 |
| 3924 | DCA L14 |
| 3925 | LK, TAD I L14 /SEARCH THE DIMENSION TABLE |
| 3926 | CIA |
| 3927 | TAD LGETHI |
| 3928 | SNA CLA |
| 3929 | JMP .+4 |
| 3930 | ISZ L14 |
| 3931 | ISZ L14 |
| 3932 | JMP LK |
| 3933 | TAD I L14 /EXIT WITH DIMENSION IN THE AC |
| 3934 | JMP I LDIM |
| 3935 | / THIS PROCESSES SUBSCRIPTS |
| 3936 | SUBRET, JMP I LSUBSC /RETURN FROM SUBSC |
| 3937 | LSBTEM, 0 /THIS ROUTINE MAKES AN ENTRY |
| 3938 | DCA TRIP /IN SUBSCRIPT TEMPORARY TABLE |
| 3939 | TAD FBASE |
| 3940 | DCA POINT |
| 3941 | TAD CM40 |
| 3942 | DCA PCTR |
| 3943 | LOOP, TAD I POINT /LOOK FOR CURRENT TRIPLE NR |
| 3944 | SNA /OR END OF TABLE... |
| 3945 | JMP YES |
| 3946 | CIA |
| 3947 | TAD TRIP |
| 3948 | SNA CLA |
| 3949 | JMP GOT |
| 3950 | ISZ POINT |
| 3951 | ISZ PCTR |
| 3952 | JMP LOOP |
| 3953 | ERR53, JMS I LUNCH |
| 3954 | YES, TAD TRIP |
| 3955 | DCA I POINT |
| 3956 | GOT, TAD FBASE |
| 3957 | CIA |
| 3958 | TAD POINT |
| 3959 | DCA POINT |
| 3960 | TAD POINT |
| 3961 | CIA |
| 3962 | TAD L25 |
| 3963 | SPA CLA /IF TEMPORARY NR > L25 |
| 3964 | ISZ L25 /BUMP L25 |
| 3965 | TAD POINT |
| 3966 | JMP I LSBTEM |
| 3967 | LWIPE, 0 /ZERO THE SUBSCRIPT TEMP. TABLE |
| 3968 | TAD FBASE |
| 3969 | DCA POINT |
| 3970 | TAD CM40 |
| 3971 | DCA PCTR |
| 3972 | LOOP2, DCA I POINT |
| 3973 | ISZ POINT |
| 3974 | ISZ PCTR |
| 3975 | JMP LOOP2 |
| 3976 | JMP I LWIPE |
| 3977 | LZER, 0 |
| 3978 | ISZ LZER /INCREMANT |
| 3979 | JMS I PROTAC /PUT OUT A ZERO |
| 3980 | JMP I LZER /AND REUTURN |
| 3981 | LCLAB, 0 |
| 3982 | SNA /IF NO LABEL IN AC, |
| 3983 | JMS I CREATE /CREATE A LABEL |
| 3984 | JMS I PRCRL /AND PRINT IT |
| 3985 | TAD C7240 /PUT OUT A COLON AND SPACE |
| 3986 | JMS I P2 |
| 3987 | JMP I LCLAB /RETURN |
| 3988 | FBASE, 4600 |
| 3989 | POINT, 0 |
| 3990 | PCTR, 0 |
| 3991 | TRIP, 0 |
| 3992 | F34, 34 |
| 3993 | LSUBSC, 0 |
| 3994 | TAD L46 |
| 3995 | SZA /IS THERE ANYTHING IN THE AC? |
| 3996 | CHANGE, SKP CLA /******************************** |
| 3997 | / TRY CHANGING THIS LOCATION TO A "JMS I MODE" |
| 3998 | / TO LIMIT THE CHECK TO THE INTEGER AC! |
| 3999 | / COULD SAVE UP TO 30% IN HEAVILY SUBSCRIPTED F.P. |
| 4000 | / EXPRESSIONS! (IMPORTANT - TEST WITH F.P. SUBSCRIPTS) |
| 4001 | SKP /NOTHING IN THE AC |
| 4002 | JMS I STORE /YES - STORE IT |
| 4003 | IAC |
| 4004 | DCA L63 |
| 4005 | TAD L53 |
| 4006 | DCA L73 |
| 4007 | TAD L41 |
| 4008 | DCA L42 |
| 4009 | ISZ L41 |
| 4010 | TAD I L41 |
| 4011 | TAD CM4046 |
| 4012 | SNA CLA /WAS IT A PRIME |
| 4013 | JMP BACK |
| 4014 | JMS I LCHNG |
| 4015 | DCA L63 |
| 4016 | ISZ L41 |
| 4017 | ISZ L41 |
| 4018 | ISZ L42 |
| 4019 | \f ISZ L42 |
| 4020 | IAC |
| 4021 | BACK, ISZ L41 |
| 4022 | DCA SYMOUT |
| 4023 | JMS CHNG |
| 4024 | DCA L65 |
| 4025 | ISZ L42 |
| 4026 | ISZ L42 |
| 4027 | JMS CHNG |
| 4028 | DCA LDUM /SAVE ARRAY POINTER (OR 0 IF DUMMY) |
| 4029 | TAD L73 /NOW RESTORE THE CREATED LABEL LOC |
| 4030 | DCA L53 |
| 4031 | TAD SYMOUT |
| 4032 | SNA CLA /HOW MANY SUBSCRIPTS? |
| 4033 | JMP .+7 /ONE - SKIP OUTPUTTING "TAD" |
| 4034 | JMS I PROP |
| 4035 | 6066 |
| 4036 | TAD I L41 |
| 4037 | JMS I DIM |
| 4038 | JMS I PRSYM |
| 4039 | JMS I PRINT |
| 4040 | TAD I L41 |
| 4041 | JMS I MODE |
| 4042 | JMP FP |
| 4043 | CASUB, TAD H200 |
| 4044 | TAD L40 |
| 4045 | DCA I L41 /STORE TRIPLE NUMBER WITH MODE BITS IN PD STACK |
| 4046 | TAD SYMOUT /GET NUMBER OF ARGUMENTS (2 OR 3) |
| 4047 | TAD C2 |
| 4048 | JMS I FPROP /PUT OUT A CALL TO THE SUBSCRIPTING ROUTINE |
| 4049 | 6173 /TO THE SUBSCRIPTING ROUTINE |
| 4050 | TAD SYMOUT |
| 4051 | SNA CLA /ONLY ONE ARG? |
| 4052 | JMP .+3 /YES - DON'T OUTPUT FIRST SUBSCRIPT |
| 4053 | TAD L63 |
| 4054 | JMS SYMOUT |
| 4055 | TAD L65 |
| 4056 | JMS SYMOUT |
| 4057 | TAD LDUM /GET THE ARRAY NAME |
| 4058 | JMS SYMOUT /OUTPUT IT AS AN ARGUMENT |
| 4059 | TAD I L41 |
| 4060 | JMS I PRSYM /OUTPUT THE DESTINATION TEMPORARY |
| 4061 | JMS I PRINT |
| 4062 | TAD I L41 |
| 4063 | DCA L12 /MARK IT AS THE CONTENTS OF THE LAST LINE |
| 4064 | JMP I FSUBSC /RETURN |
| 4065 | FP, JMS I PROP |
| 4066 | OPCMA /OPCODE IS CMA |
| 4067 | JMS I PRINT |
| 4068 | TAD H400 /SET MODE TO FLOATING POINT |
| 4069 | JMP CASUB |
| 4070 | SYMOUT, 0 |
| 4071 | DCA CHNG |
| 4072 | TAD CHNG |
| 4073 | SNA CLA |
| 4074 | JMS I CLAB /CREATE LABEL IF DUMMY ARG |
| 4075 | JMS I ARG |
| 4076 | TAD CHNG |
| 4077 | SNA /IS IT ZERO |
| 4078 | JMS I ZER /YES PUT OUT A ZERO |
| 4079 | JMS I PRSYM /OTHERWISE PUT OUT SUBSCRIPT |
| 4080 | JMS I PRINT /PUT OUT A CRLF |
| 4081 | JMP I SYMOUT |
| 4082 | |
| 4083 | LDSPCL, DCA L24 |
| 4084 | JMS I CREATE |
| 4085 | JMS I PRCRL /CHANGE LAST LINE TO STORE IN NEW DESTINATION |
| 4086 | DCA L12 /MARK LAST LINE USELESS FOR OPTOMIZATION |
| 4087 | JMP LDMRET |
| 4088 | LDUM, 0 |
| 4089 | ISZ LDUM /INCREMENT RETURN |
| 4090 | TAD I L42 /GET THE THING WHICH IS DUMMY |
| 4091 | CIA |
| 4092 | TAD L12 /DID WE JUST PUT THIS OUT AS A SUBSCRIPT |
| 4093 | SNA CLA /DESTINATION?? |
| 4094 | JMP LDSPCL /YES - SAVE OODLES OF CODE |
| 4095 | JMS I PROP |
| 4096 | 6066 /PUT OUT A TAD |
| 4097 | TAD I L42 |
| 4098 | JMS I PRSYM /PUT IT OUT |
| 4099 | JMS I PRINT /PUT OUT A CRLF |
| 4100 | JMS I PROP |
| 4101 | 6071 /PUT OUT A DCA |
| 4102 | JMS I CREATE /CREATE A LABEL |
| 4103 | JMS I PRCRL /AND PRINT IT |
| 4104 | JMS I PRINT /PUT OUT A CRLF |
| 4105 | JMS I PROP |
| 4106 | 6066 |
| 4107 | TAD I L42 |
| 4108 | JMS I PRSYM |
| 4109 | TAD H43 |
| 4110 | JMS I PRINT |
| 4111 | JMS I PRINT |
| 4112 | JMS I PROP |
| 4113 | 6071 |
| 4114 | TAD L53 |
| 4115 | JMS I PRCRL |
| 4116 | TAD H43 |
| 4117 | JMS I PRINT |
| 4118 | LDMRET, JMS I PRINT |
| 4119 | JMP I LDUM /RETURN |
| 4120 | CHNG, 0 |
| 4121 | TAD I L42 /NO...THERES TWO SUBSCRIPTS |
| 4122 | SNA |
| 4123 | TAD H6041 |
| 4124 | DCA I L42 |
| 4125 | TAD I L42 |
| 4126 | JMS I DUMARG /SEE IF SECOND SUBSC IS A DUMMY ARG |
| 4127 | JMS I DUM /YES IT IS A DUMMY ARG |
| 4128 | TAD I L42 /GET THE SECOND SUBSC |
| 4129 | JMP I CHNG |
| 4130 | |
| 4131 | H400, 400 |
| 4132 | H200, 200 |
| 4133 | H43, 43 |
| 4134 | FSUBSC, SUBRET |
| 4135 | H6041, 6041 |
| 4136 | \f *7000 |
| 4137 | IOHTMP,MCHAR, 0 |
| 4138 | NPOINT,LLUNCH, 0 |
| 4139 | CLA |
| 4140 | DCA L75 |
| 4141 | DCA L24 /ZERO "BUFFER WAITING TO PRINT" FLAG |
| 4142 | DCA IMPDO /ZERO IMPLIED DO LOOP FLAG |
| 4143 | TAD TTYPE /CHANGE TO TTY OUTPUT |
| 4144 | DCA PUNCH |
| 4145 | JMS I LLIST /TYPE THE CURRENT LINE |
| 4146 | CLL CMA RAL |
| 4147 | TAD KOUNT /USE THE BUFFER POINTER AS AN INDEX |
| 4148 | SMA |
| 4149 | CMA |
| 4150 | DCA L7 |
| 4151 | TAD C40 /NOW PUT OUT SOME SPACES... |
| 4152 | JMS I PRINT |
| 4153 | ISZ L7 |
| 4154 | JMP .-3 |
| 4155 | TAD D36 /AND AN '^' |
| 4156 | JMS I PRINT |
| 4157 | JMS I PRINT |
| 4158 | TAD LELIST /NOW TYPE THE ERROR MESSAGE |
| 4159 | DCA L10 |
| 4160 | UNCH1, TAD I L10 |
| 4161 | SZA /END OF TABLE? |
| 4162 | TAD LLUNCH |
| 4163 | SNA CLA /IS THIS THE MSG WE WANT? |
| 4164 | JMP UNCH2 |
| 4165 | ISZ L10 /NO |
| 4166 | JMP UNCH1 |
| 4167 | UNCH2, TAD BASE |
| 4168 | CIA |
| 4169 | TAD I L10 |
| 4170 | JMS I LLIST /FAKE LISTER INTO PRINTING ERROR MESG |
| 4171 | JMS I PRINT /FORCE BUFFER |
| 4172 | TAD EPNCH /BACK TO PUNCH OUTPUT |
| 4173 | DCA PUNCH |
| 4174 | ISZ L75 /SET THE NON-PRINT SWITCH |
| 4175 | TAD CHK /IF ERROR OCCURED WHILE PROCESSING END STMT. |
| 4176 | TAD C4000 /CHK WILL BE 4000-WANT TO ABORT IMMEDIATELY |
| 4177 | SZA CLA /WAS IT END STMT? |
| 4178 | JMP START /NO-GO PROCESS NEXT STMT. |
| 4179 | JMP I (THRU /YES-CLEAN UP AND ABORT |
| 4180 | LLIST, LIST |
| 4181 | D36, 36 |
| 4182 | LELIST, ELIST-1 /ERROR LIST ... |
| 4183 | TTYPE, LTTYPE |
| 4184 | EPNCH, LPUNCH |
| 4185 | CTR, 0 |
| 4186 | TEM, 0 |
| 4187 | / THIS ROUTINE PRINTS THE CONTENTS OF THE AC IN DECIMAL |
| 4188 | PARCT,LDCOUT, 0 |
| 4189 | DCA TEM /SAVE THE AC |
| 4190 | TAD CM3 /WE WILL PUT OUT FOUR CHARACTERS |
| 4191 | DCA CTR |
| 4192 | TAD ASE /THIS IS THE ASE OF THE CONVERSION TABLE |
| 4193 | DCA NPOINT /SAVE IT IN THE POINTER |
| 4194 | DCA FLAG |
| 4195 | LOP, DCA MCHAR /ZERO OUT THE CHARACTER |
| 4196 | TAD TEM /GET THE NUMBER AGAIN |
| 4197 | TAD I NPOINT /TO GET THE ITEM IN THE TABLE |
| 4198 | SPA /IS THE RESULT POSITIVE |
| 4199 | JMP LOPRST /NO...RESTORE THE NUMBER |
| 4200 | DCA TEM /AND SAVE THIS VALUE |
| 4201 | TAD D60 |
| 4202 | DCA FLAG /SET FLAG TO SHOW THAT WE HAVE SOMETHING |
| 4203 | ISZ MCHAR /YES...INCREMENT THE OUTPUT CHARACTER |
| 4204 | JMP LOP+1 /TRY THE SEQUENCE AGAIN |
| 4205 | LOPRST, CLA |
| 4206 | TAD MCHAR |
| 4207 | TAD FLAG |
| 4208 | SZA /DO WE HAVE A SIGNIFICANT DIGIT? |
| 4209 | JMS I PRINT /YES - PRINT IT |
| 4210 | ISZ NPOINT |
| 4211 | ISZ CTR |
| 4212 | JMP LOP /AND GET THE NEXT DIGIT |
| 4213 | TAD TEM /GET THE CHARACTER TO OUTPUT |
| 4214 | TAD D60 /PUT IT IN TRIMMED ASCII FORM |
| 4215 | JMS I PRINT /PRINT IT |
| 4216 | JMP I LDCOUT /YES...RETURN TO CALLING PROGRAM |
| 4217 | ASE, THOU |
| 4218 | FLAG, 0 |
| 4219 | |
| 4220 | |
| 4221 | IOOPEN, TAD KOUNT |
| 4222 | DCA IOHTMP /SAVE POINTER TO LEFT PAREN +1 |
| 4223 | CLA CMA |
| 4224 | DCA PARCT /INITIALIZE PAREN COUNTER |
| 4225 | TAD KOUNT |
| 4226 | DCA TEM /TEM POINTS TO ENTITY (OR PREV ONE IF A VAR) |
| 4227 | IOPENL, JMS I ENTITY /GET SOMETHING |
| 4228 | ERR52, JMS I LUNCH /END OF STMT - BAD |
| 4229 | JMP IOPENL /VARIABLE - DON'T UPDATE TEM |
| 4230 | D60, 60 |
| 4231 | JMP IOPENL-2 /CONSTANT - UPDATE TEM |
| 4232 | TAD CM51 /PUNCTUATION - TEST FOR RIGHT PAREN |
| 4233 | SNA |
| 4234 | JMP IORPAR /YES |
| 4235 | IAC |
| 4236 | SNA /LEFT PAREN? |
| 4237 | JMP IOLPAR |
| 4238 | TAD CM25 |
| 4239 | SNA CLA /IF CHAR IS AN EQUAL SIGL |
| 4240 | TAD PARCT |
| 4241 | IAC |
| 4242 | SZA CLA /AND WE ARE ON THE TOP LEVEL OF PARENTHESES |
| 4243 | JMP IOPENL-2 |
| 4244 | TAD TEM /THEN WE HAVE AN IMPLIED DO |
| 4245 | DCA KOUNT |
| 4246 | JMS I DO /GENERATE DO LOOP CODE |
| 4247 | JMP ERR52 /NOT TERMINATED WITH RPAR - ERROR |
| 4248 | ISZ IMPDO /BUMP IMPLIED DO COUNT |
| 4249 | TAD IOHTMP |
| 4250 | DCA KOUNT /RESTORE CHAR PTR TO BEGINNING OF LOOP |
| 4251 | JMP I .+1 |
| 4252 | IOH1+1 /COMPILE INNARDS OF LOOP |
| 4253 | |
| 4254 | IOLPAR, CLA CMA |
| 4255 | TAD PARCT |
| 4256 | JMP IOPENL-3 /BUMP PAREN COUNT UP AND LOOP |
| 4257 | |
| 4258 | IORPAR, ISZ PARCT /BUMP PAREN COUNT DOWN |
| 4259 | JMP IOPENL-2 /LOOP IF NOT BALANCED |
| 4260 | TAD IOHTMP |
| 4261 | DCA KOUNT /BALANCED - NOT AN IMPLIED DO |
| 4262 | JMP I .+1 |
| 4263 | IOH1BK /COMPILE NORMALLY |
| 4264 | CM25, -25 |
| 4265 | DO, XDO |
| 4266 | \f *7200 |
| 4267 | EQUI, JMS I LOOK /CHECK REST OF STATEMENT TYPE |
| 4268 | -7 /THERE ARE 7 MORE CHARACTERS |
| 4269 | -26 /V |
| 4270 | -1 /-A |
| 4271 | -14 /-L |
| 4272 | -5 /-E |
| 4273 | -16 /-N |
| 4274 | -3 /-C |
| 4275 | -5 /-E |
| 4276 | RETA, ISZ SNUM /INCREMENT THE STRING NUMBER |
| 4277 | JMS CCCC /GET AND CHECK THE NEXT NON-BLANK CHARACTER |
| 4278 | SKP /ONLY LEGAL CHAR HERE IS A "(" |
| 4279 | JMP RETB /WE GOT THE "(" |
| 4280 | NOP |
| 4281 | JMP ERR59 |
| 4282 | RETB, JMS I ENTITY /LOOK FOR A VARIABLE |
| 4283 | SKP |
| 4284 | JMP LA /GOT IT, ANYTHING ELSE IS AN ERROR |
| 4285 | NOP |
| 4286 | NOP |
| 4287 | JMP ERR59 |
| 4288 | LA, ISZ L32 /TURN EQUIVALENCE BIT ON |
| 4289 | ISZ L32 |
| 4290 | TAD K57 /GET MASK FOR SYMBOL TABLE |
| 4291 | DCA L21 /PUT IN THE SYMBOL TABLE SWITCH |
| 4292 | JMS I SYMTAB /PUT IN SYMBOL TABLE |
| 4293 | TAD L77 /GET THE POINTER |
| 4294 | ISZ MIKE4 /AND PUT IN EQUIVALENCE TABLE |
| 4295 | DCA I MIKE4 |
| 4296 | TAD SNUM /GET THE CURRENT STRING NUMBER |
| 4297 | ISZ MIKE4 /AND PUT IT IN THE EQUIVALENCE TABLE |
| 4298 | DCA I MIKE4 |
| 4299 | ISZ MIKE8 /INCREMENT NUMBER OF ENTRIES |
| 4300 | JMS CCCC /GET NEXT PUNCTUATION |
| 4301 | JMP ERR59 /C/R, THAT'S AN ERROR ... |
| 4302 | JMP .+3 /LEFT PAREN, VARIABLE IS SUBSCRIPTED |
| 4303 | JMP LB /COMMA, NOT SUBSCRIPTED, STRING CONTINUES |
| 4304 | JMP LC /RIGHT PAREN, NOT SUBSCRIPTED, END OF STRING |
| 4305 | JMS I ENTITY /LOOK FOR SUBSCRIPT |
| 4306 | NOP |
| 4307 | SKP |
| 4308 | JMP LD /GOT IT, ANYTHING ELSE IS ERROR |
| 4309 | NOP |
| 4310 | JMP ERR59 |
| 4311 | LD, CLA CMA /SUBTRACT ONE FROM |
| 4312 | TAD L32 /FIRST SUBSCRIPT |
| 4313 | DCA INTA /AND SAVE |
| 4314 | JMS CCCC /GET NEXT PUNCTUATION |
| 4315 | NOP /CR IS ILLEGAL HERE |
| 4316 | JMP RETB-1 /SO IS LEFT PAREN |
| 4317 | SKP /COMMA, DOUBLY SUBSCRIPTED |
| 4318 | JMP LF /RIGHT PAREN, SINGLY SUBSCRIPTED |
| 4319 | JMS I ENTITY /GET OTHER SUBSCRIPT |
| 4320 | NOP |
| 4321 | SKP |
| 4322 | JMP LG /GOT IT |
| 4323 | NOP |
| 4324 | JMP LD-1 |
| 4325 | LG, TAD L32 /SET IT NEGATIVE |
| 4326 | CIA |
| 4327 | DCA INTB /AND SAVE IT |
| 4328 | JMS CCCC /GET NEXT PUNCTUATION |
| 4329 | NOP |
| 4330 | NOP |
| 4331 | ERR59, JMS I LUNCH |
| 4332 | TAD L77 /RIGHT PAREN IS ONLY LEGAL CHARACTER |
| 4333 | JMS I DIM /GET DIMENSION INFORMATION |
| 4334 | DCA CCCC /AND SAVE |
| 4335 | SKP /GO TO TEST PART OF LOOP |
| 4336 | TAD CCCC /THIS LOOP IS A MAKESHIFT MULTIPLY |
| 4337 | ISZ INTB /ARE WE DONE |
| 4338 | JMP .-2 /NO |
| 4339 | TAD INTA /YES, ADD FIRST SUBSCRIPT |
| 4340 | DCA INTA /AND SAVE |
| 4341 | LF, TAD L77 /GET POINTER TO VARIABLE |
| 4342 | JMS I MODE /WHAT MODE IS IT |
| 4343 | TAD INTA /F.P., MULTIPLY BY THREE |
| 4344 | RAL CLL /INTEGER |
| 4345 | TAD INTA |
| 4346 | IAC /ADD ONE TO ANSWER |
| 4347 | ISZ MIKE4 /AND PUT IN EQUIVALENCE TABLE |
| 4348 | DCA I MIKE4 |
| 4349 | JMS CCCC /GET NEXT PUNCTUATION |
| 4350 | NOP |
| 4351 | JMP RETB-1 /CR AND "(" ARE ILLEGAL HERE |
| 4352 | JMP RETB /COMMA MEANS STRING NOT FINISHED |
| 4353 | JMP LI /")" MEANS STRING FINISHED |
| 4354 | LC, CLA IAC /HERE WE CRAM A ONE INTO EQUIVALENCE |
| 4355 | ISZ MIKE4 |
| 4356 | DCA I MIKE4 |
| 4357 | LI, JMS CCCC /WE FINISHED A STRING, ARE THERE MORE |
| 4358 | JMP START /NO |
| 4359 | SKP |
| 4360 | JMP RETA /YES |
| 4361 | JMP RETB-1 /"(" AND ")" ARE ILLEGAL HERE |
| 4362 | LB, CLA IAC /CRAM A ONE INTO TABLE |
| 4363 | ISZ MIKE4 |
| 4364 | DCA I MIKE4 |
| 4365 | JMP RETB /AND GO BACK |
| 4366 | / |
| 4367 | / THIS"ROUTINE GETS AND CHECKS THE NEXT NON-BLANK CHAR |
| 4368 | / |
| 4369 | CCCC, 0 |
| 4370 | JMS I GNB |
| 4371 | SNA /PUNCTUATION IS WHAT WE WANT |
| 4372 | JMP I CCCC /ITS A CR |
| 4373 | TAD CM54 |
| 4374 | SNA /IS IT A COMMA |
| 4375 | JMP XCOMMA /YES |
| 4376 | TAD C3 |
| 4377 | SNA /IS IT A ")" |
| 4378 | JMP XRPAR /YES |
| 4379 | IAC |
| 4380 | SNA /IS IT A "(" |
| 4381 | JMP XLPAR /YES |
| 4382 | JMP RETB-1 /NONE OF THE ABOVE |
| 4383 | XRPAR, ISZ CCCC |
| 4384 | XCOMMA, ISZ CCCC |
| 4385 | XLPAR, ISZ CCCC |
| 4386 | JMP I CCCC |
| 4387 | K57, 57 |
| 4388 | |
| 4389 | LFIN, JMS I GNB |
| 4390 | SZA CLA |
| 4391 | JMP I ASSIGN |
| 4392 | JMS I ZZZ /PRINT LABEL ON "FINI" |
| 4393 | JMP I .+1 |
| 4394 | IOH2 |
| 4395 | |
| 4396 | /THE FOLLOWING CODE IS TO PROCESS THE EQUIVALENCE TABLE |
| 4397 | /AT THE END OF A COMPILATION |
| 4398 | \f *7376 |
| 4399 | EEK, ISZ MIKE4 |
| 4400 | ISZ MIKE4 |
| 4401 | DCA I MIKE4 /SET END OF LIST |
| 4402 | JMS INIT /INITIALIZE POINTERS |
| 4403 | AAB, TAD MA /SET POINTERS TO STRING NUMBERS |
| 4404 | TAD C3 |
| 4405 | DCA MB |
| 4406 | ISZ MA |
| 4407 | ISZ MA |
| 4408 | AAC, ISZ MB |
| 4409 | AA, ISZ MB |
| 4410 | TAD I MA /GET FIRST STRING NUMBER |
| 4411 | CIA |
| 4412 | TAD I MB /SUBTRACT FROM SECOND |
| 4413 | SZA CLA /ARE THEY THE SAME |
| 4414 | JMP KICK1 /NO, ADVANCE POINTERS |
| 4415 | ISZ MA /YES, MOVE TO LINEAR SUBSCRIPT |
| 4416 | ISZ MB |
| 4417 | TAD I MA /GET FIRST SUBSC |
| 4418 | CIA |
| 4419 | TAD I MB /SUBTRACT FROM SECOND |
| 4420 | SPA CLA SNA /IS FIRST ONE SMALLER |
| 4421 | JMP KICK2 /NO, JUST ADVANCE POINTERS |
| 4422 | TAD MA /YES, SWITCH PLACES |
| 4423 | TAD CM2 |
| 4424 | DCA MA |
| 4425 | TAD MB |
| 4426 | TAD CM2 |
| 4427 | DCA MB |
| 4428 | TAD CM3 |
| 4429 | DCA INIT |
| 4430 | RAUCH, TAD I MA |
| 4431 | DCA L76 |
| 4432 | TAD I MB |
| 4433 | DCA I MA |
| 4434 | TAD L76 |
| 4435 | DCA I MB |
| 4436 | ISZ MA |
| 4437 | ISZ MB |
| 4438 | ISZ INIT |
| 4439 | JMP RAUCH |
| 4440 | TAD MA |
| 4441 | TAD CM2 |
| 4442 | DCA MA |
| 4443 | JMP AA /NOW THEYRE SWITCHED, CHECK AGAIN |
| 4444 | KICK2, CLA CMA /MOVE BACK FIRST POINTER |
| 4445 | TAD MA |
| 4446 | DCA MA |
| 4447 | JMP AAC |
| 4448 | KICK1, ISZ MA /MOVE UP FIRST POINTER |
| 4449 | ISZ MIKE7 /ARE WE OUT OF ENTRIES |
| 4450 | JMP AAB /NO |
| 4451 | / |
| 4452 | / NOW THE SORTING IS DONE |
| 4453 | / |
| 4454 | JMS INIT /INITIALIZE POINTERS |
| 4455 | DCA TOTAL /ZERO OUT TOTAL |
| 4456 | MIKE2, ISZ MA |
| 4457 | TAD I MA |
| 4458 | JMS I PRSYM /PUT OUT THE SYMBOL |
| 4459 | TAD C7240 |
| 4460 | JMS I P2 /PUT OUT THE TERMINATOR |
| 4461 | IAC |
| 4462 | TAD I MA |
| 4463 | DCA L14 |
| 4464 | TAD I L14 /GET CONTROL BITS FROM SYMBOL TABLE |
| 4465 | AND P20 |
| 4466 | SNA CLA /IS IT DIMENSIONED |
| 4467 | JMP MIKE5 /NO |
| 4468 | TAD I MA /YES, COMPUTE THE TOTAL LENGTH |
| 4469 | JMS I DIM |
| 4470 | DCA L26 |
| 4471 | TAD I L14 |
| 4472 | CIA |
| 4473 | DCA L73 |
| 4474 | TAD L26 |
| 4475 | ISZ L73 |
| 4476 | JMP .-2 |
| 4477 | SKP /GOT IT |
| 4478 | MIKE5, IAC /IF NOT DIMENSIONED, USE ONE A LENGTH |
| 4479 | DCA MB /SAVE LENGTH |
| 4480 | TAD I MA |
| 4481 | JMS I MODE /WHAT IS THE MODE OF THE SYMBOL |
| 4482 | TAD MB /FP, MULTIPLY BY THREE |
| 4483 | RAL CLL |
| 4484 | TAD MB |
| 4485 | DCA INIT /SAVE IT |
| 4486 | TAD TOTAL /GET TOTAL REMAINING LENGTH OF STRING |
| 4487 | CIA |
| 4488 | TAD INIT /SUBTRACT CURRENT LENGTH FROM IT |
| 4489 | SPA CLA /WHICH IS BIGGER |
| 4490 | JMP .+3 /REMAINING PORTION IS BIGGER |
| 4491 | TAD INIT /CURRENT PORTION IS BIGGER, REPLACE REMAINING PORTION |
| 4492 | DCA TOTAL |
| 4493 | ISZ MA |
| 4494 | TAD MA |
| 4495 | TAD C3 |
| 4496 | DCA MB |
| 4497 | TAD I MB /GET NEXT ENTRY STRING NUMBER |
| 4498 | CIA |
| 4499 | TAD I MA /SUBTRACT CURRENT STRING NUMBER |
| 4500 | SZA CLA /ARE THEY EQUAL |
| 4501 | JMP MIKE1 /NO |
| 4502 | ISZ MA /YES, GET THE DIFFERENCE |
| 4503 | ISZ MB |
| 4504 | TAD I MB |
| 4505 | CIA |
| 4506 | TAD I MA |
| 4507 | DCA MB /AND SAVE |
| 4508 | TAD MB /SUBTRACT DIFFERENCE FROM TOTAL REMAINING |
| 4509 | CIA |
| 4510 | TAD TOTAL |
| 4511 | MIKE6, DCA TOTAL /SAVE |
| 4512 | TAD MB /GET THE DIFFERENCE |
| 4513 | DCA L26 |
| 4514 | JMS I BSS /RESERVE THAT MANY LOCATIONS |
| 4515 | ISZ MIKE7 /ARE WE DONE |
| 4516 | JMP MIKE2 /NO |
| 4517 | JMP I ROGER /YES |
| 4518 | MIKE1, TAD TOTAL /SWITCH TOTAL TO THE CURRENT LOCATION |
| 4519 | DCA MB |
| 4520 | ISZ MA /EQUALIZE POINTERS |
| 4521 | JMP MIKE6 |
| 4522 | / |
| 4523 | INIT, 0 |
| 4524 | TAD MIKE8 /GET ENTRY COUNT |
| 4525 | CIA /SET NEGATIVE |
| 4526 | DCA MIKE7 /SAVE |
| 4527 | TAD POINTZ /GET TABLE POINTER |
| 4528 | DCA MA /SAVE |
| 4529 | JMP I INIT |
| 4530 | / |
| 4531 | ROGER, PTEMP |
| 4532 | P20, 20 |
| 4533 | $ |
| 4534 | |
| 4535 | \f |