COMPILATION LISTING OF SEGMENT internal_mowse_ 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.7 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-07-01,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-10-22,Smith), approve(87-07-15,MCR7580), 14* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 15* Change code handling delete_from_remote_cat_ request so that no 16* capability_name is expected in the alter_cat_message. Include code 17* for the handling of connect request messages. Handled messages received 18* with an invalid minor specified. 19* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 20* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 21* Approved. 22* END HISTORY COMMENTS */ 23 24 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 25 internal_mowse_: 26 proc (p_mcb_ptr, p_mess_len, p_minor, p_mess_ptr, p_ecode); 27 28 29 /* : PROGRAM FUNCTION 30* 31*Determine the destination of the internal narc message depending on the minor 32*capability number and direct control appropriately. */ 33 34 /* : NOTES 35**/ 36 37 /* INPUT PARAMETERS */ 38 dcl p_mcb_ptr ptr parameter; /* mcb pointer of mowse_io_ */ 39 dcl p_mess_len fixed bin parameter; /* Length of message */ 40 dcl p_minor fixed bin parameter; /* Minor capability */ 41 dcl p_mess_ptr ptr parameter; /* Pointer to message */ 42 dcl p_ecode fixed bin (35) parameter; /* Error code */ 43 44 45 /* EXTERNAL CALLS */ 46 dcl internal_connect_request_ 47 entry (ptr, ptr, fixed bin, fixed bin (35)); 48 dcl prepare_trace_ entry (ptr, fixed bin, ptr, fixed bin); 49 dcl capability_$pack entry (fixed bin, fixed bin, fixed bin, 50 fixed bin (35)); 51 dcl send_msg_ entry (ptr, fixed bin, fixed bin, ptr, fixed bin, 52 fixed bin, fixed bin (35)); 53 dcl add_to_remote_cat_ entry (ptr, fixed bin, char (*), fixed bin (35)); 54 dcl delete_from_remote_cat_ 55 entry (ptr, fixed bin, fixed bin (35)); 56 dcl get_mowse_info_ptr_ entry (ptr, ptr, fixed bin (35)); 57 dcl ws_$put_background_message 58 entry () options (variable); 59 dcl execom_ entry (ptr, fixed bin, char (*), fixed bin, 60 fixed bin, fixed bin, fixed bin (35)); 61 62 63 /* MISC VARIABLES */ 64 dcl cap_num fixed bin; 65 dcl destination fixed bin; /* source of message */ 66 dcl major_name char (32); /* Capability name */ 67 dcl old_modes char (256); /* returned from iox_$modes call */ 68 dcl mowse_info_ptr ptr; /* Pointer to mowse info structure */ 69 dcl command_id fixed bin; 70 dcl major_num fixed bin; 71 72 73 /* CONDITIONS */ 74 75 76 /* BUILTINS */ 77 dcl null builtin; 78 dcl substr builtin; 79 dcl rank builtin; 80 81 /* CONSTANTS */ 82 dcl TRUE bit (1) int static options (constant) init ("1"b); 83 dcl FALSE bit (1) int static options (constant) init ("0"b); 84 85 /* SYSTEM CALLS */ 86 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 87 88 /* EXTERNAL CALL SUPPORT */ 89 90 91 /* */ 92 93 /* INITIALIZATION */ 94 95 p_ecode = 0; 96 message_ptr = p_mess_ptr; 97 message_len = p_mess_len; 98 mowse_info_ptr = null; 99 call get_mowse_info_ptr_ (p_mcb_ptr, mowse_info_ptr, p_ecode); 100 if p_ecode ^= 0 then 101 return; 102 103 /* : MAIN */ 104 105 /* : Call trace message to print message received */ 106 107 if mowse_info_ptr -> mowse_info.mowse_flags.trace = TRUE then 108 call prepare_trace_ (message_ptr, message_len, 109 mowse_info_ptr -> mowse_info.mowse_flags.trace_file_iocb, 110 0); 111 112 /* : - case SET_SLEEP_FLAG 113* -- set the sleep flag of the source capability */ 114 115 if (p_minor = SET_SLEEP_FLAG) then do; 116 cap_num 117 = rank (message_ptr -> last_message.header.source_major); 118 if cap_num < MINIMUM_CAT_ENTRY | cap_num > MAXIMUM_CAT_ENTRY 119 then 120 return; 121 122 mowse_info_ptr -> mowse_info.remote_cat (cap_num).sleep_time 123 = "1"b; 124 return; 125 end; 126 127 /* : - case RESET_SLEEP_FLAG 128* -- clear the sleep flag of the source capability */ 129 130 if (p_minor = RESET_SLEEP_FLAG) then do; 131 cap_num 132 = rank (message_ptr -> last_message.header.source_major); 133 if cap_num < MINIMUM_CAT_ENTRY | cap_num > MAXIMUM_CAT_ENTRY 134 then 135 return; 136 137 mowse_info_ptr -> mowse_info.remote_cat (cap_num).sleep_time 138 = "0"b; 139 return; 140 end; 141 142 /* : - case RESET_REPLY 143* -- clear the reset flag on the source application (RESET_REPLYs only come 144* from the remote system */ 145 146 if p_minor = RESET_REPLY then do; 147 cap_num 148 = rank (message_ptr -> last_message.header.source_major); 149 if cap_num < MINIMUM_CAT_ENTRY | cap_num > MAXIMUM_CAT_ENTRY 150 then 151 return; 152 153 mowse_info_ptr -> mowse_info.remote_cat (cap_num).flags.reset 154 = FALSE; 155 return; 156 end; 157 158 /* : - case SET_SUSPEND 159* -- set the suspend flag on the destination application (only come 160* from the remote system) */ 161 162 if p_minor = SET_SUSPEND then do; 163 cap_num 164 = rank (message_ptr -> last_message.header.source_major); 165 if cap_num < MINIMUM_CAT_ENTRY | cap_num > MAXIMUM_CAT_ENTRY 166 then 167 return; 168 169 mowse_info_ptr 170 -> mowse_info.remote_cat (cap_num).flags.suspended 171 = TRUE; 172 return; 173 end; 174 175 /* : - case RESET_SUSPEND 176* -- clear the suspend flag on the specified application (these only come 177* from the remote system */ 178 179 if p_minor = RESET_SUSPEND then do; 180 cap_num 181 = rank (message_ptr -> last_message.header.source_major); 182 if cap_num < MINIMUM_CAT_ENTRY | cap_num > MAXIMUM_CAT_ENTRY 183 then 184 return; 185 186 mowse_info_ptr 187 -> mowse_info.remote_cat (cap_num).flags.suspended 188 = FALSE; 189 return; 190 end; 191 192 /* : - case EXECUTE_COMMAND: 193* -- call procedure execom_ which will handle the execution of the command 194* originating from some other system. */ 195 196 if (p_minor = EXECUTE_COMMAND) then do; 197 command_id = message_ptr -> execom_message.data.cmd_id; 198 call execom_ (p_mcb_ptr, message_len - 7, 199 message_ptr -> execom_message.data.command, command_id, 200 rank (message_ptr -> execom_message.header.source_system), 201 rank (message_ptr -> execom_message.header.source_major), 202 p_ecode); 203 p_ecode = 0; 204 return; 205 end; 206 207 /* : - case EXECUTE_COMMAND_REPLY: 208* (Execution of an application by mowse on startup failed) 209* -- put a background message indicating the status of the execution 210* (only if it failed) to the user. */ 211 212 if (p_minor = EXECUTE_COMMAND_REPLY) then do; 213 if (message_ptr -> execom_reply_msg.data.cmd_id = 0) & 214 (rank (message_ptr -> execom_reply_msg.data.status) = 215 STATUS_FAILED) then do; 216 217 call ws_$put_background_message (p_mcb_ptr, 0, "MOWSE", 218 "Start up failed"); 219 end; 220 p_ecode = 0; 221 return; 222 end; 223 224 /* : - case ADD_TO_REMOTE_CAT: 225* -- call procedure add_to_remote_cat_ with the capability_number and 226* the name of the capability to be added to the remote CAT table. */ 227 228 if (p_minor = ADD_TO_REMOTE_CAT) then do; 229 if substr (message_ptr -> alter_cat_message.data.major_name, 1, 230 6) 231 = "WSTERM" 232 then 233 call iox_$modes (p_mcb_ptr -> mcb.iocb_ptr, 234 "", old_modes, p_ecode); 235 236 major_num = rank (message_ptr -> alter_cat_message.data.major); 237 major_name = 238 substr (message_ptr -> alter_cat_message.data.major_name, 239 1, p_mess_len - 6); 240 call add_to_remote_cat_ (p_mcb_ptr, major_num, major_name, 241 p_ecode); 242 243 return; 244 end; 245 246 /* : - case DELETE_FROM_REMOTE_CAT: 247* -- call procedure delete_from_remote_cat_ with the capability_number and 248* the name of the capability to be deleted from the remote CAT table. */ 249 250 if (p_minor = DELETE_FROM_REMOTE_CAT) then do; 251 cap_num = 252 rank (message_ptr -> alter_cat_message.data.major); 253 call delete_from_remote_cat_ (p_mcb_ptr, cap_num, p_ecode); 254 return; 255 end; 256 257 /* : - case REQUEST_CONNECT */ 258 259 if p_minor = REQUEST_CONNECT then do; 260 call internal_connect_request_ (p_mcb_ptr, p_mess_ptr, 261 p_mess_len, p_ecode); 262 return; 263 end; 264 265 /* : - case FAIL_CAPABILITY 266* ignore it */ 267 268 if p_minor = FAIL_CAPABILITY then 269 return; 270 271 /* : Send execute_capability_failed message to source of illegal message */ 272 273 call capability_$pack ( 274 rank (message_ptr -> input_message.header.source_system), 275 rank (message_ptr -> input_message.header.source_major), 276 destination, p_ecode); 277 278 /* : if source of message is illegal then ignore message 279* else send execute_capability_reply message to source */ 280 281 if p_ecode ^= 0 then do; 282 p_ecode = 0; 283 return; 284 end; 285 286 call send_msg_ (p_mcb_ptr, destination, FAIL_CAPABILITY, 287 null, 0, BG, p_ecode); 288 return; 289 290 291 292 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-05-17,Smith), approve(87-07-15,MCR7580), 1 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 6* Created to define the mcb (Mowse Control Block) 1 7* for information on capabilities. 1 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 10* Approved. 1 11* END HISTORY COMMENTS */ 1 12 /* MOWSE control block */ 1 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 14 dcl 01 mcb based, 1 15 02 version char (8), 1 16 02 capability_name char (32), /* Name of capability */ 1 17 02 major_capability fixed bin (17), /* Capability number */ 1 18 02 inbuff_length fixed bin (17), /* Length of buffer */ 1 19 02 inbuff_position_index 1 20 fixed bin (17), /* Current position in inbuffer */ 1 21 02 inbuff_data_length 1 22 fixed bin (17), /* Amoiunt of data in inbuffer */ 1 23 02 outbuff_length fixed bin (17), /* Length of outbuffer */ 1 24 02 mbz1 bit (36) unal, 1 25 02 entry_var entry options (variable), /* Message processor entry point of capability */ 1 26 02 data_block_ptr ptr, /* Capability data */ 1 27 02 inbuff ptr, /* Message input buffer */ 1 28 02 outbuff_list_start 1 29 ptr, /* Pointer to outbuffer data */ 1 30 02 outbuff_list_end ptr, /* Last node in outbuffer data */ 1 31 02 iocb_ptr ptr, /* IOCB to mowse_io_ */ 1 32 02 mowse_info_ptr ptr; /* MOWSE information */ 1 33 /* Output buffer linked list node */ 1 34 dcl 01 output_buffer based, 1 35 02 destination_system 1 36 char, /* Destination of message */ 1 37 02 destination_major char, 1 38 02 destination_minor char, 1 39 02 buffer_position fixed bin, /* Position in buffer of message */ 1 40 02 buffer_length fixed bin, /* Length of buffer */ 1 41 02 next_buffer ptr, /* Next buffer of message */ 1 42 02 data ptr; /* Pointer to message */ 1 43 1 44 /* END INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 293 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 * * * * * * * * * * * * */ 294 3 1 /* BEGIN INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-05-17,Smith), approve(86-12-16,MCR7580), 3 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 6* Created to define MOWSE message formats. 3 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 9* Approved. 3 10* 3) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 3 11* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 3 12* Changes to support async call channels. 3 13* END HISTORY COMMENTS */ 3 14 3 15 /* Message Channels */ 3 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 17 dcl BG fixed bin int static options (constant) init (0); 3 18 /* Fore ground */ 3 19 dcl FG fixed bin int static options (constant) init (1); 3 20 /* Back ground */ 3 21 3 22 /* Message types: 3 23* 3 24*Each intersystem message is labelled with one of the following types. Upon 3 25*reciept of the message suitable action is undertaken. This scheme was 3 26*introduced to allow the transmission of messsages longer than the maximum 3 27*packet size. 3 28**/ 3 29 3 30 /* Templates for the various messages used throughout the mowse environment. 3 31* Non-allocatable */ 3 32 3 33 dcl message_len fixed bin init (6); 3 34 dcl message_ptr ptr; 3 35 3 36 /* expected format of message */ 3 37 3 38 dcl 01 input_message based (message_ptr), 3 39 02 header, 3 40 03 system char (1) unal, 3 41 03 major char (1) unal, 3 42 03 minor char (1) unal, 3 43 03 source_system char (1) unal, 3 44 03 source_major char (1) unal, 3 45 02 data char (message_len - 5) unal; 3 46 3 47 /* expected format of message to be handled by mowse internal execute command */ 3 48 3 49 dcl 01 execom_message based (message_ptr), 3 50 02 header, 3 51 03 system char (1) unal, 3 52 03 major char (1) unal, 3 53 03 minor char (1) unal, 3 54 03 source_system char (1) unal, 3 55 03 source_major char (1) unal, 3 56 02 data, 3 57 03 cmd_id fixed bin (17) unal, 3 58 03 command char (message_len - 7) unal; 3 59 3 60 /* expected format of message recieved when a request to alter a CAT table 3 61* is made by a remote system */ 3 62 3 63 dcl 01 alter_cat_message based (message_ptr), 3 64 02 header, 3 65 03 system char (1) unal, 3 66 03 major char (1) unal, 3 67 03 minor char (1) unal, 3 68 03 source_system char (1) unal, 3 69 03 source_major char (1) unal, 3 70 02 data, 3 71 03 major char unal, 3 72 03 major_name char (CAPABILITY_NAME_LENGTH) unal; 3 73 3 74 /* Template used to parse message recieved from some remote system. */ 3 75 3 76 dcl 01 event_message based (message_ptr), 3 77 02 header, 3 78 03 system char (1) unal, 3 79 03 major char (1) unal, 3 80 03 msg_type char (1) unal; 3 81 3 82 /* format of message of MORE type */ 3 83 3 84 dcl 01 request_more_message 3 85 based (message_ptr), 3 86 02 header, 3 87 03 system char (1) unal, 3 88 03 major char (1) unal, 3 89 03 more char (1) unal, 3 90 03 source_system char (1) unal, 3 91 03 source_major char (1) unal, 3 92 03 source_minor char (1) unal; 3 93 3 94 /* format of message of CONTINUE type */ 3 95 3 96 dcl 01 more_remaining_message 3 97 based (message_ptr), 3 98 02 header, 3 99 03 system char (1) unal, 3 100 03 major char (1) unal, 3 101 03 continue char (1) unal, 3 102 03 minor char (1) unal, 3 103 03 source_system char (1) unal, 3 104 03 source_major char (1) unal, 3 105 02 data, 3 106 03 data_buf char (message_len - 6) unal; 3 107 3 108 /* format of message of LAST type */ 3 109 3 110 dcl 01 last_message based (message_ptr), 3 111 02 header, 3 112 03 system char (1) unal, 3 113 03 major char (1) unal, 3 114 03 minor char (1) unal, 3 115 03 source_system char (1) unal, 3 116 03 source_major char (1) unal, 3 117 02 data, 3 118 03 data_buf char (message_len - 5) unal; 3 119 3 120 /* Execute_command_reply message format */ 3 121 3 122 dcl 01 execom_reply_msg based (message_ptr), 3 123 02 header, 3 124 03 system char (1) unal, 3 125 03 major char (1) unal, 3 126 03 minor char (1) unal, 3 127 03 source_system char (1) unal, 3 128 03 source_major char (1) unal, 3 129 02 data, 3 130 03 cmd_id fixed bin unal, 3 131 03 status char unal; 3 132 3 133 /* Used to manage partial messages destined for any application */ 3 134 3 135 dcl msg_node_ptr ptr; 3 136 dcl 01 message_node based (msg_node_ptr), 3 137 02 major fixed bin, 3 138 02 partial_msg_list_ptr 3 139 ptr, 3 140 02 next_node ptr, 3 141 02 prev_node ptr, 3 142 02 last_part_msg ptr; 3 143 3 144 dcl part_msg_ptr ptr; 3 145 dcl 01 partial_message based (part_msg_ptr), 3 146 02 msg_ptr ptr, 3 147 02 msg_len fixed bin, 3 148 02 next_msg ptr; 3 149 3 150 3 151 dcl part_msg_length fixed bin; 3 152 dcl part_msg char (part_msg_length) based; 3 153 3 154 /* Trace information structure */ 3 155 dcl 01 trace_message_info, 3 156 02 direction fixed bin, 3 157 02 from_system fixed bin, 3 158 02 from_major fixed bin, 3 159 02 dest_system fixed bin, 3 160 02 dest_major fixed bin, 3 161 02 dest_minor fixed bin, 3 162 02 msg_type fixed bin, 3 163 02 message char (PACKET_SIZE) var; 3 164 3 165 /* END INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 295 4 1 /* BEGIN INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-07-19,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 MOWSE information to be 4 7* placed into a temp segment. 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* 3) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 4 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 13* Added bit switches to the init_mowse_info structure as well as the force 4 14* flag. 4 15* 4) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 4 16* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 17* Added open_struc for passing EOP and escape char info from attach_mowse 4 18* to mowse_io_. 4 19* END HISTORY COMMENTS */ 4 20 4 21 /* CAT index limits */ 4 22 4 23 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 24 dcl MINIMUM_CAT_ENTRY fixed bin int static options (constant) init (33); 4 25 dcl MAXIMUM_CAT_ENTRY fixed bin int static options (constant) init (64); 4 26 4 27 dcl CAPABILITY_NAME_LENGTH fixed bin int static options (constant) init (32); 4 28 4 29 /* Mowse information structure */ 4 30 4 31 dcl 01 mowse_info based aligned, 4 32 02 version char (8), 4 33 02 local_cat dimension (33:64), /* Multics CAT table */ 4 34 03 flags, 4 35 04 reset bit (1) unal, /* Reset in progress */ 4 36 04 suspended bit (1) unal, /* Suspended applciation */ 4 37 04 status bit (1) unal, /* Status pending */ 4 38 04 mbz1 bit (33) unal, 4 39 03 sleep_time fixed bin, /* Time application is sleeping */ 4 40 03 mcb_ptr ptr, /* Capability MCB */ 4 41 02 remote_cat dimension (33:64), /* PC CAT table */ 4 42 03 major_capability 4 43 fixed bin, /* Capability number */ 4 44 03 capability_name char (32), /* Name of capability */ 4 45 03 flags, 4 46 04 reset bit (1) unal, /* Reset in progress */ 4 47 04 suspended bit (1) unal, /* Suspended capability */ 4 48 04 sleep_time bit (1) unal, /* Application sleeping */ 4 49 04 mbz2 bit (33) unal, 4 50 02 message_manager_info, /* Info for processing messages */ 4 51 03 head_list_ptr ptr, /* Head of message list */ 4 52 03 tail_list_ptr ptr, /* Tail of message list */ 4 53 03 pending_messages 4 54 fixed bin, /* Number of pending messages */ 4 55 02 mowse_flags, 4 56 03 trace bit (1) unal, /* Message tracing facility active */ 4 57 03 debug bit (1) unal, /* Debugging packets facility active */ 4 58 03 error_handled bit (1) unal, /* In mowse_error_handler procedure */ 4 59 03 mbz1 bit (33) unal, 4 60 03 trace_file_iocb ptr, /* Trace file iocb */ 4 61 03 debug_file_iocb ptr, /* Debug file iocb */ 4 62 02 init_mowse_info_ptr 4 63 ptr; /* Initialization information */ 4 64 4 65 /* MOWSE initialization information */ 4 66 4 67 dcl init_mowse_info_ptr ptr; 4 68 dcl 01 init_mowse_info based (init_mowse_info_ptr), 4 69 02 version char (8), 4 70 02 flags, /* Bit switches */ 4 71 03 trace_sw bit (1) unal, 4 72 03 debug_sw bit (1) unal, 4 73 03 io_switch_sw bit (1) unal, 4 74 03 force_sw bit (1) unal, 4 75 03 start_up_sw bit (1) unal, 4 76 03 escape_sw bit (1) unal, 4 77 03 network_sw bit (1) unal, 4 78 03 pad bit (29) unal, 4 79 02 escape, 4 80 03 chars (0:255) bit (1) unal, /* Character escapes */ 4 81 03 pad bit (32) unal, 4 82 02 trace char (512) var, /* Trace file name */ 4 83 02 debug char (512) var, /* Debug file name */ 4 84 02 io_switch char (512) var, /* Io switch name of mowse_io_ attachment */ 4 85 02 startup (MAXIMUM_CAT_ENTRY - MINIMUM_CAT_ENTRY + 1) 4 86 char (168) var; /* Capability to be autoloaded */ 4 87 4 88 /* Open description structure (this is padded to character bounds as it 4 89* is a character overlay structure - passed as a character string) */ 4 90 4 91 dcl open_struc_ptr ptr; 4 92 dcl 01 open_struc based (open_struc_ptr), 4 93 02 flags, 4 94 03 network_sw bit (1) unal, 4 95 03 escape_sw bit (1) unal, 4 96 03 pad bit (7) unal, 4 97 02 escape, 4 98 03 switches (0:255) bit (1) unal, 4 99 03 pad bit (32) unal, 4 100 02 mbz bit (16) unal; 4 101 4 102 /* END INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 296 297 298 /* : END internal_mowse_ */ 299 end internal_mowse_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/07/87 1454.8 internal_mowse_.pl1 >special_ldd>install>MR12.1-1075>internal_mowse_.pl1 293 1 08/07/87 1447.6 mowse_mcb.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_mcb.incl.pl1 294 2 08/07/87 1445.8 mowse.incl.pl1 >special_ldd>install>MR12.1-1075>mowse.incl.pl1 295 3 08/07/87 1447.1 mowse_messages.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_messages.incl.pl1 296 4 08/07/87 1445.8 mowse_info.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_info.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. ADD_TO_REMOTE_CAT constant fixed bin(17,0) initial dcl 2-78 ref 228 BG 000010 constant fixed bin(17,0) initial dcl 3-17 set ref 286* CAPABILITY_NAME_LENGTH constant fixed bin(17,0) initial dcl 4-27 ref 229 237 DELETE_FROM_REMOTE_CAT constant fixed bin(17,0) initial dcl 2-79 ref 250 EXECUTE_COMMAND constant fixed bin(17,0) initial dcl 2-77 ref 196 EXECUTE_COMMAND_REPLY constant fixed bin(17,0) initial dcl 2-72 ref 212 FAIL_CAPABILITY 000000 constant fixed bin(17,0) initial dcl 2-75 set ref 268 286* FALSE constant bit(1) initial unaligned dcl 83 ref 153 186 MAXIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 4-25 ref 118 133 149 165 182 MINIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 4-24 ref 118 133 149 165 182 PACKET_SIZE constant fixed bin(17,0) initial dcl 2-48 ref 3-155 REQUEST_CONNECT constant fixed bin(17,0) initial dcl 2-92 ref 259 RESET_REPLY constant fixed bin(17,0) initial dcl 2-84 ref 146 RESET_SLEEP_FLAG constant fixed bin(17,0) initial dcl 2-97 ref 130 RESET_SUSPEND constant fixed bin(17,0) initial dcl 2-99 ref 179 SET_SLEEP_FLAG constant fixed bin(17,0) initial dcl 2-96 ref 115 SET_SUSPEND constant fixed bin(17,0) initial dcl 2-98 ref 162 STATUS_FAILED 000000 constant fixed bin(8,0) initial dcl 2-37 ref 213 TRUE constant bit(1) initial unaligned dcl 82 ref 107 169 add_to_remote_cat_ 000020 constant entry external dcl 53 ref 240 alter_cat_message based structure level 1 packed unaligned dcl 3-63 cap_num 000100 automatic fixed bin(17,0) dcl 64 set ref 116* 118 118 122 131* 133 133 137 147* 149 149 153 163* 165 165 169 180* 182 182 186 251* 253* capability_$pack 000014 constant entry external dcl 49 ref 273 cmd_id 1(09) based fixed bin(17,0) level 3 in structure "execom_reply_msg" packed unaligned dcl 3-122 in procedure "internal_mowse_" ref 213 cmd_id 1(09) based fixed bin(17,0) level 3 in structure "execom_message" packed unaligned dcl 3-49 in procedure "internal_mowse_" ref 197 command 1(27) based char level 3 packed unaligned dcl 3-49 set ref 198* command_id 000214 automatic fixed bin(17,0) dcl 69 set ref 197* 198* data 1(09) based structure level 2 in structure "execom_message" packed unaligned dcl 3-49 in procedure "internal_mowse_" data 1(09) based structure level 2 in structure "execom_reply_msg" packed unaligned dcl 3-122 in procedure "internal_mowse_" data 1(09) based structure level 2 in structure "alter_cat_message" packed unaligned dcl 3-63 in procedure "internal_mowse_" delete_from_remote_cat_ 000022 constant entry external dcl 54 ref 253 destination 000101 automatic fixed bin(17,0) dcl 65 set ref 273* 286* execom_ 000030 constant entry external dcl 59 ref 198 execom_message based structure level 1 packed unaligned dcl 3-49 execom_reply_msg based structure level 1 packed unaligned dcl 3-122 flags 213 based structure array level 3 dcl 4-31 get_mowse_info_ptr_ 000024 constant entry external dcl 56 ref 99 header based structure level 2 in structure "last_message" packed unaligned dcl 3-110 in procedure "internal_mowse_" header based structure level 2 in structure "execom_message" packed unaligned dcl 3-49 in procedure "internal_mowse_" header based structure level 2 in structure "input_message" packed unaligned dcl 3-38 in procedure "internal_mowse_" input_message based structure level 1 packed unaligned dcl 3-38 internal_connect_request_ 000010 constant entry external dcl 46 ref 260 iocb_ptr 34 based pointer level 2 dcl 1-14 set ref 229* iox_$modes 000032 constant entry external dcl 86 ref 229 last_message based structure level 1 packed unaligned dcl 3-110 major 1(09) based char(1) level 3 packed unaligned dcl 3-63 ref 236 251 major_name 000102 automatic char(32) unaligned dcl 66 in procedure "internal_mowse_" set ref 237* 240* major_name 1(18) based char level 3 in structure "alter_cat_message" packed unaligned dcl 3-63 in procedure "internal_mowse_" ref 229 237 major_num 000215 automatic fixed bin(17,0) dcl 70 set ref 236* 240* mcb based structure level 1 unaligned dcl 1-14 message_len 000220 automatic fixed bin(17,0) initial dcl 3-33 set ref 97* 107* 198 198 198 3-33* message_ptr 000222 automatic pointer dcl 3-34 set ref 96* 107* 116 131 147 163 180 197 198 198 198 198 198 213 213 229 236 237 251 273 273 273 273 mowse_flags 710 based structure level 2 dcl 4-31 mowse_info based structure level 1 dcl 4-31 mowse_info_ptr 000212 automatic pointer dcl 68 set ref 98* 99* 107 107 122 137 153 169 186 null builtin function dcl 77 ref 98 286 286 old_modes 000112 automatic char(256) unaligned dcl 67 set ref 229* p_ecode parameter fixed bin(35,0) dcl 42 set ref 25 95* 99* 100 198* 203* 220* 229* 240* 253* 260* 273* 281 282* 286* p_mcb_ptr parameter pointer dcl 38 set ref 25 99* 198* 217* 229 240* 253* 260* 286* p_mess_len parameter fixed bin(17,0) dcl 39 set ref 25 97 237 260* p_mess_ptr parameter pointer dcl 41 set ref 25 96 260* p_minor parameter fixed bin(17,0) dcl 40 ref 25 115 130 146 162 179 196 212 228 250 259 268 prepare_trace_ 000012 constant entry external dcl 48 ref 107 rank builtin function dcl 79 ref 116 131 147 163 180 198 198 198 198 213 236 251 273 273 273 273 remote_cat 202 based structure array level 2 dcl 4-31 reset 213 based bit(1) array level 4 packed unaligned dcl 4-31 set ref 153* send_msg_ 000016 constant entry external dcl 51 ref 286 sleep_time 213(02) based bit(1) array level 4 packed unaligned dcl 4-31 set ref 122* 137* source_major 1 based char(1) level 3 in structure "input_message" packed unaligned dcl 3-38 in procedure "internal_mowse_" ref 273 273 source_major 1 based char(1) level 3 in structure "last_message" packed unaligned dcl 3-110 in procedure "internal_mowse_" ref 116 131 147 163 180 source_major 1 based char(1) level 3 in structure "execom_message" packed unaligned dcl 3-49 in procedure "internal_mowse_" ref 198 198 source_system 0(27) based char(1) level 3 in structure "execom_message" packed unaligned dcl 3-49 in procedure "internal_mowse_" ref 198 198 source_system 0(27) based char(1) level 3 in structure "input_message" packed unaligned dcl 3-38 in procedure "internal_mowse_" ref 273 273 status 1(27) based char(1) level 3 packed unaligned dcl 3-122 ref 213 substr builtin function dcl 78 ref 229 237 suspended 213(01) based bit(1) array level 4 packed unaligned dcl 4-31 set ref 169* 186* temp_seg_name 000216 automatic char(6) initial unaligned dcl 2-22 set ref 2-22* trace 710 based bit(1) level 3 packed unaligned dcl 4-31 ref 107 trace_file_iocb 712 based pointer level 3 dcl 4-31 set ref 107* ws_$put_background_message 000026 constant entry external dcl 57 ref 217 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT internal static fixed bin(17,0) initial dcl 2-54 CONTINUE internal static fixed bin(17,0) initial dcl 2-94 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 2-73 FG internal static fixed bin(17,0) initial dcl 3-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 INTERNAL internal static fixed bin(17,0) initial dcl 2-76 LAST internal static fixed bin(17,0) initial dcl 2-71 LOCAL_SYSTEM internal static fixed bin(17,0) initial dcl 2-30 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_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 REMOTE_SYSTEM internal static fixed bin(17,0) initial dcl 2-31 REQUEST_DISCONNECT internal static fixed bin(17,0) initial dcl 2-93 RESET_APPLICATION internal static fixed bin(17,0) initial dcl 2-83 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 STATUS internal static fixed bin(17,0) initial dcl 2-86 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 event_message based structure level 1 packed unaligned dcl 3-76 init_mowse_info based structure level 1 unaligned dcl 4-68 init_mowse_info_ptr automatic pointer dcl 4-67 message_node based structure level 1 unaligned dcl 3-136 more_remaining_message based structure level 1 packed unaligned dcl 3-96 msg_node_ptr automatic pointer dcl 3-135 open_struc based structure level 1 packed unaligned dcl 4-92 open_struc_ptr automatic pointer dcl 4-91 output_buffer based structure level 1 unaligned dcl 1-34 part_msg based char unaligned dcl 3-152 part_msg_length automatic fixed bin(17,0) dcl 3-151 part_msg_ptr automatic pointer dcl 3-144 partial_message based structure level 1 unaligned dcl 3-145 request_more_message based structure level 1 packed unaligned dcl 3-84 trace_message_info automatic structure level 1 unaligned dcl 3-155 NAME DECLARED BY EXPLICIT CONTEXT. internal_mowse_ 000035 constant entry external dcl 25 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1030 1064 665 1040 Length 1356 665 34 255 143 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME internal_mowse_ 206 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME internal_mowse_ 000100 cap_num internal_mowse_ 000101 destination internal_mowse_ 000102 major_name internal_mowse_ 000112 old_modes internal_mowse_ 000212 mowse_info_ptr internal_mowse_ 000214 command_id internal_mowse_ 000215 major_num internal_mowse_ 000216 temp_seg_name internal_mowse_ 000220 message_len internal_mowse_ 000222 message_ptr internal_mowse_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac alloc_auto_adj ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. add_to_remote_cat_ capability_$pack delete_from_remote_cat_ execom_ get_mowse_info_ptr_ internal_connect_request_ iox_$modes prepare_trace_ send_msg_ ws_$put_background_message NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000030 2 22 000042 3 33 000044 3 155 000046 95 000054 96 000056 97 000061 98 000063 99 000065 100 000077 107 000102 115 000125 116 000131 118 000137 122 000143 124 000147 130 000150 131 000152 133 000160 137 000164 139 000170 146 000171 147 000173 149 000201 153 000205 155 000211 162 000212 163 000214 165 000222 169 000226 172 000232 179 000233 180 000235 182 000243 186 000247 189 000253 196 000254 197 000256 198 000265 203 000347 204 000351 212 000352 213 000354 217 000371 220 000425 221 000427 228 000430 229 000432 236 000466 237 000474 240 000502 243 000527 250 000530 251 000532 253 000540 254 000553 259 000554 260 000556 262 000573 268 000574 273 000576 281 000626 282 000631 283 000632 286 000633 288 000661 ----------------------------------------------------------- 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