COMPILATION LISTING OF SEGMENT varevl_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 0943.2 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-10-01,JRGray), approve(86-10-01,MCR7507), 17* audit(86-10-27,RWaters), install(86-11-12,MR12.0-1202): 18* Modified to support *heap references. 19* END HISTORY COMMENTS */ 20 21 22 varevl_: 23 procedure (xwhat, xbasno, xval, xadmod, xb29, xaddr) returns (fixed bin (26)); 24 /* evaluate variable fields for the Multics assembler (ma_6180). */ 25 26 27 /* Modified 3/8/77 by Noel I. Morris to handle segment$symbol. 28* Modified for separate static on 06/15/75 by Eugene E Wiatrowski 29* Modified 740905 by PG to know about pr0...pr7. 30* by RFM on 15 January 1973 to add an option to not read the modifier. 31* by RHG on 15 June 1971 to add "(" and ")" to the list of legal field terminators (for "call", etc) 32* by RFM and RHG on 22 November 1972 to _n_o_t set prntr on expevl_ error. 33* by RHG on 2 June 1971 to set prntr on expevl_ error 34* by RHG on 25 May 1971 to allow "," to terminate a field too 35* by RHG on 29 March 1971 at 1703 to spot illegal field terminator 36* by NA on June 28, 1970 at 2159 for the new CODTAB 37**/ 38 39 /* There are six modes of entry to VAREVL. Two are for external */ 40 /* references, two for internal references, and two for boolean */ 41 /* references. the routines are careful to generate the proper */ 42 /* linkages for external references, to evaluate literals */ 43 /* properly, and to check for errors of all types. parentheses */ 44 /* are allowed in the internal expressions for nesting. */ 45 46 47 /* INCLUDE FILES FOR VAREVL */ 48 1 1 1 2 1 3 1 4 /* include file for CONCOM */ 1 5 1 6 declare 1 eb_data_$concom ext aligned, 1 7 2 (ap, ab, bp, bb, lp, lb, sp, sb, 1 8 clunk, clint, clext, clbas, clstk, clndx, clmlc, fdef, 1 9 fmul, fphs, fset, frel, fabs, fbol, fcom, find, 1 10 flocrf, fequrf, fbolrf, fsetrf, fbasrf, fsegrf, fstkrf, fndxrf, 1 11 fmlcrf, onesev, twosev, thrsev, forsev, fivsev, sixsev, allsev, 1 12 symbas(8),mir, mri, mdu, mdl, mx0, mx1, mpc, 1 13 mpci, mfi, mits, mitb, ixtern, intern, iassgn, iserch, 1 14 ixvrvl, ixvrvp, invrvl, invrvp, ibvrvl, ibvrvp, iaccvl, iacivl, 1 15 mcmpq, mcmpx0, mldaq, mldq, mldx0, mnopdu, mstcd, mtra, 1 16 mtnc, mtnz, meabsp, meapap, meapbp, meaplp, meapsp, mstpap, 1 17 mstpbp, mstplp, mstpsp, i1542, i642, i3333, i66, ibb, 1 18 ibsp, nullf, smxer(2), sentry(2),sretrn(2), dzero(2) ) fixed bin (26) aligned ; 1 19 1 20 /* end of the include file for CONCOM */ 49 2 1 /* Begin include file varcom.incl.pl1. */ 2 2 /* RHG added new variables 9/7/70. */ 2 3 /* RFM added new cells for new object segment format and first-reference trap, 27 March 1972. */ 2 4 /* RFM added include file stuff, then cross referencer stuff, 23 July 1972. */ 2 5 /* Last modified on 07/23/72 at 04:19:25 by R F Mabee. */ 2 6 2 7 declare 1 eb_data_$varcom external aligned, 2 8 2 (brk(2), nbrk(2), sym(8), dsym(8),old_locsym, pc, spc, tpc, 2 9 pclst, p2pcl, old_ndpcls, tvorg, tvcnt, tvlth, litorg, 2 10 litc, deforg, defc, defcnt, stkc, lnkc, lnkno, 2 11 litlst, old_ndltls, lnklst, old_ndlkls, explst, blklst, namlst, 2 12 trplst, xdflst, tvlst, begin_line, tpass1, tpass2, tpostp, 2 13 tinhib, tmmode, txonly, tmm2, txo2, tprot, tcall, 2 14 tmvdef, tpulnk, tfatal, calrho, lreter, passwd, binlin, 2 15 nboxes, box(0:210), myfil, mynam, myblk, mylnk, tpost1 ) fixed bin (26) , 2 16 2 source_printed bit(1) aligned, 2 17 2 (ndpcls, ndltls, ndlkls, ndtvls) ptr, 2 18 2 (basno, value, admod, b29, iaddr, symlnk ) fixed bin (26), 2 19 2 (itxtmod, ilnkmod, entrieslc, include_file_list, include_index, 2 20 first_ref_trap_proc_linkno, first_ref_trap_arg_linkno, 2 21 text_section_length) fixed binary (26), 2 22 2 (include_info_stack, include_name_list_base, include_name_list_top) pointer, 2 23 2 symbol_tree_rel fixed binary (26); 2 24 2 25 /* End of the include file varcom.incl.pl1. */ 50 3 1 3 2 3 3 3 4 /* include file for CODTAB */ 3 5 3 6 declare 1 eb_data_$codtab ext aligned, 3 7 2 ( inul, isoh, istx, ietx, ieot, ienq, iack, ibel, 3 8 ibs, iht, inl, ivt, iff, icr, irrs, ibrs, 3 9 idle, irht, ihlf, irvt, ihlr, inak, isyn, ietb, 3 10 ican, iem, iss, iesc, ifs, igs, irs, ius, 3 11 isp, ixclm, iquot, ilb, idolr, ipcnt, iampr, iapos, 3 12 ilpar, irpar, istar, iplus, icomma, iminus, ipoint, islash, 3 13 inum, inum_pad(9), icol, isc, ilpb, iequal, irpb, iques, iat, 3 14 ilet, ilet_pad(25), ilsb, irslsh, irsb, icflx, iulin, igrv, illet,illet_pad(25), 3 15 ilbrc, ivlin, irbrc, itldf, idel ) fixed bin (17) ; 3 16 /* NA on June 26, 1970 at 1344 for padded arrays */ 51 4 1 4 2 /* Last modified by EBush on 2/5/81 to add prnta */ 4 3 4 4 4 5 declare 1 eb_data_$erflgs ext aligned, 4 6 2 flgvec (36) fixed bin (17) aligned ; 4 7 4 8 4 9 declare 1 eb_data_$erflgs_overlay ext aligned, /* overlays the FLGVEC */ 4 10 2 (prnte, prntf, prntm, prntn, prnto, prntp, 4 11 prntr, prnts, prntt, prntu, prntx, prntb, 4 12 prntc, prntd, prnta, prnt5, prnt6, prnt7, 4 13 tstsw(18) ) fixed bin (17) aligned ; 4 14 4 15 52 5 1 5 2 5 3 5 4 /* the include file for LCSECT */ 5 5 5 6 declare 1 eb_data_$lcsect ext aligned, 5 7 2 (lpsect, lcsect(2) ) fixed bin (17) aligned ; 5 8 5 9 5 10 5 11 /* end of the include file for LCSECT */ 5 12 53 6 1 6 2 6 3 6 4 /* the include file for LCLIT */ 6 5 6 6 declare 1 eb_data_$lclit ext aligned, 6 7 2 (lplit, lclit(2) ) fixed bin (17) aligned ; 6 8 6 9 6 10 6 11 /* end of the include file for LCLIT */ 6 12 54 55 /* */ 56 57 /* INTERBAL STATIC DATA */ 58 declare ixvrvl_notag fixed bin init (0); 59 60 /* EXTERNAL ENTRIES USED BY VAREVL */ 61 62 declare getid_$getid_ ext entry, 63 getid_$getnam ext entry, 64 prnter_$prnter_ entry (char (*), fixed bin), 65 utils_$abort ext entry, 66 inputs_$next ext entry, 67 litevl_$litevl_ entry (fixed bin (26), fixed bin (26), fixed bin (26)); 68 69 /* EXTERNAL FUNCTIONS USED BY VAREVL */ 70 71 declare lstman_$namasn entry (fixed bin (26)) returns (fixed bin (26)), 72 lstman_$blkasn ext entry (fixed bin (26), fixed bin (26), fixed bin (26), fixed bin (26)) returns (fixed bin (26)), 73 lstman_$lnkasn ext entry (fixed bin (26), fixed bin (26), fixed bin (26), fixed bin (26)) returns (fixed bin (26)), 74 table_ entry (fixed bin (26), fixed bin (26), fixed bin (26), fixed bin (26), fixed bin (26)) returns (fixed bin (26)), 75 glpl_$clh entry (fixed bin) returns (fixed bin), 76 modevl_$modevl_ entry (fixed bin (26)) returns (fixed bin (26)), 77 expevl_$expevl_ entry (fixed bin (26), fixed bin (26), fixed bin (26)) returns (fixed bin (26)); 78 79 /* EXTERNAL DATA USED BY VAREVL */ 80 81 declare (eb_data_$asym (2), eb_data_$atext (2), eb_data_$alink (2), eb_data_$astat (2), eb_data_$asys (2)) ext fixed bin (35); 82 declare eb_data_$aheap(2) ext fixed bin(35); 83 84 /* LABEL VARIABLES USED BY VAREVL */ 85 86 87 declare evlrtn label local; 88 89 /* AUTOMATIC DATA USED BY VAREVL */ 90 91 declare (admod, b29, basno, blk, i, iaddr, 92 inexp, junk, snlnk, tbool, tmpno, tself, txnam, 93 txtern, type, val, varevl_answer, xaddr, xadmod, 94 xbasno, xb29, xnlnk, xval, xwhat) fixed bin (26); 95 96 /* BASED */ 97 98 declare 1 acc aligned based (addr (eb_data_$varcom.sym (1))), 99 2 count unaligned fixed bin (8), 100 2 string unaligned char (3); 101 102 /* */ 103 /* - - - - - MAIN ENTRY POINT, Check type of call and branch to it. */ 104 105 iaddr = 0; 106 tbool = 0; /* FALSE */ 107 if xwhat = ixvrvl then go to label_200; 108 if xwhat = ixvrvl_notag then goto label_200; 109 if xwhat = ixvrvp then go to label_210; 110 if xwhat = invrvl then go to label_130; 111 if xwhat = invrvp then go to label_160; 112 if xwhat = ibvrvl then go to label_110; 113 if xwhat = ibvrvp then go to label_140; 114 115 116 call prnter_$prnter_ ("fatal error in the assembler (VAREVL)", 101); 117 call utils_$abort; 118 119 /* boolean entry without current break. */ 120 label_110: 121 tbool = 1; /* TRUE */ 122 123 /* arithmetic entry without current break. */ 124 label_130: 125 call getid_$getid_; 126 go to label_170; 127 128 /* boolean entry with current break. */ 129 label_140: 130 tbool = 1; /* TRUE */ 131 132 /* normal entry with current break. */ 133 label_160: 134 sym (1) = 0; 135 label_170: 136 admod = 0; 137 varevl_answer = 1; /* TRUE */ 138 txtern = 0; /* FALSE */ 139 if (brk (1) = iequal & sym (1) = 0) then go to label_500; 140 evlrtn = label_1100; 141 go to label_3000; 142 143 /* process possible external field without current break. */ 144 label_200: 145 call getid_$getid_; 146 go to label_220; 147 148 149 /* process possible external field with current break. */ 150 label_210: 151 sym (1) = 0; 152 label_220: 153 tbool = 0; /* FALSE */ 154 inexp = 0; 155 txtern = 1; /* TRUE */ 156 varevl_answer = 1; /* TRUE */ 157 158 159 /* check first break for possible external symbol. */ 160 if (brk (1) = ilpb & sym (1) = 0) then go to label_300; 161 if (brk (1) = ivlin & sym (1) ^= 0) then go to label_400; 162 if (brk (1) = idolr & sym (1) ^= 0) then go to label_290; 163 if (brk (1) = iequal & sym (1) = 0) then go to label_500; 164 if (brk (1) = istar | brk (1) = islash | sym (1) = 0) then go to label_600; 165 go to label_700; 166 167 168 169 170 /* process segname$symbol */ 171 label_290: 172 tself = 0; 173 snlnk = lstman_$namasn (sym (1)); 174 call getid_$getid_; 175 176 if sym (1) ^= 0 then do; 177 xnlnk = lstman_$namasn (sym (1)); 178 sym (1) = 0; 179 go to label_320; 180 end; 181 182 else do; 183 xnlnk = 0; 184 go to label_312; 185 end; 186 187 188 189 /* process external symbol in pointed brackets. */ 190 label_300: 191 call getid_$getnam; 192 if (sym (1) = 0 | brk (1) ^= irpb) then go to label_2000; 193 call inputs_$next; 194 if (brk (1) ^= ivlin) then go to label_2000; 195 tself = 0; /* FALSE */ 196 if (sym (1) ^= eb_data_$atext (1) | sym (2) ^= eb_data_$atext (2)) then go to label_302; 197 tself = 1; /* TRUE */ 198 snlnk = 0; 199 go to label_310; 200 label_302: 201 if (sym (1) ^= eb_data_$alink (1) | sym (2) ^= eb_data_$alink (2)) then go to label_304; 202 tself = 1; /* TRUE */ 203 snlnk = 1; 204 go to label_310; 205 label_304: 206 if (sym (1) ^= eb_data_$asym (1) | sym (2) ^= eb_data_$asym (2)) then go to label_305; 207 tself = 1; /* TRUE */ 208 snlnk = 2; 209 go to label_310; 210 label_305: 211 if (sym (1) ^= eb_data_$astat (1) | sym (2) ^= eb_data_$astat (2)) then go to label_306; 212 tself = 1; 213 snlnk = 4; 214 go to label_310; 215 label_306: 216 if (sym (1) ^= eb_data_$asys (1) | sym (2) ^= eb_data_$asys (2)) then go to label_307; 217 tself = 1; 218 snlnk = 5; 219 go to label_310; 220 label_307: 221 /* add support for *heap links */ 222 if (sym (1) = eb_data_$aheap (1) | sym (2) = eb_data_$aheap (2)) then do; 223 tself = 1; 224 snlnk = 6; 225 goto label_310; 226 end; 227 tself = 0; /* FALSE */ 228 snlnk = lstman_$namasn (sym (1)); 229 230 /* type 3 address, external name without external symbol. */ 231 label_310: 232 call check_external_name; 233 if (txnam ^= 0) then go to label_320; 234 label_312: 235 type = 3; 236 if (tself ^= 0) then type = 1; 237 evlrtn = label_330; 238 go to label_3000; 239 240 241 /* type 4 address, external name with external symbol. */ 242 label_320: 243 type = 4; 244 if (tself ^= 0) then type = 5; 245 evlrtn = label_330; 246 go to label_3100; 247 248 249 /* generate type block for external name and external symbol. */ 250 label_330: 251 blk = lstman_$blkasn (type, snlnk, xnlnk, 0); 252 go to label_1000; 253 254 255 256 257 /* process base number in front of vertical line. */ 258 label_400: 259 if acc.count = 3 260 then if substr (acc.string, 1, 2) = "pr" 261 then do; 262 basno = index ("01234567", substr (acc.string, 3, 1)) - 1; 263 264 if basno ^= -1 /* if pr0...pr7 */ 265 then go to label_420; 266 end; 267 268 do i = 1 to 8; 269 basno = i - 1; 270 if (sym (1) = symbas (i)) then go to label_420; 271 end; 272 273 if (table_ (iserch, sym (1), basno, (clint), junk) ^= 0) then go to label_420; 274 basno = 0; 275 varevl_answer = 0; /* FALSE */ 276 prntu = 1; /* TRUE */ 277 278 279 label_420: 280 call check_external_name; 281 if (txnam ^= 0) then go to label_440; 282 283 284 /* type 6 address, base specified without external symbol. */ 285 type = 6; 286 evlrtn = label_1000; 287 go to label_3000; 288 289 290 /* type 2 address, base specified with external symbol. */ 291 label_440: 292 type = 2; 293 evlrtn = label_450; 294 go to label_3100; 295 296 297 /* generate type block for base register and external symbol. */ 298 label_450: 299 blk = lstman_$blkasn (type, basno * 32768, xnlnk, 0); /* utils_$ls (basno, 15) */ 300 go to label_1000; 301 302 303 304 305 /* break is =, evaluate literal. */ 306 label_500: 307 call litevl_$litevl_ (inexp, admod, txtern); 308 type = 0; 309 if (admod = mdu | admod = mdl) then go to label_1010; 310 iaddr = lplit; 311 go to label_1010; 312 313 314 315 316 /* star or slash break implies internal, go to it. */ 317 label_600: 318 go to label_710; 319 320 321 322 323 /* plus or minus break, segref or basref symbol possible. */ 324 label_700: 325 if (table_ (iserch, sym (1), val, (clext), junk) ^= 0) then go to label_720; 326 if (table_ (iserch, sym (1), val, (clstk), junk) ^= 0) then go to label_730; 327 328 329 /* internal symbol, process it. */ 330 label_710: 331 evlrtn = label_1000; 332 type = 0; 333 go to label_3000; 334 335 336 /* segref or basref symbol, setup block and type. */ 337 label_720: 338 blk = val; 339 type = glpl_$clh (blk + 1); 340 sym (1) = 0; 341 evlrtn = label_1000; 342 go to label_3100; 343 344 345 /* stack reference, set relative pointer and type. */ 346 label_730: 347 tmpno = val; 348 type = 7; 349 sym (1) = 0; 350 evlrtn = label_1000; 351 go to label_3100; 352 353 /* common entry after evaluating variable field, get modifier, */ 354 /* establish linkage, address, local modifier, and b29, */ 355 /* and return to caller with terminal break character. */ 356 357 358 label_1000: 359 admod = 0; 360 if brk (1) = icomma then if xwhat ^= ixvrvl_notag then admod = modevl_$modevl_ (brk (1)); 361 label_1010: 362 go to address_type (type); 363 364 /* type 0, normal address, internal and b29 off. */ 365 label_1100: 366 address_type (0): 367 if (brk (1) ^= ivlin) then go to label_1110; 368 basno = inexp; 369 if txtern ^= 0 then goto label_420; 370 label_1110: 371 372 basno = 0; 373 val = inexp; 374 b29 = 0; 375 go to label_1900; 376 377 378 /* types 1 thru 5, reference requires linkage through type-block. */ 379 address_type (1): 380 address_type (2): 381 address_type (3): 382 address_type (4): 383 address_type (5): 384 val = lstman_$lnkasn (blk, inexp, admod, iaddr); 385 basno = lp; 386 admod = mri; 387 b29 = 1; 388 iaddr = lpsect; 389 go to label_1900; 390 391 392 /* type 6, augmented reference requiring no linkage. */ 393 address_type (6): 394 val = inexp; 395 b29 = 1; 396 go to label_1900; 397 398 399 /* stack reference, generate reference without linkage. */ 400 address_type (7): 401 val = tmpno+inexp; 402 basno = sp; 403 b29 = 1; 404 if (iaddr ^= 0) then prntr = 1; /* TRUE */ 405 iaddr = 0; 406 go to label_1900; 407 408 /* common return section, set external values and return. */ 409 label_1900: 410 i = brk (1); 411 if i ^= isp then if i ^= inl then if i ^= iquot then if i ^= icomma 412 then if i ^= irpar then if i ^= ilpar then prnte = 1; 413 label_1905: 414 xbasno = basno; 415 xval = val; 416 xadmod = admod; 417 xb29 = b29; 418 xaddr = iaddr; 419 return (varevl_answer); 420 421 422 /* field error, set f flag and make null return. */ 423 label_2000: 424 prntf = 1; /* TRUE */ 425 varevl_answer = 0; /* FALSE */ 426 basno = 0; 427 val = 0; 428 admod = 0; 429 b29 = 0; 430 go to label_1905; 431 432 /* interlude to internal variable field evaluation routine. this */ 433 /* routine evaluates expressions consisting only of internal re- */ 434 /* ferences using a stack evaluation method. nested parentheses are */ 435 /* allowed, and are taken to delimit subexpressions. the interlude */ 436 /* checks for call requirements and checks the results for field */ 437 /* errors, any such causing varevl_answer to be false. */ 438 439 440 /* normal entry, break in brk, and perhaps symbol in sym. */ 441 label_3000: 442 junk = expevl_$expevl_ (tbool, inexp, iaddr); 443 label_3010: 444 go to evlrtn; 445 446 447 /* entry after external symbol encountered. symbol must be zero, */ 448 /* and break must be + or -, anything else terminates scan. */ 449 label_3100: 450 if (sym (1) = 0 & (brk (1) = iplus | brk (1) = iminus)) then go to label_3000; 451 go to label_3010; 452 453 /* chkxnm, internal subroutine used to check for external name */ 454 /* after a vertical line. */ 455 456 check_external_name: 457 procedure; 458 459 call getid_$getid_; 460 if (brk (1) ^= ilsb | sym (1) ^= 0) 461 then do; 462 xnlnk = 0; 463 txnam = 0; /* FALSE */ 464 return; 465 end; 466 467 call getid_$getid_; 468 if (brk (1) ^= irsb | sym (1) = 0) then go to label_2000; 469 xnlnk = lstman_$namasn (sym (1)); 470 txnam = 1; /* TRUE */ 471 call getid_$getid_; 472 return; 473 474 end check_external_name; 475 476 end varevl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 0938.3 varevl_.pl1 >spec>install>1170>varevl_.pl1 49 1 10/21/74 1243.0 concom.incl.pl1 >ldd>include>concom.incl.pl1 50 2 10/21/74 1242.9 varcom.incl.pl1 >ldd>include>varcom.incl.pl1 51 3 05/06/74 1741.0 codtab.incl.pl1 >ldd>include>codtab.incl.pl1 52 4 07/17/81 1911.5 erflgs.incl.pl1 >ldd>include>erflgs.incl.pl1 53 5 05/06/74 1742.2 lcsect.incl.pl1 >ldd>include>lcsect.incl.pl1 54 6 05/06/74 1742.1 lclit.incl.pl1 >ldd>include>lclit.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. acc based structure level 1 dcl 98 admod 000106 automatic fixed bin(26,0) dcl 91 set ref 135* 306* 309 309 358* 360* 379* 386* 416 428* b29 000107 automatic fixed bin(26,0) dcl 91 set ref 374* 387* 395* 403* 417 429* basno 000110 automatic fixed bin(26,0) dcl 91 set ref 262* 264 269* 273* 274* 298 368* 370* 385* 402* 413 426* blk 000111 automatic fixed bin(26,0) dcl 91 set ref 250* 298* 337* 339 379* brk 000012 external static fixed bin(26,0) array level 2 dcl 2-7 set ref 139 160 161 162 163 164 164 192 194 360 360* 365 409 449 449 460 468 clext 12 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 324 clint 11 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 273 clstk 14 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 326 count based fixed bin(8,0) level 2 packed packed unaligned dcl 98 ref 258 eb_data_$aheap 000070 external static fixed bin(35,0) array dcl 82 ref 220 220 eb_data_$alink 000062 external static fixed bin(35,0) array dcl 81 ref 200 200 eb_data_$astat 000064 external static fixed bin(35,0) array dcl 81 ref 210 210 eb_data_$asym 000056 external static fixed bin(35,0) array dcl 81 ref 205 205 eb_data_$asys 000066 external static fixed bin(35,0) array dcl 81 ref 215 215 eb_data_$atext 000060 external static fixed bin(35,0) array dcl 81 ref 196 196 eb_data_$codtab 000014 external static structure level 1 dcl 3-6 eb_data_$concom 000010 external static structure level 1 dcl 1-6 eb_data_$erflgs_overlay 000016 external static structure level 1 dcl 4-9 eb_data_$lclit 000022 external static structure level 1 dcl 6-6 eb_data_$lcsect 000020 external static structure level 1 dcl 5-6 eb_data_$varcom 000012 external static structure level 1 dcl 2-7 evlrtn 000102 automatic label variable local dcl 87 set ref 140* 237* 245* 286* 293* 330* 341* 350* 443 expevl_$expevl_ 000054 constant entry external dcl 71 ref 441 getid_$getid_ 000024 constant entry external dcl 62 ref 124 144 174 459 467 471 getid_$getnam 000026 constant entry external dcl 62 ref 190 glpl_$clh 000050 constant entry external dcl 71 ref 339 i 000112 automatic fixed bin(26,0) dcl 91 set ref 268* 269 270* 409* 411 411 411 411 411 411 iaddr 000113 automatic fixed bin(26,0) dcl 91 set ref 105* 310* 379* 388* 404 405* 418 441* ibvrvl 103 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 112 ibvrvp 104 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 113 icomma 54 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 360 411 idolr 44 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 162 iequal 75 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 139 163 ilpar 50 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 411 ilpb 74 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 160 ilsb 133 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 460 iminus 55 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 449 inexp 000114 automatic fixed bin(26,0) dcl 91 set ref 154* 306* 368 373 379* 393 400 441* inl 12 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 411 inputs_$next 000034 constant entry external dcl 62 ref 193 invrvl 101 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 110 invrvp 102 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 111 iplus 53 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 449 iquot 42 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 411 irpar 51 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 411 irpb 76 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 192 irsb 135 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 468 iserch 76 000010 external static fixed bin(26,0) level 2 dcl 1-6 set ref 273* 324* 326* islash 57 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 164 isp 40 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 411 istar 52 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 164 ivlin 174 000014 external static fixed bin(17,0) level 2 dcl 3-6 ref 161 194 365 ixvrvl 77 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 107 ixvrvl_notag 000100 automatic fixed bin(17,0) initial dcl 58 set ref 58* 108 360 ixvrvp 100 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 109 junk 000115 automatic fixed bin(26,0) dcl 91 set ref 273* 324* 326* 441* litevl_$litevl_ 000036 constant entry external dcl 62 ref 306 lp 4 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 385 lplit 000022 external static fixed bin(17,0) level 2 dcl 6-6 ref 310 lpsect 000020 external static fixed bin(17,0) level 2 dcl 5-6 ref 388 lstman_$blkasn 000042 constant entry external dcl 71 ref 250 298 lstman_$lnkasn 000044 constant entry external dcl 71 ref 379 lstman_$namasn 000040 constant entry external dcl 71 ref 173 177 228 469 mdl 63 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 309 mdu 62 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 309 modevl_$modevl_ 000052 constant entry external dcl 71 ref 360 mri 61 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 386 prnte 000016 external static fixed bin(17,0) level 2 dcl 4-9 set ref 411* prnter_$prnter_ 000030 constant entry external dcl 62 ref 116 prntf 1 000016 external static fixed bin(17,0) level 2 dcl 4-9 set ref 423* prntr 6 000016 external static fixed bin(17,0) level 2 dcl 4-9 set ref 404* prntu 11 000016 external static fixed bin(17,0) level 2 dcl 4-9 set ref 276* snlnk 000116 automatic fixed bin(26,0) dcl 91 set ref 173* 198* 203* 208* 213* 218* 224* 228* 250* sp 6 000010 external static fixed bin(26,0) level 2 dcl 1-6 ref 402 string 0(09) based char(3) level 2 packed packed unaligned dcl 98 ref 258 262 sym 4 000012 external static fixed bin(26,0) array level 2 dcl 2-7 set ref 133* 139 150* 160 161 162 163 164 173* 176 177* 178* 192 196 196 200 200 205 205 210 210 215 215 220 220 228* 258 258 262 270 273* 324* 326* 340* 349* 449 460 468 469* symbas 50 000010 external static fixed bin(26,0) array level 2 dcl 1-6 ref 270 table_ 000046 constant entry external dcl 71 ref 273 324 326 tbool 000117 automatic fixed bin(26,0) dcl 91 set ref 106* 120* 129* 152* 441* tmpno 000120 automatic fixed bin(26,0) dcl 91 set ref 346* 400 tself 000121 automatic fixed bin(26,0) dcl 91 set ref 171* 195* 197* 202* 207* 212* 217* 223* 227* 236 244 txnam 000122 automatic fixed bin(26,0) dcl 91 set ref 233 281 463* 470* txtern 000123 automatic fixed bin(26,0) dcl 91 set ref 138* 155* 306* 369 type 000124 automatic fixed bin(26,0) dcl 91 set ref 234* 236* 242* 244* 250* 285* 291* 298* 308* 332* 339* 348* 361 utils_$abort 000032 constant entry external dcl 62 ref 117 val 000125 automatic fixed bin(26,0) dcl 91 set ref 324* 326* 337 346 373* 379* 393* 400* 415 427* varevl_answer 000126 automatic fixed bin(26,0) dcl 91 set ref 137* 156* 275* 419 425* xaddr parameter fixed bin(26,0) dcl 91 set ref 22 418* xadmod parameter fixed bin(26,0) dcl 91 set ref 22 416* xb29 parameter fixed bin(26,0) dcl 91 set ref 22 417* xbasno parameter fixed bin(26,0) dcl 91 set ref 22 413* xnlnk 000127 automatic fixed bin(26,0) dcl 91 set ref 177* 183* 250* 298* 462* 469* xval parameter fixed bin(26,0) dcl 91 set ref 22 415* xwhat parameter fixed bin(26,0) dcl 91 ref 22 107 108 109 110 111 112 113 360 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. eb_data_$erflgs external static structure level 1 dcl 4-5 NAMES DECLARED BY EXPLICIT CONTEXT. address_type 000000 constant label array(0:7) dcl 365 ref 361 check_external_name 001250 constant entry internal dcl 456 ref 231 279 label_1000 001024 constant label dcl 358 ref 252 286 300 330 341 350 label_1010 001046 constant label dcl 361 ref 309 311 label_110 000115 constant label dcl 120 ref 112 label_1100 001050 constant label dcl 365 ref 140 label_1110 001061 constant label dcl 370 ref 365 label_130 000117 constant label dcl 124 ref 110 label_140 000125 constant label dcl 129 ref 113 label_160 000127 constant label dcl 133 ref 111 label_170 000131 constant label dcl 135 ref 126 label_1900 001145 constant label dcl 409 ref 375 389 396 406 label_1905 001167 constant label dcl 413 ref 430 label_200 000151 constant label dcl 144 ref 107 108 label_2000 001205 constant label dcl 423 ref 192 194 468 label_210 000156 constant label dcl 150 ref 109 label_220 000160 constant label dcl 152 ref 146 label_290 000230 constant label dcl 171 ref 162 label_300 000270 constant label dcl 190 ref 160 label_3000 001217 constant label dcl 441 ref 141 238 287 333 449 label_3010 001234 constant label dcl 443 ref 451 label_302 000332 constant label dcl 200 ref 196 label_304 000345 constant label dcl 205 ref 200 label_305 000361 constant label dcl 210 ref 205 label_306 000375 constant label dcl 215 ref 210 label_307 000411 constant label dcl 220 ref 215 label_310 000436 constant label dcl 231 ref 199 204 209 214 219 225 label_3100 001235 constant label dcl 449 ref 246 294 342 351 label_312 000441 constant label dcl 234 ref 184 label_320 000453 constant label dcl 242 ref 179 233 label_330 000465 constant label dcl 250 ref 237 245 label_400 000506 constant label dcl 258 ref 161 label_420 000611 constant label dcl 279 ref 264 270 273 369 label_440 000622 constant label dcl 291 ref 281 label_450 000630 constant label dcl 298 ref 293 label_500 000654 constant label dcl 306 ref 139 163 label_600 000701 constant label dcl 317 ref 164 label_700 000702 constant label dcl 324 ref 165 label_710 000756 constant label dcl 330 ref 317 label_720 000763 constant label dcl 337 ref 324 label_730 001011 constant label dcl 346 ref 326 varevl_ 000036 constant entry external dcl 22 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 258 258 262 index builtin function ref 262 substr builtin function ref 258 262 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1562 1654 1326 1572 Length 2210 1326 72 320 234 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME varevl_ 150 external procedure is an external procedure. check_external_name internal procedure shares stack frame of external procedure varevl_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME varevl_ 000100 ixvrvl_notag varevl_ 000102 evlrtn varevl_ 000106 admod varevl_ 000107 b29 varevl_ 000110 basno varevl_ 000111 blk varevl_ 000112 i varevl_ 000113 iaddr varevl_ 000114 inexp varevl_ 000115 junk varevl_ 000116 snlnk varevl_ 000117 tbool varevl_ 000120 tmpno varevl_ 000121 tself varevl_ 000122 txnam varevl_ 000123 txtern varevl_ 000124 type varevl_ 000125 val varevl_ 000126 varevl_answer varevl_ 000127 xnlnk varevl_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. expevl_$expevl_ getid_$getid_ getid_$getnam glpl_$clh inputs_$next litevl_$litevl_ lstman_$blkasn lstman_$lnkasn lstman_$namasn modevl_$modevl_ prnter_$prnter_ table_ utils_$abort THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. eb_data_$aheap eb_data_$alink eb_data_$astat eb_data_$asym eb_data_$asys eb_data_$atext eb_data_$codtab eb_data_$concom eb_data_$erflgs_overlay eb_data_$lclit eb_data_$lcsect eb_data_$varcom LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000030 58 000043 105 000044 106 000045 107 000046 108 000053 109 000055 110 000057 111 000061 112 000063 113 000065 116 000067 117 000110 120 000115 124 000117 126 000124 129 000125 133 000127 135 000131 137 000132 138 000134 139 000135 140 000145 141 000150 144 000151 146 000155 150 000156 152 000160 154 000161 155 000162 156 000164 160 000165 161 000177 162 000207 163 000215 164 000221 165 000227 171 000230 173 000231 174 000241 176 000246 177 000252 178 000262 179 000265 183 000266 184 000267 190 000270 192 000274 193 000304 194 000310 195 000315 196 000316 197 000326 198 000330 199 000331 200 000332 202 000341 203 000343 204 000344 205 000345 207 000354 208 000356 209 000360 210 000361 212 000370 213 000372 214 000374 215 000375 217 000404 218 000406 219 000410 220 000411 223 000420 224 000422 225 000424 227 000425 228 000426 231 000436 233 000437 234 000441 236 000443 237 000447 238 000452 242 000453 244 000455 245 000461 246 000464 250 000465 252 000505 258 000506 262 000521 264 000531 268 000533 269 000541 270 000543 271 000552 273 000554 274 000603 275 000604 276 000605 279 000611 281 000612 285 000614 286 000616 287 000621 291 000622 293 000624 294 000627 298 000630 300 000653 306 000654 308 000666 309 000667 310 000676 311 000700 317 000701 324 000702 326 000727 330 000756 332 000761 333 000762 337 000763 339 000765 340 001002 341 001005 342 001010 346 001011 348 001013 349 001015 350 001020 351 001023 358 001024 360 001025 361 001046 365 001050 368 001055 369 001057 370 001061 373 001062 374 001064 375 001065 379 001066 385 001105 386 001111 387 001113 388 001115 389 001117 393 001120 395 001122 396 001124 400 001125 402 001130 403 001134 404 001136 405 001143 406 001144 409 001145 411 001150 413 001167 415 001172 416 001174 417 001176 418 001200 419 001202 423 001205 425 001211 426 001212 427 001213 428 001214 429 001215 430 001216 441 001217 443 001234 449 001235 451 001247 456 001250 459 001251 460 001256 462 001266 463 001267 464 001270 467 001271 468 001275 469 001305 470 001315 471 001317 472 001324 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved