COMPILATION LISTING OF SEGMENT ws_debug_ 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.6 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_debug_: 11 proc (); 12 13 14 /* PROGRAM FUNCTION 15* 16*This is a collection of entry points which are responsible for handling the 17*debug files of MOWSE. 18**/ 19 20 21 /* NOTES 22**/ 23 24 /****^ HISTORY COMMENTS: 25* 1) change(87-05-04,Flegel), approve(87-06-23,MCR7649), 26* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 27* Created. 28* END HISTORY COMMENTS */ 29 30 /* INPUT PARAMETERS */ 31 dcl p_header char (*) parameter; /* Packet header info */ 32 dcl p_packet_ptr ptr parameter; /* Packet */ 33 dcl p_packet_len fixed bin (21) parameter; /* Length of packet */ 34 dcl p_info_ptr ptr parameter; /* Control info pointer */ 35 36 /* OUTPUT PARAMETERS */ 37 dcl p_iocb_ptr ptr parameter; /* IOCB of debug file */ 38 dcl p_code fixed bin (35) parameter; /* Error code */ 39 40 /* MISC VARIABLES */ 41 dcl asn fixed bin; /* Packet ACK SN */ 42 dcl psn fixed bin; /* Packet SN */ 43 dcl channel fixed bin; /* Channel ID */ 44 dcl debug_len fixed bin (21); /* Length of nonvarying debug string */ 45 dcl debug_string char (512); /* Non-varying debug string */ 46 dcl iocb_ptr ptr; /* IOCB */ 47 dcl arg_len fixed bin (21); /* Length of argument */ 48 dcl arg_ptr ptr; /* Argument */ 49 dcl arg_list_ptr ptr; /* Argument list */ 50 dcl code fixed bin (35); 51 dcl arg_count fixed bin; /* Number of args */ 52 dcl chr char (1); /* Single char holder */ 53 dcl i fixed bin (21); 54 dcl debug_string_var char (512) var; /* Output string */ 55 dcl debug_name char (512) var; /* Debug file name */ 56 57 /* STRUCTURES */ 58 dcl based_ptr ptr based; /* ptr overlay */ 59 dcl packet_data char (p_packet_len) based (p_packet_ptr); 60 61 /* SYSTEM CALLS */ 62 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 63 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 64 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin (21), bit (1) aligned, 65 bit (1) aligned); 66 dcl cu_$arg_list_ptr entry (ptr); 67 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 68 dcl iox_$close entry (ptr, fixed bin (35)); 69 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 70 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 71 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 72 73 /* SYSTEM CALL SUPPORT */ 74 dcl error_table_$active_function fixed bin (35) ext static; 75 dcl ws_error_$trace_already_on fixed bin (35) ext static; 76 dcl error_table_$unimplemented_version fixed bin (35) ext static; 77 dcl ws_error_$debug_already_on fixed bin (35) ext static; 78 79 /* EXTERNAL CALLS */ 80 dcl ws_tools_$ars entry (fixed bin, fixed bin) returns (fixed bin); 81 dcl ws_debug_$line entry options (variable); 82 83 /* EXTERNAL CALL SUPPORT */ 84 85 /* BUILTINS */ 86 dcl substr builtin; 87 dcl addr builtin; 88 dcl rank builtin; 89 dcl divide builtin; 90 dcl mod builtin; 91 dcl byte builtin; 92 dcl index builtin; 93 dcl null builtin; 94 dcl length builtin; 95 96 /* CONDITIONS */ 97 98 /* CONSTANTS */ 99 100 /* */ 101 102 /* INITIALIZATION */ 103 104 /* MAIN */ 105 106 return; 107 108 /* */ 109 110 111 112 /* INTERNAL ENTRIES */ 113 114 115 /* *** Entry: debug_close - Internal entry for ws_debug_ *** */ 116 117 debug_close: 118 entry (p_iocb_ptr, p_code); 119 120 121 /* ENTRY FUNCTION 122* 123*Close and detach the specified IOCB. 124**/ 125 126 /* NOTES 127**/ 128 129 p_code = 0; 130 call close_file (p_iocb_ptr, p_code); 131 132 return; 133 134 /* */ 135 136 /* *** Entry: line - Internal entry for ws_debug_ *** */ 137 138 line: 139 entry options (variable); 140 141 142 /* ENTRY FUNCTION 143* 144*Works like ioa_$ioa_switch but provides a single entry into all writing 145*to the debug file. 146**/ 147 148 /* NOTES 149* 150*Calling sequence: 151* 152* call ws_debug_$line (iocb_ptr, control_string, arg1, ..., argN); 153**/ 154 155 /* Verify that the number of args is OK */ 156 157 call cu_$arg_count (arg_count, code); 158 if code ^= 0 & code ^= error_table_$active_function then 159 return; 160 if arg_count < 2 then 161 return; 162 163 /* The first argument must be a pointer (IOCB) */ 164 165 call cu_$arg_list_ptr (arg_list_ptr); 166 call cu_$arg_ptr (1, arg_ptr, arg_len, code); 167 if code ^= 0 then 168 return; 169 if arg_ptr = null then 170 return; 171 if arg_ptr -> based_ptr = null then 172 return; 173 iocb_ptr = arg_ptr -> based_ptr; 174 175 /* Get the remainder of the arguments and write the string */ 176 177 call ioa_$general_rs (arg_list_ptr, 2, 3, debug_string, debug_len, 178 "0"b, "1"b); 179 call iox_$put_chars (iocb_ptr, addr (debug_string), debug_len, code); 180 if code ^= 0 then 181 return; 182 183 return; 184 185 /* */ 186 187 /* *** Entry: debug_open - Internal entry for ws_debug_ *** */ 188 189 debug_open: 190 entry (p_info_ptr, p_iocb_ptr, p_code); 191 192 193 /* ENTRY FUNCTION 194* 195*Open the specified IOCB into which debug info is dumped. 196**/ 197 198 /* NOTES 199**/ 200 201 p_code = 0; 202 203 /* IOCB not null means that it is already open */ 204 205 if p_iocb_ptr ^= null then do; 206 p_code = ws_error_$debug_already_on; 207 return; 208 end; 209 210 /* Determine what to call the file */ 211 212 debug_name = "debug.mowse_io_"; 213 if p_info_ptr ^= null then do; 214 if p_info_ptr -> mowse_io_debug_info.version 215 ^= mowse_io_info_version_1 216 then do; 217 p_code = error_table_$unimplemented_version; 218 return; 219 end; 220 221 if length (p_info_ptr -> mowse_io_debug_info.segment_name) ^= 0 222 then 223 debug_name 224 = p_info_ptr -> mowse_io_debug_info.segment_name; 225 end; 226 227 if index (debug_name, ".mowse_io_") = 0 then 228 debug_name = debug_name || ".mowse_io_"; 229 230 /* Open the file */ 231 232 call open_file (debug_name, "mowse_io_debug", p_iocb_ptr, p_code); 233 234 return; 235 236 /* */ 237 238 /* *** Entry: packet - Internal entry for ws_debug_ *** */ 239 240 packet: 241 entry (p_header, p_packet_ptr, p_packet_len, p_iocb_ptr); 242 243 244 /* ENTRY FUNCTION 245* 246*Write the packet to the debug file. 247**/ 248 249 /* NOTES 250**/ 251 252 /* Does the file exist? */ 253 254 if p_iocb_ptr = null then 255 return; 256 257 /* Write the info to the file */ 258 259 debug_string_var = ""; 260 do i = 1 to p_packet_len; 261 if substr (packet_data, i, 1) < " " 262 | substr (packet_data, i, 1) > "~" 263 then do; 264 chr = substr (packet_data, i, 1); 265 debug_string_var = debug_string_var 266 || "\"; 267 debug_string_var = debug_string_var 268 || byte (mod (divide (rank (chr), 64, 3), 8) 269 + rank ("0")); 270 debug_string_var = debug_string_var 271 || byte (mod (divide (rank (chr), 8, 3), 8) 272 + rank ("0")); 273 debug_string_var = debug_string_var 274 || byte (mod (rank (chr), 8) 275 + rank ("0")); 276 end; 277 else 278 debug_string_var = debug_string_var 279 || substr (packet_data, i, 1); 280 end; 281 282 if substr (packet_data, 1, 1) = byte (1) then do; 283 call extract_type (rank (substr (packet_data, 2, 1)), channel, 284 psn, asn); 285 call ws_debug_$line (p_iocb_ptr, 286 "^a(^[BG^;FG^;SS^]-^[P^d^;**^s^]-^[A^d^;**^s^]):^a", 287 p_header, channel + 1, (psn >= 0), psn, (asn >= 0), asn, 288 debug_string_var); 289 end; 290 else 291 call ws_debug_$line (p_iocb_ptr, "^a^a", p_header, 292 debug_string_var); 293 294 return; 295 296 /* */ 297 298 /* *** Entry: trace_close - Internal entry for ws_debug_ *** */ 299 300 trace_close: 301 entry (p_iocb_ptr, p_code); 302 303 304 /* ENTRY FUNCTION 305* 306*Close and detach the specified IOCB. 307**/ 308 309 /* NOTES 310**/ 311 312 p_code = 0; 313 call close_file (p_iocb_ptr, p_code); 314 315 return; 316 317 /* */ 318 319 /* *** Entry: trace_open - Internal entry for ws_debug_ *** */ 320 321 trace_open: 322 entry (p_info_ptr, p_iocb_ptr, p_code); 323 324 325 /* ENTRY FUNCTION 326* 327*Open the specified IOCB into which trace info is dumped. 328**/ 329 330 /* NOTES 331**/ 332 333 p_code = 0; 334 335 /* IOCB not null means that it is already open */ 336 337 if p_iocb_ptr ^= null then do; 338 p_code = ws_error_$trace_already_on; 339 return; 340 end; 341 342 /* Determine what to call the file */ 343 344 debug_name = "trace.mowse_io_"; 345 if p_info_ptr ^= null then do; 346 if p_info_ptr -> mowse_io_debug_info.version 347 ^= mowse_io_info_version_1 348 then do; 349 p_code = error_table_$unimplemented_version; 350 return; 351 end; 352 353 if length (p_info_ptr -> mowse_io_debug_info.segment_name) ^= 0 354 then 355 debug_name 356 = p_info_ptr -> mowse_io_debug_info.segment_name; 357 end; 358 359 if index (debug_name, ".mowse_io_") = 0 then 360 debug_name = debug_name || ".mowse_io_"; 361 362 /* Open the file */ 363 364 call open_file (debug_name, "mowse_io_trace", p_iocb_ptr, p_code); 365 366 return; 367 368 /* */ 369 370 371 372 /* INTERNAL PROCEDURES */ 373 374 375 /* *** Procedure: close_file - Internal proc for ws_debug_ *** */ 376 377 close_file: 378 proc (p_iocb_ptr, p_code); 379 380 381 /* PROCEDURE FUNCTION 382* 383*Close and detach the specified file IOCB. 384**/ 385 386 /* NOTES 387**/ 388 389 /* INPUT PARAMETERS */ 390 dcl p_iocb_ptr ptr parameter; /* the IOCB to close and detach */ 391 392 /* OUTPUT PARAMETERS */ 393 dcl p_code fixed bin (35) parameter; 394 395 /* MISC VARIABLES */ 396 397 /* STRUCTURES */ 398 399 /* INITIALIZATION */ 400 p_code = 0; 401 402 /* MAI */ 403 404 if p_iocb_ptr = null then 405 return; 406 407 call iox_$close (p_iocb_ptr, p_code); 408 if p_code ^= 0 then 409 return; 410 411 call iox_$detach_iocb (p_iocb_ptr, p_code); 412 if p_code ^= 0 then 413 return; 414 415 p_iocb_ptr = null; 416 417 end close_file; 418 419 /* */ 420 421 /* *** Procedure: extract_type - Internal proc for ws_debug_ *** */ 422 423 extract_type: 424 proc (p_type, p_channel, p_psn, p_asn); 425 426 427 /* PROCEDURE FUNCTION 428* 429*Given a type field, extract the channel, packet sequence number and ack 430*sequence number. 431**/ 432 433 /* NOTES 434**/ 435 436 /* INPUT PARAMETERS */ 437 dcl p_type fixed bin parameter; /* Packet type to decipher */ 438 439 /* OUTPUT PARAMETERS */ 440 dcl p_channel fixed bin parameter; /* Channel ID */ 441 dcl p_psn fixed bin parameter; /* Packet SN */ 442 dcl p_asn fixed bin parameter; /* Packet ACK SN */ 443 444 /* MISC VARIABLES */ 445 dcl fields fixed bin; /* Type offset removed */ 446 447 /* STRUCTURES */ 448 449 /* INITIALIZATION */ 450 p_channel = 2; 451 p_psn = -1; 452 p_asn = -1; 453 454 /* MAIN */ 455 456 if DatOff <= p_type & p_type < DatOff + DatCnt then do; 457 fields = p_type - DatOff; 458 p_asn = mod (fields, SeqCnt); 459 p_psn = mod (ws_tools_$ars (fields, SeqFld), SeqCnt); 460 channel = ws_tools_$ars (fields, SeqFld + SeqFld); 461 end; 462 else if AckOff <= p_type & p_type < AckOff + AckCnt then do; 463 fields = p_type - AckOff; 464 p_asn = mod (fields, SeqCnt); 465 p_channel = ws_tools_$ars (fields, SeqFld); 466 end; 467 else if NakOff <= p_type & p_type < NakOff + NakCnt then do; 468 fields = p_type - NakOff; 469 p_asn = mod (fields, SeqCnt); 470 p_channel = ws_tools_$ars (fields, SeqFld); 471 end; 472 else 473 return; 474 475 end extract_type; 476 477 /* */ 478 479 /* *** Procedure: open_file - Internal proc for ws_debug_ *** */ 480 481 open_file: 482 proc (p_name, p_switch_name, p_iocb_ptr, p_code); 483 484 485 /* PROCEDURE FUNCTION 486* 487*Open an IOCB for the specified file on the provided switch name. 488**/ 489 490 /* NOTES 491**/ 492 493 /* INPUT PARAMETERS */ 494 dcl p_name char (*) var parameter; /* Name of file */ 495 dcl p_switch_name char (*) parameter; /* name of IOCB switch */ 496 497 /* OUTPUT PARAMETERS */ 498 dcl p_iocb_ptr ptr parameter; /* IOCB block */ 499 dcl p_code fixed bin (35) parameter; 500 501 /* MISC VARIABLES */ 502 503 /* STRUCTURES */ 504 505 /* INITIALIZATION */ 506 507 /* MAIN */ 508 509 call iox_$attach_name (p_switch_name, p_iocb_ptr, 510 "vfile_ " || p_name, null, p_code); 511 if p_code ^= 0 then do; 512 p_iocb_ptr = null; 513 return; 514 end; 515 516 call iox_$open (p_iocb_ptr, Stream_output, ""b, p_code); 517 if p_code ^= 0 then do; 518 call iox_$detach_iocb (p_iocb_ptr, (0)); 519 p_iocb_ptr = null; 520 return; 521 end; 522 523 end open_file; 524 525 /* */ 526 527 528 529 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-11-06,Flegel), approve(87-07-15,MCR7580), 1 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 6* Created. 1 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 9* Approved. 1 10* END HISTORY COMMENTS */ 1 11 1 12 /* Protocol constants */ 1 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 14 dcl INIT_CRC fixed bin int static options (constant) init (63); 1 15 dcl CONVERT_CRC fixed bin int static options (constant) init (32); 1 16 dcl REVPOLY fixed bin int static options (constant) init (101001b); /* Bit N is coeff of x**(5-N) of generator */ 1 17 dcl OR bit (4) int static options (constant) init ("0111"b); 1 18 dcl XOR bit (4) int static options (constant) init ("0110"b); 1 19 dcl And bit (4) int static options (constant) init ("0001"b); 1 20 1 21 /* Debugging Switches */ 1 22 dcl DBGPKTS bit (1) int static options (constant) init ("0"b); 1 23 /* show packets */ 1 24 dcl DBGREJS bit (1) int static options (constant) init ("1"b); 1 25 /* diagnose rejects */ 1 26 dcl DBGXCHRS bit (1) int static options (constant) init ("0"b); 1 27 /* show extraneous received chars */ 1 28 1 29 /* ASCII Control Characters */ 1 30 1 31 dcl CR char (1) int static options (constant) 1 32 init (" "); 1 33 dcl ESC char (1) int static options (constant) 1 34 init (""); 1 35 dcl LF char (1) int static options (constant) 1 36 init (" 1 37 "); 1 38 dcl SI char (1) int static options (constant) 1 39 init (""); 1 40 dcl SO char (1) int static options (constant) 1 41 init (""); 1 42 dcl SOH char (1) int static options (constant) 1 43 init (""); 1 44 1 45 /* Protocol Bit-field Constants */ 1 46 dcl ChnCnt fixed bin int static options (constant) init (2); 1 47 /* no. logical channels */ 1 48 dcl SeqFld fixed bin int static options (constant) init (2); 1 49 /* no. bits in seq. field */ 1 50 dcl SeqCnt fixed bin int static options (constant) init (4); 1 51 /* 2**SeqFld */ 1 52 dcl SeqMsk fixed bin int static options (constant) init (3); 1 53 /* SeqCnt-1 */ 1 54 1 55 /* Protocol Byte-field Constants */ 1 56 dcl MaxDatLen fixed bin int static options (constant) init (124); 1 57 /* Maximum packet length */ 1 58 dcl SOPLen fixed bin int static options (constant) init (1); 1 59 /* Characters in SOP field */ 1 60 dcl TypLen fixed bin int static options (constant) init (1); 1 61 /* Characters in type field */ 1 62 dcl ChkLen fixed bin int static options (constant) init (1); 1 63 /* Characters in check field */ 1 64 dcl LenLen fixed bin int static options (constant) init (1); 1 65 /* Characters in length field */ 1 66 dcl EOPLen fixed bin int static options (constant) init (1); 1 67 /* Characters in EOP field */ 1 68 dcl MinPktLen fixed bin int static options (constant) init (5); 1 69 /* SOPLen+TypLen+LenLen+ChkLen+EOPLen */ 1 70 dcl MaxPktLen fixed bin int static options (constant) init (129); 1 71 /* MinPktLen+MaxDatLen */ 1 72 1 73 /* Protocol Packet Type Constants */ 1 74 dcl RstOff fixed bin (8) int static options (constant) 1 75 init (32); /* */ 1 76 dcl Request fixed bin (8) int static options (constant) 1 77 init (0); 1 78 dcl Confirm fixed bin (8) int static options (constant) 1 79 init (1); 1 80 dcl RstCnt fixed bin (8) int static options (constant) 1 81 init (2); /* Confirm+1 */ 1 82 dcl FGBrk fixed bin (8) int static options (constant) 1 83 init (36); /* BrkOff+2*FG*/ 1 84 dcl DisCon fixed bin (8) int static options (constant) 1 85 init (34); /* BrkOff+2*BG */ 1 86 dcl FastDis fixed bin (8) int static options (constant) 1 87 init (86); /* NakOff+NakCnt */ 1 88 dcl BrkOff fixed bin (8) int static options (constant) 1 89 init (34); /* RstOff+RstCnt */ 1 90 dcl BrkCnt fixed bin (8) int static options (constant) 1 91 init (4); /* ChnCnt*(Confirm+1) */ 1 92 dcl DatOff fixed bin (8) int static options (constant) 1 93 init (38); /* BrkOff+BrkCnt */ 1 94 dcl DatCnt fixed bin (8) int static options (constant) 1 95 init (32); /* ChnCnt*SeqCnt*SeqCnt */ 1 96 dcl AckOff fixed bin (8) int static options (constant) 1 97 init (70); /* DatOff+DatCnt */ 1 98 dcl AckCnt fixed bin (8) int static options (constant) 1 99 init (8); /* ChnCnt*SeqCnt */ 1 100 dcl NakOff fixed bin (8) int static options (constant) 1 101 init (78); /* AckOff+AckCnt */ 1 102 dcl NakCnt fixed bin (8) int static options (constant) 1 103 init (8); /* ChnCnt*SeqCnt */ 1 104 1 105 /* Protocol Parameters */ 1 106 dcl RQS fixed bin int static options (constant) init (2); 1 107 /* rcvchr's queue size (upper bound of r_pkt) */ 1 108 dcl RWS fixed bin int static options (constant) init (3); 1 109 /* Receiver's window size (upper bound of r_dat */ 1 110 dcl SWS fixed bin int static options (constant) init (3); 1 111 /* Sender's window size (upper bound of s_dat */ 1 112 dcl Lim_r_timer fixed bin int static options (constant) init (7); 1 113 /* Limit for r_timer */ 1 114 dcl Lim_s_timer fixed bin int static options (constant) init (15); 1 115 /* Limit for s_timer */ 1 116 dcl Lim_p_timer fixed bin int static options (constant) init (30); 1 117 /* Limit for pending_timer */ 1 118 dcl Timer_Interval fixed bin (71) int static options (constant) 1 119 init (125000); /* Next wakeup of timer */ 1 120 1 121 /* Tasking priority values */ 1 122 dcl Modem_Reader_Task fixed bin int static options (constant) init (0); 1 123 /* Modem Reader */ 1 124 dcl FG_task fixed bin int static options (constant) init (1); 1 125 /* FG processing */ 1 126 dcl BG_task fixed bin int static options (constant) init (2); 1 127 /* BG processing */ 1 128 dcl Idle bit (1) int static options (constant) init ("0"b); 1 129 /* Task not executing */ 1 130 1 131 /* Capability constants */ 1 132 dcl NO_MINOR fixed bin int static options (constant) init (-1); 1 133 1 134 /* WSTERM modes string indices */ 1 135 1 136 dcl WST_INIT_PL fixed bin int static options (constant) init (23); 1 137 dcl WST_INIT_LL fixed bin int static options (constant) init (79); 1 138 1 139 dcl WST_HEADER_1 fixed bin int static options (constant) init (1); 1 140 dcl WST_HEADER_2 fixed bin int static options (constant) init (2); 1 141 dcl WST_HEADER_3 fixed bin int static options (constant) init (3); 1 142 dcl WST_LENGTH_HIGH fixed bin int static options (constant) init (4); 1 143 dcl WST_LENGTH_LOW fixed bin int static options (constant) init (5); 1 144 dcl WST_MODES fixed bin int static options (constant) init (6); 1 145 dcl WST_KILL fixed bin int static options (constant) init (7); 1 146 dcl WST_ERASE fixed bin int static options (constant) init (8); 1 147 dcl WST_ESCAPE fixed bin int static options (constant) init (9); 1 148 dcl WST_LINE_LENGTH fixed bin int static options (constant) init (10); 1 149 dcl WST_PAGE_LENGTH fixed bin int static options (constant) init (11); 1 150 1 151 /* END INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 530 2 1 /* Begin include file ..... iox_modes.incl.pl1 */ 2 2 2 3 /* Written by C. D. Tavares, 03/17/75 */ 2 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 2 5 2 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 2 7 ("stream_input", "stream_output", "stream_input_output", 2 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 2 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 2 10 "direct_input", "direct_output", "direct_update"); 2 11 2 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 2 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 2 14 2 15 dcl (Stream_input initial (1), 2 16 Stream_output initial (2), 2 17 Stream_input_output initial (3), 2 18 Sequential_input initial (4), 2 19 Sequential_output initial (5), 2 20 Sequential_input_output initial (6), 2 21 Sequential_update initial (7), 2 22 Keyed_sequential_input initial (8), 2 23 Keyed_sequential_output initial (9), 2 24 Keyed_sequential_update initial (10), 2 25 Direct_input initial (11), 2 26 Direct_output initial (12), 2 27 Direct_update initial (13)) fixed bin int static options (constant); 2 28 2 29 /* End include file ..... iox_modes.incl.pl1 */ 531 3 1 /* BEGIN INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-06-15,Flegel), approve(86-12-16,MCR7580), 3 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 6* Created for control support for mowse_io_. 3 7* 2) change(86-08-01,Flegel), approve(86-12-16,MCR7580), 3 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 9* Changed version fields to char (8) and 3 10* installed version constant. 3 11* 3) change(86-10-08,Flegel), approve(86-12-16,MCR7580), 3 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 13* Added flush_subchannel_info structure. 3 14* 4) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 15* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 16* Approved. 3 17* 5) change(86-12-05,Flegel), approve(86-12-05,MCR7580), 3 18* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 19* Added mowse_io_set_video_mode_info structure. 3 20* 6) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 3 21* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 3 22* Changes to support async call channels. 3 23* END HISTORY COMMENTS */ 3 24 3 25 /* : Version number */ 3 26 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 27 dcl mowse_io_info_version_1 3 28 char (8) int static options (constant) 3 29 init ("miover_1"); 3 30 3 31 /* : Mowse store info structure */ 3 32 dcl mowse_io_store_info_ptr 3 33 ptr; 3 34 dcl 01 mowse_io_store_info based (mowse_io_store_info_ptr), 3 35 02 version char (8), 3 36 02 info_ptr ptr; /* Pointer to mowse_info_ structure */ 3 37 3 38 /* : Mowse info structure */ 3 39 dcl mowse_io_info_ptr ptr; 3 40 dcl 01 mowse_io_info based (mowse_io_info_ptr), 3 41 02 version char (8), 3 42 02 mcb_ptr ptr, /* Pointer to mowse_mcb */ 3 43 02 info_ptr ptr; /* Pointer to Mowse information (CATs etc.) */ 3 44 3 45 /* : Control info overlay for debug_on */ 3 46 dcl mowse_io_debug_info_ptr 3 47 ptr; 3 48 dcl 01 mowse_io_debug_info based (mowse_io_debug_info_ptr), 3 49 02 version char (8), 3 50 02 segment_name char (512) var; /* Debug file name */ 3 51 3 52 /* : Control info overlay for get_terminal_emulator_state */ 3 53 dcl mowse_io_terminal_state_ptr 3 54 ptr; 3 55 dcl 01 mowse_io_terminal_state 3 56 based (mowse_io_terminal_state_ptr), 3 57 02 version char (8), 3 58 02 state bit (1) unal, /* WSTERM state */ 3 59 02 mbz bit (35) unal; 3 60 3 61 /* : Control info overlay for send_message and send_local_message */ 3 62 dcl mowse_io_message_ptr ptr; 3 63 dcl 01 mowse_io_message based (mowse_io_message_ptr), 3 64 02 version char (8), 3 65 02 channel fixed bin, /* Channel of message */ 3 66 02 io_message_ptr ptr, /* Pointer to the nonvarying message */ 3 67 02 io_message_len fixed bin (21); /* Length of message */ 3 68 3 69 /* : Control info overlay for put_to_sleep */ 3 70 dcl mowse_io_sleep_info_ptr 3 71 ptr; 3 72 dcl 01 mowse_io_sleep_info based (mowse_io_sleep_info_ptr), 3 73 02 version char (8), 3 74 02 major_index fixed bin, /* CAT index of sleeper */ 3 75 02 sleep_seconds fixed bin; /* Sleep interval */ 3 76 3 77 /* : Control info for flush_subchannel */ 3 78 dcl mowse_io_flush_subchannel_info_ptr 3 79 ptr; 3 80 dcl 01 mowse_io_flush_subchannel_info 3 81 based (mowse_io_flush_subchannel_info_ptr), 3 82 02 version char (8), 3 83 02 subchannel fixed bin; /* The subchannel to be flushed (BG/FG) */ 3 84 3 85 /* : Control info to set the video mode */ 3 86 dcl mowse_io_set_video_mode_info_ptr 3 87 ptr; 3 88 dcl 01 mowse_io_set_video_mode_info 3 89 based (mowse_io_set_video_mode_info_ptr), 3 90 02 version char (8), 3 91 02 mode bit (1) unal, /* On or off */ 3 92 02 mbz bit (35) unal; 3 93 3 94 /* END INCLUDE FILE: mowse_io_control_info.incl.pl1 * * * * * * * * * * * * */ 532 4 1 /* BEGIN INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(87-04-16,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(87-06-23,Flegel), approve(87-06-23,MCR7649), 4 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 9* Converted to support the use of event channels. 4 10* 3) change(88-10-06,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 4 11* install(89-01-24,MR12.3-1012): 4 12* phx21215 - Added mowse_io_data.channel_info.foreground to use to generate 4 13* events when something happens in the foreground. 4 14* END HISTORY COMMENTS */ 4 15 4 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 17 dcl mowse_io_data_ptr ptr; 4 18 dcl 01 mowse_io_data based (mowse_io_data_ptr), 4 19 02 open_descrip char (19) var, 4 20 02 iocb_ptr ptr aligned, /* mowse_tty iocb pointer */ 4 21 02 default_iocb_ptr ptr aligned, /* mowse_i/o iocb pointer */ 4 22 02 attach_descrip char (256) var, /* Attach description */ 4 23 02 old_modes char (256) unal, /* Modes on previous iocb */ 4 24 4 25 02 current_modes char (256) unal, /* Current mode settings */ 4 26 02 WSTERM_modes (11) char (1), /* Encoded modes for WSTERM */ 4 27 02 cv_trans_struc_ptr ptr, /* Conversion table pointer */ 4 28 4 29 02 info_ptr ptr, /* Application control info seg */ 4 30 02 mcb_ptr ptr, /* Internal MCB to MOWSE */ 4 31 02 sleepers ptr, /* Queue of sleeping applications */ 4 32 02 dozers fixed bin (35), /* Number of unhandled sleeper wakeups */ 4 33 4 34 02 ws, /* Vidoe system control */ 4 35 03 flags, 4 36 04 trace bit (1) unal, 4 37 04 debug bit (1) unal, 4 38 04 mark_set bit (1) unal, 4 39 04 video_mode bit (1) unal, /* State (on/off) of video */ 4 40 04 more_input bit (1) unal, /* Last read unfinished */ 4 41 04 pad bit (31) unal, 4 42 03 read_count fixed bin (17), /* count of unfinished read commands sent */ 4 43 03 ips_mask bit (36) aligned, 4 44 4 45 02 sus_data, /* sus_ information */ 4 46 03 sus_entry ptr, /* Saved sus_ signal handler */ 4 47 03 activated bit (1) unal, /* If sus_ has been signaled */ 4 48 03 pad bit (35) unal, 4 49 4 50 02 channel_info, /* Event channel info */ 4 51 03 process_id bit (36) aligned, /* This process */ 4 52 03 wake_info, 4 53 04 wake_map (0:127) bit (1) unal, /* Break chars */ 4 54 04 pad bit (16) unal, 4 55 03 user_input like wait_info, /* Input wait channel */ 4 56 03 packet_transmitter like wait_info, /* Write events */ 4 57 03 packet_receiver, /* hcs_ events */ 4 58 04 channel fixed bin (71), /* Channel id */ 4 59 03 packet_dispatcher, /* Dispatch channels */ 4 60 04 sync_channel fixed bin (71), /* Process when quiet */ 4 61 04 async_channel fixed bin (71), /* Process NOW! */ 4 62 03 foreground, /* MF - phx21215 - read/write_status, get_event_channel info */ 4 63 04 channel fixed bin (71), /* Event channel */ 4 64 4 65 02 debug_iocb_ptr ptr, /* Debug file IOCB */ 4 66 02 trace_iocb_ptr ptr, /* Trace file IOCB */ 4 67 4 68 02 timer_info (8), 4 69 03 wakeup fixed bin (71), /* Seconds from last in queue */ 4 70 03 timer_id fixed bin, /* Who owns this wakeup */ 4 71 4 72 02 switches, /* Control switches */ 4 73 03 quit_enable bit (1) unal, /* Quit processing state */ 4 74 03 reset_write bit (1) unal, /* resetwrite requested */ 4 75 03 disconnect_active bit (1) unal, /* Disconnection occuring */ 4 76 03 rs_pending (2) bit (1) unal, /* Reset occuring */ 4 77 03 ds_pending (2) bit (1) unal, /* Disconnect occuring */ 4 78 03 br_pending bit (1) unal, /* Break occurring */ 4 79 03 brk_pending bit (1) unal, /* Break occuring (quit) */ 4 80 03 info_stored bit (1) unal, /* Info segment stored */ 4 81 03 connect_active bit (1) unal, /* Connection in progress */ 4 82 03 start_issued bit (1) unal, /* Indicates start order pending */ 4 83 03 pad bit (24) unal, 4 84 4 85 02 task, 4 86 03 active (0:2) bit (1) unal, /* Tasks which are active */ 4 87 03 pad bit (33) unal, 4 88 4 89 02 user_input, /* User_i/o input data */ 4 90 03 in fixed bin (21), /* Next free slot in repository */ 4 91 03 out fixed bin (21), /* Head of data */ 4 92 03 queue (0:4095) char (1), /* Repository */ 4 93 4 94 02 l_dat (0:1), /* Local data message queue */ 4 95 03 in_ptr ptr, /* Incoming messages */ 4 96 03 out_ptr ptr, /* Outgoing messages */ 4 97 4 98 02 r, /* Receiver data */ 4 99 03 eop char (1), /* End of packet character */ 4 100 03 sop char (1), /* Start of packet character */ 4 101 03 esc (0:2) char (1), /* 3 escape characters */ 4 102 03 esc_count fixed bin, /* Number of escaped chars in received packet */ 4 103 03 asn (0:1) fixed bin (3), /* Acknowledge sequence number */ 4 104 03 dat (0:1, 0:3) char (124) var, /* Data queues */ 4 105 03 pkt (0:2) char (129) var, /* Packet queue */ 4 106 03 pktin fixed bin, /* Next packet character in */ 4 107 03 pktout fixed bin, /* Head of packet */ 4 108 03 psn (0:1) fixed bin, /* SN for each channel */ 4 109 03 esckey bit (9) unal, /* Decoding 2nd character escape */ 4 110 03 ignoring (0:1) bit (1) unal, /* Ignore data during synchronization */ 4 111 03 pad bit (25) unal, 4 112 4 113 02 s, /* Sender data */ 4 114 03 eop char (1), /* End of packet character */ 4 115 03 sop char (1), /* Start of packet character */ 4 116 03 esc (0:2) char (1), /* 3 escape characters */ 4 117 03 dat (0:1, 0:3) char (124) var, /* Data queue */ 4 118 03 psn (0:1) fixed bin (3), /* Packet sequence number */ 4 119 03 lasn (0:1) fixed bin (3), /* Last ack sent */ 4 120 03 nasn (0:1) fixed bin (3), /* Next ack to be sent */ 4 121 03 escreq (0:255) bit (1) unal, /* Characters to be escaped */ 4 122 03 pad bit (32) unal; 4 123 4 124 /* Wait channel control struncture */ 4 125 4 126 dcl 01 wait_info based, 4 127 02 channel fixed bin (71) aligned, /* Channel ID */ 4 128 02 count fixed bin, /* Waiting count */ 4 129 02 flags, 4 130 03 transmitted bit (1) unal, /* Wakeup already generated */ 4 131 03 pad bit (35) unal; 4 132 4 133 /* END INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 533 534 535 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/24/89 0847.5 ws_debug_.pl1 >spec>install>MR12.3-1012>ws_debug_.pl1 530 1 08/10/87 1336.7 mowse_io_constants.incl.pl1 >ldd>include>mowse_io_constants.incl.pl1 531 2 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 532 3 08/10/87 1336.7 mowse_io_control_info.incl.pl1 >ldd>include>mowse_io_control_info.incl.pl1 533 4 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. AckCnt constant fixed bin(8,0) initial dcl 1-98 ref 462 AckOff constant fixed bin(8,0) initial dcl 1-96 ref 462 462 463 DatCnt constant fixed bin(8,0) initial dcl 1-94 ref 456 DatOff constant fixed bin(8,0) initial dcl 1-92 ref 456 456 457 NakCnt constant fixed bin(8,0) initial dcl 1-102 ref 467 NakOff constant fixed bin(8,0) initial dcl 1-100 ref 467 467 468 SeqCnt 001532 constant fixed bin(17,0) initial dcl 1-50 ref 458 459 464 469 SeqFld 000017 constant fixed bin(17,0) initial dcl 1-48 set ref 459* 460 460 465* 470* Stream_output 000017 constant fixed bin(17,0) initial dcl 2-15 set ref 516* addr builtin function dcl 87 ref 179 179 arg_count 000315 automatic fixed bin(17,0) dcl 51 set ref 157* 160 arg_len 000306 automatic fixed bin(21,0) dcl 47 set ref 166* arg_list_ptr 000312 automatic pointer dcl 49 set ref 165* 177* arg_ptr 000310 automatic pointer dcl 48 set ref 166* 169 171 173 asn 000100 automatic fixed bin(17,0) dcl 41 set ref 283* 285 285* based_ptr based pointer dcl 58 ref 171 173 byte builtin function dcl 91 ref 267 270 273 282 channel 000102 automatic fixed bin(17,0) dcl 43 set ref 283* 285 460* chr 000316 automatic char(1) packed unaligned dcl 52 set ref 264* 267 270 273 code 000314 automatic fixed bin(35,0) dcl 50 set ref 157* 158 158 166* 167 179* 180 cu_$arg_count 000020 constant entry external dcl 67 ref 157 cu_$arg_list_ptr 000016 constant entry external dcl 66 ref 165 cu_$arg_ptr 000010 constant entry external dcl 62 ref 166 debug_len 000103 automatic fixed bin(21,0) dcl 44 set ref 177* 179* debug_name 000521 automatic varying char(512) dcl 55 set ref 212* 221* 227 227* 227 232* 344* 353* 359 359* 359 364* debug_string 000104 automatic char(512) packed unaligned dcl 45 set ref 177* 179 179 debug_string_var 000320 automatic varying char(512) dcl 54 set ref 259* 265* 265 267* 267 270* 270 273* 273 277* 277 285* 290* divide builtin function dcl 89 ref 267 270 error_table_$active_function 000032 external static fixed bin(35,0) dcl 74 ref 158 error_table_$unimplemented_version 000036 external static fixed bin(35,0) dcl 76 ref 217 349 fields 000744 automatic fixed bin(17,0) dcl 445 set ref 457* 458 459* 460* 463* 464 465* 468* 469 470* i 000317 automatic fixed bin(21,0) dcl 53 set ref 260* 261 261 264 277* index builtin function dcl 92 ref 227 359 ioa_$general_rs 000014 constant entry external dcl 64 ref 177 iocb_ptr 000304 automatic pointer dcl 46 set ref 173* 179* iox_$attach_name 000030 constant entry external dcl 71 ref 509 iox_$close 000022 constant entry external dcl 68 ref 407 iox_$detach_iocb 000024 constant entry external dcl 69 ref 411 518 iox_$open 000026 constant entry external dcl 70 ref 516 iox_$put_chars 000012 constant entry external dcl 63 ref 179 length builtin function dcl 94 ref 221 353 mod builtin function dcl 90 ref 267 270 273 458 459 464 469 mowse_io_debug_info based structure level 1 unaligned dcl 3-48 mowse_io_info_version_1 000000 constant char(8) initial packed unaligned dcl 3-27 ref 214 346 null builtin function dcl 93 ref 169 171 205 213 254 337 345 404 415 509 509 512 519 p_asn parameter fixed bin(17,0) dcl 442 set ref 423 452* 458* 464* 469* p_channel parameter fixed bin(17,0) dcl 440 set ref 423 450* 465* 470* p_code parameter fixed bin(35,0) dcl 499 in procedure "open_file" set ref 481 509* 511 516* 517 p_code parameter fixed bin(35,0) dcl 38 in procedure "ws_debug_" set ref 117 129* 130* 189 201* 206* 217* 232* 300 312* 313* 321 333* 338* 349* 364* p_code parameter fixed bin(35,0) dcl 393 in procedure "close_file" set ref 377 400* 407* 408 411* 412 p_header parameter char packed unaligned dcl 31 set ref 240 285* 290* p_info_ptr parameter pointer dcl 34 ref 189 213 214 221 221 321 345 346 353 353 p_iocb_ptr parameter pointer dcl 390 in procedure "close_file" set ref 377 404 407* 411* 415* p_iocb_ptr parameter pointer dcl 498 in procedure "open_file" set ref 481 509* 512* 516* 518* 519* p_iocb_ptr parameter pointer dcl 37 in procedure "ws_debug_" set ref 117 130* 189 205 232* 240 254 285* 290* 300 313* 321 337 364* p_name parameter varying char dcl 494 ref 481 509 p_packet_len parameter fixed bin(21,0) dcl 33 ref 240 260 261 261 264 277 282 283 283 p_packet_ptr parameter pointer dcl 32 ref 240 261 261 264 277 282 283 283 p_psn parameter fixed bin(17,0) dcl 441 set ref 423 451* 459* p_switch_name parameter char packed unaligned dcl 495 set ref 481 509* p_type parameter fixed bin(17,0) dcl 437 ref 423 456 456 457 462 462 463 467 467 468 packet_data based char packed unaligned dcl 59 ref 261 261 264 277 282 283 283 psn 000101 automatic fixed bin(17,0) dcl 42 set ref 283* 285 285* rank builtin function dcl 88 ref 267 267 270 270 273 273 283 283 segment_name 2 based varying char(512) level 2 dcl 3-48 ref 221 221 353 353 substr builtin function dcl 86 ref 261 261 264 277 282 283 283 version based char(8) level 2 packed packed unaligned dcl 3-48 ref 214 346 wait_info based structure level 1 unaligned dcl 4-126 ws_debug_$line 000044 constant entry external dcl 81 ref 285 290 ws_error_$debug_already_on 000040 external static fixed bin(35,0) dcl 77 ref 206 ws_error_$trace_already_on 000034 external static fixed bin(35,0) dcl 75 ref 338 ws_tools_$ars 000042 constant entry external dcl 80 ref 459 460 465 470 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. And internal static bit(4) initial packed unaligned dcl 1-19 BG_task internal static fixed bin(17,0) initial dcl 1-126 BrkCnt internal static fixed bin(8,0) initial dcl 1-90 BrkOff internal static fixed bin(8,0) initial dcl 1-88 CONVERT_CRC internal static fixed bin(17,0) initial dcl 1-15 CR internal static char(1) initial packed unaligned dcl 1-31 ChkLen internal static fixed bin(17,0) initial dcl 1-62 ChnCnt internal static fixed bin(17,0) initial dcl 1-46 Confirm internal static fixed bin(8,0) initial dcl 1-78 DBGPKTS internal static bit(1) initial packed unaligned dcl 1-22 DBGREJS internal static bit(1) initial packed unaligned dcl 1-24 DBGXCHRS internal static bit(1) initial packed unaligned dcl 1-26 Direct_input internal static fixed bin(17,0) initial dcl 2-15 Direct_output internal static fixed bin(17,0) initial dcl 2-15 Direct_update internal static fixed bin(17,0) initial dcl 2-15 DisCon internal static fixed bin(8,0) initial dcl 1-84 EOPLen internal static fixed bin(17,0) initial dcl 1-66 ESC internal static char(1) initial packed unaligned dcl 1-33 FGBrk internal static fixed bin(8,0) initial dcl 1-82 FG_task internal static fixed bin(17,0) initial dcl 1-124 FastDis internal static fixed bin(8,0) initial dcl 1-86 INIT_CRC internal static fixed bin(17,0) initial dcl 1-14 Idle internal static bit(1) initial packed unaligned dcl 1-128 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 2-15 LF internal static char(1) initial packed unaligned dcl 1-35 LenLen internal static fixed bin(17,0) initial dcl 1-64 Lim_p_timer internal static fixed bin(17,0) initial dcl 1-116 Lim_r_timer internal static fixed bin(17,0) initial dcl 1-112 Lim_s_timer internal static fixed bin(17,0) initial dcl 1-114 MaxDatLen internal static fixed bin(17,0) initial dcl 1-56 MaxPktLen internal static fixed bin(17,0) initial dcl 1-70 MinPktLen internal static fixed bin(17,0) initial dcl 1-68 Modem_Reader_Task internal static fixed bin(17,0) initial dcl 1-122 NO_MINOR internal static fixed bin(17,0) initial dcl 1-132 OR internal static bit(4) initial packed unaligned dcl 1-17 REVPOLY internal static fixed bin(17,0) initial dcl 1-16 RQS internal static fixed bin(17,0) initial dcl 1-106 RWS internal static fixed bin(17,0) initial dcl 1-108 Request internal static fixed bin(8,0) initial dcl 1-76 RstCnt internal static fixed bin(8,0) initial dcl 1-80 RstOff internal static fixed bin(8,0) initial dcl 1-74 SI internal static char(1) initial packed unaligned dcl 1-38 SO internal static char(1) initial packed unaligned dcl 1-40 SOH internal static char(1) initial packed unaligned dcl 1-42 SOPLen internal static fixed bin(17,0) initial dcl 1-58 SWS internal static fixed bin(17,0) initial dcl 1-110 SeqMsk internal static fixed bin(17,0) initial dcl 1-52 Sequential_input internal static fixed bin(17,0) initial dcl 2-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_update internal static fixed bin(17,0) initial dcl 2-15 Stream_input internal static fixed bin(17,0) initial dcl 2-15 Stream_input_output internal static fixed bin(17,0) initial dcl 2-15 Timer_Interval internal static fixed bin(71,0) initial dcl 1-118 TypLen internal static fixed bin(17,0) initial dcl 1-60 WST_ERASE internal static fixed bin(17,0) initial dcl 1-146 WST_ESCAPE internal static fixed bin(17,0) initial dcl 1-147 WST_HEADER_1 internal static fixed bin(17,0) initial dcl 1-139 WST_HEADER_2 internal static fixed bin(17,0) initial dcl 1-140 WST_HEADER_3 internal static fixed bin(17,0) initial dcl 1-141 WST_INIT_LL internal static fixed bin(17,0) initial dcl 1-137 WST_INIT_PL internal static fixed bin(17,0) initial dcl 1-136 WST_KILL internal static fixed bin(17,0) initial dcl 1-145 WST_LENGTH_HIGH internal static fixed bin(17,0) initial dcl 1-142 WST_LENGTH_LOW internal static fixed bin(17,0) initial dcl 1-143 WST_LINE_LENGTH internal static fixed bin(17,0) initial dcl 1-148 WST_MODES internal static fixed bin(17,0) initial dcl 1-144 WST_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 1-149 XOR internal static bit(4) initial packed unaligned dcl 1-18 iox_modes internal static char(24) initial array dcl 2-6 mowse_io_data based structure level 1 unaligned dcl 4-18 mowse_io_data_ptr automatic pointer dcl 4-17 mowse_io_debug_info_ptr automatic pointer dcl 3-46 mowse_io_flush_subchannel_info based structure level 1 unaligned dcl 3-80 mowse_io_flush_subchannel_info_ptr automatic pointer dcl 3-78 mowse_io_info based structure level 1 unaligned dcl 3-40 mowse_io_info_ptr automatic pointer dcl 3-39 mowse_io_message based structure level 1 unaligned dcl 3-63 mowse_io_message_ptr automatic pointer dcl 3-62 mowse_io_set_video_mode_info based structure level 1 packed packed unaligned dcl 3-88 mowse_io_set_video_mode_info_ptr automatic pointer dcl 3-86 mowse_io_sleep_info based structure level 1 unaligned dcl 3-72 mowse_io_sleep_info_ptr automatic pointer dcl 3-70 mowse_io_store_info based structure level 1 unaligned dcl 3-34 mowse_io_store_info_ptr automatic pointer dcl 3-32 mowse_io_terminal_state based structure level 1 packed packed unaligned dcl 3-55 mowse_io_terminal_state_ptr automatic pointer dcl 3-53 short_iox_modes internal static char(4) initial array dcl 2-12 NAMES DECLARED BY EXPLICIT CONTEXT. close_file 001143 constant entry internal dcl 377 ref 130 313 debug_close 000101 constant entry external dcl 117 debug_open 000315 constant entry external dcl 189 extract_type 001211 constant entry internal dcl 423 ref 283 line 000126 constant entry external dcl 138 open_file 001357 constant entry internal dcl 481 ref 232 364 packet 000454 constant entry external dcl 240 trace_close 000763 constant entry external dcl 300 trace_open 001011 constant entry external dcl 321 ws_debug_ 000067 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 1776 2044 1535 2006 Length 2342 1535 46 262 240 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ws_debug_ 632 external procedure is an external procedure. close_file internal procedure shares stack frame of external procedure ws_debug_. extract_type internal procedure shares stack frame of external procedure ws_debug_. open_file internal procedure shares stack frame of external procedure ws_debug_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ws_debug_ 000100 asn ws_debug_ 000101 psn ws_debug_ 000102 channel ws_debug_ 000103 debug_len ws_debug_ 000104 debug_string ws_debug_ 000304 iocb_ptr ws_debug_ 000306 arg_len ws_debug_ 000310 arg_ptr ws_debug_ 000312 arg_list_ptr ws_debug_ 000314 code ws_debug_ 000315 arg_count ws_debug_ 000316 chr ws_debug_ 000317 i ws_debug_ 000320 debug_string_var ws_debug_ 000521 debug_name ws_debug_ 000744 fields extract_type THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ge_a alloc_char_temp call_ext_out_desc call_ext_out return_mac mdfx1 shorten_stack ext_entry ext_entry_desc set_chars_eis index_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr ioa_$general_rs iox_$attach_name iox_$close iox_$detach_iocb iox_$open iox_$put_chars ws_debug_$line ws_tools_$ars THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$active_function error_table_$unimplemented_version ws_error_$debug_already_on ws_error_$trace_already_on LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000066 106 000074 117 000075 129 000113 130 000114 132 000124 138 000125 157 000133 158 000144 160 000151 165 000155 166 000164 167 000203 169 000205 171 000211 173 000215 177 000220 179 000267 180 000306 183 000310 189 000311 201 000327 205 000330 206 000334 207 000337 212 000340 213 000345 214 000352 217 000360 218 000363 221 000364 227 000373 232 000414 234 000446 240 000447 254 000472 259 000476 260 000477 261 000507 264 000523 265 000524 267 000533 270 000556 273 000573 276 000607 277 000610 280 000617 282 000621 283 000633 285 000642 289 000727 290 000730 294 000760 300 000761 312 000775 313 000776 315 001006 321 001007 333 001023 337 001024 338 001030 339 001033 344 001034 345 001041 346 001046 349 001054 350 001057 353 001060 359 001067 364 001110 366 001142 377 001143 400 001145 404 001146 407 001153 408 001165 411 001171 412 001202 415 001206 417 001210 423 001211 450 001213 451 001215 452 001217 456 001220 457 001226 458 001231 459 001235 460 001255 461 001272 462 001273 463 001301 464 001304 465 001310 466 001323 467 001324 468 001332 469 001335 470 001341 471 001354 472 001355 475 001356 481 001357 509 001375 511 001447 512 001453 513 001455 516 001456 517 001475 518 001500 519 001512 520 001515 523 001516 ----------------------------------------------------------- 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