1 /OS8 BASIC COMPILER, V5 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 // 10 / 11 / 12 / 13 / 14 /COPYRIGHT (C) 1972, 1973, 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 /DEC-S8-LBASA-B-LA 41 / 42 /COPYRIGHT C 1972, 1973, 1974 43 / 44 /DIGITAL EQUIPMENT CORPORATION 45 /MAYNARD,MASSACHUSETTS 01754 46 / 47 /AUGUST 19, 1972 48 / 49 /HANK MAURER, 1972 50 /SHAWN SPILMAN, 1973 51 / 52 / 53 /ASSEMBLE AND LOAD AS FOLLOWS: 54 / 55 / .R PAL8 56 / *BCOMP,BCOMP 429 000360 5406 JMP I XABORT 430 000361 1473 TAD I QERMSG /SET POST PROCESSOR ERROR SWITCH 431 000362 3765 DCA ERMSG2 432 000363 5756 JMP I POSTX /START IT UP 433 / RESTORE, PRINT, AND INPUT PROCESSORS 434 000365 1712 PAGE 000366 7607 000367 6471 000370 7441 000371 6066 000372 6242 000373 2346 000374 6600 000375 7657 000376 6777 000377 1133 435 000400 4474 INPUT, JMS I QLODSN /OUTPUT STMT NUM 436 000401 4777 JMS GETFN /LOOK FOR #: 437 000402 7130 INPUTL, CLL CML RAR /PROCESS INPUT STMT 438 000403 4505 JMS I QEXPR /GET EXPR 439 000404 5510 JMP I QREMARK 440 000405 4511 JMS I QGETA1 /GET TOP OF STACK 441 000406 1056 TAD TYPE1 /LOOK AT THE TYPE 442 000407 7710 SPA CLA 443 000410 5227 JMP RSTRNG /READ STRING 444 000411 4476 JMS I QMODSET /SET MODE 445 000412 7132 CLL CML RTR /IS IT DIMENSIONED ? 446 000413 0056 AND TYPE1 447 000414 7640 SZA CLA 448 000415 5776 JMP I (DIMREAD/YES 449 000416 1375 TAD (READ /OUTPUT READ COMMAND 450 000417 4500 JMS I QOUTWRD 451 000420 1374 TAD (FSTA /USE SCALAR STORE 452 000421 1057 FININP, TAD SYMBL1 /PLUS SYMBOL NUMBER 453 000422 4500 JMS I QOUTWRD /OUTPUT INSTR 454 000423 4513 JMS I QCHECKC /LOOK FOR , 455 000424 7724 -54 456 000425 5507 JMP I QNEWLIN /END OF INPUT 457 000426 5202 JMP INPUTL /YES, LOOP 458 000427 7130 RSTRNG, CLL CML RAR /SET MODE 459 000430 4476 JMS I QMODSET /TO STRING 460 000431 7132 CLL CML RTR /SUBSCRIPTED ? 461 000432 0056 AND TYPE1 462 000433 7650 SNA CLA 463 000434 5237 JMP .+3 /NO 464 000435 4512 JMS I QLOADSS /LOAD SS REG 465 000436 1373 TAD (SAREAD-SREAD 466 000437 1372 TAD (SREAD /STRING READ 467 000440 5221 JMP FININP /USE SOME COMMON CODE 468 000441 4474 PRINT, JMS I QLODSN /OUTPUT STMT NUM 469 000442 4777 JMS GETFN /GET FILE NUMBER 470 000443 3505 DCA I QEXPR /USE ENTRY AS SWITCH 471 000444 3062 PRINTL, DCA PCRLF /CLEAR THE FLAG 472 000445 4502 JMS I QGETC /LOOK FOR A CHAR 473 000446 5332 JMP PRTEND /NONE LEFT, END PRINT 474 000447 1371 TAD (-73 /; ? 475 000450 7450 SNA 476 000451 5257 JMP NOCR /YES, DON'T SPACE OUTPUT 477 000452 1370 TAD (73-54 /, ? 478 000453 7640 SZA CLA 479 000454 5262 JMP TABPNT /LOOK FOR TAB OR PNT 480 000455 1367 TAD (FUNC3+20 481 000456 4500 JMS I QOUTWRD /OUTPUT FUNC3+20 (COMMA) 482 000457 3505 NOCR, DCA I QEXPR /CLEAR THE SWITCH 483 000460 7201 CLA IAC /SET NO CRLF FLAG 484 000461 5244 JMP PRINTL 485 000462 1505 TABPNT, TAD I QEXPR /WAS LAST THING AN EXPR ? 486 000463 7640 SZA CLA 487 000464 5507 JMP I QNEWLIN /YES, CAN'T HAVE TWO IN A ROW 488 000465 4525 JMS I QBACK1 /PUT THAT CHAR BACK 489 000466 4501 JMS I QSAVECP /SAVE CHAR POS 490 000467 4475 JMS I QCHKWD /LOOK FOR "TAB(" 491 000470 3132 WTAB 492 000471 5312 JMP TRYPNT /NO TAB 493 000472 1366 TAD (FUNC3+100 494 000473 3345 PFCALL, DCA PRFUN /SAVE PRINT FUNCTION 495 000474 4505 JMS I QEXPR /GET ARG 496 000475 5510 JMP I QREMARK 497 000476 4520 JMS I QLOAD /LOAD ARG 498 000477 1056 TAD TYPE1 /MUST BE NUMERIC 499 000500 7700 SMA CLA 500 000501 5305 JMP .+4 /OK, IT IS 501 000502 4473 BADPF, JMS I QERMSG /PRINT ERROR 502 000503 0622 0622 /BAD FUNCTION REFERENCE 503 000504 5510 JMP I QREMARK 504 000505 4513 JMS I QCHECKC /LOOK FOR ) 505 000506 7727 -51 506 000507 5302 JMP BADPF /BAD FUN REFERENCE 507 000510 1345 TAD PRFUN /OUTPUT FUNCTION CALL 508 000511 5330 JMP PUT1 509 000512 4504 TRYPNT, JMS I QRESTCP /RESTORE CHAR POS 510 000513 4475 JMS I QCHKWD /LOOK FOR PNT( 511 000514 5561 WPNT 512 000515 5320 JMP PEXP /NO 513 000516 1365 TAD (FUNC3+120 514 000517 5273 JMP PFCALL /GO DO FUN CALL 515 000520 4504 PEXP, JMS I QRESTCP /RESTORE CHAR POS 516 000521 4505 JMS I QEXPR /GET EXPR TO BE PRINTED 517 000522 5510 JMP I QREMARK 518 000523 4520 JMS I QLOAD /PUT THING INTO FAC (OR SAC) 519 000524 7130 CLL CML RAR 520 000525 0056 AND TYPE1 /GET TYPE BIT 521 000526 7106 CLL RTL /INTO AC 11 522 000527 1364 TAD (WRITE /SWRITE=WRITE+1 523 000530 4500 PUT1, JMS I QOUTWRD 524 000531 5244 JMP PRINTL 525 000532 1062 PRTEND, TAD PCRLF /DID PRINT END WITH 526 000533 7640 SZA CLA /, OR ; 527 000534 5507 JMP I QNEWLIN /YES, NO CR LF 528 000535 1363 TAD (FUNC3+40 529 000536 4500 PUT2, JMS I QOUTWRD /CALL TO CRLF ROUTINE 530 000537 5507 JMP I QNEWLIN /END OF PRINT 531 000540 4474 RESTOR, JMS I QLODSN /OUTPUT LOAD STMT NUMBER 532 000541 7201 CLA IAC /NO COLON NEEDED 533 000542 4777 JMS GETFN /LOAD FILE REG 534 000543 1362 TAD (REST /OUTPUT RESTORE OP 535 000544 5336 JMP PUT2 536 PRFUN, 537 000545 0000 LODSN, 0 /OUTPUT STMT NUMBER INTO CODE 538 000546 1062 TAD NOSN /ANY STMT NUMBER ? 539 000547 7650 SNA CLA 540 000550 5745 JMP I LODSN /NO, JUST RETURN 541 000551 1134 TAD WORD1 /NOW OUTPUT "LOAD STMT NUM REG" 542 000552 1361 TAD (LOADSN 543 000553 4500 JMS I QOUTWRD 544 000554 1135 TAD WORD2 545 000555 4500 JMS I QOUTWRD 546 000556 5745 JMP I LODSN 547 548 000557 0000 XADD, FADD;AFADD 000560 6440 549 / DIM PROCESSOR 550 000561 6000 PAGE 000562 7405 000563 7440 000564 7412 000565 7520 000566 7500 000567 7420 000570 0017 000571 7705 000572 1000 000573 5500 000574 2400 000575 7411 000576 3356 000577 2111 551 000600 4514 DIM, JMS I QGETNAM /GET VAR NAME 552 000601 5301 JMP DIMERR 553 000602 1026 TAD TYPE /CHECK TYPE 554 000603 7006 RTL /MOVE BITS TO BE TESTED 555 000604 7700 SMA CLA /IF FUNC BIT SET THEN ERROR 556 000605 7420 SNL /IF DIM BIT NOT SET THEN ERROR 557 000606 5301 JMP DIMERR /NO DIMENSIONS 558 000607 4777 JMS SMLNUM /GET DIMENSION 559 000610 1025 TAD EXPON /SAVE IT 560 000611 3341 DCA DIM1 561 000612 4515 JMS I QCOMARP /, OR ) ?? 562 000613 5301 JMP DIMERR /NEITHER IS BAD 563 000614 5224 JMP TWODIM /, THERE'S ANOTHER DIMENSION 564 000615 4267 JMS CHKSDM /CHECK SIZE IF STRING 565 000616 5232 JMP CHKDIM /NUMERIC VECTOR, CHECK PREV REF 566 000617 7130 CLL CML RAR /THIS WAS A STRING SIZE DIM 567 000620 3026 DCA TYPE /PERFORM THE SPECIAL CASE 568 000621 4516 JMS I QLOOKUP 569 000622 6211 CDF 10 /OF NOT CHECKING PREVIOUS REFS 570 000623 5257 JMP FINDIM 571 000624 4777 TWODIM, JMS SMLNUM /GET SECOND 572 000625 4513 JMS I QCHECKC /LOOK FOR ) 573 000626 7727 -51 574 000627 5301 JMP DIMERR 575 000630 4267 JMS CHKSDM /CHECK SIZE IF STRING ARRAY 576 000631 1376 TAD (7000 /NUMERIC ARRAY 577 000632 1376 CHKDIM, TAD (7000 /GET NUMBER OF DIMS 578 000633 3021 DCA TEMP 579 000634 4516 JMS I QLOOKUP /FIND ST ENTRY 580 000635 6211 CDF 10 581 000636 1437 TAD I STPTR /LOOK AT DIM BITS 582 000637 0376 AND (7000 /PREVIOUSLY REFERENCED ? 583 000640 7450 SNA 584 000641 5247 JMP UNREFD /NO 585 000642 7500 SMA /IF MINUS, CAUSE ERROR 586 000643 1021 TAD TEMP /COMPARE NUMBER 587 000644 7640 SZA CLA 588 000645 5301 JMP DIMERR /NUMBER OF DIMS DON'T MATCH 589 000646 3021 DCA TEMP /ZERO TEMP 590 000647 7130 UNREFD, CLL CML RAR /PUT IN DIMENSIONED BIT 591 000650 1021 TAD TEMP /AND NUMBER OF DIMENSIONS 592 000651 7041 CIA /NEGATE WHOLE MESS (4000=-4000) 593 000652 1437 TAD I STPTR /TOGETHER WITH SYM NUMBER 594 000653 3437 DCA I STPTR 595 000654 2037 ISZ STPTR 596 000655 1341 TAD DIM1 /NOW FIRST DIMENSION (IF 2) 597 000656 3437 DCA I STPTR 598 000657 2037 FINDIM, ISZ STPTR 599 000660 1025 TAD EXPON /NOW SECOND (IF 2, OTHERWISE FIRST) 600 000661 3437 DCA I STPTR 601 000662 6201 CDF 602 000663 4513 JMS I QCHECKC /LOOK FOR , 603 000664 7724 -54 604 000665 5507 JMP I QNEWLIN /NONE, ASSUME END OF DIM 605 000666 5200 JMP DIM /GET NEXT ELEMENT 606 000667 0000 CHKSDM, 0 /CHECK SIZE OF STRINGS 607 000670 1026 TAD TYPE /WAS THIS A STRING DIM ? 608 000671 7700 SMA CLA 609 000672 5667 JMP I CHKSDM /NO, RETURN IMMEDIATE 610 000673 2267 ISZ CHKSDM /YES, SKIP ON RETURN 611 000674 1025 TAD EXPON /SIZE MUST BE < 73 612 000675 7100 CLL 613 000676 1375 TAD (-STRLIM-1 614 000677 7620 SNL CLA 615 000700 5667 JMP I CHKSDM /OK, SIZE < 73 616 000701 4473 DIMERR, JMS I QERMSG /GIVE ERROR 617 000702 0411 0411 618 000703 5510 JMP I QREMARK /ABORT STMT 619 / NEXT PROCESSOR 620 000704 4514 NEXTX, JMS I QGETNAM /GET INDEX VARIABLE 621 000705 5361 JMP BADNXT 622 000706 4516 JMS I QLOOKUP 623 000707 1026 TAD TYPE /MUST BE NUMERIC 624 000710 7710 SPA CLA 625 000711 5361 JMP BADNXT /IT ISN'T 626 000712 4476 JMS I QMODSET /N MODE 627 000713 1374 NEXTL, TAD (-STACKA-3 628 000714 1015 TAD STACK /ANY FOR'S LEFT ? 629 000715 7710 SPA CLA /(OK IF STACKA ABOVE 4000) 630 000716 5361 JMP BADNXT /NO 631 000717 4522 JMS I QPOP /GET LABEL ADDR 632 000720 3021 DCA TEMP 633 000721 4522 JMS I QPOP /GET LABEL FIELD 634 000722 3341 DCA LUPFLD 635 000723 4522 JMS I QPOP /GET STEP VAR 636 000724 1367 TAD XLOAD /LOAD IT 637 000725 4500 JMS I QOUTWRD 638 000726 4773 JMS I (PSETJF /PATCH! 639 000727 1067 TAD FINDEX /ADD IT TO STEP (FADD=0) 640 000730 4500 JMS I QOUTWRD 641 000731 1341 TAD LUPFLD /CREATE JUMP TO LOOP 642 000732 0372 AND (70 643 000733 7106 CLL RTL 644 000734 1371 TAD (JUMP 645 000735 4500 JMS I QOUTWRD 646 000736 7144 CLL CMA RAL /GET LABEL DEFINITION ADDR 647 000737 1021 TAD TEMP 648 000740 4500 JMS I QOUTWRD /OUTPUT IT AS LOW PART OF JUMP 649 DIM1, 650 000741 7402 LUPFLD, HLT 651 000742 7130 CLL CML RAR /SET LABEL DEFINED BIT 652 000743 1044 TAD LOCTRH /DEFINE END OF LOOP LABEL 653 000744 3421 DCA I TEMP 654 000745 2021 ISZ TEMP 655 000746 1045 TAD LOCTRL 656 000747 3421 DCA I TEMP 657 000750 6201 CDF 658 000751 1015 TAD STACK /BACK OFF STACK LEVEL 659 000752 3066 DCA STKLVL 660 000753 4532 JMS I QNOREGS /FORGET REGS 661 000754 1027 TAD SYMBOL /IS THIS THE RIGHT NEXT ? 662 000755 7041 CIA 663 000756 1067 TAD FINDEX 664 000757 7650 SNA CLA 665 000760 5507 JMP I QNEWLIN /YES, FINISHED 666 000761 4473 BADNXT, JMS I QERMSG /NEXT WITHOUT FOR 667 000762 1606 1606 668 000763 5510 JMP I QREMARK 669 000764 0040 UMOPR, 40;1;UMRTNE-1 000765 0001 000766 3534 670 000767 2000 XLOAD, FLDA;AFLDA 000770 6640 671 / UDEF PROCESSOR (DEFINE USER FUNCTION) 672 000771 5001 PAGE 000772 0070 000773 3350 000774 0655 000775 7657 000776 7000 000777 5400 673 001000 2333 UDEF, ISZ NFUNS /ROOM FOR ANOTHER FUN ? 674 001001 4530 JMS I QLETTER /GET FIRST LETTER 675 001002 5251 JMP DEFBAD /ERROR IN DEFINE 676 001003 7106 CLL RTL /PUT INTO HIGH ORDER 677 001004 7006 RTL 678 001005 7006 RTL 679 001006 3134 DCA NAME1 /SAVE CHAR 1 680 001007 4530 JMS I QLETTER /GET SECOND LETTER 681 001010 5251 JMP DEFBAD /ERROR 682 001011 1134 TAD NAME1 /COMBINE THE TWO CHARS 683 001012 7041 CIA 684 001013 3727 DCA I FUNPTR /SAVE IN FUN TABLE 685 001014 2327 ISZ FUNPTR 686 001015 4530 JMS I QLETTER /GET THIRD LETTER 687 001016 5251 JMP DEFBAD 688 001017 7041 CIA /SAVE NEG OF THIRD LETTER 689 001020 3727 DCA I FUNPTR 690 001021 2327 ISZ FUNPTR /BUMP POINTER 691 001022 1331 TAD M5 /NUMERIC ARG COUNT 692 001023 3021 DCA TEMP / (MAX OF 4 ARGS) 693 001024 7146 CLL CMA RTL /STRING ARG COUNT 694 001025 3022 DCA TEMP2 / (MAX OF 2 ARGS) 695 001026 4513 JMS I QCHECKC /IS IT A STRING FUN ? 696 001027 7734 -44 697 001030 7610 SKP CLA 698 001031 7130 CLL CML RAR /YES, SET TYPE OF FUNCTION 699 001032 3056 DCA TYPE1 700 001033 4513 JMS I QCHECKC /LOOK FOR ( 701 001034 7730 -50 702 001035 5251 JMP DEFBAD /ERROR IF MISSING 703 001036 4514 DALOOP, JMS I QGETNAM /GET AN ARG 704 001037 5251 JMP DEFBAD 705 001040 1026 TAD TYPE /LOOK AT ITS TYPE 706 001041 7104 CLL RAL /SHIFT TYPE BIT INTO LINK 707 001042 7640 SZA CLA 708 001043 5251 JMP DEFBAD /OTHER BITS MUST BE OFF 709 001044 7430 SZL 710 001045 5254 JMP STRARG /STRING ARG 711 001046 1021 TAD TEMP /GET ARG NUMBER 712 001047 2021 ISZ TEMP /INCREMENT IT 713 001050 5260 JMP DAPUSH /GO SAVE IT 714 001051 4473 DEFBAD, JMS I QERMSG /BAD USER DEF 715 001052 2504 2504 716 001053 5510 JMP I QREMARK 717 001054 1022 STRARG, TAD TEMP2 /GET ARG NUMBER 718 001055 2022 ISZ TEMP2 /AND INCREMENT IT 719 001056 5261 JMP DAPUSH+1 720 001057 5251 JMP DEFBAD /TOO MANY STRING ARGS 721 001060 1330 DAPUSH, TAD Q2 /ADJUST ARG NUMBER 722 001061 1330 TAD Q2 /ADD 4 FOR NUM, 2 FOR STRING 723 001062 7510 SPA 724 001063 7332 CLA CLL CML RTR /FIRST ARG STAYS IN AC 725 001064 1026 TAD TYPE /ADD IN TYPE BIT 726 001065 4521 JMS I QPUSH /SAVE IT ON STACK 727 001066 4515 JMS I QCOMARP /LOOK FOR , OR ) 728 001067 5251 JMP DEFBAD /ERROR IF NEITHER 729 001070 5236 JMP DALOOP /, GET NEXT ARG 730 001071 1022 TAD TEMP2 /GET TOTAL NUMBER OF ARGS 731 001072 1021 TAD TEMP 732 001073 1332 TAD Q10 /ADJUST COUNT 733 001074 7041 CIA /NEGATED 734 001075 3062 DCA DACNT 735 001076 1727 TAD I FUNPTR /GET FUNCTION CODE 736 001077 2327 ISZ FUNPTR /BUMP POINTER 737 001100 3134 DCA WORD1 /MAKE IT THE SEARCH OBJECT 738 001101 4726 JMS I XSTCHEK /MAKE SURE THERE'S ROOM 739 001102 7560 EOST-10 740 001103 4517 JMS I QLUKUP2 /ENTER NEW FUNCTION 741 001104 2570 FUNCTN 742 001105 7777 -1 743 001106 1062 TAD DACNT /PUT IN ARG COUNT 744 001107 4070 JMS SETFLD /(FIRST SET THE FIELD) 745 001110 3416 DCA I NEXT 746 001111 6201 DAPUT, CDF 747 001112 4522 JMS I QPOP /GET ARG TYPE (LAST TO FIRST) 748 001113 4070 JMS SETFLD /SET THE FIELD 749 001114 3416 DCA I NEXT /SAVE IT 750 001115 2062 ISZ DACNT /ANY MORE ? 751 001116 5311 JMP DAPUT /YES 752 001117 1056 TAD TYPE1 /PUT IN TYPE OF FUNCTION 753 001120 3416 DCA I NEXT 754 001121 6201 CDF 755 001122 4513 JMS I QCHECKC /LOOK FOR A COMMA 756 001123 7724 -54 757 001124 5507 JMP I QNEWLIN /NO COMMA, END OF LINE 758 001125 5200 JMP UDEF /GET NEXT DEFINITION 759 001126 2317 XSTCHEK,STCHEK 760 001127 6162 FUNPTR, ENDFNS 761 001130 0002 Q2, 2 /THESE FOUR WORDS 762 001131 7773 M5, -5 /PREVENT ERRONEOUS "SAVES" 763 001132 0010 Q10, 10 /BY THE ROUTINE SAVAC 764 001133 7757 NFUNS, -21 /WHEN THE OP STACK IS EMPTY 765 STACKO, /OPERAND STACK 766 STOKSZ=UDEF+200-STACKO 767 / DEF PROCESSOR 768 PAGE 769 001200 4532 DEF, JMS I QNOREGS /FORGET REGS 770 001201 4514 JMS I QGETNAM /GET FUN NAME 771 001202 5253 JMP BADDEF /NO GOOD 772 001203 1026 TAD TYPE /SAVE ITS TYPE 773 001204 3022 DCA TEMP2 774 001205 3061 DCA ARGCNT /ZERO ARG COUNT 775 001206 1026 TAD TYPE /TYPE MUST BE 3000 OR 7000 776 001207 7006 RTL /MOVE BITS TO BE TESTED 777 001210 7710 SPA CLA /FUN BIT OFF IS AN ERROR 778 001211 7420 SNL /DIM BIT OFF IS AN ERROR 779 001212 5253 JMP BADDEF 780 001213 4476 JMS I QMODSET /ENTER N MODE 781 001214 1027 TAD SYMBOL /SAVE FUNCTION NAME 782 001215 3246 DCA FUNNAM 783 001216 4514 ARGLUP, JMS I QGETNAM /GET ARG NAME 784 001217 5253 JMP BADDEF 785 001220 7150 CLL CMA RAR /LOOK AT TYPE 786 001221 0026 AND TYPE 787 001222 7640 SZA CLA 788 001223 5253 JMP BADDEF /ARG WAS AN ARRAY OR FUNC 789 001224 4516 JMS I QLOOKUP /ENTER INTO S.T. 790 001225 1037 TAD STPTR /SAVE ST ADDRESS 791 001226 4521 JMS I QPUSH 792 001227 1027 TAD SYMBOL /AND SYMBOL NUMBER 793 001230 4521 JMS I QPUSH 794 001231 1026 TAD TYPE /AND ARG TYPE 795 001232 4521 JMS I QPUSH 796 001233 2061 ISZ ARGCNT /BUMP ARG COUNT 797 001234 4515 JMS I QCOMARP /LOOK FOR , OR ) 798 001235 5253 JMP BADDEF 799 001236 5216 JMP ARGLUP /, GET NEXT ARG 800 001237 1246 TAD FUNNAM /ENTER FUNCTION 801 001240 3134 DCA WORD1 802 001241 1061 TAD ARGCNT /FIRST GET ENOUGH ROOM 803 001242 7041 CIA 804 001243 1377 TAD (EOST-3 805 001244 3246 DCA FUNNAM 806 001245 4776 JMS STCHEK /CHECK IT 807 001246 0000 FUNNAM, 0 808 001247 4517 JMS I QLUKUP2 /LOOK UP FUNCTION 809 001250 2570 FUNCTN 810 001251 7777 -1 811 001252 5256 JMP OKFUN /OK, NOT MULTIPLY DEFINED 812 001253 4473 BADDEF, JMS I QERMSG /BAD DEFINE 813 001254 0405 0405 814 001255 5510 JMP I QREMARK 815 001256 1016 OKFUN, TAD NEXT /SAVE "NEXT" 816 001257 3012 DCA X12 817 001260 1016 TAD NEXT /INCREMENT NEXT BY 818 001261 1061 TAD ARGCNT /NUMBER OF ARGS 819 001262 1375 TAD (4 /PLUS 4 820 001263 3016 DCA NEXT 821 001264 4070 JMS SETFLD /GET ROOM FOR LABEL 822 001265 7130 CLL CML RAR /FOR JUMP AROUND 823 001266 3416 DCA I NEXT /SET DEFINED BIT 824 001267 1016 TAD NEXT /SAVE ADDR 825 001270 3062 DCA JAROND /FOR LATER 826 001271 2016 ISZ NEXT 827 001272 6201 CDF 828 001273 1071 TAD LUFLD /SAVE FIELD OF FUN BLOCK 829 001274 3336 DCA FUNFLD 830 001275 1071 TAD LUFLD /ALSO FIELD OF LABEL 831 001276 3774 DCA JARFLD 832 001277 1071 TAD LUFLD /GET FIELD 833 001300 0373 AND (70 /ISOLATE BITS 834 001301 7106 CLL RTL /INTO JUMP INSTR 835 001302 1372 TAD (JUMP 836 001303 4500 JMS I QOUTWRD /OUTPUT IT 837 001304 1062 TAD JAROND /OUTPUT LOW PART 838 001305 4500 JMS I QOUTWRD /OF JUMP ADDR 839 001306 1015 TAD STACK /SAVE STACK 840 001307 3060 DCA OLDSTK 841 001310 1061 TAD ARGCNT /GET COUNT 842 001311 7040 CMA 843 001312 3021 DCA TEMP 844 001313 1061 TAD ARGCNT /TWICE 845 001314 7041 CIA 846 001315 3061 DCA ARGCNT 847 001316 1061 TAD ARGCNT /STORE COUNT FIRST 848 001317 5336 JMP FUNFLD 849 001320 6201 CHGARG, CDF 850 001321 4522 JMS I QPOP /GET ARG TYPE 851 001322 3026 DCA TYPE 852 001323 1026 TAD TYPE 853 001324 4771 JMS GENTMP /GENERATE A TEMPORARY 854 001325 4522 SWTARG, JMS I QPOP /PURGE SYMBOL NUMBER 855 001326 7200 CLA 856 001327 4522 JMS I QPOP /GET ST ADDR OF 857 001330 3037 DCA STPTR /OF DUMMY ARG 858 001331 6211 CDF 10 859 001332 1027 TAD SYMBOL /PUT IN TEMP SYMBOL NUMBER 860 001333 3437 DCA I STPTR /TO FAKE EXPR 861 001334 1026 TAD TYPE /CREATE ARG DESCRIPTOR 862 001335 1027 TAD SYMBOL /FOR FUNC BLOCK 863 001336 7402 FUNFLD, HLT 864 001337 3412 DCA I X12 /AND PUT IT INTO F.B. 865 001340 2021 ISZ TEMP /MORE ARGS? 866 001341 5320 JMP CHGARG /YUP 867 001342 7130 CLL CML RAR 868 001343 0022 AND TEMP2 /SAVE TYPE OF FUNCTION 869 001344 3412 DCA I X12 870 001345 7130 CLL CML RAR /SET DEFINED BIT 871 001346 1044 TAD LOCTRH /AND LOCATION COUNTER 872 001347 3412 DCA I X12 /AT START OF FUNCTION 873 001350 1045 TAD LOCTRL 874 001351 3412 DCA I X12 875 001352 6201 CDF 876 001353 1015 TAD STACK /SAVE BOTTOM OF STACK 877 001354 3013 DCA X13 878 001355 1060 TAD OLDSTK /RESTORE TO TOP 879 001356 3015 DCA STACK 880 001357 4513 JMS I QCHECKC /FIND = 881 001360 7703 -75 882 001361 5253 JMP BADDEF 883 001362 4505 JMS I QEXPR /COMPILE FUNCTION 884 001363 5510 JMP I QREMARK 885 001364 4520 JMS I QLOAD /GET IT INTO AC 886 001365 1013 TAD X13 /RESTORE STACK 887 001366 3015 DCA STACK /TO BOTTOM 888 001367 5770 JMP RESARG /FINISH DEF 889 / DEF PROCESSOR (FINALE) 890 001370 1400 PAGE 001371 4200 001372 5001 001373 0070 001374 1413 001375 0004 001376 2317 001377 7565 891 001400 1413 RESARG, TAD I X13 /GET ST ADDR 892 001401 3037 DCA STPTR 893 001402 1413 TAD I X13 /PUT BACK CORRECT SYM # 894 001403 6211 CDF 10 895 001404 3437 DCA I STPTR 896 001405 6201 CDF 897 001406 2013 ISZ X13 /SKIP OTHER STUFF 898 001407 2061 ISZ ARGCNT 899 001410 5200 JMP RESARG /RESTORE NEXT 900 001411 1377 TAD (RET /OUTPUT RETURN CODE 901 001412 4500 JMS I QOUTWRD 902 001413 7402 JARFLD, HLT 903 001414 7130 CLL CML RAR /SET LABEL DEFINED BIT 904 001415 1044 TAD LOCTRH /STICK IN ADDR 905 001416 3462 DCA I JAROND /OF END OF FUNCT 906 001417 2062 ISZ JAROND /PLUS ONE 907 001420 1045 TAD LOCTRL /STORE LOW ADDR 908 001421 3462 DCA I JAROND 909 001422 6201 CDF 910 001423 1033 TAD TMPCNT /SAVE NEW TEMP LEVELS 911 001424 3034 DCA TMPLVL 912 001425 1035 TAD STMPCT 913 001426 3036 DCA STMPLV 914 001427 4532 JMS I QNOREGS /FORGET REGS 915 001430 5507 JMP I QNEWLIN /END OF DEF 916 / DATA STATEMENT PROCESSOR 917 001431 4526 DATA, JMS I QNUMBER /LOOK FOR NUMBER 918 001432 5241 JMP DSTRNG /MUST BE A STRING 919 001433 4255 JMS DENTRY /MAKE AN ENTRY 920 001434 7775 -3 /3 WORDS LONG 921 001435 4513 MORDAT, JMS I QCHECKC /LOOK FOR , 922 001436 7724 -54 923 001437 5507 JMP I QNEWLIN /END OF DATA 924 001440 5231 JMP DATA /DO NEXT ELEMENT 925 001441 4527 DSTRNG, JMS I QSTRING /LOOK FOR STRING 926 001442 5507 JMP I QNEWLIN /BAD 927 001443 1134 TAD WORD1 /COMPUTE SIZE 928 001444 7001 IAC 929 001445 7170 CLL CML CMA RAR 930 001446 3253 DCA DSSIZE /INCLUDING CHAR COUNT 931 001447 1134 TAD WORD1 /NEGATE COUNT 932 001450 7041 CIA 933 001451 3134 DCA WORD1 934 001452 4255 JMS DENTRY /CREATE ENTRY 935 001453 0000 DSSIZE, 0 936 001454 5235 JMP MORDAT /GO DO MORE 937 001455 0000 DENTRY, 0 /MAKE AN ENTRY IN DATA LIST 938 001456 1655 TAD I DENTRY /GET SIZE 939 001457 3021 DCA TEMP 940 001460 2255 ISZ DENTRY 941 001461 1021 TAD TEMP /INCREMENT SIZE COUNT 942 001462 1051 TAD DLSIZE 943 001463 3051 DCA DLSIZE 944 001464 1376 TAD (EOST /HOW MUCH DO WE NEED ? 945 001465 1021 TAD TEMP 946 001466 3270 DCA .+2 947 001467 4775 JMS STCHEK /ASK FOR IT 948 001470 0000 0 949 001471 1774 TAD FREFLD /GET FIELD OF FREE SPACE 950 001472 3071 DCA LUFLD /SAVE IT IN SETFLD SUBROUTINE 951 001473 6211 DATFLD, CDF 10 952 001474 1016 TAD NEXT /HOOK IN NEW ENTRY 953 001475 7001 IAC 954 001476 3725 DCA I DATPTR 955 001477 2325 PATCH3, ISZ DATPTR /POINTER THEN FIELD 956 001500 1071 TAD LUFLD 957 001501 3725 DCA I DATPTR 958 001502 4070 JMS SETFLD 959 001503 1021 TAD TEMP /SAVE SIZE OF ENTRY 960 001504 3416 DCA I NEXT 961 001505 1373 TAD (WORD1-1/MAKE READY TO MOVE 962 001506 3010 DCA X10 963 001507 6201 DELOOP, CDF 964 001510 1410 TAD I X10 /GET WORD 965 001511 4070 JMS SETFLD 966 001512 3416 DCA I NEXT /SAVE IT 967 001513 2021 ISZ TEMP /MORE ? 968 001514 5307 JMP DELOOP 969 001515 3416 DCA I NEXT /SAVE ROOM FOR POINTER&CDF 970 001516 1016 TAD NEXT /THIS IS NOW LAST ENTRY 971 001517 3325 DCA DATPTR 972 001520 1071 PATCH4, TAD LUFLD 973 001521 3273 DCA DATFLD /AND THIS IS ITS FIELD 974 001522 3416 DCA I NEXT 975 001523 6201 CDF 976 001524 5655 JMP I DENTRY 977 001525 2566 DATPTR, DATLST 978 / READ PROCESSOR 979 001526 4474 READX, JMS I QLODSN /OUTPUT STMT NUMBER 980 001527 7130 CLL CML RAR /GET VAR TO READ 981 001530 4505 JMS I QEXPR /SAME AS LEFT SIDE OF LET 982 001531 5510 JMP I QREMARK 983 001532 4511 JMS I QGETA1 /GET VAR INFO FROM STACK 984 001533 1056 TAD TYPE1 /SET MODE 985 001534 4476 JMS I QMODSET 986 001535 1056 TAD TYPE1 /WHAT TYPE ? 987 001536 7710 SPA CLA 988 001537 1372 TAD (SRDL-NRDL 989 001540 1371 TAD (NRDL /STRING OR NUMERIC 990 001541 4500 JMS I QOUTWRD 991 001542 7132 CLL CML RTR /SUBSCRIPTS ? 992 001543 0056 AND TYPE1 993 001544 7650 SNA CLA 994 001545 5350 JMP .+3 /NO 995 001546 4512 JMS I QLOADSS /YES, LOAD SS REGS 996 001547 1370 TAD (AFSTA-FSTA 997 001550 1367 TAD (FSTA /ARRAY OR SCALAR STORE 998 001551 1057 TAD SYMBL1 999 001552 4500 JMS I QOUTWRD 1000 001553 4513 JMS I QCHECKC /ANY MORE ? 1001 001554 7724 -54 /CHECK FOR COMMA 1002 001555 5507 JMP I QNEWLIN /NO 1003 001556 5327 JMP READX+1 /YUP 1004 001557 0040 AMPSND, 40;1;AMPRTN-1;4000;SCONTS;SCONTS 001560 0001 001561 6506 001562 4000 001563 1565 001564 1565 1005 001565 0000 SCONTS, FADD;AISUB 001566 6400 1006 / FOR PROCESSOR 1007 001567 2400 PAGE 001570 4300 001571 7521 001572 7740 001573 0133 001574 2266 001575 2317 001576 7570 001577 7404 1008 001600 4474 FOR, JMS I QLODSN /OUTPUT STMT NUMBER 1009 001601 4514 JMS I QGETNAM /GET INDEX VARIABLE 1010 001602 5777 JMP BADFOR /BAD 1011 001603 1026 TAD TYPE /MUST BE NUMBER 1012 001604 7640 SZA CLA 1013 001605 5777 JMP BADFOR /ITS NOT 1014 001606 4516 JMS I QLOOKUP /ST SEARCH 1015 001607 1027 TAD SYMBOL /SAVE INDEX VAR 1016 001610 3067 DCA FINDEX /FOR LATER 1017 001611 4513 JMS I QCHECKC /FIND = 1018 001612 7703 -75 1019 001613 5777 JMP BADFOR 1020 001614 1017 TAD CHRPTR /SAVE CHAR POSITION 1021 001615 3336 DCA FORCP /IN A SPECIAL PLACE 1022 001616 1020 TAD NCHARS 1023 001617 3335 DCA FORNC 1024 001620 7410 SKP 1025 001621 4504 FINDTO, JMS I QRESTCP /RESTORE CHAR POS 1026 001622 4502 JMS I QGETC /SKIP A CHAR 1027 001623 5777 JMP BADFOR 1028 001624 7200 CLA 1029 001625 4501 JMS I QSAVECP /SAVE THIS POSITION 1030 001626 4475 JMS I QCHKWD /LOOK FOR "TO" 1031 001627 6273 WTO 1032 001630 5221 JMP FINDTO /KEEP GOING 1033 001631 4776 JMS FSUB2 /LOAD LIMIT AND SAVE IN TEMP 1034 001632 3333 DCA FLIMIT /SAVE LIMIT VAR 1035 001633 4475 JMS I QCHKWD /LOOK FOR "STEP" 1036 001634 2363 WSTEP 1037 001635 5327 JMP STEP1 /USE 1.0 FOR THE STEP 1038 001636 4776 JMS FSUB2 /LOAD STEP AND SAVE IN TEMP 1039 001637 3334 DCA FSTEP /SAVE STEP VAR 1040 001640 1375 TAD (SETJF /OUTPUT SETJF 1041 001641 4500 JMS I QOUTWRD 1042 001642 1374 TAD (JFOR /STEP IS VARIABLE, USE JFOR 1043 001643 3062 SAVEJF, DCA FORJMP /SAVE CORRECT JUMP 1044 001644 4502 JMS I QGETC /ANY MORE CHARS ? 1045 001645 7410 SKP 1046 001646 5777 JMP BADFOR /YES, ERROR 1047 001647 1335 TAD FORNC /RESTORE CHAR POSITION 1048 001650 3020 DCA NCHARS /FROM SPECIAL PLACE 1049 001651 1336 TAD FORCP 1050 001652 3017 DCA CHRPTR 1051 001653 4773 JMS FSUB1 /COMPILE INITIAL VALUE INTO FAC 1052 001654 4772 JMS STCHEK /CHECK FOR ROOM 1053 001655 7570 EOST 1054 001656 1771 TAD FREFLD /SAVE FIELD OF LABELS 1055 001657 3260 DCA FORFLD 1056 001660 7402 FORFLD, HLT 1057 001661 7130 CLL CML RAR /SET LABEL DEFINED BIT 1058 001662 1044 TAD LOCTRH /DEFINE THE LOOP LABEL 1059 001663 3416 DCA I NEXT 1060 001664 1045 TAD LOCTRL 1061 001665 3416 DCA I NEXT 1062 001666 7130 CLL CML RAR /SET LABEL DEFINED BIT 1063 001667 3416 DCA I NEXT /FOR END OF LOOP LABEL 1064 001670 6201 CDF 1065 001671 1333 TAD FLIMIT /TEST FOR DONE 1066 001672 1343 TAD XSUB /BY SUBTRACTING THE LIMIT 1067 001673 4500 JMS I QOUTWRD 1068 001674 1260 TAD FORFLD /OUTPUT JUMP TO DONE 1069 001675 0370 AND (70 1070 001676 7106 CLL RTL /SHIFT FIELD BITS 1071 001677 1062 TAD FORJMP /USE PROPER JUMP INS 1072 001700 4500 JMS I QOUTWRD 1073 001701 1016 TAD NEXT /OUTPUT LOW PART OF JMP 1074 001702 4500 JMS I QOUTWRD 1075 001703 1333 TAD FLIMIT /FADD FLIMIT (FADD=0) 1076 001704 4500 JMS I QOUTWRD 1077 001705 1067 TAD FINDEX /FSTA INDEX 1078 001706 1367 TAD (FSTA 1079 001707 4500 JMS I QOUTWRD 1080 001710 1067 TAD FINDEX /PUT STUFF ONTO STACK 1081 001711 4521 JMS I QPUSH 1082 001712 1334 TAD FSTEP 1083 001713 4521 JMS I QPUSH 1084 001714 1260 TAD FORFLD 1085 001715 4521 JMS I QPUSH 1086 001716 1016 TAD NEXT 1087 001717 4521 JMS I QPUSH 1088 001720 2016 ISZ NEXT /BUMP NEXT AGAIN 1089 001721 1033 TAD TMPCNT /RESERVE THESE TEMPS 1090 001722 3034 DCA TMPLVL 1091 001723 4532 JMS I QNOREGS /FORGET REGISTORS 1092 001724 1015 TAD STACK /SET NEW STACK LEVEL 1093 001725 3066 DCA STKLVL 1094 001726 5510 JMP I QREMARK 1095 001727 1366 STEP1, TAD (3 /1.0 IS SLOT #3 1096 001730 3334 DCA FSTEP 1097 001731 1365 TAD (JGT /USE JGT 1098 001732 5243 JMP SAVEJF /GO DO THE REST 1099 001733 0000 FLIMIT, 0 /FOR LOOP UPPER LIMIT 1100 001734 0000 FSTEP, 0 /FOR LOOP STEP 1101 001735 0000 FORNC, 0 /FOR STMT CHAR POSITION 1102 001736 0000 FORCP, 0 1103 001737 7654 WTHEN, -124;-110;-105;-116 001740 7670 001741 7673 001742 7662 1104 001743 0400 XSUB, FSUB;AFSUB 001744 6500 1105 / USE PROCESSOR 1106 001745 1364 USEX, TAD (USE /OUTPUT USE OPERATOR 1107 001746 4500 JMS I QOUTWRD 1108 001747 4514 JMS I QGETNAM /GET ARRAY NAME 1109 001750 5354 JMP USEERR /ERROR 1110 001751 1026 TAD TYPE /CHECK TYPE 1111 001752 7700 SMA CLA /(MUST BE NUMERIC) 1112 001753 5356 JMP .+3 /IT WAS 1113 001754 4473 USEERR, JMS I QERMSG /ERROR IN USE STMT 1114 001755 2525 2525 1115 001756 7132 CLL CML RTR /SET DIM BIT 1116 001757 3026 DCA TYPE 1117 001760 4516 JMS I QLOOKUP /LOOKUP SYMBOL 1118 001761 1027 TAD SYMBOL /OUTPUT ARRAY NUMBER 1119 001762 4500 JMS I QOUTWRD 1120 001763 5510 JMP I QREMARK 1121 / IF AND IFEND PROCESSORS 1122 001764 7540 PAGE 001765 5004 001766 0003 001767 2400 001770 0070 001771 2266 001772 2317 001773 3314 001774 5010 001775 7401 001776 3326 001777 3323 1123 002000 4474 IF, JMS I QLODSN /OUTPUT STMT NUMBER 1124 002001 4505 JMS I QEXPR /GET LEFT EXPRESSION 1125 002002 5510 JMP I QREMARK 1126 002003 4502 JMS I QGETC /GET RELATIONAL OPERATOR 1127 002004 5262 JMP BADIF /ERROR IF NONE 1128 002005 7106 CLL RTL 1129 002006 7006 RTL /MOVE TO LEFT HALF 1130 002007 7006 RTL 1131 002010 3021 DCA TEMP /AND SAVE IT 1132 002011 4502 JMS I QGETC /GET 2 CHAR RELATIONALS 1133 002012 5262 JMP BADIF 1134 002013 1021 TAD TEMP /COMBINE THE 2 1135 002014 3022 DCA TEMP2 1136 002015 1377 TAD (IFOPS-1/SETUP POINTER 1137 002016 3010 DCA X10 1138 002017 1410 IFLUP1, TAD I X10 /GET JUMP OPCODE 1139 002020 7450 SNA 1140 002021 5271 JMP IFLUP2-1/NOT A 2 CHAR RELATIONAL 1141 002022 3311 DCA RELOPR /SAVE IT 1142 002023 1410 TAD I X10 /COMPARE CHARS 1143 002024 1022 TAD TEMP2 1144 002025 7640 SZA CLA 1145 002026 5217 JMP IFLUP1 /NOT THIS OOE 1146 002027 4505 GOTREL, JMS I QEXPR /GET RIGHT HALF 1147 002030 5510 JMP I QREMARK 1148 002031 7240 CLA CMA /GET TYPE OF RIGHT SIDE 1149 002032 1014 TAD OSTACK 1150 002033 3021 DCA TEMP 1151 002034 1421 TAD I TEMP 1152 002035 7710 SPA CLA 1153 002036 5265 JMP STRCMP /STRING, DO STRING COMPARE 1154 002037 1376 TAD (MINUS /NUMERIC, DO A SUBTRACT 1155 002040 4506 JMS I QOUTOPR 1156 002041 4501 NUMCMP, JMS I QSAVECP /SAVE CHAR POSITION 1157 002042 4475 JMS I QCHKWD /LOOK FOR "THEN" 1158 002043 1737 WTHEN 1159 002044 5255 JMP NOTHEN /NOT THEN 1160 002045 4477 GETIFN, JMS I QSNUM /GET STATEMENT NUMBER 1161 002046 5366 JMP BADGO2 1162 002047 1021 TAD TEMP /OUTPUT JUMP 1163 002050 1311 TAD RELOPR 1164 002051 4500 JMS I QOUTWRD 1165 002052 1022 TAD TEMP2 /TWO WORDS 1166 002053 4500 JMS I QOUTWRD 1167 002054 5507 JMP I QNEWLIN 1168 002055 4504 NOTHEN, JMS I QRESTCP /BACKUP CHAR POS 1169 002056 4475 JMS I QCHKWD /LOOK FOR "GOTO" 1170 002057 6271 WGOTO 1171 002060 7410 SKP 1172 002061 5245 JMP GETIFN /OK, GO GET STMT NUMBER 1173 002062 4473 BADIF, JMS I QERMSG /BAD IF STMT 1174 002063 1106 1106 1175 002064 5510 JMP I QREMARK 1176 002065 1375 STRCMP, TAD (SCOMPR-1 1177 002066 4506 JMS I QOUTOPR /OUTPUT STRING COMPARE 1178 002067 4476 JMS I QMODSET /BACK TO N MODE 1179 002070 5241 JMP NUMCMP /REST IS LIKE NUMERIC COMPARES 1180 002071 4525 JMS I QBACK1 /PUT BACK NON OPERATOR 1181 002072 1410 IFLUP2, TAD I X10 /GET CONDITIONAL JUMP 1182 002073 7450 SNA 1183 002074 5262 JMP BADIF /RELATIONAL INCORRECT 1184 002075 3311 DCA RELOPR 1185 002076 1410 TAD I X10 /COMPARE OPERATORS 1186 002077 1021 TAD TEMP 1187 002100 7650 SNA CLA 1188 002101 5227 JMP GOTREL /GOTIT 1189 002102 5272 JMP IFLUP2 1190 002103 4474 IFEND, JMS I QLODSN /OUTPUT STMT NUMBER 1191 002104 7201 CLA IAC /(NO COLON) 1192 002105 4311 JMS GETFN /GET FILE NUMBER 1193 002106 1374 TAD (JEOF /SETUP CORRECT JUMP 1194 002107 3311 DCA RELOPR 1195 002110 5241 JMP NUMCMP /GO FIND "THEN" OR "GOTO" 1196 RELOPR, 1197 002111 0000 GETFN, 0 /GET FILE NUMBER 1198 002112 3062 DCA COLON /SAVE COLON SWITCH 1199 002113 4513 JMS I QCHECKC /LOOK FOR # 1200 002114 7735 -43 1201 002115 5340 JMP TTYFIL /NONE, MUST BE TTY 1202 002116 4505 JMS I QEXPR /GET FILE EXPR 1203 002117 5510 JMP I QREMARK /ERROR 1204 002120 1062 TAD COLON /DO WE NEED A COLON ? 1205 002121 7640 SZA CLA 1206 002122 5326 JMP .+4 /NO, SKIP THIS TEST 1207 002123 4513 JMS I QCHECKC /YES, LOOK FOR IT 1208 002124 7706 -72 1209 002125 5331 JMP BADFN /NOT THERE, BAD 1210 002126 4520 JMS I QLOAD /LOAD IT 1211 002127 1056 TAD TYPE1 /TYPE MUST BE NUMERIC 1212 002130 7710 SPA CLA 1213 002131 4473 BADFN, JMS I QERMSG /NOPE, IT ISN'T 1214 002132 0616 0616 1215 002133 7201 CLA IAC /SET IFNREG TO "NOT TTY" 1216 002134 3063 DCA IFNREG /SAVE NEW IFNREG 1217 002135 1373 TAD (FILENO /OUTPUT SET IFN COMMAND 1218 002136 4500 JMS I QOUTWRD 1219 002137 5711 JMP I GETFN 1220 002140 1063 TTYFIL, TAD IFNREG /IS IFNREG 0 ? 1221 002141 7650 SNA CLA 1222 002142 5711 JMP I GETFN /IF YES, QUIT 1223 002143 1372 TAD (CLRFN /OTHERWISE ZERO AC 1224 002144 4500 JMS I QOUTWRD 1225 002145 3063 DCA IFNREG /SET IFNREG TO TTY 1226 002146 5711 JMP I GETFN /RETURN 1227 / GOTO AND GOSUB 1228 002147 4477 GOTO, JMS I QSNUM /GET NUMBER 1229 002150 5366 JMP BADGO2 1230 002151 4476 JMS I QMODSET /ALL GOTO'S IN NMODE 1231 002152 7201 CLA IAC /JUMP=JSUB+1 1232 002153 5360 JMP .+5 1233 002154 4474 GOSUB, JMS I QLODSN /OUTPUT STMT NUM LOAD 1234 002155 4477 JMS I QSNUM /GET NUMBER 1235 002156 5366 JMP BADGO2 1236 002157 4476 JMS I QMODSET /ALL GOTO'S IN NMODE 1237 002160 1371 TAD (JSUB /GET GOSUB OPCODE 1238 002161 1021 TAD TEMP /PLUS ADDRESS 1239 002162 4500 JMS I QOUTWRD /OUTPUT IT 1240 002163 1022 TAD TEMP2 /BOTH WORDS 1241 002164 4500 JMS I QOUTWRD 1242 002165 5507 JMP I QNEWLIN 1243 002166 4473 BADGO2, JMS I QERMSG /BAD GOTO OR GOSUB 1244 002167 1615 1615 /NUMBER MISSING 1245 002170 5510 JMP I QREMARK 1246 / TABLE SEARCH FOR LITERALS, STMT NUMBERS, TEMPS, ETC. 1247 002171 5000 PAGE 002172 7501 002173 7402 002174 5400 002175 6566 002176 2755 002177 4140 1248 002200 0000 LUKUP2, 0 1249 002201 1600 TAD I LUKUP2 /GET THE BUCKET START 1250 002202 3342 DCA OLDN3 /SAVE IT AS THE PREVIOUS ENTRY 1251 002203 2200 ISZ LUKUP2 1252 002204 1600 TAD I LUKUP2 /GET THE ENTRY SIZE 1253 002205 2200 ISZ LUKUP2 1254 002206 3346 DCA N3SIZE 1255 002207 1377 TAD (6211 /PRIME THE FIELD SETTER 1256 002210 3071 DCA LUFLD 1257 002211 4070 JMS SETFLD /NOW SET THE FIELD 1258 002212 1742 LOOK2, TAD I OLDN3 /GET ADDR OF NEXT ENTRY 1259 002213 3343 DCA NEWN3 /SAVE IT 1260 002214 2342 PATCH1, ISZ OLDN3 /GET TO FIELD OF NEW ENTRY 1261 002215 1742 TAD I OLDN3 /GET INTO AC 1262 002216 3233 DCA NEWFLD /AND SAVE IT 1263 002217 1343 TAD NEWN3 1264 002220 7450 SNA 1265 002221 5257 JMP HOOKIN /IF 0 ITS END OF LIST 1266 002222 7001 PATCH5, IAC 1267 002223 3010 DCA X10 /START OF VALUE INFO 1268 002224 1376 TAD (WORD1-1/SETUP POINTER TO VALUE 1269 002225 3011 DCA X11 1270 002226 1346 TAD N3SIZE /AND TEMP OF ENTRY SIZE 1271 002227 3344 DCA LTEMP 1272 002230 6201 CHKVAL, CDF 1273 002231 1411 TAD I X11 1274 002232 7141 CIA CLL /COMPARE THIS WORD 1275 002233 6211 NEWFLD, CDF 10 /FIELD OF NEW ENTRY 1276 002234 1410 TAD I X10 1277 002235 7640 SZA CLA 1278 002236 5250 JMP NOTSAM /NOT THIS ONE 1279 002237 2344 ISZ LTEMP /INCR SIZE COUNT 1280 002240 5230 JMP CHKVAL /MORE STUFF 1281 002241 1410 TAD I X10 /GET SYMBOL NUMBER 1282 002242 6201 L6201, CDF 1283 002243 3027 DCA SYMBOL 1284 002244 1233 TAD NEWFLD /MAKE ENTRY ADDRESSABLE 1285 002245 3071 DCA LUFLD /THROUGH SETFLD 1286 002246 2200 ISZ LUKUP2 /BUMP RETURN 1287 002247 5600 JMP I LUKUP2 1288 002250 7430 NOTSAM, SZL 1289 002251 5257 JMP HOOKIN /NEW SYMBOL < CURRENT 1290 002252 1343 TAD NEWN3 /GO TO NEXT ENTRY 1291 002253 3342 DCA OLDN3 /(MOVE POINTER) 1292 002254 1233 TAD NEWFLD /(AND FIELD) 1293 002255 3071 DCA LUFLD 1294 002256 5212 JMP LOOK2 1295 002257 7144 HOOKIN, CLL CMA RAL /HOW MANY WORDS NEEDED ? 1296 002260 1346 TAD N3SIZE 1297 002261 1375 TAD (EOST 1298 002262 3264 DCA .+2 1299 002263 4317 JMS STCHEK /MAKE SURE 1300 002264 0000 0 /WE GOT ENOUGH 1301 002265 1343 TAD NEWN3 /HOOK IN NEW ENTRY 1302 002266 6211 FREFLD, CDF 10 /CHANGE TO FREE FIELD 1303 002267 3416 DCA I NEXT 1304 002270 1233 PATCH2, TAD NEWFLD /HOOK IN FIELD 1305 002271 3416 DCA I NEXT 1306 002272 4070 JMS SETFLD /BACK TO FIELD OF OLD 1307 002273 1266 TAD FREFLD /PUT FIELD OF NEW 1308 002274 3742 DCA I OLDN3 1309 002275 7240 CLA CMA /BACK UP OLDN3 1310 002276 1342 TAD OLDN3 /SO THAT IT POINTS TO POINTER 1311 002277 3342 DCA OLDN3 1312 002300 7240 CLA CMA 1313 002301 1016 TAD NEXT /PUT POINTER TO NEW ENTRY 1314 002302 3742 DCA I OLDN3 /INTO OLD 1315 002303 1266 TAD FREFLD /SAVE ENTRY FIELD 1316 002304 3071 DCA LUFLD /FOR POSSIBLE POST PROCESSING 1317 002305 1376 TAD (WORD1-1/PREPARE TO STICK IN THE VALUE 1318 002306 3011 DCA X11 1319 002307 6201 ENTERV, CDF 1320 002310 1411 TAD I X11 /MOVE IN THE VALUE 1321 002311 6211 FFLD2, CDF 10 1322 002312 3416 DCA I NEXT 1323 002313 2346 ISZ N3SIZE /INCR SIZE COUNT 1324 002314 5307 JMP ENTERV 1325 002315 6201 CDF 1326 002316 5600 JMP I LUKUP2 1327 002317 0000 STCHEK, 0 /CHECK FOR ENOUGH ROOM 1328 002320 1016 TAD NEXT /CHECK FOR OVERFLOW 1329 002321 7141 CIA CLL 1330 002322 6201 CDF 1331 002323 1717 TAD I STCHEK /THIS IS LIMIT 1332 002324 2317 ISZ STCHEK 1333 002325 7630 SZL CLA 1334 002326 5717 JMP I STCHEK 1335 002327 1266 TAD FREFLD /BUMP FREE FIELD 1336 002330 1374 TAD (10 1337 002331 3266 DCA FREFLD 1338 002332 1266 TAD FREFLD /PUT IN TWO PLACES 1339 002333 3311 DCA FFLD2 1340 002334 3016 DCA NEXT /START POINTER AT 0 1341 002335 2345 ISZ NFLDS /GONE TOO FAR ? 1342 002336 5717 JMP I STCHEK /NO 1343 002337 4473 STOVER, JMS I QERMSG /S.T. FULL 1344 002340 2324 2324 1345 002341 5406 JMP I XABORT /ABORT COMPILATION 1346 002342 0000 OLDN3, 0 /ADDR OF PREVIOUS ENTRY 1347 002343 0000 NEWN3, 0 /ADDR OF NEW ENTRY 1348 002344 0000 LTEMP, 0 1349 002345 0000 NFLDS, 0 /- COUNT OF AVAILABLE FIELDS 1350 N3SIZE, /SIZE OF ENTRY 1351 002346 0000 KBDCHK, 0 /CHECK FOR ^C OR ^O 1352 002347 6031 KSF 1353 002350 5746 JMP I KBDCHK /NO CHAR 1354 002351 6036 KRB 1355 002352 0373 AND (177 /REMOVE PARITY BIT 1356 002353 1372 TAD (-3 /^C ?? 1357 002354 7450 SNA 1358 002355 5406 JMP I XABORT /YES, EXIT TO OS8 1359 002356 1371 TAD (3-17 /^O ?? 1360 002357 7640 SZA CLA 1361 002360 5746 JMP I KBDCHK /NO, RETURN 1362 002361 3770 DCA TTX+1 /NOP TTY OUTPUT ROUTINE 1363 002362 5746 JMP I KBDCHK 1364 / 1365 002363 7655 WSTEP, -123;-124;-105;-120;0 002364 7654 002365 7673 002366 7660 002367 0000 1366 / SYMBOL TABLE LOOKUP 1367 002370 3741 PAGE 002371 7764 002372 7775 002373 0177 002374 0010 002375 7570 002376 0133 002377 6211 1368 002400 0000 LOOKUP, 0 /LOOK UP SYMBOL 1369 002401 1134 TAD NAME1 /GET NAME1*11+NAME2 1370 002402 7106 CLL RTL 1371 002403 1134 TAD NAME1 1372 002404 7104 CLL RAL 1373 002405 1134 TAD NAME1 1374 002406 1135 TAD NAME2 1375 002407 3134 DCA NAME1 /THIS IS IT 1376 002410 1026 TAD TYPE /WHAT KIND SYMBOL ? 1377 002411 7106 CLL RTL /MOVE TYPE BITS 1378 002412 7006 RTL /INTO AC 9,10,11 1379 002413 1216 TAD JTABLE 1380 002414 3215 DCA .+1 1381 002415 0000 VCPTR, 0 /GO THERE 1382 002416 5617 JTABLE, JMP I .+1 1383 002417 2427 LUVAR 1384 002420 2451 LURETN 1385 002421 2463 LUARAY 1386 002422 2451 LURETN 1387 002423 2456 LUSTRG 1388 002424 2451 LURETN 1389 002425 2516 LUSARY 1390 002426 2451 LURETN 1391 002427 1377 LUVAR, TAD (VARCNT /POINTER TO VAR COUNT 1392 002430 3215 DCA VCPTR 1393 002431 1376 TAD (VARST-13 1394 002432 1134 DOLU, TAD NAME1 1395 002433 3037 DCA STPTR /ST POINTER 1396 002434 6211 CDF 10 /THATS WHERE ST IS 1397 002435 1437 TAD I STPTR /IS THIS VAR DEFINED YET ? 1398 002436 7500 SMA 1399 002437 5253 JMP GOTSYM /YES 1400 002440 1375 TAD (4401 /GET 401 INTO AC 1401 002441 6201 CHEKST, CDF 1402 002442 1615 TAD I VCPTR /PLUS VAR COUNT 1403 002443 6211 CDF 10 1404 002444 3027 DCA SYMBOL /THATS THE NEW SYMBOL NUMBER 1405 002445 1027 TAD SYMBOL /PUT SYMBOL NUMBER 1406 002446 3437 DCA I STPTR /INTO S.T. ENTRY 1407 002447 6201 CDF 1408 002450 2615 ISZ I VCPTR /BUMP SYMBOL NUMBER 1409 002451 5600 LURETN, JMP I LOOKUP 1410 002452 5774 JMP STOVER /S.T. OVERFLOW 1411 002453 3027 GOTSYM, DCA SYMBOL /PUT NUMBER INTO SYMBOL 1412 002454 6201 CDF 1413 002455 5600 JMP I LOOKUP 1414 002456 1373 LUSTRG, TAD (SVCNT /POINTER TO STRING VAR COUNT 1415 002457 3215 DCA VCPTR 1416 002460 1372 TAD (SVARST-26 1417 002461 1134 TAD NAME1 /TWO WORDS PER ENTRY 1418 002462 5232 JMP DOLU 1419 002463 1371 LUARAY, TAD (ACNT /ARRAY VAR COUNT 1420 002464 3215 DCA VCPTR 1421 002465 1370 TAD (ARAYST /ARRAY SYMBOL TABLE 1422 002466 3037 DCA STPTR 1423 002467 6211 CDF 10 1424 002470 1437 FINDA, TAD I STPTR /SEARCH TABLE 1425 002471 7450 SNA 1426 002472 5311 JMP NEWARY /NEW ENTRY 1427 002473 7041 CIA 1428 002474 1134 TAD NAME1 /IS THIS IT ? 1429 002475 2037 ISZ STPTR 1430 002476 7650 SNA CLA 1431 002477 5304 JMP GOTARY /YES 1432 002500 2037 ISZ STPTR 1433 002501 2037 ISZ STPTR 1434 002502 2037 ISZ STPTR /GO TO NEXT ENTRY 1435 002503 5270 JMP FINDA 1436 002504 1367 GOTARY, TAD (37 /GET NUMBER 1437 002505 0437 AND I STPTR 1438 002506 3027 DCA SYMBOL /INTO SYMBOL 1439 002507 6201 CDF 1440 002510 5600 JMP I LOOKUP 1441 002511 1134 NEWARY, TAD NAME1 /PUT IN NEW ENTRY 1442 002512 3437 DCA I STPTR 1443 002513 2037 ISZ STPTR 1444 002514 1373 TAD (41 /PUT IN NUMBER 1445 002515 5241 JMP CHEKST /GO DO THE REST 1446 002516 1366 LUSARY, TAD (SACNT /STRING ARRAY COUNT 1447 002517 3215 DCA VCPTR 1448 002520 1365 TAD (SARYST /USE STRING ARRAY TABLE 1449 002521 5266 JMP FINDA-2 /GO DO SEARCH 1450 / FILE AND CLOSE PROCESSORS 1451 002522 4474 FILE, JMS I QLODSN /OUTPUT STMT NUMBER 1452 002523 1364 TAD (FOPENS /POINTER TO FILE OPENS 1453 002524 3356 DCA FILESW 1454 002525 4513 JMS I QCHECKC /LOOK FOR "V" 1455 002526 7652 -126 1456 002527 7410 SKP /NOT V 1457 002530 2356 ISZ FILESW /YUP, INCR FILESW 1458 002531 4513 JMS I QCHECKC /LOOK FOR "N" 1459 002532 7662 -116 1460 002533 5336 JMP .+3 1461 002534 2356 ISZ FILESW /INCR FILESW BY TWO IF "N" 1462 002535 2356 ISZ FILESW 1463 002536 4763 JMS GETFN /GET FILE NUMBER 1464 002537 4505 JMS I QEXPR /GET DEVICE/FILE DESCRIPTOR 1465 002540 5510 JMP I QREMARK 1466 002541 4520 JMS I QLOAD /LOAD INTO SAC 1467 002542 1056 TAD TYPE1 /TYPE MUST BE STRING 1468 002543 7710 SPA CLA 1469 002544 5347 JMP .+3 /IT WERE 1470 002545 4473 JMS I QERMSG /IT WEREN'T 1471 002546 0616 0616 1472 002547 1756 TAD I FILESW /GET CORRECT OPEN 1473 002550 4500 JMS I QOUTWRD 1474 002551 5507 JMP I QNEWLIN 1475 002552 7454 FOPENS, OPENAF;OPENAV;OPENNF;OPENNV 002553 7474 002554 7514 002555 7534 1476 002556 0000 FILESW, 0 1477 002557 0040 PLUS, 40;0;XADD;XADD 002560 0000 002561 0557 002562 0557 1478 / EXPRESSION ANALYZER 1479 002563 2111 PAGE 002564 2552 002565 2332 002566 0043 002567 0037 002570 2132 002571 0042 002572 1010 002573 0041 002574 2337 002575 4401 002576 0365 002577 0040 1480 002600 0000 EXPR, 0 /POLISHIZE EXPRESSION 1481 002601 3021 DCA TEMP /SAVE LEFT 1482 002602 1030 TAD LEFT /SO WE CAN PUSH OLD VALUE 1483 002603 4521 JMS I QPUSH /OF IT 1484 002604 1021 TAD TEMP /NOW SET NEW VALUE 1485 002605 3030 DCA LEFT /OF THAT SWITCH 1486 002606 1200 TAD EXPR 1487 002607 4521 JMS I QPUSH /SAVE RETURN ADDR 1488 002610 4521 JMS I QPUSH /MARK STACK 1489 002611 1030 TAD LEFT /IS THIS LEFT SIDE ? 1490 002612 7710 SPA CLA 1491 002613 5244 JMP OPRAND+1/YES, NO UNARY MINUS 1492 002614 4502 UNOPR, JMS I QGETC /LOOK FOR UNARY OPERATOR 1493 002615 5352 JMP MISARG /THERE HAS TO BE AN OPERAND 1494 002616 1377 TAD (-53 /UNARY+(NOP) 1495 002617 7450 SNA 1496 002620 5214 JMP UNOPR 1497 002621 1376 TAD (53-55 /UNARY - 1498 002622 7440 SZA 1499 002623 5227 JMP NOTMIN /NOT UNARY MINUS 1500 002624 1375 TAD (UMOPR /PUSH UNARY MINUS 1501 002625 4521 JMS I QPUSH 1502 002626 5214 JMP UNOPR 1503 002627 1374 NOTMIN, TAD (55-50 /LOOK FOR ( 1504 002630 7640 SZA CLA 1505 002631 5243 JMP OPRAND /NOT A SUB EXPRESSION 1506 002632 4505 JMS I QEXPR /COMPILE SUB EXPRESSION 1507 002633 5773 JMP BADEXP /BAD SUB EXPRESSION 1508 002634 4513 JMS I QCHECKC /LOOK FOR ) 1509 002635 7727 -51 1510 002636 7410 SKP /ERROR 1511 002637 5263 JMP OPR8R /GOTIT 1512 002640 4473 JMS I QERMSG /PARENTHESIS MIS MATCH 1513 002641 1520 1520 1514 002642 5773 JMP BADEXP 1515 002643 4525 OPRAND, JMS I QBACK1 /PUT BACK NON UNARY OP 1516 002644 4514 JMS I QGETNAM /LOOK FOR VARIABLE REF 1517 002645 5772 JMP NOTVAR /NOPE. 1518 002646 4516 JMS I QLOOKUP /SYMBOL TABLE SEARCH 1519 002647 1027 TAD SYMBOL /SAVE SYMBOL NUMBER 1520 002650 3022 DCA TEMP2 /BECAUSE SAVAC MIGHT KILL IT 1521 002651 4524 JMS I QSAVAC /GENERATE FSTA (MAYBE) 1522 002652 7775 -3 1523 002653 1026 TAD TYPE /WAS THIS A FUNCTION OR ARRAY ? 1524 002654 0371 AND (3000 1525 002655 7440 SZA 1526 002656 5771 JMP FUNSS /YES, GO PROCESS IT 1527 002657 1026 TAD TYPE /MAKE OPERAND STACK ENTRY 1528 002660 4523 JMS I QPUSHO 1529 002661 1022 TAD TEMP2 /FIRST TYPE THEN SYMBOL # 1530 002662 4523 JMS I QPUSHO 1531 002663 1030 OPR8R, TAD LEFT /LEFT SIDE ? 1532 002664 7700 SMA CLA /YES, NO OPERATORS LEGAL 1533 002665 4502 JMS I QGETC /LOOK FOR OPERATOR 1534 002666 5341 JMP ENDEXP /END OF EXPR 1535 002667 1370 TAD (-52 /** IS SPECIAL CASE 1536 002670 7440 SZA 1537 002671 5301 JMP NOSTAR /NOT * 1538 002672 4502 JMS I QGETC /LOOK FOR SECOND * 1539 002673 5301 JMP NOSTAR 1540 002674 1370 TAD (-52 1541 002675 7650 SNA CLA 1542 002676 1367 TAD (136-52 /** -> ^ 1543 002677 7450 SNA 1544 002700 4525 JMS I QBACK1 /PUT IT BACK 1545 002701 1366 NOSTAR, TAD (52 /RESTORE CHAR 1546 002702 3021 DCA TEMP 1547 002703 1365 TAD (OPR8RS-1 1548 002704 3010 DCA X10 /PTR TO LIST 1549 002705 1410 OPRLUP, TAD I X10 /GET OPERATOR PTR 1550 002706 7450 SNA 1551 002707 5336 JMP ENDEXP-3/END OF LIST 1552 002710 3032 DCA NEWOP /SAVE IT IN CASE 1553 002711 1410 TAD I X10 /COMPARE 1554 002712 1021 TAD TEMP 1555 002713 7640 SZA CLA 1556 002714 5305 JMP OPRLUP /KEEP LOOKING 1557 002715 4522 GOTOPR, JMS I QPOP /GET STACK TOP 1558 002716 7450 SNA 1559 002717 5327 JMP PUSH2 /EMPTY 1560 002720 3031 DCA OLDOP 1561 002721 1431 TAD I OLDOP /COMPARE PREC. 1562 002722 7041 CIA 1563 002723 1432 TAD I NEWOP /NEW-OLD 1564 002724 7750 SPA SNA CLA 1565 002725 5333 JMP OUTOLD /OLD>NEW 1566 002726 1031 TAD OLDOP 1567 002727 4521 PUSH2, JMS I QPUSH /OLD < NEW 1568 002730 1032 TAD NEWOP /GO PUSH BOTH 1569 002731 4521 JMS I QPUSH 1570 002732 5214 JMP UNOPR /GO LOOK FOR NEXT OPERAND 1571 002733 1031 OUTOLD, TAD OLDOP /OUTPUT CODE FOR OLD OPR8R 1572 002734 4506 JMS I QOUTOPR 1573 002735 5315 JMP GOTOPR /LOOK AT NEXT TOP OF STACK 1574 002736 4525 JMS I QBACK1 /PUT BACK NON OPERATOR 1575 002737 7410 SKP 1576 002740 4506 JMS I QOUTOPR /OUTPUT OPERATOR 1577 002741 4522 ENDEXP, JMS I QPOP /LOOK FOR STACK MARK 1578 002742 7440 SZA 1579 002743 5340 JMP ENDEXP-1/NOT THIS 1580 002744 4522 JMS I QPOP /GET RETURN ADDR 1581 002745 7001 IAC 1582 002746 3021 DCA TEMP 1583 002747 4522 JMS I QPOP /GET LEFT SIDE SWITCH 1584 002750 3030 DCA LEFT 1585 002751 5421 JMP I TEMP /RETURN 1586 002752 4473 MISARG, JMS I QERMSG /MISSING OPERAND 1587 002753 1517 1517 1588 002754 5773 JMP BADEXP 1589 002755 0040 MINUS, 40;0;XISUB;XSUB 002756 0000 002757 3763 002760 1743 1590 002761 0050 SLASH, 50;0;XIDIV;XDIV 002762 0000 002763 5557 002764 4355 1591 / EXPRESSION ANALYZER (HANDLE SUBSCRIPTS) 1592 002765 6047 PAGE 002766 0052 002767 0064 002770 7726 002771 3000 002772 3136 002773 3122 002774 0005 002775 0764 002776 7776 002777 7725 1593 003000 0377 FUNSS, AND (1000 /IS IT FUN CALL ? 1594 003001 7650 SNA CLA 1595 003002 5205 JMP .+3 /NO 1596 003003 4524 JMS I QSAVAC /YES, SAVE AC 1597 003004 7777 -1 1598 003005 1026 TAD TYPE /SAVE TYPE 1599 003006 4521 JMS I QPUSH 1600 003007 1022 TAD TEMP2 /AND SYMBOL NUMBER 1601 003010 4521 JMS I QPUSH 1602 003011 1037 TAD STPTR /AND SYMBOL TABLE PTR 1603 003012 4521 JMS I QPUSH 1604 003013 7410 SKP 1605 003014 4522 SSLOOP, JMS I QPOP /GET ARG/SS COUNT 1606 003015 7001 IAC 1607 003016 4521 JMS I QPUSH /INCREMENT IT 1608 003017 4505 JMS I QEXPR /GET NEXT ARG/SS 1609 003020 5315 JMP BADFSS 1610 003021 4511 JMS I QGETA1 /IS THIS ARG(SS) AN ARRAY REF ? 1611 003022 7132 CLL CML RTR 1612 003023 0056 AND TYPE1 /CHECK THE TYPE 1613 003024 7650 SNA CLA 1614 003025 5242 JMP NOTSSD /NOT AN ARRAY REFERENCE 1615 003026 4512 JMS I QLOADSS /LOAD THE SS REGS 1616 003027 4524 JMS I QSAVAC /SAVE AC IF NEEDED 1617 003030 7777 -1 1618 003031 1056 TAD TYPE1 /SET THE MODE 1619 003032 4476 JMS I QMODSET 1620 003033 1376 TAD (AFLDA /LOAD THIS ARG/SS 1621 003034 1057 TAD SYMBL1 1622 003035 4500 JMS I QOUTWRD 1623 003036 1133 TAD Q400 /SET THE IN-AC BIT 1624 003037 1055 TAD MODE /WE JUST CALLED MODSET 1625 003040 3414 DCA I OSTACK /CHANGE THIS STACK ENTRY 1626 003041 7410 SKP 1627 003042 2014 NOTSSD, ISZ OSTACK /FIX UP OSTACK 1628 003043 2014 ISZ OSTACK 1629 003044 4515 JMS I QCOMARP /LOOK FOR , OR ) 1630 003045 5315 JMP BADFSS /NEITHER IS BAD 1631 003046 5214 JMP SSLOOP /, MEANS MORE ARGS/SS 1632 003047 4522 JMS I QPOP /GET # OF ARG/SS 1633 003050 3021 DCA TEMP /GET ARG/SS COUNT 1634 003051 4522 JMS I QPOP /RESTORE S.T. ADDR 1635 003052 3037 DCA STPTR 1636 003053 4522 JMS I QPOP 1637 003054 3027 DCA SYMBOL /GET BACK THE SYMBOL # 1638 003055 4522 JMS I QPOP 1639 003056 3026 DCA TYPE /GET BACK THE TYPE 1640 003057 1026 TAD TYPE /IS IT AN ARRAY OR FUN REF ? 1641 003060 0377 AND (1000 1642 003061 7640 SZA CLA 1643 003062 5775 JMP DOCALL /FUNCTION REFERENCE 1644 003063 1021 TAD TEMP /MOVE SS COUNT 1645 003064 7112 CLL RTR /INTO THE CORRECT 1646 003065 7012 RTR /FIELD 1647 003066 3022 DCA TEMP2 /AND SAVE IT 1648 003067 6211 CDF 10 1649 003070 1437 TAD I STPTR /ANY PREV REFERENCE ? 1650 003071 0374 AND (3000 1651 003072 7440 SZA 1652 003073 5300 JMP NOTNEW /YES, GO CHECK NUMBERS 1653 003074 1022 TAD TEMP2 /IF NONE, PUT IN NUMBER 1654 003075 1437 TAD I STPTR 1655 003076 3437 DCA I STPTR 1656 003077 5304 JMP NDOK /THATS ALL 1657 003100 7041 NOTNEW, CIA /COMPARE NUMBER OF SS 1658 003101 1022 TAD TEMP2 /WITH ANY PREVIOUS 1659 003102 7640 SZA CLA 1660 003103 5320 JMP BADFSS+3/THEY DON'T MATCH 1661 003104 6201 NDOK, CDF 1662 003105 1026 TAD TYPE /PUT TYPE 1663 003106 1021 TAD TEMP /AND DIM COUNT 1664 003107 4523 ONSTAK, JMS I QPUSHO /ONTO ARGUMENT STACK 1665 003110 1027 TAD SYMBOL 1666 003111 4523 JMS I QPUSHO /AND SYMBOL NUMBER 1667 003112 4524 JMS I QSAVAC /SAVE FIRST SS IF LEFT IN AC 1668 003113 7773 -5 1669 003114 5773 JMP OPR8R /GO GET AN OPERATOR 1670 003115 1372 BADFSS, TAD (-4 /PURGE STACK JUNK 1671 003116 1015 TAD STACK 1672 003117 3015 DCA STACK 1673 003120 4473 JMS I QERMSG /PUT ERROR MESSAGE 1674 003121 2323 2323 1675 003122 4522 BADEXP, JMS I QPOP /LOOK FOR STACK MARK 1676 003123 7640 SZA CLA 1677 003124 5322 JMP BADEXP /NOT YET 1678 003125 4522 JMS I QPOP /RETURN ADDR 1679 003126 3021 DCA TEMP 1680 003127 4522 JMS I QPOP /SS LOAD SWITCH 1681 003130 3030 DCA LEFT 1682 003131 5421 JMP I TEMP /TAKE ERROR EXIT 1683 003132 7654 WTAB, -124;-101;-102;-50 003133 7677 003134 7676 003135 7730 1684 003136 1030 NOTVAR, TAD LEFT /LEFT SIDE ? 1685 003137 7710 SPA CLA 1686 003140 5771 JMP MISARG /YES, NO LITERALS LEGAL 1687 003141 4526 JMS I QNUMBER /LOOK FOR LITERAL 1688 003142 5350 JMP NOTNUM /NOT A NUMBER 1689 003143 4517 JMS I QLUKUP2 /SEARCH LITERAL TABLE 1690 003144 2562 LITRL 1691 003145 7775 -3 1692 003146 4770 JMS NEWVAR /IF NEW, GIVE IT NUMBER 1693 003147 5307 JMP ONSTAK /GO PUT IT ONTO THE STACK 1694 003150 4527 NOTNUM, JMS I QSTRING /LOOK FOR STRING LITERAL 1695 003151 5771 JMP MISARG /NO, MISSING ARG 1696 003152 1134 TAD WORD1 /GET -NUMBER WORDS - 1 1697 003153 7001 IAC 1698 003154 7170 CLL CML CMA RAR 1699 003155 3360 DCA .+3 /FOR LOOKUP 1700 003156 4517 JMS I QLUKUP2 /LOOK UP LITERAL 1701 003157 2564 SLITRL 1702 003160 0000 0 1703 003161 4767 JMS NWSVAR /IF NEW, GIVE IT NUMBER 1704 003162 7130 CLL CML RAR /SET TYPE BIT FOR STRING 1705 003163 5307 JMP ONSTAK /PUT INFO ONTO STACK 1706 1707 003164 0060 UPAROW, 60;1;EXPRTN-1 003165 0001 003166 3543 1708 / EXPRESSION ANALYZER (HANDLE FUNCTION CALLS) 1709 003167 4236 PAGE 003170 4223 003171 2752 003172 7774 003173 2663 003174 3000 003175 3200 003176 6640 003177 1000 1710 003200 1030 DOCALL, TAD LEFT /IS THIS LEFT SIDE ? 1711 003201 7700 SMA CLA /IF YES, FUN ILLEGAL 1712 003202 4210 JMS OUTCAL /GENERATE CALL 1713 003203 7410 SKP /SKIP IF ERROR 1714 003204 5777 JMP OPR8R /GO LOOK FOR OPERATOR 1715 003205 4473 JMS I QERMSG /BAD FUNCTION REFERENCE 1716 003206 0622 0622 1717 003207 5776 JMP BADEXP 1718 003210 0000 OUTCAL, 0 /GENERATE FUN CALL; TYPE, 1719 /SYMBOL AND TEMP ARE INPUTS 1720 003211 1027 TAD SYMBOL /SAVE FUNCTION NUMBER AROUND SAVAC 1721 003212 3336 DCA FUNNUM 1722 003213 4524 JMS I QSAVAC /SAVE SECOND FROM TOP 1723 003214 7775 -3 1724 003215 1336 TAD FUNNUM /SETUP FOR FINDING FUNCTION 1725 003216 3134 DCA WORD1 /INFO BLOCK 1726 003217 4517 JMS I QLUKUP2 /ON THE FUNCTION LIST 1727 003220 2570 FUNCTN 1728 003221 7777 -1 1729 003222 5610 JMP I OUTCAL /UNDEFINED FUNCTION 1730 003223 1027 TAD SYMBOL /CHECK NUMBER OF ARGS 1731 003224 1021 TAD TEMP 1732 003225 7640 SZA CLA 1733 003226 5610 JMP I OUTCAL 1734 003227 4520 MOVARG, JMS I QLOAD /GET TOP OF STACK INTO AC 1735 003230 4070 JMS SETFLD /GET FIELD OF FORMAL-PARAMS 1736 003231 1410 TAD I X10 /GET FIRST ONE 1737 003232 6201 CDF 1738 003233 3021 DCA TEMP 1739 003234 7130 CLL CML RAR /COMPARE TYPE OF ARG 1740 003235 0056 AND TYPE1 /WITH THAT OF FORMAL PARAMETER 1741 003236 1021 TAD TEMP 1742 003237 7710 SPA CLA /THEY MUST MATCH 1743 003240 5610 JMP I OUTCAL /(THEY DON'T) 1744 003241 7132 CLL CML RTR /SHOULD WE LEAVE IT IN THE AC ? 1745 003242 0021 AND TEMP 1746 003243 7640 SZA CLA 1747 003244 5253 JMP OKINAC /YES, SAVES AN INSTRUCTION 1748 003245 1056 TAD TYPE1 /SET MODE 1749 003246 4476 JMS I QMODSET /APPROPRIATELY 1750 003247 7150 CLL CMA RAR /3777 1751 003250 0021 AND TEMP /GET SYM NUMBER 1752 003251 1375 TAD (FSTA /STORE VALUE IN FORM PARAM 1753 003252 4500 JMS I QOUTWRD 1754 003253 2027 OKINAC, ISZ SYMBOL /MORE ARGS ? 1755 003254 5227 JMP MOVARG 1756 003255 4070 JMS SETFLD 1757 003256 1410 TAD I X10 /GET TYPE OF FUNCTION 1758 003257 3056 DCA TYPE1 /(ITS RESULT THAT IS) 1759 003260 6201 CDF 1760 003261 1026 TAD TYPE /IS TYPE OF FUNCTION 1761 003262 1056 TAD TYPE1 /SAME AS TYPE OF CALL 1762 003263 7710 SPA CLA 1763 003264 5610 JMP I OUTCAL /NO, ERROR 1764 003265 4476 JMS I QMODSET /ALL CALLS IN N MODE 1765 003266 1134 TAD WORD1 /CHECK FOR USER FUNCTION 1766 003267 7500 SMA 1767 003270 5303 JMP CALLUF /YES, DO SPECIAL CALL 1768 003271 2210 FINCAL, ISZ OUTCAL /FIX RETURN 1769 003272 4500 JMS I QOUTWRD /OUTPUT CODE 1770 003273 1133 TAD Q400 /SET TOP OF STACK 1771 003274 1056 TAD TYPE1 1772 003275 3414 DCA I OSTACK /TO AC 1773 003276 3414 DCA I OSTACK /SYMBOL NUMBER IS MEANINGLESS 1774 003277 7130 CLL CML RAR 1775 003300 0056 AND TYPE1 /INTERPRETER MODE SAME 1776 003301 3055 DCA MODE /AS FUNCTION TYPE 1777 003302 5610 JMP I OUTCAL /ON RETURN 1778 003303 4532 CALLUF, JMS I QNOREGS /FORGET REGS ON USER FUNC 1779 003304 1071 TAD LUFLD /OUTPUT JSUB 1780 003305 0374 AND (70 /WITH POINTER TO 1781 003306 7106 CLL RTL /DOUBLE WORD 1782 003307 1373 TAD (JSUB /VALUE OF LOCATION 1783 003310 4500 JMS I QOUTWRD /COUNTER FOR THE 1784 003311 1010 TAD X10 /START OF THE 1785 003312 7001 IAC /USER "DEF"INED FUNC 1786 003313 5271 JMP FINCAL 1787 003314 0000 FSUB1, 0 /FOR SUBROUTINE #1 1788 003315 4505 JMS I QEXPR /GET AN EXPRESSION 1789 003316 5323 JMP BADFOR 1790 003317 4520 JMS I QLOAD /LOAD VALUE 1791 003320 1056 TAD TYPE1 /MUST BE NUMERIC 1792 003321 7700 SMA CLA 1793 003322 5714 JMP I FSUB1 /OK 1794 003323 4473 BADFOR, JMS I QERMSG /BAD FOR LOOP PARAMETERS 1795 003324 0620 0620 1796 003325 5510 JMP I QREMARK 1797 003326 0000 FSUB2, 0 /FOR SUBROUTINE #2 1798 003327 4314 JMS FSUB1 /GET EXPR AND LOAD IT 1799 003330 4772 JMS GENTMP /MAKE A TEMP FOR IT 1800 003331 1027 TAD SYMBOL /STORE EXPR IN TEMP 1801 003332 1375 TAD (FSTA 1802 003333 4500 JMS I QOUTWRD 1803 003334 1027 TAD SYMBOL /RETURN SLOT # 1804 003335 5726 JMP I FSUB2 1805 FUNNUM, 1806 003336 0000 NOREGS, 0 /FORGET REGISTORS 1807 003337 7201 CLA IAC /FILE NUMBER REG 1808 003340 3063 DCA IFNREG 1809 / CMA /SUBSCRIPT REG #1 1810 / DCA SSREG1 1811 / CMA /SUBSCRIPT REG #2 1812 / DCA SSREG2 1813 003341 5736 JMP I NOREGS 1814 003342 4474 CLOSE, JMS I QLODSN /OUTPUT STMT NUMBER 1815 003343 7201 CLA IAC /NO COLON NEEDED AFTER FILE NUM 1816 003344 4771 JMS GETFN /GET FILE NUM 1817 003345 1370 TAD (CLOSEF /OUTPUT CLOSE 1818 003346 4500 JMS I QOUTWRD 1819 003347 5507 JMP I QNEWLIN 1820 003350 0000 PSETJF, 0 1821 003351 1367 TAD (SETJF 1822 003352 4500 JMS I QOUTWRD 1823 003353 4522 JMS I QPOP /GET INDEX VAR 1824 003354 3067 DCA FINDEX 1825 003355 5750 JMP I PSETJF 1826 003356 4512 DIMREAD,JMS I QLOADSS /PATCH TO INPUT PROC. SET UP SS REG 1827 003357 1366 TAD (READ /OUTPUT INSTR 1828 003360 4500 JMS I QOUTWRD 1829 003361 1365 TAD (AFSTA 1830 003362 5764 JMP I (FININP /RESUME IN LINE 1831 / CODE GENERATOR 1832 003364 0421 PAGE 003365 6700 003366 7411 003367 7401 003370 7434 003371 2111 003372 4200 003373 5000 003374 0070 003375 2400 003376 3122 003377 2663 1833 003400 0000 OUTOPR, 0 /OUTPUT CODE FOR OPERATOR 1834 003401 3010 DCA X10 /SAVE POINTER TO SKELETON 1835 003402 1410 TAD I X10 /GET CONTROL WORD 1836 003403 7540 SMA SZA 1837 003404 5314 JMP SPCIAL /TREAT AS SPECIAL CASE 1838 003405 3026 DCA TYPE /ITS THE TYPE ALLOWANCE 1839 003406 1377 TAD (XLOAD /GET SKEL ADDRS 1840 003407 3355 DCA CASEMM /FOR THE THREE CASES 1841 003410 1410 TAD I X10 1842 003411 3354 DCA CASEMA 1843 003412 1410 TAD I X10 1844 003413 3356 DCA CASEAM 1845 003414 1026 TAD TYPE /ENTER CORRECT MODE 1846 003415 4476 JMS I QMODSET 1847 003416 7144 CLL CMA RAL /GET THE SECOND OPERAND 1848 003417 1014 TAD OSTACK 1849 003420 3014 DCA OSTACK 1850 003421 1014 TAD OSTACK 1851 003422 3010 DCA X10 /BY BACKING UP THE STACK 1852 003423 1410 TAD I X10 /TYPE 1853 003424 3357 DCA TYPE2 1854 003425 1410 TAD I X10 1855 003426 3360 DCA SYMBL2 /SYMBOL NUMBER 1856 003427 1357 TAD TYPE2 1857 003430 0376 AND (3 1858 003431 3021 DCA TEMP /SS COUNT 1859 003432 1357 TAD TYPE2 /LOOK AT OPERAND 2 1860 003433 0133 AND Q400 1861 003434 7640 SZA CLA 1862 003435 5256 JMP MAC /MUST BE CASE M,AC 1863 003436 7132 CLL CML RTR /ITS IN MEMORY, IS IT SS'D 1864 003437 0357 AND TYPE2 1865 003440 7650 SNA CLA 1866 003441 5245 JMP A2OK /NO, ITS SCALAR 1867 003442 4512 JMS I QLOADSS /LOAD NECESSARY SS REGS 1868 003443 2355 ISZ CASEMM /FIXUP THE SKELETON POINTERS 1869 003444 2356 ISZ CASEAM 1870 003445 4317 A2OK, JMS GETA1 /GET STUF FOR ARG1 1871 003446 1056 TAD TYPE1 /LOOK AT IT 1872 003447 0133 AND Q400 1873 003450 7640 SZA CLA 1874 003451 5306 JMP ACM /ITS CASE AC,M 1875 003452 1755 MM, TAD I CASEMM /ITS CASE M,M LOAD OPERAND 2 1876 003453 1360 TAD SYMBL2 1877 003454 4500 JMS I QOUTWRD 1878 003455 7410 SKP 1879 003456 4317 MAC, JMS GETA1 /GET STUF FRO ARG1 1880 003457 7132 CLL CML RTR /IS IT SS'D ? 1881 003460 0056 AND TYPE1 1882 003461 7650 SNA CLA 1883 003462 5265 JMP A1OK /NO, ITS SCALAR 1884 003463 4512 JMS I QLOADSS /LOAD THE SS REGS 1885 003464 2354 ISZ CASEMA /BUMP SKELETON ADDR 1886 003465 1754 A1OK, TAD I CASEMA /GET CORRECT INSTRUCTION 1887 003466 1057 TAD SYMBL1 /PLUS SYMBOL NUMBER 1888 003467 4500 TYPCHK, JMS I QOUTWRD /OUTPUT IT 1889 003470 7130 CLL CML RAR /TYPES OF OPERANDS MUST MATCH 1890 003471 0056 AND TYPE1 1891 003472 1357 TAD TYPE2 1892 003473 7710 SPA CLA 1893 003474 5311 JMP MIXED /THEY DON'T 1894 003475 1026 TAD TYPE /TYPE OF OPERATOR 1895 003476 1056 TAD TYPE1 /MUST MATCH 1896 003477 7710 SPA CLA /THAT OF OPERANDS 1897 003500 5311 JMP MIXED /THEY DON'T 1898 003501 1133 TAD Q400 /GENERATE STACK ENTRY 1899 003502 1026 TAD TYPE 1900 003503 3414 DCA I OSTACK 1901 003504 3414 DCA I OSTACK /THIS IS SAFE 1902 003505 5600 JMP I OUTOPR 1903 003506 1756 ACM, TAD I CASEAM /ITS CASE AC,M 1904 003507 1360 TAD SYMBL2 /GEN OPERATION FOR OPERAND 2 1905 003510 5267 JMP TYPCHK /GO FINISH IT UP 1906 003511 4473 MIXED, JMS I QERMSG /MIXED TYPES 1907 003512 1524 1524 1908 003513 5600 JMP I OUTOPR 1909 003514 1410 SPCIAL, TAD I X10 /GET ADDR OF SPECIAL RTNE 1910 003515 3021 DCA TEMP /(PLUS 1 FROM THE TYPE WORD) 1911 003516 5421 JMP I TEMP /HANDLE SPECIAL CASE 1912 003517 0000 GETA1, 0 /GET STUFF FOR ARG 1 1913 003520 7144 CLL CMA RAL /BACK UP STACK 1914 003521 1014 TAD OSTACK 1915 003522 3014 DCA OSTACK 1916 003523 1014 TAD OSTACK 1917 003524 3011 DCA X11 1918 003525 1411 TAD I X11 /GET TYPE1 1919 003526 3056 DCA TYPE1 1920 003527 1411 TAD I X11 /GET SYMBL1 1921 003530 3057 DCA SYMBL1 1922 003531 1056 TAD TYPE1 /GET SS COUNT 1923 003532 0376 AND (3 1924 003533 3021 DCA TEMP 1925 003534 5717 JMP I GETA1 1926 003535 4524 UMRTNE, JMS I QSAVAC /SAVE CURRENT AC IF NEEDED 1927 003536 7775 -3 1928 003537 4520 JMS I QLOAD /GET ARG IN AC 1929 003540 3026 DCA TYPE /TYPE MUST BE NUMERIC 1930 003541 3357 DCA TYPE2 1931 003542 1375 TAD (FNEG /DO NEGATE 1932 003543 5267 JMP TYPCHK 1933 003544 3026 EXPRTN, DCA TYPE /SET FUNC TYPE 1934 003545 7126 CLL CML RTL /SET NUMBER OF ARGS 1935 003546 3021 DCA TEMP 1936 003547 1374 TAD (FUNC1+60 1937 003550 3027 DCA SYMBOL /EXP2 1938 003551 4773 JMS OUTCAL /OUTPUT FUNCTION CALL 1939 003552 5311 JMP MIXED /ERROR 1940 003553 5600 JMP I OUTOPR /DONE 1941 003554 0000 CASEMA, 0 1942 003555 0000 CASEMM, 0 1943 003556 0000 CASEAM, 0 1944 003557 0000 TYPE2, 0 1945 003560 0000 SYMBL2, 0 1946 003561 4474 RETURN, JMS I QLODSN /OUTPUT STMT NUM LOAD 1947 003562 4476 JMS I QMODSET /ALWAYS RETURN IN N MODE 1948 003563 1372 TAD (RET-RNDO 1949 003564 1371 RANDOM, TAD (RNDO-STOP 1950 003565 1370 STOPX, TAD (STOP /RETURN, RANDOMIZE, OR STOP 1951 003566 4500 JMS I QOUTWRD 1952 003567 5507 JMP I QNEWLIN 1953 / LETTER AND DIGIT SCANNERS 1954 003570 7441 PAGE 003571 7760 003572 7763 003573 3210 003574 7476 003575 7403 003576 0003 003577 0767 1955 003600 0000 LETTER, 0 /SKIP ON LETTER 1956 003601 4502 JMS I QGETC 1957 003602 5600 JMP I LETTER /NO LETTER 1958 003603 1377 TAD (-133 /MUST BE .LT. 133 1959 003604 7500 SMA 1960 003605 5214 JMP NOLETR 1961 003606 1376 TAD (133-100/MUST BE .GT. 100 1962 003607 7510 SPA 1963 003610 5214 JMP NOLETR 1964 003611 0375 AND (77 /RESTORE 6 BITS 1965 003612 2200 ISZ LETTER /BUMP RETURN ADDR 1966 003613 5600 JMP I LETTER 1967 003614 4525 NOLETR, JMS I QBACK1 /PUT CHAR BACK 1968 003615 5600 JMP I LETTER 1969 003616 0000 DIGIT, 0 /SKIP ON DIGIT 1970 003617 4502 JMS I QGETC 1971 003620 5616 JMP I DIGIT /NO DIGIT 1972 003621 1374 TAD (-72 /MUST BE .LT. 72 1973 003622 7100 O7100, CLL /(USED AS LITERAL BY "TTY") 1974 003623 1373 TAD (72-60 /MUST BE .GE. 60 1975 003624 7420 SNL 1976 003625 5230 JMP NODIGT /NOPE 1977 003626 2216 ISZ DIGIT /RETURN DIGIT MINUS 60 1978 003627 5616 JMP I DIGIT 1979 003630 4525 NODIGT, JMS I QBACK1 /PUT IT BACK 1980 003631 5616 JMP I DIGIT 1981 / STATEMENT NUMBER GETTER 1982 003632 0000 SNUM, 0 /GET A STATEMENT NUMBER 1983 003633 3021 DCA TEMP /SAVE DEFINED SWITCH 1984 003634 4531 JMS I QDIGIT /GET FIRST DIGIT 1985 003635 5632 JMP I SNUM /NO STATEMENT NUMBER 1986 003636 3135 DCA WORD2 /THIS WILL BE THE BUCKET 1987 003637 1135 TAD WORD2 1988 003640 7104 CLL RAL /TWO WORDS PER BUCKET 1989 003641 1372 TAD (SNUMS 1990 003642 3272 DCA BUCKET 1991 003643 2232 ISZ SNUM /OK, ITS A STMT NUMBER 1992 003644 1371 TAD (-4 /FIVE DIGITS MAX 1993 003645 3022 DCA TEMP2 1994 003646 3134 DCA WORD1 /CLEAR TOP WORD 1995 003647 4531 SNLOOP, JMS I QDIGIT /GET NEXT DIGIT 1996 003650 5271 JMP GOTSN /END OF NUMBER 1997 003651 3136 DCA WORD3 /SAVE IT 1998 003652 1371 TAD (-4 /SET SHIFT COUNT 1999 003653 3137 DCA ACO 2000 003654 1135 SHIFT, TAD WORD2 /SHIFT LEFT ONE BIT 2001 003655 7104 CLL RAL 2002 003656 3135 DCA WORD2 2003 003657 1134 TAD WORD1 2004 003660 7004 RAL 2005 003661 3134 DCA WORD1 2006 003662 2137 ISZ ACO /BUMP SHIFT COUNTER 2007 003663 5254 JMP SHIFT 2008 003664 1135 TAD WORD2 /PUT IN NEW DIGIT 2009 003665 1136 TAD WORD3 2010 003666 3135 DCA WORD2 2011 003667 2022 ISZ TEMP2 /BUMP DIGIT COUNT 2012 003670 5247 JMP SNLOOP 2013 003671 4517 GOTSN, JMS I QLUKUP2 /FIND STMT NUMBER 2014 003672 0000 BUCKET, 0 2015 003673 7776 -2 2016 003674 5316 JMP NEWSN /ITS A NEW STMT NUM 2017 003675 7130 CLL CML RAR /CHECK FOR MULTIPLY DEFINED 2018 003676 0027 AND SYMBOL 2019 003677 0021 AND TEMP 2020 003700 7640 SZA CLA 2021 003701 5325 JMP MDLABL /YES, IT IS 2022 003702 1010 TAD X10 /GET ADDR OF LABEL VALUE 2023 003703 3022 DCA TEMP2 2024 003704 4070 JMS SETFLD /GET TO FIELD OF ENTRY 2025 003705 1021 TAD TEMP /OR IN THESE BITS 2026 003706 1027 TAD SYMBOL 2027 003707 3422 DCA I TEMP2 2028 003710 6201 FINSN, CDF 2029 003711 1071 TAD LUFLD /GET FIELD BITS 2030 003712 0370 AND (70 2031 003713 7106 CLL RTL 2032 003714 3021 DCA TEMP /INTO A CONVIENIENT 2033 003715 5632 JMP I SNUM /PLACE 2034 003716 4070 NEWSN, JMS SETFLD /GET FIELD 2035 003717 1021 TAD TEMP /PUT IN BITS 2036 003720 3416 DCA I NEXT 2037 003721 1016 TAD NEXT /SAVE N3 ADDR 2038 003722 3022 DCA TEMP2 2039 003723 3416 DCA I NEXT /1 EXTRA WORD 2040 003724 5310 JMP FINSN 2041 003725 4473 MDLABL, JMS I QERMSG /MULTIPLY DEFINED 2042 003726 1504 1504 /LABEL 2043 003727 5632 JMP I SNUM 2044 003730 0000 TTY, 0 /CONVERT TO ASCII AND PRINT 2045 003731 0375 AND (77 /SIX BITS ONLY 2046 003732 1367 TAD (-40 /WHAT SIDE OF FORTY ? 2047 003733 7510 SPA 2048 003734 1222 TAD O7100 /LOW SIDE 2049 003735 1366 TAD (240 /HIGH SIDE 2050 003736 4340 JMS TTX /PRINT CHAR 2051 003737 5730 JMP I TTY /RETURN 2052 003740 0000 TTX, 0 /PRINT CHAR ON TTY 2053 003741 7410 SKP /(CONTROL O ZEROES THIS WORD) 2054 003742 5346 JMP .+4 /(THUS KILLING ERROR REPORTING) 2055 003743 6041 TSF 2056 003744 5343 JMP .-1 2057 003745 6046 TLS 2058 003746 7200 CLA 2059 003747 5740 JMP I TTX 2060 / CHAIN PROCESSOR 2061 003750 4474 CHAIN, JMS I QLODSN /OUTPUT STMT NUMBER 2062 003751 4505 JMS I QEXPR /GET CHAIN STRING 2063 003752 5510 JMP I QREMARK 2064 003753 4520 JMS I QLOAD /INTO SAC 2065 003754 1056 TAD TYPE1 /TYPE MUST BE STRING 2066 003755 7700 SMA CLA 2067 003756 4473 JMS I QERMSG /IT WASN'T 2068 003757 0616 0616 /(OK IF ERROR CODE IS NOP) 2069 003760 1365 TAD (CHN /OUTPUT CHAIN OPCODE 2070 003761 4500 JMS I QOUTWRD 2071 003762 5507 JMP I QNEWLIN 2072 003763 3000 XISUB, FISUB;AISUB 003764 6400 2073 / SEVERAL SHORT UTILITY ROUTINES 2074 003765 7414 PAGE 003766 0240 003767 7740 003770 0070 003771 7774 003772 2532 003773 0012 003774 7706 003775 0077 003776 0033 003777 7645 2075 004000 0000 BACK1, 0 /BACK UP ONE CHAR 2076 004001 7240 CLA CMA 2077 004002 1020 TAD NCHARS 2078 004003 3020 DCA NCHARS 2079 004004 7240 CLA CMA 2080 004005 1017 TAD CHRPTR 2081 004006 3017 DCA CHRPTR 2082 004007 5600 JMP I BACK1 2083 004010 0000 GETCWB, 0 /GET A CHARACTER (PRESERVE BLANKS) 2084 004011 2020 ISZ NCHARS 2085 004012 5216 JMP .+4 2086 004013 7240 CLA CMA 2087 004014 3020 DCA NCHARS /RESET NCHARS 2088 004015 5610 JMP I GETCWB 2089 004016 2210 ISZ GETCWB 2090 004017 1417 TAD I CHRPTR /GET THE CHAR 2091 004020 5610 JMP I GETCWB 2092 004021 0000 SAVECP, 0 /SAVE CHAR POSITION 2093 004022 1020 TAD NCHARS 2094 004023 3365 DCA NCSAVE 2095 004024 1017 TAD CHRPTR 2096 004025 3366 DCA CPSAVE 2097 004026 5621 JMP I SAVECP 2098 004027 0000 RESTCP, 0 /RESTORE CHAR POS 2099 004030 1366 TAD CPSAVE 2100 004031 3017 DCA CHRPTR 2101 004032 1365 TAD NCSAVE 2102 004033 3020 DCA NCHARS 2103 004034 5627 JMP I RESTCP 2104 004035 0000 GETC, 0 /GET A CHARACTER (IGNORING BLANKS) 2105 004036 2020 ISZ NCHARS 2106 004037 5243 JMP .+4 2107 004040 7240 CLA CMA 2108 004041 3020 DCA NCHARS 2109 004042 5635 JMP I GETC 2110 004043 1417 TAD I CHRPTR 2111 004044 1377 TAD (-40 /IS IT A BLANK 2112 004045 7450 SNA 2113 004046 5236 JMP GETC+1 /YES IGNORE IT 2114 004047 1376 TAD (40 /FIX CHAR 2115 004050 2235 ISZ GETC 2116 004051 5635 JMP I GETC 2117 004052 0000 POP, 0 /GET TOP OF STACK 2118 004053 1015 TAD STACK 2119 004054 3262 DCA PUSH 2120 004055 7240 CLA CMA 2121 004056 1015 TAD STACK 2122 004057 3015 DCA STACK /DECREMENT STACK POINTER 2123 004060 1662 TAD I PUSH 2124 004061 5652 JMP I POP 2125 004062 0000 PUSH, 0 /PUT AC ONTO STACK 2126 004063 3415 DCA I STACK /STORE 2127 004064 1375 TAD (-STACKA-STAKSZ+1 2128 004065 1015 TAD STACK /CHECK FOR OVERFLOW 2129 004066 7710 SPA CLA 2130 004067 5662 JMP I PUSH /OK, RETURN 2131 004070 4473 STKOVR, JMS I QERMSG 2132 004071 2004 2004 2133 004072 5406 JMP I XABORT /ABORT COMPILATION 2134 004073 0000 PUSHO, 0 /PUSH OPERAND STACK 2135 004074 3414 DCA I OSTACK /PUSHIT 2136 004075 1374 TAD (-STACKO-STOKSZ+1 2137 004076 1014 TAD OSTACK /CHECK FOR STACK OVERFLOW 2138 004077 7710 SPA CLA 2139 004100 5673 JMP I PUSHO 2140 004101 5270 JMP STKOVR /TOO FULL 2141 004102 0000 COMARP, 0 /SKIP ON COMA OR RITE PAREN 2142 004103 4502 JMS I QGETC /GET CHAR 2143 004104 5702 JMP I COMARP 2144 004105 1373 TAD (-51 2145 004106 7450 SNA 2146 004107 2302 ISZ COMARP /RITE PAREN, SKIP 2 2147 004110 7440 SZA 2148 004111 1372 TAD (51-54 /CHECK FOR , 2149 004112 7450 SNA 2150 004113 2302 ISZ COMARP /, SKIP 1 2151 004114 7640 SZA CLA 2152 004115 4525 JMS I QBACK1 /NEITHER PUT BACK 2153 004116 5702 JMP I COMARP 2154 004117 0000 LOAD, 0 /LOAD SAC OR FAC 2155 004120 4511 JMS I QGETA1 /GET TOP OF STACK 2156 004121 1056 TAD TYPE1 /SET MODE 2157 004122 4476 JMS I QMODSET 2158 004123 1056 TAD TYPE1 /IS IT IN THE AC? 2159 004124 0133 AND Q400 2160 004125 7640 SZA CLA 2161 004126 5717 JMP I LOAD /YUP 2162 004127 7132 CLL CML RTR /SUBSCRIPTED ? 2163 004130 0056 AND TYPE1 2164 004131 7650 SNA CLA 2165 004132 5335 JMP .+3 /NO 2166 004133 4512 JMS I QLOADSS /FILL SS REGS 2167 004134 1371 TAD (AFLDA-FLDA 2168 004135 1370 TAD (FLDA /ARRAY OR SCALAR LOAD 2169 004136 1057 TAD SYMBL1 /PLUS SYMBOL NUMBER 2170 004137 4500 JMS I QOUTWRD 2171 004140 5717 JMP I LOAD 2172 004141 5003 IFOPS, JNE;-7476 /<> 004142 0302 2173 004143 5003 JNE;-7674 />< 004144 0104 2174 004145 5002 JGE;-7576 /=> 004146 0202 2175 004147 5002 JGE;-7675 />= 004150 0103 2176 004151 5007 JLE;-7574 /=< 004152 0204 2177 004153 5007 JLE;-7475 /<= 004154 0303 2178 004155 0000 0 2179 004156 5006 JEQ;-7500 /= 004157 0300 2180 004160 5004 JGT;-7600 /> 004161 0200 2181 004162 5005 JLT;-7400 /< 004163 0400 2182 004164 0000 0 2183 004165 0000 NCSAVE, 0 2184 004166 0000 CPSAVE, 0 2185 / TEMP GENERATORS AND AC SAVING ROUTINES 2186 004170 2000 PAGE 004171 4640 004172 7775 004173 7727 004174 6601 004175 0601 004176 0040 004177 7740 2187 004200 0000 GENTMP, 0 /GENERATE A TEMP 2188 004201 7640 SZA CLA 2189 004202 5213 JMP STRTMP /ITS A STRING TEMP 2190 004203 1033 TAD TMPCNT 2191 004204 2033 ISZ TMPCNT /BUMP COUNT 2192 004205 3134 DCA NAME1 2193 004206 4517 JMS I QLUKUP2 /LOOK UP THIS TEMP 2194 004207 2556 TEMPS 2195 004210 7777 -1 2196 004211 4223 JMS NEWVAR /NEW ONE ON ME 2197 004212 5600 JMP I GENTMP 2198 004213 1035 STRTMP, TAD STMPCT 2199 004214 2035 ISZ STMPCT /BUMP COUNT 2200 004215 3134 DCA NAME1 2201 004216 4517 JMS I QLUKUP2 /LOOK UP THIS TEMP 2202 004217 2560 STEMPS 2203 004220 7777 -1 2204 004221 4236 JMS NWSVAR /NEW STRING TEMP 2205 004222 5600 JMP I GENTMP 2206 004223 0000 NEWVAR, 0 /MAKE SYM NUM FOR VAR 2207 004224 1040 TAD VARCNT /PUT SYM NUM 2208 004225 1377 TAD (401 2209 004226 3027 DCA SYMBOL /INTO SYMBOL 2210 004227 1027 TAD SYMBOL /AND INTO ST ENTRY 2211 004230 4070 JMS SETFLD 2212 004231 3416 DCA I NEXT 2213 004232 6201 CDF 2214 004233 2040 ISZ VARCNT /BUMP COUNT 2215 004234 5623 JMP I NEWVAR /RETURN WITH SYM NUM 2216 004235 5776 JMP STOVER /S.T. OVERFLOW 2217 004236 0000 NWSVAR, 0 /MAKE SYM NUM FOR VAR$ 2218 004237 1041 TAD SVCNT /PUT SYM NUM 2219 004240 1377 TAD (401 2220 004241 3027 DCA SYMBOL 2221 004242 1027 TAD SYMBOL /INTO SYMBOL AND 2222 004243 4070 JMS SETFLD 2223 004244 3416 DCA I NEXT /S.T. ENTRY 2224 004245 6201 CDF 2225 004246 2041 ISZ SVCNT /OVERFLOW ? 2226 004247 5636 JMP I NWSVAR /NO, WE'RE OK 2227 004250 5776 JMP STOVER 2228 004251 0000 SAVAC, 0 /SAVE FAC (OR SAC) IF NECESSARY 2229 004252 1651 TAD I SAVAC /GET ENTRY POINTER 2230 004253 1014 TAD OSTACK 2231 004254 2251 ISZ SAVAC 2232 004255 3300 DCA SVTEMP /ADDR OF TYPE WORD 2233 004256 1700 TAD I SVTEMP /LOOK AT IT 2234 004257 0133 AND Q400 2235 004260 7650 SNA CLA 2236 004261 5651 JMP I SAVAC /NOT IN AC 2237 004262 7130 CLL CML RAR /SAVE STRING BIT ONLY 2238 004263 0700 AND I SVTEMP /OF TYPE WORD 2239 004264 3700 DCA I SVTEMP 2240 004265 1700 TAD I SVTEMP 2241 004266 4200 JMS GENTMP /GENERATE TEMP 2242 004267 1700 TAD I SVTEMP 2243 004270 4476 JMS I QMODSET /SET MODE 2244 004271 1301 TAD XSTOR 2245 004272 1027 TAD SYMBOL /GENERATE STORE 2246 004273 4500 JMS I QOUTWRD 2247 004274 1027 TAD SYMBOL /RETURN S.T. NUMBER 2248 004275 2300 ISZ SVTEMP /MOVE TO SYMBOL NUM WORD 2249 004276 3700 DCA I SVTEMP /SAVE THE TEMP NUM THERE 2250 004277 5651 JMP I SAVAC /RETURN WITH SAVE MADE 2251 004300 0000 SVTEMP, 0 2252 004301 2400 XSTOR, FSTA;AFSTA 004302 6700 2253 / SUBSCRIPT REGISTER LOADING ROUTINE 2254 004303 0000 LOADSS, 0 /LOAD SS REGS 2255 004304 7144 CLL CMA RAL /LOOK AT NUMBER OF SS 2256 004305 1021 TAD TEMP 2257 004306 7650 SNA CLA 2258 004307 5314 JMP LODSS2 /2 SS 2259 004310 7420 SNL 2260 004311 5320 JMP TOOMNY /MORE THAN 2 2261 004312 4323 JMS SSLOAD /LOAD SS REG 1 2262 004313 5703 JMP I LOADSS 2263 004314 7201 LODSS2, CLA IAC 2264 004315 4323 JMS SSLOAD /LOAD SS REG 2 2265 004316 4323 JMS SSLOAD /NOW SS REG 1 2266 004317 5703 JMP I LOADSS 2267 SSTYPE, 2268 004320 4473 TOOMNY, JMS I QERMSG /SUBSCRIPTING ERROR 2269 004321 2323 2323 2270 004322 5703 JMP I LOADSS 2271 004323 0000 SSLOAD, 0 /LOAD A SS REG FROM TOP OF STACK 2272 004324 3022 DCA TEMP2 /SS REG 1 OR 2 SWITCH 2273 004325 7144 CLL CMA RAL /BACK UP ONE ENTRY 2274 004326 1014 TAD OSTACK /ON THE OPERAND STACK 2275 004327 3014 DCA OSTACK 2276 004330 1014 TAD OSTACK 2277 004331 3011 DCA X11 /USE X11 TO GET STUFF 2278 004332 1411 TAD I X11 /GET TYPE WORD 2279 004333 7510 SPA 2280 004334 5320 JMP SSTYPE /SS MUST BE A NUMBER 2281 004335 0133 AND Q400 /GET AC BIT 2282 004336 7640 SZA CLA 2283 004337 5347 JMP SSINAC /ITS IN THE AC 2284 004340 1022 TAD TEMP2 2285 004341 7640 SZA CLA 2286 004342 1375 TAD (LSS2-LSS1 2287 004343 1374 TAD (LSS1 /LOAD REG 1 OR 2 ?? 2288 004344 1411 TAD I X11 /ANYHOW, THIS IS THE SOURCE 2289 004345 4500 JMS I QOUTWRD /OUTPUT THE CODE 2290 004346 5723 JMP I SSLOAD 2291 004347 1022 SSINAC, TAD TEMP2 2292 004350 1373 TAD (LSS1AC /NOTE: LSS2AC=LSS1AC+1 2293 004351 4500 JMS I QOUTWRD /SO OUTPUT ONE OF THEM 2294 004352 5723 JMP I SSLOAD 2295 / 2296 004353 0400 XSCOMP, SCOMP;SACOMP 004354 6440 2297 004355 1400 XDIV, FDIV;AFDIV 004356 6600 2298 / 2299 004357 0000 PATCH6, 0 2300 004360 2145 ISZ SIGDIG 2301 004361 5757 JMP I PATCH6 2302 004362 7040 CMA 2303 004363 3145 DCA SIGDIG 2304 004364 5772 JMP CONVLP 2305 / 2306 004365 0050 STAR, 50;0;XMUL;XMUL 004366 0000 004367 5762 004370 5762 2307 / NUMERIC CONVERSION ROUTINE (PART ONE) 2308 004372 4416 PAGE 004373 7406 004374 4000 004375 0400 004376 2337 004377 0401 2309 004400 0000 NUMBER, 0 /GENERAL NUMBER CONVERSION ROUTINE 2310 004401 3023 DCA DECPT /ZERO DECIMAL POINT SWITCH 2311 004402 3134 DCA WORD1 /ZERO FAC 2312 004403 3135 DCA WORD2 2313 004404 3136 DCA WORD3 2314 004405 3137 DCA ACO 2315 004406 3214 DCA SIGN /CLEAR SIGN SWITCH 2316 004407 1144 TAD NUMDIG 2317 004410 3145 DCA SIGDIG 2318 004411 4502 JMS I QGETC /GET A CHAR 2319 004412 5600 JMP I NUMBER /NO CHAR IS NO NUMBER 2320 004413 4777 JMS CHKSGN /CHECK FOR SIGN 2321 004414 0000 SIGN, 0 /THIS SWITCH GETS SET 2322 004415 3024 DCA NDIGIT /ZERO DIGIT COUNT 2323 004416 4531 CONVLP, JMS I QDIGIT /GET A DIGIT 2324 004417 5243 JMP TRYDEC /IS THERE A DECIMAL POINT ? 2325 004420 3360 DCA NXTDGT /SAVE THE DIGIT 2326 004421 4776 JMS PATCH6 2327 004422 2024 ISZ NDIGIT /INCR NUMBER OF DIGITS 2328 004423 1135 TAD WORD2 /PREPARE TO MULT BY 10 2329 004424 3141 DCA OP2 2330 004425 1136 TAD WORD3 2331 004426 3142 DCA OP3 2332 004427 1137 TAD ACO 2333 004430 3143 DCA OPO 2334 004431 4775 JMS I (AL1 /DOUBLE FAC 2335 004432 4775 JMS I (AL1 /DOUBLE AGAIN 2336 004433 4774 JMS I (OADD /TIMES FIVE 2337 004434 4775 JMS I (AL1 /ONE MORE DOUBLING IS TIMES 10 2338 004435 3141 DCA OP2 2339 004436 3142 DCA OP3 /PUT NEWEST DIGIT INTO OPERAND 2340 004437 1360 TAD NXTDGT 2341 004440 3143 DCA OPO 2342 004441 4774 JMS I (OADD /ADD IN NEWEST DIGIT 2343 004442 5216 JMP CONVLP 2344 004443 1023 TRYDEC, TAD DECPT /DECIMAL ALREADY ? 2345 004444 7640 SZA CLA 2346 004445 5261 JMP TRYE2 /YES, LOOK FOR EXPONENT 2347 004446 4502 JMS I QGETC /LOOK FOR . 2348 004447 5256 JMP DIGTST /SEE IF THERE WAS ANYTHING 2349 004450 1373 TAD (-56 2350 004451 7640 SZA CLA 2351 004452 5255 JMP TRYE1 /TRY FOR E 2352 004453 2023 ISZ DECPT /SET DECIMAL POINT SW 2353 004454 5215 JMP CONVLP-1/LOOP FOR OTHER DIGITS 2354 004455 4525 TRYE1, JMS I QBACK1 /PUT BACK NON . 2355 004456 1024 DIGTST, TAD NDIGIT /ANY DIGITS YET ? 2356 004457 7650 SNA CLA 2357 004460 5600 JMP I NUMBER /NO, NO NUMBER 2358 004461 4502 TRYE2, JMS I QGETC /LOOK FOR E 2359 004462 5303 JMP NOEXP+1 /GO HANDLE EXPONENT 2360 004463 1772 TAD WSTEP+2 /USE PART OF "STEP" LITERAL 2361 004464 7640 SZA CLA 2362 004465 5302 JMP NOEXP /NO EXPONENT 2363 004466 3272 GETEXP, DCA ESIGN /ZERO EXPONENT SIGN SWITCH 2364 004467 4502 JMS I QGETC /GET A CHAR 2365 004470 5302 JMP NOEXP /TREAT AS NO EXPONENT 2366 004471 4777 JMS CHKSGN /IS IT A SIGN 2367 FPRTNE, 2368 004472 0000 ESIGN, 0 /THIS IS THE SWITCH TO SET 2369 004473 4771 JMS SMLNUM /GO GET THE EXPONENT 2370 004474 1272 FIXEXP, TAD ESIGN /CHECK EXPONENT SIGN 2371 004475 7650 SNA CLA 2372 004476 5304 JMP NOEXP+2 2373 004477 1025 TAD EXPON /COMPLEMENT EXPONENT 2374 004500 7041 CIA 2375 004501 7410 SKP 2376 004502 4525 NOEXP, JMS I QBACK1 /PUT BACK NON E 2377 004503 3025 DCA EXPON /ZERO EXPONENT 2378 004504 1370 TAD (43 /NORMALIZE THE NUMBER 2379 004505 3134 DCA WORD1 2380 004506 4767 JMS I (ANORM 2381 004507 1023 TAD DECPT /WAS THERE A DECIMAL POINT ? 2382 004510 7640 SZA CLA 2383 004511 1024 TAD NDIGIT /HOW MANY DIGITS TO THE RIGHT ? 2384 004512 7041 CIA 2385 004513 1025 TAD EXPON /SUBTRACT THAT NUMBER FROM EXP 2386 004514 7500 SMA 2387 004515 5322 JMP POSEXP /EXPONENT IS POSITIVE 2388 004516 7041 CIA 2389 004517 3025 DCA EXPON /ONLY NEED ABS VALUE 2390 004520 1366 TAD (FPDIV /DO DIVIDES 2391 004521 5324 JMP .+3 2392 004522 3025 POSEXP, DCA EXPON 2393 004523 1365 TAD (FPMUL /DO MULTIPLIES 2394 004524 3272 DCA FPRTNE /MULTIPLY/DIVIDE ROUTINE 2395 004525 1364 TAD (PETABL-1 2396 004526 3011 DCA X11 /POWERS OF TEN TABLE 2397 004527 1025 EXPMUL, TAD EXPON /LOOK AT THE EXPONENT 2398 004530 7450 SNA 2399 004531 5353 JMP DOSIGN /IF 0 ITS THRU 2400 004532 7110 CLL RAR 2401 004533 3025 DCA EXPON /PUT LOWEST BIT INTO LINK 2402 004534 7420 SNL 2403 004535 5350 JMP SKPEXP /THIS ONE DOESN'T COUNT 2404 004536 1411 TAD I X11 /MOVE FACTOR INTO OPERAND 2405 004537 3140 DCA OP1 2406 004540 1411 TAD I X11 2407 004541 3141 DCA OP2 2408 004542 1411 TAD I X11 2409 004543 3142 DCA OP3 2410 004544 1411 TAD I X11 2411 004545 3143 DCA OPO 2412 004546 4672 JMS I FPRTNE /MULTIPLY OR DIVIDE BY THIS FACTOR 2413 004547 5327 JMP EXPMUL /CHECK NEXT BIT 2414 004550 1011 SKPEXP, TAD X11 /SKIP OVER THIS FACTOR 2415 004551 1363 TAD (4 2416 004552 5326 JMP EXPMUL-1 2417 004553 1214 DOSIGN, TAD SIGN /CHECK THE SIGN 2418 004554 7640 SZA CLA 2419 004555 4762 JMS I (NEGFAC /NEGATE IF NEGATIVE 2420 004556 2200 ISZ NUMBER /BUMP RETURN 2421 004557 5600 JMP I NUMBER /RETURN 2422 004560 0000 NXTDGT, 0 2423 2424 /INPUT DEVICE HANDLER 2425 004562 5267 *INDEVH 004563 0004 004564 5777 004565 5200 004566 5310 004567 5236 004570 0043 004571 5400 004572 2365 004573 7722 004574 5353 004575 5431 004576 4357 004577 5444 2426 004600 0000 0 2427 /INITIALIZATION CODE FOR RUN CASE 2428 PAGE 2429 005000 6212 RUNNED, CIF 10 /COME HERE IF .R BCOMP 2430 005001 4777 JMS I (200 /CALL COMMAND DECODER 2431 005002 0005 5 2432 005003 0201 0201 /ASSUMED EXTENSION "BA" 2433 005004 6211 CDF 10 2434 005005 1776 TAD I (7644 /TEST FOR /V 2435 005006 6201 CDF 2436 005007 0375 AND (4 2437 005010 7640 SZA CLA 2438 005011 4321 JMS VERNUM 2439 005012 1374 TAD (INFO-1 2440 005013 3010 DCA X10 2441 005014 6211 CDF 10 2442 005015 1773 TAD 7617 2443 005016 6201 CDF 2444 005017 7650 SNA CLA /NULL INPUT? 2445 005020 5200 JMP RUNNED /YES: NAUGHTY 2446 005021 1772 TAD 7777 2447 005022 7104 CLL RAL /BATCH RUNNING 2448 005023 7710 SPA CLA 2449 005024 5227 JMP SAVBOS /YES 2450 005025 6211 CDF 10 2451 005026 5243 JMP FINDSV-2 2452 005027 1371 SAVBOS, TAD (INFO-5 2453 005030 3010 DCA X10 2454 005031 1772 TAD 7777 2455 005032 0370 AND (70 2456 005033 1264 TAD CDFZRO 2457 005034 3235 DCA .+1 /CDF TO BATCH FIELD 2458 005035 6211 CDF 10 2459 005036 1720 TAD I BOSCTR 2460 005037 6211 CDF 10 2461 005040 3410 DCA I X10 /SAVE BOS WRDS IN INFO AREA 2462 005041 2320 ISZ BOSCTR 2463 005042 5235 JMP .-5 2464 005043 3410 DCA I X10 /ZERO EDITOR BLOCK NUMBER 2465 005044 6201 CDF 2466 005045 1411 FINDSV, TAD I X11 /LOOKUP SOME SAVE FILES 2467 005046 7450 SNA 2468 005047 5266 JMP LUBUF /GO LOOK FOR BASIC.UF 2469 005050 3255 DCA XXXXSV /SAVE POINTER TO NAME 2470 005051 7201 CLA IAC /THEY'RE ON SYS 2471 005052 6212 CIF 10 2472 005053 4777 JMS I (200 2473 005054 0002 2 2474 005055 0000 XXXXSV, 0 2475 005056 0000 0 2476 005057 5767 JMP NG /ERROR 2477 005060 1255 TAD XXXXSV /GET STARTING BLOCK 2478 005061 7001 IAC /PLUS 1 2479 005062 6211 CDF 10 2480 005063 3410 DCA I X10 /INTO INFO AREA 2481 005064 6201 CDFZRO, CDF 2482 005065 5245 JMP FINDSV /LOOP 2483 005066 7201 LUBUF, CLA IAC 2484 005067 6212 CIF 10 2485 005070 4777 JMS I (200 /LOOKUP BASIC.UF 2486 005071 0002 2 2487 005072 7562 BUFN /(USER DEFINED FUNCTIONS) 2488 005073 0000 0 2489 005074 5277 JMP .+3 /OK IF NOT THERE 2490 005075 1272 TAD .-3 /GET STARTING BLOCK +1 2491 005076 7001 IAC 2492 005077 6211 CDF 10 2493 005100 3410 DCA I X10 /INTO INFO BLOCK 2494 005101 6201 STRT3, CDF 2495 005102 7201 CLA IAC /ENTER TEMPORARY FILE 2496 005103 6212 CIF 10 2497 005104 4777 JMS I (200 2498 005105 0003 3 2499 005106 7566 TMPBLK, TMPFIL 2500 005107 0000 0 2501 005110 5767 JMP NG 2502 005111 1306 TAD TMPBLK /SAVE START OF TEMP FILE 2503 005112 3766 DCA OUBLOK 2504 005113 1306 TAD TMPBLK /IN A COUPLE PLACES 2505 005114 3046 DCA BLOCK 2506 005115 1307 TAD TMPBLK+1/ALSO THE SIZE 2507 005116 3765 DCA OUSIZE 2508 005117 5764 JMP GETDEV /GO FETCH DEVICE HANDLER 2509 005120 7774 BOSCTR, 7774 2510 005121 0000 VERNUM, 0 2511 005122 1363 TAD (VTEXT 2512 005123 3021 DCA TEMP 2513 005124 1362 TAD (-5 2514 005125 3022 DCA TEMP2 2515 005126 6046 TLS 2516 005127 1421 MOREV, TAD I TEMP 2517 005130 7112 CLL RTR 2518 005131 7012 RTR 2519 005132 7012 RTR 2520 005133 4761 JMS TTY 2521 005134 1421 TAD I TEMP 2522 005135 4761 JMS TTY 2523 005136 2021 ISZ TEMP 2524 005137 2022 ISZ TEMP2 2525 005140 5327 JMP MOREV 2526 005141 1360 TAD (215 2527 005142 4757 JMS TTX 2528 005143 1356 TAD (212 2529 005144 4757 JMS TTX 2530 005145 6041 TSF /WAIT FOR TTY TO GET DONE 2531 005146 5345 JMP .-1 /BEFORE RETURNING 2532 005147 5721 JMP I VERNUM 2533 / 2534 005150 0203 VTEXT, TEXT /BCOMP V/ 005151 1715 005152 2040 005153 4026 005154 0000 2535 *.-1 2536 005154 6501 VERLOC, VERSON^100+6001 2537 005155 0000 0 2538 / NUMERIC CONVERSION ROUTINE (PART TWO) 2539 005156 0212 PAGE 005157 3740 005160 0215 005161 3730 005162 7773 005163 5150 005164 7034 005165 6506 005166 6475 005167 7126 005170 0070 005171 7577 005172 7777 005173 7617 005174 7603 005175 0004 005176 7644 005177 0200 2540 005200 0000 FPMUL, 0 /FLOATING MULTIPLY ROUTINE 2541 005201 1134 TAD WORD1 /COMPUTE NEW EXPONENT 2542 005202 1140 TAD OP1 2543 005203 3140 DCA OP1 2544 005204 1135 TAD WORD2 /SAVE AC MANTISSA 2545 005205 3234 DCA TW2 2546 005206 1136 TAD WORD3 2547 005207 3235 DCA TW3 2548 005210 1377 TAD (-30 /SET ITERATION COUNTER 2549 005211 3371 DCA ITRCNT 2550 005212 3135 DCA WORD2 /ZERO FAC MANTISSA 2551 005213 3136 DCA WORD3 2552 005214 3137 DCA ACO 2553 005215 4776 MULLUP, JMS I (AR1 /SHIFT FAC RIGHT ONE 2554 005216 1234 TAD TW2 /SHIFT MULTIPLIER RIGHT 2555 005217 7110 CLL RAR 2556 005220 3234 DCA TW2 2557 005221 1235 TAD TW3 2558 005222 7010 RAR 2559 005223 3235 DCA TW3 2560 005224 7430 SZL 2561 005225 4353 JMS OADD /ADD IF LINK IS ONE 2562 005226 2371 ISZ ITRCNT /BUMP COUNT 2563 005227 5215 JMP MULLUP /LOOP 2564 005230 1140 TAD OP1 /PUT IN CORRECT EXPONENT 2565 005231 3134 DCA WORD1 2566 005232 4236 JMS ANORM /NORMALIZE THE RESULT 2567 005233 5600 JMP I FPMUL 2568 D2, 2569 005234 0000 TW2, 0 2570 D3, 2571 005235 0000 TW3, 0 2572 NFCNT, 2573 005236 0000 ANORM, 0 /NORMALIZE FAC 2574 005237 1135 TAD WORD2 /IS MANTISSA 0 ? 2575 005240 7450 SNA 2576 005241 1136 TAD WORD3 2577 005242 7450 SNA 2578 005243 1137 TAD ACO 2579 005244 7650 SNA CLA 2580 005245 5265 JMP ZEXP /YES, ZERO EXPONENT 2581 005246 7332 NORMLP, CLA CLL CML RTR /IS HIGH ORDER MANTISSA = 6000 2582 005247 1135 TAD WORD2 2583 005250 7440 SZA 2584 005251 5256 JMP NO6000 /NO, SKIP THIS CRAP 2585 005252 1136 TAD WORD3 /YES, IS THE REST 0 ? 2586 005253 7450 SNA 2587 005254 1137 TAD ACO 2588 005255 7640 SZA CLA /SKIP IF 600000 ... 0000 2589 005256 7710 NO6000, SPA CLA 2590 005257 5636 JMP I ANORM /NORM IS DONE WHEN BITS DIFFER 2591 005260 4775 JMS I (AL1 /SHIFT LEFT ONE 2592 005261 7240 CLA CMA /DECREMENT EXPONENT 2593 005262 1134 TAD WORD1 2594 005263 3134 DCA WORD1 2595 005264 5246 JMP NORMLP /LOOP 2596 005265 3134 ZEXP, DCA WORD1 2597 005266 5636 JMP I ANORM 2598 005267 0000 NEGFAC, 0 /NEGATE FAC 2599 005270 1374 TAD (ACO /GET POINTER TO OPERAND 2600 005271 3307 DCA NFPTR 2601 005272 7146 CLL CMA RTL /THREE WORD NEGATE 2602 005273 3236 DCA NFCNT 2603 005274 7100 CLL 2604 005275 7004 NFLOOP, RAL 2605 005276 1707 TAD I NFPTR /GET NEXT WORD 2606 005277 7161 CLL CML CIA 2607 005300 3707 DCA I NFPTR /RESTORE AFTER COMPLEMENTING 2608 005301 7260 CML CLA CMA /LINK GETS COMPLEMENTED ONCE HERE 2609 005302 1307 TAD NFPTR /AND ONCE AGAIN HERE 2610 005303 3307 DCA NFPTR /RESTORE DECREMENTED POINTER 2611 005304 2236 ISZ NFCNT 2612 005305 5275 JMP NFLOOP 2613 005306 5667 JMP I NEGFAC 2614 005307 0000 NFPTR, 0 2615 005310 0000 FPDIV, 0 2616 005311 4776 JMS I (AR1 /UNNORMALIZE AC BY ONE 2617 005312 1140 TAD OP1 /COMPUTE FINAL EXPONENT 2618 005313 7041 CIA 2619 005314 1134 TAD WORD1 2620 005315 3140 DCA OP1 /AND SAVE IT 2621 005316 1377 TAD (-30 /SET ITERATION COUNTER 2622 005317 3371 DCA ITRCNT 2623 005320 1135 TAD WORD2 2624 005321 7004 RAL /INITIALIZE LINK 2625 005322 7210 FPDVLP, CLA RAR /COMPARE SIGNS 2626 005323 1141 TAD OP2 2627 005324 7710 SPA CLA 2628 005325 5330 JMP .+3 2629 005326 1373 TAD (OPO-ACO/NEGATE OPERAND 2630 005327 4267 JMS NEGFAC 2631 005330 4353 JMS OADD /ADD OPERAND AND FAC 2632 005331 1235 TAD D3 2633 005332 7004 RAL 2634 005333 3235 DCA D3 2635 005334 1234 TAD D2 2636 005335 7004 RAL 2637 005336 3234 DCA D2 2638 005337 4775 JMS I (AL1 /LEFT SHIFT FAC ONE 2639 005340 2371 ISZ ITRCNT /TEST ITERATION COUNT 2640 005341 5322 JMP FPDVLP 2641 005342 1140 TAD OP1 /PUT QUOTIENT INTO FAC 2642 005343 3134 DCA WORD1 2643 005344 1234 TAD D2 2644 005345 3135 DCA WORD2 2645 005346 1235 TAD D3 2646 005347 3136 DCA WORD3 2647 005350 3137 DCA ACO 2648 005351 4236 JMS ANORM /NORMALIZE 2649 005352 5710 JMP I FPDIV 2650 005353 0000 OADD, 0 /ADD OPERAND TO FAC 2651 005354 7100 CLL 2652 005355 1143 TAD OPO 2653 005356 1137 TAD ACO 2654 005357 3137 DCA ACO 2655 005360 7004 RAL 2656 005361 1142 TAD OP3 2657 005362 1136 TAD WORD3 2658 005363 3136 DCA WORD3 2659 005364 7004 RAL 2660 005365 1141 TAD OP2 2661 005366 1135 TAD WORD2 2662 005367 3135 DCA WORD2 2663 005370 5753 JMP I OADD 2664 005371 0000 ITRCNT, 0 2665 / NUMERIC CONVERSION ROUTINE (FINALE) 2666 005373 0004 PAGE 005374 0137 005375 5431 005376 5414 005377 7750 2667 005400 0000 SMLNUM, 0 /INPUT A NUMBER <= 4095 2668 005401 3025 EXPLUP, DCA EXPON /ZERO THE EXPONENT 2669 005402 4531 JMS I QDIGIT /GET THE NEXT DIGIT 2670 005403 5600 JMP I SMLNUM /NUMBER DONE 2671 005404 3143 DCA OPO /SAVE THE DIGIT 2672 005405 1025 TAD EXPON /MULT BY 10 2673 005406 7104 CLL RAL 2674 005407 7104 CLL RAL 2675 005410 1025 TAD EXPON 2676 005411 7104 CLL RAL 2677 005412 1143 TAD OPO /ADD IN DIGIT 2678 005413 5201 JMP EXPLUP /STORE BACK INTO EXPONENT 2679 005414 0000 AR1, 0 /SHIFT FAC RIGHT 1 BIT 2680 005415 1135 TAD WORD2 2681 005416 7110 CLL RAR 2682 005417 3135 DCA WORD2 2683 005420 1136 TAD WORD3 2684 005421 7010 RAR 2685 005422 3136 DCA WORD3 2686 005423 1137 TAD ACO 2687 005424 7010 RAR 2688 005425 3137 DCA ACO 2689 005426 2134 ISZ WORD1 2690 005427 5614 JMP I AR1 2691 005430 5614 JMP I AR1 2692 005431 0000 AL1, 0 /SHIFT FAC LEFT ONE 2693 005432 1137 TAD ACO 2694 005433 7104 CLL RAL 2695 005434 3137 DCA ACO 2696 005435 1136 TAD WORD3 2697 005436 7004 RAL 2698 005437 3136 DCA WORD3 2699 005440 1135 TAD WORD2 2700 005441 7004 RAL 2701 005442 3135 DCA WORD2 2702 005443 5631 JMP I AL1 2703 005444 0000 CHKSGN, 0 /CHECK FOR SIGN 2704 005445 1377 TAD (-55 /IS IT - ? 2705 005446 7450 SNA 2706 005447 2644 ISZ I CHKSGN /YES, SET SWITCH 2707 005450 7440 SZA 2708 005451 1376 TAD (55-53 /IS IT + ? 2709 005452 7640 SZA CLA 2710 005453 4525 JMS I QBACK1 /RETURN CHAR OTHERWISE 2711 005454 5644 JMP I CHKSGN 2712 / STRING LITERAL SCANNER 2713 005455 0000 STRING, 0 /LOOK FOR A STRING 2714 005456 4513 JMS I QCHECKC /LOOK FOR " 2715 005457 7736 M42, -42 2716 005460 5655 JMP I STRING /NONE MEANS NO STRING 2717 005461 2255 ISZ STRING 2718 005462 3134 DCA WORD1 /ZERO CHAR COUNT 2719 005463 1375 TAD (WORD2 /SETUP POINTER 2720 005464 3021 DCA TEMP 2721 005465 1374 TAD (-STRLIM%2 /AND MAX SIZE 2722 005466 3022 DCA TEMP2 2723 005467 4320 SLOOP, JMS GCS /GET HIGH ORDER CHAR 2724 005470 5655 JMP I STRING /END OF STRING 2725 005471 7106 CLL RTL 2726 005472 7006 RTL 2727 005473 7006 RTL 2728 005474 3421 DCA I TEMP /PUT INTO UPPER HALF OF WORD 2729 005475 4320 JMS GCS /GET LOWER CHAR 2730 005476 5314 JMP PUT40 /FILL LAST WORD WITH BLANK 2731 005477 1421 TAD I TEMP /COMBINE THEM 2732 005500 3421 DCA I TEMP 2733 005501 2021 ISZ TEMP /BUMP POINTER 2734 005502 2022 ISZ TEMP2 /TOO BIG YET ? 2735 005503 5267 JMP SLOOP /NO, LOOP 2736 005504 4502 JMS I QGETC /MAX SIZE STRING, MUST FIND " 2737 005505 5311 JMP STRGER /BAD STRING LITERAL 2738 005506 1257 TAD M42 2739 005507 7650 SNA CLA 2740 005510 5655 JMP I STRING /OK 2741 005511 4473 STRGER, JMS I QERMSG /STRING ERROR 2742 005512 2123 2123 2743 005513 5655 JMP I STRING 2744 005514 1421 PUT40, TAD I TEMP /GET LAST WORD 2745 005515 1373 TAD (40 /PUT BLANK IN LOW CHAR 2746 005516 3421 DCA I TEMP /STORE NEW WORD 2747 005517 5655 JMP I STRING /RETURN 2748 005520 0000 GCS, 0 /GET A CHAR FOR STRING 2749 005521 4503 JMS I QGETCWB /GET A CHAR (INCLUDE BLANKS) 2750 005522 5311 JMP STRGER /BAD 2751 005523 1257 TAD M42 /IS IT " 2752 005524 7440 SZA 2753 005525 5335 JMP NOTQOT /NO 2754 005526 4503 JMS I QGETCWB /IS IT "" 2755 005527 5720 JMP I GCS /NO, THAT WAS IT 2756 005530 1257 TAD M42 /LOOK FOR SECOND " 2757 005531 7650 SNA CLA 2758 005532 5335 JMP NOTQOT /"" BECOMES " 2759 005533 4525 JMS I QBACK1 /PUT IT BACK 2760 005534 5720 JMP I GCS /LITERAL IS DONE 2761 005535 1372 NOTQOT, TAD (42 /RECREATE CHAR 2762 005536 0371 AND (77 /ELIMINATE EXTRA BITS 2763 005537 2134 ISZ WORD1 /BUMP STRING COUNT 2764 005540 2320 ISZ GCS /FIX RETURN 2765 005541 5720 JMP I GCS 2766 005542 0000 MODSET, 0 /SET INTERPRETER MODE 2767 005543 1055 TAD MODE /SUM OF DESIRED AND CURRENT 2768 005544 7700 SMA CLA 2769 005545 5742 JMP I MODSET /THEY WERE THE SAME 2770 005546 1055 TAD MODE /OTHERWISE SWITCH MODES 2771 005547 7640 SZA CLA 2772 005550 1370 TAD (NMODE-SMODE 2773 005551 1367 TAD (SMODE /ENTER NMODE OR MAYBE SMODE 2774 005552 4500 JMS I QOUTWRD 2775 005553 7130 CLL CML RAR 2776 005554 1055 TAD MODE /CHANGE THE SWITCH 2777 005555 3055 DCA MODE 2778 005556 5742 JMP I MODSET /AND RETURN 2779 005557 3400 XIDIV, FIDIV;AIDIV 005560 6740 2780 005561 7660 WPNT, -120;-116;-124;-50;0 005562 7662 005563 7654 005564 7730 005565 0000 2781 / VARIABLE OR FUNCTION REFERENCE SCANNER 2782 005567 7561 PAGE 005570 7760 005571 0077 005572 0042 005573 0040 005574 7730 005575 0135 005576 0002 005577 7723 2783 005600 0000 GETNAM, 0 /LOOK FOR VARIABLE OR FUNCT REFNCE 2784 005601 3026 DCA TYPE /ZERO TYPE 2785 005602 4530 JMS I QLETTER /MUST START WITH LETTER 2786 005603 5600 JMP I GETNAM /NO NAME 2787 005604 3134 DCA NAME1 2788 005605 4531 JMS I QDIGIT / ? 2789 005606 5235 JMP TRYFUN /NO, LOOK FOR FUN REF 2790 005607 7001 IAC /INCREMENT DIGIT 2791 005610 3135 LFDOLR, DCA NAME2 /STORE AS NAME2 2792 005611 4502 JMS I QGETC /LOOK FOR $ (STRING) 2793 005612 5233 JMP GOTNAM+2/NOT THERE 2794 005613 1377 TAD (-44 2795 005614 7440 SZA 2796 005615 5224 JMP NOSTRG /NO $ MEANS NO STRING 2797 005616 7130 CLL CML RAR /SET STRING BIT 2798 005617 1026 TAD TYPE 2799 005620 3026 DCA TYPE 2800 005621 4502 JMS I QGETC /LOOK FOR ( (ARRAY) 2801 005622 5233 JMP GOTNAM+2/NAME FINI 2802 005623 1377 TAD (-44 /PRIME THE CHAR 2803 005624 1376 NOSTRG, TAD (44-50 /LOOK FOR ( (ARRAY) 2804 005625 7650 SNA CLA 2805 005626 7132 CLL CML RTR /YES, SET ARRAY BIT 2806 005627 7450 SNA 2807 005630 4525 JMS I QBACK1 /NO, BACKUP 1 CHAR 2808 005631 1026 GOTNAM, TAD TYPE /MODIFY TYPE 2809 005632 3026 DCA TYPE 2810 005633 2200 ISZ GETNAM /BUMP RETURN 2811 005634 5600 JMP I GETNAM 2812 005635 4501 TRYFUN, JMS I QSAVECP /SAVE CHAR POSITION 2813 005636 1134 TAD NAME1 /MOVE FIRST CHAR OVER 2814 005637 7106 CLL RTL 2815 005640 7006 RTL 2816 005641 7006 RTL 2817 005642 3135 DCA NAME2 2818 005643 4530 JMS I QLETTER /LOOK FOR SECOND LETTER 2819 005644 5210 JMP LFDOLR /NONE THERE, LOOK FOR $ 2820 005645 1135 TAD NAME2 /COMBINE WITH FIRST LETTER 2821 005646 3135 DCA NAME2 2822 005647 4530 JMS I QLETTER /LOOK FOR THIRD LETTER 2823 005650 5302 JMP NOFNAM /NOT A FUNCTION NAME 2824 005651 3136 DCA NAME3 /PUT INTO NAME 2825 005652 1135 TAD NAME2 /IS IT A USER FUNCT ? 2826 005653 1375 TAD (-616 /FN 2827 005654 7650 SNA CLA 2828 005655 5304 JMP USRFUN /YES 2829 005656 1374 TAD (FUNS-1 /NO, CHECK VALIDITY OF NAME 2830 005657 3010 DCA X10 2831 005660 1410 FUNSRC, TAD I X10 /GET NEXT FUN NAME 2832 005661 7450 SNA 2833 005662 5302 JMP NOFNAM /END OF LIST, INVALID NAME 2834 005663 1135 TAD NAME2 /COMPARE FIRST 2 CHARS 2835 005664 7640 SZA CLA 2836 005665 5277 JMP NOMATC /THEY DON'T MATCH 2837 005666 1410 TAD I X10 /COMPARE 3RD CHAR 2838 005667 1136 TAD NAME3 2839 005670 7640 SZA CLA 2840 005671 5300 JMP NOMATC+1/DON'T MATCH 2841 005672 1410 TAD I X10 /GET FUNCTION CODE 2842 005673 3027 FUNOK, DCA SYMBOL /SAVE IT AS SYMBOL VALU 2843 005674 1373 TAD (1000 /SET FUNCTION BIT 2844 005675 3026 DCA TYPE 2845 005676 5210 JMP LFDOLR /LOOK FOR Q$] Q(] 2846 005677 2010 NOMATC, ISZ X10 /SKIP THIRD CHAR 2847 005700 2010 ISZ X10 /SKIP FUNCTION NUMBER 2848 005701 5260 JMP FUNSRC /KEEP LOOKING 2849 005702 4504 NOFNAM, JMS I QRESTCP /RESTORE CHAR POS 2850 005703 5210 JMP LFDOLR /LOOK FOR Q$] Q(] 2851 005704 1136 USRFUN, TAD NAME3 /GENERATE FUN NUMBER 2852 005705 5273 JMP FUNOK 2853 / ERROR MESSAGE REPORTER 2854 005706 0000 ERMSG, 0 /PRINT ERROR MESSAGE 2855 005707 7200 CLA 2856 005710 6201 CDF 2857 005711 1706 TAD I ERMSG /GET CODE 2858 005712 7112 CLL RTR /PRINT FIRST CHAR 2859 005713 7012 RTR 2860 005714 7012 RTR 2861 005715 4772 JMS TTY 2862 005716 1706 TAD I ERMSG /PRINT SECOND CHAR 2863 005717 4772 JMS TTY 2864 005720 2306 ISZ ERMSG /FIX RETURN ADDR 2865 005721 1350 TAD SPACE /PRINT SPACE 2866 005722 4772 JMS TTY 2867 005723 3772 DCA TTY /USE TTY AS A SWITCH 2868 005724 1053 TAD LINEH /PRINT HIGH ORDER 2869 005725 4335 JMS PSN 2870 005726 1054 TAD LINEL /THEN LOW ORDER 2871 005727 4335 JMS PSN /(LINE NUMBER NATCH !) 2872 005730 1371 TAD (215 /PRINT CARRIAGE RETURN 2873 005731 4770 JMS TTX 2874 005732 1367 TAD (212 /PRINT LINE FEED 2875 005733 4770 JMS TTX 2876 005734 5706 JMP I ERMSG /RETURN 2877 005735 0000 PSN, 0 /PRINT 3 DIGITS DECIMAL 2878 005736 3135 DCA WORD2 2879 005737 7146 CLL CMA RTL /-3 2880 005740 3021 DCA TEMP 2881 005741 1135 PRNTSN, TAD WORD2 /GET NEXT DIGIT 2882 005742 7106 CLL RTL /INTO THE LOW ORDER 2883 005743 7006 RTL /THREE BITS AND THE LINK 2884 005744 3135 DCA WORD2 /SAVE SHIFTED NUMBER 2885 005745 1135 TAD WORD2 /NOW DO LAST SHIFT 2886 005746 7004 RAL 2887 005747 0366 AND (17 /ONLY FOUR BITS 2888 005750 7440 SPACE, SZA 2889 005751 5355 JMP NOZERO /NOT A ZERO 2890 005752 1772 TAD TTY /ANY DIGITS YET ? 2891 005753 7650 SNA CLA 2892 005754 5357 JMP LEAD0 /NO, ITS A LEADING ZERO 2893 005755 1365 NOZERO, TAD (60 /MAKE IT ASCII 2894 005756 4772 JMS TTY /PRINT DIGIT 2895 005757 2021 LEAD0, ISZ TEMP /BUMP COUNT 2896 005760 5341 JMP PRNTSN /MORE DIGIT(S) 2897 005761 5735 JMP I PSN 2898 005762 1000 XMUL, FMPY;AFMPY 005763 6540 2899 / EXPONENT TABLE 2900 005765 0060 PAGE 005766 0017 005767 0212 005770 3740 005771 0215 005772 3730 005773 1000 005774 6070 005775 7162 005776 7774 005777 7734 2901 006000 0004 PETABL, 0004;2400;0000;0000 006001 2400 006002 0000 006003 0000 2902 006004 0007 0007;3100;0000;0000 006005 3100 006006 0000 006007 0000 2903 006010 0016 0016;2342;0000;0000 006011 2342 006012 0000 006013 0000 2904 006014 0033 0033;2765;7020;0000 006015 2765 006016 7020 006017 0000 2905 006020 0066 0066;2160;6744;6770 006021 2160 006022 6744 006023 6770 2906 006024 0153 0153;2356;1326;6501 006025 2356 006026 1326 006027 6501 2907 006030 0325 0325;3023;6017;5120 006031 3023 006032 6017 006033 5120 2908 006034 0652 0652;2235;6443;7114 006035 2235 006036 6443 006037 7114 2909 006040 1523 1523;2523;7565;7735 006041 2523 006042 7565 006043 7735 2910 006044 3245 3245;3430;6320;2565 006045 3430 006046 6320 006047 2565 2911 / OPERATOR TABLE 2912 006050 2557 OPR8RS, PLUS;-53 006051 7725 2913 006052 2755 MINUS;-55 006053 7723 2914 006054 4365 STAR;-52 006055 7726 2915 006056 2761 SLASH;-57 006057 7721 2916 006060 3164 UPAROW;-136 006061 7642 2917 006062 1557 AMPSND;-46 006063 7732 2918 006064 0000 0 2919 006065 4000 SASIGN, 4000;XSTOR 006066 4301 2920 006067 0000 ASSIGN, 0;XSTOR 006070 4301 2921 / FUNCTION NAME TABLE (INTERNAL FUNCTIONS) 2922 006071 7676 FUNS, -0102;-23;FUNC3 006072 7755 006073 7400 2923 006074 7655 -0123;-03;FUNC2 006075 7775 006076 7417 2924 006077 7654 -0124;-16;FUNC1 006100 7762 006101 7416 2925 006102 7470 -0310;-22;FUNC2+20 006103 7756 006104 7437 2926 006105 7461 -0317;-23;FUNC1+20 006106 7755 006107 7436 2927 006110 7377 -0401;-24;FUNC2+40 006111 7754 006112 7457 2928 006113 7250 -0530;-20;FUNC1+40 006114 7760 006115 7456 2929 006116 6662 -1116;-24;FUNC1+100 006117 7754 006120 7516 2930 006121 6373 -1405;-16;FUNC2+60 006122 7762 006123 7477 2931 006124 6361 -1417;-07;FUNC1+120 006125 7771 006126 7536 2932 006127 5761 -2017;-23;FUNC2+100 006130 7755 006131 7517 2933 006132 5562 -2216;-04;FUNC1+200 006133 7774 006134 7616 2934 006135 5473 -2305;-07;FUNC2+120 006136 7771 006137 7537 2935 006140 5471 -2307;-16;FUNC1+140 006141 7762 006142 7556 2936 006143 5467 -2311;-16;FUNC1+160 006144 7762 006145 7576 2937 006146 5457 -2321;-22;FUNC1+220 006147 7756 006150 7636 2938 006151 5454 -2324;-22;FUNC2+140 006152 7756 006153 7557 2939 006154 5177 -2601;-14;FUNC2+160 006155 7764 006156 7577 2940 006157 5356 -2422;-03;FUNC2+220 006160 7775 006161 7637 2941 006162 0000 ENDFNS, 0;0;FUNC4 /SPACE FOR NEW FUNCTIONS 006163 0000 006164 7415 2942 006165 0000 0;0;FUNC4+20 006166 0000 006167 7435 2943 006170 0000 0;0;FUNC4+40 006171 0000 006172 7455 2944 006173 0000 0;0;FUNC4+60 006174 0000 006175 7475 2945 006176 0000 0;0;FUNC4+100 006177 0000 006200 7515 2946 006201 0000 0;0;FUNC4+120 006202 0000 006203 7535 2947 006204 0000 0;0;FUNC4+140 006205 0000 006206 7555 2948 006207 0000 0;0;FUNC4+160 006210 0000 006211 7575 2949 006212 0000 0;0;FUNC4+200 006213 0000 006214 7615 2950 006215 0000 0;0;FUNC4+220 006216 0000 006217 7635 2951 006220 0000 0;0;FUNC4+240 006221 0000 006222 7655 2952 006223 0000 0;0;FUNC4+260 006224 0000 006225 7675 2953 006226 0000 0;0;FUNC4+300 006227 0000 006230 7715 2954 006231 0000 0;0;FUNC4+320 006232 0000 006233 7735 2955 006234 0000 0;0;FUNC4+340 006235 0000 006236 7755 2956 006237 0000 0;0;FUNC4+360 /SIXTEEN OF THEM 006240 0000 006241 7775 2957 006242 0000 0 2958 / KEYWORD LIST 2959 006243 7664 KEYWRD, -114;-105;-124;LET 006244 7673 006245 7654 006246 0324 2960 006247 7667 -111;-106;-105;-116;-104;IFEND 006250 7672 006251 7673 006252 7662 006253 7674 006254 2103 2961 006255 7667 -111;-106;IF 006256 7672 006257 2000 2962 006260 7672 -106;-117;-122;FOR 006261 7661 006262 7656 006263 1600 2963 006264 7662 -116;-105;-130;-124;NEXTX 006265 7673 006266 7650 006267 7654 006270 0704 2964 006271 7671 WGOTO, -107;-117 006272 7661 2965 006273 7654 WTO, -124;-117;GOTO 006274 7661 006275 2147 2966 006276 7671 -107;-117;-123;-125;-102;GOSUB 006277 7661 006300 7655 006301 7653 006302 7676 006303 2154 2967 006304 7667 -111;-116;-120;-125;-124;INPUT 006305 7662 006306 7660 006307 7653 006310 7654 006311 0400 2968 006312 7660 -120;-122;-111;-116;-124;PRINT 006313 7656 006314 7667 006315 7662 006316 7654 006317 0441 2969 006320 7674 -104;-111;-115;DIM 006321 7667 006322 7663 006323 0600 2970 006324 7674 -104;-101;-124;-101;DATA 006325 7677 006326 7654 006327 7677 006330 1431 2971 006331 7674 -104;-105;-106;DEF 006332 7673 006333 7672 006334 1200 2972 006335 7672 -106;-111;-114;-105;FILE 006336 7667 006337 7664 006340 7673 006341 2522 2973 006342 7656 -122;-105;-101;-104;READX 006343 7673 006344 7677 006345 7674 006346 1526 2974 006347 7656 -122;-105;-115;REMARK 006350 7673 006351 7663 006352 0211 2975 006353 7656 -122;-105;-123;-124;-117;-122;-105;RESTOR 006354 7673 006355 7655 006356 7654 006357 7661 006360 7656 006361 7673 006362 0540 2976 006363 7656 -122;-105;-124;-125;-122;-116;RETURN 006364 7673 006365 7654 006366 7653 006367 7656 006370 7662 006371 3561 2977 006372 7655 -123;-124;-117;-120;STOPX 006373 7654 006374 7661 006375 7660 006376 3565 2978 006377 7656 -122;-101;-116;-104;-117;-115;-111;-132;-105;RANDOM 006400 7677 006401 7662 006402 7674 006403 7661 006404 7663 006405 7667 006406 7646 006407 7673 006410 3564 2979 006411 7675 -103;-114;-117;-123;-105;CLOSE 006412 7664 006413 7661 006414 7655 006415 7673 006416 3342 2980 006417 7675 -103;-110;-101;-111;-116;CHAIN 006420 7670 006421 7677 006422 7667 006423 7662 006424 3750 2981 006425 7653 -125;-104;-105;-106;UDEF 006426 7674 006427 7673 006430 7672 006431 1000 2982 006432 7653 -125;-123;-105;USEX 006433 7655 006434 7673 006435 1745 2983 006436 7673 -105;-116;-104;END 006437 7662 006440 7674 006441 0351 2984 006442 0000 0 2985 / OS-8 OUTPUT ROUTINE 2986 006443 0000 OWTEMP, 0 2987 006444 0000 OUPTR, OUBUF 2988 006445 7377 OCOUNT, -401 2989 006446 0000 OUTWRD, 0 /OUTPUT ROUTINE 2990 006447 3243 DCA OWTEMP /SAVE WORD 2991 006450 2045 ISZ LOCTRL /INCREMENT PSEUDO CODE 2992 006451 7410 SKP /LOCATION COUNTER 2993 006452 2044 ISZ LOCTRH /BOTH HALVES 2994 006453 7000 NOP /IT'LL NEVER HAPPEN 2995 006454 2245 ISZ OCOUNT /TEST FOR BUFFER FULL 2996 006455 5263 JMP NOWRIT /STILL SOME ROOM 2997 006456 4271 JMS OUDUMP /DUMP THE BUFFER 2998 006457 1274 TAD OUBLOK-1/RESET BUFFER PARAMETERS 2999 006460 3244 DCA OUPTR 3000 006461 1377 TAD (-400 3001 006462 3245 DCA OCOUNT 3002 006463 1243 NOWRIT, TAD OWTEMP /PUT WORD 3003 006464 6211 CDF 10 3004 006465 3644 DCA I OUPTR /INTO BUFFER 3005 006466 6201 CDF 3006 006467 2244 ISZ OUPTR /MOVE POINTER 3007 006470 5646 JMP I OUTWRD 3008 006471 0000 OUDUMP, 0 /DUMP OUT BUFFER 3009 006472 4776 JMS I (7607 /CALL OUTPUT HANDLER 3010 006473 4210 4210 3011 006474 0000 OUBUF 3012 006475 0000 OUBLOK, 0 3013 006476 5302 JMP OUERR 3014 006477 2275 ISZ OUBLOK /INCREMENT BLOCK NUMBER 3015 006500 2306 ISZ OUSIZE /CHECK FOR HOLE FULL 3016 006501 5671 JMP I OUDUMP 3017 006502 4473 OUERR, JMS I QERMSG /OUTPUT FILE ERROR 3018 006503 1706 1706 3019 006504 5406 JMP I XABORT /ABORT COMPILATION 3020 006505 0000 ODEVH, 0 3021 006506 0000 OUSIZE, 0 3022 006507 4313 AMPRTN, JMS LOD1ST /LOAD OP1$ 3023 006510 1561 AMPSND+2 /CONC OP2$ 3024 006511 4313 SCRTN, JMS LOD1ST /LOAD OP1$ 3025 006512 6570 SCOMPR+1 /COMP OP2$ 3026 006513 0000 LOD1ST, 0 /HANDLE ONE WAY INSTRUCTIONS 3027 006514 4524 JMS I QSAVAC /STORE 2ND ARG IF IN SAC 3028 006515 7777 -1 3029 006516 7240 CLA CMA /GET TYPE OF 2ND ARG 3030 006517 1014 TAD OSTACK 3031 006520 3021 DCA TEMP 3032 006521 7132 CLL CML RTR /IS IT SUBSCRIPTED ? 3033 006522 0421 AND I TEMP 3034 006523 7650 SNA CLA 3035 006524 5331 JMP SKIP2 /NO, ENTRY IS ONLY 2 WORDS 3036 006525 1421 TAD I TEMP /GET NUMBER OF DIMS 3037 006526 0367 AND SCOMPR /LITERAL 3 3038 006527 7104 CLL RAL /DOUBLE IT 3039 006530 7041 CIA 3040 006531 1375 SKIP2, TAD (-2 /FIND SIZE OF 2ND ARG 3041 006532 3354 DCA OP2SIZ /AND SAVE IT 3042 006533 1014 TAD OSTACK /BACK UP STACK 3043 006534 1354 TAD OP2SIZ 3044 006535 3014 DCA OSTACK 3045 006536 1014 TAD OSTACK /AND SAVE THIS ADDR 3046 006537 3012 DCA X12 3047 006540 4520 JMS I QLOAD /LOAD ARG 1 3048 006541 7130 CLL CML RAR /GET TYPE BIT 3049 006542 0056 AND TYPE1 /PUT BACK ARG1 3050 006543 1133 TAD Q400 3051 006544 3414 DCA I OSTACK 3052 006545 3414 DCA I OSTACK 3053 006546 1412 TAD I X12 /PUT BACK ARG 2 3054 006547 3414 DCA I OSTACK 3055 006550 2354 ISZ OP2SIZ 3056 006551 5346 JMP .-3 3057 006552 1713 TAD I LOD1ST /GET OPERATOR FINISH 3058 006553 5774 JMP OUTOPR+1/GO FINISH CODE 3059 006554 0000 OP2SIZ, 0 /SACRED COUNT WORD 3060 006555 0000 CHECKC, 0 /CHAR CHECKER 3061 006556 4502 JMS I QGETC /GET A CHARACTER 3062 006557 5365 JMP .+6 /FAILED 3063 006560 1755 TAD I CHECKC /COMPARE 3064 006561 7450 SNA 3065 006562 2355 ISZ CHECKC /MATCHES, SKIP TWO 3066 006563 7640 SZA CLA 3067 006564 4525 JMS I QBACK1 /NO MATCH, REPLACE 3068 006565 2355 ISZ CHECKC /ALWAYS SKIP AT LEAST 1 3069 006566 5755 JMP I CHECKC 3070 006567 0003 SCOMPR, 3;SCRTN-3;4000;XSCOMP;XSCOMP 006570 6506 006571 4000 006572 4353 006573 4353 3071 / OS-8 FILE INPUT ROUTINE 3072 006574 3401 PAGE 006575 7776 006576 7607 006577 7400 3073 006600 0000 ICHAR, 0 /READ CHAR FROM INPUT FILE 3074 006601 2256 ISZ INJMP /BUMP THREE WAY UNPACK SWITCH 3075 006602 2333 ISZ INCHCT 3076 006603 5256 INJMPP, JMP INJMP 3077 006604 1332 TAD INEOF /LAST READ YEILD END OF FILE ? 3078 006605 7640 SZA CLA 3079 006606 5234 JMP ENDFIL /YES 3080 006607 1335 INGBUF, TAD INCTR /BUMP RECORD COUNTER 3081 006610 7101 CLL IAC 3082 006611 7420 SNL 3083 006612 3335 DCA INCTR /RESTORE IF IT HASN'T OVERFLOWED 3084 006613 7430 SZL 3085 006614 2332 ISZ INEOF /SET END OF FILE SWITCH 3086 006615 4734 JMS I INHNDL /DO THE READ 3087 006616 0200 0200 /ONE BLOCK TO FIELD 0 3088 006617 7200 INBUFP, INBUF 3089 006620 0000 INREC, 0 3090 006621 5232 JMP INERR /HANDLER ERROR 3091 006622 2220 INBREC, ISZ INREC /BUMP RECORD NUMBER 3092 006623 1377 TAD (-601 /SET CHAR COUNT 3093 006624 3333 DCA INCHCT 3094 006625 1203 TAD INJMPP /RESET THREE WAY JUMP SWITCH 3095 006626 3256 DCA INJMP 3096 006627 1217 TAD INBUFP /RESET BUFFER POINTER 3097 006630 3336 DCA INPTR 3098 006631 5201 JMP ICHAR+1 /GO AGAIN 3099 006632 7700 INERR, SMA CLA 3100 006633 5222 JMP INBREC 3101 006634 4473 ENDFIL, JMS I QERMSG /INPUT FILE ERROR 3102 006635 1505 1505 3103 006636 1376 ABORT, TAD (4207 /RESTORE ^C LOCZTIONS 3104 006637 3775 DCA 7600 3105 006640 1374 TAD (6213 3106 006641 3773 DCA 7605 3107 006642 6211 CDF 10 3108 006643 1772 TAD INFO /GET START OF BASIC.SV 3109 006644 6201 CDF 3110 006645 7450 SNA 3111 006646 5773 JMP 7605 /T'WERE RUNNED 3112 006647 3253 DCA EDTBLK /SAVE MAGICAL BLOCK NUMBER 3113 006650 4771 JMS 7607 /USE SYS HANDLER 3114 006651 2100 EDTSIZ /TO READ IN THIS MUCH 3115 006652 0000 0 /INTO ZERO 3116 006653 0000 EDTBLK, 0 /FROM HERE 3117 006654 7402 HLT /HALT IF BAD READ 3118 006655 5770 JMP EDTBGN /GO RESTART EDITOR 3119 006656 7402 INJMP, HLT /3 WAY CHAR UNPACK JUMP 3120 006657 5300 JMP ICHAR1 3121 006660 5274 JMP ICHAR2 3122 006661 1203 ICHAR3, TAD INJMPP /RESET JUMP SWITCH 3123 006662 3256 DCA INJMP 3124 006663 1736 TAD I INPTR 3125 006664 0367 AND (7400 /COMBINE THE HIGH ORDER BITS 3126 006665 7112 CLL RTR /OF THE TWO WORDS 3127 006666 7012 RTR 3128 006667 1331 TAD INTMP /TO FORM THE THIRD CHAR 3129 006670 7012 RTR 3130 006671 7012 RTR 3131 006672 2336 ISZ INPTR /BUMP WORD POINTER 3132 006673 5301 JMP ICHAR1+1/DO SOME COMMON STUFF 3133 006674 1736 ICHAR2, TAD I INPTR /SAVE THE HIGH ORDER BITS 3134 006675 0367 AND (7400 3135 006676 3331 DCA INTMP /FOR THE THIRD CHAR 3136 006677 2336 ISZ INPTR /GO TO THE SECOND WORD 3137 006700 1736 ICHAR1, TAD I INPTR /GET THE LOW 7 BITS 3138 006701 0366 AND (177 /AND I MEAN ONLY 7 !! 3139 006702 7450 SNA /IGNOR LEADER-TRAILER 3140 006703 5201 JMP ICHAR+1 3141 006704 1365 TAD (-134 /CHECK FOR \ (STMT SEPARATOR) 3142 006705 7450 SNA 3143 006706 5600 JMP I ICHAR /TREAT LIKE CR 3144 006707 1364 TAD (134-32 /IS IT ^Z (END OF FILE) 3145 006710 7450 SNA 3146 006711 5234 JMP ENDFIL /YES, ITS END OF FILE 3147 006712 1363 TAD (32-12 3148 006713 7450 SNA 3149 006714 5201 JMP ICHAR+1 /IGNORE LINE FEEDS 3150 006715 7001 IAC /TABS -> BLANKS 3151 006716 7450 SNA 3152 006717 1362 TAD (40-11 3153 006720 1361 TAD (11-15 3154 006721 7450 SNA 3155 006722 5600 JMP I ICHAR /RETURN ON CARRIAGE RETURN 3156 006723 7001 IAC 3157 006724 7450 SNA 3158 006725 5201 JMP ICHAR+1 /IGNORE FORM FEEDS 3159 006726 1360 TAD (14 /FIX CHAR 3160 006727 2200 ISZ ICHAR 3161 006730 5600 JMP I ICHAR /RETURN TO THE CALLING WORLD 3162 006731 0000 INTMP, 0 3163 006732 0000 INEOF, 0 3164 006733 7777 INCHCT, -1 3165 006734 0000 INHNDL, 0 /ENTRY ADDR GOES HERE 3166 006735 0000 INCTR, 0 3167 006736 0000 INPTR, 0 3168 006737 0000 CHKWD, 0 /WORD CHECKER 3169 006740 1737 TAD I CHKWD /GET POINTER 3170 006741 2337 ISZ CHKWD 3171 006742 3356 DCA CWTEMP /SAVE POINTER 3172 006743 1756 WDLOOP, TAD I CWTEMP /GET NEXT CHAR 3173 006744 7500 SMA 3174 006745 2337 ISZ CHKWD /IF NON NEG, FIX RETURN 3175 006746 7710 SPA CLA 3176 006747 4502 JMS I QGETC /GET CHAR 3177 006750 5737 JMP I CHKWD /RETURN 3178 006751 1756 TAD I CWTEMP /COMPARE 3179 006752 2356 ISZ CWTEMP /INCR POINTER 3180 006753 7650 SNA CLA 3181 006754 5343 JMP WDLOOP /MORE 3182 006755 5737 JMP I CHKWD /FAILED 3183 006756 0000 CWTEMP, 0 3184 / INITIALIZATION CODE 3185 006760 0014 *LINE 006761 7774 006762 0027 006763 0020 006764 0102 006765 7644 006766 0177 006767 7400 006770 3212 006771 7607 006772 7604 006773 7605 006774 6213 006775 7600 006776 4207 006777 7177 3186 007000 5777 START, JMP RUNNED /DO LOOKUPS, AND FIND TEMPFILE 3187 007001 6211 CHAINED,CDF 10 3188 007002 1776 TAD I (7644 /WAS IT A CHAIN FROM BRTS ? 3189 007003 6201 CDF 3190 007004 0375 AND (100 3191 007005 7650 SNA CLA 3192 007006 5213 JMP CHEDIT /NO, FROM THE EDITOR 3193 007007 6212 CIF 10 /CHAIN FROM BRTS, RESET 3194 007010 4774 JMS I (200 /TO FORGET DSK: HANDLER 3195 007011 0013 13 3196 007012 5773 JMP STRT3 /NOW GO OPEN TEMP FILE 3197 007013 1372 CHEDIT, TAD (INFO+7 /PICK UP SOME STUFF 3198 007014 3010 DCA X10 3199 007015 6211 CDF 10 /FROM THE INFO BLOCK 3200 007016 1410 TAD I X10 /START OF TEMP FILE 3201 007017 7450 SNA 3202 007020 5771 JMP I (RUNNED+4 /MUST BE CHAIN FROM CCL 3203 007021 3046 DCA BLOCK 3204 007022 1410 TAD I X10 /SIZE OF HOLE 3205 007023 6201 CDF 3206 007024 3770 DCA OUSIZE 3207 007025 1046 TAD BLOCK 3208 007026 3767 DCA OUBLOK 3209 007027 6211 CDF 10 3210 007030 1410 TAD I X10 /ENTRY ADDR OF HANDLER 3211 007031 6201 CDF 3212 007032 3766 DCA INHNDL 3213 007033 5251 JMP STRT2 3214 007034 6211 GETDEV, CDF 10 3215 007035 1765 TAD 7617 /GET DEVICE NUM FOR INPUT FILE 3216 007036 6201 CDF 3217 007037 6212 CIF 10 3218 007040 4774 JMS I (200 /GO FETCH THE DEVICE 3219 007041 0001 1 3220 007042 4601 INDEVH+1 /2 PAGE HANDLER IS OK 3221 007043 5326 JMP NG /ERROR 3222 007044 1242 TAD .-2 /GET HANDLER ADDRESS 3223 007045 3766 DCA INHNDL /SAVE IT 3224 007046 6212 CIF 10 3225 007047 4774 JMS I (200 /RESET SYSTEM TABLES 3226 007050 0013 13 /DELETING TENTATIVE FILES 3227 007051 6211 STRT2, CDF 10 3228 007052 1765 TAD 7617 /SET UP INPUT FILE PARAMS 3229 007053 6201 CDF 3230 007054 0364 AND (7760 /GET SIZE 3231 007055 1363 TAD (17 3232 007056 7132 CLL CML RTR 3233 007057 7012 RTR 3234 007060 3762 DCA INCTR 3235 007061 6211 CDF 10 3236 007062 1761 TAD 7620 /GET BLOCK NUMBER 3237 007063 6201 CDF 3238 007064 3760 DCA INREC 3239 007065 6211 CDF 10 3240 007066 1757 TAD INFO+3 /GET START OF BRTS.SV (+1) 3241 007067 3050 DCA BRTS 3242 007070 1756 TAD INFO /GET START OF BASIC.SV (+1) 3243 007071 3052 DCA ABORTX /BOTH FOR BLOAD 3244 007072 1755 TAD INFO+2 /GET START OF BLOAD.SV 3245 007073 6201 CDF 3246 007074 3754 DCA LDRBLK /FOR CHAIN TO BLOAD 3247 007075 6046 TLS /SET TTY FLAG 3248 007076 2334 ISZ WASTE 3249 007077 5276 JMP .-1 3250 007100 2335 ISZ TIME 3251 007101 5300 JMP .-1 3252 007102 1353 INITST, TAD (VARST-1/INITIALIZE ST AREA 3253 007103 3012 DCA X12 3254 007104 1352 TAD (-436-436-436 3255 007105 3011 DCA X11 /SIZE OF NUM AND STRING TABLES 3256 007106 6211 CDF 10 3257 007107 7130 CLL CML RAR /SET TO 4000 3258 007110 3412 DCA I X12 3259 007111 2011 ISZ X11 3260 007112 5307 JMP .-3 3261 007113 1351 TAD (-440 /NOW ARRAY TABLES 3262 007114 3011 DCA X11 /AND BUCKETS 3263 007115 3412 DCA I X12 3264 007116 2011 ISZ X11 /SET THEM TO ZERO 3265 007117 5315 JMP .-2 3266 007120 6201 CDF 3267 007121 1333 TAD JABORT /MODIFY ^C LOCATIONS 3268 007122 3750 DCA 7600 3269 007123 1333 TAD JABORT 3270 007124 3747 DCA 7605 3271 007125 5746 JMP CORE /GET CORE SIZE 3272 007126 6046 NG, TLS 3273 007127 4473 JMS I QERMSG /SUPER ERROR 3274 007130 2331 2331 3275 007131 6041 TSF 3276 007132 5331 JMP .-1 3277 007133 5406 JABORT, JMP I XABORT /ABORT COMPILATION 3278 007134 0000 WASTE, 0 3279 007135 0200 TIME, 200 3280 007146 7200 *INBUF 007147 7605 007150 7600 007151 7340 007152 6246 007153 0377 007154 0357 007155 7606 007156 7604 007157 7607 007160 6620 007161 7620 007162 6735 007163 0017 007164 7760 007165 7617 007166 6734 007167 6475 007170 6506 007171 5004 007172 7613 007173 5101 007174 0200 007175 0100 007176 7644 007177 5000 3281 007200 1777 CORE, TAD 7777 /MODIFIED CORE SIZE ROUTINE FROM 3282 007201 0376 AND (70 3283 007202 7450 SNA 3284 007203 5211 JMP COR0 3285 007204 7110 CLL RAR 3286 007205 7012 RTR 3287 007206 7001 IAC 3288 007207 3336 DCA CORSIZ 3289 007210 5241 JMP COREX /OS8 SOFTWARE SUPPORT MANUAL 3290 007211 6201 COR0, CDF 3291 007212 1336 TAD CORSIZ 3292 007213 7006 RTL 3293 007214 7004 RAL 3294 007215 0226 AND COR70 3295 007216 1241 TAD COREX 3296 007217 3220 DCA .+1 3297 007220 6201 COR1, CDF 3298 007221 1734 TAD I CORLOC 3299 007222 7000 COR2, NOP 3300 007223 3220 DCA COR1 3301 007224 1222 TAD COR2 3302 007225 3734 DCA I CORLOC 3303 007226 0070 COR70, 70 3304 007227 1734 TAD I CORLOC 3305 007230 7400 CORX, 7400 3306 007231 1230 TAD CORX 3307 007232 1335 TAD CORV 3308 007233 7640 SZA CLA 3309 007234 5241 JMP COREX 3310 007235 1220 TAD COR1 3311 007236 3734 DCA I CORLOC 3312 007237 2336 ISZ CORSIZ 3313 007240 5211 JMP COR0 3314 007241 6201 COREX, CDF 3315 007242 7240 CLA CMA /HI FIELD IS #FIELDS-1 3316 007243 1336 TAD CORSIZ 3317 007244 3047 DCA HIFLD 3318 007245 1047 TAD HIFLD 3319 007246 7041 CIA 3320 007247 3775 DCA NFLDS 3321 007250 7040 CMA /HOW MANY FIELDS ? 3322 007251 1047 TAD HIFLD /MUST THIS BASIC USE ? 3323 007252 7640 SZA CLA /(SOUNDS LIKE A LINE BY DYLAN) 3324 007253 5266 JMP GENER 3325 007254 1374 TAD (PATCH1+3&177+5200 3326 007255 3773 DCA PATCH1 /ONLY 8K, DON'T USE CDF'S 3327 007256 1372 TAD (PATCH2+11&177+5200 3328 007257 3771 DCA PATCH2 3329 007260 1370 TAD (PATCH3+4&177+5200 3330 007261 3767 DCA PATCH3 3331 007262 1366 TAD (PATCH4+3&177+5200 3332 007263 3765 DCA PATCH4 3333 007264 1364 TAD (7000 3334 007265 3763 DCA PATCH5 3335 007266 4762 GENER, JMS GENTMP /GENERATE TEMP 0 3336 007267 4762 JMS GENTMP /GENERATE TEMP 1 3337 007270 4762 JMS GENTMP /GENERATE TEMP 2 3338 007271 7201 CLA IAC /GENERATE STRING TEMP 0 3339 007272 4762 JMS GENTMP 3340 007273 7201 CLA IAC 3341 007274 3134 DCA WORD1 /GENERATE LITERAL 1.0 3342 007275 7132 CLL CML RTR 3343 007276 3135 DCA WORD2 3344 007277 4517 JMS I QLUKUP2 /ENTER INTO ST 3345 007300 2562 LITRL 3346 007301 7775 -3 3347 007302 4761 JMS NEWVAR 3348 007303 1360 TAD (FNINIT /SET UP FUNCTIONS 3349 007304 3333 DCA FDPTR 3350 007305 1357 FDLOOP, TAD (WORD1-1 3351 007306 3012 DCA X12 3352 007307 1733 TAD I FDPTR /GET FIRST WORD 3353 007310 2333 ISZ FDPTR 3354 007311 7450 SNA 3355 007312 5510 JMP I QREMARK /DONE, START COMPILER 3356 007313 3412 DCA I X12 /SAVE IN WORD1 3357 007314 7146 CLL CMA RTL /GET LOOKUP COUNT 3358 007315 1733 TAD I FDPTR 3359 007316 3331 DCA FUNSIZ 3360 007317 1331 TAD FUNSIZ /GET SIZE OF MOVE 3361 007320 7001 IAC 3362 007321 3021 DCA TEMP 3363 007322 1733 TAD I FDPTR /GET A WORD 3364 007323 2333 ISZ FDPTR 3365 007324 3412 DCA I X12 /PUT INTO WORDN 3366 007325 2021 ISZ TEMP 3367 007326 5322 JMP .-4 3368 007327 4517 JMS I QLUKUP2 /ENTER INTO S.T. 3369 007330 2570 FUNCTN 3370 007331 0000 FUNSIZ, 0 3371 007332 5305 JMP FDLOOP /LOOP 3372 007333 0000 FDPTR, 0 3373 007334 7230 CORLOC, CORX 3374 007335 1400 CORV, 1400 3375 007336 0001 CORSIZ, 1 3376 007337 7532 NAMLST, BCOMPN /SAVE FILE NAME-POINTER LIST 3377 007340 7536 BLOADN 3378 007341 7542 BRTSN 3379 007342 7546 BAFN 3380 007343 7552 BSFN 3381 007344 7556 BFFN 3382 007345 0000 0 3383 007357 0133 PAGE 007360 7400 007361 4223 007362 4200 007363 2222 007364 7000 007365 1520 007366 5323 007367 1477 007370 5303 007371 2270 007372 5301 007373 2214 007374 5217 007375 2345 007376 0070 007377 7777 3384 007400 7400 FNINIT, FUNC3;-1;2000;0 /ABS 007401 7777 007402 2000 007403 0000 3385 007404 7416 FUNC1;-1;2000;0 /ATN 007405 7777 007406 2000 007407 0000 3386 007410 7417 FUNC2;-1;6000;0 /ASC 007411 7777 007412 6000 007413 0000 3387 007414 7436 FUNC1+20;-1;2000;0 /COS 007415 7777 007416 2000 007417 0000 3388 007420 7437 FUNC2+20;-1;2000;4000 /CHR 007421 7777 007422 2000 007423 4000 3389 007424 7456 FUNC1+40;-1;2000;0 /EXP 007425 7777 007426 2000 007427 0000 3390 007430 7457 FUNC2+40;-1;2000;4000 /DAT 007431 7777 007432 2000 007433 4000 3391 007434 7636 FUNC1+220;-1;2000;0 /SQR 007435 7777 007436 2000 007437 0000 3392 007440 7476 FUNC1+60;-2;0;2000;0 /EXP2 007441 7776 007442 0000 007443 2000 007444 0000 3393 007445 7477 FUNC2+60;-1;6000;0 /LEN 007446 7777 007447 6000 007450 0000 3394 007451 7516 FUNC1+100;-1;2000;0 /INT 007452 7777 007453 2000 007454 0000 3395 007455 7517 FUNC2+100;-3;2000;4000;6000;0 /POS 007456 7775 007457 2000 007460 4000 007461 6000 007462 0000 3396 007463 7536 FUNC1+120;-1;2000;0 /LOG 007464 7777 007465 2000 007466 0000 3397 007467 7537 FUNC2+120;-3;0;2000;6000;4000 /SEG 007470 7775 007471 0000 007472 2000 007473 6000 007474 4000 3398 007475 7556 FUNC1+140;-1;2000;0 /SGN 007476 7777 007477 2000 007500 0000 3399 007501 7557 FUNC2+140;-1;2000;4000 /STR 007502 7777 007503 2000 007504 4000 3400 007505 7576 FUNC1+160;-1;2000;0 /SIN 007506 7777 007507 2000 007510 0000 3401 007511 7577 FUNC2+160;-1;6000;0 /VAL 007512 7777 007513 6000 007514 0000 3402 007515 7616 FUNC1+200;-1;2000;0 /RND 007516 7777 007517 2000 007520 0000 3403 007521 7637 FUNC2+220;-1;2000;0 /TRC 007522 7777 007523 2000 007524 0000 3404 007525 0000 0 3405 007526 0201 BASICN, FILENAME BASIC.SV /FILE NAMES 007527 2311 007530 0300 007531 2326 3406 007532 0203 BCOMPN, FILENAME BCOMP.SV /FOR LOOKUPS 007533 1715 007534 2000 007535 2326 3407 007536 0214 BLOADN, FILENAME BLOAD.SV 007537 1701 007540 0400 007541 2326 3408 007542 0222 BRTSN, FILENAME BRTS.SV 007543 2423 007544 0000 007545 2326 3409 007546 0201 BAFN, FILENAME BASIC.AF 007547 2311 007550 0300 007551 0106 3410 007552 0201 BSFN, FILENAME BASIC.SF 007553 2311 007554 0300 007555 2306 3411 007556 0201 BFFN, FILENAME BASIC.FF 007557 2311 007560 0300 007561 0606 3412 007562 0201 BUFN, FILENAME BASIC.UF 007563 2311 007564 0300 007565 2506 3413 007566 0201 TMPFIL, FILENAME BASIC.TM 007567 2311 007570 0300 007571 2415 3414 $ A1OK 3465 A2OK 3445 ABORT 6636 ABORTX 0052 ACM 3506 ACNT 0042 ACO 0137 AFADD 6440 AFDIV 6600 AFLDA 6640 AFMPY 6540 AFSTA 6700 AFSUB 6500 AIDIV 6740 AISUB 6400 AL1 5431 AMPRTN 6507 AMPSND 1557 ANORM 5236 AR1 5414 ARAYST 2132 ARGCNT 0061 ARGLUP 1216 ASSIGN 6067 BACK1 4000 BADDEF 1253 BADEXP 3122 BADFN 2131 BADFOR 3323 BADFSS 3115 BADGO2 2166 BADIF 2062 BADLET 0346 BADNXT 0761 BADPF 0502 BAFN 7546 BASICN 7526 unreferenced BCOMPN 7532 BFFN 7556 BLOADN 7536 BLOCK 0046 BOSCTR 5120 BOSINF 7774 BRTS 0050 BRTSN 7542 BSFN 7552 BUCKET 3672 BUFN 7562 CALLUF 3303 CASEAM 3556 CASEMA 3554 CASEMM 3555 CDFZRO 5064 CHAIN 3750 CHAINE 7001 unreferenced CHECKC 6555 CHEDIT 7013 CHEKST 2441 CHGARG 1320 CHKDIM 0632 CHKSDM 0667 CHKSGN 5444 CHKVAL 2230 CHKWD 6737 CHN 7414 CHRPTR 0017 CLOSE 3342 CLOSEF 7434 CLRFN 7501 COLON 0062 COMARP 4102 CONVLP 4416 COR0 7211 COR1 7220 COR2 7222 COR70 7226 CORE 7200 COREX 7241 CORLOC 7334 CORSIZ 7336 CORV 7335 CORX 7230 CPSAVE 4166 CWTEMP 6756 D2 5234 D3 5235 DACNT 0062 DALOOP 1036 DAPUSH 1060 DAPUT 1111 DATA 1431 DATFLD 1473 DATLST 2566 DATPTR 1525 DECPT 0023 DEF 1200 DEFBAD 1051 DELOOP 1507 DENTRY 1455 DIGIT 3616 DIGTST 4456 DIM 0600 DIM1 0741 DIMERR 0701 DIMREA 3356 DLSIZE 0051 DOCALL 3200 DOLU 2432 DOSIGN 4553 DSSIZE 1453 DSTRNG 1441 EDTBGN 3212 EDTBLK 6653 EDTSIZ 2100 END 0351 ENDEXP 2741 ENDFIL 6634 ENDFNS 6162 ENTERV 2307 EOST 7570 ERLTL 0234 ERMSG 5706 ERMSG2 1712 ESIGN 4472 EXPLUP 5401 EXPMUL 4527 EXPON 0025 EXPR 2600 EXPRTN 3544 FADD 0000 FDIV 1400 FDLOOP 7305 FDPTR 7333 FESC 7410 unreferenced FFLD2 2311 FIDIV 3400 FILE 2522 FILENO 7402 FILESW 2556 FINCAL 3271 FINDA 2470 FINDEX 0067 FINDIM 0657 FINDSV 5045 FINDTO 1621 FININP 0421 FINSN 3710 FISUB 3000 FIXEXP 4474 unreferenced FLDA 2000 FLIMIT 1733 FMPY 1000 FNEG 7403 FNINIT 7400 FOPENS 2552 FOR 1600 FORCP 1736 FORFLD 1660 FORJMP 0062 FORNC 1735 FPDIV 5310 FPDVLP 5322 FPMUL 5200 FPRTNE 4472 FREE 2572 FREFLD 2266 FSTA 2400 FSTEP 1734 FSUB 0400 FSUB1 3314 FSUB2 3326 FUNC1 7416 FUNC2 7417 FUNC3 7400 FUNC4 7415 FUNCTN 2570 FUNFLD 1336 FUNNAM 1246 FUNNUM 3336 FUNOK 5673 FUNPTR 1127 FUNS 6071 FUNSIZ 7331 FUNSRC 5660 FUNSS 3000 GCS 5520 GENER 7266 GENTMP 4200 GETA1 3517 GETC 4035 GETCWB 4010 GETDEV 7034 GETEXP 4466 unreferenced GETFN 2111 GETIFN 2045 GETLIN 0226 GETNAM 5600 GOSUB 2154 GOTARY 2504 GOTCR 0242 GOTKW 0322 GOTNAM 5631 GOTO 2147 GOTOPR 2715 GOTREL 2027 GOTSN 3671 GOTSYM 2453 HIFLD 0047 HOOKIN 2257 ICHAR 6600 ICHAR1 6700 ICHAR2 6674 ICHAR3 6661 unreferenced IF 2000 IFEND 2103 IFLUP1 2017 IFLUP2 2072 IFNREG 0063 IFOPS 4141 INBREC 6622 INBUF 7200 INBUFP 6617 INCHCT 6733 INCTR 6735 INDEVH 4600 INEOF 6732 INERR 6632 INFO 7604 INGBUF 6607 unreferenced INHNDL 6734 INITST 7102 unreferenced INJMP 6656 INJMPP 6603 INPTR 6736 INPUT 0400 INPUTL 0402 INREC 6620 INTMP 6731 ITRCNT 5371 JABORT 7133 JARFLD 1413 JAROND 0062 JEOF 5400 JEQ 5006 JFOR 5010 JGE 5002 JGT 5004 JLE 5007 JLT 5005 JNE 5003 JSUB 5000 JTABLE 2416 JUMP 5001 KBDCHK 2346 KEYWRD 6243 KWLOOP 0301 L6201 2242 unreferenced LDRBLK 0357 LEAD0 5757 LEFT 0030 LET 0324 LETTER 3600 LFDOLR 5610 LINE 7000 LINEH 0053 LINEL 0054 LINMAX 0121 LITRL 2562 LOAD 4117 LOADSN 6000 LOADSS 4303 LOCTRH 0044 LOCTRL 0045 LOD1ST 6513 LODSN 0545 LODSS2 4314 LOOK2 2212 LOOKUP 2400 LSS1 4000 LSS1AC 7406 LSS2 4400 LSS2AC 7407 unreferenced LTEMP 2344 LUARAY 2463 LUBUF 5066 LUFLD 0071 LUKUP2 2200 LUPFLD 0741 LURETN 2451 LUSARY 2516 LUSTRG 2456 LUVAR 2427 M42 5457 M5 1131 MAC 3456 MDLABL 3725 MINUS 2755 MISARG 2752 MIXED 3511 MM 3452 unreferenced MODE 0055 MODSET 5542 MORDAT 1435 MOREV 5127 MOVARG 3227 MULLUP 5215 N3SIZE 2346 NAME1 0134 NAME2 0135 NAME3 0136 NAMLST 7337 NCHARS 0020 NCSAVE 4165 NDIGIT 0024 NDOK 3104 NEGFAC 5267 NEWARY 2511 NEWFLD 2233 NEWLIN 0205 NEWN3 2343 NEWOP 0032 NEWSN 3716 NEWVAR 4223 NEXT 0016 NEXTL 0713 unreferenced NEXTX 0704 NFCNT 5236 NFLDS 2345 NFLOOP 5275 NFPTR 5307 NFUNS 1133 NG 7126 NMODE 7541 NO6000 5256 NOCR 0457 NODIGT 3630 NOEXP 4502 NOFNAM 5702 NOGOOD 0312 NOLETR 3614 NOMATC 5677 NOREGS 3336 NORMLP 5246 NOSN 0062 NOSNUM 0272 NOSTAR 2701 NOSTRG 5624 NOTHEN 2055 NOTMIN 2627 NOTNEW 3100 NOTNUM 3150 NOTQOT 5535 NOTSAM 2250 NOTSSD 3042 NOTVAR 3136 NOWRIT 6463 NOZERO 5755 NRDL 7521 NUMBER 4400 NUMCMP 2041 NUMDIG 0144 NWSVAR 4236 NXTDGT 4560 O7100 3622 OADD 5353 OCOUNT 6445 ODEVH 6505 unreferenced OKFUN 1256 OKINAC 3253 OLDN3 2342 OLDOP 0031 OLDSTK 0060 ONSTAK 3107 OP1 0140 OP2 0141 OP2SIZ 6554 OP3 0142 OPENAF 7454 OPENAV 7474 OPENNF 7514 OPENNV 7534 OPO 0143 OPR8R 2663 OPR8RS 6050 OPRAND 2643 OPRLUP 2705 OSTACK 0014 OUBLOK 6475 OUBUF 0000 OUDUMP 6471 OUERR 6502 OUPTR 6444 OUSIZE 6506 OUTCAL 3210 OUTOLD 2733 OUTOPR 3400 OUTWRD 6446 OWTEMP 6443 PATCH1 2214 PATCH2 2270 PATCH3 1477 PATCH4 1520 PATCH5 2222 PATCH6 4357 PCRLF 0062 PETABL 6000 PEXP 0520 PFCALL 0473 PLUS 2557 POP 4052 POSEXP 4522 POSTX 0356 PRFUN 0545 PRINT 0441 PRINTL 0444 PRNTSN 5741 PRTEND 0532 PSETJF 3350 PSN 5735 PUSH 4062 PUSH2 2727 PUSHO 4073 PUT1 0530 PUT2 0536 PUT40 5514 Q10 1132 Q2 1130 Q400 0133 QBACK1 0125 QCHECK 0113 QCHKWD 0075 QCOMAR 0115 QDIGIT 0131 QERMSG 0073 QEXPR 0105 QGETA1 0111 QGETC 0102 QGETCW 0103 QGETNA 0114 QLETTE 0130 QLOAD 0120 QLOADS 0112 QLODSN 0074 QLOOKU 0116 QLUKUP 0117 QMODSE 0076 QNEWLI 0107 QNOREG 0132 QNUMBE 0126 QOUTOP 0106 QOUTWR 0100 QPOP 0122 QPUSH 0121 QPUSHO 0123 QREMAR 0110 QRESTC 0104 QSAVAC 0124 QSAVEC 0101 QSNUM 0077 QSTRIN 0127 RANDOM 3564 READ 7411 READX 1526 RELOPR 2111 REMARK 0211 RESARG 1400 REST 7405 RESTCP 4027 RESTOR 0540 RET 7404 RETURN 3561 RNDO 7421 RSTRNG 0427 RUNNED 5000 SACNT 0043 SACOMP 6440 SACON 6400 unreferenced SALOAD 6640 unreferenced SAREAD 6500 SARYST 2332 SASIGN 6065 unreferenced SASTOR 6700 unreferenced SAVAC 4251 SAVBOS 5027 SAVECP 4021 SAVEJF 1643 SCOMP 0400 SCOMPR 6567 SCON 0000 unreferenced SCONTS 1565 SCRTN 6511 SETFLD 0070 SETJF 7401 SHIFT 3654 SIGDIG 0145 SIGN 4414 SKIP2 6531 SKPEXP 4550 SLASH 2761 SLITRL 2564 SLOAD 2000 unreferenced SLOOP 5467 SMLNUM 5400 SMODE 7561 SNLOOP 3647 SNUM 3632 SNUMS 2532 SPACE 5750 SPCIAL 3514 SRDL 7461 SREAD 1000 SSINAC 4347 SSLOAD 4323 SSLOOP 3014 SSREG1 0064 unreferenced SSREG2 0065 unreferenced SSTORE 2400 unreferenced SSTYPE 4320 STACK 0015 STACKA 7120 STACKO 1134 STAKSZ 0060 STAR 4365 START 7000 unreferenced STCHEK 2317 STEMPS 2560 STEP1 1727 STKLVL 0066 STKOVR 4070 STMPCT 0035 STMPLV 0036 STOKSZ 0044 STOP 7441 STOPX 3565 STOVER 2337 STPTR 0037 STRARG 1054 STRCMP 2065 STRGER 5511 STRING 5455 STRLIM 0120 STRT2 7051 STRT3 5101 STRTMP 4213 SVARST 1036 SVCNT 0041 SVTEMP 4300 SWRITE 7413 unreferenced SWTARG 1325 unreferenced SYMBL1 0057 SYMBL2 3560 SYMBOL 0027 TABPNT 0462 TEMP 0021 TEMP2 0022 TEMP3 0005 TEMPS 2556 TIME 7135 TMPBLK 5106 TMPCNT 0033 TMPFIL 7566 TMPLVL 0034 TOOMNY 4320 TRYDEC 4443 TRYE1 4455 TRYE2 4461 TRYFUN 5635 TRYPNT 0512 TTX 3740 TTY 3730 TTYFIL 2140 TW2 5234 TW3 5235 TWODIM 0624 TYPCHK 3467 TYPE 0026 TYPE1 0056 TYPE2 3557 UDEF 1000 UMOPR 0764 UMRTNE 3535 UNOPR 2614 UNREFD 0647 UPAROW 3164 USE 7540 USEERR 1754 USEX 1745 USRFUN 5704 VARCNT 0040 VARST 0400 VCPTR 2415 VERLOC 5154 unreferenced VERNUM 5121 VERSON 0005 VTEXT 5150 WASTE 7134 WDLOOP 6743 WGOTO 6271 WORD1 0134 WORD2 0135 WORD3 0136 WPNT 5561 WRITE 7412 WSTEP 2363 WTAB 3132 WTHEN 1737 WTO 6273 X10 0010 X11 0011 X12 0012 X13 0013 XABORT 0006 XADD 0557 XDIV 4355 XIDIV 5557 XISUB 3763 XLOAD 0767 XMUL 5762 XSCOMP 4353 XSTCHE 1126 XSTOR 4301 XSUB 1743 XXXXSV 5055 ZEXP 5265