EUCSD IMP15 COMPILER 2.0 1 %BEGIN; !IMP15 COMPILER 30/10/78 C ENTRY POINT 0 2 %EXTERNALROUTINESPEC SELECTOUTPUT(%INTEGER I) C BLOCK BEGIN 0 C ARG -143764 C ARG -322333 C ARG -341321 C EXT SPEC 2 C BLOCK END 0 3 %EXTERNALROUTINESPEC READSYMBOL(%INTEGERNAME I) C BLOCK BEGIN 0 C ARG -154764 C ARG -323634 C ARG -140623 C EXT SPEC 3 C BLOCK END 0 4 %EXTERNALROUTINESPEC PRINTSYMBOL(%INTEGER I) C BLOCK BEGIN 0 C ARG -173764 C ARG -152622 C ARG -131407 C EXT SPEC 4 C BLOCK END 0 5 %EXTERNALROUTINESPEC CLOSEOUTPUT C BLOCK BEGIN 0 C ARG -343764 C ARG -232015 C ARG -322013 C EXT SPEC 5 C BLOCK END 0 6 %EXTERNALROUTINESPEC SPACE C BLOCK BEGIN 0 C ARG -145764 C ARG -173635 C ARG 45 C EXT SPEC 6 C BLOCK END 0 7 %EXTERNALROUTINESPEC SPACES(%INTEGER I) C BLOCK BEGIN 0 C ARG -145764 C ARG -173635 C ARG 4563 C EXT SPEC 7 C BLOCK END 0 8 %EXTERNALROUTINESPEC NEWLINE C BLOCK BEGIN 0 C ARG -215764 C ARG -321024 C ARG -262133 C EXT SPEC 10 C BLOCK END 0 9 %EXTERNALROUTINESPEC NEWLINES(%INTEGER I) C BLOCK BEGIN 0 C ARG -214764 C ARG -321024 C ARG -262133 C EXT SPEC 11 C BLOCK END 0 10 %EXTERNALROUTINESPEC WRITE(%INTEGER N, I) C BLOCK BEGIN 0 C ARG -105764 C ARG -152614 C ARG 45 C EXT SPEC 12 C BLOCK END 0 11 %EXTERNALINTEGERFNSPEC NEXTSYMBOL C BLOCK BEGIN 0 C ARG -214773 C ARG -320714 C ARG -140623 C EXT SPEC 13 C BLOCK END 0 12 %EXTERNALINTEGERFNSPEC ADDR(%INTEGERNAME P) C BLOCK BEGIN 0 C ARG -366773 C ARG -333316 C ARG 0 C EXT SPEC 14 C BLOCK END 0 13 %EXTERNALINTEGERMAPSPEC INTEGER(%INTEGER A) C BLOCK BEGIN 0 C ARG -265763 C ARG -211333 C ARG -303216 C EXT SPEC 15 C BLOCK END 0 14 %CONSTINTEGER NL=10 15 !OUTPUT STREAMS 16 %CONSTINTEGER ERR=0, OBJ=1, MAP=2 17 !PRIMITIVE ROUTINE TAGS 18 %CONSTINTEGER MONI=4; !MONITOR 19 %CONSTINTEGER NST=5; !NEST 20 %CONSTINTEGER LE=6; !TEST LESS-THAN OR EQUAL 21 %CONSTINTEGER GE=7; !TEST GREATER-THAN OR EQUAL 22 %CONSTINTEGER AR=8; !ARRAY REFERENCE 23 %CONSTINTEGER ADEC=9; !ARRAY DECLARATION 24 %CONSTINTEGER SH=10; !SHIFT 25 %CONSTINTEGER ENT=16; !PROCEDURE ENTRY/EXIT 26 %CONSTINTEGER FLT=17; !FAULT TRAP 27 %CONSTINTEGER BAR=20; !BYTE ARRAY-REF 28 %CONSTINTEGER BGET=21; !BYTE FETCH 29 %CONSTINTEGER BPUT=22; !BYTE STORE 30 %CONSTINTEGER ADR=28; !ADDR 31 %CONSTINTEGER INT=29; !INTEGER 32 %CONSTINTEGER PTXT=38; !PRINT TEXT 33 !DECLARATION CODES 34 %CONSTINTEGER BEG=108; !BEGIN 35 %CONSTINTEGER EXT=128, OWN=64, BODY=64 36 %CONSTINTEGER REF=32, ARRAY=8, PROC=4 37 38 %OWNINTEGER LINE=1; !LINE NUMBER D DEFINE 50 D LIT 1 39 %OWNINTEGER LINES=0; !LINE COUNT D DEFINE 51 D LIT 0 40 %OWNINTEGER ICOUNT=0; !INSTRUCTION COUNT D DEFINE 52 D LIT 0 41 %OWNINTEGER SYM=0; !CURRENT INPUT SYMBOL D DEFINE 53 D LIT 0 42 %OWNINTEGER SYMTYPE=0; !-2:LET, -1:DIG, 0:TERM D DEFINE 54 D LIT 0 43 ! 1:OTHER, 2:KEYLET 44 %OWNINTEGER DECL=0; !DECLARATOR TYPE D DEFINE 55 D LIT 0 45 %OWNINTEGER SSTYPE=1; !STATEMENT TYPE D DEFINE 56 D LIT 1 46 %OWNINTEGER SECTION=0; !0:INSTR, 1:DATA D DEFINE 57 D LIT 0 47 %OWNINTEGER OWNC=0; !OWN COUNT D DEFINE 60 D LIT 0 48 %OWNINTEGER FAULTY=0; !FAULT INDICATOR D DEFINE 61 D LIT 0 49 !CURRENT INPUT LINE 50 %OWNINTEGER POS1=0; !START-OF-ATOM POSITION D DEFINE 62 D LIT 0 51 %OWNINTEGER POS=0; !CURRENT CHAR POSITION D DEFINE 63 D LIT 0 52 %INTEGERARRAY CHAR(1:73) C LAC #1 C DAC M2 C LAC #111 C JMS M11 C DAD M64 53 !NAME DICTIONARY 54 %OWNINTEGER DMAX=0; !NAME DICT MAX D DEFINE 65 D LIT 0 55 %CONSTINTEGER DBOUND=500; !UPPER BOUND (CHANGED FROM 350) 56 %INTEGERARRAY DICT(1:DBOUND) C LAC #1 C DAC M2 C LAC #764 C JMS M11 C DAD M67 57 !TAG INFO 58 %OWNINTEGER GLOBAL=0; !ZERO OR ENDOFPRIM TAG D DEFINE 70 D LIT 0 59 %OWNINTEGER TMAX=0; !TAG MAX D DEFINE 71 D LIT 0 60 %INTEGER X; !CURRENT TAG (WHEN RELEVANT) 61 %OWNINTEGER LMIN=253; !COMP LAB MIN D DEFINE 73 D LIT 375 62 %INTEGERNAME TT0,TTX; !==TAGTYPE(0),TAGTYPE(X) 63 %INTEGERARRAY TAGTYPE,INDEX(0:223) C LAC #0 C DAC M2 C LAC #337 C JMS M11 C DAD M76 C LAC M1 C JMS M11 C DAD M77 64 ! SIGNIFICANCE OF TAGTYPE VALUES: 65 ! VAL256+ VAL128 VAL64 VAL32 VAL0:15 66 ! 0 0 SET 0 0 0 0 0 LABEL 67 ! 0 EXT OWN REF 0 0 0 1 INTEGER (EXT+OWN=CONST) 68 ! 0 0 OWN REF 0 0 1 0 BYTE 69 ! GRAM AD SAFE/EXT BODY REF 0 1 0 0 PRED 70 ! GRAM AD SAFE/EXT BODY REF 0 1 T T FN 71 ! 0 0 0 0 0 1 1 1 STRING 72 ! BOUNDS AD 0 1 0 1 0 0 0 SWITCH 73 ! 0 0 OWN REF 1 0 T T ARRAY 74 ! GRAM AD SAFE/EXT BODY REF 1 1 0 0 ROUTINE 75 ! GRAM AD SAFE/EXT BODY REF 1 1 T T MAP 76 ! 0 0 1 1 1 1 0 0 BEGIN 77 ! NEVER STORED IN TAGTYPE 78 ! 0 0 0 1 0 1 0 0 SPEC 79 !ANALYSIS RECORD 80 %INTEGER SS; !START OF SS 81 %CONSTINTEGER NODEBOUND=70 82 %INTEGERARRAY REFCO,SUB(1:NODEBOUND) C LAC #1 C DAC M2 C LAC #106 C JMS M11 C DAD M102 C LAC M1 C JMS M11 C DAD M103 83 84 !* GRAMMAR AND KEYDICT GENERATED BY TAKEON PROGRAM 85 %OWNINTEGER GMAX1= 196 D DEFINE 104 D LIT 304 86 %OWNINTEGER GMAX= 196 D DEFINE 105 D LIT 304 87 88 %OWNINTEGERARRAY PHRASE(112:127) = %C D DEFINE 106 D LIT -177 D LIT 20 D LIT 302 D LIT 105 D LIT 110 D LIT 115 D LIT 121 D LIT 163 D LIT 175 D LIT 223 89 194, 69, 72, 77, 81, 115, 125, 147, 90 153, 156, 159, 168, 173, 176, 188, 0 D LIT 231 D LIT 234 D LIT 237 D LIT 250 D LIT 255 D LIT 260 D LIT 274 D LIT 0 91 92 %OWNINTEGERARRAY ATOMIC(80:111) = %C D DEFINE 107 D LIT -157 D LIT 40 D LIT 100 D LIT 106 D LIT 110 D LIT 115 D LIT 104 D LIT 105 D LIT 111 D LIT 103 93 64, 70, 72, 77, 68, 69, 73, 67, 94 73, 73, 74, 77, 76, 77, 78, 78, D LIT 111 D LIT 111 D LIT 112 D LIT 115 D LIT 114 D LIT 115 D LIT 116 D LIT 116 95 65, 65, 66, 66, 74, 78, 74, 12, D LIT 101 D LIT 101 D LIT 102 D LIT 102 D LIT 112 D LIT 116 D LIT 112 D LIT 14 96 18, 15, 15, 65, 10, 15, 9, 42 D LIT 22 D LIT 17 D LIT 17 D LIT 101 D LIT 12 D LIT 17 D LIT 11 D LIT 52 97 98 %OWNINTEGERARRAY INITIAL(1:79) = %C D DEFINE 110 D LIT -117 D LIT 117 D LIT 106601 D LIT 106002 D LIT 102203 D LIT 6404 D LIT 206205 D LIT 0 D LIT 0 99 36225, 35842, 33923, 3332, 68741, 0, 0, 100 0, 0, 0, 0, 0, 0, 0, 0, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 101 0, -118767, 0, 0, 3604, 0, 0, 0, D LIT 0 D LIT -347757 D LIT 0 D LIT 0 D LIT 7024 D LIT 0 D LIT 0 D LIT 0 102 0, 0, 0, 0, 0, 0, 0, -131041, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT -377741 103 0, 0, -117854, -117981, 3876, -117595, -117722, 0, D LIT 0 D LIT 0 D LIT -346136 D LIT -346335 D LIT 7444 D LIT -345533 D LIT -345732 D LIT 0 104 2088, 4009, 0, 0, 0, 0, 33838, 33071, D LIT 4050 D LIT 7651 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 102056 D LIT 100457 105 0, 0, 1842, 1075, 1460, 3765, 0, 66615, D LIT 0 D LIT 0 D LIT 3462 D LIT 2063 D LIT 2664 D LIT 7265 D LIT 0 D LIT 202067 106 99384, 33849, 33850, 98363, 0, 0, 0, 0, D LIT 302070 D LIT 102071 D LIT 102072 D LIT 300073 D LIT 0 D LIT 0 D LIT 0 D LIT 0 107 35664, -118944, -118429, 0, 0, 0, 0, 0, D LIT 105520 D LIT -350240 D LIT -347235 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 108 35794, -118058, -118044, 0, -118196, -118061, -118043, 0 D LIT 105722 D LIT -346452 D LIT -346434 D LIT 0 D LIT -346664 D LIT -346455 D LIT -346433 D LIT 0 109 110 %OWNINTEGERARRAY GRAM(0:255) = %C D DEFINE 111 D LIT -377 D LIT 400 D LIT 0 D LIT 1364 D LIT -375114 D LIT -375717 D LIT 2164 D LIT -267714 D LIT -267713 D LIT -374154 111 0, 756, -129612, -129999, 1140, -94156, -94155, -129132, 112 9, -126846, 4996, 1653, -128746, 1073, -131063, 33918, D LIT 11 D LIT -367576 D LIT 11604 D LIT 3165 D LIT -373352 D LIT 2061 D LIT -377767 D LIT 102176 113 -129978, 1095, -129999, 2676, -130640, 9, 10, 5134, D LIT -375672 D LIT 2107 D LIT -375717 D LIT 5164 D LIT -377120 D LIT 11 D LIT 12 D LIT 12016 114 1137, 5329, 5745, 6129, 6526, 6517, 39367, 33913, D LIT 2161 D LIT 12321 D LIT 13161 D LIT 13761 D LIT 14576 D LIT 14565 D LIT 114707 D LIT 102171 115 33909, 4465, -126452, 110, 37625, -126739, 110, 6726, D LIT 102165 D LIT 10561 D LIT -366764 D LIT 156 D LIT 111371 D LIT -367423 D LIT 156 D LIT 15106 116 40441, 5376, -123378, 9, 38642, -127729, 9, 39027, D LIT 116771 D LIT 12400 D LIT -360762 D LIT 11 D LIT 113362 D LIT -371361 D LIT 11 D LIT 114163 117 -127601, 9, 1074, 7825, 39667, -124020, 110, -123127, D LIT -371161 D LIT 11 D LIT 2062 D LIT 17221 D LIT 115363 D LIT -362164 D LIT 156 D LIT -360367 118 7417, -123923, 110, 2832, 8070, 1088, 7040, 8262, D LIT 16371 D LIT -362023 D LIT 156 D LIT 5420 D LIT 17606 D LIT 2100 D LIT 15600 D LIT 20106 119 -122481, -123002, 1040, -122810, 8070, 9030, -122225, 0, D LIT -357161 D LIT -360172 D LIT 2020 D LIT -357672 D LIT 17606 D LIT 21506 D LIT -356561 D LIT 0 120 9358, 9594, 9610, 9850, 16, 9998, 10233, 10348, D LIT 22216 D LIT 22572 D LIT 22612 D LIT 23172 D LIT 20 D LIT 23416 D LIT 23771 D LIT 24154 121 9849, -118944, -118767, -118196, -118058, -118061, -131041, -117981, D LIT 23171 D LIT -350240 D LIT -347757 D LIT -346664 D LIT -346452 D LIT -346455 D LIT -377741 D LIT -346335 122 -117854, -118429, -118044, -118043, -117722, 13477, -117492, 46494, D LIT -346136 D LIT -347235 D LIT -346434 D LIT -346433 D LIT -345732 D LIT 32245 D LIT -345364 D LIT 132636 123 -131008, 46664, -117492, 46750, 46960, 47216, 32890, 32887, D LIT -377700 D LIT 133110 D LIT -345364 D LIT 133236 D LIT 133560 D LIT 134160 D LIT 100172 D LIT 100167 124 46915, 32839, 46970, 79735, 65648, 79736, -116497, 0, D LIT 133503 D LIT 100107 D LIT 133572 D LIT 233567 D LIT 200160 D LIT 233570 D LIT -343421 D LIT 0 125 80231, 116, 112506, -115978, 15482, -82774, -82645, 0, D LIT 234547 D LIT 164 D LIT 333572 D LIT -342412 D LIT 36172 D LIT -241526 D LIT -241325 D LIT 0 126 32768, 15862, 15222, -82774, 0, -114546, -114004, -113852, D LIT 100000 D LIT 36766 D LIT 35566 D LIT -241526 D LIT 0 D LIT -337562 D LIT -336524 D LIT -336274 127 16890, -121227, 17402, -112979, 32768, 118, 32880, 17424, D LIT 40772 D LIT -354613 D LIT 41772 D LIT -334523 D LIT 100000 D LIT 166 D LIT 100160 D LIT 42020 128 -112870, -112741, -112612, -112979, 32768, 51450, 50301, 50428, D LIT -334346 D LIT -334145 D LIT -333744 D LIT -334523 D LIT 100000 D LIT 144372 D LIT 142175 D LIT 142374 129 50555, -117971, 0, -111775, -113832, 17243, -78819, 0, D LIT 142573 D LIT -346323 D LIT 0 D LIT -332237 D LIT -336250 D LIT 41533 D LIT -231743 D LIT 0 130 65658, -111774, -113818, 17247, -117608, -117607, 32839, -110439, D LIT 200172 D LIT -332236 D LIT -336232 D LIT 41537 D LIT -345550 D LIT -345547 D LIT 100107 D LIT -327547 131 -109800, 53629, -110438, -109669, -109796, 0, 53883, 53756, D LIT -326350 D LIT 150575 D LIT -327546 D LIT -326145 D LIT -326344 D LIT 0 D LIT 151173 D LIT 150774 132 54525, -109542, -109029, 0, 54652, 55165, -108902, 0, D LIT 152375 D LIT -325746 D LIT -324745 D LIT 0 D LIT 152574 D LIT 153575 D LIT -324546 D LIT 0 133 -131007, -131001, -131006, -113847, -113851, -113843, -113846, -113842, D LIT -377677 D LIT -377671 D LIT -377676 D LIT -336267 D LIT -336273 D LIT -336263 D LIT -336266 D LIT -336262 134 -121458, 23826, 24061, 104, 24299, 24332, 57338, 24681, D LIT -355162 D LIT 56422 D LIT 56775 D LIT 150 D LIT 57353 D LIT 57414 D LIT 157772 D LIT 60151 135 57594, 13162, 24974, 25210, 16, 0, 0, 0, D LIT 160372 D LIT 31552 D LIT 60616 D LIT 61172 D LIT 20 D LIT 0 D LIT 0 D LIT 0 136 0, 0, 0, 0, 0, 0, 0, 0, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 137 0, 0, 0, 0, 0, 0, 0, 0, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 138 0, 0, 0, 0, 0, 0, 0, 0, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 139 0, 0, 0, 0, 0, 0, 0, 0, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 140 0, 0, 0, 0, 0, 0, 0, 0, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 141 0, 0, 0, 0, 0, 0, 0, 0, D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 142 0, 0, 0, 0, 0, 0, 0, 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 D LIT 0 143 144 %OWNINTEGERARRAY KDICT(32: 425) = %C D DEFINE 112 D LIT -651 D LIT 612 D LIT 0 D LIT 603 D LIT 203 D LIT 623 D LIT 203 D LIT 203 D LIT 627 D LIT 203 145 0, 387, 131, 403, 131, 131, 407, 131, 146 411, 415, 419, 431, 447, 451, 131, 475, D LIT 633 D LIT 637 D LIT 643 D LIT 657 D LIT 677 D LIT 703 D LIT 203 D LIT 733 147 129, 129, 129, 129, 129, 129, 129, 129, D LIT 201 D LIT 201 D LIT 201 D LIT 201 D LIT 201 D LIT 201 D LIT 201 D LIT 201 148 129, 129, 487, 490, 495, 523, 539, 131, D LIT 201 D LIT 201 D LIT 747 D LIT 752 D LIT 757 D LIT 1013 D LIT 1033 D LIT 203 149 131, 556, 628, 656, 708, 752, 904, 128, D LIT 203 D LIT 1054 D LIT 1164 D LIT 1220 D LIT 1304 D LIT 1360 D LIT 1610 D LIT 200 150 128, 972, 1152, 128, 1188, 1232, 1248, 1256, D LIT 200 D LIT 1714 D LIT 2200 D LIT 200 D LIT 2244 D LIT 2320 D LIT 2340 D LIT 2350 151 1284, 128, 1348, 1440, 1552, 1604, 128, 1636, D LIT 2404 D LIT 200 D LIT 2504 D LIT 2640 D LIT 3020 D LIT 3104 D LIT 200 D LIT 3144 152 1648, 128, 128, 131, 1695, 131, 131, 131, D LIT 3160 D LIT 200 D LIT 200 D LIT 203 D LIT 3237 D LIT 203 D LIT 203 D LIT 203 153 -118367, -64814, 66268, 66204, 106541, 65947, 65550, 65552, D LIT -347137 D LIT -176456 D LIT 201334 D LIT 201234 D LIT 320055 D LIT 200633 D LIT 200016 D LIT 200020 154 -117462, 66331, 66522, -116949, -65448, 65628, 66013, 65551, D LIT -345326 D LIT 201433 D LIT 201732 D LIT -344325 D LIT -177650 D LIT 200134 D LIT 200735 D LIT 200017 155 -116051, -116162, -65384, 65692, 65553, 66077, -115665, 66459, D LIT -342523 D LIT -342702 D LIT -177550 D LIT 200234 D LIT 200021 D LIT 201035 D LIT -341721 D LIT 201633 156 66395, 65546, 65545, -114500, -114627, -114754, 69677, 65818, D LIT 201533 D LIT 200012 D LIT 200011 D LIT -337504 D LIT -337703 D LIT -340102 D LIT 210055 D LIT 200432 157 77869, 65818, -113987, -57332, 73773, 66142, -113347, -113474, D LIT 230055 D LIT 200432 D LIT -336503 D LIT -157764 D LIT 220055 D LIT 201136 D LIT -335303 D LIT -335502 158 110637, 65882, 102445, -112188, 8782, -112349, -112470, -60760, D LIT 330055 D LIT 200532 D LIT 310055 D LIT -333074 D LIT 21116 D LIT -333335 D LIT -333526 D LIT -166530 159 65578, 71336, 68265, -111039, -111676, 82, 70696, -111197, D LIT 200052 D LIT 213250 D LIT 205251 D LIT -330677 D LIT -332074 D LIT 122 D LIT 212050 D LIT -331135 160 -111318, 70056, 71080, 68009, 71592, -110395, 10841, 69, D LIT -331326 D LIT 210650 D LIT 212650 D LIT 204651 D LIT 213650 D LIT -327473 D LIT 25131 D LIT 105 161 65728, 9415, 78, 65591, -108534, -109361, 8665, 8908, D LIT 200300 D LIT 22307 D LIT 116 D LIT 200067 D LIT -323766 D LIT -325461 D LIT 20731 D LIT 21314 162 65586, -108851, 10702, 84, 77827, 8909, 10830, 65547, D LIT 200062 D LIT -324463 D LIT 24716 D LIT 124 D LIT 230003 D LIT 21315 D LIT 25116 D LIT 200013 163 65536, -107711, 9946, -107862, 69864, 70888, -107325, 68, D LIT 200000 D LIT -322277 D LIT 23332 D LIT -322526 D LIT 210350 D LIT 212350 D LIT -321475 D LIT 104 164 71528, -107094, 69736, 70760, -102452, -105010, 88, -105271, D LIT 213550 D LIT -321126 D LIT 210150 D LIT 212150 D LIT -310064 D LIT -315062 D LIT 130 D LIT -315467 165 84, -105659, 9426, 10702, 8649, 73731, 10066, 9793, D LIT 124 D LIT -316273 D LIT 22322 D LIT 24716 D LIT 20711 D LIT 220003 D LIT 23522 D LIT 23101 166 73728, 84, 66847, 68, -104625, 65592, 70, -102842, D LIT 220000 D LIT 124 D LIT 202437 D LIT 104 D LIT -314261 D LIT 200070 D LIT 106 D LIT -310672 167 80, -103099, 82, -103351, 9167, 8402, 77, 65595, D LIT 120 D LIT -311273 D LIT 122 D LIT -311667 D LIT 21717 D LIT 20322 D LIT 115 D LIT 200073 168 77, 65593, 9938, 65594, 9801, 69, 65595, 8915, D LIT 115 D LIT 200071 D LIT 23322 D LIT 200072 D LIT 23111 D LIT 105 D LIT 200073 D LIT 21323 169 -65489, 65584, -100671, -101559, 10575, 65556, 9422, 9299, D LIT -177721 D LIT 200060 D LIT -304477 D LIT -306267 D LIT 24517 D LIT 200024 D LIT 22316 D LIT 22123 170 -101051, 65582, 10700, 69, 65583, -100148, 9813, 84, D LIT -305273 D LIT 200056 D LIT 24714 D LIT 105 D LIT 200057 D LIT -303464 D LIT 23125 D LIT 124 171 65572, 8915, 66719, -94266, -98738, -98993, 11603, -99158, D LIT 200044 D LIT 21323 D LIT 202237 D LIT -270072 D LIT -300662 D LIT -301261 D LIT 26523 D LIT -301526 172 70248, 71272, 84, 70568, 8916, 8903, 82, -95295, D LIT 211150 D LIT 213150 D LIT 124 D LIT 211650 D LIT 21324 D LIT 21307 D LIT 122 D LIT -272077 173 -96186, -97075, -97586, -65470, 65606, 9921, 69, -63422, D LIT -273672 D LIT -275463 D LIT -276462 D LIT -177676 D LIT 200106 D LIT 23301 D LIT 105 D LIT -173676 174 67654, 10305, -96557, -60603, 70470, 8912, 67, 66373, D LIT 204106 D LIT 24101 D LIT -274455 D LIT -166273 D LIT 211506 D LIT 21320 D LIT 103 D LIT 201505 175 78, -95661, -61115, 69958, 8912, 67, 65861, 10578, D LIT 116 D LIT -272655 D LIT -167273 D LIT 210506 D LIT 21320 D LIT 103 D LIT 200505 D LIT 24522 176 11457, -94770, 66116, 9921, 69, -62910, 68166, 66356, D LIT 26301 D LIT -271062 D LIT 201104 D LIT 23301 D LIT 105 D LIT -172676 D LIT 205106 D LIT 201464 177 77, -93360, 83, -93526, 69800, 70824, -93142, 70440, D LIT 115 D LIT -266260 D LIT 123 D LIT -266526 D LIT 210250 D LIT 212250 D LIT -265726 D LIT 211450 178 71464, -92607, 10825, 67817, -92221, 68, 71656, -91741, D LIT 213450 D LIT -264677 D LIT 25111 D LIT 204351 D LIT -264075 D LIT 104 D LIT 213750 D LIT -263135 179 -91862, 69928, 70952, 67881, 10063, 10825, 10575, 65573, D LIT -263326 D LIT 210450 D LIT 212450 D LIT 204451 D LIT 23517 D LIT 25111 D LIT 24517 D LIT 200045 180 10831, 65580, -90160, -90286, 10071, 69635, 65579, 82, D LIT 25117 D LIT 200054 D LIT -260060 D LIT -260256 D LIT 23527 D LIT 210003 D LIT 200053 D LIT 122 181 70632, 82, -89019, 10057, 10836, 11333, 84, 65574, D LIT 211750 D LIT 122 D LIT -255673 D LIT 23511 D LIT 25124 D LIT 26105 D LIT 124 D LIT 200046 182 9412, 8387, 8916, -88237, -61179, 69894, 8912, 67, D LIT 22304 D LIT 20303 D LIT 21324 D LIT -254255 D LIT -167373 D LIT 210406 D LIT 21320 D LIT 103 183 65797, -86587, 10959, 9428, 8910, -86957, -60667, 70406, D LIT 200405 D LIT -251073 D LIT 25317 D LIT 22324 D LIT 21316 D LIT -251655 D LIT -166373 D LIT 211406 184 8912, 67, 66309, -85296, -85933, 10964, 10066, 66591, D LIT 21320 D LIT 103 D LIT 201405 D LIT -246460 D LIT -247655 D LIT 25324 D LIT 23522 D LIT 202037 185 9813, 7892, -85443, 65571, 65570, 8389, 84, 65587, D LIT 23125 D LIT 17324 D LIT -246703 D LIT 200043 D LIT 200042 D LIT 20305 D LIT 124 D LIT 200063 186 -82111, -82488, -82736, -83884, 9431, 8660, 72, 70145, D LIT -240277 D LIT -241070 D LIT -241460 D LIT -243654 D LIT 22327 D LIT 20724 D LIT 110 D LIT 211001 187 -83007, -83249, 9426, 9166, 65990, 80, 66783, 10834, D LIT -242077 D LIT -242461 D LIT 22322 D LIT 21716 D LIT 200706 D LIT 120 D LIT 202337 D LIT 25122 188 65585, 8645, 67845, 10575, 84, 65536, 68, -81501, D LIT 200061 D LIT 20705 D LIT 204405 D LIT 24517 D LIT 124 D LIT 200000 D LIT 104 D LIT -237135 189 -81622, 70376, 71400, 68329, -80447, -80696, 10962, 69, D LIT -237326 D LIT 211350 D LIT 213350 D LIT 205351 D LIT -235077 D LIT -235470 D LIT 25322 D LIT 105 190 66655, 10053, 65558, 68, -79837, -79958, 70120, 71144, D LIT 202137 D LIT 23505 D LIT 200026 D LIT 104 D LIT -233735 D LIT -234126 D LIT 210750 D LIT 212750 191 68073, 78, -79028, 9428, 76, 67061, 10693, 83, D LIT 204751 D LIT 116 D LIT -232264 D LIT 22324 D LIT 114 D LIT 202765 D LIT 24705 D LIT 123 192 66484, 9416, 8908, 66869, -77373, 10575, -77533, -77654, D LIT 201664 D LIT 22310 D LIT 21314 D LIT 202465 D LIT -227075 D LIT 24517 D LIT -227335 D LIT -227526 193 69992, 71016, 67945, 84, -77014, 70184, 71208, -76611, D LIT 210550 D LIT 212550 D LIT 204551 D LIT 124 D LIT -226326 D LIT 211050 D LIT 213050 D LIT -225503 194 65753, 106541 D LIT 200331 D LIT 320055 195 196 !!END OF GENERATED SECTION 197 198 %INTEGERNAME APP; !== PHRASE(112) 199 %INTEGER BAPP; !BASIC APP IE LB EXP RB 200 %INTEGERNAME MREF; !== MAP RESULT REF 201 202 %ROUTINESPEC COMPILE BLOCK(%INTEGER LEVEL, BTAG %INTEGERNAME BTYPE,GD) 203 204 APP == PHRASE(112); BAPP = APP C LAC #160 C JMS M10 C LAD M106 C DAD M113 C LAC M113 C DAC M114 205 TT0 == TAGTYPE(0); TT0 = BEG C LAC #0 C JMS M10 C LAD M76 C DAD M74 C LAC #154 C DAC M74 206 MREF == GRAM(INITIAL(34)>>7&255) C LAC #42 C JMS M10 C LAD M110 C LAC* M3 C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C AND #377 C JMS M10 C LAD M111 C DAD M115 207 COMPILE BLOCK(-3,0,TT0,TT0) C LAC #-3 C JMS M5 C LAC #0 C JMS M5 C LAD M74 C JMS M5 C JMS M116 208 NEWLINE C JMS M10 209 %MONITOR 192 %IF FAULTY # 0 C LAC M61 C SNA C JMP M375 C JMS* M4 C LIT 700 C DEFINE 375 210 %ROUTINE COMPILE BLOCK(%INTEGER LEVEL,BTAG %INTEGERNAME BTYPE,GD) C BLOCK BEGIN 0 211 %ROUTINESPEC PRINT SS(%INTEGER S) 212 %INTEGERFNSPEC GAPP 213 %ROUTINESPEC FAULT(%INTEGER N) 214 %ROUTINESPEC ANALYSE 215 %ROUTINESPEC COMPILE 216 %OWNINTEGER AC=\255, ACLIT=0 D DEFINE 130 D LIT -400 D DEFINE 131 D LIT 0 217 %INTEGER TBASE,DBASE,LSTACK,ESTACK,PMAX,ATAG,DANGER,ACCESS,EXTIND,IBASE 218 TBASE = TMAX; DBASE = DMAX C LAC M71 C DAC M132 C LAC M65 C DAC M133 219 LSTACK = 3; ESTACK = 0 C LAC #3 C DAC M134 C DZM M135 220 %IF BTYPE # BEG %START; !PROCEDURE (NOT BEGIN) C LAC M121 C SAD #154 C JMP M375 221 ANALYSE; !FORMAL PARAMETERS C JMS M126 222 X = GAPP<<8 C JMS M124 C DAC M2 C LAC #10 C JMS M12 C DAC M72 223 %IF BTYPE&(\255) # 0 %START C LAC M121 C AND #-400 C SNA C JMP M373 224 FAULT(18) %IF BTYPE&(\255) # X %AND GLOBAL # 0 C LAC M121 C AND #-400 C SAD M72 C JMP M371 C LAC M70 C SNA C JMP M371 C LAC #22 C JMS M125 C DEFINE 371 225 %FINISH %ELSE %START C JMP M374 C DEFINE 373 226 BTYPE = BTYPE+X C LAC M121 C TAD M72 C DAC M121 227 %FINISH C DEFINE 374 228 ->FIN %IF BTYPE&BODY = 0; !SPEC -> C LAC M121 C AND #100 C SNA C JMP M144 229 %FINISH C DEFINE 375 230 PRINT SS(MAP+8) %IF BTAG # 0 C LAC M120 C SNA C JMP M375 C LAC #12 C JMS M123 C DEFINE 375 231 ACCESS = BTAG; !NON-ZERO EXCEPT AT OUTSET C LAC M120 C DAC M141 232 EXTIND = BTYPE&EXT; BTYPE = BTYPE!!EXTIND C LAC M121 C AND #200 C DAC M142 C LAC M121 C XOR M142 C DAC M121 233 ATAG = 0; IBASE = ICOUNT C DZM M137 C LAC M52 C DAC M143 234 DANGER = 0; PMAX = TMAX C DZM M140 C LAC M71 C DAC M136 235 AC=\PMAX %AND ACLIT=0 %IF PMAX-1=TBASE %AND TAGTYPE(PMAX)&62=0 C TAD #-1 C SAD M132 C SKP C JMP M375 C TAD #1 C JMS M10 C LAD M76 C LAC* M3 C AND #76 C SZA C JMP M375 C LAC M136 C CMA C DAC M130 C DZM M131 C DEFINE 375 236 %CYCLE C DEFINE 376 237 LINE = LINE+LINES C LAC M50 C TAD M51 C DAC M50 238 NEWLINES(LINES); !LINE-END CODE C LAC M51 C JMS M11 239 LINES = 0 C DZM M51 240 ANALYSE; COMPILE %IF SS # 0 C JMS M126 C LAC M100 C SZA C JMS M127 241 %IF SSTYPE < 0 %START; !START OR END OF BLOCK C LAC M56 C SMA C JMP M373 242 AC = \255 C LAC #-400 C DAC M130 243 %EXIT %IF SSTYPE<<1 # 0; !END C LAC M56 C CLA!RAL C SZA C JMP M375 244 COMPILE BLOCK(LEVEL+3,X,TAGTYPE(X),DANGER) C LAC #3 C TAD M117 C JMS M5 C LAC M72 C JMS M5 C JMS M10 C LAD M76 C JMS M5 C LAD M140 C JMS M116 245 %FINISH C DEFINE 373 246 %REPEAT C JMP M-376 C DEFINE 375 247 PRINT SS(MAP) C LAC #2 C JMS M123 248 FIN:TMAX = TBASE; DMAX = DBASE C DEFINE 144 C LAC M132 C DAC M71 C LAC M133 C DAC M65 249 %RETURN C JMP* M116 250 251 %ROUTINE PRINT SS(%INTEGER S) C BLOCK BEGIN 0 252 %INTEGER K,P 253 SELECT OUTPUT(S&7) C AND #7 C JMS M2 254 WRITE(LINE,3); SPACE; SPACE C LAC M50 C JMS M5 C LAC #3 C JMS M12 C JMS M6 C JMS M6 255 SPACES(LEVEL) %AND POS1=0 %IF S # ERR C LAC M145 C SNA C JMP M375 C LAC M117 C JMS M7 C DZM M62 C DEFINE 375 256 P = 1 C LAC #1 C DAC M147 257 %CYCLE C DEFINE 376 258 PRINT SYMBOL('^') %IF P = POS1 C LAC M147 C SAD M62 C SKP C JMP M373 C LAC #136 C JMS M4 C DEFINE 373 259 %EXIT %IF P = POS C LAC M147 C SAD M63 C JMP M375 260 K = CHAR(P); P = P+1 C JMS M10 C LAD M64 C LAC* M3 C DAC M146 C ISZ M147 C NOP 261 %EXIT %IF K = NL %OR (K = '%' %AND P = POS) C SAD #12 C JMP M372 C SAD #45 C SKP C JMP M373 C LAC M147 C SAD M63 C DEFINE 372 C JMP M375 C DEFINE 373 262 PRINT SYMBOL(K) C LAC M146 C JMS M4 263 %REPEAT C JMP M-376 C DEFINE 375 264 WRITE(ICOUNT-IBASE,5) %IF S = MAP C LAC M145 C SAD #2 C SKP C JMP M375 C LAC M52 C CMA C TAD M143 C CMA C JMS M5 C LAC #5 C JMS M12 C DEFINE 375 265 NEWLINE C JMS M10 266 SELECT OUTPUT(OBJ) C LAC #1 C JMS M2 267 %END C JMP* M123 D DEFINE 147 D LIT 0 D DEFINE 146 D LIT 0 D DEFINE 145 D LIT 0 D DEFINE 123 D LIT 0 D DAD M145 C ARG -317000 C ARG 5156 C ARG 0 C BLOCK END 144 268 269 %ROUTINE PRINT IDENT C BLOCK BEGIN 0 270 %INTEGER I,J,K,L 271 I = INDEX(X); J = I>>9 C LAC M72 C JMS M10 C LAD M77 C LAC* M3 C DAC M146 C DAC M2 C LAC #-11 C JMS M12 C DAC M147 272 PRINT SYMBOL(J>>3+32) C CLA!RAR C CLA!RAR C CLA!RAR C TAD #40 C JMS M4 273 I = I&511; J = J&7 C LAC M146 C AND #777 C DAC M146 C LAC M147 C AND #7 C DAC M147 274 %WHILE J # 0 %CYCLE C DEFINE 376 C LAC M147 C SNA C JMP M375 275 J = J-1 C TAD #-1 C DAC M147 276 %CYCLE L = 12,-6,0 C LAC #22 C DAC M151 C DEFINE 374 C LAC M151 C SAD #0 C JMP M373 C TAD #-6 C DAC M151 277 K = DICT(I-J)>>L&63 C LAC M146 C CMA C TAD M147 C CMA C JMS M10 C LAD M67 C LAC* M3 C JMS M5 C LAC #-1 C TAD M151 C CMA C DAC M1 C LAC* M0 C DAC M2 C LAC M1 C JMS M12 C AND #77 C DAC M150 278 PRINT SYMBOL(K+32) %IF K # 0 C SNA C JMP M371 C TAD #40 C JMS M4 C DEFINE 371 279 %REPEAT C JMP M-374 C DEFINE 373 280 %REPEAT C JMP M-376 C DEFINE 375 281 %END C JMP* M145 D DEFINE 151 D LIT 0 D DEFINE 150 D LIT 0 D DEFINE 147 D LIT 0 D DEFINE 146 D LIT 0 D DEFINE 145 D LIT 0 C ARG -174764 C ARG -152622 C ARG -132634 C BLOCK END 145 282 283 %INTEGERFN GAPP; !GRAMMAR FOR APP C BLOCK BEGIN 0 284 %CONSTINTEGER COMMA=15, LB=14 285 %INTEGER I,L 286 287 %INTEGERFN CLASS(%INTEGER K) C BLOCK BEGIN 0 288 %RESULT = K&15+80 %IF K&(ARRAY+PROC) # 0; !PROC AND ARRAY PARAMS C AND #14 C SNA C JMP M375 C LAC M153 C AND #17 C TAD #120 C JMP* M152 C DEFINE 375 289 %RESULT = 122 %IF K&REF = 0; !INTEGER->EXP(122) C LAC M153 C AND #40 C SZA C JMP M375 C LAC #172 C JMP* M152 C DEFINE 375 290 %RESULT = 119 %IF K&2 = 0; !INTEGERNAME->REF(119) C LAC M153 C AND #2 C SZA C JMP M375 C LAC #167 C JMP* M152 C DEFINE 375 291 %RESULT = 120; !BYTEINTEGERNAME->BREF(120) C LAC #170 C JMP* M152 292 %END D DEFINE 153 D LIT 0 D DEFINE 152 D LIT 0 D DAD M153 C ARG -345773 C ARG -233615 C ARG 63 C BLOCK END 152 293 294 %ROUTINE SET GCELL(%INTEGER C) C BLOCK BEGIN 0 295 C = L<<7+C; !LINK + CLASS C LAC M151 C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C TAD M154 C DAC M154 296 %WHILE L # GMAX %CYCLE C DEFINE 376 C LAC M151 C SAD M105 C JMP M375 297 L = L+1; %RETURN %IF GRAM(L) = C C TAD #1 C DAC M151 C JMS M10 C LAD M111 C LAC* M3 C SAD M154 C JMP* M153 298 %REPEAT C JMP M-376 C DEFINE 375 299 GMAX = GMAX+1; L = GMAX; GRAM(L) = C C ISZ M105 C NOP C LAC M105 C DAC M151 C JMS M10 C LAD M111 C LAC M154 C DAC* M3 300 %END C JMP* M153 D DEFINE 154 D LIT 0 D DEFINE 153 D LIT 0 D DAD M154 C ARG -144764 C ARG -321331 C ARG -343224 C BLOCK END 153 301 302 I = TMAX C LAC M71 C DAC M150 303 %RESULT = 255 %IF I = TBASE; !NULL APP (FOR NOW) C SAD M132 C SKP C JMP M375 C LAC #377 C JMP* M124 C DEFINE 375 304 L = GMAX1; !')' CELL C LAC M104 C DAC M151 305 %CYCLE C DEFINE 376 306 SET GCELL(CLASS(TAGTYPE(I))) C LAC M150 C JMS M10 C LAD M76 C LAC* M3 C JMS M152 C JMS M153 307 I = I-1 C LAC #-1 C TAD M150 C DAC M150 308 %EXIT %IF I = TBASE C SAD M132 C JMP M375 309 SET GCELL(COMMA); !',' CELL C LAC #17 C JMS M153 310 %REPEAT C JMP M-376 C DEFINE 375 311 SET GCELL(LB); !'(' CELL C LAC #16 C JMS M153 312 %RESULT = L C LAC M151 C JMP* M124 313 %END D DEFINE 151 D LIT 0 D DEFINE 150 D LIT 0 D DEFINE 124 D LIT 0 C ARG -174764 C ARG -152622 C ARG -132634 C BLOCK END 145 314 315 %ROUTINE FAULT(%INTEGER N) C BLOCK BEGIN 0 316 %SWITCH S(0:18) 317 POS1 = 0 %IF N > 2 C SMA C TAD #-2 C SMA!SZA C DZM M62 318 PRINT SS(ERR) %IF POS # 0 C LAC M63 C SNA C JMP M375 C LAC #0 C JMS M123 C DEFINE 375 319 SELECT OUTPUT(ERR) C LAC #0 C JMS M2 320 PRINT SYMBOL('*') C LAC #52 C JMS M4 321 ->S(N) C LAC M146 C JMS M10 C LAD M147 C XCT* M3 C JMS* M4 C LIT 607 322 S(0): %PRINTTEXT 'FORM'; ->F C ARG 2 C DEFINE 147 C JMS M46 C LIT 21517 C LIT -353263 C JMP M150 323 S(1): %PRINTTEXT 'ATOM'; ->F C ARG 3 C DEFINE 147 C JMS M46 C LIT 20324 C LIT -354063 C JMP M150 324 S(2): %PRINTTEXT 'NAME'; ->F C ARG 4 C DEFINE 147 C JMS M46 C LIT 23501 C LIT -354473 C JMP M150 325 S(3): %PRINTTEXT 'SIZE'; ->F C ARG 5 C DEFINE 147 C JMS M46 C LIT 24711 C LIT -351273 C JMP M150 326 S(4): %PRINTTEXT 'DUPLICATE'; ->F C ARG 6 C DEFINE 147 C JMS M46 C LIT 21125 C LIT 24114 C LIT 22303 C LIT 20324 C LIT -377673 C JMP M150 327 S(5): %PRINTTEXT '%BEGIN'; ->M C ARG 7 C DEFINE 147 C JMS M46 C LIT 11302 C LIT 21307 C LIT -355462 C JMP M151 328 S(6): %PRINTTEXT '%CYCLE'; ->M C ARG 10 C DEFINE 147 C JMS M46 C LIT 11303 C LIT 26303 C LIT -354673 C JMP M151 329 S(7): %PRINTTEXT '%START'; ->M C ARG 11 C DEFINE 147 C JMS M46 C LIT 11323 C LIT 25101 C LIT -353254 C JMP M151 330 S(8): %PRINTTEXT '%END'; ->M C ARG 12 C DEFINE 147 C JMS M46 C LIT 11305 C LIT -354274 C JMP M151 331 S(9): %PRINTTEXT '%REPEAT'; ->M C ARG 13 C DEFINE 147 C JMS M46 C LIT 11322 C LIT 21320 C LIT 21301 C LIT -377654 C JMP M151 332 S(10): %PRINTTEXT '%FINISH'; ->M C ARG 14 C DEFINE 147 C JMS M46 C LIT 11306 C LIT 22316 C LIT 22323 C LIT -377670 C JMP M151 333 S(11): %PRINTTEXT '%RESULT'; ->M C ARG 15 C DEFINE 147 C JMS M46 C LIT 11322 C LIT 21323 C LIT 25314 C LIT -377654 C JMP M151 334 S(12): PRINT SYMBOL('''') C ARG 16 C DEFINE 147 C LAC #47 C JMS M4 335 PRINT IDENT C JMS M145 336 PRINT SYMBOL('''') C LAC #47 C JMS M4 337 M: %PRINTTEXT ' MISSING'; ->F C DEFINE 151 C JMS M46 C LIT 10115 C LIT 22323 C LIT 24711 C LIT -354271 C JMP M150 338 S(13): %PRINTTEXT 'BOUNDS'; ->F C ARG 17 C DEFINE 147 C JMS M46 C LIT 20517 C LIT 25316 C LIT -356655 C JMP M150 339 S(14): %PRINTTEXT 'INDEX'; ->F C ARG 20 C DEFINE 147 C JMS M46 C LIT 22316 C LIT 21105 C LIT -377650 C JMP M150 340 S(15): %PRINTTEXT 'CONTEXT'; ->E C ARG 21 C DEFINE 147 C JMS M46 C LIT 20717 C LIT 23524 C LIT 21330 C LIT -377654 C JMP M152 341 S(16): %PRINTTEXT 'ACCESS'; ->A C ARG 22 C DEFINE 147 C JMS M46 C LIT 20303 C LIT 20705 C LIT -353055 C JMP M153 342 S(17): %PRINTTEXT 'ORDER'; ->F C ARG 23 C DEFINE 147 C JMS M46 C LIT 23722 C LIT 21105 C LIT -377656 C JMP M150 343 S(18): %PRINTTEXT 'MATCH' C ARG 24 C DEFINE 147 C JMS M46 C LIT 23301 C LIT 25103 C LIT -377670 344 F: FAULTY = 1 C DEFINE 150 C LAC #1 C DAC M61 345 A: ACCESS = -1 C DEFINE 153 C LAC #-1 C DAC M141 346 E: NEWLINE; SELECT OUTPUT(OBJ) C DEFINE 152 C JMS M10 C LAC #1 C JMS M2 347 POS = 0 %IF SYMTYPE = 0 C LAC M54 C SNA C DZM M63 348 %END C JMP* M125 C DEFINE 147 C LIT -22 C LIT 23 C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP D DEFINE 146 D LIT 0 D DEFINE 125 D LIT 0 D DAD M146 C ARG -174764 C ARG -152622 C ARG -132634 C BLOCK END 145 349 350 %ROUTINE ANALYSE C BLOCK BEGIN 0 351 %CONSTINTEGER COMMA=15 352 %INTEGER ATOM1,ATOM2,SUBATOM,LAST,HEAD,MAX,DUP,TEXT,LIM,INDEX0 353 %INTEGER K,N,S,G,CLASS,NMIN,NMAX 354 %INTEGERNAME Z 355 %OWNINTEGER QUOTE=0, KEY=0, GG=0 D DEFINE 171 D LIT 0 D DEFINE 172 D LIT 0 D DEFINE 173 D LIT 0 356 357 %ROUTINE READ SYM C BLOCK BEGIN 0 358 ->2 %UNLESS SYM = NL C LAC M53 C SAD #12 C SKP C JMP M175 359 POS = 0; POS1 = 0 C DZM M63 C DZM M62 360 1: SYMTYPE = 1 C DEFINE 176 C LAC #1 C DAC M54 361 2: READ SYMBOL(SYM) C DEFINE 175 C LAD M53 C JMS M3 362 POS = POS+1 %UNLESS POS = 73 C LAC M63 C SAD #111 C JMP M375 C TAD #1 C DAC M63 C DEFINE 375 363 CHAR(POS) = SYM C LAC M63 C JMS M10 C LAD M64 C LAC M53 C DAC* M3 364 %IF SYM # NL %START C SAD #12 C JMP M375 365 %RETURN %IF QUOTE # 0 C LAC M171 C SZA C JMP* M174 366 ->1 %IF SYM = ' ' C LAC M53 C SAD #40 C JMP M176 367 SYMTYPE=2 %AND ->2 %IF SYM = '%' C SAD #45 C SKP C JMP M373 C LAC #2 C DAC M54 C JMP M175 C DEFINE 373 368 !KDICT(33:95) := LINK<9>:CODE<2> 369 SYM = SYM-32 %IF SYM >= 96 C LAC M53 C SMA C TAD #-140 C SPA C JMP M373 C LAC #-40 C TAD M53 C DAC M53 C DEFINE 373 370 KEY = KDICT(SYM) C LAC M53 C JMS M10 C LAD M112 C LAC* M3 C DAC M172 371 SYMTYPE = KEY&3-2 %UNLESS KEY&3=0 %AND SYMTYPE=2 C AND #3 C SZA C JMP M372 C LAC M54 C SAD #2 C JMP M373 C DEFINE 372 C LAC M172 C AND #3 C TAD #-2 C DAC M54 C DEFINE 373 372 %FINISH %ELSE %START C JMP M376 C DEFINE 375 373 LINES = LINES+1; SYMTYPE = QUOTE; !0,>0 C ISZ M51 C NOP C LAC M171 C DAC M54 374 %FINISH C DEFINE 376 375 %END; !READ SYM C JMP* M174 D DEFINE 174 D LIT 0 C ARG -155764 C ARG -323634 C ARG -140623 C BLOCK END 174 376 377 %ROUTINE CODE ATOM(%INTEGER TARGET) C BLOCK BEGIN 0 378 !TARGET (IF SPECIFIED) IS FIRST ATOM CLASS FROM GRAMMAR 379 %INTEGER I,J,K 380 1: POS1 = POS C DEFINE 202 C LAC M63 C DAC M62 381 ATOM1 = 9; ATOM2 = 0; SUBATOM = 0 C LAC #11 C DAC M147 C DZM M150 C DZM M151 382 %RETURN %IF SYMTYPE = 0; !NL OR SEMI-COLON C LAC M54 C SNA C JMP* M175 383 ->NAME %IF SYMTYPE = -2; !LETTER -> C SAD #-2 C JMP M203 384 ->NUMBER %IF SYMTYPE < 0; !DIGIT -> C SPA C JMP M204 385 ->QUOTED %IF QUOTE # 0; !QUOTED SYMBOL -> C LAC M171 C SZA C JMP M205 386 ->QUOTEMARK %IF SYM = '''' C LAC M53 C SAD #47 C JMP M206 387 ->STRING %IF SYM = '"' C SAD #42 C JMP M207 388 389 !LOCATE ATOM IN FIXED DICT 390 !KDICT(96:KMAX) := MORE<1>:0<1>:LINK<9>:SYM<7> 391 ! OR MORE<1>:1<1>:SUBCLASS<10>:CLASS<6> 392 I = KEY>>2; READ SYM C LAC M172 C CLA!RAR C CLA!RAR C DAC M177 C JMS M174 393 %CYCLE C DEFINE 376 394 J = KDICT(I) C LAC M177 C JMS M10 C LAD M112 C LAC* M3 C DAC M200 395 %EXIT %IF J&65536 # 0 C AND #200000 C SZA C JMP M375 396 %IF J&127 # SYM %OR SYMTYPE < 0 %START C LAC M200 C AND #177 C SAD M53 C SKP C JMP M372 C LAC M54 C SMA C JMP M373 C DEFINE 372 397 ->ERR %UNLESS J < 0 C LAC M200 C SMA C JMP M210 398 I = I+1 C ISZ M177 C NOP 399 %FINISH %ELSE %START C JMP M374 C DEFINE 373 400 K = J>>7&511; READ SYM C LAC M200 C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C AND #777 C DAC M201 C JMS M174 401 %IF J > 0 %START C LAC M200 C SPA!SNA C JMP M371 402 %IF K # 0 %START C LAC M201 C SNA C JMP M367 403 ->ERR %IF K # SYM %OR SYMTYPE < 0 C SAD M53 C SKP C JMP M364 C LAC M54 C SPA C DEFINE 364 C JMP M210 404 READ SYM C JMS M174 405 %FINISH C DEFINE 367 406 K = I+1 C LAC #1 C TAD M177 C DAC M201 407 %FINISH C DEFINE 371 408 I = K C LAC M201 C DAC M177 409 %FINISH C DEFINE 374 410 %REPEAT C JMP M-376 C DEFINE 375 411 ATOM1 = J&63; !ATOM CLASS C LAC M200 C AND #77 C DAC M147 412 SUBATOM = J>>6&1023 C LAC M200 C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C AND #1777 C DAC M151 413 ->1 %IF ATOM1 = 0 %AND SUBATOM = 0; !% C NL, (SHORT) C LAC M147 C SZA C JMP M375 C LAC M151 C SNA C JMP M202 C DEFINE 375 414 ATOM2 = KDICT(I+1)&63 %IF J < 0; !VARIANT ATOM CLASS C LAC M200 C SMA C JMP M375 C LAC #1 C TAD M177 C JMS M10 C LAD M112 C LAC* M3 C AND #77 C DAC M150 C DEFINE 375 415 %RETURN %UNLESS ATOM1 < 8; !DECLARATOR C LAC M147 C SMA C TAD #-10 C SMA C JMP* M175 416 DECL = 0 %UNLESS LAST < 8 C LAC M152 C SMA C TAD #-10 C SMA C DZM M55 417 !CUMULATE SUBATOM INFO IN DECL (FOR MULTI-WORD KEYWORDS) 418 DECL = DECL!!SUBATOM C LAC M55 C XOR M151 C DAC M55 419 !ADJUST PROCEDURE-TYPE PARAMETERS 420 DECL = DECL-BODY+REF %IF LAST # 0 %AND DECL&PROC # 0; !PROC PAR C LAC M152 C SNA C JMP M375 C LAC M55 C AND #4 C SNA C JMP M375 C LAC #-40 C TAD M55 C DAC M55 C DEFINE 375 421 %RETURN %UNLESS ATOM1 = 0 C LAC M147 C SZA C JMP* M175 422 !EXTERNAL, BYTE 423 ->1 %IF SYMTYPE > 0 C LAC M54 C SMA!SZA C JMP M202 424 ERR:ATOM1 = -1 C DEFINE 210 C LAC #-1 C DAC M147 425 %RETURN C JMP* M175 426 427 QUOTED: C DEFINE 205 428 ATOM1 = COMMA %AND %RETURN %IF LAST # COMMA; !INFILTRATE COMMA C LAC M152 C SAD #17 C JMP M375 C LAC #17 C DAC M147 C JMP* M175 C DEFINE 375 429 QUOTEMARK: C DEFINE 206 430 ->STRING %IF LAST = 38; !PRINTTEXT C LAC M152 C SAD #46 C JMP M207 431 QUOTE = SYM; READ SYM C LAC M53 C DAC M171 C JMS M174 432 ATOM1 = 71; SUBATOM = SYM; !SCONST C LAC #107 C DAC M147 C LAC M53 C DAC M151 433 READ SYM %IF SYM = QUOTE %AND NEXT SYMBOL = QUOTE C LAC M53 C SAD M171 C SKP C JMP M375 C JMS M13 C SAD M171 C JMS M174 C DEFINE 375 434 %RETURN %IF NEXT SYMBOL # QUOTE C JMS M13 C SAD M171 C SKP C JMP* M175 435 READ SYM C JMS M174 436 ->ENDQUOTE C JMP M211 437 STRING: C DEFINE 207 438 QUOTE = SYM; READ SYM C LAC M53 C DAC M171 C JMS M174 439 ATOM1 = 67; SUBATOM = TEXT; !STRING C LAC #103 C DAC M147 C LAC M156 C DAC M151 440 J = 0 C DZM M200 441 %WHILE SYM # QUOTE %OR NEXTSYMBOL = QUOTE %CYCLE C DEFINE 376 C LAC M53 C SAD M171 C SKP C JMP M374 C JMS M13 C SAD M171 C SKP C JMP M375 C DEFINE 374 442 READ SYM %IF SYM = QUOTE C LAC M53 C SAD M171 C JMS M174 443 %IF J&(\127) # 0 %START C LAC M200 C AND #-200 C SNA C JMP M373 444 DICT(TEXT) = J; TEXT = TEXT-1 C LAC M156 C JMS M10 C LAD M67 C LAC M200 C DAC* M3 C LAC #-1 C TAD M156 C DAC M156 445 %IF TEXT = DMAX %START; !TOO LONG C SAD M65 C SKP C JMP M371 446 ATOM1 = -3; TEXT = TEXT+1 C LAC #-3 C DAC M147 C ISZ M156 C NOP 447 %FINISH C DEFINE 371 448 J = 0 C DZM M200 449 %FINISH C DEFINE 373 450 J = J<<7+SYM C LAC M200 C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C TAD M53 C DAC M200 451 READ SYM C JMS M174 452 %REPEAT C JMP M-376 C DEFINE 375 453 DICT(TEXT) = J-131072; TEXT = TEXT-1 C LAC M156 C JMS M10 C LAD M67 C LAC #-400000 C TAD M200 C DAC* M3 C LAC #-1 C TAD M156 C DAC M156 454 ENDQUOTE: C DEFINE 211 455 QUOTE = 0; READ SYM C DZM M171 C JMS M174 456 %RETURN C JMP* M175 457 458 NUMBER: C DEFINE 204 459 ->NAME %IF LAST=17 %OR (LAST=0 %AND SECTION=0); !JUMP OR LAB C LAC M152 C SAD #21 C JMP M374 C SZA C JMP M375 C LAC M57 C SNA C DEFINE 374 C JMP M203 C DEFINE 375 460 ATOM1 = 71; !SCONST C LAC #107 C DAC M147 461 I = 10; !DECIMAL C LAC #12 C DAC M177 462 %CYCLE C DEFINE 376 463 SUBATOM = 0 C DZM M151 464 %CYCLE C DEFINE 374 465 %IF SYMTYPE=-1 %THEN K=SYM-'0' %ELSE K=SYM-'A'+10 C LAC M54 C SAD #-1 C SKP C JMP M371 C LAC #-60 C TAD M53 C DAC M201 C JMP M372 C DEFINE 371 C LAC #-67 C TAD M53 C DAC M201 C DEFINE 372 466 ->ERR %IF K >= I C LAC M201 C DAC M2 C LAC M177 C JMS M7 C SZL C JMP M210 467 SUBATOM = SUBATOM+K C LAC M151 C TAD M201 C DAC M151 468 READ SYM C JMS M174 469 %EXIT %IF SYMTYPE >= 0 C LAC M54 C SMA C JMP M373 470 J = I; K = SUBATOM; SUBATOM = 0; !MULTIPLY BY RADIX C LAC M177 C DAC M200 C LAC M151 C DAC M201 C DZM M151 471 %WHILE J # 0 %CYCLE C DEFINE 372 C LAC M200 C SNA C JMP M371 472 SUBATOM = SUBATOM+K %IF J&1 # 0 C AND #1 C SNA C JMP M367 C LAC M151 C TAD M201 C DAC M151 C DEFINE 367 473 K = K<<1; J = J>>1 C LAC M201 C CLA!RAL C DAC M201 C LAC M200 C CLA!RAR C DAC M200 474 %REPEAT C JMP M-372 C DEFINE 371 475 %REPEAT C JMP M-374 C DEFINE 373 476 %RETURN %IF SYM # '_' C LAC M53 C SAD #137 C SKP C JMP* M175 477 I = SUBATOM C LAC M151 C DAC M177 478 READ SYM; ->ERR %IF SYMTYPE >= 0 C JMS M174 C LAC M54 C SMA C JMP M210 479 %REPEAT C JMP M-376 480 481 %ROUTINE LOOKUP(%INTEGER D) C BLOCK BEGIN 0 482 %OWNINTEGER I; !OWN FOR OPTIMISATION D DEFINE 214 D LIT 0 483 %INTEGER J,K,L,M 484 I = INDEX0+TMAX+1; L = INDEX0+LIM C LAC M160 C TAD M71 C TAD #1 C DAC M214 C LAC M160 C TAD M157 C DAC M217 485 REP:I = I-1 C DEFINE 221 C LAC #-1 C TAD M214 C DAC M214 486 ->NEW %IF I = L C SAD M217 C JMP M222 487 ->REP %UNLESS INTEGER(I)&(\511) = HEAD C JMS M15 C LAC* M3 C AND #-1000 C SAD M153 C SKP C JMP M221 488 J = INTEGER(I)&511; K = MAX C LAC M214 C JMS M15 C LAC* M3 C AND #777 C DAC M215 C LAC M154 C DAC M216 489 %WHILE K # DMAX %CYCLE C DEFINE 376 C LAC M216 C SAD M65 C JMP M375 490 M = DICT(K) C JMS M10 C LAD M67 C LAC* M3 C DAC M220 491 ->REP %IF DICT(J) # M C LAC M215 C JMS M10 C LAD M67 C LAC* M3 C SAD M220 C SKP C JMP M221 492 J = J-1; K = K-1 C LAC #-1 C TAD M215 C DAC M215 C LAC #-1 C TAD M216 C DAC M216 493 %REPEAT C JMP M-376 C DEFINE 375 494 SUBATOM = I-INDEX0 C LAC M214 C CMA C TAD M160 C CMA C DAC M151 495 TTX == TAGTYPE(SUBATOM); ATOM1 = TTX&15+64 C JMS M10 C LAD M76 C DAD M75 C LAC M75 C AND #17 C TAD #100 C DAC M147 496 !SET UP GRAM FOR PARAMETERS 497 %IF TTX&PROC # 0 %THEN APP=TTX>>8 %ELSE APP=BAPP C LAC M75 C AND #4 C SNA C JMP M375 C LAC M75 C DAC M2 C LAC #-10 C JMS M12 C DAC M113 C JMP M376 C DEFINE 375 C LAC M114 C DAC M113 C DEFINE 376 498 !NON-DECLARATIVE CONTEXT 499 %RETURN %IF D&255 = 0 C LAC M213 C AND #377 C SNA C JMP* M212 500 !SPEC FOR PROC PARAMETER 501 %RETURN %IF D = 36 %AND APP = 0 C LAC M213 C SAD #44 C SKP C JMP M375 C LAC M113 C SNA C JMP* M212 C DEFINE 375 502 !LABEL AFTER JUMP, PROC AFTER SPEC 503 TTX=TTX+BODY %AND %RETURN %IF TTX&255+BODY = D C LAC M75 C AND #377 C TAD #100 C SAD M213 C SKP C JMP M375 C LAC #100 C TAD M75 C DAC M75 C JMP* M212 C DEFINE 375 504 DUP = 1 C LAC #1 C DAC M155 505 NEW:%RETURN %IF D = 0 C DEFINE 222 C LAC M213 C SNA C JMP* M212 506 TMAX = TMAX+1; SUBATOM = TMAX C ISZ M71 C NOP C LAC M71 C DAC M151 507 TTX == TAGTYPE(SUBATOM); TTX = D; ATOM1 = TTX&15+64 C JMS M10 C LAD M76 C DAD M75 C LAC M213 C DAC M75 C AND #17 C TAD #100 C DAC M147 508 INDEX(TMAX) = HEAD+MAX; DMAX = MAX C LAC M153 C TAD M154 C JMS M5 C LAC M71 C JMS M10 C LAD M77 C LAC* M0 C DAC* M3 C LAC M154 C DAC M65 509 %END; !LOOKUP C JMP* M212 D DEFINE 220 D LIT 0 D DEFINE 217 D LIT 0 D DEFINE 216 D LIT 0 D DEFINE 215 D LIT 0 D DEFINE 213 D LIT 0 D DEFINE 212 D LIT 0 D DAD M213 C ARG -235764 C ARG -202025 C ARG 6560 C BLOCK END 212 510 511 NAME: C DEFINE 203 512 HEAD = (SYM-32)<<12; MAX = DMAX C LAC #-40 C TAD M53 C DAC M2 C LAC #14 C JMS M12 C DAC M153 C LAC M65 C DAC M154 513 %CYCLE C DEFINE 376 514 READ SYM; ->25 %IF SYMTYPE >= 0 C JMS M174 C LAC M54 C SMA C JMP M213 515 HEAD = HEAD+512; MAX = MAX+1 C LAC #1000 C TAD M153 C DAC M153 C ISZ M154 C NOP 516 J = SYM-32 C LAC #-40 C TAD M53 C DAC M200 517 READ SYM; %EXIT %IF SYMTYPE >= 0 C JMS M174 C LAC M54 C SMA C JMP M375 518 J = J<<6+SYM-32 C LAC M200 C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C TAD M53 C TAD #-40 C DAC M200 519 READ SYM; %EXIT %IF SYMTYPE >= 0 C JMS M174 C LAC M54 C SMA C JMP M375 520 J = J<<6+SYM-32; DICT(MAX) = J C LAC M200 C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C TAD M53 C TAD #-40 C DAC M200 C LAC M154 C JMS M10 C LAD M67 C LAC M200 C DAC* M3 521 %REPEAT C JMP M-376 C DEFINE 375 522 DICT(MAX) = J C LAC M154 C JMS M10 C LAD M67 C LAC M200 C DAC* M3 523 25: ATOM1 = -2; ATOM2 = 70; !IDENT C DEFINE 213 C LAC #-2 C DAC M147 C LAC #106 C DAC M150 524 LIM = TBASE; !LOCAL C LAC M132 C DAC M157 525 LOOKUP(64) %AND %RETURN %IF LAST = 0 %AND SYM = ':'; !LABEL C LAC M152 C SZA C JMP M375 C LAC M53 C SAD #72 C SKP C JMP M375 C LAC #100 C JMS M212 C JMP* M175 C DEFINE 375 526 LOOKUP(256) %AND %RETURN %IF LAST = 17; !JUMP C LAC M152 C SAD #21 C SKP C JMP M375 C LAC #400 C JMS M212 C JMP* M175 C DEFINE 375 527 LOOKUP(DECL) %AND %RETURN %IF TARGET = 70 %AND DECL # 0; !IDENT C LAC M176 C SAD #106 C SKP C JMP M375 C LAC M55 C SNA C JMP M375 C JMS M212 C JMP* M175 C DEFINE 375 528 LIM = GLOBAL C LAC M70 C DAC M157 529 %IF LAST = 40 %THEN LOOKUP(256) %ELSE LOOKUP(0); !MCODE,NORMAL C LAC M152 C SAD #50 C SKP C JMP M375 C LAC #400 C JMS M212 C JMP M376 C DEFINE 375 C LAC #0 C JMS M212 C DEFINE 376 530 %RETURN %UNLESS ATOM1 = 65 %AND TTX&(\255) # 0 C LAC M147 C SAD #101 C SKP C JMP M374 C LAC M75 C AND #-400 C SNA C DEFINE 374 C JMP* M175 531 ATOM1 = 71; SUBATOM = DICT(TTX>>8); !CONSTINTEGER C LAC #107 C DAC M147 C LAC M75 C DAC M2 C LAC #-10 C JMS M12 C JMS M10 C LAD M67 C LAC* M3 C DAC M151 532 %END; !CODE ATOM C JMP* M175 D DEFINE 201 D LIT 0 D DEFINE 200 D LIT 0 D DEFINE 177 D LIT 0 D DEFINE 176 D LIT 0 D DEFINE 175 D LIT 0 D DAD M176 C ARG -344764 C ARG -203333 C ARG -361321 C BLOCK END 175 533 534 ! GRAM LAYOUT: MORE<1> ORDER<2> LINK<8> CLASS<7> 535 SS = 0; SSTYPE = 1; DECL = 0 C DZM M100 C LAC #1 C DAC M56 C DZM M55 536 ATOM1 = 0; LAST = 0; DUP = 0 C DZM M147 C DZM M152 C DZM M155 537 TEXT = DBOUND; INDEX0 = ADDR(INDEX(0)) C LAC #764 C DAC M156 C LAC #0 C JMS M10 C LAD M77 C JMS M14 C DAC M160 538 MREF = MREF&(\127)+119; MREF = MREF+1 %IF BTYPE&2 # 0 C LAC M115 C AND #-200 C TAD #167 C DAC M115 C LAC M121 C AND #2 C SZA C ISZ M115 C NOP 539 NMAX = 0; NMIN = NODEBOUND+1; N = 0 C DZM M167 C LAC #107 C DAC M166 C DZM M162 540 %IF GG = 0 %OR SECTION # 0 %START C LAC M173 C SNA C JMP M374 C LAC M57 C SNA C JMP M375 C DEFINE 374 541 READ SYM %IF SYMTYPE = 0 C LAC M54 C SNA C JMS M174 542 ->SKP %IF SYMTYPE = 0 %OR SYM = '!' C LAC M54 C SNA C JMP M372 C LAC M53 C SAD #41 C DEFINE 372 C JMP M176 543 CODE ATOM(0); ->SKP %IF ATOM1 = 11; !COMMENT C LAC #0 C JMS M175 C LAC M147 C SAD #13 C JMP M176 544 %FINISH C DEFINE 375 545 ->L4 %IF GG # 0 C LAC M173 C SZA C JMP M177 546 ->91 %IF ATOM1 <= 0 C LAC M147 C SPA!SNA C JMP M200 547 GG = INITIAL(ATOM1) C JMS M10 C LAD M110 C LAC* M3 C DAC M173 548 ->91 %IF GG = 0 C SNA C JMP M200 549 SSTYPE = GG<<1&8_600000 C CLA!RAL C AND #-200000 C DAC M56 550 %IF GG < 0 %START; !INIT ATOM FOR IMP C LAC M173 C SMA C JMP M375 551 NMAX = 1; REFCO(NMAX) = 0; SUB(NMAX) = 1 C LAC #1 C DAC M167 C JMS M10 C LAD M102 C LAC #0 C DAC* M3 C LAC M167 C JMS M10 C LAD M103 C LAC #1 C DAC* M3 552 %FINISH C DEFINE 375 553 L1: LAST = ATOM1; ATOM1 = 0 C DEFINE 201 C LAC M147 C DAC M152 C DZM M147 554 S = SUBATOM C LAC M151 C DAC M163 555 L2: CLASS = GG&127 C DEFINE 202 C LAC M173 C AND #177 C DAC M165 556 %IF CLASS >= 24 %START; !NOT TRANSPARENT C SMA C TAD #-30 C SPA C JMP M375 557 NMIN = NMIN-1; ->90 %IF NMIN = NMAX C LAC #-1 C TAD M166 C DAC M166 C SAD M167 C JMP M203 558 SUB(NMIN) = S C JMS M10 C LAD M103 C LAC M163 C DAC* M3 559 L3: Z == N C DEFINE 204 C LAD M162 C AND #-200001 C DAD M170 560 %CYCLE; !INSERT CELL IN ORDER C DEFINE 374 561 K = Z&127 C LAC M170 C AND #177 C DAC M161 562 %EXIT %IF K = 0 %OR GG&98304 = 0 C SNA C JMP M370 C LAC M173 C AND #300000 C SNA C DEFINE 370 C JMP M373 563 GG = GG-32768; Z == REFCO(K) C LAC #-100000 C TAD M173 C DAC M173 C LAC M161 C JMS M10 C LAD M102 C DAD M170 564 %REPEAT C JMP M-374 C DEFINE 373 565 REFCO(NMIN) = CLASS<<7+K; Z = Z!!K+NMIN C LAC M165 C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C CLA!RAL C TAD M161 C JMS M5 C LAC M166 C JMS M10 C LAD M102 C LAC* M0 C DAC* M3 C LAC M170 C XOR M161 C TAD M166 C DAC M170 566 %FINISH C DEFINE 375 567 L4: G = GG>>7&255 C DEFINE 177 C LAC M173 C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C AND #377 C DAC M164 568 %CYCLE C DEFINE 376 569 GG = GRAM(G); CLASS = GG&127 C LAC M164 C JMS M10 C LAD M111 C LAC* M3 C DAC M173 C AND #177 C DAC M165 570 %EXIT %IF CLASS = 0 C SNA C JMP M375 571 %IF CLASS < 112 %START C SMA C TAD #-160 C SMA C JMP M373 572 CLASS = ATOMIC(CLASS) %IF CLASS >= 80 C LAC M165 C SMA C TAD #-120 C SPA C JMP M371 C LAC M165 C JMS M10 C LAD M107 C LAC* M3 C DAC M165 C DEFINE 371 573 CODE ATOM(CLASS) %IF ATOM1 = 0 C LAC M147 C SZA C JMP M371 C LAC M165 C JMS M175 C DEFINE 371 574 ->L1 %IF CLASS = ATOM1 %OR CLASS = ATOM2 C LAC M165 C SAD M147 C JMP M370 C SAD M150 C DEFINE 370 C JMP M201 575 ->91 %IF GG >= 0 C LAC M173 C SMA C JMP M200 576 G = G+1 C ISZ M164 C NOP 577 %FINISH %ELSE %START C JMP M374 C DEFINE 373 578 NMAX = NMAX+1; ->90 %IF NMAX = NMIN C ISZ M167 C NOP C LAC M167 C SAD M166 C JMP M203 579 REFCO(NMAX) = N; SUB(NMAX) = G C JMS M10 C LAD M102 C LAC M162 C DAC* M3 C LAC M167 C JMS M10 C LAD M103 C LAC M164 C DAC* M3 580 N = 0 C DZM M162 581 G = PHRASE(CLASS) C LAC M165 C JMS M10 C LAD M106 C LAC* M3 C DAC M164 582 %FINISH C DEFINE 374 583 %REPEAT C JMP M-376 C DEFINE 375 584 S = 0 C DZM M163 585 %WHILE N # 0 %CYCLE; !REVERSE LINKS C DEFINE 376 C LAC M162 C SNA C JMP M375 586 Z == REFCO(N) C JMS M10 C LAD M102 C DAD M170 587 K = Z&127; Z = Z!!K+S C LAC M170 C AND #177 C DAC M161 C LAC M170 C XOR M161 C TAD M163 C DAC M170 588 S = N; N = K C LAC M162 C DAC M163 C LAC M161 C DAC M162 589 %REPEAT C JMP M-376 C DEFINE 375 590 ->L5 %IF NMAX = 0 C LAC M167 C SNA C JMP M205 591 N = REFCO(NMAX); G = SUB(NMAX) C JMS M10 C LAD M102 C LAC* M3 C DAC M162 C LAC M167 C JMS M10 C LAD M103 C LAC* M3 C DAC M164 592 NMAX = NMAX-1 C LAC #-1 C TAD M167 C DAC M167 593 K = GG; !EXIT-POINT CODE C LAC M173 C DAC M161 594 %CYCLE C DEFINE 376 595 GG = GRAM(G) C LAC M164 C JMS M10 C LAD M111 C LAC* M3 C DAC M173 596 %EXIT %IF K = 0 C LAC M161 C SNA C JMP M375 597 ->91 %IF GG >= 0 C LAC M173 C SMA C JMP M200 598 K = K-32768; G = G+1 C LAC #-100000 C TAD M161 C DAC M161 C ISZ M164 C NOP 599 %REPEAT C JMP M-376 C DEFINE 375 600 ->L2 %UNLESS S # 0 %AND Z&127 = 0; !SINGLETON C LAC M163 C SNA C JMP M374 C LAC M170 C AND #177 C SZA C DEFINE 374 C JMP M202 601 CLASS = Z>>7; !DON'T BOTHER WITH NEW NODE C LAC M170 C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C DAC M165 602 ->L3 C JMP M204 603 L5: SS = S C DEFINE 205 C LAC M163 C DAC M100 604 FAULT(4) %IF DUP # 0 C LAC M155 C SNA C JMP M375 C LAC #4 C JMS M125 C DEFINE 375 605 %RETURN C JMP* M126 606 607 !ERROR 608 90: ATOM1 = -3 C DEFINE 203 C LAC #-3 C DAC M147 609 91: READ SYM %WHILE SYM # NL C DEFINE 200 C DEFINE 376 C LAC M53 C SAD #12 C JMP M375 C JMS M174 C JMP M-376 C DEFINE 375 610 %IF ATOM1 < 0 %THEN FAULT(-ATOM1) %ELSE FAULT(0) C LAC M147 C SMA C JMP M375 C TAD #-1 C CMA C JMS M125 C JMP M376 C DEFINE 375 C LAC #0 C JMS M125 C DEFINE 376 611 QUOTE = 0; SYMTYPE = 0; DECL = 0; SECTION = 0 C DZM M171 C DZM M54 C DZM M55 C DZM M57 612 GG = 0 C DZM M173 613 %RETURN C JMP* M126 614 SKP:READ SYM %WHILE SYMTYPE # 0 C DEFINE 176 C DEFINE 376 C LAC M54 C SNA C JMP M375 C JMS M174 C JMP M-376 C DEFINE 375 615 %END; !ANALYSE C JMP* M126 D DEFINE -170 D LIT 0 D DEFINE 167 D LIT 0 D DEFINE 166 D LIT 0 D DEFINE 165 D LIT 0 D DEFINE 164 D LIT 0 D DEFINE 163 D LIT 0 D DEFINE 162 D LIT 0 D DEFINE 161 D LIT 0 D DEFINE 160 D LIT 0 D DEFINE 157 D LIT 0 D DEFINE 156 D LIT 0 D DEFINE 155 D LIT 0 D DEFINE 154 D LIT 0 D DEFINE 153 D LIT 0 D DEFINE 152 D LIT 0 D DEFINE 151 D LIT 0 D DEFINE 150 D LIT 0 D DEFINE 147 D LIT 0 D DEFINE 126 D LIT 0 C ARG -174764 C ARG -152622 C ARG -132634 C BLOCK END 145 616 617 618 %ROUTINE COMPILE C BLOCK BEGIN 0 619 %CONSTINTEGER LAC=68,LAD=95,TAD=71,ADA=94,DAC=65,DAD=93 620 %INTEGER I,J,K,NEXT,LINK,CLASS,REFDEST,BOWN 621 %INTEGER PEND,PEND1,PENDOPR,LABCODE,ELSE,MAIN,LTAG,LNEST,FINAL 622 %INTEGER CONTROL,INC,END,ILIT,ELIT 623 %OWNINTEGER LIT=0,LIT1=0 D DEFINE 202 D LIT 0 D DEFINE 203 D LIT 0 624 %SWITCH C(1:112) 625 626 %ROUTINE PR(%INTEGER X) C BLOCK BEGIN 0 627 %INTEGER I 628 I = !X! C SMA!CMA C SKP!CMA C TAD #1 C DAC M207 629 %WHILE I # 0 %CYCLE C DEFINE 376 C LAC M207 C SNA C JMP M375 630 PRINT SYMBOL(I&15+'0'); !'HEX' DIGIT C AND #17 C TAD #60 C JMS M4 631 I = I>>4 C LAC M207 C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C DAC M207 632 %REPEAT C JMP M-376 C DEFINE 375 633 PRINT SYMBOL('-') %IF X < 0 C LAC M206 C SMA C JMP M375 C LAC #55 C JMS M4 C DEFINE 375 634 %END C JMP* M205 D DEFINE 207 D LIT 0 D DEFINE 206 D LIT 0 D DEFINE 205 D LIT 0 D DAD M206 C ARG -176764 C ARG 62 C ARG 0 C BLOCK END 205 635 636 %ROUTINE PLANT NAME(%INTEGER X); !PROCEDURES, EXT SPECS C BLOCK BEGIN 0 637 %INTEGER I,J 638 %ROUTINE NEXT C BLOCK BEGIN 0 639 SPACE C JMS M6 640 J = J-1 %AND PR(DICT(I-J)) %IF J # 0 C LAC M211 C SNA C JMP M375 C TAD #-1 C DAC M211 C LAC M210 C CMA C TAD M211 C CMA C JMS M10 C LAD M67 C LAC* M3 C JMS M205 C DEFINE 375 641 %END C JMP* M212 D DEFINE 212 D LIT 0 C ARG -216764 C ARG -320714 C ARG 0 C BLOCK END 212 642 I = INDEX(X); J = I>>9&7 C LAC M207 C JMS M10 C LAD M77 C LAC* M3 C DAC M210 C DAC M2 C LAC #-11 C JMS M12 C AND #7 C DAC M211 643 PR(I&(\511)+TAGTYPE(X)&15); !SYM1+LENGTH+TYPE C LAC M210 C AND #-1000 C JMS M5 C LAC M207 C JMS M10 C LAD M76 C LAC* M3 C AND #17 C TAD* M0 C JMS M205 644 I = I&511 C LAC M210 C AND #777 C DAC M210 645 NEXT; NEXT C JMS M212 C JMS M212 646 SPACE C JMS M6 647 %END C JMP* M206 D DEFINE 211 D LIT 0 D DEFINE 210 D LIT 0 D DEFINE 207 D LIT 0 D DEFINE 206 D LIT 0 D DAD M207 C ARG -174764 C ARG -233622 C ARG -132137 C BLOCK END 206 648 649 %ROUTINE SWOP; !SWITCH SECTIONS C BLOCK BEGIN 0 650 %OWNINTEGER T D DEFINE 210 D LIT 0 651 %IF LEVEL < 0 %START C LAC M117 C SMA C JMP M375 652 %IF SECTION = 0 %START C LAC M57 C SZA C JMP M373 653 PRINT SYMBOL('('); T = X C LAC #50 C JMS M4 C LAC M72 C DAC M210 654 %FINISH %ELSE %START C JMP M374 C DEFINE 373 655 PR(T); PRINT SYMBOL(')') C LAC M210 C JMS M205 C LAC #51 C JMS M4 656 %IF GLOBAL # 0 %START; !EXTERNAL NOT PERM C LAC M70 C SNA C JMP M371 657 PLANT NAME(T); PR(T); PRINT SYMBOL('!') C LAC M210 C JMS M206 C LAC M210 C JMS M205 C LAC #41 C JMS M4 658 %FINISH C DEFINE 371 659 %FINISH C DEFINE 374 660 %FINISH %ELSE PRINT SYMBOL('/') C JMP M376 C DEFINE 375 C LAC #57 C JMS M4 C DEFINE 376 661 SECTION = SECTION!!1 C LAC M57 C XOR #1 C DAC M57 662 %END C JMP* M207 D DEFINE 207 D LIT 0 C ARG -146764 C ARG -102020 C ARG 0 C BLOCK END 207 663 664 %ROUTINE DEF(%INTEGER T); !DEFINE TAG C BLOCK BEGIN 0 665 PR(T); PRINT SYMBOL('.') C JMS M205 C LAC #56 C JMS M4 666 %RETURN %IF SECTION # 0 C LAC M57 C SZA C JMP* M210 667 ACCESS = 1; AC = \255 C LAC #1 C DAC M141 C LAC #-400 C DAC M130 668 %END C JMP* M210 D DEFINE 211 D LIT 0 D DEFINE 210 D LIT 0 D DAD M211 C ARG -336764 C ARG 4546 C ARG 0 C BLOCK END 210 669 670 %ROUTINE OP(%INTEGER OP); !OUTPUT OP-CODE C BLOCK BEGIN 0 671 PRINT SYMBOL(OP); ICOUNT = ICOUNT+1 C JMS M4 C ISZ M52 C NOP 672 %END C JMP* M211 D DEFINE 212 D LIT 0 D DEFINE 211 D LIT 0 D DAD M212 C ARG -206764 C ARG 60 C ARG 0 C BLOCK END 211 673 674 %ROUTINE PLANT(%INTEGER V); !PLANT VALUE C BLOCK BEGIN 0 675 PR(V); OP('#') C JMS M205 C LAC #43 C JMS M211 676 %END C JMP* M212 D DEFINE 213 D LIT 0 D DEFINE 212 D LIT 0 D DAD M213 C ARG -175764 C ARG -233622 C ARG 64 C BLOCK END 212 677 678 %ROUTINE PRINT(%INTEGER X) C BLOCK BEGIN 0 679 %IF PENDOPR >= 0 %START C LAC M166 C SPA C JMP M375 680 FINAL = 0 %UNLESS NEXT = LINK C LAC M157 C SAD M160 C SKP C DZM M174 681 PENDOPR = PENDOPR!!FINAL; !INVERT SKIP IF FINAL C LAC M166 C XOR M174 C DAC M166 682 %IF PENDOPR # 0 %START C SNA C JMP M373 683 PR(PENDOPR); OP(79); !OPR C JMS M205 C LAC #117 C JMS M211 684 %FINISH C DEFINE 373 685 %IF FINAL = 0 %START C LAC M174 C SZA C JMP M373 686 LABCODE = MAIN; PR(LMIN); OP(76); !JMP C LAC M171 C DAC M167 C LAC M73 C JMS M205 C LAC #114 C JMS M211 687 %FINISH C DEFINE 373 688 DEF(LTAG-1) %IF LNEST&1 # 0 C LAC M173 C AND #1 C SNA C JMP M373 C LAC #-1 C TAD M172 C JMS M210 C DEFINE 373 689 PENDOPR = -1; ACCESS = 1 C LAC #-1 C DAC M166 C LAC #1 C DAC M141 690 %FINISH C DEFINE 375 691 PR(X) C LAC M214 C JMS M205 692 %END C JMP* M213 D DEFINE 214 D LIT 0 D DEFINE 213 D LIT 0 D DAD M214 C ARG -175764 C ARG -152622 C ARG 64 C BLOCK END 213 693 694 %ROUTINE NEST C BLOCK BEGIN 0 695 PRINT(NST); OP(66); AC = \AC; !JMS NST (PRESERVES AC) C LAC #5 C JMS M213 C LAC #102 C JMS M211 C LAC M130 C CMA C DAC M130 696 %END C JMP* M214 D DEFINE 214 D LIT 0 C ARG -216764 C ARG -321414 C ARG 0 C BLOCK END 214 697 698 %ROUTINE POP C BLOCK BEGIN 0 699 OP(84); AC = 255; !LAC* T0 C LAC #124 C JMS M211 C LAC #377 C DAC M130 700 %END C JMP* M215 D DEFINE 215 D LIT 0 C ARG -176764 C ARG 5760 C ARG 0 C BLOCK END 215 701 702 %ROUTINE EXPEND; !DISCHARGE PENDING LAC C BLOCK BEGIN 0 703 %INTEGER C 704 %RETURN %IF PEND < 0 C LAC M164 C SPA C JMP* M216 705 NEST %IF AC >= 0 C LAC M130 C SMA C JMS M214 706 %UNLESS \AC = PEND %START C LAC M130 C CMA C SAD M164 C JMP M375 707 %IF PEND = 0 %START; !CONSTANT C LAC M164 C SZA C JMP M373 708 PRINT(LIT); OP(36); !LAC #LIT (PSEUDO-OP) C LAC M202 C JMS M213 C LAC #44 C JMS M211 709 %FINISH %ELSE %START C JMP M374 C DEFINE 373 710 C = LAC; C = LAD %IF PEND&256 # 0 C LAC #104 C DAC M217 C LAC M164 C AND #400 C SNA C JMP M371 C LAC #137 C DAC M217 C DEFINE 371 711 %IF LIT # 0 %START C LAC M202 C SNA C JMP M371 712 PRINT(LIT); OP(36) C JMS M213 C LAC #44 C JMS M211 713 C = TAD; C = ADA %IF PEND&256 # 0 C LAC #107 C DAC M217 C LAC M164 C AND #400 C SNA C JMP M367 C LAC #136 C DAC M217 C DEFINE 367 714 %FINISH C DEFINE 371 715 PRINT(PEND&255); OP(C) C LAC M164 C AND #377 C JMS M213 C LAC M217 C JMS M211 716 %FINISH C DEFINE 374 717 %FINISH %ELSE %START C JMP M376 C DEFINE 375 718 %IF ACLIT # LIT %START C LAC M131 C SAD M202 C JMP M373 719 %IF PEND = 0 %START C LAC M164 C SZA C JMP M371 720 PRINT(LIT); OP(36) C LAC M202 C JMS M213 C LAC #44 C JMS M211 721 %FINISH %ELSE %START C JMP M372 C DEFINE 371 722 PRINT(LIT-ACLIT); OP(39); !TAD # C LAC M202 C CMA C TAD M131 C CMA C JMS M213 C LAC #47 C JMS M211 723 %FINISH C DEFINE 372 724 %FINISH C DEFINE 373 725 %FINISH C DEFINE 376 726 AC = PEND; ACLIT = LIT; PEND = -1 C LAC M164 C DAC M130 C LAC M202 C DAC M131 C LAC #-1 C DAC M164 727 %END C JMP* M216 D DEFINE 217 D LIT 0 D DEFINE 216 D LIT 0 C ARG -325764 C ARG -71733 C ARG 5644 C BLOCK END 216 728 729 %ROUTINE LOAD(%INTEGER T); !LOAD AC C BLOCK BEGIN 0 730 EXPEND; PEND = T; LIT = 0 C JMS M216 C LAC M220 C DAC M164 C DZM M202 731 %END C JMP* M217 D DEFINE 220 D LIT 0 D DEFINE 217 D LIT 0 D DAD M220 C ARG -236764 C ARG -203634 C ARG 0 C BLOCK END 217 732 733 %ROUTINE DO(%INTEGER C); !(ADD),TAD,AND,XOR,SAD C BLOCK BEGIN 0 734 %IF PEND >= 0 %START C LAC M164 C SPA C JMP M375 735 %IF PEND = 0 %START; !CONSTANT C SZA C JMP M373 736 PRINT(LIT); OP(C-32); !PSEUDO-OP C LAC M202 C JMS M213 C LAC #-40 C TAD M221 C JMS M211 737 %FINISH %ELSE %START C JMP M374 C DEFINE 373 738 %IF LIT # 0 %START C LAC M202 C SNA C JMP M371 739 %IF C = TAD %START C LAC M221 C SAD #107 C SKP C JMP M367 740 PRINT(LIT); OP(39); !TAD #LIT (PSEUDO-OP) C LAC M202 C JMS M213 C LAC #47 C JMS M211 741 %FINISH %ELSE %START C JMP M370 C DEFINE 367 742 EXPEND; ->1 C JMS M216 C JMP M222 743 %FINISH C DEFINE 370 744 %FINISH C DEFINE 371 745 PRINT(PEND); OP(C) C LAC M164 C JMS M213 C LAC M221 C JMS M211 746 %FINISH C DEFINE 374 747 %FINISH %ELSE %START C JMP M376 C DEFINE 375 748 1: OP(C+16); !* T0 C DEFINE 222 C LAC #20 C TAD M221 C JMS M211 749 %FINISH C DEFINE 376 750 PEND = -1; AC = 255 %UNLESS C = 75; !SAD C LAC #-1 C DAC M164 C LAC M221 C SAD #113 C JMP M375 C LAC #377 C DAC M130 C DEFINE 375 751 %END C JMP* M220 D DEFINE 221 D LIT 0 D DEFINE 220 D LIT 0 D DAD M221 C ARG -336764 C ARG 57 C ARG 0 C BLOCK END 220 752 753 %ROUTINE STORE(%INTEGER T); !DEPOSIT AC C BLOCK BEGIN 0 754 %CONSTINTEGER DZM=67, ISZ=73 755 %IF PEND = 0 %AND LIT = 0 %START C LAC M164 C SZA C JMP M375 C LAC M202 C SZA C JMP M375 756 PEND = -1; AC = \255 %IF \AC = T C LAC #-1 C DAC M164 C LAC M130 C CMA C SAD M222 C SKP C JMP M373 C LAC #-400 C DAC M130 C DEFINE 373 757 FINAL = 512; PRINT(T); OP(DZM) C LAC #1000 C DAC M174 C LAC M222 C JMS M213 C LAC #103 C JMS M211 758 %FINISH %ELSE %START C JMP M376 C DEFINE 375 759 %IF PEND = T %AND LIT = 1 %AND \AC # T %START C LAC M164 C SAD M222 C SKP C JMP M373 C LAC M202 C SAD #1 C SKP C JMP M373 C LAC M130 C CMA C SAD M222 C JMP M373 760 PEND = -1 C LAC #-1 C DAC M164 761 FINAL = 512; PRINT(T); OP(ISZ) C LAC #1000 C DAC M174 C LAC M222 C JMS M213 C LAC #111 C JMS M211 762 OP(79); !NOP C LAC #117 C JMS M211 763 %FINISH %ELSE %START C JMP M374 C DEFINE 373 764 EXPEND C JMS M216 765 AC=T %AND ACLIT=0 %IF PENDOPR < 0; AC = \AC; !?? C LAC M166 C SMA C JMP M371 C LAC M222 C DAC M130 C DZM M131 C DEFINE 371 C LAC M130 C CMA C DAC M130 766 FINAL = 512; PRINT(T); OP(DAC) C LAC #1000 C DAC M174 C LAC M222 C JMS M213 C LAC #101 C JMS M211 767 %FINISH C DEFINE 374 768 %FINISH C DEFINE 376 769 %END C JMP* M221 D DEFINE 222 D LIT 0 D DEFINE 221 D LIT 0 D DAD M222 C ARG -145764 C ARG -132016 C ARG 45 C BLOCK END 221 770 771 %ROUTINE OPR(%INTEGER X); !OPERATE-GROUP C BLOCK BEGIN 0 772 EXPEND; PRINT(X); OP(79) C JMS M216 C LAC M223 C JMS M213 C LAC #117 C JMS M211 773 AC = 255 %IF X&4125 # 0 C LAC M223 C AND #10035 C SNA C JMP M375 C LAC #377 C DAC M130 C DEFINE 375 774 %END C JMP* M222 D DEFINE 223 D LIT 0 D DEFINE 222 D LIT 0 D DAD M223 C ARG -206764 C ARG 6062 C ARG 0 C BLOCK END 222 775 776 %ROUTINE NOT; !COMPLEMENT AC C BLOCK BEGIN 0 777 %IF PEND # 0 %THEN OPR(1) %ELSE LIT=\LIT C LAC M164 C SNA C JMP M375 C LAC #1 C JMS M222 C JMP M376 C DEFINE 375 C LAC M202 C CMA C DAC M202 C DEFINE 376 778 %END C JMP* M223 D DEFINE 223 D LIT 0 C ARG -216764 C ARG 5764 C ARG 0 C BLOCK END 223 779 780 %ROUTINE NEG; !NEGATE C BLOCK BEGIN 0 781 %IF PEND < 0 %START C LAC M164 C SMA C JMP M375 782 PRINT(-1); OP(39); C LAC #-1 C JMS M213 C LAC #47 C JMS M211 783 %FINISH %ELSE LIT = LIT-1 C JMP M376 C DEFINE 375 C LAC #-1 C TAD M202 C DAC M202 C DEFINE 376 784 NOT C JMS M223 785 %END C JMP* M224 D DEFINE 224 D LIT 0 C ARG -216764 C ARG 4547 C ARG 0 C BLOCK END 224 786 787 %ROUTINE CALL(%INTEGER T); !SUBROUTINE JUMP C BLOCK BEGIN 0 788 EXPEND; PRINT(T); OP(66); AC = 255; !JMS T C JMS M216 C LAC M226 C JMS M213 C LAC #102 C JMS M211 C LAC #377 C DAC M130 789 %END C JMP* M225 D DEFINE 226 D LIT 0 D DEFINE 225 D LIT 0 D DAD M226 C ARG -346764 C ARG -362324 C ARG 0 C BLOCK END 225 790 791 %ROUTINE JMSX(%INTEGER T); !SPECIAL JMS C BLOCK BEGIN 0 792 %IF PEND >= 0 %START; !SECOND PARAM SIMPLE C LAC M164 C SPA C JMP M375 793 PRINT(2); OP(DAC); AC = \AC C LAC #2 C JMS M213 C LAC #101 C JMS M211 C LAC M130 C CMA C DAC M130 794 %FINISH %ELSE %START C JMP M376 C DEFINE 375 795 STORE(1); POP; STORE(2); LOAD(1) C LAC #1 C JMS M221 C JMS M215 C LAC #2 C JMS M221 C LAC #1 C JMS M217 796 %FINISH C DEFINE 376 797 CALL(T) C LAC M227 C JMS M225 798 %END C JMP* M226 D DEFINE 227 D LIT 0 D DEFINE 226 D LIT 0 D DAD M227 C ARG -256764 C ARG -221410 C ARG 0 C BLOCK END 226 799 800 %ROUTINE JUMP(%INTEGER T); !JUMP C BLOCK BEGIN 0 801 PRINT(T); OP(76) C JMS M213 C LAC #114 C JMS M211 802 %END C JMP* M227 D DEFINE 230 D LIT 0 D DEFINE 227 D LIT 0 D DAD M230 C ARG -256764 C ARG -122220 C ARG 0 C BLOCK END 227 803 804 %ROUTINE MON(%INTEGER N); !MONITOR C BLOCK BEGIN 0 805 PRINT(MONI); OP(82); PLANT(N&255+256);!JMS* MONI: FLTNUM C LAC #4 C JMS M213 C LAC #122 C JMS M211 C LAC M231 C AND #377 C TAD #400 C JMS M212 806 AC = \255; ACCESS = 0 C LAC #-400 C DAC M130 C DZM M141 807 %END C JMP* M230 D DEFINE 231 D LIT 0 D DEFINE 230 D LIT 0 D DAD M231 C ARG -226764 C ARG 5756 C ARG 0 C BLOCK END 230 808 809 %ROUTINE AREF; !ARRAY REF C BLOCK BEGIN 0 810 CALL(AR); PRINT(X); OP(LAD) C LAC #10 C JMS M225 C LAC M72 C JMS M213 C LAC #137 C JMS M211 811 %END C JMP* M231 D DEFINE 231 D LIT 0 C ARG -366764 C ARG -153232 C ARG 0 C BLOCK END 231 812 813 %ROUTINE BAREF C BLOCK BEGIN 0 814 CALL(BAR); PRINT(X); OP(LAD) C LAC #24 C JMS M225 C LAC M72 C JMS M213 C LAC #137 C JMS M211 815 %END C JMP* M232 D DEFINE 232 D LIT 0 C ARG -355764 C ARG -361533 C ARG 46 C BLOCK END 232 816 817 %ROUTINE PLANT OWN C BLOCK BEGIN 0 818 OWNC = OWNC-1 C LAC #-1 C TAD M60 C DAC M60 819 %IF OWNC&BOWN = 0 %START C AND M163 C SZA C JMP M375 820 LIT = LIT<<9+LIT1 %IF BOWN # 0 C LAC M163 C SNA C JMP M373 C LAC M202 C DAC M2 C LAC #11 C JMS M12 C TAD M203 C DAC M202 C DEFINE 373 821 PLANT(LIT) C LAC M202 C JMS M212 822 %FINISH %ELSE LIT1 = LIT C JMP M376 C DEFINE 375 C LAC M202 C DAC M203 C DEFINE 376 823 %END C JMP* M233 D DEFINE 233 D LIT 0 C ARG -174764 C ARG -233622 C ARG -132011 C BLOCK END 233 824 825 %ROUTINE COMPILE END C BLOCK BEGIN 0 826 %INTEGER I,J,K 827 %WHILE LSTACK # 3 %CYCLE C DEFINE 376 C LAC M134 C SAD #3 C JMP M375 828 FAULT(LSTACK&1+9) C AND #1 C TAD #11 C JMS M125 829 LMIN = LMIN+2; LSTACK = LSTACK>>2 C LAC #2 C TAD M73 C DAC M73 C LAC M134 C CLA!RAR C CLA!RAR C DAC M134 830 %REPEAT C JMP M-376 C DEFINE 375 831 X = TMAX C LAC M71 C DAC M72 832 SWOP; !SELECT DATA SECTION C JMS M207 833 PLANT(0) %IF DANGER # 0 C LAC M140 C SNA C JMP M375 C LAC #0 C JMS M212 C DEFINE 375 834 I = -1 C LAC #-1 C DAC M235 835 %WHILE X # TBASE %CYCLE C DEFINE 376 C LAC M72 C SAD M132 C JMP M375 836 TTX == TT0++X; K = TTX&255 C ADA M74 C DAD M75 C LAC M75 C AND #377 C DAC M237 837 %IF K = OWN+ARRAY %START; !SWITCH C SAD #110 C SKP C JMP M373 838 J = TTX>>8 C LAC M75 C DAC M2 C LAC #-10 C JMS M12 C DAC M236 839 %IF J # 0 %START C SNA C JMP M371 840 SWOP; DEF(X); PLANT(DICT(J-1)) C JMS M207 C LAC M72 C JMS M210 C LAC #-1 C TAD M236 C JMS M10 C LAD M67 C LAC* M3 C JMS M212 841 J = DICT(J); PLANT(J) C LAC M236 C JMS M10 C LAD M67 C LAC* M3 C DAC M236 C JMS M212 842 OP(79) %AND J=J-1 %WHILE J > 0; !NOP (JMP SET BY LOAD) C DEFINE 370 C LAC M236 C SPA!SNA C JMP M367 C LAC #117 C JMS M211 C LAC #-1 C TAD M236 C DAC M236 C JMP M-370 C DEFINE 367 843 SWOP C JMS M207 844 %FINISH C DEFINE 371 845 %FINISH C DEFINE 373 846 %IF K&(EXT+OWN) = 0 %START C LAC M237 C AND #300 C SZA C JMP M373 847 %IF K = 0 %OR K&(PROC+REF) = PROC %THEN FAULT(12) %ELSE %START C LAC M237 C SNA C JMP M370 C AND #44 C SAD #4 C SKP C JMP M371 C DEFINE 370 C LAC #14 C JMS M125 C JMP M372 C DEFINE 371 848 %IF K&(REF+ARRAY+PROC) = 0 %AND DANGER = 0 %START C LAC M237 C AND #54 C SZA C JMP M367 C LAC M140 C SZA C JMP M367 849 DEF(X); !DEFINE TAG DIRECT C LAC M72 C JMS M210 850 %FINISH %ELSE %START C JMP M370 C DEFINE 367 851 DEF(-X); !DEFINE TAG INDIRECT C LAC #-1 C TAD M72 C CMA C JMS M210 852 %FINISH C DEFINE 370 853 %IF K&(REF+ARRAY+PROC) = 0 %AND DANGER # 0 %START C LAC M237 C AND #54 C SZA C JMP M367 C LAC M140 C SNA C JMP M367 854 PLANT(-1); !POINTER SLOT C LAC #-1 C JMS M212 855 %FINISH %ELSE %START C JMP M370 C DEFINE 367 856 PLANT(0) C LAC #0 C JMS M212 857 %FINISH C DEFINE 370 858 I = I-1 C LAC #-1 C TAD M235 C DAC M235 859 %FINISH C DEFINE 372 860 %FINISH C DEFINE 373 861 X = X-1 C LAC #-1 C TAD M72 C DAC M72 862 %REPEAT C JMP M-376 C DEFINE 375 863 %IF BTAG # 0 %START C LAC M120 C SNA C JMP M375 864 DEF(BTAG); PLANT(0); !ENTRY POINT C JMS M210 C LAC #0 C JMS M212 865 %IF DANGER = 0 %START C LAC M140 C SZA C JMP M373 866 %IF PMAX # TBASE %START C LAC M136 C SAD M132 C JMP M371 867 %CYCLE C DEFINE 370 868 PRINT(PMAX); OP(DAD) C LAC M136 C JMS M213 C LAC #135 C JMS M211 869 PMAX = PMAX-1 C LAC #-1 C TAD M136 C DAC M136 870 %EXIT %IF PMAX = TBASE C SAD M132 C JMP M367 871 POP C JMS M215 872 %REPEAT C JMP M-370 C DEFINE 367 873 %FINISH C DEFINE 371 874 %FINISH %ELSE %START C JMP M374 C DEFINE 373 875 J = PMAX-TBASE; J = J-1 %IF J # 0 C LAC M136 C CMA C TAD M132 C CMA C DAC M236 C SNA C JMP M371 C TAD #-1 C DAC M236 C DEFINE 371 876 CALL(ENT); !JMS ENTRY/EXIT C LAC #20 C JMS M225 877 PLANT(I); PLANT(I+J-1); !-SLOTS:-NEST C LAC M235 C JMS M212 C LAC M235 C TAD M236 C TAD #-1 C JMS M212 878 %FINISH C DEFINE 374 879 %IF BTAG#DANGER>0 %THEN GD=BTAG %ELSE BTYPE=BTYPE+EXT C LAC M120 C SAD M140 C JMP M373 C LAC M140 C SPA!SNA C JMP M373 C LAC M120 C DAC M122 C JMP M374 C DEFINE 373 C LAC #200 C TAD M121 C DAC M121 C DEFINE 374 880 %FINISH C DEFINE 375 881 SWOP; !REVERT TO INSTR SECTION C JMS M207 882 %END C JMP* M234 D DEFINE 237 D LIT 0 D DEFINE 236 D LIT 0 D DEFINE 235 D LIT 0 D DEFINE 234 D LIT 0 C ARG -344764 C ARG -202220 C ARG -262333 C BLOCK END 234 883 884 !PROCESS ANALYSIS RECORD 885 886 %ROUTINE GET NEXT C BLOCK BEGIN 0 887 %INTEGER I 888 %IF NEXT = 0 %START C LAC M157 C SZA C JMP M375 889 NEXT = REFCO(LINK)&127; LINK = SUB(LINK) C LAC M160 C JMS M10 C LAD M102 C LAC* M3 C AND #177 C DAC M157 C LAC M160 C JMS M10 C LAD M103 C LAC* M3 C DAC M160 890 %FINISH C DEFINE 375 891 %CYCLE C DEFINE 376 892 X = SUB(NEXT); TTX == TT0++X C LAC M157 C JMS M10 C LAD M103 C LAC* M3 C DAC M72 C ADA M74 C DAD M75 893 I = REFCO(NEXT); CLASS = I>>7 C LAC M157 C JMS M10 C LAD M102 C LAC* M3 C DAC M236 C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C CLA!RAR C DAC M161 894 %EXIT %IF CLASS < 112 %OR X = 0; !ATOM OR NULL PHRASE C SMA C TAD #-160 C SPA C JMP M372 C LAC M72 C SNA C DEFINE 372 C JMP M375 895 %IF I&127 # 0 %START C LAC M236 C AND #177 C SNA C JMP M373 896 SUB(NEXT) = LINK; LINK = NEXT C LAC M157 C JMS M10 C LAD M103 C LAC M160 C DAC* M3 C LAC M157 C DAC M160 897 %FINISH C DEFINE 373 898 NEXT = X C LAC M72 C DAC M157 899 %REPEAT C JMP M-376 C DEFINE 375 900 NEXT = I&127 C LAC M236 C AND #177 C DAC M157 901 %END C JMP* M235 D DEFINE 236 D LIT 0 D DEFINE 235 D LIT 0 C ARG -305764 C ARG -321322 C ARG -320714 C BLOCK END 235 902 903 PEND = -1; LIT = 0 C LAC #-1 C DAC M164 C DZM M202 904 LABCODE = 0; ELSE = 0; PENDOPR = -1 C DZM M167 C DZM M170 C LAC #-1 C DAC M166 905 %STOP %IF AC >= 0 C LAC M130 C SPA C JMP M375 C JMS* M4 C LIT 500 C DEFINE 375 906 NEXT = SS; LINK = 0 C LAC M100 C DAC M157 C DZM M160 907 FAULT(16) %IF SSTYPE = 0 %AND ACCESS = 0 C LAC M56 C SZA C JMP M375 C LAC M141 C SZA C JMP M375 C LAC #20 C JMS M125 C DEFINE 375 908 1: GET NEXT C DEFINE 236 C JMS M235 909 2: ->C(X) %IF CLASS <= 31; !OPERATORS,SIMP C DEFINE 237 C LAC M161 C SMA C TAD #-37 C SMA!SZA C JMP M375 C LAC M72 C JMS M10 C LAD M204 C XCT* M3 C JMS* M4 C LIT 607 C DEFINE 375 910 ->C(CLASS) C LAC M161 C JMS M10 C LAD M204 C XCT* M3 C JMS* M4 C LIT 607 911 9: ->1 %IF NEXT # LINK C DEFINE 240 C LAC M157 C SAD M160 C SKP C JMP M236 912 10: %RETURN %IF LABCODE = 0 C DEFINE 241 C LAC M167 C SNA C JMP* M127 913 11: JUMP(-(LMIN+1)) %AND ACCESS=0 %IF LABCODE&1=0; !JUMP BACK FOR LOOPS C DEFINE 242 C LAC M167 C AND #1 C SZA C JMP M375 C LAC M73 C CMA C JMS M227 C DZM M141 C DEFINE 375 914 %RETURN %IF LABCODE = 0 C LAC M167 C SNA C JMP* M127 915 DEF(LMIN) %UNLESS LABCODE = 3 C SAD #3 C JMP M375 C LAC M73 C JMS M210 C DEFINE 375 916 DEF(LMIN+1) %IF ELSE # 0; !PICKUP POINT FOR ELSE C LAC M170 C SNA C JMP M375 C LAC #1 C TAD M73 C JMS M210 C DEFINE 375 917 %RETURN C JMP* M127 918 919 920 !COMPILE DECLARATIONS 921 %INTEGERFN SIZE C BLOCK BEGIN 0 922 %INTEGER I 923 I = LIT-LIT1+1 C LAC M202 C CMA C TAD M203 C CMA C TAD #1 C DAC M244 924 %IF I <= 0 %OR I > 4095 %START C SPA!SNA C JMP M374 C SMA C TAD #-7777 C SPA!SNA C JMP M375 C DEFINE 374 925 FAULT(13); I = 200 C LAC #15 C JMS M125 C LAC #310 C DAC M244 926 %FINISH C DEFINE 375 927 %RESULT = I C LAC M244 C JMP* M243 928 %END D DEFINE 244 D LIT 0 D DEFINE 243 D LIT 0 C ARG -146773 C ARG -260533 C ARG 0 C BLOCK END 243 929 930 %ROUTINE SAVE(%INTEGER V) C BLOCK BEGIN 0 931 DMAX = DMAX+1; DICT(DMAX) = V C ISZ M65 C NOP C LAC M65 C JMS M10 C LAD M67 C LAC M245 C DAC* M3 932 %END C JMP* M244 D DEFINE 245 D LIT 0 D DEFINE 244 D LIT 0 D DAD M245 C ARG -146764 C ARG -361133 C ARG 0 C BLOCK END 244 933 934 C(70): !IDENT C ARG 107 C DEFINE 204 935 %IF TTX&OWN = 0 %START C LAC M75 C AND #100 C SZA C JMP M375 936 ->811 %IF TTX&EXT # 0 C LAC M75 C AND #200 C SZA C JMP M245 937 ->9 %IF TTX&(REF+ARRAY) # ARRAY; !SCALAR C LAC M75 C AND #50 C SAD #10 C SKP C JMP M240 938 %IF TTX&2 # 0 %START; !BYTE C LAC M75 C AND #2 C SNA C JMP M373 939 PRINT(3); OP(67); !DZM T3 (AS INDIC) C LAC #3 C JMS M213 C LAC #103 C JMS M211 940 %FINISH C DEFINE 373 941 %IF AC >= 0 %START; !FIRST IN GROUP C LAC M130 C SPA C JMP M373 942 FAULT(17) %IF LSTACK # 3 C LAC M134 C SAD #3 C JMP M371 C LAC #21 C JMS M125 C DEFINE 371 943 JMSX(ADEC); !JMS ADEC C LAC #11 C JMS M226 944 %FINISH %ELSE %START; !BOUNDS ALREADY SET C JMP M374 C DEFINE 373 945 LOAD(1); CALL(ADEC); !LAC T1:JMS ADEC C LAC #1 C JMS M217 C LAC #11 C JMS M225 946 %FINISH C DEFINE 374 947 ATAG = X; PRINT(ATAG); OP(DAD) C LAC M72 C DAC M137 C JMS M213 C LAC #135 C JMS M211 948 AC = \255 C LAC #-400 C DAC M130 949 ->9 C JMP M240 950 %FINISH C DEFINE 375 951 OWNC = 0; PEND = -1 C DZM M60 C LAC #-1 C DAC M164 952 %IF TTX&3 = 0 %START; !SWITCH C LAC M75 C AND #3 C SZA C JMP M375 953 SAVE(-LIT) C LAC #-1 C TAD M202 C CMA C JMS M244 954 SAVE(SIZE) C JMS M243 C JMS M244 955 701: TTX = DMAX<<8+TTX C DEFINE 246 C LAC M65 C DAC M2 C LAC #10 C JMS M12 C TAD M75 C DAC M75 956 ->9 C JMP M240 957 %FINISH C DEFINE 375 958 %IF TTX&EXT # 0 %START; !CONST C LAC M75 C AND #200 C SNA C JMP M375 959 SAVE(LIT) C LAC M202 C JMS M244 960 ->701 C JMP M246 961 %FINISH C DEFINE 375 962 SWOP %IF SECTION = 0 C LAC M57 C SNA C JMS M207 963 X = -X %IF TTX&REF # 0 C LAC M75 C AND #40 C SNA C JMP M375 C LAC #-1 C TAD M72 C CMA C DAC M72 C DEFINE 375 964 DEF(X) C LAC M72 C JMS M210 965 %IF TTX&(REF+ARRAY) # ARRAY %START C LAC M75 C AND #50 C SAD #10 C JMP M375 966 PLANT(LIT) C LAC M202 C JMS M212 967 SWOP %IF LEVEL < 0 C LAC M117 C SPA C JMS M207 968 ->9 C JMP M240 969 %FINISH C DEFINE 375 970 PLANT(-LIT) C LAC #-1 C TAD M202 C CMA C JMS M212 971 OWNC = SIZE; PLANT(OWNC) C JMS M243 C DAC M60 C JMS M212 972 LIT = 0; BOWN = 0 C DZM M202 C DZM M163 973 ->9 %IF TTX&2 = 0 C LAC M75 C AND #2 C SNA C JMP M240 974 BOWN = 1; OWNC = OWNC&1+OWNC C LAC #1 C DAC M163 C LAC M60 C AND #1 C TAD M60 C DAC M60 975 ->9 C JMP M240 976 C(108): !CONST BOUND SEP (COLON) C ARG 155 C DEFINE 204 977 LIT1 = LIT; PEND = -1 C LAC M202 C DAC M203 C LAC #-1 C DAC M164 978 ->9 C JMP M240 979 C(109): !OWNSEP (COMMA) C ARG 156 C DEFINE 204 980 PLANT OWN %IF OWNC > 0 C LAC M60 C SMA!SZA C JMS M233 981 LIT = 0; PEND = -1 C DZM M202 C LAC #-1 C DAC M164 982 ->9 C JMP M240 983 C(110): !OWNT (T) C ARG 157 C DEFINE 204 984 PLANT OWN %AND LIT = 0 %WHILE OWNC > 0 C DEFINE 376 C LAC M60 C SPA!SNA C JMP M375 C JMS M233 C DZM M202 C JMP M-376 C DEFINE 375 985 SWOP %IF SECTION # 0; !REVERT TO INSTR SECTION C LAC M57 C SZA C JMS M207 986 %RETURN C JMP* M127 987 C(81): !PROCEDURE IDENT C ARG 122 C DEFINE 204 988 %IF TTX&(EXT+BODY) = 0 %START; !INTERNAL SPEC C LAC M75 C AND #300 C SZA C JMP M375 989 TTX = TTX+EXT %IF GLOBAL = 0; !PERM C LAC M70 C SZA C JMP M373 C LAC #200 C TAD M75 C DAC M75 C DEFINE 373 990 %RETURN C JMP* M127 991 %FINISH C DEFINE 375 992 811:PRINT SYMBOL('('); !BODY OR EXT SPEC C DEFINE 245 C LAC #50 C JMS M4 993 ->9 %IF TTX&BODY # 0; !BODY C LAC M75 C AND #100 C SZA C JMP M240 994 PLANT NAME(X) C LAC M72 C JMS M206 995 PRINT(X); PRINT SYMBOL(',') C LAC M72 C JMS M213 C LAC #54 C JMS M4 996 PRINT SYMBOL(')') C LAC #51 C JMS M4 997 ->9 C JMP M240 998 999 !COMPILE BEGIN,END 1000 C(57): !ENDOFPRIM C ARG 72 C DEFINE 204 1001 TBASE = TMAX C LAC M71 C DAC M132 1002 %RETURN C JMP* M127 1003 C(58): !ENDOFPERM C ARG 73 C DEFINE 204 1004 GLOBAL = TBASE; TBASE = TMAX C LAC M132 C DAC M70 C LAC M71 C DAC M132 1005 LINE = 1; LINES = 0; ICOUNT = 0 C LAC #1 C DAC M50 C DZM M51 C DZM M52 1006 CLOSE OUTPUT C JMS M5 1007 %RETURN C JMP* M127 1008 C(55): !BEGIN C ARG 70 C DEFINE 204 1009 %IF LEVEL < 0 %START; !MAIN BEGIN C LAC M117 C SMA C JMP M375 1010 SSTYPE = 0; ACCESS = 1; LEVEL = 0 C DZM M56 C LAC #1 C DAC M141 C DZM M117 1011 PRINT SYMBOL('!'); !ENTRY-POINT C LAC #41 C JMS M4 1012 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1013 TMAX = TMAX+1; X = TMAX; !TREAT AS ROUTINE C ISZ M71 C NOP C LAC M71 C DAC M72 1014 TAGTYPE(X) = BEG; INDEX(X) = 0 C JMS M10 C LAD M76 C LAC #154 C DAC* M3 C LAC M72 C JMS M10 C LAD M77 C LAC #0 C DAC* M3 1015 CALL(X); AC = \255 C LAC M72 C JMS M225 C LAC #-400 C DAC M130 1016 PRINT SYMBOL('(') C LAC #50 C JMS M4 1017 %FINISH C DEFINE 376 1018 %RETURN C JMP* M127 1019 C(56): !END C ARG 71 C DEFINE 204 1020 %IF BTAG = 0 %START; !MAIN PROGRAM C LAC M120 C SZA C JMP M375 1021 FAULT(5); SSTYPE = 0 C LAC #5 C JMS M125 C DZM M56 1022 %RETURN C JMP* M127 1023 %FINISH C DEFINE 375 1024 %IF ACCESS # 0 %START C LAC M141 C SNA C JMP M375 1025 FAULT(11) %IF ACCESS > 0 %AND BTYPE&15 # 12 %AND GLOBAL # 0 C SPA!SNA C JMP M373 C LAC M121 C AND #17 C SAD #14 C JMP M373 C LAC M70 C SNA C JMP M373 C LAC #13 C JMS M125 C DEFINE 373 1026 PRINT(BTAG); OP(92); !JMP* BTAG C LAC M120 C JMS M213 C LAC #134 C JMS M211 1027 %FINISH C DEFINE 375 1028 DANGER = -ATAG %IF DANGER = 0 C LAC M140 C SZA C JMP M375 C LAC #-1 C TAD M137 C CMA C DAC M140 C DEFINE 375 1029 COMPILE END C JMS M234 1030 PLANT NAME(TBASE) %IF GLOBAL # 0; !NAME UNLESS PERM C LAC M70 C SNA C JMP M375 C LAC M132 C JMS M206 C DEFINE 375 1031 PRINT(TBASE); PRINT SYMBOL(')') C LAC M132 C JMS M213 C LAC #51 C JMS M4 1032 %RETURN %IF EXTIND = 0 C LAC M142 C SNA C JMP* M127 1033 FAULT(15) %UNLESS LEVEL = 0 C LAC M117 C SNA C JMP M375 C LAC #17 C JMS M125 C DEFINE 375 1034 PLANT NAME(TBASE); PR(TBASE); PRINT SYMBOL('!') C LAC M132 C JMS M206 C LAC M132 C JMS M205 C LAC #41 C JMS M4 1035 %RETURN C JMP* M127 1036 C(59): !ENDOFPROGRAM, ENDOFFILE C ARG 74 C DEFINE 204 1037 MON(0) %IF ACCESS # 0 C LAC M141 C SNA C JMP M375 C LAC #0 C JMS M230 C DEFINE 375 1038 DANGER = 0 C DZM M140 1039 COMPILE END %UNLESS LEVEL < 0 C LAC M117 C SMA C JMS M234 1040 PRINT SYMBOL(')'); !END OF BLOCK C LAC #51 C JMS M4 1041 %RETURN %IF BTAG = 0 C LAC M120 C SNA C JMP* M127 1042 FAULT(8); !MISSING END C LAC #10 C JMS M125 1043 %MONITOR 192 C JMS* M4 C LIT 700 1044 1045 !COMPILE LOOPS AND CONDITIONS 1046 !LSTACK, ESTACK AND LNEST ARE SINGLE-WORD NESTS 1047 !LSTACK (2 BITS) KEEPS TRACK OF STATEMENT BRACKETS 1048 !ESTACK (1 BIT) KEEPS TRACK OF ELSE JUMPS 1049 !LNEST (3 BITS) DEALS WITH INTERNAL STRUCTURE OF COND STATEMENTS 1050 !SIGNIFICANCE OF LSTACK VALUES: 1051 ! 00 CYCLE 1052 ! 01 IF,UNLESS 1053 ! 10 FOR,WHILE,UNTIL 1054 ! 11 ELSE 1055 !SIGNIFICANCE OF LNEST VALUES: 1056 ! 000 AND AFTER AND,IF 1057 ! 001 AS ABOVE + DISCONTINUITY 1058 ! 010 OR AFTER OR,UNLESS 1059 ! 011 AS ABOVE + DISCONTINUITY 1060 ! 100 IF / WHILE / AND AFTER OR,UNLESS 1061 ! 101 AS ABOVE + DISCONTINUITY 1062 ! 110 UNLESS / OR AFTER AND,IF 1063 ! 111 UNTIL / AS ABOVE + DISCONTINUITY 1064 1065 %ROUTINE POP LABEL(%INTEGER IND) C BLOCK BEGIN 0 1066 FAULT(IND+6) %AND %RETURN %IF LSTACK=3 %OR LSTACK&1 # IND C LAC M134 C SAD #3 C JMP M374 C AND #1 C SAD M250 C JMP M375 C DEFINE 374 C LAC #6 C TAD M250 C JMS M125 C JMP* M247 C DEFINE 375 1067 LABCODE = LSTACK&3; ELSE = ESTACK&1 C LAC M134 C AND #3 C DAC M167 C LAC M135 C AND #1 C DAC M170 1068 LSTACK = LSTACK>>2; ESTACK = ESTACK>>1 C LAC M134 C CLA!RAR C CLA!RAR C DAC M134 C LAC M135 C CLA!RAR C DAC M135 1069 LMIN = LMIN+2 C LAC #2 C TAD M73 C DAC M73 1070 %END C JMP* M247 D DEFINE 250 D LIT 0 D DEFINE 247 D LIT 0 D DAD M250 C ARG -174764 C ARG -201724 C ARG -363533 C BLOCK END 247 1071 1072 !COMPILE FOR LOOP 1073 ! ORDER = (START) CONTROL (INC) CSEP1 (END) CSEP2 (CYCLE,IMP) 1074 C(107): !CONTROL VARIABLE C ARG 154 C DEFINE 204 1075 CONTROL = X C LAC M72 C DAC M175 1076 PEND1 = PEND; LIT1 = LIT; !START VALUE C LAC M164 C DAC M165 C LAC M202 C DAC M203 1077 PEND = -1 C LAC #-1 C DAC M164 1078 ->9 C JMP M240 1079 1080 %ROUTINE SET(%INTEGERNAME W) C BLOCK BEGIN 0 1081 %IF PEND # 0 %START C LAC M164 C SNA C JMP M375 1082 TMAX = TMAX+1; W = TMAX C ISZ M71 C NOP C LAC M71 C DAC M251 1083 TAGTYPE(W) = 1; INDEX(W) = 0; !DECLARE WL (INTEGER=1) C JMS M10 C LAD M76 C LAC #1 C DAC* M3 C LAC M251 C JMS M10 C LAD M77 C LAC #0 C DAC* M3 1084 STORE(W); LIT = 0 C LAC M251 C JMS M221 C DZM M202 1085 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1086 W = 0; PEND = -1 C DZM M251 C LAC #-1 C DAC M164 1087 %FINISH C DEFINE 376 1088 %END C JMP* M250 D DEFINE -251 D LIT 0 D DEFINE 250 D LIT 0 D DAD M251 C ARG -146764 C ARG 4564 C ARG 0 C BLOCK END 250 1089 C(105): !CSEP1 C ARG 152 C DEFINE 204 1090 SET(INC); ILIT = LIT C LAD M176 C JMS M250 C LAC M202 C DAC M200 1091 ->9 C JMP M240 1092 C(106): !CSEP2 C ARG 153 C DEFINE 204 1093 SET(END); ELIT = LIT; !END VALUE C LAD M177 C JMS M250 C LAC M202 C DAC M201 1094 LOAD(INC); LIT = ILIT; !LAC INC C LAC M176 C JMS M217 C LAC M200 C DAC M202 1095 NEG C JMS M224 1096 %IF PEND1 < 0 %START C LAC M165 C SMA C JMP M375 1097 POP %IF AC < 0; DO(TAD) C LAC M130 C SPA C JMS M215 C LAC #107 C JMS M220 1098 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1099 %IF PEND # 0 %START C LAC M164 C SNA C JMP M373 1100 LOAD(PEND1); LIT = LIT1; DO(TAD) C LAC M165 C JMS M217 C LAC M203 C DAC M202 C LAC #107 C JMS M220 1101 %FINISH %ELSE %START C JMP M374 C DEFINE 373 1102 PEND = PEND1; LIT = LIT+LIT1 C LAC M165 C DAC M164 C LAC M202 C TAD M203 C DAC M202 1103 %FINISH C DEFINE 374 1104 %FINISH C DEFINE 376 1105 STORE(CONTROL); != START-INC C LAC M175 C JMS M221 1106 DEF(LMIN+1); !LAB FOR JUMP BACK C LAC #1 C TAD M73 C JMS M210 1107 LOAD(CONTROL); !LAC CONTROL C LAC M175 C JMS M217 1108 LOAD(END); LIT = ELIT; DO(75); !SAD END C LAC M177 C JMS M217 C LAC M201 C DAC M202 C LAC #113 C JMS M220 1109 JUMP(LMIN); !JMP (NEXT INSTR) C LAC M73 C JMS M227 1110 LOAD(INC); LIT = ILIT; DO(TAD); !TAD INC C LAC M176 C JMS M217 C LAC M200 C DAC M202 C LAC #107 C JMS M220 1111 STORE(CONTROL); !DAC CONTROL C LAC M175 C JMS M221 1112 LABCODE = 2 C LAC #2 C DAC M167 1113 ->9 C JMP M240 1114 C(51): !REPEAT C ARG 64 C DEFINE 204 1115 POP LABEL(0) C LAC #0 C JMS M247 1116 ->11 C JMP M242 1117 1118 !COMPILE CONDITIONS 1119 !STAT ORDER = CWORD COND IMP, CWORD COND START' 1120 ! CWORD COND IMP ELSE IMP, CWORD COND IMP ELSE START 1121 !COND ORDER = AND C1 C2, OR C1 C2, NOT C1 1122 !SCOND ORDER = EXP1 EXP2 COP, EXP1 EXP2 COP EXP3 COP 1123 C(53):!LWORD: WHILE(20), UNTIL(23) C ARG 66 C DEFINE 204 1124 JUMP(LMIN-1) %IF X&1 # 0; !UNTIL - JUMP OVER TEST C LAC M72 C AND #1 C SNA C JMP M375 C LAC #-1 C TAD M73 C JMS M227 C DEFINE 375 1125 DEF(LMIN+1); !LABEL FOR LOOPING C LAC #1 C TAD M73 C JMS M210 1126 C(52): !CWORD: IF(12), UNLESS(14) C ARG 65 C DEFINE 204 1127 LABCODE = 0; MAIN = X>>3; LNEST = X&7 C DZM M167 C LAC M72 C CLA!RAR C CLA!RAR C CLA!RAR C DAC M171 C LAC M72 C AND #7 C DAC M173 1128 LTAG = LMIN C LAC M73 C DAC M172 1129 ->9 C JMP M240 1130 1131 %ROUTINE PUSH(%INTEGER ANDOR) C BLOCK BEGIN 0 1132 %IF LNEST&2 # ANDOR %START C LAC M173 C AND #2 C SAD M252 C JMP M375 1133 ANDOR = ANDOR+4; LNEST = LNEST!1 C LAC #4 C TAD M252 C DAC M252 C LAC M173 C DAC M2 C LAC #1 C JMS M13 C DAC M173 1134 %FINISH C DEFINE 375 1135 LTAG = LTAG-1 %IF LNEST&1 # 0 C LAC M173 C AND #1 C SNA C JMP M375 C LAC #-1 C TAD M172 C DAC M172 C DEFINE 375 1136 LNEST = LNEST<<3+ANDOR C LAC M173 C CLA!RAL C CLA!RAL C CLA!RAL C TAD M252 C DAC M173 1137 %END C JMP* M251 D DEFINE 252 D LIT 0 D DEFINE 251 D LIT 0 D DAD M252 C ARG -176764 C ARG -121430 C ARG 0 C BLOCK END 251 1138 1139 C(42): !AND C ARG 53 C DEFINE 204 1140 PUSH(0) C LAC #0 C JMS M251 1141 ->9 C JMP M240 1142 C(43): !OR C ARG 54 C DEFINE 204 1143 PUSH(2) C LAC #2 C JMS M251 1144 ->9 C JMP M240 1145 C(44): !NOT C ARG 55 C DEFINE 204 1146 LNEST = LNEST!!2 C LAC M173 C XOR #2 C DAC M173 1147 ->9 C JMP M240 1148 1149 C(45): !COP: <(64), =(128), <=(192), >=(576), #(640), >(704) C ARG 56 C DEFINE 204 1150 PUSH(0) %IF NEXT # 0; !DOUBLE-SIDED C LAC M157 C SNA C JMP M375 C LAC #0 C JMS M251 C DEFINE 375 1151 %IF PEND = 0 %AND LIT = 0 %START; !COMPARISON WITH ZERO C LAC M164 C SZA C JMP M375 C LAC M202 C SZA C JMP M375 1152 PEND = -1 C LAC #-1 C DAC M164 1153 X = X+4096 %IF NEXT # 0; !+CLA IF DOUBLE C LAC M157 C SNA C JMP M373 C LAC #10000 C TAD M72 C DAC M72 C DEFINE 373 1154 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1155 K = PEND C LAC M164 C DAC M156 1156 %IF X&64 # 0 %START; !<,<=,>=,> C LAC M72 C AND #100 C SNA C JMP M373 1157 %IF PEND=0 %AND LIT>0 %AND NEXT=0 %START C LAC M164 C SZA C JMP M371 C LAC M202 C SPA!SNA C JMP M371 C LAC M157 C SZA C JMP M371 1158 PRINT(64); OP(79); !SMA C LAC #100 C JMS M213 C LAC #117 C JMS M211 1159 NEG; DO(TAD) C JMS M224 C LAC #107 C JMS M220 1160 %FINISH %ELSE %START C JMP M372 C DEFINE 371 1161 %IF X&128 # 0 %START; !<=,> C LAC M72 C AND #200 C SNA C JMP M367 1162 JMSX(LE); X = X!!448; !SZL,SNL C LAC #6 C JMS M226 C LAC M72 C XOR #700 C DAC M72 1163 %FINISH %ELSE %START C JMP M370 C DEFINE 367 1164 JMSX(GE); X = X!!832; !SZL,SNL C LAC #7 C JMS M226 C LAC M72 C XOR #1500 C DAC M72 1165 %FINISH C DEFINE 370 1166 AC = K %IF K >= 0; !ACLIT STILL SET C LAC M156 C SMA C DAC M130 1167 %FINISH C DEFINE 372 1168 %FINISH %ELSE %START; !=,# C JMP M374 C DEFINE 373 1169 DO(75); !SAD C LAC #113 C JMS M220 1170 %IF X = 640 %START; !# C LAC M72 C SAD #1200 C SKP C JMP M371 1171 %IF K >= 0 %AND NEXT # 0 %START C LAC M156 C SPA C JMP M367 C LAC M157 C SNA C JMP M367 1172 PEND = K; AC = \255 C LAC M156 C DAC M164 C LAC #-400 C DAC M130 1173 %FINISH C DEFINE 367 1174 X = 0 C DZM M72 1175 %FINISH %ELSE X = 512; !SKP C JMP M372 C DEFINE 371 C LAC #1000 C DAC M72 C DEFINE 372 1176 %FINISH C DEFINE 374 1177 %FINISH C DEFINE 376 1178 CONDSKIP: C DEFINE 252 1179 X = X!!512 %IF LNEST&2 # 0; !INVERT C LAC M173 C AND #2 C SNA C JMP M375 C LAC M72 C XOR #1000 C DAC M72 C DEFINE 375 1180 %IF LNEST&(\7) # 0 %OR MAIN = 2 %START C LAC M173 C AND #-10 C SZA C JMP M374 C LAC M171 C SAD #2 C SKP C JMP M375 C DEFINE 374 1181 OPR(X) %UNLESS X = 0 C LAC M72 C SZA C JMS M222 1182 AC = \AC %UNLESS NEXT # 0 C LAC M157 C SZA C JMP M373 C LAC M130 C CMA C DAC M130 C DEFINE 373 1183 I = LTAG; J = LNEST C LAC M172 C DAC M154 C LAC M173 C DAC M155 1184 %WHILE J&4 = 0 %CYCLE C DEFINE 374 C LAC M155 C AND #4 C SZA C JMP M373 1185 J = J>>3; I = J&1+I C LAC M155 C CLA!RAR C CLA!RAR C CLA!RAR C DAC M155 C AND #1 C TAD M154 C DAC M154 1186 %REPEAT C JMP M-374 C DEFINE 373 1187 JUMP(I); LABCODE = MAIN %IF I = LMIN C LAC M154 C JMS M227 C LAC M154 C SAD M73 C SKP C JMP M373 C LAC M171 C DAC M167 C DEFINE 373 1188 DEF(LTAG-1) %IF LNEST&1 # 0 C LAC M173 C AND #1 C SNA C JMP M373 C LAC #-1 C TAD M172 C JMS M210 C DEFINE 373 1189 LNEST = LNEST>>3 C LAC M173 C CLA!RAR C CLA!RAR C CLA!RAR C DAC M173 1190 LTAG = LNEST&1+LTAG C AND #1 C TAD M172 C DAC M172 1191 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1192 PENDOPR = X; FINAL = 0 C LAC M72 C DAC M166 C DZM M174 1193 AC = \AC; AC = \255 %IF LNEST&1 # 0 C LAC M130 C CMA C DAC M130 C LAC M173 C AND #1 C SNA C JMP M373 C LAC #-400 C DAC M130 C DEFINE 373 1194 %FINISH C DEFINE 376 1195 ->9 C JMP M240 1196 1197 !COMPILE START, FINISH, ELSE, EXIT 1198 C(49):C(50): !START, CYCLE C ARG 62 C DEFINE 204 C ARG 63 C DEFINE 204 1199 PRINT(0) %IF PENDOPR >= 0; !DISCHARGE PENDING SKIP C LAC M166 C SPA C JMP M375 C LAC #0 C JMS M213 C DEFINE 375 1200 DEF(LMIN+1) %IF LABCODE = 0; !INDEFINITE CYCLE C LAC M167 C SZA C JMP M375 C LAC #1 C TAD M73 C JMS M210 C DEFINE 375 1201 %MONITOR 21 %IF LSTACK < 0 C LAC M134 C SMA C JMP M375 C JMS* M4 C LIT 425 C DEFINE 375 1202 LSTACK = LSTACK<<2+LABCODE C LAC M134 C CLA!RAL C CLA!RAL C TAD M167 C DAC M134 1203 ESTACK = ESTACK<<1+ELSE C LAC M135 C CLA!RAL C TAD M170 C DAC M135 1204 LMIN = LMIN-2 C LAC #-2 C TAD M73 C DAC M73 1205 %RETURN C JMP* M127 1206 C(46): !FINISH C ARG 57 C DEFINE 204 1207 POP LABEL(1) C LAC #1 C JMS M247 1208 ->9 C JMP M240 1209 C(47): !FINISH ELSE C ARG 60 C DEFINE 204 1210 POP LABEL(1) C LAC #1 C JMS M247 1211 FAULT(15) %IF LABCODE = 3 C LAC M167 C SAD #3 C SKP C JMP M375 C LAC #17 C JMS M125 C DEFINE 375 1212 C(48): !ELSE C ARG 61 C DEFINE 204 1213 %IF ACCESS # 0 %START C LAC M141 C SNA C JMP M375 1214 JUMP(LMIN+1); ELSE = 1 C LAC #1 C TAD M73 C JMS M227 C LAC #1 C DAC M170 1215 %FINISH C DEFINE 375 1216 LABCODE = 3; DEF(LMIN) C LAC #3 C DAC M167 C LAC M73 C JMS M210 1217 ->9 C JMP M240 1218 C(20): !EXIT C ARG 25 C DEFINE 204 1219 J = LMIN+2; K = 1 C LAC #2 C TAD M73 C DAC M155 C LAC #1 C DAC M156 1220 J = J+2 %AND K = K<<2 %WHILE K&LSTACK # 0 C DEFINE 376 C LAC M156 C AND M134 C SNA C JMP M375 C LAC #2 C TAD M155 C DAC M155 C LAC M156 C CLA!RAL C CLA!RAL C DAC M156 C JMP M-376 C DEFINE 375 1221 FAULT(15) %AND K=0 %IF (-K)&LSTACK = 0 C LAC #-1 C TAD M156 C CMA C AND M134 C SZA C JMP M375 C LAC #17 C JMS M125 C DZM M156 C DEFINE 375 1222 ACCESS = 0; FINAL = 512 C DZM M141 C LAC #1000 C DAC M174 1223 JUMP(J); LSTACK = K<<1!LSTACK C LAC M155 C JMS M227 C LAC M156 C CLA!RAL C DAC M2 C LAC M134 C JMS M13 C DAC M134 1224 ->9 C JMP M240 1225 1226 !COMPILE LABELS AND JUMPS 1227 C(80): !LAB C ARG 121 C DEFINE 204 1228 FAULT(17) %IF X < ATAG C LAC M72 C DAC M2 C LAC M137 C JMS M7 C SZL C JMP M375 C LAC #21 C JMS M125 C DEFINE 375 1229 DEF(X) C LAC M72 C JMS M210 1230 %RETURN C JMP* M127 1231 C(64): !L C ARG 101 C DEFINE 204 1232 ACCESS = 0; FINAL = 512; JUMP(X) C DZM M141 C LAC #1000 C DAC M174 C LAC M72 C JMS M227 1233 ->9 C JMP M240 1234 C(82): !SLAB C ARG 123 C DEFINE 204 1235 I = TTX>>8; %RETURN %IF I = 0; !POINTER TO BOUNDS C LAC M75 C DAC M2 C LAC #-10 C JMS M12 C DAC M154 C SNA C JMP* M127 1236 LIT = DICT(I-1)+LIT; !INDEX - UPPER C TAD #-1 C JMS M10 C LAD M67 C LAC* M3 C TAD M202 C DAC M202 1237 %IF LIT <= 0 %START C SMA!SZA C JMP M375 1238 LIT = DICT(I)+LIT; !+ NUMBER C LAC M154 C JMS M10 C LAD M67 C LAC* M3 C TAD M202 C DAC M202 1239 %IF LIT > 0 %START C SPA!SNA C JMP M373 1240 PRINT(LIT+1); SPACE; DEF(X) C TAD #1 C JMS M213 C JMS M6 C LAC M72 C JMS M210 1241 %RETURN C JMP* M127 1242 %FINISH C DEFINE 373 1243 %FINISH C DEFINE 375 1244 FAULT(14) C LAC #16 C JMS M125 1245 %RETURN C JMP* M127 1246 C(72): !SNAME C ARG 111 C DEFINE 204 1247 AREF C JMS M231 1248 PRINT(3); OP(88); MON(135); !XCT* T3:MON 7+128 C LAC #3 C JMS M213 C LAC #130 C JMS M211 C LAC #207 C JMS M230 1249 ->10 C JMP M241 1250 1251 !COMPILE PROCEDURE EXITS 1252 C(16): !RETURN C ARG 21 C DEFINE 204 1253 I = 12; !SHOULD BE ROUTINE C LAC #14 C DAC M154 1254 PEX:FAULT(15) %IF BTYPE&15 # I C DEFINE 253 C LAC M121 C AND #17 C SAD M154 C JMP M375 C LAC #17 C JMS M125 C DEFINE 375 1255 ACCESS = 0; FINAL = 512 C DZM M141 C LAC #1000 C DAC M174 1256 PRINT(BTAG); OP(92); !JMP* BTAG C LAC M120 C JMS M213 C LAC #134 C JMS M211 1257 ->9 C JMP M240 1258 C(17): !TRUE C ARG 22 C DEFINE 204 1259 OPR(2050); !STL C LAC #4002 C JMS M222 1260 171:I = 4; !SHOULD BE PRED C DEFINE 254 C LAC #4 C DAC M154 1261 ->PEX C JMP M253 1262 C(18): !FALSE C ARG 23 C DEFINE 204 1263 OPR(2048); !CLL C LAC #4000 C JMS M222 1264 ->171 C JMP M254 1265 C(35): !FRESULT C ARG 44 C DEFINE 204 1266 1267 I = BTYPE&3+4; !SHOULD BE FN C LAC M121 C AND #3 C TAD #4 C DAC M154 1268 J = AC; K = ACLIT; EXPEND C LAC M130 C DAC M155 C LAC M131 C DAC M156 C JMS M216 1269 AC = J; AC = \255 %IF AC >= 0; ACLIT = K C LAC M155 C DAC M130 C SPA C JMP M375 C LAC #-400 C DAC M130 C DEFINE 375 C LAC M156 C DAC M131 1270 ->PEX C JMP M253 1271 C(34): !MRESULT C ARG 43 C DEFINE 204 1272 I = BTYPE&3+12; !SHOULD BE MAP C LAC M121 C AND #3 C TAD #14 C DAC M154 1273 STORE(3) C LAC #3 C JMS M221 1274 ->PEX C JMP M253 1275 1276 !COMPILE STOP, FAULT, MONITOR, ETC 1277 C(19): !STOP C ARG 24 C DEFINE 204 1278 MON(64) C LAC #100 C JMS M230 1279 ->9 C JMP M240 1280 C(36): !FAULT C ARG 45 C DEFINE 204 1281 FAULT(15) %IF BTAG # 0; !SHOULD BE MAIN PROG C LAC M120 C SNA C JMP M375 C LAC #17 C JMS M125 C DEFINE 375 1282 CALL(FLT); PLANT(1); !JMS FLT: SLOT FOR NP C LAC #21 C JMS M225 C LAC #1 C JMS M212 1283 AC = \255 C LAC #-400 C DAC M130 1284 GET NEXT C JMS M235 1285 JUMP(X) C LAC M72 C JMS M227 1286 ->9 C JMP M240 1287 C(37): !MONITOR C ARG 46 C DEFINE 204 1288 PEND = -1; MON(LIT) C LAC #-1 C DAC M164 C LAC M202 C JMS M230 1289 ->9 C JMP M240 1290 C(40): !MCODE (OPERAND AFTER) C ARG 51 C DEFINE 204 1291 LIT = SUB(NEXT) C LAC M157 C JMS M10 C LAD M103 C LAC* M3 C DAC M202 1292 C(41): !LMCODE (CONST BEFORE) C ARG 52 C DEFINE 204 1293 PRINT(LIT); OP(X) C LAC M202 C JMS M213 C LAC M72 C JMS M211 1294 AC = \255 C LAC #-400 C DAC M130 1295 %RETURN C JMP* M127 1296 C(67): C(87): !STRING (PRINTTEXT) C ARG 104 C DEFINE 204 C ARG 130 C DEFINE 204 1297 CALL(PTXT); !PTEXT SR (TEXT FOLLOWS) C LAC #46 C JMS M225 1298 %UNTIL I < 0 %CYCLE C JMP M374 C DEFINE 376 C LAC M154 C SPA C JMP M375 C DEFINE 374 1299 I = DICT(X); PLANT(I); X = X-1 C LAC M72 C JMS M10 C LAD M67 C LAC* M3 C DAC M154 C JMS M212 C LAC #-1 C TAD M72 C DAC M72 1300 %REPEAT C JMP M-376 C DEFINE 375 1301 AC = \255 C LAC #-400 C DAC M130 1302 GET NEXT; !IGNORE CALL C JMS M235 1303 ->9 C JMP M240 1304 1305 !COMPILE OPERANDS 1306 %ROUTINE PCALL C BLOCK BEGIN 0 1307 !PROCEDURE CALL 1308 CALL(X) C LAC M72 C JMS M225 1309 %RETURN %IF DANGER # 0 %AND DANGER # BTAG C LAC M140 C SNA C JMP M375 C SAD M120 C SKP C JMP* M255 C DEFINE 375 1310 DANGER = X %IF TTX&EXT=0 %AND X<=PMAX; !NOT SAFE C LAC M75 C AND #200 C SZA C JMP M375 C LAC M72 C DAC M2 C LAC M136 C JMS M6 C SNL C JMP M375 C LAC M72 C DAC M140 C DEFINE 375 1311 %END C JMP* M255 D DEFINE 255 D LIT 0 C ARG -175764 C ARG -343624 C ARG 54 C BLOCK END 255 1312 1313 %ROUTINE MCALL C BLOCK BEGIN 0 1314 !MAP CALL 1315 %IF X=INT %AND PEND>0 %AND LIT=0 %AND TAGTYPE(PEND)&(OWN+REF)=OWN %START C LAC M72 C SAD #35 C SKP C JMP M375 C LAC M164 C SPA!SNA C JMP M375 C LAC M202 C SZA C JMP M375 C LAC M164 C JMS M10 C LAD M76 C LAC* M3 C AND #140 C SAD #100 C SKP C JMP M375 1316 I = PEND; PEND = -1 C LAC M164 C DAC M154 C LAC #-1 C DAC M164 1317 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1318 PCALL; I = 3 C JMS M255 C LAC #3 C DAC M154 1319 %FINISH C DEFINE 376 1320 %END C JMP* M256 D DEFINE 256 D LIT 0 C ARG -225764 C ARG -343624 C ARG 54 C BLOCK END 256 1321 1322 %ROUTINE RESTORE C BLOCK BEGIN 0 1323 %IF PEND1 >= 0 %START C LAC M165 C SPA C JMP M375 1324 PEND = PEND1; LIT = LIT1 C DAC M164 C LAC M203 C DAC M202 1325 AC = \255; EXPEND C LAC #-400 C DAC M130 C JMS M216 1326 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1327 POP C JMS M215 1328 %FINISH C DEFINE 376 1329 %END C JMP* M257 D DEFINE 257 D LIT 0 C ARG -155764 C ARG -321414 C ARG -201533 C BLOCK END 257 1330 1331 C(71): !SCONST C ARG 110 C DEFINE 204 1332 I = X C LAC M72 C DAC M154 1333 GET NEXT C JMS M235 1334 %IF PEND >= 0 %AND CLASS = 28 %AND X <= 2 %START C LAC M164 C SPA C JMP M375 C LAC M161 C SAD #34 C SKP C JMP M375 C LAC M72 C SMA C TAD #-2 C SMA!SZA C JMP M375 1335 !EXP +- LIST 1336 I = -I %IF X # 1; LIT = LIT+I C LAC M72 C SAD #1 C JMP M373 C LAC #-1 C TAD M154 C CMA C DAC M154 C DEFINE 373 C LAC M202 C TAD M154 C DAC M202 1337 ->9 C JMP M240 1338 %FINISH C DEFINE 375 1339 LOAD(0); LIT = I C LAC #0 C JMS M217 C LAC M154 C DAC M202 1340 ->2 C JMP M237 1341 C(103): !ASSA: = (EXP = APP (A,M)) C ARG 150 C DEFINE 204 1342 PEND1 = PEND; LIT1 = LIT; PEND = -1 C LAC M164 C DAC M165 C LAC M202 C DAC M203 C LAC #-1 C DAC M164 1343 ->9 C JMP M240 1344 C(65): !V C ARG 102 C DEFINE 204 1345 LOAD(X) C LAC M72 C JMS M217 1346 ->9 C JMP M240 1347 C(73): !ARRAY ELEMENT (VAL) C ARG 112 C DEFINE 204 1348 AREF; I = 3 C JMS M231 C LAC #3 C DAC M154 1349 VG: PRINT(I); OP(84); !LAC* C DEFINE 260 C LAC M154 C JMS M213 C LAC #124 C JMS M211 1350 ->9 C JMP M240 1351 C(77): !MAP ELEMENT (VAL) C ARG 116 C DEFINE 204 1352 MCALL C JMS M256 1353 ->VG %IF I = 3 C LAC M154 C SAD #3 C JMP M260 1354 NEST %IF AC >= 0; AC = 255 C LAC M130 C SMA C JMS M214 C LAC #377 C DAC M130 1355 ->VG C JMP M260 1356 C(66): !BV C ARG 103 C DEFINE 204 1357 LOAD(256+X) C LAC #400 C TAD M72 C JMS M217 1358 BG: CALL(BGET) C DEFINE 261 C LAC #25 C JMS M225 1359 ->9 C JMP M240 1360 C(74): !BYTE ARRAY ELEMENT (VAL) C ARG 113 C DEFINE 204 1361 BAREF C JMS M232 1362 ->BG C JMP M261 1363 C(78): !BYTE MAP ELEMENT (VAL) C ARG 117 C DEFINE 204 1364 PCALL C JMS M255 1365 ->BG C JMP M261 1366 C(96): !VDEST: V C ARG 141 C DEFINE 204 1367 STORE(X) C LAC M72 C JMS M221 1368 ->9 C JMP M240 1369 C(86): !ARRAY ELEMENT (DEST) C ARG 127 C DEFINE 204 1370 AREF; I = 3 C JMS M231 C LAC #3 C DAC M154 1371 VP: RESTORE C DEFINE 262 C JMS M257 1372 VP1:PRINT(I); OP(81); !DAC* C DEFINE 263 C LAC M154 C JMS M213 C LAC #121 C JMS M211 1373 AC = \AC C LAC M130 C CMA C DAC M130 1374 ->9 C JMP M240 1375 C(83): !MAP ELEMENT (DEST) C ARG 124 C DEFINE 204 1376 MCALL C JMS M256 1377 ->VP %IF I = 3 %OR AC < 0 C LAC M154 C SAD #3 C JMP M374 C LAC M130 C SPA C DEFINE 374 C JMP M262 1378 ->VP1 C JMP M263 1379 C(99): !BVDEST: BV C ARG 144 C DEFINE 204 1380 CALL(BPUT); PRINT(X); OP(LAD) C LAC #26 C JMS M225 C LAC M72 C JMS M213 C LAC #137 C JMS M211 1381 AC = \255 C LAC #-400 C DAC M130 1382 ->9 C JMP M240 1383 C(100): !BADEST: BA C ARG 145 C DEFINE 204 1384 BAREF C JMS M232 1385 BP: RESTORE C DEFINE 264 C JMS M257 1386 CALL(BPUT); PRINT(3); OP(LAC) C LAC #26 C JMS M225 C LAC #3 C JMS M213 C LAC #104 C JMS M211 1387 AC = \255 C LAC #-400 C DAC M130 1388 ->9 C JMP M240 1389 C(101): !BMDEST: BM C ARG 146 C DEFINE 204 1390 PCALL C JMS M255 1391 ->BP C JMP M264 1392 C(112): !APP (NULL) C ARG 161 C DEFINE 204 1393 EXPEND; NEST %IF AC >= 0 C JMS M216 C LAC M130 C SMA C JMS M214 1394 ->9 C JMP M240 1395 C(84):C(85):C(89):C(90):C(92): !PPAR,FPAR,APAR,BAPAR,RPAR C ARG 125 C DEFINE 204 C ARG 126 C DEFINE 204 C ARG 132 C DEFINE 204 C ARG 133 C DEFINE 204 C ARG 135 C DEFINE 204 1396 C(93):C(94):C(97):C(98): !MPAR,BMPAR,VREF,BVREF C ARG 136 C DEFINE 204 C ARG 137 C DEFINE 204 C ARG 142 C DEFINE 204 C ARG 143 C DEFINE 204 1397 LOAD(256+X); !LAD X C LAC #400 C TAD M72 C JMS M217 1398 ->9 C JMP M240 1399 C(88): !ARRAY ELEMENT (REF) C ARG 131 C DEFINE 204 1400 AREF C JMS M231 1401 ->9 C JMP M240 1402 C(102): !BYTE AREF C ARG 147 C DEFINE 204 1403 BAREF C JMS M232 1404 ->9 C JMP M240 1405 C(91):C(95): !MAP ELEMENT (REF,BREF) C ARG 134 C DEFINE 204 C ARG 140 C DEFINE 204 1406 PCALL %UNLESS X = INT C LAC M72 C SAD #35 C SKP C JMS M255 1407 ->9 C JMP M240 1408 C(69): !F (CALL) C ARG 106 C DEFINE 204 1409 PCALL %UNLESS X = ADR C LAC M72 C SAD #34 C SKP C JMS M255 1410 ->9 C JMP M240 1411 C(68): !P (CALL) C ARG 105 C DEFINE 204 1412 PCALL C JMS M255 1413 X = 256; !FOR SNL C LAC #400 C DAC M72 1414 ->CONDSKIP C JMP M252 1415 C(76): !R (CALL) C ARG 115 C DEFINE 204 1416 EXPEND; FINAL = 512; PCALL C JMS M216 C LAC #1000 C DAC M174 C JMS M255 1417 AC = \255 C LAC #-400 C DAC M130 1418 ->9 C JMP M240 1419 1420 C(111): ->9; !SEP C ARG 160 C DEFINE 204 C JMP M240 1421 1422 !COMPILE OPERATORS 1423 C(104): !MOD C ARG 151 C DEFINE 204 1424 OPR(65); OPR(513); !SMA!CMA:SKP!CMA C LAC #101 C JMS M222 C LAC #1001 C JMS M222 1425 PRINT(1); OP(39); !TAD #1 C LAC #1 C JMS M213 C LAC #47 C JMS M211 1426 ->9 C JMP M240 1427 C(1): !PLUS-SIGN C ARG 2 C DEFINE 204 1428 DO(TAD) %IF CLASS # 24; !TAD (UNLESS UNARY) C LAC M161 C SAD #30 C JMP M375 C LAC #107 C JMS M220 C DEFINE 375 1429 ->9 C JMP M240 1430 C(2): !MINUS-SIGN C ARG 3 C DEFINE 204 1431 %IF CLASS # 24 %START C LAC M161 C SAD #30 C JMP M375 1432 %IF PEND > 0 %START C LAC M164 C SPA!SNA C JMP M373 1433 PRINT(1); OP(79); !INFILTRATE CMA C LAC #1 C JMS M213 C LAC #117 C JMS M211 1434 DO(TAD); NOT; !TAD: CMA C LAC #107 C JMS M220 C JMS M223 1435 %FINISH %ELSE %START C JMP M374 C DEFINE 373 1436 NEG; DO(TAD) C JMS M224 C LAC #107 C JMS M220 1437 %FINISH C DEFINE 374 1438 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1439 NEG C JMS M224 1440 %FINISH C DEFINE 376 1441 ->9 C JMP M240 1442 C(3): !UOP: \ C ARG 4 C DEFINE 204 1443 NOT C JMS M223 1444 ->9 C JMP M240 1445 C(4): C(5): !LEFT-SHIFT, RIGHT-SHIFT C ARG 5 C DEFINE 204 C ARG 6 C DEFINE 204 1446 %IF PEND = 0 %AND LIT&(\7) = 0 %START C LAC M164 C SZA C JMP M375 C LAC M202 C AND #-10 C SZA C JMP M375 1447 PEND = -1 C LAC #-1 C DAC M164 1448 %WHILE LIT # 0 %CYCLE C DEFINE 374 C LAC M202 C SNA C JMP M373 1449 %IF X # 5 %THEN OPR(2056) %ELSE OPR(2064); !RCL,RCR C LAC M72 C SAD #5 C JMP M371 C LAC #4010 C JMS M222 C JMP M372 C DEFINE 371 C LAC #4020 C JMS M222 C DEFINE 372 1450 LIT = LIT-1 C LAC #-1 C TAD M202 C DAC M202 1451 %REPEAT C JMP M-374 C DEFINE 373 1452 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1453 NEG %IF X = 5 C LAC M72 C SAD #5 C JMS M224 1454 JMSX(SH) C LAC #12 C JMS M226 1455 %FINISH C DEFINE 376 1456 ->9 C JMP M240 1457 C(6): !AND C ARG 7 C DEFINE 204 1458 DO(74) C LAC #112 C JMS M220 1459 ->9 C JMP M240 1460 C(10): !XOR C ARG 13 C DEFINE 204 1461 DO(69) C LAC #105 C JMS M220 1462 ->9 C JMP M240 1463 C(11):C(12):C(13):C(14):C(15): !OR,MULT,IDIV,DIV,EXP C ARG 14 C DEFINE 204 C ARG 15 C DEFINE 204 C ARG 16 C DEFINE 204 C ARG 17 C DEFINE 204 C ARG 20 C DEFINE 204 1464 JMSX(X) C LAC M72 C JMS M226 1465 ->9 C JMP M240 1466 C(8): !REFOP -- (DISP -- REF) C ARG 11 C DEFINE 204 1467 NEG C JMS M224 1468 C(7): !REFOP ++ (DISP ++ REF) C ARG 10 C DEFINE 204 1469 GET NEXT C JMS M235 1470 %IF PEND = 0 %START C LAC M164 C SZA C JMP M375 1471 PEND = 256+X; !AD OF X PLUS LIT C LAC #400 C TAD M72 C DAC M164 1472 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1473 EXPEND C JMS M216 1474 PRINT(X); OP(ADA) C LAC M72 C JMS M213 C LAC #136 C JMS M211 1475 AC = 255 C LAC #377 C DAC M130 1476 %FINISH C DEFINE 376 1477 ->9 C JMP M240 1478 C(9): !REFASS: == C ARG 12 C DEFINE 204 1479 GET NEXT; FAULT(15) %IF TTX&REF = 0 C JMS M235 C LAC M75 C AND #40 C SZA C JMP M375 C LAC #17 C JMS M125 C DEFINE 375 1480 %IF PEND-256 = X %AND LIT = 1 %START C LAC #-400 C TAD M164 C SAD M72 C SKP C JMP M375 C LAC M202 C SAD #1 C SKP C JMP M375 1481 PRINT(X); OP(89); !ISZ* (FOR ISZ) C LAC M72 C JMS M213 C LAC #131 C JMS M211 1482 AC = \255 %IF \AC&255 = X C LAC M130 C CMA C AND #377 C SAD M72 C SKP C JMP M373 C LAC #-400 C DAC M130 C DEFINE 373 1483 %FINISH %ELSE %START C JMP M376 C DEFINE 375 1484 %IF PEND > 0 %START C LAC M164 C SPA!SNA C JMP M373 1485 TTX == TT0++(PEND&255) C AND #377 C ADA M74 C DAD M75 1486 EXPEND C JMS M216 1487 %IF TTX&(OWN+REF) = 0 %START C LAC M75 C AND #140 C SZA C JMP M371 1488 PRINT(-65537); OP(42); !AND #-65537 C LAC #-200001 C JMS M213 C LAC #52 C JMS M211 1489 %FINISH C DEFINE 371 1490 %FINISH C DEFINE 373 1491 PRINT(X); OP(DAD) C LAC M72 C JMS M213 C LAC #135 C JMS M211 1492 AC = \(X+256); ACLIT = 0 C LAC #400 C TAD M72 C CMA C DAC M130 C DZM M131 1493 %FINISH C DEFINE 376 1494 ->9 C JMP M240 1495 %END; !COMPILE SS C DEFINE 204 C LIT -160 C LIT 160 C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP C NOP D DEFINE 201 D LIT 0 D DEFINE 200 D LIT 0 D DEFINE 177 D LIT 0 D DEFINE 176 D LIT 0 D DEFINE 175 D LIT 0 D DEFINE 174 D LIT 0 D DEFINE 173 D LIT 0 D DEFINE 172 D LIT 0 D DEFINE 171 D LIT 0 D DEFINE 170 D LIT 0 D DEFINE 167 D LIT 0 D DEFINE 166 D LIT 0 D DEFINE 165 D LIT 0 D DEFINE 164 D LIT 0 D DEFINE 163 D LIT 0 D DEFINE 162 D LIT 0 D DEFINE 161 D LIT 0 D DEFINE 160 D LIT 0 D DEFINE 157 D LIT 0 D DEFINE 156 D LIT 0 D DEFINE 155 D LIT 0 D DEFINE 154 D LIT 0 D DEFINE 127 D LIT 0 C ARG -174764 C ARG -152622 C ARG -132634 C BLOCK END 145 1496 %END; !COMPILE BLOCK D LIT 0 D DEFINE -143 D LIT -1 D DEFINE -142 D LIT -1 D DEFINE -141 D LIT -1 D DEFINE -140 D LIT -1 D DEFINE -137 D LIT -1 D DEFINE -136 D LIT -1 D DEFINE -135 D LIT -1 D DEFINE -134 D LIT -1 D DEFINE -133 D LIT -1 D DEFINE -132 D LIT -1 D DEFINE -122 D LIT 0 D DEFINE -121 D LIT 0 D DEFINE -120 D LIT -1 D DEFINE -117 D LIT -1 D DEFINE 116 D LIT 0 D JMS M20 D LIT -17 D LIT -15 C ARG -343764 C ARG -202220 C ARG -262333 C BLOCK END 116 1497 %ENDOFPROGRAM C JMS* M4 C LIT 400 D DEFINE -115 D LIT 0 D DEFINE 114 D LIT 0 D DEFINE -113 D LIT 0 D DEFINE -103 D LIT 0 D DEFINE -102 D LIT 0 D DEFINE 100 D LIT 0 D DEFINE -77 D LIT 0 D DEFINE -76 D LIT 0 D DEFINE -75 D LIT 0 D DEFINE -74 D LIT 0 D DEFINE 72 D LIT 0 D DEFINE -67 D LIT 0 D DEFINE -64 D LIT 0 C BLOCK END 0 1498