COMPILATION LISTING OF SEGMENT basic_find_proc_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 09/11/84 1244.4 mst Tue 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 find subprogram for basic 12* 13* Initial Version: 21 October 1973 by BLW */ 14 /* modified 12/75 by M. Weaver for FAST */ 15 16 /* format: style2 */ 17 18 basic_find_proc_: 19 proc (bo_stack_pt); 20 21 dcl bo_stack_pt ptr; 22 23 dcl based_vs char (168) based varying, 24 (path, dir) char (168), 25 (seg, ent) char (32), 26 n fixed bin, 27 bo_pt ptr; 28 29 dcl (addr, index, length, null, search, substr) 30 builtin; 31 32 dcl fast_related_data_$in_dfast 33 bit (1) aligned ext; 34 dcl fast_related_data_$in_fast_or_dfast 35 bit (1) aligned ext; 36 37 dcl hcs_$make_ptr entry (ptr, char (*), char (*), ptr, fixed bin (35)), 38 dfast_run_unit_manager_$find_entry_value 39 entry (char (32), ptr, fixed bin (35)), 40 fast_run_unit_manager_$find_entry_value 41 entry (char (32), ptr, fixed bin (35)), 42 hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin, fixed bin, ptr, fixed bin (35)), 43 expand_path_ entry (ptr, fixed bin, ptr, ptr, fixed bin (35)); 44 1 1 dcl 1 basic_operators_frame aligned based(bo_pt), 1 2 2 pr(0:7) ptr, 1 3 2 prev_sp ptr, 1 4 2 next_sp ptr, 1 5 2 return_ptr ptr, 1 6 2 entry_ptr ptr, 1 7 2 operator_and_lp_ptr ptr, 1 8 2 arglist_ptr ptr, 1 9 2 reserved bit(72), 1 10 2 on_unit_relp(2) bit(18) unaligned, 1 11 2 translator_id bit(18) unaligned, 1 12 2 operator_return_offset bit(18) unaligned, 1 13 2 regs, 1 14 3 xr(0:7) bit(18) unaligned, 1 15 3 (a_reg,q_reg) fixed bin(35), 1 16 3 rest_of_regs(2) bit(36) aligned, 1 17 2 print_using_pt ptr, /* N.B. this holds return loc, pos in struc must be the same 1 18* as for ep basic as debuggers depend on this */ 1 19 2 abort_label label, 1 20 2 conversion_label label, 1 21 2 size_label label, 1 22 2 on_units(2), 1 23 3 name ptr, 1 24 3 body ptr, 1 25 3 size fixed bin, 1 26 3 next fixed bin, 1 27 2 program_header ptr, 1 28 2 text_base_ptr ptr, 1 29 2 string_segment ptr, 1 30 2 fcb_pt ptr, 1 31 2 arglist1(2) ptr, 1 32 2 runtime_arglist(2) ptr, 1 33 2 cpu_start fixed bin(71), 1 34 2 determinant float bin(63), 1 35 2 fcb(0:16) ptr unaligned, 1 36 2 precision_lng fixed bin(17) unaligned, 1 37 2 file_number fixed bin(17) unaligned, 1 38 2 (error_number,pdl) fixed bin, 1 39 2 program_header_offset bit(18) aligned, 1 40 2 numeric_data unaligned, 1 41 3 (finish,start) fixed bin(17), 1 42 2 string_data unaligned, 1 43 3 (finish,start) fixed bin(17), 1 44 2 random fixed bin, 1 45 2 first_frame bit(18), 1 46 2 last_frame bit(18), 1 47 2 next_frame bit(18), 1 48 2 number_read fixed bin, 1 49 2 (pu_pos,pu_length) fixed bin, 1 50 2 definitions ptr unal, 1 51 2 fn_temp1 fixed bin, 1 52 2 fn_temp2 fixed bin, 1 53 2 entryname ptr unal, 1 54 2 flags unaligned, 1 55 3 non_basic_caller bit(1), 1 56 3 main_program bit(1), 1 57 3 quits_disabled bit(1), 1 58 3 had_quit bit(1), 1 59 3 ignore_handler bit(1), 1 60 3 filler bit(13), 1 61 2 number_length fixed bin(17) unaligned, 1 62 2 string_value bit(36), 1 63 2 temporaries(3) aligned, 1 64 3 temp float bin, 1 65 3 tpad bit(36), 1 66 2 arg(1) ptr; 1 67 1 68 dcl 1 d_basic_operators_frame aligned based(bo_pt), 1 69 2 x_pr(0:7) ptr, 1 70 2 x_prev_sp ptr, 1 71 2 x_next_sp ptr, 1 72 2 x_return_ptr ptr, 1 73 2 x_entry_ptr ptr, 1 74 2 x_operator_and_lp_ptr ptr, 1 75 2 x_arglist_ptr ptr, 1 76 2 x_reserved bit(72), 1 77 2 x_on_unit_relp(2) bit(18) unaligned, 1 78 2 x_translator_id bit(18) unaligned, 1 79 2 x_operator_return_offset bit(18) unaligned, 1 80 2 x_regs, 1 81 3 x_xr(0:7) bit(18) unaligned, 1 82 3 (x_a_reg,x_q_reg) fixed bin, 1 83 3 x_rest_of_regs(2) bit(36) aligned, 1 84 2 x_print_using_pt ptr, 1 85 2 x_abort_label label, 1 86 2 x_conversion_label label, 1 87 2 x_size_label label, 1 88 2 x_on_units(2), 1 89 3 x_name ptr, 1 90 3 x_body ptr, 1 91 3 x_size fixed bin, 1 92 3 x_next fixed bin, 1 93 2 x_program_header ptr, 1 94 2 x_text_base_ptr ptr, 1 95 2 x_string_segment ptr, 1 96 2 x_fcb_pt ptr, 1 97 2 x_arglist1(2) ptr, 1 98 2 x_runtime_arglist(2) ptr, 1 99 2 x_cpu_start fixed bin(71), 1 100 2 x_determinant float bin(63), 1 101 2 x_fcb(0:16) ptr unaligned, 1 102 2 x_precision_lng fixed bin(17) unaligned, 1 103 2 x_file_number fixed bin(17) unaligned, 1 104 2 x_error_number fixed bin, 1 105 2 x_pdl fixed bin, 1 106 2 x_program_header_offset bit(18) aligned, 1 107 2 x_numeric_data unaligned, 1 108 3 (x_finish,x_start) fixed bin(17), 1 109 2 x_string_data unaligned, 1 110 3 (x_finish,x_start) fixed bin(17), 1 111 2 x_random fixed bin, 1 112 2 x_first_frame bit(18), 1 113 2 x_last_frame bit(18), 1 114 2 x_next_frame bit(18), 1 115 2 x_number_read fixed bin, 1 116 2 (x_pu_pos,x_pu_length) fixed bin, 1 117 2 x_definitions ptr unal, 1 118 2 x_fn_temp1 fixed bin, 1 119 2 x_fn_temp2 fixed bin, 1 120 2 x_entryname ptr unal, 1 121 2 x_flags unaligned, 1 122 3 x_non_basic_caller bit(1), 1 123 3 x_main_program bit(1), 1 124 3 x_quits_disabled bit(1), 1 125 3 x_had_quit bit(1), 1 126 3 x_filler bit(14), 1 127 2 x_number_length fixed bin(17) unaligned, 1 128 2 x_string_value bit(36), 1 129 2 d_temp(3) float bin(63), 1 130 2 x_arg(1) ptr; 45 46 47 bo_pt = bo_stack_pt; 48 49 if search (pr (1) -> based_vs, "<>") ^= 0 50 then do; 51 52 /* We have a path name, attempt to initiate specified segment */ 53 54 if fast_related_data_$in_fast_or_dfast 55 then do; /* don't allow pathnames in fast */ 56 pr (2) = null; 57 return; 58 end; 59 60 path = pr (1) -> based_vs; 61 62 call expand_path_ (addr (path), length (pr (1) -> based_vs), addr (dir), addr (seg), q_reg); 63 64 if q_reg ^= 0 65 then return; 66 67 call hcs_$initiate_count (dir, seg, seg, n, 1, pr (2), q_reg); 68 69 if pr (2) = null 70 then return; 71 72 n = index (seg, "$"); 73 74 if n = 0 75 then ent = seg; 76 else do; 77 ent = substr (seg, n + 1); 78 substr (seg, n) = ""; 79 end; 80 end; 81 else do; 82 83 /* not a path name */ 84 85 n = index (pr (1) -> based_vs, "$"); 86 87 if n = 0 88 then do; 89 seg = pr (1) -> based_vs; 90 ent = pr (1) -> based_vs; 91 end; 92 else do; 93 if fast_related_data_$in_fast_or_dfast 94 then do; 95 pr (2) = null; 96 return; 97 end; 98 seg = substr (pr (1) -> based_vs, 1, n - 1); 99 ent = substr (pr (1) -> based_vs, n + 1); 100 end; 101 end; 102 103 if fast_related_data_$in_dfast 104 then call dfast_run_unit_manager_$find_entry_value (ent, pr (2), q_reg); 105 else if fast_related_data_$in_fast_or_dfast 106 then call fast_run_unit_manager_$find_entry_value (ent, pr (2), q_reg); 107 else call hcs_$make_ptr (null, seg, ent, pr (2), q_reg); 108 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/11/84 1223.8 basic_find_proc_.pl1 >spec>on>basic>basic_find_proc_.pl1 45 1 03/27/82 0439.4 basic_operator_frame.incl.pl1 >ldd>include>basic_operator_frame.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. addr builtin function dcl 29 ref 62 62 62 62 62 62 based_vs based varying char(168) dcl 23 ref 49 60 62 62 85 89 90 98 99 basic_operators_frame based structure level 1 dcl 1-1 bo_pt 000246 automatic pointer dcl 23 set ref 47* 49 56 60 62 62 62 64 67 67 69 85 89 90 95 98 99 103 103 105 105 107 107 bo_stack_pt parameter pointer dcl 21 ref 18 47 dfast_run_unit_manager_$find_entry_value 000016 constant entry external dcl 37 ref 103 dir 000152 automatic char(168) unaligned dcl 23 set ref 62 62 67* ent 000234 automatic char(32) unaligned dcl 23 set ref 74* 77* 90* 99* 103* 105* 107* expand_path_ 000024 constant entry external dcl 37 ref 62 fast_related_data_$in_dfast 000010 external static bit(1) dcl 32 ref 103 fast_related_data_$in_fast_or_dfast 000012 external static bit(1) dcl 34 ref 54 93 105 fast_run_unit_manager_$find_entry_value 000020 constant entry external dcl 37 ref 105 hcs_$initiate_count 000022 constant entry external dcl 37 ref 67 hcs_$make_ptr 000014 constant entry external dcl 37 ref 107 index builtin function dcl 29 ref 72 85 length builtin function dcl 29 ref 62 62 n 000244 automatic fixed bin(17,0) dcl 23 set ref 67* 72* 74 77 78 85* 87 98 99 null builtin function dcl 29 ref 56 69 95 107 107 path 000100 automatic char(168) unaligned dcl 23 set ref 60* 62 62 pr based pointer array level 2 dcl 1-1 set ref 49 56* 60 62 62 67* 69 85 89 90 95* 98 99 103* 105* 107* q_reg 45 based fixed bin(35,0) level 3 dcl 1-1 set ref 62* 64 67* 103* 105* 107* regs 40 based structure level 2 dcl 1-1 search builtin function dcl 29 ref 49 seg 000224 automatic char(32) unaligned dcl 23 set ref 62 62 67* 67* 72 74 77 78* 89* 98* 107* substr builtin function dcl 29 set ref 77 78* 98 99 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. d_basic_operators_frame based structure level 1 dcl 1-68 NAME DECLARED BY EXPLICIT CONTEXT. basic_find_proc_ 000013 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 666 714 537 676 Length 1110 537 26 157 126 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME basic_find_proc_ 218 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME basic_find_proc_ 000100 path basic_find_proc_ 000152 dir basic_find_proc_ 000224 seg basic_find_proc_ 000234 ent basic_find_proc_ 000244 n basic_find_proc_ 000246 bo_pt basic_find_proc_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dfast_run_unit_manager_$find_entry_value expand_path_ fast_run_unit_manager_$find_entry_value hcs_$initiate_count hcs_$make_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. fast_related_data_$in_dfast fast_related_data_$in_fast_or_dfast LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000010 47 000020 49 000024 54 000040 56 000042 57 000044 60 000045 62 000051 64 000100 67 000103 69 000143 72 000150 74 000161 77 000166 78 000174 80 000204 85 000205 87 000217 89 000220 90 000224 91 000230 93 000231 95 000233 96 000235 98 000236 99 000242 103 000250 105 000267 107 000305 108 000336 ----------------------------------------------------------- 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