COMPILATION LISTING OF SEGMENT rcvdat_ 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 1501.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-10-22,Smith), approve(87-07-15,MCR7580), 14* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 15* Added checks for messages with invalid destinations. 16* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 17* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 18* Approved. 19* 4) change(86-12-10,Flegel), approve(86-12-10,MCR7580), 20* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 21* Replaced signalling of mowse_fatal_error with a call to fatal_mowse_trap_. 22* 5) change(86-12-11,Flegel), approve(86-12-11,MCR7580), 23* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 24* Guaruntee that a RESPONSE_DISCONNECT message is sent back in the event of 25* an error to the destination of a REQUEST_DISCONNECT message. 26* END HISTORY COMMENTS */ 27 28 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 29 rcvdat_: 30 proc (p_mowse_mcb_ptr, p_msg_ptr, p_msg_len, p_status); 31 32 /* : PROGRAM FUNCTION 33*Get a message from the Protocol Handler (0.1) and pass it on to the parser. 34**/ 35 36 /* : NOTES 37* 38*All error handling should be done from here on down. 39**/ 40 41 /* INPUT PARAMETERS */ 42 dcl p_mowse_mcb_ptr ptr parameter; /* mcb of mowse_io_ */ 43 dcl p_msg_ptr ptr parameter; /* Pointer to a message record */ 44 dcl p_msg_len fixed bin (21) parameter; /* Length of message */ 45 dcl p_status fixed bin (35) parameter; /* Error code */ 46 47 48 /* EXTERNAL CALLS */ 49 dcl send_msg_ entry (ptr, fixed bin, fixed bin, ptr, fixed bin, 50 fixed bin, fixed bin (35)); 51 dcl capability_$pack entry (fixed bin, fixed bin, fixed bin, 52 fixed bin (35)); 53 dcl ws_$put_background_message 54 entry () options (variable); 55 dcl message_parser_ entry (ptr, fixed bin, ptr, fixed bin (35)); 56 57 /* SYSTEM CALLS */ 58 59 /* SYSTEM CALL SUPPORT */ 60 dcl ws_error_$no_capability 61 fixed bin (35) ext static; 62 dcl ws_error_$invalid_capability_number 63 fixed bin (35) ext static; 64 dcl ws_error_$invalid_system_id 65 fixed bin (35) ext static; 66 67 /* STRUCTURES */ 68 69 /* MISC VARIABLES */ 70 dcl mowse_info_ptr ptr; 71 dcl system fixed bin; 72 dcl major fixed bin; 73 dcl minor fixed bin; 74 dcl source_system fixed bin; 75 dcl source_major fixed bin; 76 dcl ecode fixed bin (35); 77 78 /* BUILTINS */ 79 dcl convert builtin; 80 dcl null builtin; 81 dcl rank builtin; 82 dcl addr builtin; 83 dcl byte builtin; 84 85 /* CONDITIONS */ 86 87 /* */ 88 89 /* INITIALIZATION */ 90 91 p_status = 0; 92 message_ptr = p_msg_ptr; 93 message_len = convert (message_len, p_msg_len); 94 95 /* MAIN */ 96 97 /* : Get mowse_info_ptr */ 98 99 mowse_info_ptr = p_mowse_mcb_ptr -> mcb.mowse_info_ptr; 100 101 /* : Ensure that the destination of the message is valid. Ignore messages 102* received for the wrong system */ 103 104 system = rank (message_ptr -> input_message.header.system); 105 major = rank (message_ptr -> input_message.header.major); 106 minor = rank (message_ptr -> input_message.header.minor); 107 if minor ^= CONTINUE then do; 108 source_system = 109 rank (message_ptr -> input_message.header.source_system); 110 source_major = 111 rank (message_ptr -> input_message.header.source_major); 112 end; 113 else do; 114 source_system = 115 rank (message_ptr 116 -> more_remaining_message.header.source_system); 117 source_major = 118 rank (message_ptr 119 -> more_remaining_message.header.source_major); 120 end; 121 122 /* : If destination major or system is invalid, send an error */ 123 124 if major < INTERNAL | major > MAXIMUM_CAT_ENTRY then do; 125 call message_error (system, major, minor, source_system, 126 source_major, p_mowse_mcb_ptr, 127 ws_error_$invalid_capability_number); 128 return; 129 end; 130 131 /* : If the system is invalid, send an error */ 132 133 if system ^= LOCAL_SYSTEM then do; 134 call message_error (system, major, minor, source_system, 135 source_major, p_mowse_mcb_ptr, 136 ws_error_$invalid_system_id); 137 return; 138 end; 139 140 /* : If the major number of the destination is valid ensure that there 141* is a valid MCB for this capability (ie the application is registered 142* with MOWSE). */ 143 144 if major ^= INTERNAL then 145 if p_mowse_mcb_ptr -> mcb.mowse_info_ptr 146 -> mowse_info.local_cat (major).mcb_ptr = null 147 then do; 148 call message_error (system, major, minor, source_system, 149 source_major, p_mowse_mcb_ptr, 150 ws_error_$no_capability); 151 return; 152 end; 153 154 /* : call message parser with message length and pointer to mesaage */ 155 156 call message_parser_ (p_mowse_mcb_ptr, message_len, p_msg_ptr, 157 ecode); 158 159 /* : if the message is invalid then display a message indicating this 160* fact and terminate the capability sending the message */ 161 162 p_status = 0; 163 if ecode ^= 0 then do; 164 call message_error (system, major, minor, source_system, 165 source_major, p_mowse_mcb_ptr, ecode); 166 return; 167 end; 168 169 /* */ 170 /* INTERNAL PROCEDURES */ 171 172 /* *** Procedure: message_error - Internal proc for rcvdat_ *** */ 173 174 175 message_error: 176 proc (p_system, p_major, p_minor, p_source_system, p_source_major, 177 p_mowse_mcb_ptr, p_code); 178 179 /* : PROCEDURE FUNCTION 180* 181*Generate the appropriate action when an invalid message has been received. 182**/ 183 184 /* INPUT PARAMETERS */ 185 dcl p_minor fixed bin parameter; /* Destination minor capability */ 186 dcl p_mowse_mcb_ptr ptr parameter; 187 dcl p_code fixed bin (35); 188 dcl p_source_major fixed bin parameter; /* Source major of message */ 189 dcl p_source_system fixed bin parameter; /* Source system of message */ 190 dcl p_major fixed bin parameter; /* Destination major */ 191 dcl p_system fixed bin parameter; 192 193 194 /* MISC VARIABLES */ 195 dcl data_message char (32); /* Data message string */ 196 dcl source_major_cap fixed bin; /* Packed capability number */ 197 dcl data char (1); /* Data to send_msg_ */ 198 199 /* INITIALIZATION */ 200 201 /* : Generate an error message only if it is not because the destination 202* capability does not exist */ 203 204 if p_code ^= ws_error_$no_capability then 205 call ws_$put_background_message (p_mowse_mcb_ptr, 206 p_code, "MULTICS MOWSE", "From [^d:^d] to [^d:^d:^d]", 207 p_source_system, p_source_major, p_system, p_major, 208 p_minor); 209 p_code = 0; 210 211 /* : If invalid message was from MOWSE then do not send a message to the 212* source of the message. */ 213 214 if p_source_major = INTERNAL then 215 return; 216 217 /* : Otherwise send a message to the source of the invalid message. */ 218 219 call capability_$pack (p_source_system, p_source_major, 220 source_major_cap, ecode); 221 if p_code ^= 0 then 222 return; 223 224 if p_minor = REQUEST_DISCONNECT then do; 225 data = byte (REJECT); 226 call send_msg_ (p_mowse_mcb_ptr, source_major_cap, 227 RESPONSE_DISCONNECT, addr (data), 1, BG, p_code); 228 end; 229 else if p_minor = STATUS then do; 230 data_message = "Capability does not exist."; 231 call send_msg_ (p_mowse_mcb_ptr, source_major_cap, 232 STATUS_REPLY, addr (data_message), 26, FG, p_code); 233 end; 234 235 else if p_minor >= MINIMUM_USER_MINOR & p_minor <= MAXIMUM_USER_MINOR 236 then 237 call send_msg_ (p_mowse_mcb_ptr, source_major_cap, 238 FAIL_CAPABILITY, null, 0, BG, p_code); 239 else 240 call send_msg_ (p_mowse_mcb_ptr, source_major_cap, 241 SYSTEM_ERROR, null, 0, BG, ecode); 242 243 end message_error; 244 245 /* */ 246 247 /* */ 248 249 250 /* 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 * * * * * * * * * * * * */ 251 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 * * * * * * * * * * * * */ 252 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 * * * * * * * * * * * * */ 253 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 * * * * * * * * * * * * */ 254 255 256 /* : END */ 257 end rcvdat_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/07/87 1450.0 rcvdat_.pl1 >special_ldd>install>MR12.1-1075>rcvdat_.pl1 251 1 08/07/87 1445.8 mowse.incl.pl1 >special_ldd>install>MR12.1-1075>mowse.incl.pl1 252 2 08/07/87 1447.6 mowse_mcb.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_mcb.incl.pl1 253 3 08/07/87 1447.1 mowse_messages.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_messages.incl.pl1 254 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. BG 000007 constant fixed bin(17,0) initial dcl 3-17 set ref 226* 235* 239* CONTINUE constant fixed bin(17,0) initial dcl 1-94 ref 107 FAIL_CAPABILITY 000003 constant fixed bin(17,0) initial dcl 1-75 set ref 235* FG 000012 constant fixed bin(17,0) initial dcl 3-19 set ref 231* INTERNAL constant fixed bin(17,0) initial dcl 1-76 ref 124 144 214 LOCAL_SYSTEM constant fixed bin(17,0) initial dcl 1-30 ref 133 MAXIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 4-25 ref 124 MAXIMUM_USER_MINOR constant fixed bin(17,0) initial dcl 1-67 ref 235 MINIMUM_USER_MINOR constant fixed bin(17,0) initial dcl 1-66 ref 235 PACKET_SIZE constant fixed bin(17,0) initial dcl 1-48 ref 3-155 REJECT 000003 constant fixed bin(17,0) initial dcl 1-55 ref 225 REQUEST_DISCONNECT constant fixed bin(17,0) initial dcl 1-93 ref 224 RESPONSE_DISCONNECT 000001 constant fixed bin(17,0) initial dcl 1-91 set ref 226* STATUS constant fixed bin(17,0) initial dcl 1-86 ref 229 STATUS_REPLY 000000 constant fixed bin(17,0) initial dcl 1-100 set ref 231* SYSTEM_ERROR 000002 constant fixed bin(17,0) initial dcl 1-88 set ref 239* addr builtin function dcl 82 ref 226 226 231 231 byte builtin function dcl 83 ref 225 capability_$pack 000012 constant entry external dcl 51 ref 219 convert builtin function dcl 79 ref 93 data 000137 automatic char(1) unaligned dcl 197 set ref 225* 226 226 data_message 000126 automatic char(32) unaligned dcl 195 set ref 230* 231 231 ecode 000107 automatic fixed bin(35,0) dcl 76 set ref 156* 163 164* 219* 239* header based structure level 2 in structure "more_remaining_message" packed unaligned dcl 3-96 in procedure "rcvdat_" header based structure level 2 in structure "input_message" packed unaligned dcl 3-38 in procedure "rcvdat_" input_message based structure level 1 packed unaligned dcl 3-38 local_cat 2 based structure array level 2 dcl 4-31 major 000103 automatic fixed bin(17,0) dcl 72 in procedure "rcvdat_" set ref 105* 124 124 125* 134* 144 144 148* 164* major 0(09) based char(1) level 3 in structure "input_message" packed unaligned dcl 3-38 in procedure "rcvdat_" ref 105 mcb based structure level 1 unaligned dcl 2-14 mcb_ptr 4 based pointer array level 3 dcl 4-31 ref 144 message_len 000112 automatic fixed bin(17,0) initial dcl 3-33 set ref 93* 93 156* 3-33* message_parser_ 000016 constant entry external dcl 55 ref 156 message_ptr 000114 automatic pointer dcl 3-34 set ref 92* 104 105 106 108 110 114 117 minor 000104 automatic fixed bin(17,0) dcl 73 in procedure "rcvdat_" set ref 106* 107 125* 134* 148* 164* minor 0(18) based char(1) level 3 in structure "input_message" packed unaligned dcl 3-38 in procedure "rcvdat_" ref 106 more_remaining_message based structure level 1 packed unaligned dcl 3-96 mowse_info based structure level 1 dcl 4-31 mowse_info_ptr 36 based pointer level 2 in structure "mcb" dcl 2-14 in procedure "rcvdat_" ref 99 144 mowse_info_ptr 000100 automatic pointer dcl 70 in procedure "rcvdat_" set ref 99* null builtin function dcl 80 ref 144 235 235 239 239 p_code parameter fixed bin(35,0) dcl 187 set ref 175 204 204* 209* 221 226* 231* 235* p_major parameter fixed bin(17,0) dcl 190 set ref 175 204* p_minor parameter fixed bin(17,0) dcl 185 set ref 175 204* 224 229 235 235 p_mowse_mcb_ptr parameter pointer dcl 42 in procedure "rcvdat_" set ref 29 99 125* 134* 144 148* 156* 164* p_mowse_mcb_ptr parameter pointer dcl 186 in procedure "message_error" set ref 175 204* 226* 231* 235* 239* p_msg_len parameter fixed bin(21,0) dcl 44 ref 29 93 p_msg_ptr parameter pointer dcl 43 set ref 29 92 156* p_source_major parameter fixed bin(17,0) dcl 188 set ref 175 204* 214 219* p_source_system parameter fixed bin(17,0) dcl 189 set ref 175 204* 219* p_status parameter fixed bin(35,0) dcl 45 set ref 29 91* 162* p_system parameter fixed bin(17,0) dcl 191 set ref 175 204* rank builtin function dcl 81 ref 104 105 106 108 110 114 117 send_msg_ 000010 constant entry external dcl 49 ref 226 231 235 239 source_major 1 based char(1) level 3 in structure "input_message" packed unaligned dcl 3-38 in procedure "rcvdat_" ref 110 source_major 000106 automatic fixed bin(17,0) dcl 75 in procedure "rcvdat_" set ref 110* 117* 125* 134* 148* 164* source_major 1(09) based char(1) level 3 in structure "more_remaining_message" packed unaligned dcl 3-96 in procedure "rcvdat_" ref 117 source_major_cap 000136 automatic fixed bin(17,0) dcl 196 set ref 219* 226* 231* 235* 239* source_system 000105 automatic fixed bin(17,0) dcl 74 in procedure "rcvdat_" set ref 108* 114* 125* 134* 148* 164* source_system 1 based char(1) level 3 in structure "more_remaining_message" packed unaligned dcl 3-96 in procedure "rcvdat_" ref 114 source_system 0(27) based char(1) level 3 in structure "input_message" packed unaligned dcl 3-38 in procedure "rcvdat_" ref 108 system based char(1) level 3 in structure "input_message" packed unaligned dcl 3-38 in procedure "rcvdat_" ref 104 system 000102 automatic fixed bin(17,0) dcl 71 in procedure "rcvdat_" set ref 104* 125* 133 134* 148* 164* temp_seg_name 000110 automatic char(6) initial unaligned dcl 1-22 set ref 1-22* ws_$put_background_message 000014 constant entry external dcl 53 ref 204 ws_error_$invalid_capability_number 000022 external static fixed bin(35,0) dcl 62 set ref 125* ws_error_$invalid_system_id 000024 external static fixed bin(35,0) dcl 64 set ref 134* ws_error_$no_capability 000020 external static fixed bin(35,0) dcl 60 set ref 148* 204 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 CAPABILITY_NAME_LENGTH internal static fixed bin(17,0) initial dcl 4-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 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 LAST internal static fixed bin(17,0) initial dcl 1-71 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_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 MINIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 1-42 MINIMUM_CAT_ENTRY internal static fixed bin(17,0) initial dcl 4-24 MINIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 1-64 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 REMOTE_SYSTEM internal static fixed bin(17,0) initial dcl 1-31 REQUEST_CONNECT internal static fixed bin(17,0) initial dcl 1-92 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 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_FAILED internal static fixed bin(8,0) initial dcl 1-37 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 1-35 SUSPEND_APPLICATION internal static fixed bin(17,0) initial dcl 1-80 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 3-63 event_message based structure level 1 packed unaligned dcl 3-76 execom_message based structure level 1 packed unaligned dcl 3-49 execom_reply_msg based structure level 1 packed unaligned dcl 3-122 init_mowse_info based structure level 1 unaligned dcl 4-68 init_mowse_info_ptr automatic pointer dcl 4-67 last_message based structure level 1 packed unaligned dcl 3-110 message_node based structure level 1 unaligned dcl 3-136 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 2-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 NAMES DECLARED BY EXPLICIT CONTEXT. message_error 000324 constant entry internal dcl 175 ref 125 134 148 164 rcvdat_ 000047 constant entry external dcl 29 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 730 756 612 740 Length 1240 612 26 246 116 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcvdat_ 166 external procedure is an external procedure. message_error internal procedure shares stack frame of external procedure rcvdat_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcvdat_ 000100 mowse_info_ptr rcvdat_ 000102 system rcvdat_ 000103 major rcvdat_ 000104 minor rcvdat_ 000105 source_system rcvdat_ 000106 source_major rcvdat_ 000107 ecode rcvdat_ 000110 temp_seg_name rcvdat_ 000112 message_len rcvdat_ 000114 message_ptr rcvdat_ 000126 data_message message_error 000136 source_major_cap message_error 000137 data message_error 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. capability_$pack message_parser_ send_msg_ ws_$put_background_message THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. ws_error_$invalid_capability_number ws_error_$invalid_system_id ws_error_$no_capability LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 29 000042 1 22 000054 3 33 000056 3 155 000060 91 000066 92 000070 93 000073 99 000075 104 000101 105 000106 106 000113 107 000120 108 000122 110 000127 112 000134 114 000135 117 000142 124 000147 125 000154 128 000176 133 000177 134 000202 137 000224 144 000225 148 000235 151 000257 156 000260 162 000274 163 000276 164 000300 166 000322 257 000323 175 000324 204 000326 209 000406 214 000410 219 000414 221 000431 224 000435 225 000440 226 000443 228 000472 229 000473 230 000475 231 000500 233 000527 235 000530 239 000563 243 000611 ----------------------------------------------------------- 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