COMPILATION LISTING OF SEGMENT send_outbuff_data_ 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 1505.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-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-11-27,Flegel), approve(87-07-15,MCR7580), 14* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 15* Corrected minor capability number sending for multiple long messages 16* pending when sending the current message. 17* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 18* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 19* Approved. 20* 4) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 21* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 22* Corrected handling of multiple long messages (although these aren't 23* properly supported in MOWSE protocol of long messages). 24* END HISTORY COMMENTS */ 25 26 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 27 send_outbuff_data_: 28 proc (p_mcb_ptr, p_system, p_major, p_minor, p_ecode); 29 30 /* : PROGRAM FUNCTION 31* 32*Sends the contents of the output buffer to an application on the remote 33*machine. Only one packet of data is sent per call to this routine. If the 34*data exceeds the packet size, as much of the data as possible is sent in a 35*SENT_MORE type format 2) message otherwise all the data is sent in a SENT_LAST 36*type (format 1) message. The pointers and fields in the mcb indicating the 37*location of the output buffer and where to sent the next batch of data will be 38*updated. See mowse>mu_side>d>long_message_format for formats. 39**/ 40 41 /* : NOTES 42**/ 43 44 45 /* INPUT PARAMETERS */ 46 dcl p_mcb_ptr ptr parameter; /* mcb contains outbuff info */ 47 dcl p_system fixed bin (17) parameter; /* system to send data to */ 48 dcl p_major fixed bin parameter; /* capability to send data to */ 49 dcl p_minor fixed bin parameter; /* minor of data */ 50 dcl p_ecode fixed bin (35) parameter; /* error code */ 51 52 53 /* MISC VARIABLES */ 54 dcl minor fixed bin; /* Minor cap of message protion */ 55 dcl data_space (p_mcb_ptr -> mcb.outbuff_length) char 56 based (data_ptr); 57 dcl message_data ptr; 58 dcl data_ptr ptr; 59 dcl mowse_info_ptr ptr; /* Pointer to mowse info structure */ 60 dcl system fixed bin; 61 dcl major fixed bin; 62 dcl channel fixed bin; 63 dcl chars_left fixed bin; 64 dcl chars_to_send fixed bin; 65 dcl used_output_buffer_len fixed bin; 66 dcl used_output_buffer char (used_output_buffer_len) based (temp_ptr); 67 dcl temp_ptr ptr; 68 69 70 /* SYSTEM CALL SUPPORT */ 71 dcl ws_error_$invalid_system_id 72 fixed bin (35) ext static; 73 dcl ws_error_$input_buffer_empty 74 fixed bin (35) ext static; 75 dcl ws_error_$invalid_capability_number 76 fixed bin (35) ext static; 77 78 /* EXTERNAL CALLS */ 79 dcl send_mowse_message_ entry (ptr, fixed bin, fixed bin, fixed bin, 80 fixed bin, fixed bin, fixed bin, ptr, 81 fixed bin, fixed bin, fixed bin (35)); 82 dcl get_mowse_info_ptr_ entry (ptr, ptr, fixed bin (35)); 83 dcl capability_$unpack entry (fixed bin, fixed bin, fixed bin, 84 fixed bin (35)); 85 86 /* BUILTINS */ 87 dcl addr builtin; 88 dcl null builtin; 89 dcl rank builtin; 90 91 92 /* */ 93 94 /* INITIALIZATION */ 95 call get_mowse_info_ptr_ (p_mcb_ptr, mowse_info_ptr, p_ecode); 96 if p_ecode ^= 0 then 97 return; 98 99 /* MAIN */ 100 101 channel = BG; 102 if p_major < MINIMUM_CAT_ENTRY | 103 p_major > MAXIMUM_CAT_ENTRY then do; 104 p_ecode = ws_error_$invalid_capability_number; 105 return; 106 end; 107 108 if (p_system = REMOTE_SYSTEM) then 109 if (mowse_info_ptr 110 -> mowse_info.remote_cat (p_major).major_capability = 0) 111 | 112 (p_mcb_ptr = null) then do; 113 p_ecode = ws_error_$invalid_capability_number; 114 return; 115 end; 116 else if (p_system = LOCAL_SYSTEM) then 117 if (mowse_info_ptr 118 -> mowse_info.local_cat (p_major).mcb_ptr 119 ^= p_mcb_ptr) 120 then do; 121 p_ecode = ws_error_$invalid_capability_number; 122 return; 123 end; 124 else do; 125 p_ecode = ws_error_$invalid_system_id; 126 return; 127 end; 128 129 call capability_$unpack (system, major, 130 (p_mcb_ptr -> mcb.major_capability), p_ecode); 131 if p_ecode ^= 0 then 132 return; 133 134 /* : if the list of buffers to be sent is empty then return */ 135 136 if p_mcb_ptr -> mcb.outbuff_list_start = null then do; 137 p_ecode = 0; 138 return; 139 end; 140 141 /* : get total number of characters left in message */ 142 143 chars_left = p_mcb_ptr -> mcb.outbuff_list_start 144 -> output_buffer.buffer_length 145 - p_mcb_ptr -> mcb.outbuff_list_start 146 -> output_buffer.buffer_position; 147 148 /* : if the list is not empty then send a portion of the mesaage 149* which is at most PACKET_SIZE long */ 150 151 if chars_left <= 0 then do; 152 p_ecode = ws_error_$input_buffer_empty; 153 return; 154 end; 155 156 if (chars_left <= (PACKET_SIZE - 6)) then 157 chars_to_send = chars_left; 158 else 159 chars_to_send = PACKET_SIZE - 6; 160 161 /* : Get the data to send */ 162 163 data_ptr 164 = p_mcb_ptr -> mcb.outbuff_list_start -> output_buffer.data; 165 message_data = 166 addr (data_ptr -> data_space 167 (p_mcb_ptr -> mcb.outbuff_list_start 168 -> output_buffer.buffer_position + 1)); 169 170 /* : Figure out if this is the last or there is more in the message and 171* then send it */ 172 173 if chars_to_send < chars_left then 174 minor = CONTINUE; 175 else 176 minor = LAST; 177 178 call send_mowse_message_ (p_mcb_ptr, system, major, 179 rank (p_mcb_ptr -> mcb.outbuff_list_start 180 -> output_buffer.destination_system), 181 rank (p_mcb_ptr -> mcb.outbuff_list_start 182 -> output_buffer.destination_major), 183 rank (p_mcb_ptr -> mcb.outbuff_list_start 184 -> output_buffer.destination_minor), 185 minor, message_data, chars_to_send, channel, p_ecode); 186 if p_ecode ^= 0 then 187 return; 188 189 /* : Adjust the indexes in the outbuff data, there are two different 190* circumstances of update depending on the length of the message that was 191* sent */ 192 193 if chars_to_send < chars_left then do; 194 p_mcb_ptr -> mcb.outbuff_list_start 195 -> output_buffer.buffer_position 196 = 197 p_mcb_ptr -> mcb.outbuff_list_start 198 -> output_buffer.buffer_position 199 + chars_to_send; 200 end; 201 else do; 202 temp_ptr = p_mcb_ptr -> mcb.outbuff_list_start; 203 p_mcb_ptr -> mcb.outbuff_list_start 204 = temp_ptr -> output_buffer.next_buffer; 205 used_output_buffer_len 206 = temp_ptr -> output_buffer.buffer_length; 207 free temp_ptr -> output_buffer.data -> used_output_buffer; 208 free temp_ptr -> output_buffer; 209 temp_ptr = null; 210 end; 211 212 213 214 /* INCLUDE FILES */ 215 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 * * * * * * * * * * * * */ 216 2 1 /* BEGIN INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-07-19,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 MOWSE information to be 2 7* placed into a temp segment. 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* 3) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 2 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 13* Added bit switches to the init_mowse_info structure as well as the force 2 14* flag. 2 15* 4) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 2 16* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 17* Added open_struc for passing EOP and escape char info from attach_mowse 2 18* to mowse_io_. 2 19* END HISTORY COMMENTS */ 2 20 2 21 /* CAT index limits */ 2 22 2 23 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 2 24 dcl MINIMUM_CAT_ENTRY fixed bin int static options (constant) init (33); 2 25 dcl MAXIMUM_CAT_ENTRY fixed bin int static options (constant) init (64); 2 26 2 27 dcl CAPABILITY_NAME_LENGTH fixed bin int static options (constant) init (32); 2 28 2 29 /* Mowse information structure */ 2 30 2 31 dcl 01 mowse_info based aligned, 2 32 02 version char (8), 2 33 02 local_cat dimension (33:64), /* Multics CAT table */ 2 34 03 flags, 2 35 04 reset bit (1) unal, /* Reset in progress */ 2 36 04 suspended bit (1) unal, /* Suspended applciation */ 2 37 04 status bit (1) unal, /* Status pending */ 2 38 04 mbz1 bit (33) unal, 2 39 03 sleep_time fixed bin, /* Time application is sleeping */ 2 40 03 mcb_ptr ptr, /* Capability MCB */ 2 41 02 remote_cat dimension (33:64), /* PC CAT table */ 2 42 03 major_capability 2 43 fixed bin, /* Capability number */ 2 44 03 capability_name char (32), /* Name of capability */ 2 45 03 flags, 2 46 04 reset bit (1) unal, /* Reset in progress */ 2 47 04 suspended bit (1) unal, /* Suspended capability */ 2 48 04 sleep_time bit (1) unal, /* Application sleeping */ 2 49 04 mbz2 bit (33) unal, 2 50 02 message_manager_info, /* Info for processing messages */ 2 51 03 head_list_ptr ptr, /* Head of message list */ 2 52 03 tail_list_ptr ptr, /* Tail of message list */ 2 53 03 pending_messages 2 54 fixed bin, /* Number of pending messages */ 2 55 02 mowse_flags, 2 56 03 trace bit (1) unal, /* Message tracing facility active */ 2 57 03 debug bit (1) unal, /* Debugging packets facility active */ 2 58 03 error_handled bit (1) unal, /* In mowse_error_handler procedure */ 2 59 03 mbz1 bit (33) unal, 2 60 03 trace_file_iocb ptr, /* Trace file iocb */ 2 61 03 debug_file_iocb ptr, /* Debug file iocb */ 2 62 02 init_mowse_info_ptr 2 63 ptr; /* Initialization information */ 2 64 2 65 /* MOWSE initialization information */ 2 66 2 67 dcl init_mowse_info_ptr ptr; 2 68 dcl 01 init_mowse_info based (init_mowse_info_ptr), 2 69 02 version char (8), 2 70 02 flags, /* Bit switches */ 2 71 03 trace_sw bit (1) unal, 2 72 03 debug_sw bit (1) unal, 2 73 03 io_switch_sw bit (1) unal, 2 74 03 force_sw bit (1) unal, 2 75 03 start_up_sw bit (1) unal, 2 76 03 escape_sw bit (1) unal, 2 77 03 network_sw bit (1) unal, 2 78 03 pad bit (29) unal, 2 79 02 escape, 2 80 03 chars (0:255) bit (1) unal, /* Character escapes */ 2 81 03 pad bit (32) unal, 2 82 02 trace char (512) var, /* Trace file name */ 2 83 02 debug char (512) var, /* Debug file name */ 2 84 02 io_switch char (512) var, /* Io switch name of mowse_io_ attachment */ 2 85 02 startup (MAXIMUM_CAT_ENTRY - MINIMUM_CAT_ENTRY + 1) 2 86 char (168) var; /* Capability to be autoloaded */ 2 87 2 88 /* Open description structure (this is padded to character bounds as it 2 89* is a character overlay structure - passed as a character string) */ 2 90 2 91 dcl open_struc_ptr ptr; 2 92 dcl 01 open_struc based (open_struc_ptr), 2 93 02 flags, 2 94 03 network_sw bit (1) unal, 2 95 03 escape_sw bit (1) unal, 2 96 03 pad bit (7) unal, 2 97 02 escape, 2 98 03 switches (0:255) bit (1) unal, 2 99 03 pad bit (32) unal, 2 100 02 mbz bit (16) unal; 2 101 2 102 /* END INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 217 3 1 /* BEGIN INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-05-17,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 the mcb (Mowse Control Block) 3 7* for information on capabilities. 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* END HISTORY COMMENTS */ 3 12 /* MOWSE control block */ 3 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 14 dcl 01 mcb based, 3 15 02 version char (8), 3 16 02 capability_name char (32), /* Name of capability */ 3 17 02 major_capability fixed bin (17), /* Capability number */ 3 18 02 inbuff_length fixed bin (17), /* Length of buffer */ 3 19 02 inbuff_position_index 3 20 fixed bin (17), /* Current position in inbuffer */ 3 21 02 inbuff_data_length 3 22 fixed bin (17), /* Amoiunt of data in inbuffer */ 3 23 02 outbuff_length fixed bin (17), /* Length of outbuffer */ 3 24 02 mbz1 bit (36) unal, 3 25 02 entry_var entry options (variable), /* Message processor entry point of capability */ 3 26 02 data_block_ptr ptr, /* Capability data */ 3 27 02 inbuff ptr, /* Message input buffer */ 3 28 02 outbuff_list_start 3 29 ptr, /* Pointer to outbuffer data */ 3 30 02 outbuff_list_end ptr, /* Last node in outbuffer data */ 3 31 02 iocb_ptr ptr, /* IOCB to mowse_io_ */ 3 32 02 mowse_info_ptr ptr; /* MOWSE information */ 3 33 /* Output buffer linked list node */ 3 34 dcl 01 output_buffer based, 3 35 02 destination_system 3 36 char, /* Destination of message */ 3 37 02 destination_major char, 3 38 02 destination_minor char, 3 39 02 buffer_position fixed bin, /* Position in buffer of message */ 3 40 02 buffer_length fixed bin, /* Length of buffer */ 3 41 02 next_buffer ptr, /* Next buffer of message */ 3 42 02 data ptr; /* Pointer to message */ 3 43 3 44 /* END INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 218 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 * * * * * * * * * * * * */ 219 220 221 /* : END send_outbuff_data_ */ 222 end send_outbuff_data_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/07/87 1454.6 send_outbuff_data_.pl1 >special_ldd>install>MR12.1-1075>send_outbuff_data_.pl1 216 1 08/07/87 1445.8 mowse.incl.pl1 >special_ldd>install>MR12.1-1075>mowse.incl.pl1 217 2 08/07/87 1445.8 mowse_info.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_info.incl.pl1 218 3 08/07/87 1447.6 mowse_mcb.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_mcb.incl.pl1 219 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. BG constant fixed bin(17,0) initial dcl 4-17 ref 101 CONTINUE constant fixed bin(17,0) initial dcl 1-94 ref 173 LAST constant fixed bin(17,0) initial dcl 1-71 ref 175 LOCAL_SYSTEM constant fixed bin(17,0) initial dcl 1-30 ref 116 MAXIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 2-25 ref 102 MINIMUM_CAT_ENTRY constant fixed bin(17,0) initial dcl 2-24 ref 102 PACKET_SIZE constant fixed bin(17,0) initial dcl 1-48 ref 156 158 4-155 REMOTE_SYSTEM constant fixed bin(17,0) initial dcl 1-31 ref 108 addr builtin function dcl 87 ref 165 buffer_length 2 based fixed bin(17,0) level 2 dcl 3-34 ref 143 205 buffer_position 1 based fixed bin(17,0) level 2 dcl 3-34 set ref 143 165 194* 194 capability_$unpack 000022 constant entry external dcl 83 ref 129 channel 000112 automatic fixed bin(17,0) dcl 62 set ref 101* 178* chars_left 000113 automatic fixed bin(17,0) dcl 63 set ref 143* 151 156 156 173 193 chars_to_send 000114 automatic fixed bin(17,0) dcl 64 set ref 156* 158* 173 178* 193 194 data 6 based pointer level 2 dcl 3-34 ref 163 207 data_ptr 000104 automatic pointer dcl 58 set ref 163* 165 data_space based char(1) array unaligned dcl 55 set ref 165 destination_major 0(09) based char(1) level 2 packed unaligned dcl 3-34 ref 178 178 destination_minor 0(18) based char(1) level 2 packed unaligned dcl 3-34 ref 178 178 destination_system based char(1) level 2 packed unaligned dcl 3-34 ref 178 178 get_mowse_info_ptr_ 000020 constant entry external dcl 82 ref 95 local_cat 2 based structure array level 2 dcl 2-31 major 000111 automatic fixed bin(17,0) dcl 61 set ref 129* 178* major_capability 12 based fixed bin(17,0) level 2 in structure "mcb" dcl 3-14 in procedure "send_outbuff_data_" ref 129 major_capability 202 based fixed bin(17,0) array level 3 in structure "mowse_info" dcl 2-31 in procedure "send_outbuff_data_" ref 108 mcb based structure level 1 unaligned dcl 3-14 mcb_ptr 4 based pointer array level 3 dcl 2-31 ref 116 message_data 000102 automatic pointer dcl 57 set ref 165* 178* message_len 000122 automatic fixed bin(17,0) initial dcl 4-33 set ref 4-33* minor 000100 automatic fixed bin(17,0) dcl 54 set ref 173* 175* 178* mowse_info based structure level 1 dcl 2-31 mowse_info_ptr 000106 automatic pointer dcl 59 set ref 95* 108 116 next_buffer 4 based pointer level 2 dcl 3-34 ref 203 null builtin function dcl 88 ref 108 136 209 outbuff_list_start 30 based pointer level 2 dcl 3-14 set ref 136 143 143 163 165 178 178 178 178 178 178 194 194 202 203* output_buffer based structure level 1 unaligned dcl 3-34 set ref 208 p_ecode parameter fixed bin(35,0) dcl 50 set ref 27 95* 96 104* 113* 121* 125* 129* 131 137* 152* 178* 186 p_major parameter fixed bin(17,0) dcl 48 ref 27 102 102 108 116 p_mcb_ptr parameter pointer dcl 46 set ref 27 95* 108 116 129 136 143 143 163 165 178* 178 178 178 178 178 178 194 194 202 203 p_minor parameter fixed bin(17,0) dcl 49 ref 27 p_system parameter fixed bin(17,0) dcl 47 ref 27 108 116 rank builtin function dcl 89 ref 178 178 178 178 178 178 remote_cat 202 based structure array level 2 dcl 2-31 send_mowse_message_ 000016 constant entry external dcl 79 ref 178 system 000110 automatic fixed bin(17,0) dcl 60 set ref 129* 178* temp_ptr 000116 automatic pointer dcl 67 set ref 202* 203 205 207 208 209* temp_seg_name 000120 automatic char(6) initial unaligned dcl 1-22 set ref 1-22* used_output_buffer based char unaligned dcl 66 ref 207 used_output_buffer_len 000115 automatic fixed bin(17,0) dcl 65 set ref 205* 207 207 ws_error_$input_buffer_empty 000012 external static fixed bin(35,0) dcl 73 ref 152 ws_error_$invalid_capability_number 000014 external static fixed bin(35,0) dcl 75 ref 104 113 121 ws_error_$invalid_system_id 000010 external static fixed bin(35,0) dcl 71 ref 125 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 2-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 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 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_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 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 2-68 init_mowse_info_ptr automatic pointer dcl 2-67 input_message based structure level 1 packed unaligned dcl 4-38 last_message based structure level 1 packed unaligned dcl 4-110 message_node based structure level 1 unaligned dcl 4-136 message_ptr automatic pointer dcl 4-34 more_remaining_message based structure level 1 packed unaligned dcl 4-96 msg_node_ptr automatic pointer dcl 4-135 open_struc based structure level 1 packed unaligned dcl 2-92 open_struc_ptr automatic pointer dcl 2-91 part_msg based char unaligned dcl 4-152 part_msg_length automatic fixed bin(17,0) dcl 4-151 part_msg_ptr automatic pointer dcl 4-144 partial_message based structure level 1 unaligned dcl 4-145 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. send_outbuff_data_ 000015 constant entry external dcl 27 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 436 462 322 446 Length 750 322 24 252 113 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME send_outbuff_data_ 132 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME send_outbuff_data_ 000100 minor send_outbuff_data_ 000102 message_data send_outbuff_data_ 000104 data_ptr send_outbuff_data_ 000106 mowse_info_ptr send_outbuff_data_ 000110 system send_outbuff_data_ 000111 major send_outbuff_data_ 000112 channel send_outbuff_data_ 000113 chars_left send_outbuff_data_ 000114 chars_to_send send_outbuff_data_ 000115 used_output_buffer_len send_outbuff_data_ 000116 temp_ptr send_outbuff_data_ 000120 temp_seg_name send_outbuff_data_ 000122 message_len send_outbuff_data_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac alloc_auto_adj ext_entry op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. capability_$unpack get_mowse_info_ptr_ send_mowse_message_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. ws_error_$input_buffer_empty ws_error_$invalid_capability_number ws_error_$invalid_system_id LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000010 1 22 000022 4 33 000024 4 155 000026 95 000034 96 000047 101 000052 102 000054 104 000061 105 000064 108 000065 113 000101 114 000104 116 000105 121 000116 122 000121 125 000122 126 000125 129 000126 131 000147 136 000152 137 000160 138 000161 143 000162 151 000166 152 000167 153 000172 156 000173 158 000201 163 000203 165 000205 173 000211 175 000216 178 000220 186 000266 193 000271 194 000274 200 000300 202 000301 203 000305 205 000307 207 000311 208 000315 209 000317 222 000321 ----------------------------------------------------------- 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