COMPILATION LISTING OF SEGMENT e_tasking_ 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.1 mst Mon Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1981 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 e_tasking_: procedure (P_emacs_data_ptr, P_code); 11 12 /* Procedure to do the work of maintaining a tasking Emacs. 13* 22 July 1981 RMSoley 14* Modified: April 1982 CAHornig to update to tasking version 3. 15* Modified: April 1982 RMSoley for cleanup on destroy_task. 16* Modified: 25 November 1983 B. Margolin for shared_static option. 17**/ 18 19 /* Parameters */ 20 dcl P_code fixed bin (35) parameter; 21 dcl P_emacs_data_ptr pointer parameter; 22 23 /* System Entries */ 24 dcl com_err_ entry() options(variable); 25 dcl cu_$get_cl_intermediary entry (entry); 26 dcl cu_$set_cl_intermediary entry (entry); 27 dcl emacs_$tasking_emacs entry (); 28 dcl get_system_free_area_ entry() returns(ptr); 29 dcl ioa_ entry() options(variable); 30 dcl task_ctl_$create entry (ptr, bit(36) aligned, fixed bin(35)); 31 dcl task_ctl_$destroy entry (bit(36) aligned, fixed bin(35)); 32 dcl task_ctl_$schedule entry() returns(bit(1) aligned); 33 dcl task_ctl_$start entry (bit(36) aligned, fixed bin(35)); 34 dcl task_ctl_$stop entry (bit(36) aligned, fixed bin(35)); 35 36 /* Static */ 37 dcl emacs_data_$version character (10) static external; 38 dcl emacs_data_$force_tasking bit (1) aligned static external; 39 dcl emacs_data_$invocation_list pointer static external; 40 41 /* Automatic */ 42 dcl code fixed bin (35); 43 dcl ran_task bit (1); 44 dcl 1 TCD aligned like task_create_data; 45 46 /* Based */ 47 48 /* Builtin */ 49 dcl (addr, baseno, bin, codeptr, hbound, stackbaseptr, unspec) builtin; 50 51 /* Conditions */ 52 dcl program_interrupt condition; 53 dcl unquiet_grave condition; 54 55 /* 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 */ 56 2 1 /* *********************************************************** 2 2* * * 2 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 2 4* * * 2 5* *********************************************************** */ 2 6 /* Begin include file task_create_data.incl.pl1 */ 2 7 2 8 declare task_create_data_version_3 fixed bin static init (3) options (constant); 2 9 declare task_create_data_ptr pointer automatic; 2 10 declare 1 task_create_data aligned based (task_create_data_ptr), 2 11 2 version fixed bin, /* this is version 3 */ 2 12 2 overseer variable entry (pointer), 2 13 2 data_ptr pointer, /* pointer to be passed to overseer */ 2 14 2 vcpu_limit fixed bin (71), /* CPU limit if any */ 2 15 2 priority fixed bin, /* for task scheduler */ 2 16 2 comment char (64), /* for humans */ 2 17 /* end of version 2 structure */ 2 18 2 flags, 2 19 3 top_level bit (1) unaligned, /* this is an independent task */ 2 20 3 shared_static bit (1) unaligned; /* shares static with creator */ 2 21 2 22 /* End include file task_create_data.incl.pl1 */ 57 58 59 emacs_data_ptr = P_emacs_data_ptr; 60 61 if emacs_data.arguments.destroy_task then do; 62 call run_task ("1"b); 63 P_code = -1; 64 return; 65 end; 66 if emacs_data.arguments.no_task then do; 67 P_code = 0; 68 return; 69 end; 70 if emacs_data.tasking.task_flags.in_task then do; 71 call run_task ("0"b); 72 P_code = -1; 73 return; 74 end; 75 else if emacs_data.arguments.task 76 | emacs_data_$force_tasking then do; 77 call create_task (); 78 call run_task ("0"b); 79 P_code = -1; 80 return; 81 end; 82 else do; 83 P_code = 0; 84 return; 85 end; 86 87 returner: 88 P_code = code; 89 return; 90 91 create_task: procedure (); 92 93 emacs_data.tasking.task_flags.in_task = "1"b; 94 emacs_data.tasking.task_flags.destroy = "0"b; 95 TCD.version = task_create_data_version_3; 96 TCD.overseer = tasking_overseer; 97 TCD.vcpu_limit = -1; 98 TCD.priority = 1; 99 TCD.comment = "Emacs Task"; 100 TCD.data_ptr = null (); 101 string (TCD.flags) = ""b; 102 TCD.flags.shared_static = emacs_data.arguments.shared_static; 103 TCD.flags.top_level = "1"b; 104 105 call task_ctl_$create (addr (TCD), emacs_data.tasking.task_id, code); 106 if code ^= 0 then do; 107 call com_err_ (code, emacs_data.myname, "Could not create task."); 108 go to returner; 109 end; 110 111 return; 112 end create_task; 113 114 run_task: procedure (mark_for_death); 115 116 dcl mark_for_death bit (1) parameter; 117 118 if ^emacs_data.tasking.task_flags.in_task then do; 119 call com_err_ (0, emacs_data.myname, "There is no tasking Emacs to restart."); 120 go to returner; 121 end; 122 123 emacs_data.tasking.task_flags.destroy = mark_for_death; 124 125 call task_ctl_$start (emacs_data.tasking.task_id, code); 126 if code ^= 0 then do; 127 call com_err_ (code, emacs_data.myname, "Cannot start Emacs task."); 128 go to returner; 129 end; 130 131 ran_task = task_ctl_$schedule (); 132 call check_death_request (); 133 134 return; 135 end run_task; 136 137 destroy_task: procedure (); 138 139 if ^emacs_data.tasking.task_flags.in_task 140 then call com_err_ (0, emacs_data.myname, "There is no Emacs task to destroy."); 141 else go to emacs_data.tasking.return_label; 142 143 /* else call task_ctl_$destroy (emacs_data.tasking.task_id, (0)); 144* 145* if emacs_data_$invocation_list = emacs_data_ptr 146* then emacs_data_$invocation_list = emacs_data.next_invocation; 147* if emacs_data.next_invocation ^= null () 148* then emacs_data.next_invocation -> emacs_data.prev_invocation = emacs_data.prev_invocation; 149* if emacs_data.prev_invocation ^= null () 150* then emacs_data.prev_invocation -> emacs_data.next_invocation = emacs_data.next_invocation; 151* free emacs_data; 152**/ 153 return; 154 end destroy_task; 155 156 check_death_request: procedure (); 157 158 if emacs_data.tasking.task_flags.destroy then call destroy_task (); 159 160 end check_death_request; 161 162 tasking_overseer: entry (P_data_ptr); 163 164 dcl P_data_ptr pointer parameter; 165 166 emacs_data_ptr = e_find_invocation_ (); 167 168 emacs_data.tasking.return_label = task_death; 169 170 /* Remember that while the above portions of e_tasking_ 171* run on the NORMAL stack, THIS portion runs on the 172* EMACS stack. */ 173 174 call cu_$get_cl_intermediary (emacs_data.tasking.saved_cl_intermediary); 175 call cu_$set_cl_intermediary (resume_old_stack); 176 177 call emacs_$tasking_emacs (); 178 179 /* Must resume the old (NORMAL) stack. */ 180 181 call cu_$set_cl_intermediary (emacs_data.tasking.saved_cl_intermediary); 182 call task_ctl_$stop (emacs_data.tasking.task_id, code); 183 ran_task = task_ctl_$schedule (); 184 185 /* Should never get to here. Should have resumed on the 186* old stack, and never returned. 187* However, who cares. We'll just return to Hornig and 188* let him handle it!! -- Soley 189* 190* signal unquiet_grave; */ 191 192 return; 193 194 task_death: 195 return; /* To tasking primitives for task destruction. */ 196 197 resume_old_stack: entry (); 198 199 emacs_data_ptr = e_find_invocation_ (); 200 201 call cu_$set_cl_intermediary (emacs_data.tasking.saved_cl_intermediary); 202 call task_ctl_$stop (emacs_data.tasking.task_id, code); 203 call check_death_request (); 204 ran_task = task_ctl_$schedule (); 205 206 /* When we get to here, the NORMAL stack has resumed us. 207* We are still on the Emacs stack at this point. */ 208 209 call check_death_request (); 210 call cu_$set_cl_intermediary (resume_old_stack); 211 signal program_interrupt; 212 213 quit: entry () returns (fixed bin (35)); 214 215 emacs_data_ptr = e_find_invocation_ (); 216 217 if ^emacs_data.tasking.task_flags.in_task then return (-1); 218 call cu_$set_cl_intermediary (emacs_data.tasking.saved_cl_intermediary); 219 call task_ctl_$stop (emacs_data.tasking.task_id, code); 220 call check_death_request (); 221 ran_task = task_ctl_$schedule (); 222 223 /* When we get to here, the NORMAL stack has resumed us. 224* We are still on the Emacs stack at this point. */ 225 226 call check_death_request (); 227 call cu_$set_cl_intermediary (resume_old_stack); 228 signal program_interrupt; 229 230 destroy_me: entry (); 231 232 emacs_data_ptr = e_find_invocation_ (); 233 234 emacs_data.tasking.task_flags.destroy = "1"b; 235 return; 236 237 get_death_flag: entry () returns (fixed bin); 238 239 emacs_data_ptr = e_find_invocation_ (); 240 241 if emacs_data.tasking.task_flags.destroy then return (1); 242 else return (0); 243 244 get_tasking_flag: entry () returns (fixed bin); 245 246 emacs_data_ptr = e_find_invocation_ (); 247 248 if emacs_data.tasking.task_flags.in_task then return (1); 249 else return (0); 250 251 end e_tasking_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/01/88 0953.1 e_tasking_.pl1 >special_ldd>install>MR12.2-1071>e_tasking_.pl1 56 1 08/01/88 0948.6 emacs_data.incl.pl1 >special_ldd>install>MR12.2-1071>emacs_data.incl.pl1 57 2 06/16/82 1317.8 task_create_data.incl.pl1 >ldd>include>task_create_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 000147 automatic fixed bin(17,0) initial dcl 1-120 set ref 1-120* MACRO_PATH 000146 automatic fixed bin(17,0) initial dcl 1-119 set ref 1-119* P_code parameter fixed bin(35,0) dcl 20 set ref 10 63* 67* 72* 79* 83* 87* P_data_ptr parameter pointer dcl 164 ref 162 P_emacs_data_ptr parameter pointer dcl 21 ref 10 59 TCD 000102 automatic structure level 1 dcl 44 set ref 105 105 addr builtin function dcl 49 ref 105 105 arguments 52 based structure level 2 dcl 1-30 code 000100 automatic fixed bin(35,0) dcl 42 set ref 87 105* 106 107* 125* 126 127* 182* 202* 219* com_err_ 000010 constant entry external dcl 24 ref 107 119 127 139 comment 13 000102 automatic char(64) level 2 dcl 44 set ref 99* cu_$get_cl_intermediary 000012 constant entry external dcl 25 ref 174 cu_$set_cl_intermediary 000014 constant entry external dcl 26 ref 175 181 201 210 218 227 data_ptr 6 000102 automatic pointer level 2 dcl 44 set ref 100* destroy 134(01) based bit(1) initial level 4 packed packed unaligned dcl 1-30 set ref 94* 123* 158 234* 241 destroy_task 52(05) based bit(1) level 3 packed packed unaligned dcl 1-30 ref 61 e_find_invocation_ 000032 constant entry external dcl 1-26 ref 166 199 215 232 239 246 emacs_$tasking_emacs 000016 constant entry external dcl 27 ref 177 emacs_data based structure level 1 dcl 1-30 emacs_data_$force_tasking 000030 external static bit(1) dcl 38 ref 75 emacs_data_ptr 000144 automatic pointer dcl 1-27 set ref 59* 61 66 70 75 93 94 102 105 107 118 119 123 125 127 139 139 139 158 166* 168 174 181 182 199* 201 202 215* 217 218 219 232* 234 239* 241 246* 248 flags 33 000102 automatic structure level 2 dcl 44 set ref 101* in_task 134 based bit(1) initial level 4 packed packed unaligned dcl 1-30 set ref 70 93* 118 139 217 248 mark_for_death parameter bit(1) packed unaligned dcl 116 ref 114 123 myname 6 based char(32) initial level 2 dcl 1-30 set ref 107* 119* 127* 139* no_task 52(04) based bit(1) level 3 packed packed unaligned dcl 1-30 ref 66 overseer 2 000102 automatic entry variable level 2 dcl 44 set ref 96* priority 12 000102 automatic fixed bin(17,0) level 2 dcl 44 set ref 98* program_interrupt 000136 stack reference condition dcl 52 ref 211 228 ran_task 000101 automatic bit(1) packed unaligned dcl 43 set ref 131* 183* 204* 221* return_label 142 based label variable level 3 dcl 1-30 set ref 139 168* saved_cl_intermediary 136 based entry variable level 3 dcl 1-30 set ref 174* 181* 201* 218* shared_static 52(06) based bit(1) level 3 in structure "emacs_data" packed packed unaligned dcl 1-30 in procedure "e_tasking_" ref 102 shared_static 33(01) 000102 automatic bit(1) level 3 in structure "TCD" packed packed unaligned dcl 44 in procedure "e_tasking_" set ref 102* task 52(03) based bit(1) level 3 packed packed unaligned dcl 1-30 ref 75 task_create_data based structure level 1 dcl 2-10 task_create_data_version_3 constant fixed bin(17,0) initial dcl 2-8 ref 95 task_ctl_$create 000020 constant entry external dcl 30 ref 105 task_ctl_$schedule 000022 constant entry external dcl 32 ref 131 183 204 221 task_ctl_$start 000024 constant entry external dcl 33 ref 125 task_ctl_$stop 000026 constant entry external dcl 34 ref 182 202 219 task_flags 134 based structure level 3 dcl 1-30 task_id 135 based bit(36) initial level 3 dcl 1-30 set ref 105* 125* 182* 202* 219* tasking 134 based structure level 2 dcl 1-30 top_level 33 000102 automatic bit(1) level 3 packed packed unaligned dcl 44 set ref 103* vcpu_limit 10 000102 automatic fixed bin(71,0) level 2 dcl 44 set ref 97* version 000102 automatic fixed bin(17,0) level 2 dcl 44 set ref 95* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. baseno builtin function dcl 49 bin builtin function dcl 49 codeptr builtin function dcl 49 emacs_data_$invocation_list external static pointer dcl 39 emacs_data_$version external static char(10) packed unaligned dcl 37 get_system_free_area_ 000000 constant entry external dcl 28 hbound builtin function dcl 49 ioa_ 000000 constant entry external dcl 29 level_info based structure level 1 dcl 1-122 path based structure level 1 dcl 1-113 stackbaseptr builtin function dcl 49 task_create_data_ptr automatic pointer dcl 2-9 task_ctl_$destroy 000000 constant entry external dcl 31 unquiet_grave 000000 stack reference condition dcl 53 unspec builtin function dcl 49 NAMES DECLARED BY EXPLICIT CONTEXT. check_death_request 001337 constant entry internal dcl 156 ref 132 203 209 220 226 create_task 001053 constant entry internal dcl 91 ref 77 destroy_me 000652 constant entry external dcl 230 destroy_task 001302 constant entry internal dcl 137 ref 158 e_tasking_ 000113 constant entry external dcl 10 get_death_flag 000711 constant entry external dcl 237 get_tasking_flag 000773 constant entry external dcl 244 quit 000532 constant entry external dcl 213 resume_old_stack 000433 constant entry external dcl 197 ref 175 175 210 210 227 227 returner 000260 constant label dcl 87 ref 108 120 128 run_task 001162 constant entry internal dcl 114 ref 62 71 78 task_death 000420 constant label dcl 194 ref 168 tasking_overseer 000300 constant entry external dcl 162 ref 96 NAMES DECLARED BY CONTEXT OR IMPLICATION. null builtin function ref 100 string builtin function ref 101 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1566 1622 1356 1576 Length 2066 1356 34 230 210 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME e_tasking_ 222 external procedure is an external procedure. create_task internal procedure shares stack frame of external procedure e_tasking_. run_task internal procedure shares stack frame of external procedure e_tasking_. destroy_task internal procedure shares stack frame of external procedure e_tasking_. check_death_request internal procedure shares stack frame of external procedure e_tasking_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME e_tasking_ 000100 code e_tasking_ 000101 ran_task e_tasking_ 000102 TCD e_tasking_ 000144 emacs_data_ptr e_tasking_ 000146 MACRO_PATH e_tasking_ 000147 FIND_PATH e_tasking_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac tra_ext_2 signal_op ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$get_cl_intermediary cu_$set_cl_intermediary e_find_invocation_ emacs_$tasking_emacs task_ctl_$create task_ctl_$schedule task_ctl_$start task_ctl_$stop THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. emacs_data_$force_tasking LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 119 000102 1 120 000103 10 000107 59 000123 61 000127 62 000132 63 000136 64 000141 66 000153 67 000156 68 000157 70 000171 71 000174 72 000200 73 000203 75 000215 77 000223 78 000224 79 000230 80 000233 83 000245 84 000246 87 000260 89 000263 162 000275 166 000310 168 000317 174 000323 175 000332 177 000345 181 000352 182 000362 183 000374 192 000406 194 000420 197 000432 199 000443 201 000452 202 000462 203 000474 204 000475 209 000507 210 000510 211 000523 213 000526 215 000542 217 000551 218 000575 219 000604 220 000616 221 000617 226 000631 227 000632 228 000645 230 000650 232 000662 234 000671 235 000674 237 000706 239 000720 241 000727 242 000753 244 000771 246 001002 248 001011 249 001035 91 001053 93 001054 94 001057 95 001061 96 001063 97 001067 98 001071 99 001073 100 001076 101 001100 102 001101 103 001107 105 001111 106 001126 107 001130 108 001160 111 001161 114 001162 118 001164 119 001170 120 001215 123 001216 125 001222 126 001233 127 001235 128 001265 131 001266 132 001300 134 001301 137 001302 139 001303 153 001336 156 001337 158 001340 160 001345 ----------------------------------------------------------- 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