THIS FILE IS DAMAGED COMPILATION LISTING OF SEGMENT set_indicators Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1656.9 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* this procedure is called to set the logical indicators. it 12* generates a compare sequence. 13* 14* Initial Version: 28 November, 1968 by BLW 15* Modified: 19 December, 1971 by BLW for Version II 16* Modified: 29 January, 1973 by BLW 17* Modified: 28 April, 1973 by RAB 18* Modified: 20 June 1973 by RAB for EIS 19* Modified: 13 October 1975 by RAB to remember comparisons 20* Modified: 29 October 1975 by RAB to check p3 in q 21* Modified: 25 November 1975 by RAB to fix 1442 22* Modified: 21 December 1976 by RAB to fix 1565 23* Modified: 15 January 1978 by RAB to move refs(1) = null; towards 24* beginning of program 25* Modified: 25 Apr 1979 by PCK to implement 4-bit decimal and fix bug 1832 26* Modified: 28 Jul 1979 by RAB to fix 1837 (if "" = char_string fails) */ 27 28 set_indicators: proc(pt,p2_par,p3_par,code) returns(fixed bin(1)); 29 30 dcl pt ptr, /* points at operator node */ 31 p2_par ptr, /* points at left ref node */ 32 p3_par ptr, /* points at right ref node */ 33 code fixed bin; /* context code */ 34 35 dcl (cg_stat$text_pos,cg_stat$last_macro,compare_ptrs$compare_ptrs, 36 complex_stuff$complex_compare,cg_stat$cur_level,cg_stat$packed_null_value) fixed bin ext, 37 cg_stat$null_value bit(72) aligned ext, 38 (cg_stat$text_base,cg_stat$cur_block, 39 cg_stat$long_string_temp,cg_stat$single_temp) ptr ext; 40 41 dcl (p,refs(3),q,q2,q3,t,sym(2:3),node_pt,arg(3)) ptr, 42 p2s ptr defined(sym(2)), 43 p3s ptr defined(sym(3)), 44 p2 ptr defined(refs(2)), 45 p3 ptr defined(refs(3)), 46 (i,s1,s2,s3,size2,size3,type1,type2,type3,dt,k,case,n,prec,scale(3)) fixed bin, 47 (macro,op) fixed bin(15), 48 atom(3) bit(1) aligned, 49 b2 bit(2) aligned, 50 (reversed,zero(2:3),const(2:3),atomic,check_scale,ext_ent) aligned bit(1), 51 toff bit(15) aligned, 52 pl_stat$last_macro fixed bin(15) ext static, 53 (mac1,mac2) fixed bin(15); 54 55 dcl c_a entry(fixed bin,fixed bin) returns(ptr), 56 generate_constant$real_fix_bin_1 entry(fixed bin) returns(ptr), 57 prepare_operand entry(ptr,fixed bin,bit(1) aligned) returns(ptr), 58 base_man$load_var entry(fixed bin,ptr,fixed bin), 59 create_label entry(ptr,ptr,bit(3) aligned) returns(ptr), 60 gen_arithmetic_call entry(ptr,(3) ptr,(3) bit(1) aligned), 61 inline_operation entry(ptr,(3) ptr,(3) bit(1) aligned) returns(bit(1) aligned), 62 load entry(ptr,fixed bin), 63 (compile_exp,compile_exp$for_test) entry(ptr), 64 adjust_ref_count entry(ptr,fixed bin), 65 aq_man$fix_scale entry(ptr,fixed bin,fixed bin), 66 compile_exp$save_fix_scaled entry(ptr,fixed bin,fixed bin) returns(ptr), 67 (compile_exp$save,compile_exp$save_exp) entry(ptr) returns(ptr), 68 aq_man$save_aq entry(ptr,fixed bin), 69 make_both_addressable entry(ptr,ptr,bit(1) aligned), 70 expmac$interpret entry(fixed bin,ptr,(3) ptr,(3) bit(1) aligned), 71 expmac$fill_usage entry(fixed bin(17),fixed bin(17)), 72 expmac$many entry(fixed bin(15),ptr,fixed bin), 73 expmac$one_eis entry(fixed bin(15),ptr), 74 expmac$two_eis entry(fixed bin(15),ptr,ptr), 75 load$for_test entry(ptr,fixed bin), 76 aq_man$pad_aq entry(fixed bin,fixed bin), 77 base_man$store_ptr_to entry(ptr,ptr), 78 generate_constant$bit_string entry(bit(*) aligned,fixed bin) returns(ptr), 79 store entry(ptr), 80 state_man$erase_reg entry(bit(19) aligned), 81 assign_op$fix_dec_scaled entry(ptr), 82 get_imaginary entry(ptr) returns(ptr), 83 expmac$zero entry(fixed bin(15)), 84 expmac$one entry(fixed bin(15),ptr,fixed bin), 85 expmac entry(fixed bin(15),ptr); 86 87 dcl (abs,addr,addrel,bit,fixed,max,min,null,string,ceil,substr) builtin; 88 89 dcl 1 instruction aligned based, 90 2 left unal bit(18), 91 2 op_code unal bit(9), 92 2 rest unal bit(9); 93 94 dcl ( z2 based(addr(zero(2))), 95 z3 based(addr(zero(3))), 96 c2 based(addr(const(2))), 97 c3 based(addr(const(3)))) bit(1) aligned; 98 99 dcl ( scale1 defined(scale(1)), 100 scale2 defined(scale(2)), 101 scale3 defined(scale(3))) fixed bin; 102 103 dcl fix_bin fixed bin based, 104 flt_bin float bin based, 105 fix_bin_71 fixed bin(71) based, 106 flt_bin_63 float bin(63) based, 107 bit_72 bit(72) aligned based; 108 109 dcl ( stfx1 init(15), 110 ana init(40), 111 eraq init(54), 112 oraq init(48), 113 anaq init(42), 114 cana init(615), 115 canaq init(617), 116 fx1_to_fx2 init(88), 117 make_lv init(173), 118 set_label_const init(315), 119 compare_labels init(325), 120 compare_files init(280), 121 comp_decimal init(532), 122 jump_ne init(181), 123 cpbs3 init(226), 124 set_chars init(436), 125 cp_chars init(186), 126 cpcs1 init(140), 127 cpbs1 init(149), 128 cpfx1 init(136), 129 cpfl1 init(138), 130 clear_aq init(58)) fixed bin(15) int static; 131 132 dcl 1 decimal_constant based aligned, 133 2 sign char(1) unal, 134 2 magnitude char(prec) unal, 135 2 exponent bit(9) unal; 136 137 dcl 1 packed_decimal_constant based aligned, 138 2 sign_and_magnitude bit(ceil(bits_per_packed_digit*(prec+1))) unal, 139 2 exponent bit(9) unal; 140 1 1 /* BEGIN INCLUDE FILE ... cgsystem.incl.pl1 */ 1 2 1 3 /* Modified: 25 Apr 1979 by PCK to implement 4-bit decimal */ 1 4 1 5 dcl ( bits_per_char init(9), 1 6 bits_per_half init(18), 1 7 bits_per_word init(36), 1 8 bits_per_two_words init(72), 1 9 bits_per_four_words init(144), 1 10 bits_per_words(2) init(36,72), 1 11 packed_digits_per_char init(2), 1 12 chars_per_word init(4), 1 13 packed_digits_per_word init(8), 1 14 1 15 break_even_bits init(216), 1 16 break_even_words init(6), 1 17 1 18 label_size init(4), 1 19 1 20 convert_size(13:14) init(9,1), 1 21 max_offset(13:14) init(27,35), 1 22 max_short_size(13:14) init(8,72), 1 23 1 24 units_per_word(0:5) init(1,36,8,4,2,1), 1 25 1 26 max_dec_scale init(32), 1 27 min_dec_scale init(-31), 1 28 max_p_xreg init(18), 1 29 max_p_fix_bin_1 init(35), 1 30 max_p_flt_bin_1 init(27), 1 31 max_p_fix_dec init(59), 1 32 max_length_p init(24), 1 33 default_fix_bin_p init(17)) fixed bin(8) int static options(constant); 1 34 1 35 dcl (convert_offset(0:5) init(36,1,4.5,9,18,36), 1 36 bits_per_packed_digit init(4.5)) fixed bin(8,1) int static options(constant); 1 37 1 38 dcl max_index_register_value init(262143) fixed bin(31) int stL-Johnson VDFx L-Johnson Bull SlEmba 2^ Armstrong mba Multics Jv\ bHumeniuk |t Humeniuk CDC !!Mo2#jOvOwBhnoneVT102 M?|BFregonas F "NH48 Fregonas NMLPROD _!T3V-TrTHWxnoneWY50_80C QjG [*}Horning |< Horning Multics 3PGraham Ю LBP PGraham SiteSA RPte]Rϝ* R\Nemeth n8& Nemeth Multics !@R,s:HS-R noneSTY_TELNET R*^G 2 level fixed bin (17), 5 63 2 last_auto_loc fixed bin (17), 5 64 2 symbol_block fixed bin (17), 5 65 2 entry_info fixed bin (18), 5 66 2 enter structure unaligned, 5 67 3 start fixed bin (17), 5 68 3 end fixed bin (17), 5 69 2 leave structure unaligned, 5 70 3 start fixed bin (17), 5 71 3 end fixed bin (17), 5 72 2 owner ptr; 5 73 5 74 declare max_block_number fixed bin internal static options (constant) initial (511); 5 75 5 76 /* END INCLUDE FILE ... block.incl.pl1 */ 145 6 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 6 2 6 3 dcl 1 symbol based aligned, 6 4 2 node_type bit(9) unal, 6 5 2 source_id structure unal, 6 6 3 file_number bit(8), 6 7 3 line_number bit(14), 6 8 3 statement_number bit(5), 6 9 2 location fixed(18) unal unsigned, 6 10 2 allocated bit(1) unal, 6 11 2 dcl_type bit(3) unal, 6 12 2 reserved bit(6) unal, 6 13 2 pix unal, 6 14 3 pic_fixed bit(1) unal, 6 15 3 pic_float bit(1) unal, 6 16 3 pic_char bit(1) unal, 6 17 3 pic_scale fixed(7) unal, 6 18 3 pic_size fixed(7) unal, 6 19 2 level fixed(8) unal, 6 20 2 boundary fixed(3) unal, 6 21 2 size_units fixed(3) unal, 6 22 2 scale fixed(7) unal, 6 23 2 runtime bit(18) unal, 6 24 2 runtime_offset bit(18) unal, 6 25 2 block_node ptr unal, 6 26 2 token ptr unal, 6 27 2 next ptr unal, 6 28 2 multi_use ptr unal, 6 29 2 cross_references ptr unal, 6 30 2 initial ptr unal, 6 31 2 array ptr unal, 6 32 2 descriptor ptr unal, 6 33 2 equivalence ptr unal, 6 34 2 reference ptr unal, 6 35 2 general ptr unal, 6 36 2 father ptr unal, 6 37 2 brother ptr unal, 6 38 2 son ptr unal, 6 39 2 word_size ptr unal, 6 40 2 bit_size ptr unal, 6 41 2 dcl_size ptr unal, 6 42 2 symtab_size ptr unal, 6 43 2 c_word_size fixed(24), 6 44 2 c_bit_size fixed(24), 6 45 2 c_dcl_size fixed(24), 6 46 6 47 2 attributes structure aligned, 6 48 3 data_type structure unal, 6 49 4 structure bit(1) , 6 50 4 fixed bit(1), 6 51 4 float bit(1), 6 52 4 bit bit(1), 6 53 4 char bit(1), 6 54 4 ptr bit(1), 6 55 4 offset bit(1), 6 56 4 area bit(1), 6 57 4 label bit(1), 6 58 4 entry bit(1), 6 59 4 file bit(1), 6 60 4 arg_descriptor bit(1), 6 61 4 storage_block bit(1), 6 62 4 explicit_packed bit(1), /* options(packed) */ 6 63 4 condition bit(1), 6 64 4 format bit(1), 6 65 4 builtin bit(1), 6 66 4 generic bit(1), 6 67 4 picture bit(1), 6 68 6 69 3 misc_attributes structure unal, 6 70 4 dimensioned bit(1), 6 71 4 initialed bit(1), 6 72 4 aligned bit(1), 6 73 4 unaligned bit(1), 6 74 4 signed bit(1), 6 75 4 unsigned bit(1), 6 76 4 precision bit(1), 6 77 4 varying bit(1), 6 78 4 local bit(1), 6 79 4 decimal bit(1), 6 80 4 binary bit(1), 6 81 4 real bit(1), 6 82 4 complex bit(1), 6 83 4 variable bit(1), 6 84 4 reducible bit(1), 6 85 4 irreducible bit(1), 6 86 4 returns bit(1), 6 87 4 position bit(1), 6 88 4 internal bit(1), 6 89 4 external bit(1), 6 90 4 like bit(1), 6 91 4 member bit(1), 6 92 4 non_varying bit(1), 6 93 4 options bit(1), 6 94 4 variable_arg_list bit(1), /* options(variable) */ 6 95 4 alloc_in_text bit(1), /* options(constant) */ 6 96 6 97 3 storage_class structure unal, 6 98 4 NMLPROD aQhJRORhsnoneWY50_80C QjF1@SA1 @$ ,l꼰` SA1 SysAdmin J .8LM)~ܤT noneSTY_TELNET d(3); 190 type3 = p3 -> reference.data_type; 191 p3s = p3 -> reference.symbol; 192 193 s2, s3 = 0; 194 195 if p2s -> node.type = label_node then goto lv1; 196 if p2s -> symbol.label | p2s -> symbol.format | p2s -> symbol.entry 197 then go to label_compare; 198 199 if p2s -> symbol.file then goto file_compare; 200 201 refs(1) = null; 202 203 if p2s -> symbol.ptr 204 then do; 205 206 /* have comparision of two pointers. check to see if we are comparing 207* a packed ptr with null, if so replace the null with a packed representation. 208* note that we assume that null is the only pointer constant */ 209 210 if p2 -> reference.data_type = packed_ptr 211 then if p3s -> symbol.constant 212 then do; 213 p3 = generate_constant$real_fix_bin_1(cg_stat$packed_null_value); 214 p3 -> reference.data_type = packed_ptr; 215 end; 216 else; 217 else if p3 -> reference.data_type = packed_ptr 218 then if p2s -> symbol.constant 219 then do; 220 p2 = generate_constant$real_fix_bin_1(cg_stat$packed_null_value); 221 p2 -> reference.data_type = packed_ptr; 222 end; 223 224 call expmac$interpret(compare_ptrs$compare_ptrs,node_pt,refs,atom); 225 goto cp_exit; 226 end; 227 228 z2, z3 = "0"b; 229 230 scale3 = p3s -> symbol.scale; 231 c3 = p3s -> symbol.constant & p3 -> reference.offset = null & p3 -> reference.c_offset = 0; 232 233 if p2s -> symbol.decimal & p3s -> symbol.decimal 234 then do; 235 do i = 2 to 3; 236 if atom(i) 237 then if const(i) 238 then if ^ sym(i) -> symbol.complex 239 then do; 240 prec = sym(i) -> symbol.c_dcl_size; 241 if sym(i) -> symbol.unaligned 242 then zero(i) = substr(sym(i) -> symbol.initial -> packed_decimal_constant.sign_and_magnitude,6) = ""b; 243 else zero(i) = sym(i) -> symbol.initial -> decimal_constant.magnitude = substr((64)"0",1,prec); 244 end; 245 else; 246 else; 247 else refs(i) = compile_exp$save_exp((node_pt -> operand(i))); 248 end; 249 250 /* If one of the operands is zero, see if the last operation set the indicators 251* for the other operand */ 252 253 if z2 254 then call flip_rands; 255 256 if z3 257 then do; 258 if p2 -> reference.value_in.decimal_aq 259 then if machine_state.indicators = 14 260 then do; 261 if ^ p2 -> reference.shared 262 then call adjust_ref_count(p2,-1); 263 go to cp_exit; 264 end; 265 call compare_decimal; 266 end; 267 268 else do; 269 if max(scale2,scale3) <= max_dec_scale & min(scale2,scale3) >= min_dec_scale 270 then call compare_decimal; 271 272 else if type2 = type3 & abs(scale2 - scale3) <= max_dec_scale - min_dec_scale 273 then do; 274 if scale2 > scale3 275 then k = min_dec_scale; 276 else k = max_dec_scale; 277 p2s -> symbol.scale = k + (scale2 - scale3); 278 p3s -> symbol.scale = k; 279 280 call compare_decimal; 281 282 p2s -> symbol.scale = scale2; 283 p3s -> symbol.scale = scale3; 284 end; 285 286 else do; 287 do i = 2 to 3; 288 if scale(i) > max_dec_scale | scale(i) < min_dec_scale 289 then call assign_op$fix_dec_scaled(refs(i)); 290 end; 291 292 call compare_decimal; 293 end; 294 end; 295 296 go to cp_exit; 297 end; 298 299 if p2s -> symbol.complex | p3s -> symbol.complex 300 then do; 301 if ^ inline_operation(node_pt,refs,atom) 302 then call gen_arithmetic_call(node_pt,refs,atom); 303 else call expmac$interpret(complex_stuff$complex_compare,node_pt,refs,atom); 304 goto cp_exit; 305 end; 306 307 if type2 <= real_fix_bin_2 308 then do; 309 310 mac1 = cpfx1; 311 mac2 = fx1_to_fx2; 312 313 type1 = max(type2,type3); 314 scale1 = max(scale2,scale3); 315 316 if scale1 ^= scale2 317 then do; 318 atom(2) = "0"b; 319 goto l1; 320 end; 321 322 if scale1 ^= scale3 323 then do; 324 atom(3) = "0"b; 325 326 l1: check_scale = "1"b; 327 code = fixed(atom(2) || atom(3),2); 328 end; 329 330 s1 = type1 - real_fix_bin_1; 331 s2 = type2 - real_fix_bin_1; 332 s3 = type3 - real_fix_bin_1; 333 334 if c2 335 then do; 336 t = p2s -> symbol.initial; 337 if s2 = 0 then z2 = t -> fix_bin = 0; 338 else z2 = t -> fix_bin_71 = 0; 339 end; 340 341 if c3 342 then do; 343 t = p3s -> symbol.initial; 344 if s3 = 0 then z3 = t -> fix_bin = 0; 345 else z3 = t -> fix_bin_71 = 0; 346 end; 347 348 sk: k = 2*s2 + s3; 349 goto arith_sw(code); 350 end; 351 352 if type2 <= real_flt_bin_2 353 then do; 354 355 mac1 = cpfl1; 356 mac2 = 0; 357 358 s2 = type2 - real_flt_bin_1; 359 s3 = type3 - real_flt_bin_1; 360 361 if c2 362 then do; 363 t = p2s -> symbol.initial; 364 if s2 = 0 then z2 = t -> flt_bin = 0.0e0; 365 else z2 = t -> flt_bin_63 = 0.0e0; 366 end; 367 368 if c3 369 then do; 370 t = p3s -> symbol.initial; 371 if s3 = 0 then z3 = t -> flt_bin = 0.0e0; 372 else z3 = t -> flt_bin_63 = 0.0e0; 373 end; 374 375 goto sk; 376 end; 377 378 /* have string comparsion */ 379 380 str: if p2 -> reference.long_ref | p2 -> reference.varying_ref | p2 -> reference.hard_to_load then s2 = 5; 381 else do; 382 383 size2 = p2 -> reference.c_length * convert_size(type2); 384 s2 = 2 * fixed(size2 > bits_per_word,1); 385 386 if c2 & type2 = bit_string 387 then z2 = substr(p2s -> symbol.initial -> bit_72,1,size2) = "0"b; 388 389 end; 390 391 dt = type2 - char_string; 392 393 if dt = 0 then op = cpcs1; else op = cpbs1; 394 395 if code < 5 then goto st_cp; 396 397 /* have true|false comparison */ 398 399 st_0: if s2 < 5 400 then do; 401 402 /* string is short, load value into aq and compare 403* with zero, if necessary */ 404 405 if p2 = q2 406 then do; 407 lft: call load$for_test(p2,s2); 408 goto cp_exit; 409 end; 410 411 if p2 -> reference.evaluated then goto lft; 412 413 call compile_exp$for_test(q2); 414 415 if s2 = 0 then goto cp_exit; 416 417 /* not single word string, can skip compare if 418* last macro set indicators for entire AQ */ 419 420 n = cg_stat$last_macro; 421 if n = eraq then goto cp_exit; 422 if n = oraq then goto cp_exit; 423 if n = anaq then goto cp_exit; 424 425 /* If last operation was and_for_test, 426* then indicators were set correctly */ 427 428 if n = cana then go to cp_exit; 429 if n = canaq then goto cp_e6Davids ^"Jt Lx Davids nsd PC J`,y#JޑUr exp */ 572 573 string_sw(0): 574 st_ee: if s2 > s3 then call flip_rands; 575 if s2+s3 >= 5 then goto st_ee_2; 576 if size2 > size3 then call flip_rands; 577 578 /* now have longer string on right */ 579 580 if s3 < 5 581 then do; 582 583 /* both strings are short */ 584 585 p3 = compile_exp$save(q3); 586 call compile_exp(q2); 587 goto st_aa_3; 588 end; 589 590 /* have long string on right */ 591 592 st_ee_2: 593 594 /* one or both strings are long, compile left expression, then 595* save temp ptr in stack (p2 is altered) */ 596 597 p2 = compile_exp$save_exp(q2); 598 599 /* compile right expression */ 600 601 if q3 -> node.type ^= reference_node 602 then call compile_exp(q3); 603 604 st_ee_1: call expmac$two_eis(cp_chars+dt,p2,p3); 605 call update_indicators; 606 goto cp_exit; 607 608 /* Arithmetic comparisons */ 609 610 /* have atm : atm */ 611 612 arith_sw(3): 613 ar_aa: if p3 -> reference.value_in.q then call flip_rands; 614 615 if k = 2 | z2 then call flip_rands; 616 617 ar_aa_0: if z3 618 then do; 619 call load$for_test(p2,0); 620 goto cp_exit; 621 end; 622 623 if z2 624 then do; 625 reversed = ^ reversed; 626 call load$for_test(p3,0); 627 goto cp_exit; 628 end; 629 630 ar_aa_3: call load(p2,0); 631 632 arith_ea_sw(1): 633 ar_aa_1: if type2 < type3 634 then if mac2 ^= 0 635 then call expmac$zero(mac2); 636 637 arith_ea_sw(0): 638 arith_ea_sw(3): 639 ar_aa_2: call expmac(mac1+s3,p3); 640 call update_indicators; 641 goto cp_exit; 642 643 /* have exp : exp */ 644 645 arith_sw(0): 646 ar_ee: if k = 2 then call flip_rands; 647 648 if check_scale & scale1 ^= scale3 649 then do; 650 p3 = compile_exp$save_fix_scaled(q3,scale1,type1); 651 type3 = type1; 652 s3 = s1; 653 end; 654 else p3 = compile_exp$save(q3); 655 656 call compile_exp(q2); 657 if check_scale & scale1 ^= scale2 658 then do; 659 call aq_man$fix_scale(p2,scale1,type1); 660 type2 = type1; 661 s2 = s1; 662 end; 663 664 goto ar_aa_1; 665 666 /* have atm : exp */ 667 668 arith_sw(2): 669 ar_ae: call flip_rands; 670 671 /* have exp : atm */ 672 673 arith_sw(1): 674 ar_ea: if z3 675 then if p2 = q2 676 then do; 677 call load$for_test(p2,0); 678 go to cp_exit; 679 end; 680 681 /* if we may need to save the result later, we must increment the ref_count now */ 682 683 if k = 2 684 then if ^ p2 -> reference.shared 685 then p2 -> reference.ref_count = p2 -> reference.ref_count + 1; 686 687 call compile_exp(q2); 688 689 if check_scale & scale1 ^= scale2 690 then do; 691 call aq_man$fix_scale(p2,scale1,type1); 692 type2 = type1; 693 s2 = s1; 694 k = 2*s2 + s3; 695 end; 696 697 if z3 698 then if machine_state.indicators >= 0 699 then do; 700 if k = 2 701 then if ^ p2 -> reference.shared 702 then call adjust_ref_count(p2,-1); 703 go to cp_exit; 704 end; 705 706 goto arith_ea_sw(k); 707 708 arith_ea_sw(2): 709 call aq_man$save_aq(p2,0); 710 call flip_rands; 711 goto ar_aa_3; 712 713 /* We have comparison of labels, entries, or formats */ 714 715 label_compare: 716 if p2s -> symbol.constant 717 then do; 718 lv1: ext_ent = (type2 = ext_entry_out) | (type2 = ext_entry_in); 719 k = cg_stat$cur_level - p2s -> symbol.block_node -> block.level; 720 721 if k = 0 | ext_ent 722 then do; 723 arg(1) = c_a(56,4); 724 if ext_ent 725 then do; 726 arg(1) -> reference.data_type = unpacked_ptr; 727 call base_man$store_ptr_to(p2,arg(1)); 728 729 p2 = generate_constant$bit_string(cg_stat$null_value,(bits_per_two_words)); 730 p2 -> reference.data_type = unpacked_ptr; 731 call load(p2,0); 732 toff = arg(1) -> address.offset; 733 arg(1) -> address.offset = bit(fixed(fixed(toff,15)+2,15),15); 734 call store(arg(1)); 735 arg(1) -> address.offset = toff; 736 end; 737 else do; 738 call base_man$load_var(2,p2,1); 739 call expmac((set_label_const),arg(1)); 740 end; 741 end; 742 else do; 743 arg(1) = p2; 744 if ^ p2 -> reference.shared 745 then p2 -> reference.ref_count = p2 -> reference.ref_count + 1; 746 arg(2) = c_a(k,2); 747 call expmac$many((make_lv),addr(arg),2); 748 749 string(p2 -> reference.address) = string(cg_stat$long_string_temp -> reference.address); 750 p2 -> reference.relocation = cg_stat$long_string_temp -> reference.relocation; 751 p2 -> reference.perm_address = "1"b; 752 p2 -> reference.ic_ref = "0"b; 753 end; 754 p2 -> reference.forward_ref = "0"b; 755 756 lv2: arg(2) = p3; 757 p2 = create_label(cg_stat$cur_block,null,(by_compiler)); 758 arg(3) = prepare_operand(p2,1,atomic); 759 call expmac$many((compare_labels),addr(arg),3); 760 call expmac$fill_usage(cg_stat$text_pos,(p2 -> label.location)); 761 goto cp_exit; 762 end; 763 764 if p3s -> node.type = label_node 765 then do; 766 lv3: call flip_rands; 767 goto lv1; 768 end; 769 770 if p3s -> symbol.constant then goto lv3; 771 772 file_compare: 773 call state_man$erase_reg("11"b); /* a and q must not be used for addressing */ 774 call make_both_addressable(p2,p3,"1"b); 775 776 arg(1) = p2; 777 if ^p2s -> symbol.file then go to lv2; 778 arg(2) = p3; 779 call expmac$many((compare_files),addr(arg),2); 780 goto cp_exit; 781 782 783 update_indicators: proc; 784 785 /* a compare instruction has been used to set the indicators, 786* update machine_state with appropriate refs or punt */ 787 788 if p2 -> reference.allocate & p3 -> reference.allocate 789 then do; 790 indicators_ref(2) = p2; 791 indicators_ref(3) = p3; 792 machine_state.indicators = -2; 793 end; 794 else machine_state.indicators = -1; 795 796 end; 797 798 799 compare_decimal: proc; 800 801 dcl (lab,lab_ref,imag(2:3)) ptr; 802 803 if type2 > real_flt_dec 804 then do i = 2 to 3; 805 imag(i) = get_imaginary(refs(i)); 806 end; 807 808 call expmac$two_eis((comp_decimal),p2,p3); 809 810 if type2 <= real_flt_dec 811 then do; 812 if ^ z3 813 then call update_indicators; 814 return; 815 end; 816 817 lab = create_label(cg_stat$cur_block,null,(by_compiler)); 818 lab_ref = prepare_operand(lab,1,atomic); 819 call expmac((jump_ne),lab_ref); 820 call expmac$two_eis((comp_decimal),imag(2),imag(3)); 821 call expmac$fill_usage(cg_stat$text_pos,(lab -> label.location)); 822 call update_indicators; 823 824 end; 825 826 827 828 flip_rands: proc; 829 830 dcl p ptr, 831 z bit(1) aligned, 832 t fixed bin; 833 834 p = p2; p2 = p3; p3 = p; 835 p = q2; q2 = q3; q3 = p; 836 p = p2s; p2s = p3s; p3s = p; 837 838 t = type2; type2 = type3; type3 = t; 839 t = s2; s2 = s3; s3 = t; 840 t = size2; size2 = size3; size3 = t; 841 t = scale2; scale2 = scale3; scale3 = t; 842 843 z = atom(2); 844 atom(2) = atom(3); 845 atom(3) = z; 846 code = fixed(atom(2) || atom(3),2); 847 848 z = z2; z2 = z3; z3 = z; 849 k = 2*s2 + s3; 850 reversed = ^reversed; 851 end; 852 853 854 adjust_refs: proc; 855 856 if ^ p2 -> reference.shared 857 then call adjust_ref_count(p2,-1); 858 if ^ p3 -> reference.shared 859 then call adjust_ref_count(p3,-1); 860 861 end; 862 863 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1009.2 set_indicators.pl1 >spec>on>pl128d>set_indicators.pl1 141 1 10/25/79 1645.8 cgsystem.incl.pl1 >ldd>include>cgsystem.incl.pl1 142 2 07/21/80 1546.3 reference.incl.pl1 >ldd>include>reference.incl.pl1 143 3 05/06/74 1742.1 label.incl.pl1 >ldd>include>label.incl.pl1 144 4 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.incl.pl1 145 5 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 146 6 10/02/83 0828.4 symbol.incl.pl1 >spec>on>pl128d>symbol.incl.pl1 147 7 07/21/80 1546.3 operator.incl.pl1 >ldd>include>operator.incl.pl1 148 8 05/03/76 1320.4 data_types.incl.pl1 >ldd>include>data_types.incl.pl1 149 9 10/25/79 1645.8 declare_type.incl.pl1 >ldd>include>declare_type.incl.pl1 150 10 11/13/79 1015.8 machine_state.incl.pl1 >ldd>include>machine_state.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. a 11(09) based bit(1) level 4 packed unaligned dcl 2-3 ref 486 a_reg 3 based structure level 2 dcl 10-6 abs builtin function dcl 87 ref 272 addr builtin function dcl 87 ref 181 185 228 228 231 253 256 334 337 338 341 344 345 361 364 365 368 371 372 386 386 465 465 470 472 615 617 623 673 697 747 747 759 759 779 779 812 848 848 848 848 address 10 based structure level 2 packed unaligned dcl 2-3 set ref 749* 749 adjust_ref_count 000056 constant entry external dcl 55 ref 261 446 700 856 858 allocate 12(14) based bit(1) level 3 packed unaligned dcl 2-3 ref 788 788 anaq constant fixed bin(15,0) initial dcl 109 ref 423 aq_man$fix_scale 000060 constant entry external dcl 55 ref 659 691 aq_man$pad_aq 000110 constant entry external dcl 55 ref 511 aq_man$save_aq 000070 constant entry external dcl 55 ref 708 arg 000122 automatic pointer array dcl 41 set ref 723* 726 727* 732 733 734* 735 739* 743* 746* 747 747 756* 758* 759 759 776* 778* 779 779 assign_op$fix_dec_scaled 000122 constant entry external dcl 55 ref 288 atom 000152 automatic bit(1) array dcl 41 set ref 155* 156* 224* 236 301* 301* 303* 318* 324* 327 327 439 843 844* 844 845* 846 846 atomic 000164 automatic bit(1) dcl 41 set ref 758* 818* attributes 31 based structure level 2 dcl 6-3 b2 000155 automatic bit(2) dcl 41 set ref 154* 155 156 base_man$load_var 000040 constant entry external dcl 55 ref 738 base_man$store_ptr_to 000112 constant entry external dcl 55 ref 727 bit builtin function dcl 87 ref 154 733 bit_72 based bit(72) dcl 103 ref 386 465 bit_string constant fixed bin(15,0) initial dcl 8-1 ref 386 465 bits 12(06) based structure level 2 packed unaligned dcl 2-3 bits_per_packed_digit constant fixed bin(8,1) initial dcl 1-35 ref 241 bits_per_two_words constant fixed bin(8,0) initial dcl 1-5 ref 729 bits_per_word constant fixed bin(8,0) initial dcl 1-5 ref 384 463 515 block based structure level 1 dcl 5-5 block_node 4 based pointer level 2 packed unaligned dcl 6-3 ref 719 by_compiler constant bit(3) initial dcl 9-5 ref 757 817 c2 based bit(1) dcl 94 set ref 181* 334 361 386 c3 based bit(1) dcl 94 set ref 231* 341 368 465 c_a 000032 constant entry external dcl 55 ref 431 723 746 c_dcl_size 30 based fixed bin(24,0) level 2 dcl 6-3 ref 240 c_length 2 based fixed bin(24,0) level 2 dcl 2-3 ref 383 462 c_offset 1 based fixed bin(24,0) level 2 dcl 2-3 ref 181 231 cana constant fixed bin(15,0) initial dcl 109 ref 428 canaq constant fixed bin(15,0) initial dcl 109 ref 429 ceil builtin function dcl 87 ref 241 cg_stat$cur_block 000026 external static pointer dcl 35 set ref 757* 817* cg_stat$cur_level 000020 external static fixed bin(17,0) dcl 35 ref 719 cg_stat$last_macro 000012 external static fixed bin(17,0) dcl 35 ref 420 cg_stat$long_string_temp 000030 external static pointer dcl 35 ref 749 750 cg_stat$null_value 000024 external static bit(72) dcl 35 set ref 729* cg_stat$packed_null_value 000022 external static fixed bin(17,0) dcl 35 set ref 213* 220* cg_stat$text_pos 000010 external static fixed bin(17,0) dcl 35 set ref 760* 821* cg_static_$m_s_p 000134 external static pointer dcl 10-3 ref 10-3 char_string constant fixed bin(15,0) initial dcl 8-1 ref 391 490 506 559 check_scale 000165 automatic bit(1) dcl 41 set ref 152* 326* 648 657 689 code parameter fixed bin(17,0) dcl 30 set ref 28 154 183 327* 349 395 476 846* comp_decimal constant fixed bin(15,0) initial dcl 109 ref 808 820 compare_files constant fixed bin(15,0) initial dcl 109 ref 779 compare_labels constant fixed bin(15,0) initial dcl 109 ref 759 compare_ptrs$compare_ptrs 000014 external static fixed bin(17,0) dcl 35 set ref 224* compile_exp 000052 constant entry external dcl 55 ref 541 567 586 601 656 687 compile_exp$for_test 000054 constant entry external dcl 55 ref 413 443 compile_exp$save 000064 constant entry external dcl 55 ref 562 585 654 compile_exp$save_exp 000066 constant entry external dcl 55 ref 247 553 592 compile_exp$save_fix_scaled 000062 constant entry external dcl 55 ref 650 complex 31(31) based bit(1) level 4 packed unaligned dcl 6-3 ref 236 299 299 complex_stuff$complex_compare 000016 external static fixed bin(17,0) dcl 35 set ref 303* const 000162 automatic bit(1) array dcl 41 set ref 181 231 236 334 341 361 368 386 465 constant 32(16) based bit(1) level 4 packed unaligned dcl 6-3 ref 181 210 217 231 715 770 convert_size 000014 constant fixed bin(8,0) initial array dcl 1-5 ref 383 462 cp_chars constant fixed bin(15,0) initial dcl 109 ref 604 cpbs1 constant fixed bin(15,0) initial dcl 109 ref 393 cpbs3 constant fixed bin(15,0) initial dcl 109 ref 452 cpcs1 constant fixed bin(15,0) initial dcl 109 ref 393 cpfl1 constant fixed bin(15,0) initial dcl 109 ref 355 cpfx1 constant fixed bin(15,0) initial dcl 109 ref 310 create_label 000042 constant entry external dcl 55 ref 757 817 data_type 12 based fixed bin(5,0) level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "set_indicators" set ref 177 190 210 214* 217 221* 726* 730* data_type 31 based structure level 3 in structure "symbol" packed unaligned dcl 6-3 in procedure "set_indicators" decimal 31(28) based bit(1) level 4 packed unaligned dcl 6-3 ref 233 233 decimal_aq 11(14) based bit(1) level 4 packed unaligned dcl 2-3 ref 258 decimal_constant based structure level 1 dcl 132 dt 000141 automatic fixed bin(17,0) dcl 41 set ref 391* 393 604 entry 31(09) based bit(1) level 4 packed unaligned dcl 6-3 ref 196 eraq constant fixed bin(15,0) initial dcl 109 ref 421 evaluated 12(13) based bit(1) level 3 packed unaligned dcl 2-3 ref 411 439 expmac 000132 constant entry external dcl 55 ref 637 739 819 expmac$fill_usage 000076 constant entry external dcl 55 ref 760 821 expmac$interpret 000074 constant entry external dcl 55 ref 224 303 expmac$many 000100 constant entry external dcl 55 ref 747 759 779 expmac$one 000130 constant entry external dcl 55 ref 520 expmac$one_eis 000102 constant entry external dcl 55 ref 452 expmac$two_eis 000104 constant entry external dcl 55 ref 604 808 820 expmac$zero 000126 constant entry external dcl 55 ref 632 ext_ent 000166 automatic bit(1) dcl 41 set ref 718* 721 724 ext_entry_in constant fixed bin(15,0) initial dcl 8-1 ref 718 ext_entry_out constant fixed bin(15,0) initial dcl 8-1 ref 718 file 31(10) based bit(1) level 4 packed unaligned dcl 6-3 ref 199 777 fix_bin based fixed bin(17,0) dcl 103 ref 337 344 fix_bin_71 based fixed bin(71,0) dcl 103 ref 338 345 fixed builtin function dcl 87 ref 154 327 384 463 515 526 733 733 846 flt_bin based float bin(27) dcl 103 ref 364 371 flt_bin_63 based float bin(63) dcl 103 ref 365 372 format 31(15) based bit(1) level 4 packed unaligned dcl 6-3 ref 196 forward_ref 12(09) based bit(1) level 3 packed unaligned dcl 2-3 set ref 754* fx1_to_fx2 constant fixed bin(15,0) initial dcl 109 ref 311 gen_arithmetic_call 000044 constant entry external dcl 55 ref 301 generate_constant$bit_string 000114 constant entry external dcl 55 ref 729 generate_constant$real_fix_bin_1 000034 constant entry external dcl 55 ref 213 220 get_imaginary 000124 constant entry external dcl 55 ref 805 hard_to_load 12(23) based bit(1) level 3 packed unaligned dcl 2-3 ref 380 459 i 000130 automatic fixed bin(17,0) dcl 41 set ref 235* 236 236 236 240 241 241 241 243 243 247 247* 287* 288 288 288* 803* 805 805* ic_ref 12(10) based bit(1) level 3 packed unaligned dcl 2-3 set ref 752* imag 000214 automatic pointer array dcl 801 set ref 805* 820* 820* indicators 1 based fixed bin(17,0) level 2 dcl 10-6 set ref 161 258 444 697 792* 794* indicators_ref 420 based pointer array level 2 packed unaligned dcl 10-6 set ref 161 161 169 169 790* 791* info 11 based structure level 2 packed unaligned dcl 2-3 initial 11 based pointer level 2 packed unaligned dcl 6-3 ref 241 243 336 343 363 370 386 465 inline_operation 000046 constant entry external dcl 55 ref 301 jump_ne constant fixed bin(15,0) initial dcl 109 ref 819 k 000142 automatic fixed bin(17,0) dcl 41 set ref 274* 276* 277 278 348* 512* 515* 518 615 645 683 694* 700 706 719* 721 746* 849* lab 000210 automatic pointer dcl 801 set ref 817* 818* 821 lab_ref 000212 automatic pointer dcl 801 set ref 818* 819* label based structure level 1 dcl 3-1 in procedure "set_indicators" label 31(08) based bit(1) level 4 in structure "symbol" packed unaligned dcl 6-3 in procedure "set_indicators" ref 196 label_node constant bit(9) initial dcl 4-5 ref 195 764 level 45 based fixed bin(17,0) level 2 dcl 5-5 ref 719 load 000050 constant entry external dcl 55 ref 504 630 731 load$for_test 000106 constant entry external dcl 55 ref 407 619 626 677 location 1 based fixed bin(17,0) level 2 packed unaligned dcl 3-1 ref 760 821 long_ref 12(08) based bit(1) level 3 packed unaligned dcl 2-3 ref 380 459 m_s_p 000172 automatic pointer initial dcl 10-3 set ref 161 161 161 169 169 258 444 515 697 10-3* 790 791 792 794 mac1 000170 automatic fixed bin(15,0) dcl 41 set ref 310* 355* 637 mac2 000171 automatic fixed bin(15,0) dcl 41 set ref 311* 356* 632 632* machine_state based structure level 1 dcl 10-6 macro 000150 automatic fixed bin(15,0) dcl 41 set ref 518* 520* magnitude 0(09) based char level 2 packed unaligned dcl 132 ref 243 make_both_addressable 000072 constant entry external dcl 55 ref 774 make_lv constant fixed bin(15,0) initial dcl 109 ref 747 max builtin function dcl 87 ref 269 313 314 max_dec_scale constant fixed bin(8,0) initial dcl 1-5 ref 269 272 276 288 min builtin function dcl 87 ref 269 min_dec_scale 003330 constant fixed bin(8,0) initial dcl 1-5 ref 269 272 274 288 misc_attributes 31(19) based structure level 3 packed unaligned dcl 6-3 n 000143 automatic fixed bin(17,0) dcl 41 set ref 420* 421 422 423 428 429 node based structure level 1 dcl 4-27 node_pt 000120 automatic pointer dcl 41 set ref 153* 176 189 224* 247 301* 301* 303* 472 null builtin function dcl 87 ref 181 201 231 757 757 817 817 offset 5 based pointer level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "set_indicators" ref 181 231 offset 10(03) based bit(15) level 3 in structure "reference" packed unaligned dcl 2-3 in procedure "set_indicators" set ref 732 733* 735* op 000151 automatic fixed bin(15,0) dcl 41 set ref 393* 393* 518 op_code 0(09) based bit(9) level 2 packed unaligned dcl 7-6 ref 472 operand 1 based pointer array level 2 packed unaligned dcl 7-6 ref 176 189 247 operator based structure level 1 dcl 7-6 oraq constant fixed bin(15,0) initial dcl 109 ref 422 p 000226 automatic pointer dcl 830 set ref 834* 834 835* 835 836* 836 p2 defined pointer dcl 41 set ref 158* 161 169 177 178 181 181 210 220* 221 258 261 261* 380 380 380 383 405 407* 411 439 446 446* 452* 504* 553* 562* 592* 604* 619* 630* 659* 673 677* 683 683 683 691* 700 700* 708* 727* 729* 730 731* 738* 743 744 744 744 749 750 751 752 754 757* 758* 760 774* 776 788 790 808* 834 834* 856 856* p2_par parameter pointer dcl 30 ref 28 158 p2s defined pointer dcl 41 set ref 178* 180 181 195 196 196 196 199 203 217 233 277 282 299 336 363 386 715 719 777 836 836* p3 defined pointer dcl 41 set ref 159* 161 169 190 191 213* 214 217 231 231 431* 459 459 459 462 486 520* 585* 604* 612 626* 637* 650* 654* 756 774* 778 788 791 808* 834 834* 858 858* p3_par parameter pointer dcl 30 ref 28 159 p3s defined pointer dcl 41 set ref 191* 210 230 231 233 278 283 299 343 370 465 764 770 836 836* packed_decimal_constant based structure level 1 dcl 137 packed_ptr constant fixed bin(15,0) initial dcl 8-1 ref 210 214 217 221 perm_address 12(18) based bit(1) level 3 packed unaligned dcl 2-3 set ref 751* prec 000144 automatic fixed bin(17,0) dcl 41 set ref 240* 241 243 243 prepare_operand 000036 constant entry external dcl 55 ref 758 818 pt parameter pointer dcl 30 ref 28 153 ptr 31(05) based bit(1) level 4 packed unaligned dcl 6-3 ref 203 q 11(10) based bit(1) level 4 packed unaligned dcl 2-3 ref 612 q2 000106 automatic pointer dcl 41 set ref 176* 405 413* 439 443* 541 541* 553* 562* 567* 586* 592* 656* 673 687* 835 835* q3 000110 automatic pointer dcl 41 set ref 189* 585* 601 601* 650* 654* 835 835* real_fix_bin_1 constant fixed bin(15,0) initial dcl 8-1 ref 330 331 332 real_fix_bin_2 constant fixed bin(15,0) initial dcl 8-1 ref 307 real_flt_bin_1 constant fixed bin(15,0) initial dcl 8-1 ref 358 359 real_flt_bin_2 constant fixed bin(15,0) initial dcl 8-1 ref 352 real_flt_dec constant fixed bin(15,0) initial dcl 8-1 ref 803 810 ref_count 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-3 set ref 683* 683 744* 744 reference based structure level 1 dcl 2-3 reference_node constant bit(9) initial dcl 4-5 ref 439 541 601 refs 000100 automatic pointer array dcl 41 set ref 158* 158 159* 159 161 161 161 161 169 169 169 169 177 177 178 178 181 181 181 181 190 190 191 191 201* 210 210 213* 213 214 214 217 217 220* 220 221 221 224* 231 231 231 231 247* 258 258 261 261 261 261 288* 301* 301* 303* 380 380 380 380 380 380 383 383 405 405 407 407 411 411 431* 431 439 439 446 446 446 446 452 452 459 459 459 459 459 459 462 462 486 486 504 504 520 520 553* 553 562* 562 585* 585 592* 592 604 604 604 604 612 612 619 619 626 626 630 630 637 637 650* 650 654* 654 659 659 673 673 677 677 683 683 683 683 683 683 691 691 700 700 700 700 708 708 727 727 729* 729 730 730 731 731 738 738 743 743 744 744 744 744 744 744 749 749 750 750 751 751 752 752 754 754 756 756 757* 757 758 758 760 760 774 774 774 774 776 776 778 778 788 788 788 788 790 790 791 791 805* 808 808 808 808 834 834 834* 834 834 834 834* 834 856 856 856 856 858 858 858 858 relocation 12(24) based bit(12) level 2 packed unaligned dcl 2-3 set ref 750* 750 reversed 000156 automatic bit(1) dcl 41 set ref 152* 526 625* 625 850* 850 s1 000131 automatic fixed bin(17,0) dcl 41 set ref 330* 652 661 693 s2 000132 automatic fixed bin(17,0) dcl 41 set ref 193* 331* 337 348 358* 364 380* 384* 399 407* 415 433 480 499 504* 535 573 575 661* 693* 694 839 839* 849 s3 000133 automatic fixed bin(17,0) dcl 41 set ref 193* 332* 344 348 359* 371 433* 459* 463* 480 499 520* 548 573 575 580 637 652* 694 839 839* 849 scale 2(28) based fixed bin(7,0) level 2 in structure "symbol" packed unaligned dcl 6-3 in procedure "set_indicators" set ref 180 230 277* 278* 282* 283* scale 000145 automatic fixed bin(17,0) array dcl 41 in procedure "set_indicators" set ref 180* 180 230* 230 269 269 269 269 269 269 269 269 272 272 272 272 274 274 274 274 277 277 277 277 282 282 283 283 288 288 314* 314 314 314 314 314 316 316 316 316 322 322 322 322 648 648 648 648 650 650 657 657 657 657 659 659 689 689 689 689 691 691 841 841 841* 841 841 841 841* 841 scale1 defined fixed bin(17,0) dcl 99 set ref 314* 316 322 648 650* 657 659* 689 691* scale2 defined fixed bin(17,0) dcl 99 set ref 180* 269 269 272 274 277 282 314 316 657 689 841 841* scale3 defined fixed bin(17,0) dcl 99 set ref 230* 269 269 272 274 277 283 314 322 648 841 841* set_label_const constant fixed bin(15,0) initial dcl 109 ref 739 shared 0(11) based bit(1) level 2 packed unaligned dcl 2-3 ref 261 446 683 700 744 856 858 sign_and_magnitude based bit level 2 packed unaligned dcl 137 ref 241 size 16 based fixed bin(8,0) level 3 dcl 10-6 ref 515 size2 000134 automatic fixed bin(17,0) dcl 41 set ref 383* 384 386 496 559 576 840 840* size3 000135 automatic fixed bin(17,0) dcl 41 set ref 462* 463 465 496 511* 559 576 840 840* state_man$erase_reg 000120 constant entry external dcl 55 ref 772 storage_class 32(09) based structure level 3 packed unaligned dcl 6-3 store 000116 constant entry external dcl 55 ref 734 string builtin function dcl 87 set ref 749* 749 substr builtin function dcl 87 ref 155 156 241 243 386 465 472 sym 000114 automatic pointer array dcl 41 set ref 178* 178 180 180 181 181 191* 191 195 195 196 196 196 196 196 196 199 199 203 203 210 210 217 217 230 230 231 231 233 233 233 233 236 240 241 241 243 277 277 278 278 282 282 283 283 299 299 299 299 336 336 343 343 363 363 370 370 386 386 465 465 715 715 719 719 764 764 770 770 777 777 836 836 836* 836 836 836 836* 836 symbol based structure level 1 dcl 6-3 in procedure "set_indicators" symbol 3 based pointer level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "set_indicators" ref 178 191 t 000112 automatic pointer dcl 41 in procedure "set_indicators" set ref 336* 337 338 343* 344 345 363* 364 365 370* 371 372 t 000231 automatic fixed bin(17,0) dcl 830 in procedure "flip_rands" set ref 838* 838 839* 839 840* 840 841* 841 toff 000167 automatic bit(15) dcl 41 set ref 732* 733 735 type based bit(9) level 2 packed unaligned dcl 4-27 ref 195 439 541 601 764 type1 000136 automatic fixed bin(17,0) dcl 41 set ref 313* 330 650* 651 659* 660 691* 692 type2 000137 automatic fixed bin(17,0) dcl 41 set ref 177* 272 307 313 331 352 358 383 386 391 490 506 511* 559 632 660* 692* 718 718 803 810 838 838* type3 000140 automatic fixed bin(17,0) dcl 41 set ref 190* 272 313 332 359 462 465 632 651* 838 838* unaligned 31(22) based bit(1) level 4 packed unaligned dcl 6-3 ref 241 unpacked_ptr constant fixed bin(15,0) initial dcl 8-1 ref 726 730 value_in 11(09) based structure level 3 packed unaligned dcl 2-3 varying_ref 0(10) based bit(1) level 2 packed unaligned dcl 2-3 ref 380 459 z 000230 automatic bit(1) dcl 830 set ref 843* 845 848* 848 z2 based bit(1) dcl 94 set ref 228* 253 337* 338* 364* 365* 386* 470 615 623 848 848* z3 based bit(1) dcl 94 set ref 185* 228* 256 344* 345* 371* 372* 465* 472 617 673 697 812 848 848* zero 000160 automatic bit(1) array dcl 41 set ref 185 228 228 241* 243* 253 256 337 338 344 345 364 365 371 372 386 465 470 472 615 617 623 673 697 812 848 848 848 848 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addrel builtin function dcl 87 ana internal static fixed bin(15,0) initial dcl 109 array_node internal static bit(9) initial dcl 4-5 bits_per_char internal static fixed bin(8,0) initial dcl 1-5 bits_per_four_words internal static fixed bin(8,0) initial dcl 1-5 bits_per_half internal static fixed bin(8,0) initial dcl 1-5 bits_per_words internal static fixed bin(8,0) initial array dcl 1-5 block_node internal static bit(9) initial dcl 4-5 bound_node internal static bit(9) initial dcl 4-5 break_even_bits internal static fixed bin(8,0) initial dcl 1-5 break_even_words internal static fixed bin(8,0) initial dcl 1-5 by_context internal static bit(3) initial dcl 9-5 by_declare internal static bit(3) initial dcl 9-5 by_explicit_context internal static bit(3) initial dcl 9-5 by_implication internal static bit(3) initial dcl 9-5 by_name_agg_node internal static bit(9) initial dcl 4-5 case automatic fixed bin(17,0) dcl 41 cg_stat$single_temp external static pointer dcl 35 cg_stat$text_base external static pointer dcl 35 chars_per_word internal static fixed bin(8,0) initial dcl 1-5 clear_aq internal static fixed bin(15,0) initial dcl 109 complex_fix_bin_1 internal static fixed bin(15,0) initial dcl 8-1 complex_fix_bin_2 internal static fixed bin(15,0) initial dcl 8-1 complex_fix_dec internal static fixed bin(15,0) initial dcl 8-1 complex_flt_bin_1 internal static fixed bin(15,0) initial dcl 8-1 complex_flt_bin_2 internal static fixed bin(15,0) initial dcl 8-1 complex_flt_dec internal static fixed bin(15,0) initial dcl 8-1 context_node internal static bit(9) initial dcl 4-5 convert_offset internal static fixed bin(8,1) initial array dcl 1-35 cross_reference_node internal static bit(9) initial dcl 4-5 default_fix_bin_p internal static fixed bin(8,0) initial dcl 1-5 default_node internal static bit(9) initial dcl 4-5 entry_variable internal static fixed bin(15,0) initial dcl 8-1 format_value_node internal static bit(9) initial dcl 4-5 ind_arithmetic internal static fixed bin(17,0) initial dcl 10-68 ind_decimal_reg internal static fixed bin(17,0) initial dcl 10-68 ind_invalid internal static fixed bin(17,0) initial dcl 10-68 ind_known_refs internal static fixed bin(17,0) initial dcl 10-68 ind_logical internal static fixed bin(17,0) initial dcl 10-68 ind_string_aq internal static fixed bin(17,0) initial dcl 10-68 ind_x internal static fixed bin(17,0) initial array dcl 10-68 instruction based structure level 1 dcl 89 int_entry internal static fixed bin(15,0) initial dcl 8-1 int_entry_other internal static fixed bin(15,0) initial dcl 8-1 label_array_element_node internal static bit(9) initial dcl 4-5 label_constant internal static fixed bin(15,0) initial dcl 8-1 label_size internal static fixed bin(8,0) initial dcl 1-5 label_variable internal static fixed bin(15,0) initial dcl 8-1 list_node internal static bit(9) initial dcl 4-5 local_label_variable internal static fixed bin(15,0) initial dcl 8-1 machine_state_node internal static bit(9) initial dcl 4-5 max_block_number internal static fixed bin(17,0) initial dcl 5-74 max_index_register_value internal static fixed bin(31,0) initial dcl 1-38 max_length_p internal static fixed bin(8,0) initial dcl 1-5 max_number_of_operands internal static fixed bin(15,0) initial dcl 7-15 max_offset internal static fixed bin(8,0) initial array dcl 1-5 max_p_fix_bin_1 internal static fixed bin(8,0) initial dcl 1-5 max_p_fix_dec internal static fixed bin(8,0) initial dcl 1-5 max_p_flt_bin_1 internal static fixed bin(8,0) initial dcl 1-5 max_p_xreg internal static fixed bin(8,0) initial dcl 1-5 max_short_size internal static fixed bin(8,0) initial array dcl 1-5 operator_node internal static bit(9) initial dcl 4-5 p automatic pointer dcl 41 packed_digits_per_char internal static fixed bin(8,0) initial dcl 1-5 packed_digits_per_word internal static fixed bin(8,0) initial dcl 1-5 pl_stat$last_macro external static fixed bin(15,0) dcl 41 q automatic pointer dcl 41 real_fix_dec internal static fixed bin(15,0) initial dcl 8-1 set_chars internal static fixed bin(15,0) initial dcl 109 sf_par_node internal static bit(9) initial dcl 4-5 source_node internal static bit(9) initial dcl 4-5 statement_node internal static bit(9) initial dcl 4-5 stfx1 internal static fixed bin(15,0) initial dcl 109 symbol_node internal static bit(9) initial dcl 4-5 temporary_node internal static bit(9) initial dcl 4-5 token_node internal static bit(9) initial dcl 4-5 units_per_word internal static fixed bin(8,0) initial array dcl 1-5 NAMES DECLARED BY EXPLICIT CONTEXT. adjust_refs 003267 constant entry internal dcl 854 ref 165 172 ar_aa 001704 constant label dcl 612 ar_aa_0 001717 constant label dcl 617 ar_aa_1 001766 constant label dcl 632 ref 664 ar_aa_2 002002 constant label dcl 637 ar_aa_3 001754 constant label dcl 630 ref 711 ar_ae 002117 constant label dcl 668 ar_ea 002120 constant label dcl 673 ar_ee 002020 constant label dcl 645 arith_ea_sw 000010 constant label array(0:3) dcl 632 ref 706 arith_sw 000004 constant label array(0:3) dcl 612 ref 349 begin 000043 constant label dcl 152 compare_decimal 002775 constant entry internal dcl 799 ref 265 269 280 292 cp_exit 001505 constant label dcl 526 ref 225 263 296 304 408 415 421 422 423 428 429 448 454 606 620 627 641 678 703 761 780 file_compare 002672 constant label dcl 772 ref 199 flip_rands 003156 constant entry internal dcl 828 ref 253 470 486 496 499 530 563 573 576 612 615 645 668 710 766 l1 000734 constant label dcl 326 ref 319 label_compare 002260 constant label dcl 715 ref 196 lft 001157 constant label dcl 407 ref 411 lv1 002263 constant label dcl 718 ref 195 767 lv2 002557 constant label dcl 756 ref 777 lv3 002664 constant label dcl 766 ref 770 set_indicators 000033 constant entry external dcl 28 sk 001013 constant label dcl 348 ref 375 st_0 001150 constant label dcl 399 ref 472 st_aa 001403 constant label dcl 480 st_aa_2 001430 constant label dcl 504 ref 564 st_aa_3 001441 constant label dcl 506 ref 569 587 st_aa_4 001457 constant label dcl 515 ref 434 st_ae 001512 constant label dcl 530 st_cp 001323 constant label dcl 459 ref 395 st_ea 001513 constant label dcl 535 st_ee 001600 constant label dcl 573 st_ee_1 001664 constant label dcl 604 ref 480 543 554 st_ee_2 001640 constant label dcl 592 ref 575 str 001070 constant label dcl 380 ref 186 string_sw 000000 constant label array(0:3) dcl 480 ref 476 update_indicators 002752 constant entry internal dcl 783 ref 522 605 640 812 822 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4036 4174 3352 4046 Length 4656 3352 136 446 464 Idodie ^B6 Cormier dodie Operator aq_man$fix_scale aq_man$pad_aq aq_man$save_aq assign_op$fix_dec_scaled base_man$load_var base_man$store_ptr_to c_a compile_exp compile_exp$for_test compile_exp$save compile_exp$save_exp compile_exp$save_fix_scaled create_label expmac expmac$fill_usage expmac$interpret expmac$many expmac$one expmac$one_eis expmac$two_eis expmac$zero gen_arithmetic_call generate_constant$bit_string generate_constant$real_fix_bin_1 get_imaginary inline_operation load load$for_test make_both_addressable prepare_operand state_man$erase_reg store THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_stat$cur_block cg_stat$cur_level cg_stat$last_macro cg_stat$long_string_temp cg_stat$null_value cg_stat$packed_null_value cg_stat$text_pos cg_static_$m_s_p compare_ptrs$compare_ptrs complex_stuff$complex_compare LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 28 000026 10 3 000040 152 000043 153 000045 154 000051 155 000056 156 000061 158 000065 159 000070 161 000073 165 000107 166 000110 168 000113 169 000114 172 000124 173 000125 176 000131 177 000134 178 000140 180 000142 181 000147 183 000165 185 000171 186 000173 189 000174 190 000177 191 000203 193 000205 195 000207 196 000213 199 000217 201 000222 203 000224 210 000230 213 000241 214 000252 216 000255 217 000256 220 000266 221 000277 224 000302 225 000317 228 000320 230 000322 231 000327 233 000345 235 000353 236 000361 240 000373 241 000376 243 000416 246 000425 247 000426 248 000442 253 000444 256 000447 258 000451 261 000461 263 000477 265 000500 266 000501 269 000502 272 000520 274 000536 276 000544 277 000546 278 000553 280 000560 282 000561 283 000566 284 000573 287 000574 288 000601 290 000617 292 000621 296 000622 299 000623 301 000631 303 000665 304 000702 307 000703 310 000706 311 000710 313 000712 314 000717 316 000724 318 000727 319 000730 322 000731 324 000733 326 000734 327 000736 330 000750 331 000753 332 000756 334 000761 336 000763 337 000765 338 000773 341 000776 343 001000 344 001002 345 001010 348 001013 349 001017 352 001022 355 001024 356 001026 358 001027 359 001032 361 001035 363 001037 364 001041 365 001047 368 001052 370 001054 371 001056 372 001064 375 001067 380 001070 383 001105 384 001111 386 001116 391 001133 393 001136 393 001142 395 001144 399 001150 405 001153 407 001157 408 001170 411 001171 413 001175 415 001204 420 001206 421 001211 422 001213 423 001215 428 001217 429 001221 431 001223 433 001240 434 001242 439 001243 443 001256 444 001265 446 001270 448 001306 452 001307 454 001322 459 001323 462 001340 463 001344 465 001351 470 001366 472 001371 476 001400 480 001403 486 001407 490 001414 496 001417 497 001423 499 001424 504 001430 506 001441 etina h66J Lastuka tina Operator  J.J ҳ4J X.25VIP7400 ?UTaylor @02 XʰN Taylor NMLPROD Q*Q@Tf1noneVERSATERM QjK0КAta p* Ata SiteSA  Rdn:zMills Bdp Mills Multics Mills  NMills Mills Multics O\2PQ:T1P6noneVIP7400X Nf ----------------------------------------------------------- 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