COMPILATION LISTING OF SEGMENT mowse_error_handler_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/07/87 1506.3 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 6* * * 7* *********************************************************** */ 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-09-24,Smith), approve(87-07-15,MCR7580), 11* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 12* Created. 13* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 14* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 15* Approved. 16* END HISTORY COMMENTS */ 17 18 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 19 mowse_error_handler_: 20 proc (p_mcb_ptr, p_cat_index, p_minor); 21 22 23 /* : PROGRAM FUNCTION 24* 25*Clean up the CAT tables when an application experiences a fatal error. 26**/ 27 28 /* : NOTES 29**/ 30 31 32 /* INPUT PARAMETERS */ 33 dcl p_mcb_ptr ptr; /* Pointer to caller mcb */ 34 dcl p_cat_index fixed bin parameter; /* capabilitiy number of application */ 35 dcl p_minor fixed bin parameter; /* minor to be executed */ 36 37 38 /* OUTPUT PARAMETERS */ 39 40 41 /* MISC VARIABLES */ 42 dcl msg_len fixed bin; /* message length */ 43 dcl msg_ptr ptr; /* condition message (not set since area is null) */ 44 dcl cap_id fixed bin; /* capabilities index into CAT */ 45 dcl cap_id_byte char; /* byte containing cap_id (char) */ 46 dcl stack_ptr ptr; /* Pointer to condition stack frame */ 47 dcl code fixed bin (35); /* Error code */ 48 dcl mowse_info_ptr ptr; /* Pointer to mowse info structure */ 49 dcl 01 temp_mcb like mcb based (temp_mcb_ptr); 50 /* temporary mcb overlay */ 51 dcl temp_mcb_ptr ptr; /* Pointer to temp mcb */ 52 dcl temp_ptr ptr; /* Pointer to temporary buffers */ 53 dcl temp_inbuff char (mowse_info_ptr 54 -> mowse_info.local_cat (p_cat_index).mcb_ptr 55 -> mcb.inbuff_data_length) based (temp_ptr); 56 /* temp buffer overlay */ 57 dcl condition_message char (1200) based (msg_ptr); 58 /* conditon message buffer */ 59 dcl destination fixed bin; /* destination message */ 60 dcl cap_name char (32) varying; /* capabilities name */ 61 dcl system_free_area area based (system_free_area_ptr); 62 /* area allocated in system space */ 63 dcl system_free_area_ptr ptr; /* Pointer to system free area */ 64 65 66 /* STRUCTURES */ 67 68 69 /* SYSTEM CALLS */ 70 dcl ioa_$ioa_switch entry () options (variable); 71 dcl condition_interpreter_ entry (ptr, ptr, fixed bin, fixed bin, ptr, 72 char (*), ptr, ptr); 73 dcl ioa_ entry () options (variable); 74 dcl find_condition_frame_ entry (ptr) returns (ptr); 75 dcl find_condition_info_ entry (ptr, ptr, fixed bin (35)); 76 dcl get_system_free_area_ entry () returns (ptr); 77 78 79 /* SYSTEM CALL SUPPORT */ 80 81 82 /* EXTERNAL CALLS */ 83 dcl get_mowse_info_ptr_ entry (ptr, ptr, fixed bin (35)); 84 dcl capability_$pack entry (fixed bin, fixed bin, fixed bin, 85 fixed bin (35)); 86 dcl send_msg_ entry (ptr, fixed bin, fixed bin, ptr, 87 fixed bin, fixed bin, fixed bin (35)); 88 dcl release_outbuffer_ entry (ptr); 89 90 91 /* EXTERNAL CALL SUPPORT */ 92 93 94 /* BUILTINS */ 95 dcl stackframeptr builtin; 96 dcl null builtin; 97 dcl addr builtin; 98 dcl byte builtin; 99 dcl substr builtin; 100 101 102 /* CONDITIONS */ 103 dcl cleanup condition; 104 105 106 /* CONSTANTS */ 107 108 109 /* */ 110 /* INITIALIZATION */ 111 112 msg_ptr = null; 113 stack_ptr = null; 114 system_free_area_ptr = get_system_free_area_ (); 115 condition_info_ptr = null; 116 msg_len = -1; 117 cap_id_byte = byte (p_cat_index); 118 cap_id = p_cat_index; 119 120 on cleanup 121 begin; 122 if condition_info_ptr ^= null then do; 123 free condition_info_ptr -> condition_info; 124 condition_info_ptr = null; 125 end; 126 if msg_ptr ^= null then do; 127 free msg_ptr -> condition_message; 128 msg_ptr = null; 129 end; 130 end; 131 132 allocate condition_info in (system_free_area) 133 set (condition_info_ptr); 134 call get_mowse_info_ptr_ (p_mcb_ptr, mowse_info_ptr, code); 135 136 if mowse_info_ptr -> mowse_info.mowse_flags.error_handled 137 ^= "0"b then 138 return; 139 mowse_info_ptr -> mowse_info.mowse_flags.error_handled = "1"b; 140 141 /* : If MOWSE didn't catch that the major was invalid then 142* indicatea fatal capability error */ 143 144 if p_cat_index < INTERNAL | p_cat_index > MAXIMUM_CAT_ENTRY 145 then do; 146 call ioa_ ("^/MULTICS MOWSE:FATAL CAPABILITY ERROR [1]"); 147 mowse_info_ptr -> mowse_info.mowse_flags.error_handled = "0"b; 148 return; 149 end; 150 151 /* : If the p_cat_index is INTERNAL then initiate cleanup */ 152 153 if p_cat_index = INTERNAL then do; 154 call ioa_ ("^/MULTICS MOWSE:FATAL CAPABILITY ERROR [2]"); 155 mowse_info_ptr -> mowse_info.mowse_flags.error_handled = "0"b; 156 return; 157 end; 158 159 if mowse_info_ptr -> mowse_info.local_cat (p_cat_index).mcb_ptr 160 = null 161 then do; 162 call ioa_ ("^/MULTICS MOWSE:FATAL CAPABILITY ERROR [3]"); 163 mowse_info_ptr -> mowse_info.mowse_flags.error_handled = "0"b; 164 return; 165 end; 166 167 /* : else Free space allocated for application is system space */ 168 169 temp_ptr = mowse_info_ptr 170 -> mowse_info.local_cat (p_cat_index).mcb_ptr -> mcb.inbuff; 171 172 if temp_ptr ^= null then do; 173 free temp_inbuff; 174 temp_ptr = null; 175 mowse_info_ptr 176 -> mowse_info.local_cat (p_cat_index).mcb_ptr 177 -> mcb.inbuff = null; 178 end; 179 180 call release_outbuffer_ 181 (mowse_info_ptr -> mowse_info.local_cat (p_cat_index).mcb_ptr); 182 183 /* : Send a message to the remote system to update the CAT */ 184 185 cap_name = mowse_info_ptr 186 -> mowse_info.local_cat (p_cat_index).mcb_ptr 187 -> mcb.capability_name; 188 189 call capability_$pack (REMOTE_SYSTEM, INTERNAL, destination, 190 code); 191 call send_msg_ 192 ((mowse_info_ptr -> mowse_info.local_cat (p_cat_index).mcb_ptr), 193 destination, DELETE_FROM_REMOTE_CAT, addr (cap_id_byte), 1, BG, 194 code); 195 196 /* : Send a background message to notify the user */ 197 198 stack_ptr = find_condition_frame_ (stackframeptr); 199 call find_condition_info_ (stack_ptr, condition_info_ptr, code); 200 if code ^= 0 | condition_info_ptr = null then do; 201 call ioa_ ("^/MULTICS MOWSE:FATAL CAPABILITY ERROR [4]"); 202 mowse_info_ptr -> mowse_info.mowse_flags.error_handled = "0"b; 203 return; 204 end; 205 206 call condition_interpreter_ (system_free_area_ptr, msg_ptr, 207 msg_len, 1, condition_info_ptr -> condition_info.mc_ptr, 208 (condition_info_ptr -> condition_info.condition_name), 209 condition_info_ptr -> condition_info.wc_ptr, 210 condition_info_ptr -> condition_info.info_ptr); 211 212 if msg_ptr ^= null then do; 213 call ioa_ ("^a", 214 substr (msg_ptr -> condition_message, 1, msg_len)); 215 if (mowse_info_ptr -> mowse_info.mowse_flags.trace = "1"b) then 216 call ioa_$ioa_switch (mowse_info_ptr 217 -> mowse_info.mowse_flags.trace_file_iocb, "^a", 218 substr (msg_ptr -> condition_message, 1, msg_len)); 219 end; 220 221 call ioa_ ( 222 "MULTICS MOWSE: Terminating capability ^a [^d:^d:^d]", 223 cap_name, LOCAL_SYSTEM, p_cat_index, p_minor); 224 if (mowse_info_ptr -> mowse_info.mowse_flags.trace = "1"b) then 225 call ioa_$ioa_switch (mowse_info_ptr 226 -> mowse_info.mowse_flags.trace_file_iocb, 227 "MULTICS MOWSE: Terminating capability ^a [cap_num = ^d] on minor ^d", 228 cap_name, p_cat_index, p_minor); 229 230 /* Free the memory associated with the mcb */ 231 232 if p_cat_index > INTERNAL & p_cat_index <= MAXIMUM_CAT_ENTRY then do; 233 temp_mcb_ptr = mowse_info_ptr 234 -> mowse_info.local_cat (p_cat_index).mcb_ptr; 235 if temp_mcb_ptr ^= null then do; 236 free temp_mcb; 237 temp_mcb_ptr = null; 238 mowse_info_ptr 239 -> mowse_info.local_cat (p_cat_index).mcb_ptr = null; 240 end; 241 end; 242 243 free condition_info_ptr -> condition_info; 244 condition_info_ptr = null; 245 if msg_ptr ^= null then do; 246 free msg_ptr -> condition_message; 247 condition_info_ptr = null; 248 end; 249 mowse_info_ptr -> mowse_info.mowse_flags.error_handled = "0"b; 250 251 252 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 1 2 1 3 /* Structure for find_condition_info_. 1 4* 1 5* Written 1-Mar-79 by M. N. Davidoff. 1 6**/ 1 7 1 8 /* automatic */ 1 9 1 10 declare condition_info_ptr pointer; 1 11 1 12 /* based */ 1 13 1 14 declare 1 condition_info aligned based (condition_info_ptr), 1 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 1 16 2 version fixed binary, /* Must be 1 */ 1 17 2 condition_name char (32) varying, /* name of condition */ 1 18 2 info_ptr pointer, /* pointer to the condition data structure */ 1 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 1 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 1 21 2 flags unaligned, 1 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 1 23 3 pad1 bit (35), 1 24 2 pad2 bit (36), 1 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 1 26 2 pad3 (4) bit (36); 1 27 1 28 /* internal static */ 1 29 1 30 declare condition_info_version_1 1 31 fixed binary internal static options (constant) initial (1); 1 32 1 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 253 2 1 /* BEGIN INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-09-17,Flegel), approve(86-12-16,MCR7580), 2 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 6* Created. 2 7* 2) change(86-10-03,Flegel), approve(86-12-16,MCR7580), 2 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 9* Combined mowse_minor_caps.incl.pl1 and 2 10* mowse.incl.pl1 so that programmer only needs include mowse.incl.pl1 2 11* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 2 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 13* Approved. 2 14* 4) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 2 15* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 2 16* Changes to support async call channels. 2 17* END HISTORY COMMENTS */ 2 18 2 19 /* Name of MOWSE temp seg for data */ 2 20 2 21 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 2 22 dcl temp_seg_name char (6) init ("MOWSE_"); 2 23 2 24 /* Version number */ 2 25 2 26 dcl MOWSE_VERSION_ char (8) int static options (constant) init ("version1"); 2 27 2 28 /* System identification */ 2 29 2 30 dcl LOCAL_SYSTEM fixed bin int static options (constant) init (32); 2 31 dcl REMOTE_SYSTEM fixed bin int static options (constant) init (33); 2 32 2 33 /* Status request return codes */ 2 34 2 35 dcl STATUS_SUCCESS fixed bin (8) int static options (constant) 2 36 init (32); 2 37 dcl STATUS_FAILED fixed bin (8) int static options (constant) 2 38 init (33); 2 39 2 40 /* Input/output capability buffer size limits */ 2 41 2 42 dcl MINIMUM_BUFFER_SIZE fixed bin int static options (constant) init (128); 2 43 dcl MAXIMUM_BUFFER_SIZE fixed bin int static options (constant) init (65536); 2 44 dcl MAXIMUM_BG_SIZE fixed bin int static options (constant) init (512); 2 45 2 46 /* Packet size (communication) constants */ 2 47 2 48 dcl PACKET_SIZE fixed bin int static options (constant) init (124); 2 49 dcl MAXIMUM_PACKET_SIZE fixed bin int static options (constant) init (118); 2 50 2 51 /* Query message constants */ 2 52 2 53 dcl SEND_QUERY fixed bin int static options (constant) init (128); 2 54 dcl ACCEPT fixed bin int static options (constant) init (32); 2 55 dcl REJECT fixed bin int static options (constant) init (33); 2 56 2 57 /* Trace information constants */ 2 58 2 59 dcl RECEIVE fixed bin int static options (constant) init (1); 2 60 dcl SEND fixed bin int static options (constant) init (0); 2 61 2 62 /* Limits on dedicated minor capabilities */ 2 63 2 64 dcl MINIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (32); 2 65 dcl MAXIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (63); 2 66 dcl MINIMUM_USER_MINOR fixed bin int static options (constant) init (64); 2 67 dcl MAXIMUM_USER_MINOR fixed bin int static options (constant) init (127); 2 68 2 69 /* Dedicated Minor Capabilities */ 2 70 2 71 dcl LAST fixed bin int static options (constant) init (0); 2 72 dcl EXECUTE_COMMAND_REPLY fixed bin int static options (constant) init (32); 2 73 dcl EXECUTE_CAPABILITY_REPLY 2 74 fixed bin int static options (constant) init (33); 2 75 dcl FAIL_CAPABILITY fixed bin int static options (constant) init (33); 2 76 dcl INTERNAL fixed bin int static options (constant) init (32); 2 77 dcl EXECUTE_COMMAND fixed bin int static options (constant) init (34); 2 78 dcl ADD_TO_REMOTE_CAT fixed bin int static options (constant) init (35); 2 79 dcl DELETE_FROM_REMOTE_CAT fixed bin int static options (constant) init (36); 2 80 dcl SUSPEND_APPLICATION fixed bin int static options (constant) init (37); 2 81 dcl RESUME_APPLICATION fixed bin int static options (constant) init (38); 2 82 dcl TERMINATE_APPLICATION fixed bin int static options (constant) init (39); 2 83 dcl RESET_APPLICATION fixed bin int static options (constant) init (40); 2 84 dcl RESET_REPLY fixed bin int static options (constant) init (41); 2 85 dcl WAKE_UP fixed bin int static options (constant) init (42); 2 86 dcl STATUS fixed bin int static options (constant) init (43); 2 87 dcl OVERFLOWED_BUFFER fixed bin int static options (constant) init (44); 2 88 dcl SYSTEM_ERROR fixed bin int static options (constant) init (45); 2 89 dcl QUERY_REPLY fixed bin int static options (constant) init (46); 2 90 dcl RESPONSE_CONNECT fixed bin int static options (constant) init (47); 2 91 dcl RESPONSE_DISCONNECT fixed bin int static options (constant) init (48); 2 92 dcl REQUEST_CONNECT fixed bin int static options (constant) init (49); 2 93 dcl REQUEST_DISCONNECT fixed bin int static options (constant) init (50); 2 94 dcl CONTINUE fixed bin int static options (constant) init (51); 2 95 dcl MORE fixed bin int static options (constant) init (52); 2 96 dcl SET_SLEEP_FLAG fixed bin int static options (constant) init (53); 2 97 dcl RESET_SLEEP_FLAG fixed bin int static options (constant) init (54); 2 98 dcl SET_SUSPEND fixed bin int static options (constant) init (55); 2 99 dcl RESET_SUSPEND fixed bin int static options (constant) init (56); 2 100 dcl STATUS_REPLY fixed bin int static options (constant) init (57); 2 101 2 102 /* Foreground */ 2 103 2 104 dcl FG_CONTROL_MESSAGE fixed bin int static options (constant) init (33); 2 105 dcl FG_BREAK fixed bin int static options (constant) init (34); 2 106 dcl FG_TERMINAL_DATA fixed bin int static options (constant) init (35); 2 107 dcl FG_MORE_DATA fixed bin int static options (constant) init (36); 2 108 dcl PUT_TO_BACKGROUND_BUFFER 2 109 fixed bin int static options (constant) init (37); 2 110 dcl PUT_TO_QUERY_MESSAGE_BUFFER 2 111 fixed bin int static options (constant) init (38); 2 112 2 113 /* END INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 254 3 1 /* BEGIN INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-07-19,Smith), approve(87-07-15,MCR7580), 3 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 6* Created to define MOWSE information to be 3 7* placed into a temp segment. 3 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 10* Approved. 3 11* 3) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 3 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 13* Added bit switches to the init_mowse_info structure as well as the force 3 14* flag. 3 15* 4) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 3 16* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 17* Added open_struc for passing EOP and escape char info from attach_mowse 3 18* to mowse_io_. 3 19* END HISTORY COMMENTS */ 3 20 3 21 /* CAT index limits */ 3 22 3 23 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 24 dcl MINIMUM_CAT_ENTRY fixed bin int static options (constant) init (33); 3 25 dcl MAXIMUM_CAT_ENTRY fixed bin int static options (constant) init (64); 3 26 3 27 dcl CAPABILITY_NAME_LENGTH fixed bin int static options (constant) init (32); 3 28 3 29 /* Mowse information structure */ 3 30 3 31 dcl 01 mowse_info based aligned, 3 32 02 version char (8), 3 33 02 local_cat dimension (33:64), /* Multics CAT table */ 3 34 03 flags, 3 35 04 reset bit (1) unal, /* Reset in progress */ 3 36 04 suspended bit (1) unal, /* Suspended applciation */ 3 37 04 status bit (1) unal, /* Status pending */ 3 38 04 mbz1 bit (33) unal, 3 39 03 sleep_time fixed bin, /* Time application is sleeping */ 3 40 03 mcb_ptr ptr, /* Capability MCB */ 3 41 02 remote_cat dimension (33:64), /* PC CAT table */ 3 42 03 major_capability 3 43 fixed bin, /* Capability number */ 3 44 03 capability_name char (32), /* Name of capability */ 3 45 03 flags, 3 46 04 reset bit (1) unal, /* Reset in progress */ 3 47 04 suspended bit (1) unal, /* Suspended capability */ 3 48 04 sleep_time bit (1) unal, /* Application sleeping */ 3 49 04 mbz2 bit (33) unal, 3 50 02 message_manager_info, /* Info for processing messages */ 3 51 03 head_list_ptr ptr, /* Head of message list */ 3 52 03 tail_list_ptr ptr, /* Tail of message list */ 3 53 03 pending_messages 3 54 fixed bin, /* Number of pending messages */ 3 55 02 mowse_flags, 3 56 03 trace bit (1) unal, /* Message tracing facility active */ 3 57 03 debug bit (1) unal, /* Debugging packets facility active */ 3 58 03 error_handled bit (1) unal, /* In mowse_error_handler procedure */ 3 59 03 mbz1 bit (33) unal, 3 60 03 trace_file_iocb ptr, /* Trace file iocb */ 3 61 03 debug_file_iocb ptr, /* Debug file iocb */ 3 62 02 init_mowse_info_ptr 3 63 ptr; /* Initialization information */ 3 64 3 65 /* MOWSE initialization information */ 3 66 3 67 dcl init_mowse_info_ptr ptr; 3 68 dcl 01 init_mowse_info based (init_mowse_info_ptr), 3 69 02 version char (8), 3 70 02 flags, /* Bit switches */ 3 71 03 trace_sw bit (1) unal, 3 72 03 debug_sw bit (1) unal, 3 73 03 io_switch_sw bit (1) unal, 3 74 03 force_sw bit (1) unal, 3 75 03 start_up_sw bit (1) unal, 3 76 03 escape_sw bit (1) unal, 3 77 03 network_sw bit (1) unal, 3 78 03 pad bit (29) unal, 3 79 02 escape, 3 80 03 chars (0:255) bit (1) unal, /* Character escapes */ 3 81 03 pad bit (32) unal, 3 82 02 trace char (512) var, /* Trace file name */ 3 83 02 debug char (512) var, /* Debug file name */ 3 84 02 io_switch char (512) var, /* Io switch name of mowse_io_ attachment */ 3 85 02 startup (MAXIMUM_CAT_ENTRY - MINIMUM_CAT_ENTRY + 1) 3 86 char (168) var; /* Capability to be autoloaded */ 3 87 3 88 /* Open description structure (this is padded to character bounds as it 3 89* is a character overlay structure - passed as a character string) */ 3 90 3 91 dcl open_struc_ptr ptr; 3 92 dcl 01 open_struc based (open_struc_ptr), 3 93 02 flags, 3 94 03 network_sw bit (1) unal, 3 95 03 escape_sw bit (1) unal, 3 96 03 pad bit (7) unal, 3 97 02 escape, 3 98 03 switches (0:255) bit (1) unal, 3 99 03 pad bit (32) unal, 3 100 02 mbz bit (16) unal; 3 101 3 102 /* END INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 255 4 1 /* BEGIN INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-05-17,Smith), approve(87-07-15,MCR7580), 4 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 6* Created to define the mcb (Mowse Control Block) 4 7* for information on capabilities. 4 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 4 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 10* Approved. 4 11* END HISTORY COMMENTS */ 4 12 /* MOWSE control block */ 4 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 14 dcl 01 mcb based, 4 15 02 version char (8), 4 16 02 capability_name char (32), /* Name of capability */ 4 17 02 major_capability fixed bin (17), /* Capability number */ 4 18 02 inbuff_length fixed bin (17), /* Length of buffer */ 4 19 02 inbuff_position_index 4 20 fixed bin (17), /* Current position in inbuffer */ 4 21 02 inbuff_data_length 4 22 fixed bin (17), /* Amoiunt of data in inbuffer */ 4 23 02 outbuff_length fixed bin (17), /* Length of outbuffer */ 4 24 02 mbz1 bit (36) unal, 4 25 02 entry_var entry options (variable), /* Message processor entry point of capability */ 4 26 02 data_block_ptr ptr, /* Capability data */ 4 27 02 inbuff ptr, /* Message input buffer */ 4 28 02 outbuff_list_start 4 29 ptr, /* Pointer to outbuffer data */ 4 30 02 outbuff_list_end ptr, /* Last node in outbuffer data */ 4 31 02 iocb_ptr ptr, /* IOCB to mowse_io_ */ 4 32 02 mowse_info_ptr ptr; /* MOWSE information */ 4 33 /* Output buffer linked list node */ 4 34 dcl 01 output_buffer based, 4 35 02 destination_system 4 36 char, /* Destination of message */ 4 37 02 destination_major char, 4 38 02 destination_minor char, 4 39 02 buffer_position fixed bin, /* Position in buffer of message */ 4 40 02 buffer_length fixed bin, /* Length of buffer */ 4 41 02 next_buffer ptr, /* Next buffer of message */ 4 42 02 data ptr; /* Pointer to message */ 4 43 4 44 /* END INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 256 5 1 /* BEGIN INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(86-05-17,Smith), approve(86-12-16,MCR7580), 5 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 6* Created to define MOWSE message formats. 5 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 5 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 9* Approved. 5 10* 3) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 5 11* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 5 12* Changes to support async call channels. 5 13* END HISTORY COMMENTS */ 5 14 5 15 /* Message Channels */ 5 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 5 17 dcl BG fixed bin int static options (constant) init (0); 5 18 /* Fore ground */ 5 19 dcl FG fixed bin int static options (constant) init (1); 5 20 /* Back ground */ 5 21 5 22 /* Message types: 5 23* 5 24*Each intersystem message is labelled with one of the following types. Upon 5 25*reciept of the message suitable action is undertaken. This scheme was 5 26*introduced to allow the transmission of messsages longer than the maximum 5 27*packet size. 5 28**/ 5 29 5 30 /* Templates for the various messages used throughout the mowse environment. 5 31* Non-allocatable */ 5 32 5 33 dcl message_len fixed bin init (6); 5 34 dcl message_ptr ptr; 5 35 5 36 /* expected format of message */ 5 37 5 38 dcl 01 input_message based (message_ptr), 5 39 02 header, 5 40 03 system char (1) unal, 5 41 03 major char (1) unal, 5 42 03 minor char (1) unal, 5 43 03 source_system char (1) unal, 5 44 03 source_major char (1) unal, 5 45 02 data char (message_len - 5) unal; 5 46 5 47 /* expected format of message to be handled by mowse internal execute command */ 5 48 5 49 dcl 01 execom_message based (message_ptr), 5 50 02 header, 5 51 03 system char (1) unal, 5 52 03 major char (1) unal, 5 53 03 minor char (1) unal, 5 54 03 source_system char (1) unal, 5 55 03 source_major char (1) unal, 5 56 02 data, 5 57 03 cmd_id fixed bin (17) unal, 5 58 03 command char (message_len - 7) unal; 5 59 5 60 /* expected format of message recieved when a request to alter a CAT table 5 61* is made by a remote system */ 5 62 5 63 dcl 01 alter_cat_message based (message_ptr), 5 64 02 header, 5 65 03 system char (1) unal, 5 66 03 major char (1) unal, 5 67 03 minor char (1) unal, 5 68 03 source_system char (1) unal, 5 69 03 source_major char (1) unal, 5 70 02 data, 5 71 03 major char unal, 5 72 03 major_name char (CAPABILITY_NAME_LENGTH) unal; 5 73 5 74 /* Template used to parse message recieved from some remote system. */ 5 75 5 76 dcl 01 event_message based (message_ptr), 5 77 02 header, 5 78 03 system char (1) unal, 5 79 03 major char (1) unal, 5 80 03 msg_type char (1) unal; 5 81 5 82 /* format of message of MORE type */ 5 83 5 84 dcl 01 request_more_message 5 85 based (message_ptr), 5 86 02 header, 5 87 03 system char (1) unal, 5 88 03 major char (1) unal, 5 89 03 more char (1) unal, 5 90 03 source_system char (1) unal, 5 91 03 source_major char (1) unal, 5 92 03 source_minor char (1) unal; 5 93 5 94 /* format of message of CONTINUE type */ 5 95 5 96 dcl 01 more_remaining_message 5 97 based (message_ptr), 5 98 02 header, 5 99 03 system char (1) unal, 5 100 03 major char (1) unal, 5 101 03 continue char (1) unal, 5 102 03 minor char (1) unal, 5 103 03 source_system char (1) unal, 5 104 03 source_major char (1) unal, 5 105 02 data, 5 106 03 data_buf char (message_len - 6) unal; 5 107 5 108 /* format of message of LAST type */ 5 109 5 110 dcl 01 last_message based (message_ptr), 5 111 02 header, 5 112 03 system char (1) unal, 5 113 03 major char (1) unal, 5 114 03 minor char (1) unal, 5 115 03 source_system char (1) unal, 5 116 03 source_major char (1) unal, 5 117 02 data, 5 118 03 data_buf char (message_len - 5) unal; 5 119 5 120 /* Execute_command_reply message format */ 5 121 5 122 dcl 01 execom_reply_msg based (message_ptr), 5 123 02 header, 5 124 03 system char (1) unal, 5 125 03 major char (1) unal, 5 126 03 minor char (1) unal, 5 127 03 source_system char (1) unal, 5 128 03 source_major char (1) unal, 5 129 02 data, 5 130 03 cmd_id fixed bin unal, 5 131 03 status char unal; 5 132 5 133 /* Used to manage partial messages destined for any application */ 5 134 5 135 dcl msg_node_ptr ptr; 5 136 dcl 01 message_node based (msg_node_ptr), 5 137 02 major fixed bin, 5 138 02 partial_msg_list_ptr 5 139 ptr, 5 140 02 next_node ptr, 5 141 02 prev_node ptr, 5 142 02 last_part_msg ptr; 5 143 5 144 dcl part_msg_ptr ptr; 5 145 dcl 01 partial_message based (part_msg_ptr), 5 146 02 msg_ptr ptr, 5 147 02 msg_len fixed bin, 5 148 02 next_msg ptr; 5 149 5 150 5 151 dcl part_msg_length fixed bin; 5 152 dcl part_msg char (part_msg_length) based; 5 153 5 154 /* Trace information structure */ 5 155 dcl 01 trace_message_info, 5 156 02 direction fixed bin, 5 157 02 from_system fixed bin, 5 158 02 from_major fixed bin, 5 159 02 dest_system fixed bin, 5 160 02 dest_major fixed bin, 5 161 02 dest_minor fixed bin, 5 162 02 msg_type fixed bin, 5 163 02 message char (PACKET_SIZE) var; 5 164 5 165 /* END INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 257 258 259 /* : END */ 260 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/07/87 1454.8 mowse_error_handler_.pl1 >special_ldd>install>MR12.1-1075>mowse_error_handler_.pl1 253 1 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 254 2 08/07/87 1445.8 mowse.incl.pl1 >special_ldd>install>MR12.1-1075>mowse.incl.pl1 255 3 08/07/87 1445.8 mowse_info.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_info.incl.pl1 256 4 08/07/87 1447.6 mowse_mcb.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_mcb.incl.pl1 257 5 08/07/87 1447.1 mowse_messages.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_messages.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. BG 000010 constant fixed bin(17,0) initial dcl 5-17 set ref 191* DELETE_FROM_REMOTE_CAT 000011 constant fixed bin(17,0) initial dcl 2-79 set ref 191* INTERNAL 000001 constant fixed bin(17,0) initial dcl 2-76 set ref 144 153 189* 232 LOCAL_SYSTEM 000001 constant fixed bin(17,0) initial dcl 2-30 set ref 221* MAXIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 3-25 ref 144 232 PACKET_SIZE constant fixed bin(17,0) initial dcl 2-48 ref 5-155 REMOTE_SYSTEM 000000 constant fixed bin(17,0) initial dcl 2-31 set ref 189* addr builtin function dcl 97 ref 191 191 byte builtin function dcl 98 ref 117 cap_id 000104 automatic fixed bin(17,0) dcl 44 set ref 118* cap_id_byte 000105 automatic char(1) unaligned dcl 45 set ref 117* 191 191 cap_name 000121 automatic varying char(32) dcl 60 set ref 185* 221* 224* capability_$pack 000026 constant entry external dcl 84 ref 189 capability_name 2 based char(32) level 2 packed unaligned dcl 4-14 ref 185 cleanup 000134 stack reference condition dcl 103 ref 120 code 000110 automatic fixed bin(35,0) dcl 47 set ref 134* 189* 191* 199* 200 condition_info based structure level 1 dcl 1-14 set ref 123 132 243 condition_info_ptr 000142 automatic pointer dcl 1-10 set ref 115* 122 123 124* 132* 199* 200 206 206 206 206 243 244* 247* condition_interpreter_ 000012 constant entry external dcl 71 ref 206 condition_message based char(1200) unaligned dcl 57 ref 127 213 213 215 215 246 condition_name 3 based varying char(32) level 2 dcl 1-14 ref 206 destination 000120 automatic fixed bin(17,0) dcl 59 set ref 189* 191* error_handled 710(02) based bit(1) level 3 packed unaligned dcl 3-31 set ref 136 139* 147* 155* 163* 202* 249* find_condition_frame_ 000016 constant entry external dcl 74 ref 198 find_condition_info_ 000020 constant entry external dcl 75 ref 199 get_mowse_info_ptr_ 000024 constant entry external dcl 83 ref 134 get_system_free_area_ 000022 constant entry external dcl 76 ref 114 inbuff 26 based pointer level 2 dcl 4-14 set ref 169 175* inbuff_data_length 15 based fixed bin(17,0) level 2 dcl 4-14 ref 173 173 info_ptr 14 based pointer level 2 dcl 1-14 set ref 206* ioa_ 000014 constant entry external dcl 73 ref 146 154 162 201 213 221 ioa_$ioa_switch 000010 constant entry external dcl 70 ref 215 224 local_cat 2 based structure array level 2 dcl 3-31 mc_ptr based pointer level 2 dcl 1-14 set ref 206* mcb based structure level 1 unaligned dcl 4-14 mcb_ptr 4 based pointer array level 3 dcl 3-31 set ref 159 169 173 173 175 180* 185 191 233 238* message_len 000146 automatic fixed bin(17,0) initial dcl 5-33 set ref 5-33* mowse_flags 710 based structure level 2 dcl 3-31 mowse_info based structure level 1 dcl 3-31 mowse_info_ptr 000112 automatic pointer dcl 48 set ref 134* 136 139 147 155 159 163 169 173 173 175 180 185 191 202 215 215 224 224 233 238 249 msg_len 000100 automatic fixed bin(17,0) dcl 42 set ref 116* 206* 213 213 215 215 msg_ptr 000102 automatic pointer dcl 43 set ref 112* 126 127 128* 206* 212 213 213 215 215 245 246 null builtin function dcl 96 ref 112 113 115 122 124 126 128 159 172 174 175 200 212 235 237 238 244 245 247 p_cat_index parameter fixed bin(17,0) dcl 34 set ref 19 117 118 144 144 153 159 169 173 173 175 180 185 191 221* 224* 232 232 233 238 p_mcb_ptr parameter pointer dcl 33 set ref 19 134* p_minor parameter fixed bin(17,0) dcl 35 set ref 19 221* 224* release_outbuffer_ 000032 constant entry external dcl 88 ref 180 send_msg_ 000030 constant entry external dcl 86 ref 191 stack_ptr 000106 automatic pointer dcl 46 set ref 113* 198* 199* stackframeptr builtin function dcl 95 ref 198 198 substr builtin function dcl 99 ref 213 213 215 215 system_free_area based area(1024) dcl 61 ref 132 system_free_area_ptr 000132 automatic pointer dcl 63 set ref 114* 132 206* temp_inbuff based char unaligned dcl 53 ref 173 temp_mcb based structure level 1 unaligned dcl 49 ref 236 temp_mcb_ptr 000114 automatic pointer dcl 51 set ref 233* 235 236 237* temp_ptr 000116 automatic pointer dcl 52 set ref 169* 172 173 174* temp_seg_name 000144 automatic char(6) initial unaligned dcl 2-22 set ref 2-22* trace 710 based bit(1) level 3 packed unaligned dcl 3-31 ref 215 224 trace_file_iocb 712 based pointer level 3 dcl 3-31 set ref 215* 224* wc_ptr 16 based pointer level 2 dcl 1-14 set ref 206* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT internal static fixed bin(17,0) initial dcl 2-54 ADD_TO_REMOTE_CAT internal static fixed bin(17,0) initial dcl 2-78 CAPABILITY_NAME_LENGTH internal static fixed bin(17,0) initial dcl 3-27 CONTINUE internal static fixed bin(17,0) initial dcl 2-94 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 2-73 EXECUTE_COMMAND internal static fixed bin(17,0) initial dcl 2-77 EXECUTE_COMMAND_REPLY internal static fixed bin(17,0) initial dcl 2-72 FAIL_CAPABILITY internal static fixed bin(17,0) initial dcl 2-75 FG internal static fixed bin(17,0) initial dcl 5-19 FG_BREAK internal static fixed bin(17,0) initial dcl 2-105 FG_CONTROL_MESSAGE internal static fixed bin(17,0) initial dcl 2-104 FG_MORE_DATA internal static fixed bin(17,0) initial dcl 2-107 FG_TERMINAL_DATA internal static fixed bin(17,0) initial dcl 2-106 LAST internal static fixed bin(17,0) initial dcl 2-71 MAXIMUM_BG_SIZE internal static fixed bin(17,0) initial dcl 2-44 MAXIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 2-43 MAXIMUM_PACKET_SIZE internal static fixed bin(17,0) initial dcl 2-49 MAXIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 2-65 MAXIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 2-67 MINIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 2-42 MINIMUM_CAT_ENTRY internal static fixed bin(17,0) initial dcl 3-24 MINIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 2-64 MINIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 2-66 MORE internal static fixed bin(17,0) initial dcl 2-95 MOWSE_VERSION_ internal static char(8) initial unaligned dcl 2-26 OVERFLOWED_BUFFER internal static fixed bin(17,0) initial dcl 2-87 PUT_TO_BACKGROUND_BUFFER internal static fixed bin(17,0) initial dcl 2-108 PUT_TO_QUERY_MESSAGE_BUFFER internal static fixed bin(17,0) initial dcl 2-110 QUERY_REPLY internal static fixed bin(17,0) initial dcl 2-89 RECEIVE internal static fixed bin(17,0) initial dcl 2-59 REJECT internal static fixed bin(17,0) initial dcl 2-55 REQUEST_CONNECT internal static fixed bin(17,0) initial dcl 2-92 REQUEST_DISCONNECT internal static fixed bin(17,0) initial dcl 2-93 RESET_APPLICATION internal static fixed bin(17,0) initial dcl 2-83 RESET_REPLY internal static fixed bin(17,0) initial dcl 2-84 RESET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 2-97 RESET_SUSPEND internal static fixed bin(17,0) initial dcl 2-99 RESPONSE_CONNECT internal static fixed bin(17,0) initial dcl 2-90 RESPONSE_DISCONNECT internal static fixed bin(17,0) initial dcl 2-91 RESUME_APPLICATION internal static fixed bin(17,0) initial dcl 2-81 SEND internal static fixed bin(17,0) initial dcl 2-60 SEND_QUERY internal static fixed bin(17,0) initial dcl 2-53 SET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 2-96 SET_SUSPEND internal static fixed bin(17,0) initial dcl 2-98 STATUS internal static fixed bin(17,0) initial dcl 2-86 STATUS_FAILED internal static fixed bin(8,0) initial dcl 2-37 STATUS_REPLY internal static fixed bin(17,0) initial dcl 2-100 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 2-35 SUSPEND_APPLICATION internal static fixed bin(17,0) initial dcl 2-80 SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 2-88 TERMINATE_APPLICATION internal static fixed bin(17,0) initial dcl 2-82 WAKE_UP internal static fixed bin(17,0) initial dcl 2-85 alter_cat_message based structure level 1 packed unaligned dcl 5-63 condition_info_version_1 internal static fixed bin(17,0) initial dcl 1-30 event_message based structure level 1 packed unaligned dcl 5-76 execom_message based structure level 1 packed unaligned dcl 5-49 execom_reply_msg based structure level 1 packed unaligned dcl 5-122 init_mowse_info based structure level 1 unaligned dcl 3-68 init_mowse_info_ptr automatic pointer dcl 3-67 input_message based structure level 1 packed unaligned dcl 5-38 last_message based structure level 1 packed unaligned dcl 5-110 message_node based structure level 1 unaligned dcl 5-136 message_ptr automatic pointer dcl 5-34 more_remaining_message based structure level 1 packed unaligned dcl 5-96 msg_node_ptr automatic pointer dcl 5-135 open_struc based structure level 1 packed unaligned dcl 3-92 open_struc_ptr automatic pointer dcl 3-91 output_buffer based structure level 1 unaligned dcl 4-34 part_msg based char unaligned dcl 5-152 part_msg_length automatic fixed bin(17,0) dcl 5-151 part_msg_ptr automatic pointer dcl 5-144 partial_message based structure level 1 unaligned dcl 5-145 request_more_message based structure level 1 packed unaligned dcl 5-84 trace_message_info automatic structure level 1 unaligned dcl 5-155 NAME DECLARED BY EXPLICIT CONTEXT. mowse_error_handler_ 000140 constant entry external dcl 19 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1244 1300 1072 1254 Length 1616 1072 34 301 152 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mowse_error_handler_ 208 external procedure is an external procedure. on unit on line 120 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mowse_error_handler_ 000100 msg_len mowse_error_handler_ 000102 msg_ptr mowse_error_handler_ 000104 cap_id mowse_error_handler_ 000105 cap_id_byte mowse_error_handler_ 000106 stack_ptr mowse_error_handler_ 000110 code mowse_error_handler_ 000112 mowse_info_ptr mowse_error_handler_ 000114 temp_mcb_ptr mowse_error_handler_ 000116 temp_ptr mowse_error_handler_ 000120 destination mowse_error_handler_ 000121 cap_name mowse_error_handler_ 000132 system_free_area_ptr mowse_error_handler_ 000142 condition_info_ptr mowse_error_handler_ 000144 temp_seg_name mowse_error_handler_ 000146 message_len mowse_error_handler_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac alloc_auto_adj enable_op shorten_stack ext_entry int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. capability_$pack condition_interpreter_ find_condition_frame_ find_condition_info_ get_mowse_info_ptr_ get_system_free_area_ ioa_ ioa_$ioa_switch release_outbuffer_ send_msg_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000134 2 22 000145 5 33 000147 5 155 000151 112 000157 113 000161 114 000162 115 000170 116 000172 117 000174 118 000200 120 000202 122 000216 123 000223 124 000225 126 000230 127 000234 128 000236 130 000241 132 000242 134 000247 136 000263 139 000267 144 000271 146 000277 147 000313 148 000316 153 000317 154 000321 155 000335 156 000340 159 000341 162 000347 163 000363 164 000366 169 000367 172 000373 173 000377 174 000404 175 000406 180 000412 185 000421 189 000434 191 000451 198 000506 199 000520 200 000533 201 000541 202 000555 203 000560 206 000561 212 000634 213 000641 215 000670 219 000731 221 000732 224 000765 232 001026 233 001034 235 001040 236 001045 237 001047 238 001051 243 001054 244 001056 245 001060 246 001063 249 001065 260 001070 ----------------------------------------------------------- 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