COMPILATION LISTING OF SEGMENT message_manager_ 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.5 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-08-27,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 message_manager_: 20 proc (p_mcb_ptr, p_msg_type, p_source_major, p_msg_ptr, p_msg_len, 21 p_code); 22 23 /* : PROGRAM FUNCTION 24* 25*This module manages incoming partial messages holding them until the entire 26*message is recieved and then passing the entire message to the destination 27*application. 28**/ 29 30 /* : NOTES 31**/ 32 33 /* INPUT PARAMETERS */ 34 dcl p_mcb_ptr ptr; /* pointer to destination's mcb */ 35 dcl p_msg_type fixed bin parameter; /* last, more or continue */ 36 dcl p_source_major fixed bin parameter; 37 dcl p_msg_ptr ptr parameter; /* Pointer to message */ 38 dcl p_msg_len fixed bin parameter; /* Length of message */ 39 40 41 42 /* OUTPUT PARAMETERS */ 43 dcl p_code fixed bin (35); /* Error code */ 44 45 /* MISC VARIABLES */ 46 dcl mowse_info_ptr ptr; /* Pointer to mowse info structure */ 47 dcl 01 xtn like message_node based (xtn_ptr); 48 /* node space to be deallocated */ 49 dcl xtn_ptr ptr; /* pointer to node space to be freed */ 50 dcl 01 xtpm like partial_message based (xtpm_ptr); 51 dcl xtpm_ptr ptr; /* pointer to space to be freed */ 52 dcl tpm_ptr ptr; /* temp partial message pointer */ 53 dcl temp_msg char (p_msg_len) based (p_msg_ptr); 54 /* temp message overlay */ 55 dcl tn_ptr ptr; /* temp pointer */ 56 dcl found bit (1); /* loop control */ 57 dcl done bit (1); /* loop control */ 58 dcl new_msg ptr; /* pointer to space allocated for the new partial message */ 59 60 61 /* STRUCTURES */ 62 63 64 /* SYSTEM CALLS */ 65 dcl get_system_free_area_ entry () returns (ptr); 66 67 68 /* SYSTEM CALL SUPPORT */ 69 dcl system_free_area_ptr ptr; /* pointer to system free area */ 70 dcl system_free_area area based (system_free_area_ptr); 71 /* system free area */ 72 73 74 /* EXTERNAL CALLS */ 75 dcl get_mowse_info_ptr_ entry (ptr, ptr, fixed bin (35)); 76 dcl append_inbuff_ entry (ptr, ptr, fixed bin, fixed bin (35)); 77 78 79 /* EXTERNAL CALL SUPPORT */ 80 81 82 /* BUILTINS */ 83 dcl addr builtin; 84 dcl null builtin; 85 dcl substr builtin; 86 87 88 /* CONDITIONS */ 89 90 91 /* CONSTANTS */ 92 dcl TRUE bit (1) int static options (constant) init ("1"b); 93 dcl FALSE bit (1) int static options (constant) init ("0"b); 94 95 /* */ 96 /* INITIALIZATION */ 97 98 system_free_area_ptr = get_system_free_area_ (); 99 message_ptr = p_msg_ptr; 100 message_len = p_msg_len; 101 call get_mowse_info_ptr_ (p_mcb_ptr, mowse_info_ptr, p_code); 102 if p_code ^= 0 then 103 return; 104 105 /* MAIN */ 106 107 /* : If the message type is CONTINUE */ 108 109 if p_msg_type = CONTINUE then do; 110 111 /* : - If pointer to the head of the list is null then create 112* a message node and attach to it the message */ 113 114 if (mowse_info_ptr 115 -> mowse_info.message_manager_info.head_list_ptr 116 = null) then do; 117 allocate message_node in (system_free_area); 118 mowse_info_ptr 119 -> mowse_info.message_manager_info 120 .head_list_ptr = 121 msg_node_ptr; 122 mowse_info_ptr 123 -> mowse_info.message_manager_info 124 .tail_list_ptr = 125 msg_node_ptr; 126 mowse_info_ptr 127 -> mowse_info.message_manager_info 128 .pending_messages 129 = mowse_info_ptr 130 -> mowse_info.message_manager_info 131 .pending_messages 132 + 1; 133 msg_node_ptr -> message_node.major = p_source_major; 134 allocate partial_message in (system_free_area); 135 msg_node_ptr -> message_node.partial_msg_list_ptr = 136 part_msg_ptr; 137 msg_node_ptr -> message_node.last_part_msg = 138 part_msg_ptr; 139 msg_node_ptr -> message_node.next_node = null; 140 msg_node_ptr -> message_node.prev_node = null; 141 part_msg_length = p_msg_len; 142 allocate part_msg in (system_free_area) set (new_msg); 143 part_msg_ptr -> partial_message.msg_ptr = new_msg; 144 substr (new_msg -> part_msg, 1, p_msg_len) = 145 substr (p_msg_ptr -> temp_msg, 1, p_msg_len); 146 part_msg_ptr -> partial_message.msg_len = part_msg_length; 147 part_msg_ptr -> partial_message.next_msg = null; 148 end; 149 150 /* : - Else search through the list of nodes for one which has 151* the same source major as the message just received */ 152 153 else do; 154 done = FALSE; 155 found = FALSE; 156 tn_ptr = 157 mowse_info_ptr 158 -> mowse_info.message_manager_info. 159 head_list_ptr; 160 do while (tn_ptr ^= null & ^done & ^found); 161 if tn_ptr -> message_node.major > p_source_major then 162 done = TRUE; 163 else if tn_ptr -> message_node.major = p_source_major 164 then do; 165 done = TRUE; 166 found = TRUE; 167 end; 168 else 169 tn_ptr = tn_ptr -> message_node.next_node; 170 end; 171 172 /* : - If it is found then add the message to the list attached to 173* this node */ 174 175 if found = TRUE then do; 176 allocate partial_message in (system_free_area); 177 part_msg_length = p_msg_len; 178 allocate part_msg in (system_free_area) 179 set (new_msg); 180 part_msg_ptr -> partial_message.msg_ptr = new_msg; 181 substr (new_msg -> part_msg, 1, p_msg_len) = 182 substr (p_msg_ptr -> temp_msg, 1, p_msg_len); 183 part_msg_ptr -> partial_message.msg_len = 184 part_msg_length; 185 part_msg_ptr -> partial_message.next_msg = null; 186 187 if tn_ptr -> message_node.last_part_msg = null 188 then do; 189 tn_ptr -> message_node.partial_msg_list_ptr = 190 part_msg_ptr; 191 tn_ptr -> message_node.last_part_msg = 192 part_msg_ptr; 193 end; 194 else do; 195 tn_ptr -> message_node.last_part_msg 196 -> partial_message.next_msg = part_msg_ptr; 197 tn_ptr -> message_node.last_part_msg = 198 part_msg_ptr; 199 end; 200 end; 201 202 /* : Else make a new message node and start a partial message list on the 203* node */ 204 205 else do; 206 allocate message_node in (system_free_area); 207 mowse_info_ptr -> mowse_info. 208 message_manager_info.pending_messages 209 = mowse_info_ptr -> mowse_info. 210 message_manager_info.pending_messages + 1; 211 msg_node_ptr -> message_node.major = 212 p_source_major; 213 allocate partial_message in (system_free_area); 214 msg_node_ptr 215 -> message_node.partial_msg_list_ptr = 216 part_msg_ptr; 217 part_msg_length = p_msg_len; 218 allocate part_msg in (system_free_area) 219 set (new_msg); 220 part_msg_ptr -> partial_message.msg_ptr = new_msg; 221 substr (new_msg -> part_msg, 1, p_msg_len) = 222 substr (p_msg_ptr -> temp_msg, 1, p_msg_len); 223 part_msg_ptr -> partial_message.msg_len = 224 part_msg_length; 225 part_msg_ptr -> partial_message.next_msg = null; 226 227 if mowse_info_ptr 228 -> mowse_info.message_manager_info.head_list_ptr 229 = tn_ptr then do; /* add to head */ 230 msg_node_ptr -> message_node.next_node = tn_ptr; 231 msg_node_ptr -> message_node.prev_node = null; 232 tn_ptr -> message_node.prev_node = msg_node_ptr; 233 mowse_info_ptr -> mowse_info. 234 message_manager_info.head_list_ptr = 235 msg_node_ptr; 236 end; 237 else if tn_ptr = null then do; 238 /* append to end */ 239 msg_node_ptr -> message_node.next_node = null; 240 msg_node_ptr -> message_node.prev_node = 241 mowse_info_ptr -> mowse_info. 242 message_manager_info.tail_list_ptr; 243 mowse_info_ptr -> mowse_info. 244 message_manager_info.tail_list_ptr 245 -> message_node.next_node = msg_node_ptr; 246 mowse_info_ptr -> mowse_info. 247 message_manager_info.tail_list_ptr = 248 msg_node_ptr; 249 end; 250 else if tn_ptr ^= null then do; 251 /* insert */ 252 tn_ptr -> message_node.prev_node 253 -> message_node.next_node = msg_node_ptr; 254 msg_node_ptr -> message_node.next_node = tn_ptr; 255 msg_node_ptr -> message_node.prev_node = 256 tn_ptr -> message_node.prev_node; 257 tn_ptr -> message_node.prev_node = msg_node_ptr; 258 end; 259 end; 260 end; 261 end; 262 263 /* : Else if the message type is LAST 264* - Search through the list of nodes for one with the same 265* source major. */ 266 267 else if p_msg_type = LAST then do; 268 done = FALSE; 269 found = FALSE; 270 tn_ptr = mowse_info_ptr -> mowse_info.message_manager_info. 271 head_list_ptr; 272 do while (tn_ptr ^= null & ^done & ^found); 273 if tn_ptr -> message_node.major > p_source_major then 274 done = TRUE; 275 else if tn_ptr -> message_node.major = p_source_major 276 then do; 277 done = TRUE; 278 found = TRUE; 279 end; 280 else 281 tn_ptr = tn_ptr -> message_node.next_node; 282 end; 283 284 /* : - If a node is not found the place the last message is the 285* input buffer of the application */ 286 287 if found = FALSE then do; 288 call append_inbuff_ (p_mcb_ptr, 289 addr (message_ptr -> last_message.data.data_buf), 290 message_len - 5, p_code); 291 end; 292 293 /* : - Else place all messages in the list attached to the node 294* into the buffer of the application and then place the last 295* message into the buffer */ 296 297 else do; 298 tpm_ptr = tn_ptr -> message_node.partial_msg_list_ptr; 299 do while (tpm_ptr ^= null); 300 message_ptr = tpm_ptr -> partial_message.msg_ptr; 301 message_len = tpm_ptr -> partial_message.msg_len; 302 call append_inbuff_ (p_mcb_ptr, 303 addr (message_ptr 304 -> more_remaining_message.data.data_buf), 305 message_len - 6, p_code); 306 xtpm_ptr = tpm_ptr; 307 tpm_ptr = tpm_ptr -> partial_message.next_msg; 308 309 free xtpm; 310 xtpm_ptr = null; 311 end; 312 xtn_ptr = tn_ptr; 313 if mowse_info_ptr -> mowse_info. 314 message_manager_info.head_list_ptr = tn_ptr 315 then do; /* delete from head of list */ 316 mowse_info_ptr -> mowse_info. 317 message_manager_info.head_list_ptr = 318 tn_ptr -> message_node.next_node; 319 if tn_ptr -> message_node.next_node ^= null then 320 tn_ptr -> message_node.next_node 321 -> message_node.prev_node = null; 322 end; 323 else if mowse_info_ptr -> mowse_info. 324 message_manager_info.tail_list_ptr = tn_ptr 325 then do; /* delete from tail of list */ 326 mowse_info_ptr -> mowse_info. 327 message_manager_info.tail_list_ptr = 328 tn_ptr -> message_node.prev_node; 329 if tn_ptr -> message_node.next_node ^= null then 330 tn_ptr -> message_node.prev_node 331 -> message_node.next_node = null; 332 end; 333 else do; /* delete from middle of list */ 334 tn_ptr -> message_node.prev_node 335 -> message_node.next_node = tn_ptr 336 -> message_node.next_node; 337 tn_ptr -> message_node.next_node 338 -> message_node.prev_node = tn_ptr 339 -> message_node.prev_node; 340 end; 341 342 free xtn; 343 xtn_ptr = null; 344 345 /* : Send the last part of message to application buffer */ 346 347 message_ptr = p_msg_ptr; 348 message_len = p_msg_len; 349 350 call append_inbuff_ (p_mcb_ptr, 351 addr (message_ptr -> last_message.data.data_buf), 352 message_len - 5, p_code); 353 end; 354 end; 355 356 357 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-09-17,Flegel), approve(86-12-16,MCR7580), 1 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 1 6* Created. 1 7* 2) change(86-10-03,Flegel), approve(86-12-16,MCR7580), 1 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 1 9* Combined mowse_minor_caps.incl.pl1 and 1 10* mowse.incl.pl1 so that programmer only needs include mowse.incl.pl1 1 11* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 1 13* Approved. 1 14* 4) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 1 15* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 1 16* Changes to support async call channels. 1 17* END HISTORY COMMENTS */ 1 18 1 19 /* Name of MOWSE temp seg for data */ 1 20 1 21 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 22 dcl temp_seg_name char (6) init ("MOWSE_"); 1 23 1 24 /* Version number */ 1 25 1 26 dcl MOWSE_VERSION_ char (8) int static options (constant) init ("version1"); 1 27 1 28 /* System identification */ 1 29 1 30 dcl LOCAL_SYSTEM fixed bin int static options (constant) init (32); 1 31 dcl REMOTE_SYSTEM fixed bin int static options (constant) init (33); 1 32 1 33 /* Status request return codes */ 1 34 1 35 dcl STATUS_SUCCESS fixed bin (8) int static options (constant) 1 36 init (32); 1 37 dcl STATUS_FAILED fixed bin (8) int static options (constant) 1 38 init (33); 1 39 1 40 /* Input/output capability buffer size limits */ 1 41 1 42 dcl MINIMUM_BUFFER_SIZE fixed bin int static options (constant) init (128); 1 43 dcl MAXIMUM_BUFFER_SIZE fixed bin int static options (constant) init (65536); 1 44 dcl MAXIMUM_BG_SIZE fixed bin int static options (constant) init (512); 1 45 1 46 /* Packet size (communication) constants */ 1 47 1 48 dcl PACKET_SIZE fixed bin int static options (constant) init (124); 1 49 dcl MAXIMUM_PACKET_SIZE fixed bin int static options (constant) init (118); 1 50 1 51 /* Query message constants */ 1 52 1 53 dcl SEND_QUERY fixed bin int static options (constant) init (128); 1 54 dcl ACCEPT fixed bin int static options (constant) init (32); 1 55 dcl REJECT fixed bin int static options (constant) init (33); 1 56 1 57 /* Trace information constants */ 1 58 1 59 dcl RECEIVE fixed bin int static options (constant) init (1); 1 60 dcl SEND fixed bin int static options (constant) init (0); 1 61 1 62 /* Limits on dedicated minor capabilities */ 1 63 1 64 dcl MINIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (32); 1 65 dcl MAXIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (63); 1 66 dcl MINIMUM_USER_MINOR fixed bin int static options (constant) init (64); 1 67 dcl MAXIMUM_USER_MINOR fixed bin int static options (constant) init (127); 1 68 1 69 /* Dedicated Minor Capabilities */ 1 70 1 71 dcl LAST fixed bin int static options (constant) init (0); 1 72 dcl EXECUTE_COMMAND_REPLY fixed bin int static options (constant) init (32); 1 73 dcl EXECUTE_CAPABILITY_REPLY 1 74 fixed bin int static options (constant) init (33); 1 75 dcl FAIL_CAPABILITY fixed bin int static options (constant) init (33); 1 76 dcl INTERNAL fixed bin int static options (constant) init (32); 1 77 dcl EXECUTE_COMMAND fixed bin int static options (constant) init (34); 1 78 dcl ADD_TO_REMOTE_CAT fixed bin int static options (constant) init (35); 1 79 dcl DELETE_FROM_REMOTE_CAT fixed bin int static options (constant) init (36); 1 80 dcl SUSPEND_APPLICATION fixed bin int static options (constant) init (37); 1 81 dcl RESUME_APPLICATION fixed bin int static options (constant) init (38); 1 82 dcl TERMINATE_APPLICATION fixed bin int static options (constant) init (39); 1 83 dcl RESET_APPLICATION fixed bin int static options (constant) init (40); 1 84 dcl RESET_REPLY fixed bin int static options (constant) init (41); 1 85 dcl WAKE_UP fixed bin int static options (constant) init (42); 1 86 dcl STATUS fixed bin int static options (constant) init (43); 1 87 dcl OVERFLOWED_BUFFER fixed bin int static options (constant) init (44); 1 88 dcl SYSTEM_ERROR fixed bin int static options (constant) init (45); 1 89 dcl QUERY_REPLY fixed bin int static options (constant) init (46); 1 90 dcl RESPONSE_CONNECT fixed bin int static options (constant) init (47); 1 91 dcl RESPONSE_DISCONNECT fixed bin int static options (constant) init (48); 1 92 dcl REQUEST_CONNECT fixed bin int static options (constant) init (49); 1 93 dcl REQUEST_DISCONNECT fixed bin int static options (constant) init (50); 1 94 dcl CONTINUE fixed bin int static options (constant) init (51); 1 95 dcl MORE fixed bin int static options (constant) init (52); 1 96 dcl SET_SLEEP_FLAG fixed bin int static options (constant) init (53); 1 97 dcl RESET_SLEEP_FLAG fixed bin int static options (constant) init (54); 1 98 dcl SET_SUSPEND fixed bin int static options (constant) init (55); 1 99 dcl RESET_SUSPEND fixed bin int static options (constant) init (56); 1 100 dcl STATUS_REPLY fixed bin int static options (constant) init (57); 1 101 1 102 /* Foreground */ 1 103 1 104 dcl FG_CONTROL_MESSAGE fixed bin int static options (constant) init (33); 1 105 dcl FG_BREAK fixed bin int static options (constant) init (34); 1 106 dcl FG_TERMINAL_DATA fixed bin int static options (constant) init (35); 1 107 dcl FG_MORE_DATA fixed bin int static options (constant) init (36); 1 108 dcl PUT_TO_BACKGROUND_BUFFER 1 109 fixed bin int static options (constant) init (37); 1 110 dcl PUT_TO_QUERY_MESSAGE_BUFFER 1 111 fixed bin int static options (constant) init (38); 1 112 1 113 /* END INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 358 2 1 /* BEGIN INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-05-17,Smith), approve(87-07-15,MCR7580), 2 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 6* Created to define the mcb (Mowse Control Block) 2 7* for information on capabilities. 2 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 2 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 10* Approved. 2 11* END HISTORY COMMENTS */ 2 12 /* MOWSE control block */ 2 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 2 14 dcl 01 mcb based, 2 15 02 version char (8), 2 16 02 capability_name char (32), /* Name of capability */ 2 17 02 major_capability fixed bin (17), /* Capability number */ 2 18 02 inbuff_length fixed bin (17), /* Length of buffer */ 2 19 02 inbuff_position_index 2 20 fixed bin (17), /* Current position in inbuffer */ 2 21 02 inbuff_data_length 2 22 fixed bin (17), /* Amoiunt of data in inbuffer */ 2 23 02 outbuff_length fixed bin (17), /* Length of outbuffer */ 2 24 02 mbz1 bit (36) unal, 2 25 02 entry_var entry options (variable), /* Message processor entry point of capability */ 2 26 02 data_block_ptr ptr, /* Capability data */ 2 27 02 inbuff ptr, /* Message input buffer */ 2 28 02 outbuff_list_start 2 29 ptr, /* Pointer to outbuffer data */ 2 30 02 outbuff_list_end ptr, /* Last node in outbuffer data */ 2 31 02 iocb_ptr ptr, /* IOCB to mowse_io_ */ 2 32 02 mowse_info_ptr ptr; /* MOWSE information */ 2 33 /* Output buffer linked list node */ 2 34 dcl 01 output_buffer based, 2 35 02 destination_system 2 36 char, /* Destination of message */ 2 37 02 destination_major char, 2 38 02 destination_minor char, 2 39 02 buffer_position fixed bin, /* Position in buffer of message */ 2 40 02 buffer_length fixed bin, /* Length of buffer */ 2 41 02 next_buffer ptr, /* Next buffer of message */ 2 42 02 data ptr; /* Pointer to message */ 2 43 2 44 /* END INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 359 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 * * * * * * * * * * * * */ 360 4 1 /* BEGIN INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-05-17,Smith), approve(86-12-16,MCR7580), 4 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 4 6* Created to define MOWSE message formats. 4 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 4 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 4 9* Approved. 4 10* 3) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 4 11* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 4 12* Changes to support async call channels. 4 13* END HISTORY COMMENTS */ 4 14 4 15 /* Message Channels */ 4 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 17 dcl BG fixed bin int static options (constant) init (0); 4 18 /* Fore ground */ 4 19 dcl FG fixed bin int static options (constant) init (1); 4 20 /* Back ground */ 4 21 4 22 /* Message types: 4 23* 4 24*Each intersystem message is labelled with one of the following types. Upon 4 25*reciept of the message suitable action is undertaken. This scheme was 4 26*introduced to allow the transmission of messsages longer than the maximum 4 27*packet size. 4 28**/ 4 29 4 30 /* Templates for the various messages used throughout the mowse environment. 4 31* Non-allocatable */ 4 32 4 33 dcl message_len fixed bin init (6); 4 34 dcl message_ptr ptr; 4 35 4 36 /* expected format of message */ 4 37 4 38 dcl 01 input_message based (message_ptr), 4 39 02 header, 4 40 03 system char (1) unal, 4 41 03 major char (1) unal, 4 42 03 minor char (1) unal, 4 43 03 source_system char (1) unal, 4 44 03 source_major char (1) unal, 4 45 02 data char (message_len - 5) unal; 4 46 4 47 /* expected format of message to be handled by mowse internal execute command */ 4 48 4 49 dcl 01 execom_message based (message_ptr), 4 50 02 header, 4 51 03 system char (1) unal, 4 52 03 major char (1) unal, 4 53 03 minor char (1) unal, 4 54 03 source_system char (1) unal, 4 55 03 source_major char (1) unal, 4 56 02 data, 4 57 03 cmd_id fixed bin (17) unal, 4 58 03 command char (message_len - 7) unal; 4 59 4 60 /* expected format of message recieved when a request to alter a CAT table 4 61* is made by a remote system */ 4 62 4 63 dcl 01 alter_cat_message based (message_ptr), 4 64 02 header, 4 65 03 system char (1) unal, 4 66 03 major char (1) unal, 4 67 03 minor char (1) unal, 4 68 03 source_system char (1) unal, 4 69 03 source_major char (1) unal, 4 70 02 data, 4 71 03 major char unal, 4 72 03 major_name char (CAPABILITY_NAME_LENGTH) unal; 4 73 4 74 /* Template used to parse message recieved from some remote system. */ 4 75 4 76 dcl 01 event_message based (message_ptr), 4 77 02 header, 4 78 03 system char (1) unal, 4 79 03 major char (1) unal, 4 80 03 msg_type char (1) unal; 4 81 4 82 /* format of message of MORE type */ 4 83 4 84 dcl 01 request_more_message 4 85 based (message_ptr), 4 86 02 header, 4 87 03 system char (1) unal, 4 88 03 major char (1) unal, 4 89 03 more char (1) unal, 4 90 03 source_system char (1) unal, 4 91 03 source_major char (1) unal, 4 92 03 source_minor char (1) unal; 4 93 4 94 /* format of message of CONTINUE type */ 4 95 4 96 dcl 01 more_remaining_message 4 97 based (message_ptr), 4 98 02 header, 4 99 03 system char (1) unal, 4 100 03 major char (1) unal, 4 101 03 continue char (1) unal, 4 102 03 minor char (1) unal, 4 103 03 source_system char (1) unal, 4 104 03 source_major char (1) unal, 4 105 02 data, 4 106 03 data_buf char (message_len - 6) unal; 4 107 4 108 /* format of message of LAST type */ 4 109 4 110 dcl 01 last_message based (message_ptr), 4 111 02 header, 4 112 03 system char (1) unal, 4 113 03 major char (1) unal, 4 114 03 minor char (1) unal, 4 115 03 source_system char (1) unal, 4 116 03 source_major char (1) unal, 4 117 02 data, 4 118 03 data_buf char (message_len - 5) unal; 4 119 4 120 /* Execute_command_reply message format */ 4 121 4 122 dcl 01 execom_reply_msg based (message_ptr), 4 123 02 header, 4 124 03 system char (1) unal, 4 125 03 major char (1) unal, 4 126 03 minor char (1) unal, 4 127 03 source_system char (1) unal, 4 128 03 source_major char (1) unal, 4 129 02 data, 4 130 03 cmd_id fixed bin unal, 4 131 03 status char unal; 4 132 4 133 /* Used to manage partial messages destined for any application */ 4 134 4 135 dcl msg_node_ptr ptr; 4 136 dcl 01 message_node based (msg_node_ptr), 4 137 02 major fixed bin, 4 138 02 partial_msg_list_ptr 4 139 ptr, 4 140 02 next_node ptr, 4 141 02 prev_node ptr, 4 142 02 last_part_msg ptr; 4 143 4 144 dcl part_msg_ptr ptr; 4 145 dcl 01 partial_message based (part_msg_ptr), 4 146 02 msg_ptr ptr, 4 147 02 msg_len fixed bin, 4 148 02 next_msg ptr; 4 149 4 150 4 151 dcl part_msg_length fixed bin; 4 152 dcl part_msg char (part_msg_length) based; 4 153 4 154 /* Trace information structure */ 4 155 dcl 01 trace_message_info, 4 156 02 direction fixed bin, 4 157 02 from_system fixed bin, 4 158 02 from_major fixed bin, 4 159 02 dest_system fixed bin, 4 160 02 dest_major fixed bin, 4 161 02 dest_minor fixed bin, 4 162 02 msg_type fixed bin, 4 163 02 message char (PACKET_SIZE) var; 4 164 4 165 /* END INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 361 362 363 /* : END */ 364 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/07/87 1454.8 message_manager_.pl1 >special_ldd>install>MR12.1-1075>message_manager_.pl1 358 1 08/07/87 1445.8 mowse.incl.pl1 >special_ldd>install>MR12.1-1075>mowse.incl.pl1 359 2 08/07/87 1447.6 mowse_mcb.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_mcb.incl.pl1 360 3 08/07/87 1445.8 mowse_info.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_info.incl.pl1 361 4 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. CONTINUE constant fixed bin(17,0) initial dcl 1-94 ref 109 FALSE constant bit(1) initial unaligned dcl 93 ref 154 155 268 269 287 LAST constant fixed bin(17,0) initial dcl 1-71 ref 267 PACKET_SIZE constant fixed bin(17,0) initial dcl 1-48 ref 4-155 TRUE constant bit(1) initial unaligned dcl 92 ref 161 165 166 175 273 277 278 addr builtin function dcl 83 ref 288 288 302 302 350 350 append_inbuff_ 000014 constant entry external dcl 76 ref 288 302 350 data 1(09) based structure level 2 in structure "last_message" packed unaligned dcl 4-110 in procedure "message_manager_" data 1(18) based structure level 2 in structure "more_remaining_message" packed unaligned dcl 4-96 in procedure "message_manager_" data_buf 1(09) based char level 3 in structure "last_message" packed unaligned dcl 4-110 in procedure "message_manager_" set ref 288 288 350 350 data_buf 1(18) based char level 3 in structure "more_remaining_message" packed unaligned dcl 4-96 in procedure "message_manager_" set ref 302 302 done 000113 automatic bit(1) unaligned dcl 57 set ref 154* 160 161* 165* 268* 272 273* 277* found 000112 automatic bit(1) unaligned dcl 56 set ref 155* 160 166* 175 269* 272 278* 287 get_mowse_info_ptr_ 000012 constant entry external dcl 75 ref 101 get_system_free_area_ 000010 constant entry external dcl 65 ref 98 head_list_ptr 702 based pointer level 3 dcl 3-31 set ref 114 118* 156 227 233* 270 313 316* last_message based structure level 1 packed unaligned dcl 4-110 last_part_msg 10 based pointer level 2 dcl 4-136 set ref 137* 187 191* 195 197* major based fixed bin(17,0) level 2 dcl 4-136 set ref 133* 161 163 211* 273 275 message_len 000122 automatic fixed bin(17,0) initial dcl 4-33 set ref 100* 288 288 288 301* 302 302 302 348* 350 350 350 4-33* message_manager_info 702 based structure level 2 dcl 3-31 message_node based structure level 1 unaligned dcl 4-136 set ref 117 206 message_ptr 000124 automatic pointer dcl 4-34 set ref 99* 288 288 300* 302 302 347* 350 350 more_remaining_message based structure level 1 packed unaligned dcl 4-96 mowse_info based structure level 1 dcl 3-31 mowse_info_ptr 000100 automatic pointer dcl 46 set ref 101* 114 118 122 126 126 156 207 207 227 233 240 243 246 270 313 316 323 326 msg_len 2 based fixed bin(17,0) level 2 dcl 4-145 set ref 146* 183* 223* 301 msg_node_ptr 000126 automatic pointer dcl 4-135 set ref 117* 118 122 133 135 137 139 140 206* 211 214 230 231 232 233 239 240 243 246 252 254 255 257 msg_ptr based pointer level 2 dcl 4-145 set ref 143* 180* 220* 300 new_msg 000114 automatic pointer dcl 58 set ref 142* 143 144 178* 180 181 218* 220 221 next_msg 4 based pointer level 2 dcl 4-145 set ref 147* 185* 195* 225* 307 next_node 4 based pointer level 2 dcl 4-136 set ref 139* 168 230* 239* 243* 252* 254* 280 316 319 319 329 329* 334* 334 337 null builtin function dcl 84 ref 114 139 140 147 160 185 187 225 231 237 239 250 272 299 310 319 319 329 329 343 p_code parameter fixed bin(35,0) dcl 43 set ref 19 101* 102 288* 302* 350* p_mcb_ptr parameter pointer dcl 34 set ref 19 101* 288* 302* 350* p_msg_len parameter fixed bin(17,0) dcl 38 ref 19 100 141 144 144 144 177 181 181 181 217 221 221 221 348 p_msg_ptr parameter pointer dcl 37 ref 19 99 144 181 221 347 p_msg_type parameter fixed bin(17,0) dcl 35 ref 19 109 267 p_source_major parameter fixed bin(17,0) dcl 36 ref 19 133 161 163 211 273 275 part_msg based char unaligned dcl 4-152 set ref 142 144* 178 181* 218 221* part_msg_length 000132 automatic fixed bin(17,0) dcl 4-151 set ref 141* 142 142 144 146 177* 178 178 181 183 217* 218 218 221 223 part_msg_ptr 000130 automatic pointer dcl 4-144 set ref 134* 135 137 143 146 147 176* 180 183 185 189 191 195 197 213* 214 220 223 225 partial_message based structure level 1 unaligned dcl 4-145 set ref 134 176 213 partial_msg_list_ptr 2 based pointer level 2 dcl 4-136 set ref 135* 189* 214* 298 pending_messages 706 based fixed bin(17,0) level 3 dcl 3-31 set ref 126* 126 207* 207 prev_node 6 based pointer level 2 dcl 4-136 set ref 140* 231* 232* 240* 252 255* 255 257* 319* 326 329 334 337* 337 substr builtin function dcl 85 set ref 144* 144 181* 181 221* 221 system_free_area based area(1024) dcl 70 ref 117 134 142 176 178 206 213 218 system_free_area_ptr 000116 automatic pointer dcl 69 set ref 98* 117 134 142 176 178 206 213 218 tail_list_ptr 704 based pointer level 3 dcl 3-31 set ref 122* 240 243 246* 323 326* temp_msg based char unaligned dcl 53 ref 144 181 221 temp_seg_name 000120 automatic char(6) initial unaligned dcl 1-22 set ref 1-22* tn_ptr 000110 automatic pointer dcl 55 set ref 156* 160 161 163 168* 168 187 189 191 195 197 227 230 232 237 250 252 254 255 257 270* 272 273 275 280* 280 298 312 313 316 319 319 323 326 329 329 334 334 337 337 tpm_ptr 000106 automatic pointer dcl 52 set ref 298* 299 300 301 306 307* 307 xtn based structure level 1 unaligned dcl 47 ref 342 xtn_ptr 000102 automatic pointer dcl 49 set ref 312* 342 343* xtpm based structure level 1 unaligned dcl 50 ref 309 xtpm_ptr 000104 automatic pointer dcl 51 set ref 306* 309 310* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT internal static fixed bin(17,0) initial dcl 1-54 ADD_TO_REMOTE_CAT internal static fixed bin(17,0) initial dcl 1-78 BG internal static fixed bin(17,0) initial dcl 4-17 CAPABILITY_NAME_LENGTH internal static fixed bin(17,0) initial dcl 3-27 DELETE_FROM_REMOTE_CAT internal static fixed bin(17,0) initial dcl 1-79 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 1-73 EXECUTE_COMMAND internal static fixed bin(17,0) initial dcl 1-77 EXECUTE_COMMAND_REPLY internal static fixed bin(17,0) initial dcl 1-72 FAIL_CAPABILITY internal static fixed bin(17,0) initial dcl 1-75 FG internal static fixed bin(17,0) initial dcl 4-19 FG_BREAK internal static fixed bin(17,0) initial dcl 1-105 FG_CONTROL_MESSAGE internal static fixed bin(17,0) initial dcl 1-104 FG_MORE_DATA internal static fixed bin(17,0) initial dcl 1-107 FG_TERMINAL_DATA internal static fixed bin(17,0) initial dcl 1-106 INTERNAL internal static fixed bin(17,0) initial dcl 1-76 LOCAL_SYSTEM internal static fixed bin(17,0) initial dcl 1-30 MAXIMUM_BG_SIZE internal static fixed bin(17,0) initial dcl 1-44 MAXIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 1-43 MAXIMUM_CAT_ENTRY internal static fixed bin(17,0) initial dcl 3-25 MAXIMUM_PACKET_SIZE internal static fixed bin(17,0) initial dcl 1-49 MAXIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 1-65 MAXIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 1-67 MINIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 1-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 1-64 MINIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 1-66 MORE internal static fixed bin(17,0) initial dcl 1-95 MOWSE_VERSION_ internal static char(8) initial unaligned dcl 1-26 OVERFLOWED_BUFFER internal static fixed bin(17,0) initial dcl 1-87 PUT_TO_BACKGROUND_BUFFER internal static fixed bin(17,0) initial dcl 1-108 PUT_TO_QUERY_MESSAGE_BUFFER internal static fixed bin(17,0) initial dcl 1-110 QUERY_REPLY internal static fixed bin(17,0) initial dcl 1-89 RECEIVE internal static fixed bin(17,0) initial dcl 1-59 REJECT internal static fixed bin(17,0) initial dcl 1-55 REMOTE_SYSTEM internal static fixed bin(17,0) initial dcl 1-31 REQUEST_CONNECT internal static fixed bin(17,0) initial dcl 1-92 REQUEST_DISCONNECT internal static fixed bin(17,0) initial dcl 1-93 RESET_APPLICATION internal static fixed bin(17,0) initial dcl 1-83 RESET_REPLY internal static fixed bin(17,0) initial dcl 1-84 RESET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 1-97 RESET_SUSPEND internal static fixed bin(17,0) initial dcl 1-99 RESPONSE_CONNECT internal static fixed bin(17,0) initial dcl 1-90 RESPONSE_DISCONNECT internal static fixed bin(17,0) initial dcl 1-91 RESUME_APPLICATION internal static fixed bin(17,0) initial dcl 1-81 SEND internal static fixed bin(17,0) initial dcl 1-60 SEND_QUERY internal static fixed bin(17,0) initial dcl 1-53 SET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 1-96 SET_SUSPEND internal static fixed bin(17,0) initial dcl 1-98 STATUS internal static fixed bin(17,0) initial dcl 1-86 STATUS_FAILED internal static fixed bin(8,0) initial dcl 1-37 STATUS_REPLY internal static fixed bin(17,0) initial dcl 1-100 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 1-35 SUSPEND_APPLICATION internal static fixed bin(17,0) initial dcl 1-80 SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 1-88 TERMINATE_APPLICATION internal static fixed bin(17,0) initial dcl 1-82 WAKE_UP internal static fixed bin(17,0) initial dcl 1-85 alter_cat_message based structure level 1 packed unaligned dcl 4-63 event_message based structure level 1 packed unaligned dcl 4-76 execom_message based structure level 1 packed unaligned dcl 4-49 execom_reply_msg based structure level 1 packed unaligned dcl 4-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 4-38 mcb based structure level 1 unaligned dcl 2-14 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 2-34 request_more_message based structure level 1 packed unaligned dcl 4-84 trace_message_info automatic structure level 1 unaligned dcl 4-155 NAME DECLARED BY EXPLICIT CONTEXT. message_manager_ 000016 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 726 744 650 736 Length 1224 650 16 244 56 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME message_manager_ 120 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME message_manager_ 000100 mowse_info_ptr message_manager_ 000102 xtn_ptr message_manager_ 000104 xtpm_ptr message_manager_ 000106 tpm_ptr message_manager_ 000110 tn_ptr message_manager_ 000112 found message_manager_ 000113 done message_manager_ 000114 new_msg message_manager_ 000116 system_free_area_ptr message_manager_ 000120 temp_seg_name message_manager_ 000122 message_len message_manager_ 000124 message_ptr message_manager_ 000126 msg_node_ptr message_manager_ 000130 part_msg_ptr message_manager_ 000132 part_msg_length message_manager_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac alloc_auto_adj ext_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. append_inbuff_ get_mowse_info_ptr_ get_system_free_area_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000010 1 22 000023 4 33 000025 4 155 000027 98 000035 99 000043 100 000047 101 000051 102 000064 109 000067 114 000072 117 000077 118 000104 122 000106 126 000107 133 000110 134 000113 135 000120 137 000122 139 000123 140 000125 141 000126 142 000131 143 000140 144 000141 146 000150 147 000153 148 000155 154 000156 155 000157 156 000160 160 000162 161 000172 163 000201 165 000202 166 000204 167 000205 168 000206 170 000211 175 000212 176 000215 177 000222 178 000225 180 000234 181 000235 183 000244 185 000247 187 000251 189 000255 191 000256 193 000257 195 000260 197 000262 200 000263 206 000264 207 000271 211 000273 213 000276 214 000303 217 000305 218 000310 220 000317 221 000320 223 000327 225 000332 227 000334 230 000341 231 000344 232 000346 233 000347 236 000350 237 000351 239 000355 240 000360 243 000362 246 000364 249 000365 250 000366 252 000372 254 000376 255 000377 257 000401 261 000402 267 000403 268 000405 269 000406 270 000407 272 000412 273 000422 275 000431 277 000432 278 000434 279 000435 280 000436 282 000441 287 000442 288 000444 291 000472 298 000473 299 000476 300 000502 301 000505 302 000510 306 000534 307 000536 309 000540 310 000542 311 000544 312 000545 313 000547 316 000554 319 000556 322 000565 323 000566 326 000572 329 000574 332 000603 334 000604 337 000607 342 000612 343 000614 347 000616 348 000622 350 000624 364 000647 ----------------------------------------------------------- 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