COMPILATION LISTING OF SEGMENT display_pl1_text Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1613.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 /* program to display binary text produced by pl/1 compiler 12* 13* Revised Version: 20 January, 1969 by BLW 14* Modified: 18 April 1971 by BLW for Version II 15* Modified: 19 August 1972 by BLW 16* Modified: 1 August 1974 by RAB for relocatable constants 17* Modified: 11 February 1977 by RAB for multiple conditions per on-unit */ 18 19 display_pl1_text: proc(pt); 20 21 dcl pt ptr; /* points at root block node */ 22 23 dcl p ptr, 24 n fixed bin, 25 (cg_static_$text_base,cg_static_$text_reloc_base,cg_static_$encoded_values, 26 cg_static_$constant_list,cg_static_$format_list,cg_static_$sym_use_base, 27 cg_static_$label_list) ptr ext static, 28 line char(60) varying int static, 29 old_id bit(27) int static, 30 blk_pt ptr int static, 31 (block_count fixed bin,nested_proc bit(1)) int static, 32 display_text entry(ptr,ptr,ptr,fixed bin,fixed bin), 33 display_text$display_ascii entry(ptr,fixed bin(31)), 34 bindec ext entry(fixed bin) returns(char(12)), 35 bindec$vs entry(fixed bin) returns(char(12) varying), 36 display_text$display_abs entry(ptr,ptr,fixed bin(31)), 37 pl1_print$non_varying_nl entry(char(*) aligned,fixed bin), 38 pl1_print$unaligned_nl entry(char(*) unaligned,fixed bin), 39 pl1_print$varying_nl entry(char(*) varying); 40 41 dcl (addr,addrel,bit,divide,fixed,length,null,ptr,string,substr) builtin; 42 43 dcl encode_names(6) char(20) varying int static init("size of ", 44 "offset of ", "virtual origin of ", 45 "lower bound of ", "upper bound of ", "multiplier of "); 46 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 static options(constant); 1 39 1 40 /* END INCLUDE FILE ... cgsystem.incl.pl1 */ 1 41 47 2 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 2 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 2 3 /* format: style3,idind30 */ 2 4 2 5 declare 1 block aligned based, 2 6 2 node_type bit (9) unaligned, 2 7 2 source_id structure unaligned, 2 8 3 file_number bit (8), 2 9 3 line_number bit (14), 2 10 3 statement_number bit (5), 2 11 2 father ptr unaligned, 2 12 2 brother ptr unaligned, 2 13 2 son ptr unaligned, 2 14 2 declaration ptr unaligned, 2 15 2 end_declaration ptr unaligned, 2 16 2 default ptr unaligned, 2 17 2 end_default ptr unaligned, 2 18 2 context ptr unaligned, 2 19 2 prologue ptr unaligned, 2 20 2 end_prologue ptr unaligned, 2 21 2 main ptr unaligned, 2 22 2 end_main ptr unaligned, 2 23 2 return_values ptr unaligned, 2 24 2 return_count ptr unaligned, 2 25 2 plio_ps ptr unaligned, 2 26 2 plio_fa ptr unaligned, 2 27 2 plio_ffsb ptr unaligned, 2 28 2 plio_ssl ptr unaligned, 2 29 2 plio_fab2 ptr unaligned, 2 30 2 block_type bit (9) unaligned, 2 31 2 prefix bit (12) unaligned, 2 32 2 like_attribute bit (1) unaligned, 2 33 2 no_stack bit (1) unaligned, 2 34 2 get_data bit (1) unaligned, 2 35 2 flush_at_call bit (1) unaligned, 2 36 2 processed bit (1) unaligned, 2 37 2 text_displayed bit (1) unaligned, 2 38 2 number fixed bin (9) unsigned unaligned, 2 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 2 40 2 temp_list ptr, 2 41 2 entry_list ptr, 2 42 2 o_and_s ptr, 2 43 2 why_nonquick aligned, 2 44 3 auto_adjustable_storage bit (1) unaligned, 2 45 3 returns_star_extents bit (1) unaligned, 2 46 3 stack_extended_by_args bit (1) unaligned, 2 47 3 invoked_by_format bit (1) unaligned, 2 48 3 format_statement bit (1) unaligned, 2 49 3 io_statements bit (1) unaligned, 2 50 3 assigned_to_entry_var bit (1) unaligned, 2 51 3 condition_statements bit (1) unaligned, 2 52 3 no_owner bit (1) unaligned, 2 53 3 recursive_call bit (1) unaligned, 2 54 3 options_non_quick bit (1) unaligned, 2 55 3 options_variable bit (1) unaligned, 2 56 3 never_referenced bit (1) unaligned, 2 57 3 pad_nonquick bit (5) unaligned, 2 58 2 prologue_flag bit (1) unaligned, 2 59 2 options_main bit (1) unaligned, 2 60 2 pad bit (16) unaligned, 2 61 2 number_of_entries fixed bin (17), 2 62 2 level fixed bin (17), 2 63 2 last_auto_loc fixed bin (17), 2 64 2 symbol_block fixed bin (17), 2 65 2 entry_info fixed bin (18), 2 66 2 enter structure unaligned, 2 67 3 start fixed bin (17), 2 68 3 end fixed bin (17), 2 69 2 leave structure unaligned, 2 70 3 start fixed bin (17), 2 71 3 end fixed bin (17), 2 72 2 owner ptr; 2 73 2 74 declare max_block_number fixed bin internal static options (constant) initial (511); 2 75 2 76 /* END INCLUDE FILE ... block.incl.pl1 */ 48 3 1 /* *********************************************************** 3 2* * * 3 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 3 4* * * 3 5* *********************************************************** */ 3 6 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 3 7 /* Internal interface of the PL/I compiler */ 3 8 3 9 dcl 1 statement based aligned, 3 10 2 node_type bit(9) unaligned, 3 11 2 source_id structure unaligned, 3 12 3 file_number bit(8), 3 13 3 line_number bit(14), 3 14 3 statement_number bit(5), 3 15 2 next ptr unaligned, 3 16 2 back ptr unaligned, 3 17 2 root ptr unaligned, 3 18 2 labels ptr unaligned, 3 19 2 reference_list ptr unaligned, 3 20 2 state_list ptr unaligned, 3 21 2 reference_count fixed(17) unaligned, 3 22 2 ref_count_copy fixed(17) unaligned, 3 23 2 object structure unaligned, 3 24 3 start fixed(17), 3 25 3 finish fixed(17), 3 26 2 source structure unaligned, 3 27 3 segment fixed(11), 3 28 3 start fixed(23), 3 29 3 length fixed(11), 3 30 2 prefix bit(12) unaligned, 3 31 2 optimized bit(1) unaligned, 3 32 2 free_temps bit(1) unaligned, 3 33 2 LHS_in_RHS bit(1) unaligned, 3 34 2 statement_type bit(9) unaligned, 3 35 2 bits structure unaligned, 3 36 3 processed bit(1) unaligned, 3 37 3 put_in_profile bit(1) unaligned, 3 38 3 generated bit(1) unaligned, 3 39 3 snap bit(1) unaligned, 3 40 3 system bit(1) unaligned, 3 41 3 irreducible bit(1) unaligned, 3 42 3 checked bit(1) unaligned, 3 43 3 save_temps bit(1) unaligned, 3 44 3 suppress_warnings bit(1) unaligned, 3 45 3 force_nonquick bit(1) unaligned, 3 46 3 expanded_by_name bit(1) unaligned, 3 47 3 begins_loop bit(1) unaligned, 3 48 3 pad bit(24) unaligned; 3 49 3 50 /* END INCLUDE FILE ... statement.incl.pl1 */ 49 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 */ 50 5 1 dcl 1 array based aligned, 5 2 2 node_type bit(9) unaligned, 5 3 2 reserved bit(34) unaligned, 5 4 2 number_of_dimensions fixed(7) unaligned, 5 5 2 own_number_of_dimensions fixed(7) unaligned, 5 6 2 element_boundary fixed(3) unaligned, 5 7 2 size_units fixed(3) unaligned, 5 8 2 offset_units fixed(3) unaligned, 5 9 2 interleaved bit(1) unaligned, 5 10 2 c_element_size fixed(24), 5 11 2 c_element_size_bits fixed(24), 5 12 2 c_virtual_origin fixed(24), 5 13 2 element_size ptr unaligned, 5 14 2 element_size_bits ptr unaligned, 5 15 2 virtual_origin ptr unaligned, 5 16 2 symtab_virtual_origin ptr unaligned, 5 17 2 symtab_element_size ptr unaligned, 5 18 2 bounds ptr unaligned, 5 19 2 element_descriptor ptr unaligned; 5 20 5 21 dcl 1 bound based aligned, 5 22 2 node_type bit(9), 5 23 2 c_lower fixed(24), 5 24 2 c_upper fixed(24), 5 25 2 c_multiplier fixed(24), 5 26 2 c_desc_multiplier fixed(24), 5 27 2 lower ptr unaligned, 5 28 2 upper ptr unaligned, 5 29 2 multiplier ptr unaligned, 5 30 2 desc_multiplier ptr unaligned, 5 31 2 symtab_lower ptr unaligned, 5 32 2 symtab_upper ptr unaligned, 5 33 2 symtab_multiplier ptr unaligned, 5 34 2 next ptr unaligned; 51 6 1 /* BEGIN INCLUDE FILE ... reference.incl.pl1 */ 6 2 6 3 dcl 1 reference based aligned, 6 4 2 node_type bit(9) unaligned, 6 5 2 array_ref bit(1) unaligned, 6 6 2 varying_ref bit(1) unaligned, 6 7 2 shared bit(1) unaligned, 6 8 2 put_data_sw bit(1) unaligned, 6 9 2 processed bit(1) unaligned, 6 10 2 units fixed(3) unaligned, 6 11 2 ref_count fixed(17) unaligned, 6 12 2 c_offset fixed(24), 6 13 2 c_length fixed(24), 6 14 2 symbol ptr unaligned, 6 15 2 qualifier ptr unaligned, 6 16 2 offset ptr unaligned, 6 17 2 length ptr unaligned, 6 18 2 subscript_list ptr unaligned, 6 19 /* these fields are used by the 645 code generator */ 6 20 2 address structure unaligned, 6 21 3 base bit(3), 6 22 3 offset bit(15), 6 23 3 op bit(9), 6 24 3 no_address bit(1), 6 25 3 inhibit bit(1), 6 26 3 ext_base bit(1), 6 27 3 tag bit(6), 6 28 2 info structure unaligned, 6 29 3 address_in structure, 6 30 4 b dimension(0:7) bit(1), 6 31 4 storage bit(1), 6 32 3 value_in structure, 6 33 4 a bit(1), 6 34 4 q bit(1), 6 35 4 aq bit(1), 6 36 4 string_aq bit(1), 6 37 4 complex_aq bit(1), 6 38 4 decimal_aq bit(1), 6 39 4 b dimension(0:7) bit(1), 6 40 4 storage bit(1), 6 41 4 indicators bit(1), 6 42 4 x dimension(0:7) bit(1), 6 43 3 other structure, 6 44 4 big_offset bit(1), 6 45 4 big_length bit(1), 6 46 4 modword_in_offset bit(1), 6 47 2 data_type fixed(5) unaligned, 6 48 2 bits structure unaligned, 6 49 3 padded_ref bit(1), 6 50 3 aligned_ref bit(1), 6 51 3 long_ref bit(1), 6 52 3 forward_ref bit(1), 6 53 3 ic_ref bit(1), 6 54 3 temp_ref bit(1), 6 55 3 defined_ref bit(1), 6 56 3 evaluated bit(1), 6 57 3 allocate bit(1), 6 58 3 allocated bit(1), 6 59 3 aliasable bit(1), 6 60 3 even bit(1), 6 61 3 perm_address bit(1), 6 62 3 aggregate bit(1), 6 63 3 hit_zero bit(1), 6 64 3 dont_save bit(1), 6 65 3 fo_in_qual bit(1), 6 66 3 hard_to_load bit(1), 6 67 2 relocation bit(12) unaligned, 6 68 2 more_bits structure unaligned, 6 69 3 substr bit(1), 6 70 3 padded_for_store_ref bit(1), 6 71 3 aligned_for_store_ref bit(1), 6 72 3 mbz bit(15), 6 73 2 store_ins bit(18) unaligned; 6 74 6 75 /* END INCLUDE FILE ... reference.incl.pl1 */ 52 7 1 /* BEGIN INCLUDE FILE ... operator.incl.pl1 */ 7 2 7 3 /* Modified: 2 Apr 1980 by PCK to add max_number_of_operands */ 7 4 7 5 /* format: style3 */ 7 6 dcl 1 operator based aligned, 7 7 2 node_type bit (9) unaligned, 7 8 2 op_code bit (9) unaligned, 7 9 2 shared bit (1) unaligned, 7 10 2 processed bit (1) unaligned, 7 11 2 optimized bit (1) unaligned, 7 12 2 number fixed (14) unaligned, 7 13 2 operand dimension (n refer (operator.number)) ptr unaligned; 7 14 7 15 dcl max_number_of_operands 7 16 fixed bin (15) int static options (constant) initial (32767); 7 17 7 18 /* END INCLUDE FILE ... operator.incl.pl1 */ 53 8 1 /* BEGIN INCLUDE FILE ... list.incl.pl1 */ 8 2 8 3 /* Modified 26 June 81 by EBush to add max_list_elements */ 8 4 8 5 8 6 dcl 1 list based aligned, 8 7 2 node_type bit(9) unaligned, 8 8 2 reserved bit(12) unaligned, 8 9 2 number fixed(14) unaligned, 8 10 2 element dimension(n refer(list.number)) ptr unaligned; 8 11 8 12 dcl max_list_elements fixed bin(17) internal static options (constant) 8 13 init(16383); 8 14 8 15 /* END INCLUDE FILE ... list.incl.pl1 */ 54 9 1 dcl 1 label based aligned, 9 2 2 node_type bit(9) unaligned, 9 3 2 source_id structure unaligned, 9 4 3 file_number bit(8), 9 5 3 line_number bit(14), 9 6 3 statement_number bit(5), 9 7 2 location fixed(17) unaligned, 9 8 2 allocated bit(1) unaligned, 9 9 2 dcl_type bit(3) unaligned, 9 10 2 reserved bit(29) unaligned, 9 11 2 array bit(1) unaligned, 9 12 2 used_as_format bit(1) unaligned, 9 13 2 used_in_goto bit(1) unaligned, 9 14 2 symbol_table bit(18) unaligned, 9 15 2 low_bound fixed(17) unaligned, 9 16 2 high_bound fixed(17) unaligned, 9 17 2 block_node ptr unaligned, 9 18 2 token ptr unaligned, 9 19 2 next ptr unaligned, 9 20 2 multi_use ptr unaligned, 9 21 2 cross_reference ptr unaligned, 9 22 2 statement ptr unaligned; 55 10 1 dcl 1 ev_node based, 10 2 2 next ptr, 10 3 2 name ptr, 10 4 2 block ptr, 10 5 2 exp ptr, 10 6 2 equiv ptr, 10 7 2 const fixed bin(18), 10 8 2 first fixed bin(18), 10 9 2 last fixed bin(18), 10 10 2 code fixed bin(18); 10 11 10 12 dcl 1 ev_equiv based, 10 13 2 next ptr, 10 14 2 name ptr, 10 15 2 code fixed bin(18); 56 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 */ 57 12 1 dcl ( root_block initial("000000001"b), 12 2 external_procedure initial("000000010"b), 12 3 internal_procedure initial("000000011"b), 12 4 begin_block initial("000000100"b), 12 5 on_unit initial("000000101"b)) internal static bit(9) aligned options(constant); 58 13 1 /* statement types */ 13 2 13 3 dcl ( unknown_statement initial("000000000"b), 13 4 allocate_statement initial("000000001"b), 13 5 assignment_statement initial("000000010"b), 13 6 begin_statement initial("000000011"b), 13 7 call_statement initial("000000100"b), 13 8 close_statement initial("000000101"b), 13 9 declare_statement initial("000000110"b), 13 10 lock_statement initial("000000111"b), 13 11 delete_statement initial("000001000"b), 13 12 display_statement initial("000001001"b), 13 13 do_statement initial("000001010"b), 13 14 else_clause initial("000001011"b), 13 15 end_statement initial("000001100"b), 13 16 entry_statement initial("000001101"b), 13 17 exit_statement initial("000001110"b), 13 18 format_statement initial("000001111"b), 13 19 free_statement initial("000010000"b), 13 20 get_statement initial("000010001"b), 13 21 goto_statement initial("000010010"b), 13 22 if_statement initial("000010011"b), 13 23 locate_statement initial("000010100"b), 13 24 null_statement initial("000010101"b), 13 25 on_statement initial("000010110"b), 13 26 open_statement initial("000010111"b), 13 27 procedure_statement initial("000011000"b), 13 28 put_statement initial("000011001"b), 13 29 read_statement initial("000011010"b), 13 30 return_statement initial("000011011"b), 13 31 revert_statement initial("000011100"b), 13 32 rewrite_statement initial("000011101"b), 13 33 signal_statement initial("000011110"b), 13 34 stop_statement initial("000011111"b), 13 35 system_on_unit initial("000100000"b), 13 36 unlock_statement initial("000100001"b), 13 37 wait_statement initial("000100010"b), 13 38 write_statement initial("000100011"b), 13 39 default_statement initial("000100100"b), 13 40 continue_statement initial("000100101"b)) bit(9) internal static aligned options(constant); 59 60 61 line = ""; 62 block_count = 0; 63 nested_proc, old_id = "0"b; 64 call prt_block(pt -> block.son); 65 return; 66 67 prt_block: proc(pt); 68 69 dcl pt ptr unaligned; /* points at block node */ 70 71 dcl (p,p1,q,r_pt,t_pt,bp,text_base,text_reloc_base,sym_use_base) ptr, 72 (size,type,i,k) fixed bin, 73 put_const bit(1) aligned, 74 name char(32) varying; 75 76 bp = pt; 77 if bp = null then return; 78 79 text_base = cg_static_$text_base; 80 text_reloc_base = cg_static_$text_reloc_base; 81 sym_use_base = cg_static_$sym_use_base; 82 83 if bp -> block.block_type = begin_block 84 then do; 85 db: call prt_block(bp -> block.brother); 86 return; 87 end; 88 89 if bp -> block.block_type = on_unit then goto db; 90 91 call entry_name((bp -> block.main),name); 92 line = "BEGIN PROCEDURE "||name; 93 94 if nested_proc then goto common; 95 96 nested_proc = "1"b; 97 98 do_consts: p = cg_static_$constant_list; 99 if p = null then goto ce; 100 101 /* display all constant nodes without equivalent ptr */ 102 103 put_const = "1"b; 104 do while(p ^= null); 105 106 if p -> symbol.equivalence ^= null then goto next_const; 107 108 if p -> symbol.allocated 109 then do; 110 111 if put_const 112 then do; 113 call pl1_print$non_varying_nl("CONSTANTS",9); 114 put_const = "0"b; 115 end; 116 117 t_pt = addrel(text_base,p -> symbol.location); 118 r_pt = addrel(text_reloc_base,p -> symbol.location); 119 120 if p -> symbol.char 121 then do; 122 123 q = p -> symbol.array; 124 125 if p -> symbol.varying 126 then do; 127 128 if q = null then k = p -> symbol.c_word_size; 129 else k = q -> array.c_element_size; 130 131 do i = 1 by k to p -> symbol.c_word_size; 132 call display_text$display_abs(t_pt,r_pt,1); 133 call display_text$display_ascii(addrel(t_pt,1),(p -> symbol.c_dcl_size)); 134 t_pt = addrel(t_pt,k); 135 end; 136 137 end; 138 else do; 139 if q = null then k = p -> symbol.c_dcl_size; 140 else k = p -> symbol.c_word_size * chars_per_word; 141 142 call display_text$display_ascii(t_pt,(k)); 143 end; 144 145 end; 146 else call display_text$display_abs(t_pt,r_pt,(p -> symbol.c_word_size)); 147 148 call pl1_print$non_varying_nl("",0); 149 150 end; 151 152 next_const: p = p -> symbol.multi_use; 153 end; 154 155 ce: p = cg_static_$encoded_values; 156 if p = null then goto formats; 157 158 call pl1_print$non_varying_nl("ENCODED VALUES",0); 159 160 do while(p ^= null); 161 q = p -> ev_node.name; 162 163 if q = null 164 then do; 165 call pl1_print$non_varying_nl("",0); 166 goto cf; 167 end; 168 169 call pl1_print$varying_nl(encode_names(p -> ev_node.code) 170 || q -> token.string); 171 172 cf: p1 = p -> ev_node.equiv; 173 do while(p1 ^= null); 174 q = p1 -> ev_equiv.name; 175 if q = null then goto cg; 176 call pl1_print$varying_nl(encode_names(p1 -> ev_equiv.code) 177 || q -> token.string); 178 cg: p1 = p1 -> ev_equiv.next; 179 end; 180 181 call display_text(text_base,text_reloc_base,sym_use_base, 182 (p -> ev_node.first),p -> ev_node.last - p -> ev_node.first); 183 184 p = p -> ev_node.next; 185 end; 186 187 call pl1_print$non_varying_nl("",0); 188 189 formats: p = cg_static_$format_list; 190 if p = null then goto label_arrays; 191 192 call pl1_print$non_varying_nl("FORMATS",0); 193 194 do while(p ^= null); 195 q = p -> element(2); 196 call display_text$display_abs(addrel(text_base,q -> symbol.location), 197 addrel(text_reloc_base,q -> symbol.location),(q -> symbol.c_word_size)); 198 call pl1_print$non_varying_nl("",0); 199 200 p = p -> element(1); 201 end; 202 203 label_arrays: 204 p = cg_static_$label_list; 205 if p = null then go to common; 206 207 call pl1_print$non_varying_nl("LABEL ARRAYS",0); 208 209 do while(p ^= null); 210 q = p -> element(2); 211 call display_text(text_base,text_reloc_base,sym_use_base, 212 (q->label.location), q->label.high_bound - q->label.low_bound + 1); 213 call pl1_print$non_varying_nl("",0); 214 215 p = p -> element(1); 216 end; 217 218 goto common; 219 220 prt_on_unit: entry(pt); 221 222 bp = pt; 223 224 call entry_name((bp -> block.main),name); 225 line = "BEGIN CONDITION "||name; 226 goto com; 227 228 prt_begin_block: entry(pt); 229 230 bp = pt; 231 232 block_count = block_count+1; 233 name = substr(bindec(block_count),11,2); 234 line = "BEGIN BLOCK "||name; 235 236 com: text_base = cg_static_$text_base; 237 text_reloc_base = cg_static_$text_reloc_base; 238 sym_use_base = cg_static_$sym_use_base; 239 240 common: blk_pt = bp; 241 242 if bp -> block.number_of_entries = 1 then goto do_main; 243 244 p = bp -> block.prologue; 245 246 if p = null 247 then if bp -> block.plio_ps = null 248 then goto do_main; 249 250 call pl1_print$varying_nl(line); 251 line = "PROLOGUE SEQUENCE"; 252 253 if bp -> block.block_type = begin_block 254 then if bp -> block.plio_ps = null 255 then goto do_prol; else goto pr_dt; 256 257 call pl1_print$varying_nl(line); 258 line = ""; 259 260 pr_dt: n = bp -> enter.start; 261 call display_text(text_base,text_reloc_base,sym_use_base,n,bp -> enter.end - n); 262 263 do_prol: do while(p ^= null); 264 call prt_statement(p); 265 p = p -> statement.next; 266 end; 267 268 if bp -> block.block_type ^= begin_block 269 then do; 270 n = bp -> leave.start; 271 call display_text(text_base,text_reloc_base,sym_use_base,n, 272 bp -> leave.end - n); 273 end; 274 275 line = "MAIN SEQUENCE"; 276 277 do_main: p = bp -> block.main; 278 do while(p ^= null); 279 call prt_statement(p); 280 p = p -> statement.next; 281 end; 282 283 bp -> block.text_displayed = "1"b; 284 285 call prt_block(bp -> block.son); 286 287 if bp -> block.block_type = begin_block 288 then do; 289 call pl1_print$varying_nl(" END BLOCK "||name); 290 return; 291 end; 292 293 if bp -> block.block_type = on_unit 294 then do; 295 call pl1_print$varying_nl(" END CONDITION "||name); 296 return; 297 end; 298 299 call pl1_print$varying_nl(" END PROCEDURE "||name); 300 301 call prt_block(bp -> block.brother); 302 end; 303 304 prt_statement: proc(tq); 305 306 dcl (tq,q) ptr, /* points at statement node */ 307 bit_s_id bit(27), 308 stm char(133), 309 heading char(132) varying, 310 sixht char(6) int static init((6)" "), 311 nl char(1) int static init(" 312 "), 313 c char(1), 314 blank bit(1), 315 source_pt ptr, 316 ename char(32) varying, 317 st_type bit(9), 318 (i,j,l,ln,sn,k,c2) fixed bin, 319 c1 fixed bin(21); 320 321 dcl source_segment char(262143) aligned based(source_pt); 322 323 dcl 1 fake aligned based(source_pt), 324 2 skip char(c1-1) unaligned, 325 2 sub_str char(c2) unaligned; 326 14 1 dcl m fixed bin(15); 14 2 dcl pl1_stat_$source_seg fixed bin(8) ext static; 14 3 dcl pl1_stat_$last_source fixed bin(15) ext static; 14 4 dcl pl1_stat_$source_list_ptr ptr ext static; 14 5 dcl source_list(0:source_list_length) ptr based(pl1_stat_$source_list_ptr); 14 6 dcl source_list_length fixed bin(15) internal static initial(255) options(constant); 14 7 14 8 dcl 1 source based(source_list(m)) aligned, 14 9 2 node_type unal bit(9), 14 10 2 source_id unal structure, 14 11 3 file_number bit(8), 14 12 3 line_number bit(14), 14 13 3 statement_number bit(5), 14 14 2 standard_object_info aligned structure, 14 15 3 uid bit(36), 14 16 3 dtm fixed bin(71), 14 17 2 seg_ptr unal ptr, 14 18 2 name unal ptr, 14 19 2 source_length unal fixed bin(24), 14 20 2 pathlen unal fixed bin(10), 14 21 2 pathname char(n refer(source.pathlen)); 327 328 329 q = tq; 330 st_type = q -> statement.statement_type; 331 332 i = q -> statement.object.start; 333 j = q -> statement.object.finish; 334 if i = j 335 then do; 336 if st_type = begin_statement then goto l1; 337 if st_type = continue_statement then goto l1; 338 if st_type = do_statement then goto l1; 339 if st_type = end_statement then goto l1; 340 return; 341 end; 342 343 l1: if st_type = entry_statement | st_type = procedure_statement 344 then do; 345 if length(line) ^= 0 then call pl1_print$varying_nl(line); 346 call entry_name(q,ename); 347 line = "ENTRY TO "||ename; 348 end; 349 350 bit_s_id = string(q -> statement.source_id); 351 if bit_s_id = old_id 352 then if length(line) = 0 353 then goto show; 354 355 if bit_s_id = "0"b 356 then if length(line) ^= 0 357 then call pl1_print$varying_nl(line); 358 else; 359 else do; 360 361 if length(line) ^= 0 362 then do; 363 substr(stm,1,60) = line; 364 k = 60; 365 end; 366 else do; 367 substr(stm,1,6) = sixht; 368 k = 6; 369 end; 370 371 ln = fixed(substr(bit_s_id,9,14),14); 372 sn = fixed(substr(bit_s_id,23,5),5); 373 374 heading = substr(stm,1,k); 375 heading = heading || "STATEMENT "; 376 heading = heading || bindec$vs(sn); 377 heading = heading || " ON LINE "; 378 heading = heading || bindec$vs(ln); 379 380 ln = fixed(substr(bit_s_id,1,8),8); 381 if ln ^= 0 382 then do; 383 heading = heading || " OF FILE "; 384 heading = heading || bindec$vs(ln); 385 end; 386 387 call pl1_print$varying_nl(heading); 388 end; 389 390 line = ""; 391 old_id = bit_s_id; 392 if bit_s_id = "0"b then goto show; 393 394 c2 = q -> statement.source.length; 395 if c2 <= 0 then goto show; 396 397 /* there is a source statement, extract ptr to seg */ 398 399 m = q -> statement.source.segment; 400 source_pt = source.seg_ptr; 401 402 c1 = q -> statement.source.start+1; 403 404 beg: if c1 < 2 then goto write; 405 406 c = substr(source_segment,c1-1,1); 407 408 if c ^= nl 409 then if c ^= ";" 410 then do; 411 c1 = c1 - 1; 412 c2 = c2 + 1; 413 goto beg; 414 end; 415 416 write: call pl1_print$unaligned_nl(fake.sub_str,c2); 417 418 if substr(source_segment,c1+c2-1,1) ^= nl 419 then call pl1_print$non_varying_nl("",0); 420 421 show: if st_type = entry_statement | st_type = procedure_statement 422 then do; 423 l = q -> statement.labels -> list.element(2) -> reference.symbol -> symbol.location; 424 call display_text$display_abs(addrel(cg_static_$text_base,i), 425 addrel(cg_static_$text_reloc_base,i),l-i); 426 i = l; 427 end; 428 429 call display_text(cg_static_$text_base,cg_static_$text_reloc_base, 430 cg_static_$sym_use_base,i,j-i); 431 432 if st_type = begin_statement 433 then call prt_begin_block(q -> statement.root); 434 else if st_type = on_statement 435 then if ^ q -> statement.root -> operand(3) -> block.text_displayed 436 then call prt_on_unit(q -> statement.root -> operand(3)); 437 438 end; 439 440 entry_name: proc(pt,value); 441 442 dcl pt ptr, /* points at statement node */ 443 value char(32) varying; 444 445 dcl p ptr; 446 447 p = pt -> statement.labels -> element(2) -> reference.symbol -> symbol.token; 448 value = p -> token.string; 449 end; 450 451 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1007.5 display_pl1_text.pl1 >spec>on>pl128d>display_pl1_text.pl1 47 1 10/25/79 1645.8 cgsystem.incl.pl1 >ldd>include>cgsystem.incl.pl1 48 2 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 49 3 04/07/83 1635.0 statement.incl.pl1 >ldd>include>statement.incl.pl1 50 4 10/02/83 0828.4 symbol.incl.pl1 >spec>on>pl128d>symbol.incl.pl1 51 5 05/06/74 1741.6 array.incl.pl1 >ldd>include>array.incl.pl1 52 6 07/21/80 1546.3 reference.incl.pl1 >ldd>include>reference.incl.pl1 53 7 07/21/80 1546.3 operator.incl.pl1 >ldd>include>operator.incl.pl1 54 8 08/13/81 2211.5 list.incl.pl1 >ldd>include>list.incl.pl1 55 9 05/06/74 1742.1 label.incl.pl1 >ldd>include>label.incl.pl1 56 10 05/06/74 1741.2 ev_node.incl.pl1 >ldd>include>ev_node.incl.pl1 57 11 09/14/77 1705.7 token.incl.pl1 >ldd>include>token.incl.pl1 58 12 05/03/76 1320.8 block_types.incl.pl1 >ldd>include>block_types.incl.pl1 59 13 05/03/76 1320.4 statement_types.incl.pl1 >ldd>include>statement_types.incl.pl1 327 14 05/03/76 1320.4 source_list.incl.pl1 >ldd>include>source_list.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. addrel builtin function dcl 41 ref 117 118 133 133 134 196 196 196 196 424 424 424 424 allocated 1(18) based bit(1) level 2 packed unaligned dcl 4-3 ref 108 array 12 based pointer level 2 in structure "symbol" packed unaligned dcl 4-3 in procedure "display_pl1_text" ref 123 array based structure level 1 dcl 5-1 in procedure "display_pl1_text" attributes 31 based structure level 2 dcl 4-3 begin_block constant bit(9) initial dcl 12-1 ref 83 253 268 287 begin_statement constant bit(9) initial dcl 13-3 ref 336 432 bindec 000060 constant entry external dcl 23 ref 233 bindec$vs 000062 constant entry external dcl 23 ref 376 378 384 bit_s_id 000150 automatic bit(27) unaligned dcl 306 set ref 350* 351 355 371 372 380 391 392 blk_pt 000032 internal static pointer dcl 23 set ref 240* block based structure level 1 dcl 2-5 block_count 000034 internal static fixed bin(17,0) dcl 23 set ref 62* 232* 232 233* block_type 24 based bit(9) level 2 packed unaligned dcl 2-5 ref 83 89 253 268 287 293 bp 000112 automatic pointer dcl 71 set ref 76* 77 83 85 89 91 222* 224 230* 240 242 244 246 253 253 260 261 268 270 271 277 283 285 287 293 301 brother 2 based pointer level 2 packed unaligned dcl 2-5 set ref 85* 301* c 000255 automatic char(1) unaligned dcl 306 set ref 406* 408 408 c1 000301 automatic fixed bin(21,0) dcl 306 set ref 402* 404 406 411* 411 416 418 c2 000300 automatic fixed bin(17,0) dcl 306 set ref 394* 395 412* 412 416 416 416* 418 c_dcl_size 30 based fixed bin(24,0) level 2 dcl 4-3 ref 133 139 c_element_size 2 based fixed bin(24,0) level 2 dcl 5-1 ref 129 c_word_size 26 based fixed bin(24,0) level 2 dcl 4-3 ref 128 131 140 146 196 cg_static_$constant_list 000044 external static pointer dcl 23 ref 98 cg_static_$encoded_values 000042 external static pointer dcl 23 ref 155 cg_static_$format_list 000046 external static pointer dcl 23 ref 189 cg_static_$label_list 000052 external static pointer dcl 23 ref 203 cg_static_$sym_use_base 000050 external static pointer dcl 23 set ref 81 238 429* cg_static_$text_base 000036 external static pointer dcl 23 set ref 79 236 424 424 429* cg_static_$text_reloc_base 000040 external static pointer dcl 23 set ref 80 237 424 424 429* char 31(04) based bit(1) level 4 packed unaligned dcl 4-3 ref 120 chars_per_word constant fixed bin(8,0) initial dcl 1-5 ref 140 code 4 based fixed bin(18,0) level 2 in structure "ev_equiv" dcl 10-12 in procedure "display_pl1_text" ref 176 code 15 based fixed bin(18,0) level 2 in structure "ev_node" dcl 10-1 in procedure "display_pl1_text" ref 169 continue_statement constant bit(9) initial dcl 13-3 ref 337 data_type 31 based structure level 3 packed unaligned dcl 4-3 display_text 000054 constant entry external dcl 23 ref 181 211 261 271 429 display_text$display_abs 000064 constant entry external dcl 23 ref 132 146 196 424 display_text$display_ascii 000056 constant entry external dcl 23 ref 133 142 do_statement 002656 constant bit(9) initial dcl 13-3 ref 338 element 1 based pointer array level 2 packed unaligned dcl 8-6 ref 195 200 210 215 423 447 ename 000260 automatic varying char(32) dcl 306 set ref 346* 347 encode_names 000002 constant varying char(20) initial array dcl 43 ref 169 176 end 51(18) based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_pl1_text" ref 261 end 52(18) based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_pl1_text" ref 271 end_statement constant bit(9) initial dcl 13-3 ref 339 enter 51 based structure level 2 packed unaligned dcl 2-5 entry_statement constant bit(9) initial dcl 13-3 ref 343 421 equiv 10 based pointer level 2 dcl 10-1 ref 172 equivalence 14 based pointer level 2 packed unaligned dcl 4-3 ref 106 ev_equiv based structure level 1 unaligned dcl 10-12 ev_node based structure level 1 unaligned dcl 10-1 fake based structure level 1 dcl 323 finish 10(18) based fixed bin(17,0) level 3 packed unaligned dcl 3-9 ref 333 first 13 based fixed bin(18,0) level 2 dcl 10-1 ref 181 181 fixed builtin function dcl 41 ref 371 372 380 heading 000213 automatic varying char(132) dcl 306 set ref 374* 375* 375 376* 376 377* 377 378* 378 383* 383 384* 384 387* high_bound 3(18) based fixed bin(17,0) level 2 packed unaligned dcl 9-1 ref 211 i 000122 automatic fixed bin(17,0) dcl 71 in procedure "prt_block" set ref 131* i 000272 automatic fixed bin(17,0) dcl 306 in procedure "prt_statement" set ref 332* 334 424 424 424 424 424 426* 429* 429 j 000273 automatic fixed bin(17,0) dcl 306 set ref 333* 334 429 k 000123 automatic fixed bin(17,0) dcl 71 in procedure "prt_block" set ref 128* 129* 131 134 139* 140* 142 k 000277 automatic fixed bin(17,0) dcl 306 in procedure "prt_statement" set ref 364* 368* 374 l 000274 automatic fixed bin(17,0) dcl 306 set ref 423* 424 426 label based structure level 1 dcl 9-1 labels 4 based pointer level 2 packed unaligned dcl 3-9 ref 423 447 last 14 based fixed bin(18,0) level 2 dcl 10-1 ref 181 leave 52 based structure level 2 packed unaligned dcl 2-5 length builtin function dcl 41 in procedure "display_pl1_text" ref 345 351 355 361 length 12 based fixed bin(11,0) level 3 in structure "statement" packed unaligned dcl 3-9 in procedure "display_pl1_text" ref 394 line 000010 internal static varying char(60) dcl 23 set ref 61* 92* 225* 234* 250* 251* 257* 258* 275* 345 345* 347* 351 355 355* 361 363 390* list based structure level 1 dcl 8-6 ln 000275 automatic fixed bin(17,0) dcl 306 set ref 371* 378* 380* 381 384* location 1 based fixed bin(18,0) level 2 in structure "symbol" packed unsigned unaligned dcl 4-3 in procedure "display_pl1_text" ref 117 118 196 196 196 196 423 location 1 based fixed bin(17,0) level 2 in structure "label" packed unaligned dcl 9-1 in procedure "display_pl1_text" ref 211 low_bound 3 based fixed bin(17,0) level 2 packed unaligned dcl 9-1 ref 211 m 000302 automatic fixed bin(15,0) dcl 14-1 set ref 399* 400 main 13 based pointer level 2 packed unaligned dcl 2-5 ref 91 224 277 misc_attributes 31(19) based structure level 3 packed unaligned dcl 4-3 multi_use 7 based pointer level 2 packed unaligned dcl 4-3 ref 152 n 000100 automatic fixed bin(17,0) dcl 23 set ref 260* 261* 261 270* 271* 271 name 2 based pointer level 2 in structure "ev_node" dcl 10-1 in procedure "display_pl1_text" ref 161 name 000125 automatic varying char(32) dcl 71 in procedure "prt_block" set ref 91* 92 224* 225 233* 234 289 295 299 name 2 based pointer level 2 in structure "ev_equiv" dcl 10-12 in procedure "display_pl1_text" ref 174 nested_proc 000035 internal static bit(1) unaligned dcl 23 set ref 63* 94 96* next 1 based pointer level 2 in structure "statement" packed unaligned dcl 3-9 in procedure "display_pl1_text" ref 265 280 next based pointer level 2 in structure "ev_node" dcl 10-1 in procedure "display_pl1_text" ref 184 next based pointer level 2 in structure "ev_equiv" dcl 10-12 in procedure "display_pl1_text" ref 178 nl 002656 constant char(1) initial unaligned dcl 306 ref 408 418 null builtin function dcl 41 ref 77 99 104 106 128 139 156 160 163 173 175 190 194 205 209 246 246 253 263 278 number_of_entries 44 based fixed bin(17,0) level 2 dcl 2-5 ref 242 object 10 based structure level 2 packed unaligned dcl 3-9 old_id 000030 internal static bit(27) unaligned dcl 23 set ref 63* 351 391* on_statement constant bit(9) initial dcl 13-3 ref 434 on_unit constant bit(9) initial dcl 12-1 ref 89 293 operand 1 based pointer array level 2 packed unaligned dcl 7-6 set ref 434 434* operator based structure level 1 dcl 7-6 p 000312 automatic pointer dcl 445 in procedure "entry_name" set ref 447* 448 p 000100 automatic pointer dcl 71 in procedure "prt_block" set ref 98* 99 104 106 108 117 118 120 123 125 128 131 133 139 140 146 152* 152 155* 156 160 161 169 172 181 181 181 184* 184 189* 190 194 195 200* 200 203* 205 209 210 215* 215 244* 246 263 264* 265* 265 277* 278 279* 280* 280 p1 000102 automatic pointer dcl 71 set ref 172* 173 174 176 178* 178 pl1_print$non_varying_nl 000066 constant entry external dcl 23 ref 113 148 158 165 187 192 198 207 213 418 pl1_print$unaligned_nl 000070 constant entry external dcl 23 ref 416 pl1_print$varying_nl 000072 constant entry external dcl 23 ref 169 176 250 257 289 295 299 345 355 387 pl1_stat_$source_list_ptr 000074 external static pointer dcl 14-4 ref 400 plio_ps 17 based pointer level 2 packed unaligned dcl 2-5 ref 246 253 procedure_statement constant bit(9) initial dcl 13-3 ref 343 421 prologue 11 based pointer level 2 packed unaligned dcl 2-5 ref 244 pt parameter pointer unaligned dcl 69 in procedure "prt_block" ref 67 76 220 222 228 230 pt parameter pointer dcl 21 in procedure "display_pl1_text" ref 19 64 pt parameter pointer dcl 442 in procedure "entry_name" ref 440 447 put_const 000124 automatic bit(1) dcl 71 set ref 103* 111 114* q 000104 automatic pointer dcl 71 in procedure "prt_block" set ref 123* 128 129 139 161* 163 169 174* 175 176 195* 196 196 196 196 196 210* 211 211 211 q 000146 automatic pointer dcl 306 in procedure "prt_statement" set ref 329* 330 332 333 346* 350 394 399 402 423 432 434 434 r_pt 000106 automatic pointer dcl 71 set ref 118* 132* 146* reference based structure level 1 dcl 6-3 root 3 based pointer level 2 packed unaligned dcl 3-9 set ref 432* 434 434 seg_ptr 6 based pointer level 2 packed unaligned dcl 14-8 ref 400 segment 11 based fixed bin(11,0) level 3 packed unaligned dcl 3-9 ref 399 sixht 000000 constant char(6) initial unaligned dcl 306 ref 367 size 3 based fixed bin(9,0) level 2 dcl 11-3 ref 169 176 448 sn 000276 automatic fixed bin(17,0) dcl 306 set ref 372* 376* son 3 based pointer level 2 packed unaligned dcl 2-5 set ref 64* 285* source 11 based structure level 2 in structure "statement" packed unaligned dcl 3-9 in procedure "display_pl1_text" source based structure level 1 dcl 14-8 in procedure "prt_statement" source_id 0(09) based structure level 2 packed unaligned dcl 3-9 ref 350 source_list based pointer array dcl 14-5 ref 400 source_pt 000256 automatic pointer dcl 306 set ref 400* 406 416 418 source_segment based char(262143) dcl 321 ref 406 418 st_type 000271 automatic bit(9) unaligned dcl 306 set ref 330* 336 337 338 339 343 343 421 421 432 434 start 11(12) based fixed bin(23,0) level 3 in structure "statement" packed unaligned dcl 3-9 in procedure "display_pl1_text" ref 402 start 51 based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_pl1_text" ref 260 start 52 based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_pl1_text" ref 270 start 10 based fixed bin(17,0) level 3 in structure "statement" packed unaligned dcl 3-9 in procedure "display_pl1_text" ref 332 statement based structure level 1 dcl 3-9 statement_type 12(27) based bit(9) level 2 packed unaligned dcl 3-9 ref 330 stm 000151 automatic char(133) unaligned dcl 306 set ref 363* 367* 374 string builtin function dcl 41 in procedure "display_pl1_text" ref 350 string 4 based char level 2 in structure "token" dcl 11-3 in procedure "display_pl1_text" ref 169 176 448 sub_str based char level 2 packed unaligned dcl 323 set ref 416* substr builtin function dcl 41 set ref 233 363* 367* 371 372 374 380 406 418 sym_use_base 000120 automatic pointer dcl 71 set ref 81* 181* 211* 238* 261* 271* symbol based structure level 1 dcl 4-3 in procedure "display_pl1_text" symbol 3 based pointer level 2 in structure "reference" packed unaligned dcl 6-3 in procedure "display_pl1_text" ref 423 447 t_pt 000110 automatic pointer dcl 71 set ref 117* 132* 133 133 134* 134 142* 146* text_base 000114 automatic pointer dcl 71 set ref 79* 117 181* 196 196 211* 236* 261* 271* text_displayed 24(26) based bit(1) level 2 packed unaligned dcl 2-5 set ref 283* 434 text_reloc_base 000116 automatic pointer dcl 71 set ref 80* 118 181* 196 196 211* 237* 261* 271* token 5 based pointer level 2 in structure "symbol" packed unaligned dcl 4-3 in procedure "display_pl1_text" ref 447 token based structure level 1 dcl 11-3 in procedure "display_pl1_text" tq parameter pointer dcl 306 ref 304 329 value parameter varying char(32) dcl 442 set ref 440 448* varying 31(26) based bit(1) level 4 packed unaligned dcl 4-3 ref 125 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addr builtin function dcl 41 allocate_statement internal static bit(9) initial dcl 13-3 assignment_statement internal static bit(9) initial dcl 13-3 bit builtin function dcl 41 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_packed_digit internal static fixed bin(8,1) initial dcl 1-35 bits_per_two_words internal static fixed bin(8,0) initial dcl 1-5 bits_per_word internal static fixed bin(8,0) initial dcl 1-5 bits_per_words internal static fixed bin(8,0) initial array dcl 1-5 blank automatic bit(1) unaligned dcl 306 bound based structure level 1 dcl 5-21 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 call_statement internal static bit(9) initial dcl 13-3 close_statement internal static bit(9) initial dcl 13-3 convert_offset internal static fixed bin(8,1) initial array dcl 1-35 convert_size internal static fixed bin(8,0) initial array dcl 1-5 declare_statement internal static bit(9) initial dcl 13-3 default_fix_bin_p internal static fixed bin(8,0) initial dcl 1-5 default_statement internal static bit(9) initial dcl 13-3 delete_statement internal static bit(9) initial dcl 13-3 display_statement internal static bit(9) initial dcl 13-3 divide builtin function dcl 41 else_clause internal static bit(9) initial dcl 13-3 exit_statement internal static bit(9) initial dcl 13-3 external_procedure internal static bit(9) initial dcl 12-1 format_statement internal static bit(9) initial dcl 13-3 free_statement internal static bit(9) initial dcl 13-3 get_statement internal static bit(9) initial dcl 13-3 goto_statement internal static bit(9) initial dcl 13-3 if_statement internal static bit(9) initial dcl 13-3 internal_procedure internal static bit(9) initial dcl 12-1 label_size internal static fixed bin(8,0) initial dcl 1-5 locate_statement internal static bit(9) initial dcl 13-3 lock_statement internal static bit(9) initial dcl 13-3 max_block_number internal static fixed bin(17,0) initial dcl 2-74 max_dec_scale internal static fixed bin(8,0) initial dcl 1-5 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_list_elements internal static fixed bin(17,0) initial dcl 8-12 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 min_dec_scale internal static fixed bin(8,0) initial dcl 1-5 null_statement internal static bit(9) initial dcl 13-3 open_statement internal static bit(9) initial dcl 13-3 p automatic pointer dcl 23 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 pl1_stat_$last_source external static fixed bin(15,0) dcl 14-3 pl1_stat_$source_seg external static fixed bin(8,0) dcl 14-2 ptr builtin function dcl 41 put_statement internal static bit(9) initial dcl 13-3 read_statement internal static bit(9) initial dcl 13-3 return_statement internal static bit(9) initial dcl 13-3 revert_statement internal static bit(9) initial dcl 13-3 rewrite_statement internal static bit(9) initial dcl 13-3 root_block internal static bit(9) initial dcl 12-1 signal_statement internal static bit(9) initial dcl 13-3 size automatic fixed bin(17,0) dcl 71 source_list_length internal static fixed bin(15,0) initial dcl 14-6 stop_statement internal static bit(9) initial dcl 13-3 system_on_unit internal static bit(9) initial dcl 13-3 type automatic fixed bin(17,0) dcl 71 units_per_word internal static fixed bin(8,0) initial array dcl 1-5 unknown_statement internal static bit(9) initial dcl 13-3 unlock_statement internal static bit(9) initial dcl 13-3 wait_statement internal static bit(9) initial dcl 13-3 write_statement internal static bit(9) initial dcl 13-3 NAMES DECLARED BY EXPLICIT CONTEXT. beg 002361 constant label dcl 404 ref 413 ce 000570 constant label dcl 155 ref 99 cf 000713 constant label dcl 172 ref 166 cg 000772 constant label dcl 178 ref 175 com 001416 constant label dcl 236 ref 226 common 001430 constant label dcl 240 ref 94 205 218 db 000245 constant label dcl 85 ref 89 display_pl1_text 000162 constant entry external dcl 19 do_consts 000313 constant label dcl 98 do_main 001615 constant label dcl 277 ref 242 246 do_prol 001540 constant label dcl 263 ref 253 entry_name 002576 constant entry internal dcl 440 ref 91 224 346 formats 001046 constant label dcl 189 ref 156 l1 002035 constant label dcl 343 ref 336 337 338 339 label_arrays 001154 constant label dcl 203 ref 190 next_const 000564 constant label dcl 152 ref 106 pr_dt 001510 constant label dcl 260 set ref 255 prt_begin_block 001341 constant entry internal dcl 228 ref 432 prt_block 000206 constant entry internal dcl 67 ref 64 85 285 301 prt_on_unit 001274 constant entry internal dcl 220 ref 434 prt_statement 002002 constant entry internal dcl 304 ref 264 279 show 002453 constant label dcl 421 ref 351 392 395 write 002402 constant label dcl 416 ref 404 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3110 3206 2657 3120 Length 3714 2657 76 471 230 26 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_pl1_text 72 external procedure is an external procedure. prt_block 282 internal procedure calls itself recursively. prt_statement internal procedure shares stack frame of internal procedure prt_block. entry_name internal procedure shares stack frame of internal procedure prt_block. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 line display_pl1_text 000030 old_id display_pl1_text 000032 blk_pt display_pl1_text 000034 block_count display_pl1_text 000035 nested_proc display_pl1_text STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_pl1_text 000100 n display_pl1_text prt_block 000100 p prt_block 000102 p1 prt_block 000104 q prt_block 000106 r_pt prt_block 000110 t_pt prt_block 000112 bp prt_block 000114 text_base prt_block 000116 text_reloc_base prt_block 000120 sym_use_base prt_block 000122 i prt_block 000123 k prt_block 000124 put_const prt_block 000125 name prt_block 000146 q prt_statement 000150 bit_s_id prt_statement 000151 stm prt_statement 000213 heading prt_statement 000255 c prt_statement 000256 source_pt prt_statement 000260 ename prt_statement 000271 st_type prt_statement 000272 i prt_statement 000273 j prt_statement 000274 l prt_statement 000275 ln prt_statement 000276 sn prt_statement 000277 k prt_statement 000300 c2 prt_statement 000301 c1 prt_statement 000302 m prt_statement 000312 p entry_name THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bindec bindec$vs display_text display_text$display_abs display_text$display_ascii pl1_print$non_varying_nl pl1_print$unaligned_nl pl1_print$varying_nl THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_static_$constant_list cg_static_$encoded_values cg_static_$format_list cg_static_$label_list cg_static_$sym_use_base cg_static_$text_base cg_static_$text_reloc_base pl1_stat_$source_list_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000157 61 000167 62 000170 63 000171 64 000173 65 000204 67 000205 76 000213 77 000222 79 000226 80 000231 81 000234 83 000237 85 000245 86 000255 89 000256 91 000260 92 000264 94 000306 96 000311 98 000313 99 000316 103 000322 104 000324 106 000330 108 000334 111 000337 113 000341 114 000365 117 000366 118 000374 120 000377 123 000402 125 000404 128 000407 129 000416 131 000420 132 000440 133 000455 134 000474 135 000500 137 000503 139 000504 140 000513 142 000516 145 000530 146 000531 148 000546 152 000564 153 000567 155 000570 156 000574 158 000600 160 000621 161 000626 163 000631 165 000635 166 000653 169 000654 172 000713 173 000717 174 000724 175 000727 176 000733 178 000772 179 000776 181 000777 184 001024 185 001027 187 001030 189 001046 190 001052 192 001056 194 001075 195 001102 196 001105 198 001132 200 001150 201 001153 203 001154 205 001160 207 001164 209 001205 210 001212 211 001215 213 001250 215 001266 216 001271 218 001272 220 001273 222 001301 224 001310 225 001314 226 001336 228 001340 230 001346 232 001355 233 001357 234 001374 236 001416 237 001422 238 001425 240 001430 242 001433 244 001436 246 001440 250 001447 251 001457 253 001465 255 001475 257 001476 258 001506 260 001510 261 001515 263 001540 264 001544 265 001546 266 001551 268 001552 270 001557 271 001563 275 001607 277 001615 278 001620 279 001624 280 001626 281 001631 283 001632 285 001635 287 001644 289 001652 290 001702 293 001704 295 001706 296 001736 299 001740 301 001770 302 002001 304 002002 329 002004 330 002007 332 002012 333 002015 334 002021 336 002023 337 002026 338 002030 339 002032 340 002034 343 002035 345 002042 346 002055 347 002057 348 002101 350 002102 351 002105 355 002112 358 002126 361 002127 363 002131 364 002135 365 002137 367 002140 368 002143 371 002145 372 002151 374 002155 375 002165 376 002177 377 002221 378 002233 380 002256 381 002261 383 002263 384 002275 387 002320 390 002331 391 002333 392 002335 394 002336 395 002342 399 002343 400 002346 402 002354 404 002361 406 002364 408 002371 411 002376 412 002400 413 002401 416 002402 418 002426 421 002453 423 002460 424 002467 426 002516 429 002520 432 002542 434 002556 438 002575 440 002576 447 002600 448 002607 449 002620 ----------------------------------------------------------- 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