COMPILATION LISTING OF SEGMENT apl_external_fcn_defn_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 11/29/83 1605.2 mst Tue Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 apl_external_fcn_defn_: proc(a_a_path, a_class); 11 12 /* 13* * this routine defines an external function for APL 14* * it is called by the )ZFN, )MFN, and )DFN commands. 15* 16* * written 73.09.05 by DAM 17* Modified 811210 by TO to add apl_search_paths for local functions. 18* */ 19 20 21 dcl a_a_path char(*) parameter, /* pathname of external function */ 22 a_class fixed bin parameter, /* class code to put in function bead */ 23 a_path char(length(a_a_path)) aligned init(a_a_path) automatic; /* must copy argument because apl_create_save_frame_ 24* clobbers the portion of the stack used as 25* a command buffer, which is where a_a_path is */ 26 27 28 if ^init_flg then call init; 29 esw = 0; 30 sbp = null; 31 call apl_create_save_frame_; 32 33 /* now running in the global environment */ 34 35 if index(a_path, " ") ^= 0 then do; 36 37 /* 2 arguments, first is apl name */ 38 39 call apl_scan_(a_path, 1, apl_name_pos, apl_name_len, tok_type, null); 40 if tok_type ^= 2 then go to incorrect_command; 41 if apl_name_pos+apl_name_len ^= index(a_path, " ") then go to incorrect_command; 42 43 call apl_get_symbol_(substr(a_path, apl_name_pos, apl_name_len), sbp, (0)); 44 call apl_scan_(a_path, apl_name_pos+apl_name_len, cx, (0), tok_type, null); 45 if tok_type = 0 then go to incorrect_command; /* trailing spaces?? */ 46 end; 47 else cx = 1; 48 49 /* now process pathname/refname argument */ 50 51 not_refname = "0"b; 52 cx0 = cx; 53 do cx = cx by 1 to length(a_path); 54 if substr(a_path, cx, 1) = "<" then not_refname = "1"b; 55 else if substr(a_path, cx, 1) = ">" then not_refname = "1"b; 56 else if substr(a_path, cx, 1) = " " then go to incorrect_command; 57 end; 58 59 if not_refname then do; /* pathname */ 60 61 call expand_path_(addr(a_path_pn_part), length(a_path)+1-cx0, addr(dn), addr(en), code); 62 if code ^= 0 then go to coderr; 63 call seperate_en; 64 call hcs_$initiate(dn, seg_name, seg_name, 0, 0, segptr, code); 65 if segptr = null then go to coderr; 66 if code = error_table_$namedup then go to coderr; /* should be possible to get around this 67* somehow if there was a decent interface 68* to the linker */ 69 end; 70 71 else do; /* refname */ 72 en = substr(a_path, cx0); 73 call seperate_en; 74 end; 75 76 join: 77 if ^not_refname then do; 78 call hcs_$fs_get_seg_ptr (seg_name, segptr, code); 79 if segptr ^= null () then goto make_ptr; /* initiated already */ 80 call search_paths_$find_dir ("apl", null (), seg_name, ref_dir_name, dn, code); 81 if code ^= 0 then goto make_ptr; 82 call hcs_$initiate (dn, seg_name, seg_name, 0, 0, segptr, code); 83 if segptr = null () then goto coderr; 84 if code = error_table_$namedup then goto coderr; 85 end; 86 87 make_ptr: 88 call hcs_$make_ptr(addr (apl$), seg_name, entry_name, entry_ptr, code); 89 if entry_ptr = null then go to coderr; 90 call hcs_$fs_get_mode(entry_ptr, mode, code); 91 if code ^= 0 then go to coderr; 92 if (bit(fixed(mode, 4), 4) & "0100"b) = "0000"b then go to moderr; 93 if esw ^= 0 then go to got_entry_ptr; 94 95 /* if necessary, pick up sbp which points at symbol bead */ 96 97 if cx0 = 1 then call apl_get_symbol_(decat(en, " ", "100"b), sbp, (0)); 98 99 /* compute function_bead.text as reference name or full path name */ 100 101 if not_refname then do; 102 call expand_path_(addr(a_path_pn_part), length(a_path)+1-cx0, addr(dn), null, code); 103 if code ^= 0 then go to coderr; /* !! should never happen !! */ 104 end; 105 else dn = a_path_pn_part; 106 data_elements = length(decat(dn, " ", "100"b)); /* don't store trailing blanks */ 107 108 /* do not allow if name already has a global meaning */ 109 110 if sbp -> symbol_bead.meaning_pointer ^= null then go to incorrect_command; 111 112 /* now create the function bead */ 113 114 call apl_allocate_words_(size(function_bead), fbp); 115 string(fbp -> function_bead.type) = function_type; 116 fbp -> function_bead.lexed_function_bead_pointer = entry_ptr; 117 fbp -> function_bead.class = a_class; 118 fbp -> function_bead.stop_control_pointer, fbp -> function_bead.trace_control_pointer = null; 119 fbp -> function_bead.text_length = data_elements; 120 fbp -> function_bead.text = substr(dn, 1, data_elements); 121 122 /* now hook onto the meaning of the symbol which names the function */ 123 124 sbp -> symbol_bead.meaning_pointer = fbp; 125 call wash_sbp; 126 call apl_destroy_save_frame_update_; 127 return; 128 129 130 moderr: code = error_table_$moderr; 131 132 coderr: call com_err_(code, myname(esw), substr(a_path, cx0)); 133 call wash_sbp; 134 if esw = 0 then call apl_destroy_save_frame_; 135 return; 136 137 incorrect_command: 138 call wash_sbp; 139 if esw ^= 0 then do; /* should never happen */ 140 code = error_table_$badpath; 141 go to coderr; 142 end; 143 call ioa_$ioa_stream (apl_output_stream, "^Rincorrect command^B"); 144 call apl_destroy_save_frame_; 145 return; 146 147 wash_sbp: proc; 148 149 if sbp = null then return; 150 sbp -> symbol_bead.reference_count = sbp -> symbol_bead.reference_count - 1; 151 if sbp -> symbol_bead.reference_count <= 0 then call apl_free_bead_(sbp); 152 end; 153 154 155 seperate_en: proc; 156 157 if index(en, "$") = 0 then seg_name, entry_name = en; 158 else do; 159 seg_name = decat(en, "$", "100"b); 160 entry_name = decat(en, "$", "001"b); 161 end; 162 163 end; 164 165 init: proc; 166 call hcs_$fs_get_path_name (addr (apl$), dn, ix, en, code); 167 if code = 0 then ref_dir_name = dn; 168 init_flg = "1"b; 169 return; 170 end; 171 172 173 174 175 apl_external_fcn_addr_: entry(a_a_path, return_pointer_alignment_structure); 176 177 /* 178* * this entry, given function_bead.text for an external function, returns its entry-point pointer 179* */ 180 181 if ^init_flg then call init; 182 esw = 1; 183 sbp = null; 184 cx0 = 1; /* in case error */ 185 186 /* two possibilities - absolute pathname or refname */ 187 188 if substr(a_path, 1, 1) = ">" then do; /* full pathname */ 189 190 not_refname = "1"b; 191 call expand_path_(addr(a_path), length(a_path), addr(dn), addr(en), code); 192 if code ^= 0 then go to coderr; /* !! */ 193 call seperate_en; 194 call hcs_$initiate(dn, seg_name, seg_name, 0, 0, segptr, code); 195 if segptr = null then go to coderr; 196 if code = error_table_$namedup then go to coderr; 197 end; 198 199 else do; /* reference name */ 200 201 not_refname = "0"b; 202 en = a_path; 203 call seperate_en; 204 end; 205 206 go to join; 207 208 got_entry_ptr: 209 return_pointer = entry_ptr; 210 return; 211 212 dcl 1 return_pointer_alignment_structure aligned structure parameter, 213 2 return_pointer unaligned pointer; 214 215 dcl apl_name_pos fixed bin(21), 216 apl_name_len fixed bin(21), 217 tok_type fixed bin, 218 sbp unaligned pointer, /* -> symbol bead */ 219 fbp unaligned pointer, /* -> function bead */ 220 ix fixed bin, 221 cx fixed bin(21), /* current character index */ 222 cx0 fixed bin(21), /* character index of start of pathname or refname */ 223 not_refname bit(1), 224 dn char(168), 225 en char(32), 226 seg_name char(32), 227 entry_name char(32), 228 segptr pointer, 229 entry_ptr pointer, 230 code fixed bin(35), 231 esw fixed bin, 232 mode fixed bin(5), 233 data_elements fixed bin(21); 234 235 /* based */ 236 237 dcl 1 a_path_expand_path_hack_overlay based(addr(a_path)), 238 2 first_part char(cx0-1), 239 2 a_path_pn_part char(length(a_path)-cx0+1); 240 241 dcl apl_create_save_frame_ entry, 242 apl_destroy_save_frame_ entry, 243 apl_destroy_save_frame_update_ entry, 244 apl_scan_ entry(char(*) aligned, fixed bin(21), fixed bin(21), fixed bin(21), fixed bin, unaligned pointer), 245 apl_get_symbol_ entry(char(*), unaligned pointer, fixed bin), 246 apl_free_bead_ entry(unaligned pointer), 247 apl_allocate_words_ entry(fixed bin(18), unaligned pointer); 248 249 dcl expand_path_ entry(pointer, fixed bin, pointer, pointer, fixed bin(35)), 250 hcs_$initiate entry(char(*), char(*), char(*), fixed bin(1), fixed bin(2), pointer, fixed bin(35)), 251 hcs_$make_ptr entry(pointer, char(*), char(*), pointer, fixed bin(35)), 252 hcs_$fs_get_mode entry(pointer, fixed bin(5), fixed bin(35)), 253 hcs_$fs_get_path_name entry (pointer, char (*), fixed bin, char (*), fixed bin (35)), 254 hcs_$fs_get_seg_ptr entry (char (*), pointer, fixed bin (35)), 255 search_paths_$find_dir entry (char (*), pointer, char (*), char (*), char (*), fixed bin (35)), 256 com_err_ entry options(variable), 257 ioa_$ioa_stream entry options(variable); 258 259 /* external static */ 260 261 declare apl$ external static; 262 dcl (error_table_$moderr, error_table_$namedup, error_table_$badpath, 263 error_table_$no_search_list) fixed bin(35) external; 264 265 dcl init_flg bit (1) aligned int static init ("0"b); 266 dcl ref_dir_name char (168) int static init (""); 267 dcl myname(0:1) char(32) static init("apl_external_fcn_defn_", "apl_external_fcn_addr_"); 268 dcl apl_output_stream char (11) static initial ("apl_output_"); 269 270 dcl (addr, bit, fixed, length, substr, index, null, size, string, decat) builtin; 271 272 273 /* include files */ 274 1 1 /* ====== BEGIN INCLUDE SEGMENT apl_bead_format.incl.pl1 ================================== */ 1 2 1 3 declare 1 general_bead aligned based, /* The Venerable Bead */ 1 4 2 type unaligned, 1 5 3 bead_type unaligned, 1 6 4 operator bit (1), /* ON if operator bead */ 1 7 4 symbol bit (1), /* ON if symbol bead */ 1 8 4 value bit (1), /* ON if value bead */ 1 9 4 function bit (1), /* ON if function bead */ 1 10 4 group bit (1), /* ON if group bead */ 1 11 4 label bit (1), /* ON if label bead */ 1 12 4 shared_variable bit (1), /* ON if shared variable bead */ 1 13 4 lexed_function bit (1), /* ON if lexed function bead */ 1 14 3 data_type unaligned, 1 15 4 list_value bit (1), /* ON if a list value bead */ 1 16 4 character_value bit (1), /* ON if a character value bead */ 1 17 4 numeric_value bit (1), /* ON if a numeric value bead */ 1 18 4 integral_value bit (1), /* ON if an integral value bead */ 1 19 4 zero_or_one_value bit (1), /* ON if a boolean value bead */ 1 20 4 complex_value bit (1), /* ON if a complex, numeric value bead */ 1 21 3 unused_bits bit (4) unaligned, /* pad to 18 bits (for future use) */ 1 22 2 size bit (18) unaligned, /* Number of words this bead occupies 1 23* (used by bead storage manager) */ 1 24 2 reference_count fixed binary (29); /* Number of pointers which point 1 25* to this bead (used by bead manager) */ 1 26 1 27 1 28 /* constant strings for initing type field in various beads */ 1 29 1 30 declare ( 1 31 operator_type init("100000000000000000"b), 1 32 symbol_type init("010000000000000000"b), 1 33 value_type init("001000000000000000"b), 1 34 function_type init("000100000000000000"b), 1 35 group_type init("000010000000000000"b), 1 36 label_type init("001001000011000000"b), 1 37 shared_variable_type init("001000100000000000"b), 1 38 lexed_function_type init("000000010000000000"b), 1 39 1 40 list_value_type init("000000001000000000"b), 1 41 character_value_type init("001000000100000000"b), 1 42 numeric_value_type init("001000000010000000"b), 1 43 integral_value_type init("001000000011000000"b), 1 44 zero_or_one_value_type init("001000000011100000"b), 1 45 complex_value_type init("001000000000010000"b), 1 46 1 47 not_integer_mask init("111111111110011111"b), /* to clear integral, zero_or_one bits */ 1 48 not_zero_or_one_mask init("111111111111011111"b) /* to clear zero_or_one bit */ 1 49 ) bit(18) internal static; 1 50 1 51 /* ------ END INCLUDE SEGMENT apl_bead_format.incl.pl1 ---------------------------------- */ 275 2 1 /* ====== BEGIN INCLUDE SEGMENT apl_function_bead.incl.pl1 ================================ */ 2 2 2 3 /* This bead is used by apl to store the source code for user-defined functions */ 2 4 2 5 declare 1 function_bead aligned based, 2 6 2 7 2 header aligned like general_bead, 2 8 2 9 2 lexed_function_bead_pointer unaligned pointer, /* null if unlexed or has errors, else -> lexed code */ 2 10 2 class fixed bin, /* 0=normal, 1=locked, 2=external zfn, 3=mfn, 4=dfn */ 2 11 2 stop_control_pointer unaligned ptr, /* points to stop value bead, or null (no stop control) */ 2 12 2 trace_control_pointer unaligned ptr, /* points to trace value bead, or null (no trace control) */ 2 13 2 text_length fixed bin(21), /* length of function text */ 2 14 2 text aligned char(data_elements refer (function_bead.text_length)); 2 15 /* the user's code exactly as typed in */ 2 16 2 17 /* ------ END INCLUDE SEGMENT apl_function_bead.incl.pl1 -------------------------------- */ 276 3 1 /* ====== BEGIN INCLUDE SEGMENT apl_symbol_bead.incl.pl1 ================================== */ 3 2 3 3 /* Explanation of fields: 3 4* symbol_bead.hash_link_pointer points to next symbol in same hash bucket in the symbol table. 3 5* symbol_bead.meaning_pointer points to current "value" of this name: 3 6* = null => unused (e.g. undefined variable) 3 7* -> group bead => group name 3 8* -> value bead => variable with a value 3 9* -> function bead => function name 3 10* -> label bead => localized label value 3 11* -> shared var bead => shared variable */ 3 12 3 13 declare 1 symbol_bead aligned based, 3 14 2 header aligned like general_bead, 3 15 2 hash_link_pointer pointer unaligned, 3 16 2 meaning_pointer pointer unaligned, 3 17 2 name_length fixed binary, 3 18 2 name character (0 refer (symbol_bead.name_length)) unaligned; 3 19 3 20 /* ------ END INCLUDE SEGMENT apl_symbol_bead.incl.pl1 ---------------------------------- */ 277 278 279 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/29/83 1346.3 apl_external_fcn_defn_.pl1 >special_ldd>on>apl.1129>apl_external_fcn_defn_.pl1 275 1 03/27/82 0438.5 apl_bead_format.incl.pl1 >ldd>include>apl_bead_format.incl.pl1 276 2 03/27/82 0438.7 apl_function_bead.incl.pl1 >ldd>include>apl_function_bead.incl.pl1 277 3 03/27/82 0439.2 apl_symbol_bead.incl.pl1 >ldd>include>apl_symbol_bead.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. a_a_path parameter char unaligned dcl 21 ref 10 21 21 175 a_class parameter fixed bin(17,0) dcl 21 ref 10 117 a_path 000100 automatic char initial dcl 21 set ref 21* 35 39* 41 43 43 44* 53 54 55 56 61 61 61 61 61 72 102 102 102 102 102 105 105 132 132 188 191 191 191 191 202 a_path_expand_path_hack_overlay based structure level 1 packed unaligned dcl 237 a_path_pn_part based char level 2 packed unaligned dcl 237 set ref 61 61 102 102 105 addr builtin function dcl 270 ref 61 61 61 61 61 61 61 61 87 87 102 102 102 102 102 102 105 166 166 191 191 191 191 191 191 apl$ 000150 external static fixed bin(17,0) dcl 261 set ref 87 87 166 166 apl_allocate_words_ 000124 constant entry external dcl 241 ref 114 apl_create_save_frame_ 000110 constant entry external dcl 241 ref 31 apl_destroy_save_frame_ 000112 constant entry external dcl 241 ref 134 144 apl_destroy_save_frame_update_ 000114 constant entry external dcl 241 ref 126 apl_free_bead_ 000122 constant entry external dcl 241 ref 151 apl_get_symbol_ 000120 constant entry external dcl 241 ref 43 97 apl_name_len 000101 automatic fixed bin(21,0) dcl 215 set ref 39* 41 43 43 44 apl_name_pos 000100 automatic fixed bin(21,0) dcl 215 set ref 39* 41 43 43 44 apl_output_stream 000103 internal static char(11) initial unaligned dcl 268 set ref 143* apl_scan_ 000116 constant entry external dcl 241 ref 39 44 bit builtin function dcl 270 ref 92 class 3 based fixed bin(17,0) level 2 dcl 2-5 set ref 117* code 000220 automatic fixed bin(35,0) dcl 215 set ref 61* 62 64* 66 78* 80* 81 82* 84 87* 90* 91 102* 103 130* 132* 140* 166* 167 191* 192 194* 196 com_err_ 000144 constant entry external dcl 249 ref 132 cx 000106 automatic fixed bin(21,0) dcl 215 set ref 44* 47* 52 53* 53* 54 55 56* cx0 000107 automatic fixed bin(21,0) dcl 215 set ref 52* 61 61 61 61 61 72 97 102 102 102 102 102 105 105 132 132 184* data_elements 000223 automatic fixed bin(21,0) dcl 215 set ref 106* 114 114 119 120 decat builtin function dcl 270 ref 97 106 159 160 dn 000111 automatic char(168) unaligned dcl 215 set ref 61 61 64* 80* 82* 102 102 105* 106 120 166* 167 191 191 194* en 000163 automatic char(32) unaligned dcl 215 set ref 61 61 72* 97 157 157 159 160 166* 191 191 202* entry_name 000203 automatic char(32) unaligned dcl 215 set ref 87* 157* 160* entry_ptr 000216 automatic pointer dcl 215 set ref 87* 89 90* 116 208 error_table_$badpath 000156 external static fixed bin(35,0) dcl 262 ref 140 error_table_$moderr 000152 external static fixed bin(35,0) dcl 262 ref 130 error_table_$namedup 000154 external static fixed bin(35,0) dcl 262 ref 66 84 196 esw 000221 automatic fixed bin(17,0) dcl 215 set ref 29* 93 132 134 139 182* expand_path_ 000126 constant entry external dcl 249 ref 61 102 191 fbp 000104 automatic pointer unaligned dcl 215 set ref 114* 115 116 117 118 118 119 120 124 fixed builtin function dcl 270 ref 92 function_bead based structure level 1 dcl 2-5 set ref 114 114 function_type constant bit(18) initial unaligned dcl 1-30 ref 115 general_bead based structure level 1 dcl 1-3 hcs_$fs_get_mode 000134 constant entry external dcl 249 ref 90 hcs_$fs_get_path_name 000136 constant entry external dcl 249 ref 166 hcs_$fs_get_seg_ptr 000140 constant entry external dcl 249 ref 78 hcs_$initiate 000130 constant entry external dcl 249 ref 64 82 194 hcs_$make_ptr 000132 constant entry external dcl 249 ref 87 header based structure level 2 in structure "function_bead" dcl 2-5 in procedure "apl_external_fcn_defn_" header based structure level 2 in structure "symbol_bead" dcl 3-13 in procedure "apl_external_fcn_defn_" index builtin function dcl 270 ref 35 41 157 init_flg 000010 internal static bit(1) initial dcl 265 set ref 28 168* 181 ioa_$ioa_stream 000146 constant entry external dcl 249 ref 143 ix 000105 automatic fixed bin(17,0) dcl 215 set ref 166* length builtin function dcl 270 ref 21 53 61 61 61 102 102 102 105 106 191 191 lexed_function_bead_pointer 2 based pointer level 2 packed unaligned dcl 2-5 set ref 116* meaning_pointer 3 based pointer level 2 packed unaligned dcl 3-13 set ref 110 124* mode 000222 automatic fixed bin(5,0) dcl 215 set ref 90* 92 myname 000063 internal static char(32) initial array unaligned dcl 267 set ref 132* not_refname 000110 automatic bit(1) unaligned dcl 215 set ref 51* 54* 55* 59 76 101 190* 201* null builtin function dcl 270 ref 30 39 39 44 44 65 79 80 80 83 89 102 102 110 118 149 183 195 ref_dir_name 000011 internal static char(168) initial unaligned dcl 266 set ref 80* 167* reference_count 1 based fixed bin(29,0) level 3 dcl 3-13 set ref 150* 150 151 return_pointer parameter pointer level 2 packed unaligned dcl 212 set ref 208* return_pointer_alignment_structure parameter structure level 1 dcl 212 set ref 175 sbp 000103 automatic pointer unaligned dcl 215 set ref 30* 43* 97* 110 124 149 150 150 151 151* 183* search_paths_$find_dir 000142 constant entry external dcl 249 ref 80 seg_name 000173 automatic char(32) unaligned dcl 215 set ref 64* 64* 78* 80* 82* 82* 87* 157* 159* 194* 194* segptr 000214 automatic pointer dcl 215 set ref 64* 65 78* 79 82* 83 194* 195 size builtin function dcl 270 ref 114 114 stop_control_pointer 4 based pointer level 2 packed unaligned dcl 2-5 set ref 118* string builtin function dcl 270 set ref 115* substr builtin function dcl 270 ref 43 43 54 55 56 72 120 132 132 188 symbol_bead based structure level 1 dcl 3-13 text 7 based char level 2 dcl 2-5 set ref 120* text_length 6 based fixed bin(21,0) level 2 dcl 2-5 set ref 119* 120 tok_type 000102 automatic fixed bin(17,0) dcl 215 set ref 39* 40 44* 45 trace_control_pointer 5 based pointer level 2 packed unaligned dcl 2-5 set ref 118* type based structure level 3 packed unaligned dcl 2-5 set ref 115* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. character_value_type internal static bit(18) initial unaligned dcl 1-30 complex_value_type internal static bit(18) initial unaligned dcl 1-30 error_table_$no_search_list external static fixed bin(35,0) dcl 262 group_type internal static bit(18) initial unaligned dcl 1-30 integral_value_type internal static bit(18) initial unaligned dcl 1-30 label_type internal static bit(18) initial unaligned dcl 1-30 lexed_function_type internal static bit(18) initial unaligned dcl 1-30 list_value_type internal static bit(18) initial unaligned dcl 1-30 not_integer_mask internal static bit(18) initial unaligned dcl 1-30 not_zero_or_one_mask internal static bit(18) initial unaligned dcl 1-30 numeric_value_type internal static bit(18) initial unaligned dcl 1-30 operator_type internal static bit(18) initial unaligned dcl 1-30 shared_variable_type internal static bit(18) initial unaligned dcl 1-30 symbol_type internal static bit(18) initial unaligned dcl 1-30 value_type internal static bit(18) initial unaligned dcl 1-30 zero_or_one_value_type internal static bit(18) initial unaligned dcl 1-30 NAMES DECLARED BY EXPLICIT CONTEXT. apl_external_fcn_addr_ 001313 constant entry external dcl 175 apl_external_fcn_defn_ 000076 constant entry external dcl 10 coderr 001173 constant label dcl 132 ref 62 65 66 83 84 89 91 103 141 192 195 196 got_entry_ptr 001463 constant label dcl 208 ref 93 incorrect_command 001247 constant label dcl 137 ref 40 41 45 56 110 init 001632 constant entry internal dcl 165 ref 28 181 join 000507 constant label dcl 76 ref 206 make_ptr 000651 constant label dcl 87 ref 79 81 moderr 001170 constant label dcl 130 ref 92 seperate_en 001511 constant entry internal dcl 155 ref 63 73 193 203 wash_sbp 001467 constant entry internal dcl 147 ref 125 133 137 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2176 2356 1705 2206 Length 2654 1705 160 262 271 76 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME apl_external_fcn_defn_ 300 external procedure is an external procedure. wash_sbp internal procedure shares stack frame of external procedure apl_external_fcn_defn_. seperate_en internal procedure shares stack frame of external procedure apl_external_fcn_defn_. init internal procedure shares stack frame of external procedure apl_external_fcn_defn_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 init_flg apl_external_fcn_defn_ 000011 ref_dir_name apl_external_fcn_defn_ 000063 myname apl_external_fcn_defn_ 000103 apl_output_stream apl_external_fcn_defn_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME apl_external_fcn_defn_ 000100 a_path apl_external_fcn_defn_ 000100 apl_name_pos apl_external_fcn_defn_ 000101 apl_name_len apl_external_fcn_defn_ 000102 tok_type apl_external_fcn_defn_ 000103 sbp apl_external_fcn_defn_ 000104 fbp apl_external_fcn_defn_ 000105 ix apl_external_fcn_defn_ 000106 cx apl_external_fcn_defn_ 000107 cx0 apl_external_fcn_defn_ 000110 not_refname apl_external_fcn_defn_ 000111 dn apl_external_fcn_defn_ 000163 en apl_external_fcn_defn_ 000173 seg_name apl_external_fcn_defn_ 000203 entry_name apl_external_fcn_defn_ 000214 segptr apl_external_fcn_defn_ 000216 entry_ptr apl_external_fcn_defn_ 000220 code apl_external_fcn_defn_ 000221 esw apl_external_fcn_defn_ 000222 mode apl_external_fcn_defn_ 000223 data_elements apl_external_fcn_defn_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return alloc_auto_adj shorten_stack ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. apl_allocate_words_ apl_create_save_frame_ apl_destroy_save_frame_ apl_destroy_save_frame_update_ apl_free_bead_ apl_get_symbol_ apl_scan_ com_err_ expand_path_ hcs_$fs_get_mode hcs_$fs_get_path_name hcs_$fs_get_seg_ptr hcs_$initiate hcs_$make_ptr ioa_$ioa_stream pl1_decat_char_ search_paths_$find_dir THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. apl$ error_table_$badpath error_table_$moderr error_table_$namedup LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 21 000035 39 000062 44 000065 10 000072 28 000112 29 000116 30 000117 31 000121 35 000126 39 000141 40 000200 41 000203 43 000222 44 000254 45 000316 46 000320 47 000321 51 000323 52 000324 53 000326 54 000335 55 000347 56 000354 57 000356 59 000360 61 000362 62 000417 63 000421 64 000422 65 000463 66 000467 69 000473 72 000474 73 000506 76 000507 78 000511 79 000532 80 000536 81 000576 82 000600 83 000641 84 000645 87 000651 89 000702 90 000706 91 000721 92 000723 93 000731 97 000733 101 001005 102 001010 103 001045 104 001047 105 001050 106 001060 110 001112 114 001117 115 001136 116 001141 117 001143 118 001146 119 001151 120 001153 124 001156 125 001161 126 001162 127 001167 130 001170 132 001173 133 001235 134 001237 135 001246 137 001247 139 001250 140 001252 141 001255 143 001256 144 001301 145 001306 175 001307 181 001327 182 001333 183 001335 184 001337 188 001341 190 001345 191 001347 192 001376 193 001400 194 001401 195 001442 196 001446 197 001452 201 001453 202 001454 203 001461 206 001462 208 001463 210 001466 147 001467 149 001470 150 001474 151 001477 152 001510 155 001511 157 001512 159 001535 160 001572 161 001630 163 001631 165 001632 166 001633 167 001666 168 001674 169 001677 ----------------------------------------------------------- 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