COMPILATION LISTING OF SEGMENT ws_packet_dispatcher_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/24/89 0850.4 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1987 * 6* * * 7* *********************************************************** */ 8 9 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 10 ws_packet_dispatcher_: 11 proc (p_mio_data_ptr); 12 13 14 /* PROGRAM FUNCTION 15* 16*This procedure is respoinsible for dispatching background packets to MOWSE 17*itself. It actually works with packets and lets MOWSE do all of the assembly 18*of packets into complete messages and also lets MOWSE dispatch the message to 19*the appropriate background handler. 20**/ 21 22 23 /* NOTES 24* 25*This procedure is to be called ONLY when the background processing flags have 26*been set - ie. there are no other invocations of ws_packet_dispatcher_ 27*executing. 28**/ 29 30 /****^ HISTORY COMMENTS: 31* 1) change(87-04-16,Flegel), approve(87-06-23,MCR7649), 32* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 33* Created. 34* END HISTORY COMMENTS */ 35 36 /* INPUT PARAMETERS */ 37 dcl p_mio_data_ptr ptr parameter; /* MOWSE data */ 38 39 /* OUTPUT PARAMETERS */ 40 dcl p_code fixed bin (35) parameter; 41 42 /* MISC VARIABLES */ 43 dcl buffer char (data_len) based (data_ptr); 44 dcl data_ptr ptr; 45 dcl code fixed bin (35); 46 dcl data (MaxDatLen) char (1); /* Data */ 47 dcl data_len fixed bin (21); /* Data length */ 48 dcl mio_data_ptr ptr int static; /* Local copy of mowse_io_data_ptr */ 49 50 /* STRUCTURES */ 51 dcl 01 mio_data like mowse_io_data based (mio_data_ptr); 52 dcl 01 fatal_error_info aligned, 53 02 version fixed bin, 54 02 status_code fixed bin (35); 55 56 /* SYSTEM CALLS */ 57 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 58 dcl ipc_$create_event_channel entry (ptr, fixed bin (71), fixed bin (35)); 59 60 /* SYSTEM CALL SUPPORT */ 61 dcl error_table_$no_table fixed bin (35) ext static; 62 63 /* EXTERNAL CALLS */ 64 dcl ws_tools_$getldat entry (ptr, fixed bin, ptr) returns (fixed bin (21)); 65 dcl ws_tools_$getdat entry (ptr, fixed bin, ptr, fixed bin) returns (fixed bin); 66 dcl terminate_process_ entry (char (*), ptr); 67 dcl ws_packet_transmitter_$supervisory entry (ptr, char (1)); 68 dcl rcvdat_ entry (ptr, ptr, fixed bin (21), fixed bin (35)); 69 dcl ws_debug_$line entry () options (variable); 70 dcl wake_up_sleeper_ entry (ptr, fixed bin); 71 72 /* EXTERNAL CALL SUPPORT */ 73 74 /* BUILTINS */ 75 dcl divide builtin; 76 dcl byte builtin; 77 dcl null builtin; 78 dcl addr builtin; 79 dcl clock builtin; 80 81 /* CONDITIONS */ 82 dcl cleanup condition; 83 dcl mowse_io_error condition; 84 85 /* CONSTANTS */ 86 87 /* */ 88 89 /* INITIALIZATION */ 90 91 /* MAIN */ 92 93 return; 94 95 /* */ 96 97 98 99 /* INTERNAL ENTRIES */ 100 101 102 /* *** Entry: initialize - Internal entry for ws_packet_dispatcher_ *** */ 103 104 initialize: 105 entry (p_mio_data_ptr, p_code); 106 107 108 /* ENTRY FUNCTION 109* 110*Initialize the packet dispatcher. 111**/ 112 113 /* NOTES 114**/ 115 116 mio_data_ptr = p_mio_data_ptr; 117 118 call setup_channel (p_code); 119 120 return; 121 122 /* */ 123 124 /* *** Entry: processor - Internal entry for ws_packet_dispatcher_ *** */ 125 126 processor: 127 entry (); 128 129 130 /* ENTRY FUNCTION 131* 132*This is the main entry into the dispatcher. Entry is through an event 133*signalled on a call event channel. 134**/ 135 136 /* NOTES 137**/ 138 139 /* If already processing, then quit */ 140 141 if mio_data.task.active (BG_task) then 142 return; 143 144 mio_data.task.active (BG_task) = ^Idle; 145 on cleanup mio_data.task.active (BG_task) = Idle; 146 147 /* Process sleepers */ 148 149 if mio_data.sleepers ^= null then do; 150 if mio_data.info_ptr = null then 151 goto NULL_MOWSE_TABLES; 152 call wakeup (); 153 end; 154 155 /* Process each pending packet from the local system until all of the 156* messages currently pending are processed, leaving any new messages 157* for the next scheduler interrupt */ 158 159 data_len = ws_tools_$getldat (mio_data_ptr, BG, data_ptr); 160 do while (data_len > 0); 161 if mio_data.info_ptr = null then 162 goto NULL_MOWSE_TABLES; 163 164 call ws_debug_$line (mio_data.debug_iocb_ptr, 165 " ****** START LOCAL MESSAGE ******"); 166 167 call rcvdat_ (mio_data.mcb_ptr, data_ptr, data_len, code); 168 free data_ptr -> buffer; 169 170 call ws_debug_$line (mio_data.debug_iocb_ptr, 171 " ****** DONE LOCAL MESSAGE ******"); 172 173 if code ^= 0 then do; 174 signal mowse_io_error; 175 mio_data.task.active (BG_task) = Idle; 176 return; 177 end; 178 179 data_len = ws_tools_$getldat (mio_data_ptr, BG, data_ptr); 180 end; 181 182 /* Process each pending packet from the remote system */ 183 184 data_len = ws_tools_$getdat (mio_data_ptr, BG, addr (data), MaxDatLen); 185 do while (data_len > 0); 186 if mio_data.info_ptr = null then 187 goto NULL_MOWSE_TABLES; 188 189 call ws_debug_$line (mio_data.debug_iocb_ptr, 190 "****** START REMOTE MESSAGE ******"); 191 call rcvdat_ (mio_data.mcb_ptr, addr (data), data_len, code); 192 call ws_debug_$line (mio_data.debug_iocb_ptr, 193 "****** DONE REMOTE MESSAGE ******"); 194 if code ^= 0 then do; 195 signal mowse_io_error; 196 mio_data.task.active (BG_task) = Idle; 197 return; 198 end; 199 200 data_len = ws_tools_$getdat (mio_data_ptr, BG, addr (data), 201 MaxDatLen); 202 end; 203 204 mio_data.task.active (BG_task) = Idle; 205 return; 206 207 /* If mowse_info has become null then MOWSE data base is screwed up 208* and there is a real problem with MOWSE, so tell the PC to disconnect 209* and signal FATAL PROCESS ERROR */ 210 211 NULL_MOWSE_TABLES: 212 mio_data.task.active (BG_task) = Idle; 213 call ws_packet_transmitter_$supervisory (mio_data_ptr, 214 byte (FastDis)); 215 216 fatal_error_info.version = 0; 217 fatal_error_info.status_code = error_table_$no_table; 218 call terminate_process_ ("fatal_error", addr (fatal_error_info)); 219 220 return; 221 222 /* */ 223 224 /* *** Entry: terminate - Internal entry for ws_packet_dispatcher_ *** */ 225 226 terminate: 227 entry (); 228 229 230 /* ENTRY FUNCTION 231* 232*Shutdown all stuff associated with the dispatchig process. 233**/ 234 235 /* NOTES 236**/ 237 238 if mio_data.channel_info.packet_dispatcher.async_channel ^= 0 then 239 call ipc_$delete_ev_chn ( 240 mio_data.channel_info.packet_dispatcher.async_channel, 241 (0)); 242 243 if mio_data.channel_info.packet_dispatcher.sync_channel ^= 0 then 244 call ipc_$delete_ev_chn ( 245 mio_data.channel_info.packet_dispatcher.sync_channel, (0)); 246 247 mio_data_ptr = null; 248 return; 249 250 /* */ 251 252 253 254 /* INTERNAL PROCEDURES */ 255 256 257 /* *** Procedure: setup_channel - Internal proc for ws_packet_dispatcher_ *** */ 258 259 setup_channel: 260 proc (p_code); 261 262 263 /* PROCEDURE FUNCTION 264* 265*Setup a call channel where events are to be generated when there is something 266*to do. 267**/ 268 269 /* NOTES 270**/ 271 272 /* INPUT PARAMETERS */ 273 274 /* OUTPUT PARAMETERS */ 275 dcl p_code fixed bin (35) parameter; 276 277 /* MISC VARIABLES */ 278 279 /* STRUCTURES */ 280 dcl 01 ipc_arg like ipc_create_arg_structure aligned automatic; 281 282 /* INITIALIZATION */ 283 mio_data.channel_info.packet_dispatcher.async_channel = 0; 284 mio_data.channel_info.packet_dispatcher.sync_channel = 0; 285 286 /* MAIN */ 287 ipc_arg.version = ipc_create_arg_structure_v1; 288 ipc_arg.channel_type = CALL_EVENT_CHANNEL_TYPE; 289 ipc_arg.call_entry = processor; 290 ipc_arg.call_data_ptr = null; 291 ipc_arg.call_priority = 0; 292 call ipc_$create_event_channel (addr (ipc_arg), 293 mio_data.packet_dispatcher.async_channel, p_code); 294 295 ipc_arg.version = ipc_create_arg_structure_v1; 296 ipc_arg.channel_type = ASYNC_CALL_EVENT_CHANNEL_TYPE; 297 ipc_arg.call_entry = processor; 298 ipc_arg.call_data_ptr = null; 299 ipc_arg.call_priority = 0; 300 call ipc_$create_event_channel (addr (ipc_arg), 301 mio_data.packet_dispatcher.sync_channel, p_code); 302 303 end setup_channel; 304 305 /* */ 306 307 /* *** Procedure: wakeup - Internal proc for ws_packet_dispatcher_ *** */ 308 309 wakeup: 310 proc (); 311 312 313 /* PROCEDURE FUNCTION 314* 315*Look through the list of currently sleeping applications and generate a call 316*to wak_up_sleeper_ if an appllication is to be awoken. 317**/ 318 319 /* NOTES 320**/ 321 322 /* INPUT PARAMETERS */ 323 324 /* OUTPUT PARAMETERS */ 325 326 /* MISC VARIABLES */ 327 dcl temp_ptr ptr; /* Search reference ptr */ 328 dcl current_time fixed bin (71); 329 330 /* STRUCTURES */ 331 dcl 01 node like mowse_io_sleep_node based; 332 333 /* INITIALIZATION */ 334 current_time = divide (clock, 1000000, 0); 335 336 /* MAIN */ 337 338 /* If none sleeping then return */ 339 340 if mio_data.sleepers = null then 341 return; 342 343 /* Wake up each of the sleepers who are to be awoken and remove the node 344* from the list */ 345 346 do while (mio_data.sleepers -> node.when <= current_time); 347 temp_ptr = mio_data.sleepers; 348 mio_data.sleepers = mio_data.sleepers -> node.next; 349 if mio_data.sleepers ^= null then 350 mio_data.sleepers -> node.last = null; 351 352 call ws_debug_$line (mio_data.debug_iocb_ptr, 353 " ****** START WAKEUP ******"); 354 call wake_up_sleeper_ (mio_data.mcb_ptr, temp_ptr -> node.major); 355 call ws_debug_$line (mio_data.debug_iocb_ptr, 356 " ****** DONE WAKEUP *******"); 357 358 free temp_ptr -> node; 359 temp_ptr = null; 360 if mio_data.sleepers = null then 361 return; 362 end; 363 364 end wakeup; 365 366 /* */ 367 368 369 370 /* INCLUDE FILES */ 1 1 /*----------BEGIN ipc_create_arg.incl.pl1------------------------------------*/ 1 2 1 3 /* 1 4* This include file declares the structure which is the input argument to 1 5* ipc_$create_event_channel. 1 6**/ 1 7 1 8 /****^ HISTORY COMMENTS: 1 9* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7479), 1 10* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 1 11* New include file added to support async event channels. 1 12* END HISTORY COMMENTS */ 1 13 1 14 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 1 15 1 16 dcl ipc_create_arg_structure_ptr ptr; 1 17 dcl ipc_create_arg_structure_v1 char (8) internal static options (constant) init ("ipcarg01"); 1 18 1 19 dcl 1 ipc_create_arg_structure aligned based (ipc_create_arg_structure_ptr), 1 20 2 version char (8) unaligned, /* From above. */ 1 21 2 channel_type fixed bin, /* See constants below. */ 1 22 2 call_entry variable entry (ptr), /* For event call channels -- who to call. */ 1 23 2 call_data_ptr ptr, /* For event call channels -- something to tell them. */ 1 24 2 call_priority fixed bin (17); /* For event call channels -- who's first? */ 1 25 1 26 /* Constants for the event channel type. */ 1 27 1 28 dcl FAST_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (1); 1 29 dcl WAIT_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (2); 1 30 dcl CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (3); 1 31 dcl ASYNC_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (4); 1 32 1 33 dcl ANY_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (10); 1 34 1 35 /*----------END ipc_create_arg.incl.pl1--------------------------------------*/ 371 2 1 /* BEGIN INCLUDE FILE: mowse_io_structures.incl.pl1 * * * * * * * * * * * * */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-11-11,Flegel), approve(87-07-15,MCR7580), 2 6* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 7* Created from portion of mowse_io_data.incl.pl1 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 2 13 /* : Structure for local data linked list queue */ 2 14 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 2 15 dcl 01 local_data_node based, 2 16 02 data_ptr ptr, /* Local data */ 2 17 02 data_len fixed bin (21), /* Amount of data */ 2 18 02 next ptr; /* Next in line */ 2 19 2 20 /* : Structure for link list of sleeping applications */ 2 21 dcl 01 mowse_io_sleep_node based, 2 22 02 major fixed bin, /* Capability index of sleeper */ 2 23 02 mbz bit (36), 2 24 02 when fixed bin (71), /* Multics wakeup time */ 2 25 02 next ptr, /* Next node in list */ 2 26 02 last ptr; /* Last node in list */ 2 27 2 28 /* END INCLUDE FILE: mowse_io_structures.incl.pl1 * * * * * * * * * * * * */ 372 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 * * * * * * * * * * * * */ 373 4 1 /* BEGIN INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-11-06,Flegel), approve(87-07-15,MCR7580), 4 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 6* Created. 4 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 4 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 9* Approved. 4 10* END HISTORY COMMENTS */ 4 11 4 12 /* Protocol constants */ 4 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 14 dcl INIT_CRC fixed bin int static options (constant) init (63); 4 15 dcl CONVERT_CRC fixed bin int static options (constant) init (32); 4 16 dcl REVPOLY fixed bin int static options (constant) init (101001b); /* Bit N is coeff of x**(5-N) of generator */ 4 17 dcl OR bit (4) int static options (constant) init ("0111"b); 4 18 dcl XOR bit (4) int static options (constant) init ("0110"b); 4 19 dcl And bit (4) int static options (constant) init ("0001"b); 4 20 4 21 /* Debugging Switches */ 4 22 dcl DBGPKTS bit (1) int static options (constant) init ("0"b); 4 23 /* show packets */ 4 24 dcl DBGREJS bit (1) int static options (constant) init ("1"b); 4 25 /* diagnose rejects */ 4 26 dcl DBGXCHRS bit (1) int static options (constant) init ("0"b); 4 27 /* show extraneous received chars */ 4 28 4 29 /* ASCII Control Characters */ 4 30 4 31 dcl CR char (1) int static options (constant) 4 32 init (" "); 4 33 dcl ESC char (1) int static options (constant) 4 34 init (""); 4 35 dcl LF char (1) int static options (constant) 4 36 init (" 4 37 "); 4 38 dcl SI char (1) int static options (constant) 4 39 init (""); 4 40 dcl SO char (1) int static options (constant) 4 41 init (""); 4 42 dcl SOH char (1) int static options (constant) 4 43 init (""); 4 44 4 45 /* Protocol Bit-field Constants */ 4 46 dcl ChnCnt fixed bin int static options (constant) init (2); 4 47 /* no. logical channels */ 4 48 dcl SeqFld fixed bin int static options (constant) init (2); 4 49 /* no. bits in seq. field */ 4 50 dcl SeqCnt fixed bin int static options (constant) init (4); 4 51 /* 2**SeqFld */ 4 52 dcl SeqMsk fixed bin int static options (constant) init (3); 4 53 /* SeqCnt-1 */ 4 54 4 55 /* Protocol Byte-field Constants */ 4 56 dcl MaxDatLen fixed bin int static options (constant) init (124); 4 57 /* Maximum packet length */ 4 58 dcl SOPLen fixed bin int static options (constant) init (1); 4 59 /* Characters in SOP field */ 4 60 dcl TypLen fixed bin int static options (constant) init (1); 4 61 /* Characters in type field */ 4 62 dcl ChkLen fixed bin int static options (constant) init (1); 4 63 /* Characters in check field */ 4 64 dcl LenLen fixed bin int static options (constant) init (1); 4 65 /* Characters in length field */ 4 66 dcl EOPLen fixed bin int static options (constant) init (1); 4 67 /* Characters in EOP field */ 4 68 dcl MinPktLen fixed bin int static options (constant) init (5); 4 69 /* SOPLen+TypLen+LenLen+ChkLen+EOPLen */ 4 70 dcl MaxPktLen fixed bin int static options (constant) init (129); 4 71 /* MinPktLen+MaxDatLen */ 4 72 4 73 /* Protocol Packet Type Constants */ 4 74 dcl RstOff fixed bin (8) int static options (constant) 4 75 init (32); /* */ 4 76 dcl Request fixed bin (8) int static options (constant) 4 77 init (0); 4 78 dcl Confirm fixed bin (8) int static options (constant) 4 79 init (1); 4 80 dcl RstCnt fixed bin (8) int static options (constant) 4 81 init (2); /* Confirm+1 */ 4 82 dcl FGBrk fixed bin (8) int static options (constant) 4 83 init (36); /* BrkOff+2*FG*/ 4 84 dcl DisCon fixed bin (8) int static options (constant) 4 85 init (34); /* BrkOff+2*BG */ 4 86 dcl FastDis fixed bin (8) int static options (constant) 4 87 init (86); /* NakOff+NakCnt */ 4 88 dcl BrkOff fixed bin (8) int static options (constant) 4 89 init (34); /* RstOff+RstCnt */ 4 90 dcl BrkCnt fixed bin (8) int static options (constant) 4 91 init (4); /* ChnCnt*(Confirm+1) */ 4 92 dcl DatOff fixed bin (8) int static options (constant) 4 93 init (38); /* BrkOff+BrkCnt */ 4 94 dcl DatCnt fixed bin (8) int static options (constant) 4 95 init (32); /* ChnCnt*SeqCnt*SeqCnt */ 4 96 dcl AckOff fixed bin (8) int static options (constant) 4 97 init (70); /* DatOff+DatCnt */ 4 98 dcl AckCnt fixed bin (8) int static options (constant) 4 99 init (8); /* ChnCnt*SeqCnt */ 4 100 dcl NakOff fixed bin (8) int static options (constant) 4 101 init (78); /* AckOff+AckCnt */ 4 102 dcl NakCnt fixed bin (8) int static options (constant) 4 103 init (8); /* ChnCnt*SeqCnt */ 4 104 4 105 /* Protocol Parameters */ 4 106 dcl RQS fixed bin int static options (constant) init (2); 4 107 /* rcvchr's queue size (upper bound of r_pkt) */ 4 108 dcl RWS fixed bin int static options (constant) init (3); 4 109 /* Receiver's window size (upper bound of r_dat */ 4 110 dcl SWS fixed bin int static options (constant) init (3); 4 111 /* Sender's window size (upper bound of s_dat */ 4 112 dcl Lim_r_timer fixed bin int static options (constant) init (7); 4 113 /* Limit for r_timer */ 4 114 dcl Lim_s_timer fixed bin int static options (constant) init (15); 4 115 /* Limit for s_timer */ 4 116 dcl Lim_p_timer fixed bin int static options (constant) init (30); 4 117 /* Limit for pending_timer */ 4 118 dcl Timer_Interval fixed bin (71) int static options (constant) 4 119 init (125000); /* Next wakeup of timer */ 4 120 4 121 /* Tasking priority values */ 4 122 dcl Modem_Reader_Task fixed bin int static options (constant) init (0); 4 123 /* Modem Reader */ 4 124 dcl FG_task fixed bin int static options (constant) init (1); 4 125 /* FG processing */ 4 126 dcl BG_task fixed bin int static options (constant) init (2); 4 127 /* BG processing */ 4 128 dcl Idle bit (1) int static options (constant) init ("0"b); 4 129 /* Task not executing */ 4 130 4 131 /* Capability constants */ 4 132 dcl NO_MINOR fixed bin int static options (constant) init (-1); 4 133 4 134 /* WSTERM modes string indices */ 4 135 4 136 dcl WST_INIT_PL fixed bin int static options (constant) init (23); 4 137 dcl WST_INIT_LL fixed bin int static options (constant) init (79); 4 138 4 139 dcl WST_HEADER_1 fixed bin int static options (constant) init (1); 4 140 dcl WST_HEADER_2 fixed bin int static options (constant) init (2); 4 141 dcl WST_HEADER_3 fixed bin int static options (constant) init (3); 4 142 dcl WST_LENGTH_HIGH fixed bin int static options (constant) init (4); 4 143 dcl WST_LENGTH_LOW fixed bin int static options (constant) init (5); 4 144 dcl WST_MODES fixed bin int static options (constant) init (6); 4 145 dcl WST_KILL fixed bin int static options (constant) init (7); 4 146 dcl WST_ERASE fixed bin int static options (constant) init (8); 4 147 dcl WST_ESCAPE fixed bin int static options (constant) init (9); 4 148 dcl WST_LINE_LENGTH fixed bin int static options (constant) init (10); 4 149 dcl WST_PAGE_LENGTH fixed bin int static options (constant) init (11); 4 150 4 151 /* END INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 374 5 1 /* BEGIN INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(86-09-17,Flegel), approve(86-12-16,MCR7580), 5 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 6* Created. 5 7* 2) change(86-10-03,Flegel), approve(86-12-16,MCR7580), 5 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 9* Combined mowse_minor_caps.incl.pl1 and 5 10* mowse.incl.pl1 so that programmer only needs include mowse.incl.pl1 5 11* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 5 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 13* Approved. 5 14* 4) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 5 15* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 5 16* Changes to support async call channels. 5 17* END HISTORY COMMENTS */ 5 18 5 19 /* Name of MOWSE temp seg for data */ 5 20 5 21 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 5 22 dcl temp_seg_name char (6) init ("MOWSE_"); 5 23 5 24 /* Version number */ 5 25 5 26 dcl MOWSE_VERSION_ char (8) int static options (constant) init ("version1"); 5 27 5 28 /* System identification */ 5 29 5 30 dcl LOCAL_SYSTEM fixed bin int static options (constant) init (32); 5 31 dcl REMOTE_SYSTEM fixed bin int static options (constant) init (33); 5 32 5 33 /* Status request return codes */ 5 34 5 35 dcl STATUS_SUCCESS fixed bin (8) int static options (constant) 5 36 init (32); 5 37 dcl STATUS_FAILED fixed bin (8) int static options (constant) 5 38 init (33); 5 39 5 40 /* Input/output capability buffer size limits */ 5 41 5 42 dcl MINIMUM_BUFFER_SIZE fixed bin int static options (constant) init (128); 5 43 dcl MAXIMUM_BUFFER_SIZE fixed bin int static options (constant) init (65536); 5 44 dcl MAXIMUM_BG_SIZE fixed bin int static options (constant) init (512); 5 45 5 46 /* Packet size (communication) constants */ 5 47 5 48 dcl PACKET_SIZE fixed bin int static options (constant) init (124); 5 49 dcl MAXIMUM_PACKET_SIZE fixed bin int static options (constant) init (118); 5 50 5 51 /* Query message constants */ 5 52 5 53 dcl SEND_QUERY fixed bin int static options (constant) init (128); 5 54 dcl ACCEPT fixed bin int static options (constant) init (32); 5 55 dcl REJECT fixed bin int static options (constant) init (33); 5 56 5 57 /* Trace information constants */ 5 58 5 59 dcl RECEIVE fixed bin int static options (constant) init (1); 5 60 dcl SEND fixed bin int static options (constant) init (0); 5 61 5 62 /* Limits on dedicated minor capabilities */ 5 63 5 64 dcl MINIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (32); 5 65 dcl MAXIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (63); 5 66 dcl MINIMUM_USER_MINOR fixed bin int static options (constant) init (64); 5 67 dcl MAXIMUM_USER_MINOR fixed bin int static options (constant) init (127); 5 68 5 69 /* Dedicated Minor Capabilities */ 5 70 5 71 dcl LAST fixed bin int static options (constant) init (0); 5 72 dcl EXECUTE_COMMAND_REPLY fixed bin int static options (constant) init (32); 5 73 dcl EXECUTE_CAPABILITY_REPLY 5 74 fixed bin int static options (constant) init (33); 5 75 dcl FAIL_CAPABILITY fixed bin int static options (constant) init (33); 5 76 dcl INTERNAL fixed bin int static options (constant) init (32); 5 77 dcl EXECUTE_COMMAND fixed bin int static options (constant) init (34); 5 78 dcl ADD_TO_REMOTE_CAT fixed bin int static options (constant) init (35); 5 79 dcl DELETE_FROM_REMOTE_CAT fixed bin int static options (constant) init (36); 5 80 dcl SUSPEND_APPLICATION fixed bin int static options (constant) init (37); 5 81 dcl RESUME_APPLICATION fixed bin int static options (constant) init (38); 5 82 dcl TERMINATE_APPLICATION fixed bin int static options (constant) init (39); 5 83 dcl RESET_APPLICATION fixed bin int static options (constant) init (40); 5 84 dcl RESET_REPLY fixed bin int static options (constant) init (41); 5 85 dcl WAKE_UP fixed bin int static options (constant) init (42); 5 86 dcl STATUS fixed bin int static options (constant) init (43); 5 87 dcl OVERFLOWED_BUFFER fixed bin int static options (constant) init (44); 5 88 dcl SYSTEM_ERROR fixed bin int static options (constant) init (45); 5 89 dcl QUERY_REPLY fixed bin int static options (constant) init (46); 5 90 dcl RESPONSE_CONNECT fixed bin int static options (constant) init (47); 5 91 dcl RESPONSE_DISCONNECT fixed bin int static options (constant) init (48); 5 92 dcl REQUEST_CONNECT fixed bin int static options (constant) init (49); 5 93 dcl REQUEST_DISCONNECT fixed bin int static options (constant) init (50); 5 94 dcl CONTINUE fixed bin int static options (constant) init (51); 5 95 dcl MORE fixed bin int static options (constant) init (52); 5 96 dcl SET_SLEEP_FLAG fixed bin int static options (constant) init (53); 5 97 dcl RESET_SLEEP_FLAG fixed bin int static options (constant) init (54); 5 98 dcl SET_SUSPEND fixed bin int static options (constant) init (55); 5 99 dcl RESET_SUSPEND fixed bin int static options (constant) init (56); 5 100 dcl STATUS_REPLY fixed bin int static options (constant) init (57); 5 101 5 102 /* Foreground */ 5 103 5 104 dcl FG_CONTROL_MESSAGE fixed bin int static options (constant) init (33); 5 105 dcl FG_BREAK fixed bin int static options (constant) init (34); 5 106 dcl FG_TERMINAL_DATA fixed bin int static options (constant) init (35); 5 107 dcl FG_MORE_DATA fixed bin int static options (constant) init (36); 5 108 dcl PUT_TO_BACKGROUND_BUFFER 5 109 fixed bin int static options (constant) init (37); 5 110 dcl PUT_TO_QUERY_MESSAGE_BUFFER 5 111 fixed bin int static options (constant) init (38); 5 112 5 113 /* END INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 375 6 1 /* BEGIN INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(87-04-16,Flegel), approve(87-07-15,MCR7580), 6 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 6 6* Created. 6 7* 2) change(87-06-23,Flegel), approve(87-06-23,MCR7649), 6 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 6 9* Converted to support the use of event channels. 6 10* 3) change(88-10-06,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 6 11* install(89-01-24,MR12.3-1012): 6 12* phx21215 - Added mowse_io_data.channel_info.foreground to use to generate 6 13* events when something happens in the foreground. 6 14* END HISTORY COMMENTS */ 6 15 6 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 6 17 dcl mowse_io_data_ptr ptr; 6 18 dcl 01 mowse_io_data based (mowse_io_data_ptr), 6 19 02 open_descrip char (19) var, 6 20 02 iocb_ptr ptr aligned, /* mowse_tty iocb pointer */ 6 21 02 default_iocb_ptr ptr aligned, /* mowse_i/o iocb pointer */ 6 22 02 attach_descrip char (256) var, /* Attach description */ 6 23 02 old_modes char (256) unal, /* Modes on previous iocb */ 6 24 6 25 02 current_modes char (256) unal, /* Current mode settings */ 6 26 02 WSTERM_modes (11) char (1), /* Encoded modes for WSTERM */ 6 27 02 cv_trans_struc_ptr ptr, /* Conversion table pointer */ 6 28 6 29 02 info_ptr ptr, /* Application control info seg */ 6 30 02 mcb_ptr ptr, /* Internal MCB to MOWSE */ 6 31 02 sleepers ptr, /* Queue of sleeping applications */ 6 32 02 dozers fixed bin (35), /* Number of unhandled sleeper wakeups */ 6 33 6 34 02 ws, /* Vidoe system control */ 6 35 03 flags, 6 36 04 trace bit (1) unal, 6 37 04 debug bit (1) unal, 6 38 04 mark_set bit (1) unal, 6 39 04 video_mode bit (1) unal, /* State (on/off) of video */ 6 40 04 more_input bit (1) unal, /* Last read unfinished */ 6 41 04 pad bit (31) unal, 6 42 03 read_count fixed bin (17), /* count of unfinished read commands sent */ 6 43 03 ips_mask bit (36) aligned, 6 44 6 45 02 sus_data, /* sus_ information */ 6 46 03 sus_entry ptr, /* Saved sus_ signal handler */ 6 47 03 activated bit (1) unal, /* If sus_ has been signaled */ 6 48 03 pad bit (35) unal, 6 49 6 50 02 channel_info, /* Event channel info */ 6 51 03 process_id bit (36) aligned, /* This process */ 6 52 03 wake_info, 6 53 04 wake_map (0:127) bit (1) unal, /* Break chars */ 6 54 04 pad bit (16) unal, 6 55 03 user_input like wait_info, /* Input wait channel */ 6 56 03 packet_transmitter like wait_info, /* Write events */ 6 57 03 packet_receiver, /* hcs_ events */ 6 58 04 channel fixed bin (71), /* Channel id */ 6 59 03 packet_dispatcher, /* Dispatch channels */ 6 60 04 sync_channel fixed bin (71), /* Process when quiet */ 6 61 04 async_channel fixed bin (71), /* Process NOW! */ 6 62 03 foreground, /* MF - phx21215 - read/write_status, get_event_channel info */ 6 63 04 channel fixed bin (71), /* Event channel */ 6 64 6 65 02 debug_iocb_ptr ptr, /* Debug file IOCB */ 6 66 02 trace_iocb_ptr ptr, /* Trace file IOCB */ 6 67 6 68 02 timer_info (8), 6 69 03 wakeup fixed bin (71), /* Seconds from last in queue */ 6 70 03 timer_id fixed bin, /* Who owns this wakeup */ 6 71 6 72 02 switches, /* Control switches */ 6 73 03 quit_enable bit (1) unal, /* Quit processing state */ 6 74 03 reset_write bit (1) unal, /* resetwrite requested */ 6 75 03 disconnect_active bit (1) unal, /* Disconnection occuring */ 6 76 03 rs_pending (2) bit (1) unal, /* Reset occuring */ 6 77 03 ds_pending (2) bit (1) unal, /* Disconnect occuring */ 6 78 03 br_pending bit (1) unal, /* Break occurring */ 6 79 03 brk_pending bit (1) unal, /* Break occuring (quit) */ 6 80 03 info_stored bit (1) unal, /* Info segment stored */ 6 81 03 connect_active bit (1) unal, /* Connection in progress */ 6 82 03 start_issued bit (1) unal, /* Indicates start order pending */ 6 83 03 pad bit (24) unal, 6 84 6 85 02 task, 6 86 03 active (0:2) bit (1) unal, /* Tasks which are active */ 6 87 03 pad bit (33) unal, 6 88 6 89 02 user_input, /* User_i/o input data */ 6 90 03 in fixed bin (21), /* Next free slot in repository */ 6 91 03 out fixed bin (21), /* Head of data */ 6 92 03 queue (0:4095) char (1), /* Repository */ 6 93 6 94 02 l_dat (0:1), /* Local data message queue */ 6 95 03 in_ptr ptr, /* Incoming messages */ 6 96 03 out_ptr ptr, /* Outgoing messages */ 6 97 6 98 02 r, /* Receiver data */ 6 99 03 eop char (1), /* End of packet character */ 6 100 03 sop char (1), /* Start of packet character */ 6 101 03 esc (0:2) char (1), /* 3 escape characters */ 6 102 03 esc_count fixed bin, /* Number of escaped chars in received packet */ 6 103 03 asn (0:1) fixed bin (3), /* Acknowledge sequence number */ 6 104 03 dat (0:1, 0:3) char (124) var, /* Data queues */ 6 105 03 pkt (0:2) char (129) var, /* Packet queue */ 6 106 03 pktin fixed bin, /* Next packet character in */ 6 107 03 pktout fixed bin, /* Head of packet */ 6 108 03 psn (0:1) fixed bin, /* SN for each channel */ 6 109 03 esckey bit (9) unal, /* Decoding 2nd character escape */ 6 110 03 ignoring (0:1) bit (1) unal, /* Ignore data during synchronization */ 6 111 03 pad bit (25) unal, 6 112 6 113 02 s, /* Sender data */ 6 114 03 eop char (1), /* End of packet character */ 6 115 03 sop char (1), /* Start of packet character */ 6 116 03 esc (0:2) char (1), /* 3 escape characters */ 6 117 03 dat (0:1, 0:3) char (124) var, /* Data queue */ 6 118 03 psn (0:1) fixed bin (3), /* Packet sequence number */ 6 119 03 lasn (0:1) fixed bin (3), /* Last ack sent */ 6 120 03 nasn (0:1) fixed bin (3), /* Next ack to be sent */ 6 121 03 escreq (0:255) bit (1) unal, /* Characters to be escaped */ 6 122 03 pad bit (32) unal; 6 123 6 124 /* Wait channel control struncture */ 6 125 6 126 dcl 01 wait_info based, 6 127 02 channel fixed bin (71) aligned, /* Channel ID */ 6 128 02 count fixed bin, /* Waiting count */ 6 129 02 flags, 6 130 03 transmitted bit (1) unal, /* Wakeup already generated */ 6 131 03 pad bit (35) unal; 6 132 6 133 /* END INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 376 377 378 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/24/89 0847.3 ws_packet_dispatcher_.pl1 >spec>install>MR12.3-1012>ws_packet_dispatcher_.pl1 371 1 11/07/86 1550.3 ipc_create_arg.incl.pl1 >ldd>include>ipc_create_arg.incl.pl1 372 2 08/10/87 1335.9 mowse_io_structures.incl.pl1 >ldd>include>mowse_io_structures.incl.pl1 373 3 08/10/87 1335.9 mowse_messages.incl.pl1 >ldd>include>mowse_messages.incl.pl1 374 4 08/10/87 1336.7 mowse_io_constants.incl.pl1 >ldd>include>mowse_io_constants.incl.pl1 375 5 08/10/87 1336.7 mowse.incl.pl1 >ldd>include>mowse.incl.pl1 376 6 01/24/89 0847.4 mowse_io_data.incl.pl1 >spec>install>MR12.3-1012>mowse_io_data.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. ASYNC_CALL_EVENT_CHANNEL_TYPE constant fixed bin(17,0) initial dcl 1-31 ref 296 BG 000011 constant fixed bin(17,0) initial dcl 3-17 set ref 159* 179* 184* 200* BG_task constant fixed bin(17,0) initial dcl 4-126 ref 141 144 145 175 196 204 211 CALL_EVENT_CHANNEL_TYPE constant fixed bin(17,0) initial dcl 1-30 ref 288 FastDis constant fixed bin(8,0) initial dcl 4-86 ref 213 213 Idle constant bit(1) initial packed unaligned dcl 4-128 ref 144 145 175 196 204 211 MaxDatLen 000000 constant fixed bin(17,0) initial dcl 4-56 set ref 46 184* 200* PACKET_SIZE constant fixed bin(17,0) initial dcl 5-48 ref 3-155 active 431 based bit(1) array level 3 packed packed unaligned dcl 51 set ref 141 144* 145* 175* 196* 204* 211* addr builtin function dcl 78 ref 184 184 191 191 200 200 218 218 292 292 300 300 async_channel 360 based fixed bin(71,0) level 4 dcl 51 set ref 238 238* 283* 292* buffer based char packed unaligned dcl 43 ref 168 byte builtin function dcl 76 ref 213 213 call_data_ptr 10 000142 automatic pointer level 2 dcl 280 set ref 290* 298* call_entry 4 000142 automatic entry variable level 2 dcl 280 set ref 289* 297* call_priority 12 000142 automatic fixed bin(17,0) level 2 dcl 280 set ref 291* 299* channel_info 336 based structure level 2 unaligned dcl 51 channel_type 2 000142 automatic fixed bin(17,0) level 2 dcl 280 set ref 288* 296* cleanup 000106 stack reference condition dcl 82 ref 145 clock builtin function dcl 79 ref 334 code 000102 automatic fixed bin(35,0) dcl 45 set ref 167* 173 191* 194 current_time 000166 automatic fixed bin(71,0) dcl 328 set ref 334* 346 data 000103 automatic char(1) array packed unaligned dcl 46 set ref 184 184 191 191 200 200 data_len 000103 automatic fixed bin(21,0) dcl 47 set ref 159* 160 167* 168 168 179* 184* 185 191* 200* data_ptr 000100 automatic pointer dcl 44 set ref 159* 167* 168 179* debug_iocb_ptr 364 based pointer level 2 dcl 51 set ref 164* 170* 189* 192* 352* 355* divide builtin function dcl 75 ref 334 error_table_$no_table 000016 external static fixed bin(35,0) dcl 61 ref 217 fatal_error_info 000104 automatic structure level 1 dcl 52 set ref 218 218 info_ptr 320 based pointer level 2 dcl 51 ref 150 161 186 ipc_$create_event_channel 000014 constant entry external dcl 58 ref 292 300 ipc_$delete_ev_chn 000012 constant entry external dcl 57 ref 238 243 ipc_arg 000142 automatic structure level 1 dcl 280 set ref 292 292 300 300 ipc_create_arg_structure based structure level 1 dcl 1-19 ipc_create_arg_structure_v1 000002 constant char(8) initial packed unaligned dcl 1-17 ref 287 295 last 6 based pointer level 2 dcl 331 set ref 349* major based fixed bin(17,0) level 2 dcl 331 set ref 354* mcb_ptr 322 based pointer level 2 dcl 51 set ref 167* 191* 354* message_len 000122 automatic fixed bin(17,0) initial dcl 3-33 set ref 3-33* mio_data based structure level 1 unaligned dcl 51 mio_data_ptr 000010 internal static pointer dcl 48 set ref 116* 141 144 145 149 150 159* 161 164 167 170 175 179* 184* 186 189 191 192 196 200* 204 211 213* 238 238 243 243 247* 283 284 292 300 340 346 347 348 348 349 349 352 354 355 360 mowse_io_data based structure level 1 unaligned dcl 6-18 mowse_io_error 000114 stack reference condition dcl 83 ref 174 195 mowse_io_sleep_node based structure level 1 unaligned dcl 2-21 next 4 based pointer level 2 dcl 331 ref 348 node based structure level 1 unaligned dcl 331 set ref 358 null builtin function dcl 77 ref 149 150 161 186 247 290 298 340 349 349 359 360 p_code parameter fixed bin(35,0) dcl 40 in procedure "ws_packet_dispatcher_" set ref 104 118* p_code parameter fixed bin(35,0) dcl 275 in procedure "setup_channel" set ref 259 292* 300* p_mio_data_ptr parameter pointer dcl 37 ref 10 104 116 packet_dispatcher 356 based structure level 3 unaligned dcl 51 rcvdat_ 000030 constant entry external dcl 68 ref 167 191 sleepers 324 based pointer level 2 dcl 51 set ref 149 340 346 347 348* 348 349 349 360 status_code 1 000104 automatic fixed bin(35,0) level 2 dcl 52 set ref 217* sync_channel 356 based fixed bin(71,0) level 4 dcl 51 set ref 243 243* 284* 300* task 431 based structure level 2 packed packed unaligned dcl 51 temp_ptr 000164 automatic pointer dcl 327 set ref 347* 354 358 359* temp_seg_name 000124 automatic char(6) initial packed unaligned dcl 5-22 set ref 5-22* terminate_process_ 000024 constant entry external dcl 66 ref 218 version 000104 automatic fixed bin(17,0) level 2 in structure "fatal_error_info" dcl 52 in procedure "ws_packet_dispatcher_" set ref 216* version 000142 automatic char(8) level 2 in structure "ipc_arg" packed packed unaligned dcl 280 in procedure "setup_channel" set ref 287* 295* wait_info based structure level 1 unaligned dcl 6-126 wake_up_sleeper_ 000034 constant entry external dcl 70 ref 354 when 2 based fixed bin(71,0) level 2 dcl 331 ref 346 ws_debug_$line 000032 constant entry external dcl 69 ref 164 170 189 192 352 355 ws_packet_transmitter_$supervisory 000026 constant entry external dcl 67 ref 213 ws_tools_$getdat 000022 constant entry external dcl 65 ref 184 200 ws_tools_$getldat 000020 constant entry external dcl 64 ref 159 179 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT internal static fixed bin(17,0) initial dcl 5-54 ADD_TO_REMOTE_CAT internal static fixed bin(17,0) initial dcl 5-78 ANY_CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 1-33 AckCnt internal static fixed bin(8,0) initial dcl 4-98 AckOff internal static fixed bin(8,0) initial dcl 4-96 And internal static bit(4) initial packed unaligned dcl 4-19 BrkCnt internal static fixed bin(8,0) initial dcl 4-90 BrkOff internal static fixed bin(8,0) initial dcl 4-88 CONTINUE internal static fixed bin(17,0) initial dcl 5-94 CONVERT_CRC internal static fixed bin(17,0) initial dcl 4-15 CR internal static char(1) initial packed unaligned dcl 4-31 ChkLen internal static fixed bin(17,0) initial dcl 4-62 ChnCnt internal static fixed bin(17,0) initial dcl 4-46 Confirm internal static fixed bin(8,0) initial dcl 4-78 DBGPKTS internal static bit(1) initial packed unaligned dcl 4-22 DBGREJS internal static bit(1) initial packed unaligned dcl 4-24 DBGXCHRS internal static bit(1) initial packed unaligned dcl 4-26 DELETE_FROM_REMOTE_CAT internal static fixed bin(17,0) initial dcl 5-79 DatCnt internal static fixed bin(8,0) initial dcl 4-94 DatOff internal static fixed bin(8,0) initial dcl 4-92 DisCon internal static fixed bin(8,0) initial dcl 4-84 EOPLen internal static fixed bin(17,0) initial dcl 4-66 ESC internal static char(1) initial packed unaligned dcl 4-33 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 5-73 EXECUTE_COMMAND internal static fixed bin(17,0) initial dcl 5-77 EXECUTE_COMMAND_REPLY internal static fixed bin(17,0) initial dcl 5-72 FAIL_CAPABILITY internal static fixed bin(17,0) initial dcl 5-75 FAST_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 1-28 FG internal static fixed bin(17,0) initial dcl 3-19 FGBrk internal static fixed bin(8,0) initial dcl 4-82 FG_BREAK internal static fixed bin(17,0) initial dcl 5-105 FG_CONTROL_MESSAGE internal static fixed bin(17,0) initial dcl 5-104 FG_MORE_DATA internal static fixed bin(17,0) initial dcl 5-107 FG_TERMINAL_DATA internal static fixed bin(17,0) initial dcl 5-106 FG_task internal static fixed bin(17,0) initial dcl 4-124 INIT_CRC internal static fixed bin(17,0) initial dcl 4-14 INTERNAL internal static fixed bin(17,0) initial dcl 5-76 LAST internal static fixed bin(17,0) initial dcl 5-71 LF internal static char(1) initial packed unaligned dcl 4-35 LOCAL_SYSTEM internal static fixed bin(17,0) initial dcl 5-30 LenLen internal static fixed bin(17,0) initial dcl 4-64 Lim_p_timer internal static fixed bin(17,0) initial dcl 4-116 Lim_r_timer internal static fixed bin(17,0) initial dcl 4-112 Lim_s_timer internal static fixed bin(17,0) initial dcl 4-114 MAXIMUM_BG_SIZE internal static fixed bin(17,0) initial dcl 5-44 MAXIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 5-43 MAXIMUM_PACKET_SIZE internal static fixed bin(17,0) initial dcl 5-49 MAXIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 5-65 MAXIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 5-67 MINIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 5-42 MINIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 5-64 MINIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 5-66 MORE internal static fixed bin(17,0) initial dcl 5-95 MOWSE_VERSION_ internal static char(8) initial packed unaligned dcl 5-26 MaxPktLen internal static fixed bin(17,0) initial dcl 4-70 MinPktLen internal static fixed bin(17,0) initial dcl 4-68 Modem_Reader_Task internal static fixed bin(17,0) initial dcl 4-122 NO_MINOR internal static fixed bin(17,0) initial dcl 4-132 NakCnt internal static fixed bin(8,0) initial dcl 4-102 NakOff internal static fixed bin(8,0) initial dcl 4-100 OR internal static bit(4) initial packed unaligned dcl 4-17 OVERFLOWED_BUFFER internal static fixed bin(17,0) initial dcl 5-87 PUT_TO_BACKGROUND_BUFFER internal static fixed bin(17,0) initial dcl 5-108 PUT_TO_QUERY_MESSAGE_BUFFER internal static fixed bin(17,0) initial dcl 5-110 QUERY_REPLY internal static fixed bin(17,0) initial dcl 5-89 RECEIVE internal static fixed bin(17,0) initial dcl 5-59 REJECT internal static fixed bin(17,0) initial dcl 5-55 REMOTE_SYSTEM internal static fixed bin(17,0) initial dcl 5-31 REQUEST_CONNECT internal static fixed bin(17,0) initial dcl 5-92 REQUEST_DISCONNECT internal static fixed bin(17,0) initial dcl 5-93 RESET_APPLICATION internal static fixed bin(17,0) initial dcl 5-83 RESET_REPLY internal static fixed bin(17,0) initial dcl 5-84 RESET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 5-97 RESET_SUSPEND internal static fixed bin(17,0) initial dcl 5-99 RESPONSE_CONNECT internal static fixed bin(17,0) initial dcl 5-90 RESPONSE_DISCONNECT internal static fixed bin(17,0) initial dcl 5-91 RESUME_APPLICATION internal static fixed bin(17,0) initial dcl 5-81 REVPOLY internal static fixed bin(17,0) initial dcl 4-16 RQS internal static fixed bin(17,0) initial dcl 4-106 RWS internal static fixed bin(17,0) initial dcl 4-108 Request internal static fixed bin(8,0) initial dcl 4-76 RstCnt internal static fixed bin(8,0) initial dcl 4-80 RstOff internal static fixed bin(8,0) initial dcl 4-74 SEND internal static fixed bin(17,0) initial dcl 5-60 SEND_QUERY internal static fixed bin(17,0) initial dcl 5-53 SET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 5-96 SET_SUSPEND internal static fixed bin(17,0) initial dcl 5-98 SI internal static char(1) initial packed unaligned dcl 4-38 SO internal static char(1) initial packed unaligned dcl 4-40 SOH internal static char(1) initial packed unaligned dcl 4-42 SOPLen internal static fixed bin(17,0) initial dcl 4-58 STATUS internal static fixed bin(17,0) initial dcl 5-86 STATUS_FAILED internal static fixed bin(8,0) initial dcl 5-37 STATUS_REPLY internal static fixed bin(17,0) initial dcl 5-100 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 5-35 SUSPEND_APPLICATION internal static fixed bin(17,0) initial dcl 5-80 SWS internal static fixed bin(17,0) initial dcl 4-110 SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 5-88 SeqCnt internal static fixed bin(17,0) initial dcl 4-50 SeqFld internal static fixed bin(17,0) initial dcl 4-48 SeqMsk internal static fixed bin(17,0) initial dcl 4-52 TERMINATE_APPLICATION internal static fixed bin(17,0) initial dcl 5-82 Timer_Interval internal static fixed bin(71,0) initial dcl 4-118 TypLen internal static fixed bin(17,0) initial dcl 4-60 WAIT_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 1-29 WAKE_UP internal static fixed bin(17,0) initial dcl 5-85 WST_ERASE internal static fixed bin(17,0) initial dcl 4-146 WST_ESCAPE internal static fixed bin(17,0) initial dcl 4-147 WST_HEADER_1 internal static fixed bin(17,0) initial dcl 4-139 WST_HEADER_2 internal static fixed bin(17,0) initial dcl 4-140 WST_HEADER_3 internal static fixed bin(17,0) initial dcl 4-141 WST_INIT_LL internal static fixed bin(17,0) initial dcl 4-137 WST_INIT_PL internal static fixed bin(17,0) initial dcl 4-136 WST_KILL internal static fixed bin(17,0) initial dcl 4-145 WST_LENGTH_HIGH internal static fixed bin(17,0) initial dcl 4-142 WST_LENGTH_LOW internal static fixed bin(17,0) initial dcl 4-143 WST_LINE_LENGTH internal static fixed bin(17,0) initial dcl 4-148 WST_MODES internal static fixed bin(17,0) initial dcl 4-144 WST_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 4-149 XOR internal static bit(4) initial packed unaligned dcl 4-18 alter_cat_message based structure level 1 packed packed unaligned dcl 3-63 event_message based structure level 1 packed packed unaligned dcl 3-76 execom_message based structure level 1 packed packed unaligned dcl 3-49 execom_reply_msg based structure level 1 packed packed unaligned dcl 3-122 input_message based structure level 1 packed packed unaligned dcl 3-38 ipc_create_arg_structure_ptr automatic pointer dcl 1-16 last_message based structure level 1 packed packed unaligned dcl 3-110 local_data_node based structure level 1 unaligned dcl 2-15 message_node based structure level 1 unaligned dcl 3-136 message_ptr automatic pointer dcl 3-34 more_remaining_message based structure level 1 packed packed unaligned dcl 3-96 mowse_io_data_ptr automatic pointer dcl 6-17 msg_node_ptr automatic pointer dcl 3-135 part_msg based char packed 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 packed unaligned dcl 3-84 trace_message_info automatic structure level 1 unaligned dcl 3-155 NAMES DECLARED BY EXPLICIT CONTEXT. NULL_MOWSE_TABLES 000613 constant label dcl 211 ref 150 161 186 initialize 000163 constant entry external dcl 104 processor 000206 constant entry external dcl 126 ref 289 297 setup_channel 000726 constant entry internal dcl 259 ref 118 terminate 000662 constant entry external dcl 226 wakeup 001021 constant entry internal dcl 309 ref 152 ws_packet_dispatcher_ 000150 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1354 1412 1152 1364 Length 1756 1152 36 327 201 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ws_packet_dispatcher_ 190 external procedure is an external procedure. on unit on line 145 64 on unit setup_channel internal procedure shares stack frame of external procedure ws_packet_dispatcher_. wakeup internal procedure shares stack frame of external procedure ws_packet_dispatcher_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mio_data_ptr ws_packet_dispatcher_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ws_packet_dispatcher_ 000100 data_ptr ws_packet_dispatcher_ 000102 code ws_packet_dispatcher_ 000103 data ws_packet_dispatcher_ 000103 data_len ws_packet_dispatcher_ 000104 fatal_error_info ws_packet_dispatcher_ 000122 message_len ws_packet_dispatcher_ 000124 temp_seg_name ws_packet_dispatcher_ 000142 ipc_arg setup_channel 000164 temp_ptr wakeup 000166 current_time wakeup THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac alloc_auto_adj signal_op enable_op ext_entry int_entry divide_fx3 op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ipc_$create_event_channel ipc_$delete_ev_chn rcvdat_ terminate_process_ wake_up_sleeper_ ws_debug_$line ws_packet_transmitter_$supervisory ws_tools_$getdat ws_tools_$getldat THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$no_table LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 46 000122 3 33 000131 3 155 000133 5 22 000141 10 000145 93 000156 104 000157 116 000171 118 000176 120 000204 126 000205 141 000214 144 000223 145 000231 149 000253 150 000261 152 000265 159 000266 160 000303 161 000306 164 000314 167 000333 168 000351 170 000356 173 000377 174 000401 175 000404 176 000412 179 000413 180 000430 184 000431 185 000454 186 000456 189 000464 191 000503 192 000523 194 000544 195 000546 196 000551 197 000557 200 000560 202 000603 204 000604 205 000612 211 000613 213 000617 216 000632 217 000633 218 000636 220 000660 226 000661 238 000670 243 000705 247 000722 248 000725 259 000726 283 000730 284 000734 287 000735 288 000737 289 000741 290 000745 291 000747 292 000750 295 000766 296 000770 297 000772 298 000776 299 001000 300 001001 303 001020 309 001021 334 001022 340 001031 346 001040 347 001046 348 001047 349 001051 352 001060 354 001100 355 001112 358 001133 359 001135 360 001137 362 001145 364 001146 ----------------------------------------------------------- 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