COMPILATION LISTING OF SEGMENT e_argument_parse_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 08/01/88 0953.2 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1981 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 e_argument_parse_: procedure (P_arglist, P_name, P_code); 11 12 /* Modified: 25 November 1983 by B. Margolin to add -shared_static */ 13 /* Modified: 2 November 1984 by B. Margolinto add -force/-no_force */ 14 15 /* Parameters */ 16 dcl P_arglist pointer parameter; 17 dcl P_code fixed bin (35); 18 dcl P_name character (*) parameter; 19 dcl P_type fixed bin parameter; 20 21 /* System Entries */ 22 dcl com_err_ entry() options(variable); 23 dcl cu_$arg_count_rel entry (fixed bin, ptr, fixed bin(35)); 24 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin(21), fixed bin(35), ptr); 25 dcl cv_dec_check_ entry (char(*), fixed bin(35)) returns(fixed bin(35)); 26 dcl get_system_free_area_ entry() returns(ptr); 27 28 /* Based */ 29 dcl arg character (al) based (ap); 30 dcl area area based (area_ptr); 31 32 /* Automatic */ 33 dcl al fixed bin (21); 34 dcl ap pointer; 35 dcl area_ptr pointer; 36 dcl code fixed bin (35); 37 dcl idx fixed bin; 38 dcl nargs fixed bin; 39 dcl temp_path character (168); 40 dcl temp_ptr pointer; 41 dcl temp_type fixed bin; 42 43 /* External */ 44 dcl error_table_$badopt fixed bin(35) ext static; 45 dcl error_table_$bad_conversion fixed bin(35) ext static; 46 47 /* Static */ 48 dcl path_pointer pointer static internal initial (null ()); 49 50 /* Builtin */ 51 dcl (null, substr) builtin; 52 53 /* Include Files */ 1 1 /* Begin include file emacs_data.incl.pl1 */ 1 2 /* format: style3 */ 1 3 /**** Created: RMSoley 5 August 1981 ****/ 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(81-11-19,Soley), approve(), audit(), install(): 1 6* for flags.got_cr 1 7* 2) change(82-04-15,Soley), approve(), audit(), install(): 1 8* for tasking.return_label 1 9* 3) change(82-06-02,Margolin), approve(), audit(), install(): 1 10* to also include level_info dcl 1 11* 4) change(84-09-23,Margolin), approve(), audit(), install(): 1 12* to add emacs_data.arguments.shared_static 1 13* 5) change(84-11-02,Margolin), approve(), audit(), install(): 1 14* to add emacs_data.arguments.force 1 15* 6) change(86-07-16,Margolin), approve(86-07-16,MCR7452), 1 16* audit(86-11-03,Coren), install(86-11-03,MR12.0-1205): 1 17* Added emacs_data.flags.turned_on_video and removed the copyright notice 1 18* (include files aren't supposed to have them). 1 19* 7) change(87-12-21,Schroth), approve(88-02-29,MCR7851), 1 20* audit(88-06-06,RBarstad), install(88-08-01,MR12.2-1071): 1 21* to add extended_ascii flag and extend breaktable for 8bit I/O. 1 22* END HISTORY COMMENTS */ 1 23 1 24 1 25 /* Stuff to manage invocations. */ 1 26 dcl e_find_invocation_ entry () returns (pointer); 1 27 dcl emacs_data_ptr pointer; 1 28 1 29 /* emacs_data information structure. */ 1 30 declare 1 emacs_data aligned based (emacs_data_ptr), 1 31 2 next_invocation pointer initial (null ()), /* invoc list */ 1 32 2 prev_invocation pointer initial (null ()), 1 33 2 frame_ptr pointer initial (null ()), /* cur emx frame */ 1 34 2 myname character (32) initial (""), /* emacs name */ 1 35 2 env_name character (32) initial (""), /* .sv.lisp name */ 1 36 2 log_name character (32) initial (""), /* for write_log */ 1 37 2 info_ptr pointer init (null ()), /* emacs_ ip */ 1 38 2 status_code fixed bin (35) init (0), /* emacs_ code */ 1 39 2 output_iocb pointer init (null ()), /* output IOCBP */ 1 40 2 input_iocb pointer init (null ()), /* input IOCBP */ 1 41 2 arg_list_ptr pointer init (null ()), 1 42 2 flags aligned, 1 43 3 debugging bit (1) unaligned init ("0"b),/* debugging */ 1 44 3 using_video bit (1) unaligned init ("0"b),/* use vidsys */ 1 45 3 in_emacs bit (1) unaligned init ("0"b),/* now inside */ 1 46 3 new_arguments bit (1) unaligned init ("0"b),/* have new args */ 1 47 3 using_r0_echnego 1 48 bit (1) unaligned init ("1"b), 1 49 3 netsw bit (1) unaligned init ("0"b),/* using net */ 1 50 3 messages_were_sent_here 1 51 bit (1) unal init ("0"b), 1 52 3 update_breaktable 1 53 bit (1) unal init ("1"b), /* need to upd */ 1 54 3 got_cr bit (1) unal init ("0"b), /* last char CR */ 1 55 3 turned_on_video 1 56 bit (1) unal init ("0"b), /* automatically turned on video */ 1 57 3 extended_ascii 1 58 bit (1) unal init ("0"b), /* 8-bit chars */ 1 59 3 pad2 bit (25) unaligned initial (""b), 1 60 2 arguments aligned, 1 61 3 ns bit (1) unal, /* -ns */ 1 62 3 query bit (1) unal, /* -query */ 1 63 3 reset bit (1) unal, /* -reset */ 1 64 3 task bit (1) unal, /* -task */ 1 65 3 no_task bit (1) unal, /* -no_task */ 1 66 3 destroy_task bit (1) unal, /* -destroy_task */ 1 67 3 shared_static bit (1) unal, /* -shared_static */ 1 68 3 force bit (1) unal, /* -force */ 1 69 3 ls fixed bin (17) aligned, /* -ls */ 1 70 3 pl fixed bin (17) unal, /* -pl */ 1 71 3 ll fixed bin (17) aligned, /* -ll */ 1 72 3 apply fixed bin (17) unal, /* 1+argno -ap */ 1 73 3 path_count fixed bin (17) aligned, /* # of paths */ 1 74 3 ttp character (168) unaligned, /* -ttp given */ 1 75 3 first_path pointer, /* ptr to chain */ 1 76 2 tasking aligned, 1 77 3 task_flags aligned, 1 78 4 in_task bit (1) unaligned initial ("0"b), 1 79 /* tasking on */ 1 80 4 destroy bit (1) unaligned initial ("0"b), 1 81 /* self destruct */ 1 82 4 pad1 bit (34) unaligned initial (""b), 1 83 3 task_id bit (36) aligned initial (""b), 1 84 /* task ID */ 1 85 3 saved_cl_intermediary 1 86 entry, /* old CLI */ 1 87 3 return_label label, /* for -dtk */ 1 88 2 interrupts aligned, 1 89 3 head pointer init (null ()), /* of intp chain */ 1 90 3 tail pointer init (null ()), /* of intp chain */ 1 91 3 array (0:1) fixed bin init ((2) 0), /* lisp/pl1 com */ 1 92 2 terminal_type character (256) init (""), /* saved ttp */ 1 93 2 tty_modes character (512) init (""), /* orig ttymodes */ 1 94 2 linel fixed bin (17) aligned, /* orig linel */ 1 95 2 ttyx fixed bin (17) aligned, /* tty index */ 1 96 2 netx fixed bin (35), /* net index */ 1 97 2 wnetx fixed bin (35), 1 98 2 chars_in_obuf fixed bin (21) init (0), /* to be dumped */ 1 99 2 echoed fixed bin (21) init (0), /* alrdy echoed */ 1 100 2 cgot fixed bin (21) init (0), /* echnego got */ 1 101 2 ctook fixed bin (21) init (0), /* took from buf */ 1 102 2 edir character (168) init (""), /* emacs dir */ 1 103 2 ledir character (168) init (""), /* e log dir */ 1 104 2 breaktable (0:255) bit (1) unal init ((256) (1)"1"b), 1 105 2 first_msgp pointer init (null ()), 1 106 2 last_msgp pointer init (null ()), 1 107 2 ibufptr pointer init (null ()), 1 108 2 obufptr pointer init (null ()), 1 109 2 ospeed fixed binary init (0), 1 110 2 level_ptr pointer init (null ()); 1 111 1 112 /* Pathname (for arguments.path, arguments.macro) structure. */ 1 113 dcl 1 path aligned based, 1 114 2 next_path pointer, 1 115 2 type fixed bin, 1 116 2 name character (168); 1 117 1 118 /* Types of paths. */ 1 119 dcl MACRO_PATH fixed bin initial (0); 1 120 dcl FIND_PATH fixed bin initial (1); 1 121 1 122 dcl 1 level_info aligned based, /* describes a level of recursion */ 1 123 2 prev_level pointer, 1 124 2 tty_modes character (256) unaligned, 1 125 2 n_used fixed binary, 1 126 2 n_allocated fixed binary, 1 127 2 segment_ptrs (n_to_allocate refer (level_info.n_allocated)) pointer; 1 128 1 129 /* END INCLUDE FILE emacs_data.incl.pl1 */ 54 55 56 emacs_data_ptr = e_find_invocation_ (); 57 58 /* Defaultify arguments. */ 59 emacs_data.arguments.task = "0"b; 60 emacs_data.arguments.no_task = "0"b; 61 emacs_data.arguments.destroy_task = "0"b; 62 emacs_data.arguments.shared_static = "0"b; 63 emacs_data.arguments.query = "0"b; 64 emacs_data.arguments.reset = "0"b; 65 emacs_data.arguments.ns = "0"b; 66 emacs_data.arguments.apply = -1; 67 emacs_data.arguments.pl = -1; 68 emacs_data.arguments.ll = -1; 69 emacs_data.arguments.ls = -1; 70 emacs_data.arguments.path_count = 0; 71 emacs_data.arguments.ttp = ""; 72 emacs_data.arguments.first_path = null (); 73 emacs_data.arguments.force = "0"b; 74 75 /* Clear flags and IOCB pointers. */ 76 emacs_data.flags.new_arguments = "1"b; 77 emacs_data.flags.using_video = "0"b; 78 if ^emacs_data.flags.debugging 79 & ^emacs_data.tasking.task_flags.in_task then do; 80 emacs_data.output_iocb, emacs_data.input_iocb = null (); 81 end; 82 83 P_code = 0; 84 area_ptr = get_system_free_area_ (); 85 86 call cu_$arg_count_rel (nargs, P_arglist, code); 87 if code ^= 0 then do; 88 P_code = code; 89 call com_err_ (code, P_name); 90 return; 91 end; 92 93 do idx = 1 to nargs; 94 call get_argument (idx, ""); 95 96 if index (arg, "-") ^= 1 then do; /* not control arg */ 97 allocate path in (area) set (temp_ptr); 98 if emacs_data.arguments.path_count = 0 99 then emacs_data.arguments.first_path = temp_ptr; 100 else path_pointer -> path.next_path = temp_ptr; 101 path_pointer = temp_ptr; 102 emacs_data.arguments.path_count = 103 emacs_data.arguments.path_count + 1; 104 path_pointer -> path.name = arg; 105 path_pointer -> path.type = FIND_PATH; 106 end; 107 108 else if arg = "-no_start_up" | arg = "-no_startup" | arg = "-ns" 109 then emacs_data.arguments.ns = "1"b; 110 111 else if arg = "-reset" then do; 112 emacs_data.arguments.ttp = ""; 113 emacs_data.arguments.query = "0"b; 114 emacs_data.arguments.reset = "1"b; 115 end; 116 117 else if arg = "-query" then do; 118 emacs_data.arguments.ttp = ""; 119 emacs_data.arguments.reset = "0"b; 120 emacs_data.arguments.query = "1"b; 121 end; 122 123 else if arg = "-terminal_type" | arg = "-ttp" then do; 124 idx = idx + 1; 125 call get_argument (idx, "Terminal type."); 126 emacs_data.arguments.ttp = arg; 127 emacs_data.arguments.reset = "0"b; 128 emacs_data.arguments.query = "0"b; 129 end; 130 131 else if arg = "-macros" | arg = "-macro" | arg = "-mc" then do; 132 idx = idx + 1; 133 call get_argument (idx, "Macro file pathname."); 134 allocate path in (area) set (temp_ptr); 135 if emacs_data.arguments.path_count = 0 136 then emacs_data.arguments.first_path = temp_ptr; 137 else path_pointer -> path.next_path = temp_ptr; 138 path_pointer = temp_ptr; 139 emacs_data.arguments.path_count = 140 emacs_data.arguments.path_count + 1; 141 path_pointer -> path.name = arg; 142 path_pointer -> path.type = MACRO_PATH; 143 end; 144 145 else if arg = "-line_length" | arg = "-ll" then do; 146 idx = idx + 1; 147 emacs_data.arguments.ll = 148 get_numeric_argument (idx, "line length."); 149 end; 150 151 else if arg = "-page_length" | arg = "-pl" then do; 152 idx = idx + 1; 153 emacs_data.arguments.pl = 154 get_numeric_argument (idx, "page length."); 155 end; 156 157 else if arg = "-apply" | arg = "-ap" then do; 158 idx, emacs_data.arguments.apply = idx + 1; 159 call get_argument (idx, "Argument after -apply."); 160 idx = nargs; 161 end; 162 163 else if arg = "-task" then do; 164 emacs_data.arguments.task = "1"b; 165 emacs_data.arguments.no_task = "0"b; 166 end; 167 168 else if arg = "-no_task" | arg = "-ntk" then do; 169 emacs_data.arguments.task = "0"b; 170 emacs_data.arguments.no_task = "1"b; 171 end; 172 173 else if arg = "-destroy_task" | arg = "-dtk" then do; 174 emacs_data.arguments.destroy_task = "1"b; 175 end; 176 177 else if arg = "-shared_static" | arg = "-sst" then 178 emacs_data.arguments.shared_static = "1"b; 179 180 else if arg = "-no_shared_static" | arg = "-nsst" then 181 emacs_data.arguments.shared_static = "0"b; 182 183 else if arg = "-line_speed" | arg = "-ls" then do; 184 idx = idx + 1; 185 emacs_data.arguments.ls = 186 get_numeric_argument (idx, "line speed."); 187 end; 188 189 else if arg = "-force" | arg = "-fc" then emacs_data.arguments.force = "1"b; 190 191 else if arg = "-no_force" | arg = "-nfc" then emacs_data.arguments.force = "0"b; 192 193 else do; 194 P_code = error_table_$badopt; 195 call com_err_ (error_table_$badopt, P_name, "^a", arg); 196 end; 197 end; 198 199 if emacs_data.arguments.path_count > 0 200 then path_pointer -> path.next_path = null (); 201 path_pointer = emacs_data.arguments.first_path; 202 203 returner: 204 return; 205 206 subroutine: entry (P_iocbp, P_pathname, P_environment, P_info_ptr); 207 208 dcl (P_iocbp, P_info_ptr) pointer; 209 dcl (P_pathname, P_environment) character (*) parameter; 210 211 emacs_data_ptr = e_find_invocation_ (); 212 213 /* Defaultify arguments. */ 214 emacs_data.arguments.task = "0"b; 215 emacs_data.arguments.no_task = "0"b; 216 emacs_data.arguments.destroy_task = "0"b; 217 emacs_data.arguments.shared_static = "0"b; 218 emacs_data.arguments.query = "0"b; 219 emacs_data.arguments.reset = "0"b; 220 emacs_data.arguments.ns = "0"b; 221 emacs_data.arguments.apply = -1; 222 emacs_data.arguments.pl = -1; 223 emacs_data.arguments.ll = -1; 224 emacs_data.arguments.ls = -1; 225 emacs_data.arguments.ttp = ""; 226 emacs_data.arguments.first_path = null (); 227 emacs_data.arguments.path_count = 0; 228 229 emacs_data.flags.new_arguments = "1"b; 230 emacs_data.status_code = 0; 231 emacs_data.output_iocb, emacs_data.input_iocb = P_iocbp; 232 emacs_data.info_ptr = P_info_ptr; 233 234 area_ptr = get_system_free_area_ (); 235 236 if P_environment ^= "" then do; 237 allocate path in (area) set (path_pointer); 238 path_pointer -> path.next_path = null (); 239 path_pointer -> path.name = P_environment; 240 path_pointer -> path.type = MACRO_PATH; 241 emacs_data.arguments.first_path = path_pointer; 242 emacs_data.arguments.path_count = 1; 243 end; 244 245 if P_pathname ^= "" then do; 246 allocate path in (area) set (path_pointer); 247 path_pointer -> path.next_path = emacs_data.arguments.first_path; 248 path_pointer -> path.name = P_pathname; 249 path_pointer -> path.type = FIND_PATH; 250 emacs_data.arguments.first_path = path_pointer; 251 emacs_data.arguments.path_count = emacs_data.arguments.path_count + 1; 252 end; 253 254 return; 255 256 /* Entries to get specific values back to Lisp. */ 257 258 /* P_what_to_do: 0=noarg, 1=reset, 2=query, 3=ttp in P_ttp, add 100 more 259* for -force. */ 260 get_ttp_info: entry (P_what_to_do, P_ttp); 261 262 dcl P_what_to_do fixed bin parameter; 263 dcl P_ttp character (168); 264 265 emacs_data_ptr = e_find_invocation_ (); 266 267 P_what_to_do = 0; 268 if emacs_data.arguments.reset then P_what_to_do = 1; 269 else if emacs_data.arguments.query then P_what_to_do = 2; 270 else if emacs_data.arguments.ttp ^= "" then P_what_to_do = 3; 271 if emacs_data.arguments.force then P_what_to_do = P_what_to_do + 100; 272 P_ttp = emacs_data.arguments.ttp; 273 return; 274 275 get_startup_info: entry (P_run_startup, P_tasking, P_path_count, P_pl, P_ll, P_ls, P_apply_arg); 276 277 dcl (P_run_startup, P_tasking, P_path_count, P_pl, P_ll, P_ls, P_apply_arg) fixed bin parameter; 278 279 emacs_data_ptr = e_find_invocation_ (); 280 281 if emacs_data.arguments.ns then P_run_startup = 0; 282 else P_run_startup = 1; 283 if emacs_data.arguments.task then P_tasking = 1; 284 else P_tasking = 0; 285 P_path_count = emacs_data.arguments.path_count; 286 P_pl = emacs_data.arguments.pl; 287 P_ll = emacs_data.arguments.ll; 288 P_ls = emacs_data.arguments.ls; 289 P_apply_arg = emacs_data.arguments.apply; 290 emacs_data.flags.new_arguments = "0"b; 291 return; 292 293 get_one_path: entry (P_pathname, P_type); 294 295 emacs_data_ptr = e_find_invocation_ (); 296 297 P_pathname = ""; 298 if path_pointer = null () then return; 299 P_pathname = path_pointer -> path.name; 300 temp_ptr = path_pointer -> path.next_path; 301 P_type = path_pointer -> path.type; 302 free path_pointer -> path in (area); 303 path_pointer = temp_ptr; 304 return; 305 306 new_arguments: entry () returns (fixed bin); 307 308 emacs_data_ptr = e_find_invocation_ (); 309 310 if emacs_data.flags.new_arguments then return (1); 311 else return (0); 312 313 /* INTERNAL PROCEDURES */ 314 315 get_argument: procedure (P_which, P_complaint); 316 317 dcl P_which fixed bin; 318 dcl P_complaint character (*) parameter; 319 320 call cu_$arg_ptr_rel (P_which, ap, al, code, P_arglist); 321 if code ^= 0 then do; 322 P_code = code; 323 call com_err_ (code, P_name, "^a", P_complaint); 324 go to returner; 325 end; 326 end get_argument; 327 328 get_numeric_argument: procedure (P_which, P_complaint) returns (fixed bin); 329 330 dcl P_which fixed bin; 331 dcl P_complaint character (*) parameter; 332 dcl answer fixed bin; 333 334 call cu_$arg_ptr_rel (P_which, ap, al, code, P_arglist); 335 if code ^= 0 then do; 336 P_code = code; 337 call com_err_ (code, P_name, "^a", P_complaint); 338 go to returner; 339 end; 340 answer = cv_dec_check_ (arg, code); 341 if code ^= 0 then do; 342 P_code = error_table_$bad_conversion; 343 call com_err_ (P_code, P_name, "Expected integer, got ^a for ^a", arg, P_complaint); 344 go to returner; 345 end; 346 if answer < 1 then do; 347 P_code = 1; 348 call com_err_ (0, P_name, "Negative value not allowed for ^a (^a).", P_complaint, arg); 349 go to returner; 350 end; 351 return (answer); 352 end get_numeric_argument; 353 354 end e_argument_parse_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/01/88 0953.2 e_argument_parse_.pl1 >special_ldd>install>MR12.2-1071>e_argument_parse_.pl1 54 1 08/01/88 0948.6 emacs_data.incl.pl1 >special_ldd>install>MR12.2-1071>emacs_data.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. FIND_PATH 000117 automatic fixed bin(17,0) initial dcl 1-120 set ref 105 249 1-120* MACRO_PATH 000116 automatic fixed bin(17,0) initial dcl 1-119 set ref 142 240 1-119* P_apply_arg parameter fixed bin(17,0) dcl 277 set ref 275 289* P_arglist parameter pointer dcl 16 set ref 10 86* 320* 334* P_code parameter fixed bin(35,0) dcl 17 set ref 10 83* 88* 194* 322* 336* 342* 343* 347* P_complaint parameter char packed unaligned dcl 318 in procedure "get_argument" set ref 315 323* P_complaint parameter char packed unaligned dcl 331 in procedure "get_numeric_argument" set ref 328 337* 343* 348* P_environment parameter char packed unaligned dcl 209 ref 206 236 239 P_info_ptr parameter pointer dcl 208 ref 206 232 P_iocbp parameter pointer dcl 208 ref 206 231 P_ll parameter fixed bin(17,0) dcl 277 set ref 275 287* P_ls parameter fixed bin(17,0) dcl 277 set ref 275 288* P_name parameter char packed unaligned dcl 18 set ref 10 89* 195* 323* 337* 343* 348* P_path_count parameter fixed bin(17,0) dcl 277 set ref 275 285* P_pathname parameter char packed unaligned dcl 209 set ref 206 245 248 293 297* 299* P_pl parameter fixed bin(17,0) dcl 277 set ref 275 286* P_run_startup parameter fixed bin(17,0) dcl 277 set ref 275 281* 282* P_tasking parameter fixed bin(17,0) dcl 277 set ref 275 283* 284* P_ttp parameter char(168) packed unaligned dcl 263 set ref 260 272* P_type parameter fixed bin(17,0) dcl 19 set ref 293 301* P_what_to_do parameter fixed bin(17,0) dcl 262 set ref 260 267* 268* 269* 270* 271* 271 P_which parameter fixed bin(17,0) dcl 330 in procedure "get_numeric_argument" set ref 328 334* P_which parameter fixed bin(17,0) dcl 317 in procedure "get_argument" set ref 315 320* al 000100 automatic fixed bin(21,0) dcl 33 set ref 96 104 108 108 108 111 117 123 123 126 131 131 131 141 145 145 151 151 157 157 163 168 168 173 173 177 177 180 180 183 183 189 189 191 191 195 195 320* 334* 340 340 343 343 348 348 answer 000144 automatic fixed bin(17,0) dcl 332 set ref 340* 346 351 ap 000102 automatic pointer dcl 34 set ref 96 104 108 108 108 111 117 123 123 126 131 131 131 141 145 145 151 151 157 157 163 168 168 173 173 177 177 180 180 183 183 189 189 191 191 195 320* 334* 340 343 348 apply 56 based fixed bin(17,0) level 3 packed packed unaligned dcl 1-30 set ref 66* 158* 221* 289 area based area(1024) dcl 30 ref 97 134 237 246 302 area_ptr 000104 automatic pointer dcl 35 set ref 84* 97 134 234* 237 246 302 arg based char packed unaligned dcl 29 set ref 96 104 108 108 108 111 117 123 123 126 131 131 131 141 145 145 151 151 157 157 163 168 168 173 173 177 177 180 180 183 183 189 189 191 191 195* 340* 343* 348* arguments 52 based structure level 2 dcl 1-30 code 000106 automatic fixed bin(35,0) dcl 36 set ref 86* 87 88 89* 320* 321 322 323* 334* 335 336 337* 340* 341 com_err_ 000012 constant entry external dcl 22 ref 89 195 323 337 343 348 cu_$arg_count_rel 000014 constant entry external dcl 23 ref 86 cu_$arg_ptr_rel 000016 constant entry external dcl 24 ref 320 334 cv_dec_check_ 000020 constant entry external dcl 25 ref 340 debugging 50 based bit(1) initial level 3 packed packed unaligned dcl 1-30 ref 78 destroy_task 52(05) based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 61* 174* 216* e_find_invocation_ 000030 constant entry external dcl 1-26 ref 56 211 265 279 295 308 emacs_data based structure level 1 dcl 1-30 emacs_data_ptr 000114 automatic pointer dcl 1-27 set ref 56* 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 76 77 78 78 80 80 98 98 102 102 108 112 113 114 118 119 120 126 127 128 135 135 139 139 147 153 158 164 165 169 170 174 177 180 185 189 191 199 201 211* 214 215 216 217 218 219 220 221 222 223 224 225 226 227 229 230 231 231 232 241 242 247 250 251 251 265* 268 269 270 271 272 279* 281 283 285 286 287 288 289 290 295* 308* 310 error_table_$bad_conversion 000026 external static fixed bin(35,0) dcl 45 ref 342 error_table_$badopt 000024 external static fixed bin(35,0) dcl 44 set ref 194 195* first_path 132 based pointer level 3 dcl 1-30 set ref 72* 98* 135* 201 226* 241* 247 250* flags 50 based structure level 2 dcl 1-30 force 52(07) based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 73* 189* 191* 271 get_system_free_area_ 000022 constant entry external dcl 26 ref 84 234 idx 000107 automatic fixed bin(17,0) dcl 37 set ref 93* 94* 124* 124 125* 132* 132 133* 146* 146 147* 152* 152 153* 158 158* 159* 160* 184* 184 185* in_task 134 based bit(1) initial level 4 packed packed unaligned dcl 1-30 ref 78 info_ptr 36 based pointer initial level 2 dcl 1-30 set ref 232* input_iocb 44 based pointer initial level 2 dcl 1-30 set ref 80* 231* ll 55 based fixed bin(17,0) level 3 dcl 1-30 set ref 68* 147* 223* 287 ls 53 based fixed bin(17,0) level 3 dcl 1-30 set ref 69* 185* 224* 288 name 3 based char(168) level 2 dcl 1-113 set ref 104* 141* 239* 248* 299 nargs 000110 automatic fixed bin(17,0) dcl 38 set ref 86* 93 160 new_arguments 50(03) based bit(1) initial level 3 packed packed unaligned dcl 1-30 set ref 76* 229* 290* 310 next_path based pointer level 2 dcl 1-113 set ref 100* 137* 199* 238* 247* 300 no_task 52(04) based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 60* 165* 170* 215* ns 52 based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 65* 108* 220* 281 null builtin function dcl 51 ref 72 80 199 226 238 298 output_iocb 42 based pointer initial level 2 dcl 1-30 set ref 80* 231* path based structure level 1 dcl 1-113 set ref 97 134 237 246 302 path_count 57 based fixed bin(17,0) level 3 dcl 1-30 set ref 70* 98 102* 102 135 139* 139 199 227* 242* 251* 251 285 path_pointer 000010 internal static pointer initial dcl 48 set ref 100 101* 104 105 137 138* 141 142 199 201* 237* 238 239 240 241 246* 247 248 249 250 298 299 300 301 302 303* pl 54 based fixed bin(17,0) level 3 packed packed unaligned dcl 1-30 set ref 67* 153* 222* 286 query 52(01) based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 63* 113* 120* 128* 218* 269 reset 52(02) based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 64* 114* 119* 127* 219* 268 shared_static 52(06) based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 62* 177* 180* 217* status_code 40 based fixed bin(35,0) initial level 2 dcl 1-30 set ref 230* task 52(03) based bit(1) level 3 packed packed unaligned dcl 1-30 set ref 59* 164* 169* 214* 283 task_flags 134 based structure level 3 dcl 1-30 tasking 134 based structure level 2 dcl 1-30 temp_ptr 000112 automatic pointer dcl 40 set ref 97* 98 100 101 134* 135 137 138 300* 303 ttp 60 based char(168) level 3 packed packed unaligned dcl 1-30 set ref 71* 112* 118* 126* 225* 270 272 type 2 based fixed bin(17,0) level 2 dcl 1-113 set ref 105* 142* 240* 249* 301 using_video 50(01) based bit(1) initial level 3 packed packed unaligned dcl 1-30 set ref 77* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. level_info based structure level 1 dcl 1-122 substr builtin function dcl 51 temp_path automatic char(168) packed unaligned dcl 39 temp_type automatic fixed bin(17,0) dcl 41 NAMES DECLARED BY EXPLICIT CONTEXT. e_argument_parse_ 000215 constant entry external dcl 10 get_argument 001766 constant entry internal dcl 315 ref 94 125 133 159 get_numeric_argument 002060 constant entry internal dcl 328 ref 147 153 185 get_one_path 001616 constant entry external dcl 293 get_startup_info 001525 constant entry external dcl 275 get_ttp_info 001433 constant entry external dcl 260 new_arguments 001721 constant entry external dcl 306 returner 001205 constant label dcl 203 ref 324 338 344 349 subroutine 001221 constant entry external dcl 206 NAME DECLARED BY CONTEXT OR IMPLICATION. index builtin function ref 96 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2610 2642 2422 2620 Length 3104 2422 32 225 165 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME e_argument_parse_ 254 external procedure is an external procedure. get_argument internal procedure shares stack frame of external procedure e_argument_parse_. get_numeric_argument internal procedure shares stack frame of external procedure e_argument_parse_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 path_pointer e_argument_parse_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME e_argument_parse_ 000100 al e_argument_parse_ 000102 ap e_argument_parse_ 000104 area_ptr e_argument_parse_ 000106 code e_argument_parse_ 000107 idx e_argument_parse_ 000110 nargs e_argument_parse_ 000112 temp_ptr e_argument_parse_ 000114 emacs_data_ptr e_argument_parse_ 000116 MACRO_PATH e_argument_parse_ 000117 FIND_PATH e_argument_parse_ 000144 answer get_numeric_argument THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac signal_op ext_entry ext_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count_rel cu_$arg_ptr_rel cv_dec_check_ e_find_invocation_ get_system_free_area_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 119 000204 1 120 000205 10 000211 56 000233 59 000242 60 000245 61 000247 62 000251 63 000253 64 000255 65 000257 66 000261 67 000263 68 000264 69 000266 70 000267 71 000270 72 000273 73 000275 76 000277 77 000301 78 000303 80 000311 83 000314 84 000316 86 000325 87 000341 88 000343 89 000345 90 000363 93 000372 94 000401 96 000404 97 000420 98 000425 100 000432 101 000434 102 000436 104 000437 105 000445 106 000447 108 000450 111 000470 112 000474 113 000500 114 000502 115 000504 117 000505 118 000511 119 000515 120 000517 121 000521 123 000522 124 000532 125 000533 126 000544 127 000552 128 000554 129 000556 131 000557 132 000573 133 000574 134 000605 135 000612 137 000617 138 000621 139 000623 141 000624 142 000632 143 000634 145 000635 146 000645 147 000646 149 000673 151 000674 152 000704 153 000705 155 000721 157 000722 158 000732 159 000740 160 000746 161 000750 163 000751 164 000755 165 000760 166 000762 168 000763 169 000773 170 000776 171 001000 173 001001 174 001011 175 001014 177 001015 180 001031 183 001045 184 001055 185 001056 187 001103 189 001104 191 001120 194 001134 195 001140 197 001172 199 001174 201 001202 203 001205 206 001214 211 001244 214 001253 215 001256 216 001260 217 001262 218 001264 219 001266 220 001270 221 001272 222 001274 223 001275 224 001277 225 001300 226 001303 227 001305 229 001306 230 001310 231 001311 232 001316 234 001321 236 001330 237 001337 238 001345 239 001347 240 001355 241 001357 242 001361 245 001363 246 001375 247 001403 248 001406 249 001413 250 001415 251 001417 254 001420 260 001427 265 001443 267 001452 268 001454 269 001463 270 001471 271 001477 272 001504 273 001510 275 001517 279 001535 281 001544 282 001553 283 001556 284 001564 285 001565 286 001567 287 001572 288 001574 289 001576 290 001601 291 001603 293 001612 295 001634 297 001643 298 001653 299 001670 300 001675 301 001677 302 001702 303 001704 304 001707 306 001716 308 001730 310 001737 311 001755 315 001766 320 001777 321 002020 322 002022 323 002024 324 002056 326 002057 328 002060 334 002071 335 002112 336 002114 337 002116 338 002150 340 002151 341 002176 342 002200 343 002204 344 002245 346 002246 347 002251 348 002254 349 002317 351 002320 ----------------------------------------------------------- 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