THIS FILE IS DAMAGED COMPILATION LISTING OF SEGMENT e_v Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1634.4 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 /* Procedure to encode a variable or expression for use in symbol table 12* 13* Initial Version: 7 May 1970 by BLW 14* Modified: 4 September 1970 by BLW 15* Modified: 16 February 1972 by BLW for Version II 16* Modified: 2 July 1972 by BLW for new encoding scheme 17* Modified: 26 September 1972 by BLW for std object segments 18* Modified: 21 January 1973 by BLW for controlled storage 19* Modified: 16 Nov 1979 by PCK to fix 1858 */ 20 21 e_v: proc(symb,coded_value,var,const,code,reloc); 22 23 dcl symb ptr, /* points at symbol node */ 24 coded_value fixed bin, /* where to store coded value */ 25 var ptr, /* variable part of value */ 26 const fixed bin, /* constant part of value */ 27 code fixed bin, /* type of value */ 28 reloc bit(36) aligned; /* relocation (output) */ 29 30 dcl (cg_stat$cur_block,cg_stat$encoded_values,cg_stat$cur_statement, 31 cg_stat$ev_qual,cg_stat$last_encoded,cg_stat$text_base, 32 cg_stat$dummy_block,cg_stat$dummy_statement,cg_stat$first_ref, 33 cg_stat$next_ref) ptr ext, 34 cg_stat$in_thunk bit(1) ext, 35 (cg_stat$text_pos,cg_stat$cur_level) fixed bin(18) ext; 36 37 dcl (vp,cvp,ap,bp,rp,sp,qp,xp,s1,s2,p,arg(2)) ptr, 38 dl fixed bin(6), 39 (lab,atomic) aligned bit(1), 40 macro fixed bin(15), 41 delta fixed bin(18), 42 n fixed bin(18), 43 fb_18 fixed bin(18) based; 44 45 dcl compare_expression entry(ptr,ptr) returns(bit(1) aligned) reducible; 46 dcl (compile_exp,compile_statement) entry(ptr), 47 expmac entry(fixed bin(15),ptr), 48 expmac$zero entry(fixed bin(15)), 49 expmac$many entry(fixed bin(15),ptr,fixed bin), 50 load entry(ptr,fixed bin), 51 prepare_operand entry(ptr,fixed bin,bit(1) aligned) returns(ptr), 52 base_man$load_arg entry(fixed bin,ptr) returns(bit(3) aligned), 53 state_man$flush entry, 54 make_mod entry(fixed bin(17),fixed bin) returns(fixed bin(18)), 55 token_to_binary entry(ptr) reducible returns(fixed bin), 56 c_a entry(fixed bin,fixed bin) returns(ptr); 57 58 dcl fix_bin fixed bin based; 59 60 dcl (addr,addrel,bit,fixed,null,string) builtin; 61 62 dcl 1 value aligned based(cvp), 63 2 code unal bit(6), 64 2 n1 unal bit(6), 65 2 n2 unal bit(6), 66 2 offset unal bit(18); 67 68 dcl 1 lxl_ins aligned based, 69 2 stack_size unal bit(18), 70 2 rhs unal bit(18); 71 72 dcl ( adfx1 init(19), 73 load_pt_reg init(172), 74 end_ev_label init(322), 75 beg_ev_proc init(318), 76 end_ev_proc init(319)) fixed bin(15) int static; 77 1 1 /* BEGIN INCLUDE FILE ... pl1_tree_areas.incl.pl1 */ 1 2 1 3 /* format: style3 */ 1 4 dcl tree_area area based (pl1_stat_$tree_area_ptr); 1 5 dcl xeq_tree_area area based (pl1_stat_$xeq_tree_area_ptr); 1 6 1 7 dcl pl1_stat_$tree_area_ptr 1 8 ptr ext static, 1 9 pl1_stat_$xeq_tree_area_ptr 1 10 ptr ext static; 1 11 1 12 /* END INCLUDE FILE ... op_codes.incl.pl1 */ 78 2 1 /* BEGIN INCLUDE FILE ... reference.incl.pl1 */ 2 2 2 3 dcl 1 reference based aligned, 2 4 2 node_type bit(9) unaligned, 2 5 2 array_ref bit(1) unaligned, 2 6 2 varying_ref bit(1) unaligned, 2 7 2 shared bit(1) unaligned, 2 8 2 put_data_sw bit(1) unaligned, 2 9 2 processed bit(1) unaligned, 2 10 2 units fixed(3) unaligned, 2 11 2 ref_count fixed(17) unaligned, 2 12 2 c_offset fixed(24), 2 13 2 c_length fixed(24), 2 14 2 symbol ptr unaligned, 2 15 2 qualifier ptr unaligned, 2 16 2 offset ptr unaligned, 2 17 2 length ptr unaligned, 2 18 2 subscript_list ptr unaligned, 2 19 /* these fields are used by the 645 code generator */ 2 20 2 address structure unaligned, 2 21 3 base bit(3), 2 22 3 offset bit(15), 2 23 3 op bit(9), 2 24 3 no_address bit(1), 2 25 3 inhibit bit(1), 2 26 3 ext_base bit(1), 2 27 3 tag bit(6), 2 28 2 info structure unaligned, 2 29 3 address_in structure, 2 30 4 b dimension(0:7) bit(1), 2 31 4 storage bit(1), 2 32 3 value_in structure, 2 33 4 a bit(1), 2 34 4 q bit(1), 2 35 4 aq bit(1), 2 36 4 string_aq bit(1), 2 37 4 complex_aq bit(1), 2 38 4 decimal_aq bit(1), 2 39 4 b dimension(0:7) bit(1), 2 40 4 storage bit(1), 2 41 4 indicators bit(1), 2 42 4 x dimension(0:7) bit(1), 2 43 3 other structure, 2 44 4 big_offset bit(1), 2 45 4 big_length bit(1), 2 46 4 modword_in_offset bit(1), 2 47 2 data_type fixed(5) unaligned, 2 48 2 bits structure unaligned, 2 49 3 padded_ref bit(1), 2 50 3 aligned_ref bit(1), 2 51 3 long_ref bit(1), 2 52 3 forward_ref bit(1), 2 53 3 ic_ref bit(1), 2 54 3 temp_ref bit(1), 2 55 3 defined_ref bit(1), 2 56 3 evaluated bit(1), 2 57 3 allocate bit(1), 2 58 3 allocated bit(1), 2 59 3 aliasable bit(1), 2 60 3 even bit(1), 2 61 3 perm_address bit(1), 2 62 3 aggregate bit(1), 2 63 3 hit_zero bit(1), 2 64 3 dont_save bit(1), 2 65 3 fo_in_qual bit(1), 2 66 3 hard_to_load bit(1), 2 67 2 relocation bit(12) unaligned, 2 68 2 more_bits structure unaligned, 2 69 3 substr bit(1), 2 70 3 padded_for_store_ref bit(1), 2 71 3 aligned_for_store_ref bit(1), 2 72 3 mbz bit(15), 2 73 2 store_ins bit(18) unaligned; 2 74 2 75 /* END INCLUDE FILE ... reference.incl.pl1 */ 79 3 1 /* BEGIN INCLUDE FILE ... operator.incl.pl1 */ 3 2 3 3 /* Modified: 2 Apr 1980 by PCK to add max_number_of_operands */ 3 4 3 5 /* format: style3 */ 3 6 dcl 1 operator based aligned, 3 7 2 node_type bit (9) unaligned, 3 8 2 op_code bit (9) unaligned, 3 9 2 shared bit (1) unaligned, 3 10 2 processed bit (1) unaligned, 3 11 2 optimized bit (1) unaligned, 3 12 2 number fixed (14) unaligned, 3 13 2 operand dimension (n refer (operator.number)) ptr unaligned; 3 14 3 15 dcl max_number_of_operands 3 16 fixed bin (15) int static options (constant) initial (32767); 3 17 3 18 /* END INCLUDE FILE ... operator.incl.pl1 */ 80 4 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 4 2 4 3 dcl 1 symbol based aligned, 4 4 2 node_type bit(9) unal, 4 5 2 source_id structure unal, 4 6 3 file_number bit(8), 4 7 3 line_number bit(14), 4 8 3 statement_number bit(5), 4 9 2 location fixed(18) unal unsigned, 4 10 2 allocated bit(1) unal, 4 11 2 dcl_type bit(3) unal, 4 12 2 reserved bit(6) unal, 4 13 2 pix unal, 4 14 3 pic_fixed bit(1) unal, 4 15 3 pic_float bit(1) unal, 4 16 3 pic_char bit(1) unal, 4 17 3 pic_scale fixed(7) unal, 4 18 3 pic_size fixed(7) unal, 4 19 2 level fixed(8) unal, 4 20 2 boundary fixed(3) unal, 4 21 2 size_units fixed(3) unal, 4 22 2 scale fixed(7) unal, 4 23 2 runtime bit(18) unal, 4 24 2 runtime_offset bit(18) unal, 4 25 2 block_node ptr unal, 4 26 2 token ptr unal, 4 27 2 next ptr unal, 4 28 2 multi_use ptr unal, 4 29 2 cross_references ptr unal, 4 30 2 initial ptr unal, 4 31 2 array ptr unal, 4 32 2 descriptor ptr unal, 4 33 2 equivalence ptr unal, 4 34 2 reference ptr unal, 4 35 2 general ptr unal, 4 36 2 father ptr unal, 4 37 2 brother ptr unal, 4 38 2 son ptr unal, 4 39 2 word_size ptr unal, 4 40 2 bit_size ptr unal, 4 41 2 dcl_size ptr unal, 4 42 2 symtab_size ptr unal, 4 43 2 c_word_size fixed(24), 4 44 2 c_bit_size fixed(24), 4 45 2 c_dcl_size fixed(24), 4 46 4 47 2 attributes structure aligned, 4 48 3 data_type structure unal, 4 49 4 structure bit(1) , 4 50 4 fixed bit(1), 4 51 4 float bit(1), 4 52 4 bit bit(1), 4 53 4 char bit(1), 4 54 4 ptr bit(1), 4 55 4 offset bit(1), 4 56 4 area bit(1), 4 57 4 label bit(1), 4 58 4 entry bit(1), 4 59 4 file bit(1), 4 60 4 arg_descriptor bit(1), 4 61 4 storage_block bit(1), 4 62 4 explicit_packed bit(1), /* options(packed) */ 4 63 4 condition bit(1), 4 64 4 format bit(1), 4 65 4 builtin bit(1), 4 66 4 generic bit(1), 4 67 4 picture bit(1), 4 68 4 69 3 misc_attributes structure unal, 4 70 4 dimensioned bit(1), 4 71 4 initialed bit(1), 4 72 4 aligned bit(1), 4 73 4 unaligned bit(1), 4 74 4 signed bit(1), 4 75 4 unsigned bit(1), 4 76 4 precision bit(1), 4 77 4 varying bit(1), 4 78 4 local bit(1), 4 79 4 decimal bit(1), 4 80 4 binary bit(1), 4 81 4 real bit(1), 4 82 4 complex bit(1), 4 83 4 variable bit(1), 4 84 4 reducible bit(1), 4 85 4 irreducible bit(1), 4 86 4 returns bit(1), 4 87 4 position bit(1), 4 88 4 internal bit(1), 4 89 4 external bit(1), 4 90 4 like bit(1), 4 91 4 member bit(1), 4 92 4 non_varying bit(1), 4 93 4 options bit(1), 4 94 4 variable_arg_list bit(1), /* options(variable) */ 4 95 4 alloc_in_text bit(1), /* options(constant) */ 4 96 4 97 3 storage_class structure unal, 4 98 4 auto bit(1), 4 99 4 based bit(1), 4 100 4 static bit(1), 4 101 4 controlled bit(1), 4 102 4 defined bit(1), 4 103 4 parameter bit(1), 4 104 4 param_desc bit(1), 4 105 4 constant bit(1), 4 106 4 temporary bit(1), 4 107 4 return_value bit(1), 4 108 4 109 3 file_attributes structure unal, 4 110 4 print bit(1), 4 111 4 input bit(1), 4 112 4 output bit(1), 4 113 4 update bit(1), 4 114 4 stream bit(1), 4 115 4 reserved_1 bit(1), 4 116 4 record bit(1), 4 117 4 sequential bit(1), 4 118 4 direct bit(1), 4 119 4 interactive bit(1), /* env(interactive) */ 4 120 4 reserved_2 bit(1), 4 121 4 reserved_3 bit(1), 4 122 4 stringvalue bit(1), /* env(stringvalue) */ 4 123 4 keyed bit(1), 4 124 4 reserved_4 bit(1), 4 125 4 environment bit(1), 4 126 4 127 3 compiler_developed structure unal, 4 128 4 aliasable bit(1), 4 129 4 packed bit(1), 4 130 4 passed_as_arg bit(1), 4 131 4 allocate bit(1), 4 132 4 set bit(1), 4 133 4 exp_extents bit(1), 4 134 4 refer_extents bit(1), 4 135 4 star_extents bit(1), 4 136 4 isub bit(1), 4 137 4 put_in_symtab bit(1), 4 138 4 contiguous bit(1), 4 139 4 put_data bit(1), 4 140 4 overlayed bit(1), 4 141 4 error bit(1), 4 142 4 symtab_processed bit(1), 4 143 4 overlayed_by_builtin bit(1), 4 144 4 defaulted bit(1), 4 145 4 connected bit(1); 4 146 4 147 /* END INCLUDE FILE ... symbol.incl.pl1 */ 81 5 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 5 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 5 3 /* format: style3,idind30 */ 5 4 5 5 declare 1 block aligned based, 5 6 2 node_type bit (9) unaligned, 5 7 2 source_id structure unaligned, 5 8 3 file_number bit (8), 5 9 3 line_number bit (14), 5 10 3 statement_number bit (5), 5 11 2 father ptr unaligned, 5 12 2 brother ptr unaligned, 5 13 2 son ptr unaligned, 5 14 2 declaration ptr unaligned, 5 15 2 end_declaration ptr unaligned, 5 16 2 default ptr unaligned, 5 17 2 end_default ptr unaligned, 5 18 2 context ptr unaligned, 5 19 2 prologue ptr unaligned, 5 20 2 end_prologue ptr unaligned, 5 21 2 main ptr unaligned, 5 22 2 end_main ptr unaligned, 5 23 2 return_values ptr unaligned, 5 24 2 return_count ptr unaligned, 5 25 2 plio_ps ptr unaligned, 5 26 2 plio_fa ptr unaligned, 5 27 2 plio_ffsb ptr unaligned, 5 28 2 plio_ssl ptr unaligned, 5 29 2 plio_fab2 ptr unaligned, 5 30 2 block_type bit (9) unaligned, 5 31 2 prefix bit (12) unaligned, 5 32 2 like_attribute bit (1) unaligned, 5 33 2 no_stack bit (1) unaligned, 5 34 2 get_data bit (1) unaligned, 5 35 2 flush_at_call bit (1) unaligned, 5 36 2 processed bit (1) unaligned, 5 37 2 text_displayed bit (1) unaligned, 5 38 2 number fixed bin (9) unsigned unaligned, 5 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 5 40 2 temp_list ptr, 5 41 2 entry_list ptr, 5 42 2 o_and_s ptr, 5 43 2 why_nonquick aligned, 5 44 3 auto_adjustable_storage bit (1) unaligned, 5 45 3 returns_star_extents bit (1) unaligned, 5 46 3 stack_extended_by_args bit (1) unaligned, 5 47 3 invoked_by_format bit (1) unaligned, 5 48 3 format_statement bit (1) unaligned, 5 49 3 io_statements bit (1) unaligned, 5 50 3 assigned_to_entry_var bit (1) unaligned, 5 51 3 condition_statements bit (1) unaligned, 5 52 3 no_owner bit (1) unaligned, 5 53 3 recursive_call bit (1) unaligned, 5 54 3 options_non_quick bit (1) unaligned, 5 55 3 options_variable bit (1) unaligned, 5 56 3 never_referenced bit (1) unaligned, 5 57 3 pad_nonquick bit (5) unaligned, 5 58 2 prologue_flag bit (1) unaligned, 5 59 2 options_main bit (1) unaligned, 5 60 2 pad bit (16) unaligned, 5 61 2 number_of_entries fixed bin (17), 5 62 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 */ 82 6 1 /* *********************************************************** 6 2* * * 6 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6 4* * * 6 5* *********************************************************** */ 6 6 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 6 7 /* Internal interface of the PL/I compiler */ 6 8 6 9 dcl 1 statement based aligned, 6 10 2 node_type bit(9) unaligned, 6 11 2 source_id structure unaligned, 6 12 3 file_number bit(8), 6 13 3 line_number bit(14), 6 14 3 statement_number bit(5), 6 15 2 next ptr unaligned, 6 16 2 back ptr unaligned, 6 17 2 root ptr unaligned, 6 18 2 labels ptr unaligned, 6 19 2 reference_list ptr unaligned, 6 20 2 state_list ptr unaligned, 6 21 2 reference_count fixed(17) unaligned, 6 22 2 ref_count_copy fixed(17) unaligned, 6 23 2 object structure unaligned, 6 24 3 start fixed(17), 6 25 3 finish fixed(17), 6 26 2 source structure unaligned, 6 27 3 segment fixed(11), 6 28 3 start fixed(23), 6 29 3 length fixed(11), 6 30 2 prefix bit(12) unaligned, 6 31 2 optimized bit(1) unaligned, 6 32 2 free_temps bit(1) unaligned, 6 33 2 LHS_in_RHS bit(1) unaligned, 6 34 2 statement_type bit(9) unaligned, 6 35 2 bits structure unaligned, 6 36 3 processed bit(1) unaligned, 6 37 3 put_in_profile bit(1) unaligned, 6 38 3 generated bit(1) unaligned, 6 39 3 snap bit(1) unaligned, 6 40 3 system bit(1) unaligned, 6 41 3 irreducible bit(1) unaligned, 6 42 3 checked bit(1) unaligned, 6 43 3 save_temps bit(1) unaligned, 6 44 3 suppress_warnings bit(1) unaligned, 6 45 3 force_nonquick bit(1) unaligned, 6 46 3 expanded_by_name bit(1) unaligned, 6 47 3 begins_loop bit(1) unaligned, 6 48 3 pad bit(24) unaligned; 6 49 6 50 /* END INCLUDE FILE ... statement.incl.pl1 */ 83 7 1 dcl 1 ev_node based, 7 2 2 next ptr, 7 3 2 name ptr, 7 4 2 block ptr, 7 5 2 exp ptr, 7 6 2 equiv ptr, 7 7 2 const fixed bin(18), 7 8 2 first fixed bin(18), 7 9 2 last fixed bin(18), 7 10 2 code fixed bin(18); 7 11 7 12 dcl 1 ev_equiv based, 7 13 2 next ptr, 7 14 2 name ptr, 7 15 2 code fixed bin(18); 84 8 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 8 2 8 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 8 4 8 5 dcl ( block_node initial("000000001"b), 8 6 statement_node initial("000000010"b), 8 7 operator_node initial("000000011"b), 8 8 reference_node initial("000000100"b), 8 9 token_node initial("000000101"b), 8 10 symbol_node initial("000000110"b), 8 11 context_node initial("000000111"b), 8 12 array_node initial("000001000"b), 8 13 bound_node initial("000001001"b), 8 14 format_value_node initial("000001010"b), 8 15 list_node initial("000001011"b), 8 16 default_node initial("000001100"b), 8 17 machine_state_node initial("000001101"b), 8 18 source_node initial("000001110"b), 8 19 label_node initial("000001111"b), 8 20 cross_reference_node initial("000010000"b), 8 21 sf_par_node initial("000010001"b), 8 22 temporary_node initial("000010010"b), 8 23 label_array_element_node initial("000010011"b), 8 24 by_name_agg_node initial("000010100"b)) 8 25 bit(9) internal static aligned options(constant); 8 26 8 27 dcl 1 node based aligned, 8 28 2 type unal bit(9), 8 29 2 source_id unal structure, 8 30 3 file_number bit(8), 8 31 3 line_number bit(14), 8 32 3 statement_number bit(5); 8 33 8 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 85 9 1 /* BEGIN INCLUDE FILE ... op_codes.incl.pl1 */ 9 2 9 3 /* Modified: 25 Apr 1979 by PCK 4-bit decimal */ 9 4 /* Modified: 6 Jun 1979 by PG to add rank and byte */ 9 5 /* Modified: 26 Dec 1979 by PCK to add assign_by_name */ 9 6 /* Modified: 26 July 82 BIM wordno, segno */ 9 7 9 8 dcl ( add initial("000010001"b), /* opnd(1) <- opnd(2)+opnd(3) */ 9 9 sub initial("000010010"b), /* opnd(1) <- opnd(2)-opnd(3) */ 9 10 mult initial("000010011"b), /* opnd(1) <- opnd(2)*opnd(3) */ 9 11 div initial("000010100"b), /* opnd(1) <- opnd(2)/opnd(3) */ 9 12 negate initial("000010101"b), /* opnd(1) <- -opnd(2) */ 9 13 exp initial("000010110"b), /* opnd(1) <- opnd(2) ** opnd(3) */ 9 14 9 15 and_bits initial("000100001"b), /* opnd(1) <- opnd(2) & opnd(3) */ 9 16 or_bits initial("000100010"b), /* opnd(1) <- opnd(2)|opnd(3) */ 9 17 xor_bits initial("000100011"b), /* opnd(1) <- opnd(2) xor opnd(3) */ 9 18 not_bits initial("000100100"b), /* opnd(1) <- ^opnd(2) */ 9 19 cat_string initial("000100101"b), /* opnd(1) <- opnd(2)||opnd(3) */ 9 20 bool_fun initial("000100110"b), /* opnd(1) <- bool(opnd(2),opnd(3),opnd(4)) */ 9 21 9 22 assign initial("000110001"b), /* opnd(1) <- opnd(2) */ 9 23 assign_size_ck initial("000110010"b), /* opnd(1) <- opnd(2) */ 9 24 assign_zero initial("000110011"b), /* opnd(1) <- 0 */ 9 25 copy_words initial("000110100"b), /* move opnd(2) to opnd(1) by opnd(3) words */ 9 26 copy_string initial("000110101"b), /* move opnd(2) to opnd(1) by opnd(3) units */ 9 27 make_desc initial("000110110"b), /* opnd(1) <- descriptor(opnd(2),opnd(3)) */ 9 28 assign_round initial("000110111"b), /* opnd(1) <- opnd(2) rounded */ 9 29 pack initial("000111000"b), /* opnd(1) <- encode to picture opnd(2) */ 9 30 unpack initial("000111001"b), /* opnd(1) <- decode from picture opnd(2) */ 9 31 9 32 less_than initial("001000100"b), /* opnd(1) <- opnd(2) < opnd(3) */ 9 33 greater_than initial("001000101"b), /* opnd(1) <- opnd(2) > opnd(3) */ 9 34 equal initial("001000110"b), /* opnd(1) <- opnd(2) = opnd(3) */ 9 35 not_equal initial("001000111"b), /* opnd(1) <- opnd(2) ^= opnd(3) */ 9 36 less_or_equal initial("001001000"b), /* opnd(1) <- opnd(2) <= opnd(3) */ 9 37 greater_or_equal initial("001001001"b), /* opnd(1) <- opnd(2) >= opnd(3) */ 9 38 9 39 jump initial("001010001"b), /* go to opnd(1) unconditionally */ 9 40 jump_true initial("001010010"b), /* go to opnd(1) if opnd(2) is not 0 */ 9 41 jump_false initial("001010011"b), /* go to opnd(1) if opnd(2) is all 0 */ 9 42 jump_if_lt initial("001010100"b), /* go to opnd(1) if opnd(2) < opnd(3) */ 9 43 jump_if_gt initial("001010101"b), /* go to opnd(1) if opnd(2) > opnd(3) */ 9 44 jump_if_eq initial("001010110"b), /* go to opnd(1) if opnd(2) = opnd(3) */ 9 45 jump_if_ne initial("001010111"b), /* go to opnd(1) if opnd(2) ^= opnd(3) */ 9 46 jump_if_le initial("001011000"b), /* go to opnd(1) if opnd(2) <= opnd(3) */ 9 47 jump_if_ge initial("001011001"b), /* go to opnd(1) if opnd(2) >= opnd(3) */ 9 48 9 49 std_arg_list initial("001100001"b), /* opnd(1) <- arglist(opnd(2) desclist(opnd(3))) */ 9 50 return_words initial("001100010"b), /* return aggregate opnd(1), opnd(2) is length in words */ 9 51 std_call initial("001100011"b), /* opnd(1) <- call opnd(2) with opnd(3) */ 9 52 return_bits initial("001100100"b), /* return aggregate opnd(1), opnd(2) is length in bits */ 9 53 std_entry initial("001100101"b), /* entry(opnd(1)... opnd(n)) */ 9 54 return_string initial("001100110"b), /* return string opnd(1) */ 9 55 ex_prologue initial("001100111"b), /* execute the prologue -no operands- */ 9 56 allot_auto initial("001101000"b), /* opnd(1) <- addrel(stack,opnd(2)) */ 9 57 param_ptr initial("001101001"b), /* opnd(1) <- ptr to opnd(2) in block opnd(3) */ 9 58 param_desc_ptr initial("001101010"b), /* opnd(1) <- ptr to opnd(2) in block opnd(3) */ 9 59 std_return initial("001101011"b), /* return -no arguments- */ 9 60 allot_ctl initial("001101100"b), /* allocate opnd(1) , length in words is opnd(2) */ 9 61 free_ctl initial("001101101"b), /* free opnd(1) */ 9 62 stop initial("001101110"b), /* stop - terminate run unit */ 9 63 9 64 mod_bit initial("001110000"b), /* opnd(1) <- mod(opnd(3),36), 9 65* opnd(2) <- opnd(3) / 36 */ 9 66 mod_byte initial("001110001"b), /* opnd(1) <- mod(opnd(3),4), 9 67* opnd(2) <- opnd(3) / 4 */ 9 68 mod_half initial("001110010"b), /* opnd(1) <- mod(opnd(3),2), 9 69* opnd(2) <- opnd(3) / 2 */ 9 70 mod_word initial("001110011"b), /* TO BE DEFINED BY BLW */ 9 71 9 72 bit_to_char initial("010000000"b), /* opnd(1) <- (opnd(2)+8)/9 */ 9 73 bit_to_word initial("010000001"b), /* opnd(1) <- (opnd(2)+35)/36 */ 9 74 char_to_word initial("010000010"b), /* opnd(1) <- (opnd(2)+3)/4 */ 9 75 half_to_word initial("010000011"b), /* opnd(1) <- (opnd(2)+1)/2 */ 9 76 word_to_mod2 initial("010000100"b), /* opnd(1) <- (opnd(2)+1)/2*2 */ 9 77 word_to_mod4 initial("010000101"b), /* opnd(1) <- (opnd(2)+3)/4*4 */ 9 78 word_to_mod8 initial("010000110"b), /* opnd(1) <- (opnd(2)+7)/8*8 */ 9 79 rel_fun initial("010000111"b), /* opnd(1) <- rel(opnd(2)) */ 9 80 baseno_fun initial("010001000"b), /* opnd(1) <- baseno(opnd(2)) */ 9 81 desc_size initial("010001001"b), /* opnd(1) <- substr(opnd(2),13,24) */ 9 82 bit_pointer initial("010001010"b), /* opnd(1) <- bit offset of opnd(2) */ 9 83 index_before_fun initial("010001011"b), /* opnd(1) <- length of before(opnd(2),opnd(3)) */ 9 84 index_after_fun initial("010001100"b), /* opnd(1) <- offset of after(opnd(2),opnd(3)) in opnd(2) */ 9 85 verify_ltrim_fun initial("010001101"b), /* opnd(1) <- offset of ltrim(opnd(2),opnd(3)) in opnd(2) */ 9 86 verify_rtrim_fun initial("010001110"b), /* opnd(1) <- length(opnd(2))-length(rtrim(opnd(2),opnd(3))) */ 9 87 digit_to_bit initial("010001111"b), /* opnd(1) <- 9*opnd(2)/2 */ 9 88 9 89 ceil_fun initial("010010000"b), /* opnd(1) <- ceil(opnd(2)) */ 9 90 floor_fun initial("010010001"b), /* opnd(1) <- floor(opnd(2)) */ 9 91 round_fun initial("010010010"b), /* opnd(1) <- round(opnd(2)) */ 9 92 sign_fun initial("010010011"b), /* opnd(1) <- sign(opnd(2)) */ 9 93 abs_fun initial("010010100"b), /* opnd(1) <- abs(opnd(2)) */ 9 94 trunc_fun initial("010010101"b), /* opnd(1) <- trunc(opnd(2)) */ 9 95 byte_fun initial("010010110"b), /* opnd(1) <- byte(opnd(2)) */ 9 96 rank_fun initial("010010111"b), /* opnd(1) <- rank(opnd(2)) */ 9 97 index_rev_fun initial("010011000"b), /* opnd(1) <- index(reverse(opnd(2)),reverse(opnd(3))) */ 9 98 search_rev_fun initial("010011001"b), /* opnd(1) <- search(reverse(opnd(2)),opnd(3)) */ 9 99 verify_rev_fun initial("010011010"b), /* opnd(1) <- verify(reverse(opnd(2)),opnd(3)) */ 9 100 wordno_fun initial("010011011"b), /* opnd(1) <- wordno (opnd(2)) */ 9 101 segno_fun initial("010011100"b), /* opnd(1) <- segno (opnd(2)) */ 9 102 bitno_fun initial("010011101"b), /* opnd(1) <- bitno (opnd(2)) */ 9 103 charno_fun initial("010011110"b), /* opnd(1) <- charno (opnd(2)) */ 9 104 9 105 index_fun initial("010100000"b), /* opnd(1) <- index(opnd(2),opnd(3)) */ 9 106 off_fun initial("010100001"b), /* opnd(1) <- offset(opnd(2),opnd(3)) */ 9 107 complex_fun initial("010100010"b), /* opnd(1) <- complex(opnd(2),opnd(3)) */ 9 108 conjg_fun initial("010100011"b), /* opnd(1) <- conjg(opnd(2),opnd(3)) */ 9 109 mod_fun initial("010100100"b), /* opnd(1) <- mod(opnd(2),opnd(3)) */ 9 110 repeat_fun initial("010100101"b), /* opnd(1) <- repeat(opnd(2),opnd(3)) */ 9 111 verify_fun initial("010100110"b), /* opnd(1) <- verify(opnd(2),opnd(3)) */ 9 112 translate_fun initial("010100111"b), /* opnd(1) <- translate(opnd(2),opnd(3))*/ 9 113 real_fun initial("010101001"b), /* opnd(1) <- real(opnd(2)) */ 9 114 imag_fun initial("010101010"b), /* opnd(1) <- imag(opnd(2)) */ 9 115 length_fun initial("010101011"b), /* opnd(1) <- length(opnd(2)) */ 9 116 pl1_mod_fun initial("010101100"b), /* opnd(1) <- mod(opnd(2)) */ 9 117 search_fun initial("010101101"b), /* opnd(1) <- search(opnd(2),opnd(3)) */ 9 118 allocation_fun initial("010101110"b), /* opnd(1) <- allocation(opnd(2)) */ 9 119 reverse_fun initial("010101111"b), /* opnd(1) <- reverse(opnd(2)) */ 9 120 9 121 addr_fun initial("010110000"b), /* opnd(1) <- addr(opnd(2)) */ 9 122 addr_fun_bits initial("010110001"b), /* opnd(1) <- addr(opnd(2)) */ 9 123 ptr_fun initial("010110010"b), /* opnd(1) <- ptr(opnd(2),opnd(3)) */ 9 124 baseptr_fun initial("010110011"b), /* opnd(1) <- baseptr(opnd(2)) */ 9 125 addrel_fun initial("010110100"b), /* opnd(1) <- addrel(opnd(2),opnd(3)) */ 9 126 codeptr_fun initial("010110101"b), /* opnd(1) <- codeptr(opnd(2)) */ 9 127 environmentptr_fun initial("010110110"b), /* opnd(1) <- environmentptr(opnd(2)) */ 9 128 stackbaseptr_fun initial("010110111"b), /* opnd(1) is ptr to base of current stack */ 9 129 stackframeptr_fun initial("010111000"b), /* opnd(1) is ptr to current block's stack frame */ 9 130 setcharno_fun initial("010111001"b), /* opnd(1) <- opnd(2) with charno opnd(3) */ 9 131 addcharno_fun initial("010111010"b), /* opnd(1) <- opnd(2) with charno = charno + opnd(3) */ 9 132 setbitno_fun initial("010111011"b), /* setcharno for bitsno */ 9 133 addbitno_fun initial("010111100"b), /* addcharno for bitno */ 9 134 9 135 min_fun initial("011000000"b), /* opnd(1) <- min(opnd(1),opnd(2),...) */ 9 136 max_fun initial("011000001"b), /* opnd(1) <- max(opnd(1),opnd(2),...) */ 9 137 9 138 stack_ptr initial("011010001"b), /* opnd(1) <- stack frame ptr */ 9 139 empty_area initial("011010010"b), /* empty opnd(1), length in words is opnd(2) */ 9 140 enable_on initial("011010100"b), /* opnd(1) is the cond name 9 141* opnd(2) is the file name 9 142* opnd(3) is the block */ 9 143 revert_on initial("011010101"b), /* opnd(1) is the cond name, 9 144* opnd(2) is the file name */ 9 145 signal_on initial("011010110"b), /* opnd(1) is the cond name 9 146* opnd(2) is the file name */ 9 147 9 148 lock_fun initial("011010111"b), /* opnd(1) <- stac(opnd(2),opnd(3)) */ 9 149 stacq_fun initial("011011000"b), /* opnd(1) is result, opnd(2) is ptr to lock word, 9 150* opnd(3) is old value, (4) is new value. */ 9 151 clock_fun initial("011011001"b), /* opnd(1) is the clock time */ 9 152 vclock_fun initial("011011010"b), /* opnd(1) is the virtual clock time */ 9 153 9 154 bound_ck initial("011100000"b), /* opnd(1) <- opnd(2) if opnd(3) <= opnd(2) <= opnd(4) */ 9 155 range_ck initial("011100001"b), /* opnd(1) <- opnd(2) if opnd(3) <= opnd(2) <= opnd(4) */ 9 156 loop initial("011100010"b), /* do opnd(1) for opnd(2) from opnd(3) to opnd(4) by 1, 9 157* opnd(5) is the list */ 9 158 join initial("011100011"b), /* do opnd(1), opnd(2) ... opnd(n) */ 9 159 allot_based initial("011100100"b), /* allocate opnd(2) words in opnd(3), set opnd(1) */ 9 160 free_based initial("011100101"b), /* free opnd(1) in opnd(3), length is opnd(2) words */ 9 161 9 162 r_parn initial("011110001"b), /* format op code */ 9 163 l_parn initial("011110010"b), 9 164 r_format initial("011110011"b), 9 165 c_format initial("011110100"b), 9 166 f_format initial("011110101"b), 9 167 e_format initial("011110110"b), 9 168 b_format initial("011110111"b), 9 169 a_format initial("011111000"b), 9 170 x_format initial("011111001"b), 9 171 skip_format initial("011111010"b), 9 172 column_format initial("011111011"b), 9 173 page_format initial("011111100"b), 9 174 line_format initial("011111101"b), 9 175 picture_format initial("011111110"b), 9 176 bn_format initial("011111111"b), /* bit format, length(opnd(2)), radix factor(opnd(3)) */ 9 177 9 178 get_list_trans initial("100000000"b), /* getlist(opnd(2) with desc(opnd(1))) */ 9 179 get_edit_trans initial("100000001"b), /* getedit(opnd(2) with desc(opnd(1))) */ 9 180 get_data_trans initial("100000010"b), /* getdata(opnd(1) to opnd(n)) */ 9 181 put_list_trans initial("100000011"b), /* putlist(opnd(2) with desc(opnd(1))) */ 9 182 put_edit_trans initial("100000100"b), /* putedit(opnd(2) with desc(opnd(1))) */ 9 183 put_data_trans initial("100000101"b), /* putdata(opnd(2)) with subscript-list opnd(1) */ 9 184 terminate_trans initial("100000110"b), /* terminate stream transmission */ 9 185 stream_prep initial("100000111"b), /* initiate stream transmission */ 9 186 record_io initial("100001000"b), /* perform record io operation */ 9 187 fortran_read initial("100001001"b), /* A complete read statement */ 9 188 fortran_write initial("100001010"b), /* A complete write statement */ 9 189 ftn_file_manip initial("100001011"b), /* endfile,backspace,rewind,etc. */ 9 190 ftn_trans_loop initial("100001100"b), /* An implied do in i/o list */ 9 191 put_control initial("100001101"b), /* put control opnd(1) opnd(2) times */ 9 192 put_field initial("100001110"b), /* putlist(opnd(2)) of length(opnd(1)) */ 9 193 put_field_chk initial("100001111"b), /* putlist(op(2)) of len(op(1)) check char index(op(3)) */ 9 194 9 195 /* These operators are produced by the parse but are not used as input to the code generator. */ 9 196 /* They are processed by the semantic translator. */ 9 197 9 198 return_value initial("100010010"b), /* return(opnd(1)) */ 9 199 allot_var initial("100010011"b), /* allot opnd(1) in opnd(2) */ 9 200 free_var initial("100010100"b), /* free opnd(1) out of opnd(2) */ 9 201 get_file initial("100010101"b), /* opnd(1) is filename,opnd(2) is copy */ 9 202 /* opnd(3) is skip, opnd(4) is list */ 9 203 get_string initial("100010110"b), /* opnd(1) is string,opnd(2) is list */ 9 204 put_file initial("100010111"b), /* opnd(1) is filename,opnd(2) is page */ 9 205 /* opnd(3) is skip,opnd(4) is line */ 9 206 put_string initial("100011000"b), /* opnd(1) is string,opnd(2) is list */ 9 207 open_file initial("100011001"b), 9 208 close_file initial("100011010"b), 9 209 read_file initial("100011011"b), 9 210 write_file initial("100011100"b), 9 211 locate_file initial("100011101"b), 9 212 do_fun initial("100011110"b), /* opnd(1) is join of a list */ 9 213 /* opnd(2) is control variable ref */ 9 214 /* opnd(3) is specification operator */ 9 215 do_spec initial("100011111"b), /* opnd(1) to opnd(2) by opnd(3) */ 9 216 /* repeat opnd(4) while opnd(5) */ 9 217 /* opnd(6) is next specification */ 9 218 9 219 rewrite_file initial("100100000"b), 9 220 delete_file initial("100100001"b), 9 221 unlock_file initial("100100010"b), 9 222 lock_file initial("100100011"b), 9 223 refer initial("100100101"b), /* opnd(1) refer(opnd(2)) */ 9 224 prefix_plus initial("100100110"b), /* opnd(1) <- +opnd(2) */ 9 225 nop initial("100100111"b), /* no-op */ 9 226 assign_by_name initial("100101000"b), /* opnd(1) <- opnd(2),by name */ 9 227 9 228 /* These operators are produced by the semantic translator in processing the math 9 229* builtin functions and are used as input to the code generator */ 9 230 9 231 sqrt_fun initial("100110000"b), /* opnd(1) <- sqrt(opnd(2)) */ 9 232 sin_fun initial("100110001"b), /* opnd(1) <- sin(opnd(2)) */ 9 233 sind_fun initial("100110010"b), /* opnd(1) <- sind(opnd(2)) */ 9 234 cos_fun initial("100110011"b), /* opnd(1) <- cos(opnd(2)) */ 9 235 cosd_fun initial("100110100"b), /* opnd(1) <- cosd(opnd(2)) */ 9 236 tan_fun initial("100110101"b), /* opnd(1) <- tan(opnd(2)) */ 9 237 tand_fun initial("100110110"b), /* opnd(1) <- tand(opnd(2)) */ 9 238 asin_fun initial("100110111"b), /* opnd(1) <- asin(opnd(2)) */ 9 239 asind_fun initial("100111000"b), /* opnd(1) <- asind(opnd(2)) */ 9 240 acos_fun initial("100111001"b), /* opnd(1) <- acos(opnd(2)) */ 9 241 acosd_fun initial("100111010"b), /* opnd(1) <- acosd(opnd(2)) */ 9 242 atan_fun initial("100111011"b), /* opnd(1) <- atan(opnd(2)[,opnd(3)]) */ 9 243 atand_fun initial("100111100"b), /* opnd(1) <- atand(opnd(2)[,opnd(3)]) */ 9 244 log2_fun initial("100111101"b), /* opnd(1) <- log2(opnd(2)) */ 9 245 log_fun initial("100111110"b), /* opnd(1) <- log(opnd(2)) */ 9 246 log10_fun initial("100111111"b), /* opnd(1) <- log10(opnd(2)) */ 9 247 9 248 exp_fun initial("101000000"b)) /* opnd(1) <- exp(opnd(2)) */ 9 249 9 250 bit(9) aligned internal static options(constant); 9 251 9 252 /* END INCLUDE FILE ... op_codes.incl.pl1 */ 86 10 1 /* BEGIN INCLUDE FILE ... boundary.incl.pl1 */ 10 2 10 3 /* Modified: 26 Apr 1979 by PCK to implement 4-bit decimal */ 10 4 10 5 dcl ( bit_ init(1), 10 6 digit_ init(2), 10 7 character_ init(3), 10 8 half_ init(4), 10 9 word_ init(5), 10 10 mod2_ init(6), 10 11 mod4_ init(7)) fixed bin(3) int static options(constant); 10 12 10 13 /* END INCLUDE FILE ... boundary.incl.pl1 */ 87 11 1 /* BEGIN INCLUDE FILE ... token.incl.pl1 */ 11 2 11 3 dcl 1 token based aligned, 11 4 2 node_type bit(9) unaligned, 11 5 2 type bit(9) unaligned, 11 6 2 loc bit(18) unaligned, /* symtab offset for identifiers, "p" flag for constants */ 11 7 2 declaration ptr unaligned, 11 8 2 next ptr unaligned, 11 9 2 size fixed(9), 11 10 2 string char(n refer(token.size)); 11 11 11 12 /* END INCLUDE FILE ... token.incl.pl1 */ 88 12 1 /* BEGIN INCLUDE FILE ... token_types.incl.pl1 */ 12 2 12 3 dcl ( no_token initial("000000000"b), /* token types */ 12 4 identifier initial("100000000"b), 12 5 isub initial("010000000"b), 12 6 plus initial("001000001"b), 12 7 minus initial("001000010"b), 12 8 asterisk initial("001000011"b), 12 9 slash initial("001000100"b), 12 10 expon initial("001000101"b), 12 11 not initial("001000110"b), 12 12 and initial("001000111"b), 12 13 or initial("001001000"b), 12 14 cat initial("001001001"b), 12 15 eq initial("001001010"b), 12 16 ne initial("001001011"b), 12 17 lt initial("001001100"b), 12 18 gt initial("001001101"b), 12 19 le initial("001001110"b), 12 20 ge initial("001001111"b), 12 21 ngt initial("001010000"b), 12 22 nlt initial("001010001"b), 12 23 assignment initial("001010010"b), 12 24 colon initial("001010011"b), 12 25 semi_colon initial("001010100"b), 12 26 comma initial("001010101"b), 12 27 period initial("001010110"b), 12 28 arrow initial("001010111"b), 12 29 left_parn initial("001011000"b), 12 30 right_parn initial("001011001"b), 12 31 percent initial("001011100"b), 12 32 bit_string initial("000100001"b), 12 33 char_string initial("000100010"b), 12 34 bin_integer initial("000110001"b), 12 35 dec_integer initial("000110011"b), 12 36 fixed_bin initial("000110000"b), 12 37 fixed_dec initial("000110010"b), 12 38 float_bin initial("000110100"b), 12 39 float_dec initial("000110110"b), 12 Lubey \J0 Lubey Office oR3kTwq*TwqnoneASCII_CRT R%.Jeffords jpJP Jeffords Multics iMarker .66 Marker Multics Hsu 6$ \*n Hsu NMLPROD  QpIC@SvyRÅnoneWY50_80C QjHQDAAuthier ƞjvx Authier Guest ! Sqel`TA.]TynoneSTY_TELNET SWȌonphil P  Buker phil HFED ߨSchimke 8R Schimke djs PC JzJz l5: if vp -> reference.c_offset < 0 then goto hard; 286 if vp -> reference.c_offset > 63 then goto hard; 287 288 value.n2 = bit(fixed(vp -> reference.c_offset,6),6); 289 value.offset = bit(fixed(ap -> symbol.location,18),18); 290 291 return; 292 293 /* have a based variable, we can encode it if offset is positive 294* and less than 64 */ 295 296 based: if vp -> reference.c_offset < 0 then goto hard; 297 if vp -> reference.c_offset > 63 then goto hard; 298 299 /* use special code if qualifier is the param ptr node created by 300* prepare_symbol_table (a pointer to it was stored in block.context). 301* In this case, we had a refer option */ 302 303 if rp -> reference.qualifier = cg_stat$dummy_block -> block.context 304 then do; 305 value.code = "100111"b; 306 goto l3; 307 end; 308 309 /* check for param_ptr operator as qualifier */ 310 311 if rp -> node.type = operator_node 312 then do; 313 if rp -> op_code = param_ptr then value.code = "101001"b; 314 else if rp -> op_code = param_desc_ptr then value.code = "101100"b; 315 else goto hard; 316 317 dl = cg_stat$cur_level - rp -> operand(3) -> block.level; 318 if dl > 63 then goto hard; 319 320 l4: value.n1 = bit(dl,6); 321 value.n2 = bit(fixed(rp -> operand(2) -> reference.symbol -> symbol.initial -> fix_bin,6),6); 322 value.offset = bit(fixed(vp -> reference.c_offset,18),18); 323 return; 324 end; 325 326 /* the ptr must have a constant offset and must not be itself based */ 327 328 if rp -> reference.offset ^= null then goto hard; 329 330 ap = rp -> reference.qualifier; 331 if ap ^= null 332 then do; 333 if ap -> node.type ^= operator_node then goto hard; 334 if ap -> op_code ^= param_ptr then goto hard; 335 if rp -> reference.c_offset ^= 0 then goto hard; 336 337 dl = cg_stat$cur_level - ap -> operand(3) -> block.level; 338 if dl > 63 then goto hard; 339 340 /* we can handle the case of a variable based on a ptr parameter */ 341 342 value.code = "101010"b; 343 rp = ap; 344 goto l4; 345 end; 346 347 ap = rp -> reference.symbol; 348 bp = ap -> symbol.block_node; 349 dl = cg_stat$cur_level - bp -> block.level; 350 351 if ap -> symbol.auto 352 then do; 353 if dl > 63 then goto hard; 354 value.code = "100100"b; 355 value.n1 = bit(dl,6); 356 357 l2: value.offset = bit(fixed(ap -> symbol.location + rp -> reference.c_offset,18),18); 358 l3: value.n2 = bit(fixed(vp -> reference.c_offset,6),6); 359 return; 360 end; 361 362 if ^ ap -> symbol.static then goto hard; 363 364 if ap -> symbol.internal 365 then do; 366 value.code = "100101"b; 367 reloc = rc_a_is18; 368 goto l2; 369 end; 370 371 /* the word offset must be positve and less than 64 for ext static ptr */ 372 373 if rp -> reference.c_offset < 0 then goto hard; 374 if rp -> reference.c_offset > 63 then goto hard; 375 376 value.code = "100110"b; 377 reloc = rc_a_lp18; 378 value.n1 = bit(fixed(rp -> reference.c_offset,6),6); 379 value.offset = bit(fixed(ap -> symbol.location,18),18); 380 goto l3; 381 382 /* have an expression or a variable that cannot be encoded, we 383* must generate an internal procedure to evaluate the expression, 384* so first search to see if we have already generated a procedure 385* to evaluate an equivalent expression */ 386 387 hard: pgTMoses  * TMoses SiteSA  R?p FCSmith *L FCSmith Multics Lackey 8^, Lackey Multics constant bit(9) initial dcl 9-8 ref 125 145 bits 12(06) based structure level 2 packed unaligned dcl 2-3 block based structure level 1 dcl 5-5 in procedure "e_v" block 4 based pointer level 2 in structure "ev_node" dcl 7-1 in procedure "e_v" set ref 390 488* block_node 4 based pointer level 2 packed unaligned dcl 4-3 ref 232 348 bp 000106 automatic pointer dcl 37 set ref 232* 233 348* 349 415* 416 417 421 423 423 423 462* 466 488 c_a 000066 constant entry external dcl 46 ref 459 459 461 c_offset 1 based fixed bin(24,0) level 2 dcl 2-3 ref 188 240 252 285 286 288 296 297 322 335 357 358 373 374 378 c_word_size 26 based fixed bin(24,0) level 2 dcl 4-3 ref 225 cg_stat$cur_block 000010 external static pointer dcl 30 set ref 390 414 415* 488* cg_stat$cur_level 000036 external static fixed bin(18,0) dcl 30 set ref 186 233 317 337 349 416 416* 487* 487 cg_stat$cur_statement 000014 external static pointer dcl 30 set ref 439* 440 454 cg_stat$dummy_block 000022 external static pointer dcl 30 ref 303 414 415 cg_stat$dummy_statement 000024 external static pointer dcl 30 ref 439 cg_stat$encoded_values 000012 external static pointer dcl 30 set ref 387 469 469* cg_stat$first_ref 000026 external static pointer dcl 30 ref 485 cg_stat$in_thunk 000032 external static bit(1) unaligned dcl 30 set ref 432* 437* cg_stat$last_encoded 000016 external static pointer dcl 30 set ref 471 472* cg_stat$next_ref 000030 external static pointer dcl 30 set ref 485* cg_stat$text_base 000020 external static pointer dcl 30 ref 428 cg_stat$text_pos 000034 external static fixed bin(18,0) dcl 30 ref 427 428 483 code parameter fixed bin(17,0) dcl 23 in procedure "e_v" ref 21 404 481 495 code 15 based fixed bin(18,0) level 2 in structure "ev_node" dcl 7-1 in procedure "e_v" set ref 481* code based bit(6) level 2 in structure "value" packed unaligned dcl 62 in procedure "e_v" set ref 127* 169* 185* 239* 253* 259* 260* 275* 280* 305* 313* 314* 342* 354* 366* 376* 490* code 4 based fixed bin(18,0) level 2 in structure "ev_equiv" dcl 7-12 in procedure "e_v" set ref 404* coded_value parameter fixed bin(17,0) dcl 23 set ref 21 96 97* 199* 227* 495 compare_expression 000040 constant entry external dcl 45 ref 394 compile_exp 000042 constant entry external dcl 46 ref 455 compile_statement 000044 constant enIves  & Ives Multics %PANakaska < @ T PANakaska pn Multics  ,jLo`T{d3TynoneSTY_TELNET L dcl 4-3 in procedure "e_v" ref 222 free_temps 26 based pointer array level 2 dcl 5-5 set ref 423* 423* 423* initial 11 based pointer level 2 packed unaligned dcl 4-3 ref 147 187 218 227 321 internal 32(01) based bit(1) level 4 packed unaligned dcl 4-3 ref 171 220 262 273 364 lab 000127 automatic bit(1) dcl 37 set ref 94* 445 499* last 14 based fixed bin(18,0) level 2 dcl 7-1 set ref 483* last_auto_loc 46 based fixed bin(17,0) level 2 dcl 5-5 set ref 421* 466* level 45 based fixed bin(17,0) level 2 dcl 5-5 set ref 186 233 317 337 349 416* load 000052 constant entry external dcl 46 ref 452 load_pt_reg constant fixed bin(15,0) initial dcl 72 ref 448 location 1 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 4-3 ref 240 248 251 289 357 379 lxl_ins based structure level 1 dcl 68 macro 000131 automatic fixed bin(15,0) dcl 37 set ref 447* 451* 464* make_mod 000062 constant entry external dcl 46 ref 466 misc_attributes 31(19) based structure level 3 packed unaligned dcl 4-3 n1 0(06) based bit(6) level 2 packed unaligned dcl 62 set ref 173* 186* 238* 250* 264* 320* 355* 378* n2 0(12) based bit(6) level 2 packed unaligned dcl 62 set ref 187* 241* 251* 288* 321* 358* name 2 based pointer level 2 in structure "ev_node" dcl 7-1 in procedure "e_v" set ref 475* 476* name 2 based pointer level 2 in structure "ev_equiv" dcl 7-12 in procedure "e_v" set ref 402* 403* next based pointer level 2 in structure "ev_equiv" dcl 7-12 in procedure "e_v" set ref 399* next 1 based pointer level 2 in structure "statement" packed unaligned dcl 6-9 in procedure "e_v" ref 109 110 435 next based pointer level 2 in structure "ev_node" dcl 7-1 in procedure "e_v" set ref 409 471* 473* no_stack 24(22) based bit(1) level 2 packed unaligned dcl 5-5 set ref 417* node based structure level 1 dcl 8-27 null builtin function dcl 60 ref 109 114 120 160 211 214 328 331 388 402 402 423 433 440 469 473 475 475 479 offset 0(18) based bit(18) level 2 in structure "value" packed unaligned dcl 62 in procedure "e_v" set ref 128* 188* 240* 252* 289* 322* 357* 379* 406* 427* 482 offset 5 based pointer level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "e_v" ref 211 328 op_code 0(09) based bit(9) level 2 packed unaligned dcl 3-6 ref 125 132 145 151 183 313 314 334 operand 1 based pointer array level 2 packed unaligned dcl 3-6 ref 137 143 156 186 187 317 321 337 operator based structure level 1 dcl 3-6 operator_node constant bit(9) initial dcl 8-5 ref 123 144 182 311 333 p 000124 automatic pointer dcl 37 set ref 387* 388 390 392 394 399 400 406 409* 409 param_desc_ptr constant bit(9) initial dcl 9-8 ref 183 314 param_ptr constant bit(9) initial dcl 9-8 ref 313 334 parameter 32(14) based bit(1) level 4 packed unaligned dcl 4-3 ref 245 pl1_stat_$tree_area_ptr 000070 external static pointer dcl 1-7 ref 398 468 prepare_operand 000054 constant entry external dcl 46 ref 443 qp 000114 automatic pointer dcl 37 set ref 159* 160 182 183 186 187 qualifier 4 based pointer level 2 packed unaligned dcl 2-3 ref 159 213 303 330 rc_a_is18 constant bit(36) initial dcl 13-6 ref 171 262 276 367 rc_a_lp18 constant bit(36) initial dcl 13-6 ref 174 265 281 377 rc_a_t constant bit(36) initial dcl 13-6 ref 491 real 31(30) based bit(1) level 4 packed unaligned dcl 4-3 ref 224 reference based structure level 1 dcl 2-3 reference_node constant bit(9) initial dcl 8-5 ref 138 157 reloc parameter bit(36) dcl 23 set ref 21 98* 171* 174* 200* 228* 262* 265* 276* 281* 367* 377* 491* 495 root 3 based pointer level 2 packed unaligned dcl 6-9 set ref 113 114* 454* rp 000110 automatic pointer dcl 37 set ref 213* 214 303 311 313 314 317 321 328 330 335 343* 347 357 373 374 378 s1 000120 automatic pointer dcl 37 set ref 100* 101 108 120* 433 434* 435* 435 s2 000122 automatic pointer dcl 37 set ref 108* 109 110* 110 113 114 source_id 0(09) based structure level 2 in structure "symbol" packed unaligned Strange Nt . P: Strange DEVM SQzRRHnQafo[noneWY50_80C Qj>WAAnderson H WAAnderson wa SysMaint ;R͏JT|dTCoEnoneSUN3 dMaucieri dcl 37 set ref 137* 138 140 156* 157 159 165 177 188 398* 399 400 402 403 404 443* 448* 452* 461* 462 463 464* 468* 469 471 472 473 475 476 478 479 480 481 482 483 488 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. a_format internal static bit(9) initial dcl 9-8 abs_fun internal static bit(9) initial dcl 9-8 acos_fun internal static bit(9) initial dcl 9-8 acosd_fun internal static bit(9) initial dcl 9-8 addbitno_fun internal static bit(9) initial dcl 9-8 addcharno_fun internal static bit(9) initial dcl 9-8 addr_fun internal static bit(9) initial dcl 9-8 addr_fun_bits internal static bit(9) initial dcl 9-8 addrel_fun internal static bit(9) initial dcl 9-8 allocation_fun internal static bit(9) initial dcl 9-8 allot_auto internal static bit(9) initial dcl 9-8 allot_based internal static bit(9) initial dcl 9-8 allot_ctl internal static bit(9) initial dcl 9-8 allot_var internal static bit(9) initial dcl 9-8 and internal static bit(9) initial dcl 12-3 and_bits internal static bit(9) initial dcl 9-8 arg automatic pointer array dcl 37 array_node internal static bit(9) initial dcl 8-5 arrow internal static bit(9) initial dcl 12-3 asin_fun internal static bit(9) initial dcl 9-8 asind_fun internal static bit(9) initial dcl 9-8 assign internal static bit(9) initial dcl 9-8 assign_by_name internal static bit(9) initial dcl 9-8 assign_round internal static bit(9) initial dcl 9-8 assign_size_ck internal static bit(9) initial dcl 9-8 assign_zero internal static bit(9) initial dcl 9-8 assignment internal static bit(9) initial dcl 12-3 asterisk internal static bit(9) initial dcl 12-3 atan_fun internal static bit(9) initial dcl 9-8 atand_fun internal static bit(9) initial dcl 9-8 b_format internal static bit(9) initial dcl 9-8 baseno_fun internal static bit(9) initial dcl 9-8 baseptr_fun internal static bit(9) initial dcl 9-8 bin_integer internal static bit(9) initial dcl 12-3 bit_ internal static fixed bin(3,0) initial dcl 10-5 bit_string internal static bit(9) initial dcl 12-3 bit_to_char internal static bit(9) initial dcl 9-8 bit_to_word internal static Multics ? L^MRMX.25ASCII_CRT_E L^*eFBNg Bdp BNg CDC L}L9u[X.25ASCII_CRT_E L@'tCurry 

|Keefer ޲L& ʤ^ Keefer NMLPROD Q^QQfnoneWY50_80C QjI%atic bit(9) initial dcl 9-8 std_return internal static bit(9) initial dcl 9-8 stop internal static bit(9) initial dcl 9-8 stream_prep internal static bit(9) initial dcl 9-8 sub internal static bit(9) initial dcl 9-8 symbol_node internal static bit(9) initial dcl 8-5 tan_fun internal static bit(9) initial dcl 9-8 tand_fun internal static bit(9) initial dcl 9-8 temporary_node internal static bit(9) initial dcl 8-5 terminate_trans internal static bit(9) initial dcl 9-8 translate_fun internal static bit(9) initial dcl 9-8 trunc_fun internal static bit(9) initial dcl 9-8 unlock_file internal static bit(9) initial dcl 9-8 unpack internal static bit(9) initial dcl 9-8 vclock_fun internal static bit(9) initial dcl 9-8 verify_fun internal static bit(9) initial dcl 9-8 verify_ltrim_fun internal static bit(9) initial dcl 9-8 verify_rev_fun internal static bit(9) initial dcl 9-8 verify_rtrim_fun internal static bit(9) initial dcl 9-8 word_to_mod2 internal static bit(9) initial dcl 9-8 word_to_mod4 internal static bit(9) initial dcl 9-8 word_to_mod8 internal static bit(9) initial dcl 9-8 wordno_fun internal static bit(9) initial dcl 9-8 write_file internal static bit(9) initial dcl 9-8 x_format internal static bit(9) initial dcl 9-8 xeq_tree_area based area(1024) dcl 1-5 xor_bits internal static bit(9) initial dcl 9-8 NAMES DECLARED BY EXPLICIT CONTEXT. based 000605 constant label dcl 296 ref 214 chk 000272 constant label dcl 194 ref 123 138 141 144 145 157 166 167 182 183 diff 001172 constant label dcl 414 ref 115 e_v 000016 constant entry external dcl 21 e_v$l_v 001632 constant entry external dcl 495 easy 000316 constant label dcl 207 hard 001066 constant label dcl 387 ref 192 194 207 211 222 223 224 225 237 247 248 271 285 286 296 297 314 318 328 333 334 335 338 353 362 373 374 hd 001621 constant label dcl 490 ref 407 l1 000424 constant label dcl 240 ref 277 l2 000773 constant label dcl 357 ref 368 l3 001007 constant label dcl 358 ref 306 380 l4 000654 constant label dcl 320 ref 344 l5 000556 constant label dcl 285 ref 179 268 next 001166 constant label dcl 409 ref 390 392 394 pf 000076 constant label dcl 127 ref 148 start 000024 constant label dcl 96 ref 500 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2146 2240 1645 2156 Length 2712 1645 72 436 301 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME e_v 120 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME e_v 000100 vp e_v 000102 cvp e_v 000104 ap e_v 000106 bp e_v 000110 rp e_v 000112 sp e_v 000114 qp e_v 000116 xp e_v 000120 s1 e_v 000122 s2 e_v 000124 p e_v 000126 dl e_v 000127 lab e_v 000130 atomic e_v 000131 macro e_v 000132 delta e_v THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. base_man$load_arg c_a compare_expression compile_exp compile_statement expmac expmac$zero load make_mod prepare_operand state_man$flush token_to_binary THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_stat$cur_block cg_stat$cur_level cg_stat$cur_statement cg_stat$dummy_block cg_stat$dummy_statement cg_stat$encoded_values cg_stat$first_ref cg_stat$in_thunk cg_stat$last_encoded cg_stat$next_ref cg_stat$text_base cg_stat$text_pos pl1_stat_$tree_area_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 21 000010 94 000023 96 000024 97 000027 98 000031 100 000032 101 000035 108 000041 109 000043 110 000050 111 000052 113 000053 114 000055 115 000057 120 000060 121 000062 123 000063 125 000070 127 000076 128 000101 129 000113 132 000114 137 000116 138 000120 140 000124 141 000126 143 000131 144 000133 145 000137 147 000144 148 000147 151 000150 156 000152 157 000154 159 000160 160 000162 165 000166 166 000170 167 000173 169 000176 171 000201 173 000207 174 000212 177 000214 178 000215 179 000217 182 000220 183 000224 185 000231 186 000234 187 000247 188 000261 189 000270 192 000271 194 000272 196 000274 199 000304 201 000315 207 000316 211 000325 213 000331 214 000333 216 000337 218 000341 220 000346 222 000357 223 000362 224 000365 225 000370 227 000373 229 000Neer bH. ----------------------------------------------------------- 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