COMPILATION LISTING OF SEGMENT hasp_dump_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1031.7 mst Wed Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 /* Interpret a HASP multiplexer database: called from tty_dump and tty_analyze */ 11 12 /* Created: November 1979 by G. Palter */ 13 /* Modified: December 1980 by G. Palter as part of "loopback bug" fix */ 14 /* Modified: 30 March 1981 by G. Palter to add last_loopback_bcb to HMD */ 15 /* Modified: 16 April 1981 by G. Palter to interpret rts_mode flag in HMD */ 16 /* Modified: July 1981 by G. Palter to support SIGNON processing and metering */ 17 /* Modified: 20 August 1981 by G. Palter to correct bugs in displaying minor-state and loopback stacks */ 18 /* Modified: 29 December 1981 by G. Palter to let the analyze entry print the buffer chain and to properly order calls to 19* the analyzer's check_used procedure which writes into its arguments */ 20 /* Modified: 5 January 1982 by G. Palter to not display the HMD when displaying the HSTE of a single subchannel */ 21 22 23 hasp_dump_: 24 procedure (P_ttybp, P_ttyap, P_hmd_ptr, P_subchannel_idx, P_brief_sw); 25 26 27 /* Parameters */ 28 29 dcl P_ttybp pointer parameter; /* -> tty_buf segment */ 30 dcl P_ttyap pointer parameter; /* -> tty_area segment */ 31 32 dcl P_hmd_ptr pointer parameter; /* hasp_dump_: -> HASP multiplexer data */ 33 dcl P_subchannel_idx fixed binary parameter; /* hasp_dump_: index of sub-channel to dump (-1 for all) */ 34 dcl P_brief_sw bit (1) parameter; /* hasp_dump_: ON => brief output format */ 35 36 dcl P_devx fixed binary parameter; /* hasp_analyze_: LCT index of HASP multiplexer channel */ 37 dcl P_check_used entry variable parameter; /* hasp_analyze_: tracks space used in tty_buf */ 38 dcl P_long_sw bit (1) parameter; /* hasp_analyze_: ON => long output format */ 39 40 41 /* Local copies of parameters */ 42 43 dcl subchannel_idx fixed binary; 44 dcl brief_sw bit (1); 45 46 dcl devx fixed binary; 47 dcl check_used entry () options (variable) variable; 48 49 50 /* Remaining declarations */ 51 52 dcl analyze_entry bit (1) aligned; /* ON => hasp_analyze_; OFF => hasp_dump_ */ 53 54 dcl idx fixed binary; 55 56 dcl (ioa_, ioa_$nnl) entry () options (variable); 57 dcl tty_dump$print_chain entry (pointer, character (*), fixed binary (18), bit (1)); 58 59 dcl (addr, binary, currentsize, null, pointer, rel, unspec) builtin; 60 61 /* Dump a HASP multiplexer database and sub-channels (if requested) */ 62 63 /* hasp_dump_: 64* entry (P_ttybp, P_ttyap, P_hmd_ptr, P_subchannel_idx, P_brief_sw); */ 65 66 analyze_entry = "0"b; 67 68 ttybp = P_ttybp; /* copy parameters */ 69 hmd_ptr = P_hmd_ptr; 70 subchannel_idx = P_subchannel_idx; 71 brief_sw = P_brief_sw; 72 73 if (subchannel_idx = -1) | (subchannel_idx = 0) then 74 call dump_multiplexer_data (); /* global data only */ 75 else call dump_subchannel_data (subchannel_idx); /* data about one subchannel */ 76 77 return; 78 79 80 81 /* Analyze a HASP multiplexer database and all sub-channels */ 82 83 hasp_analyze_: 84 entry (P_ttybp, P_ttyap, P_devx, P_check_used, P_long_sw); 85 86 analyze_entry = "1"b; 87 88 ttybp = P_ttybp; /* copy parameters */ 89 devx = P_devx; 90 check_used = P_check_used; 91 brief_sw = ^P_long_sw; /* dump entry works the other way */ 92 93 lctp = pointer (ttybp, rel (tty_buf.lct_ptr)); 94 lctep = addr (lct.lcte_array (devx)); 95 hmd_ptr = pointer (ttybp, rel (lcte.data_base_ptr)); 96 97 call dump_multiplexer_data (); 98 99 do subchannel_idx = 1 to hmd.n_subchannels; 100 call dump_subchannel_data (subchannel_idx); 101 end; 102 103 call trace_buffer_chain (binary (rel (hmd.output_chain_ptr), 18, 0)); 104 call trace_buffer_chain (binary (rel (hmd.input.first_bufferp), 18, 0)); 105 call trace_buffer_chain (binary (rel (hmd.loopback.first_bufferp), 18, 0)); 106 call trace_buffer_chain (binary (rel (hmd.output_block.first_bufferp), 18, 0)); 107 108 do idx = 1 to hmd.n_subchannels; 109 hste_ptr = addr (hmd.subchannels (idx)); 110 call trace_buffer_chain (binary (rel (hste.input.first_bufferp), 18, 0)); 111 call trace_buffer_chain (binary (rel (hste.loopback.first_bufferp), 18, 0)); 112 call trace_buffer_chain (binary (rel (hste.output.first_bufferp), 18, 0)); 113 end; 114 115 call check_used (hmd_ptr, currentsize (hmd)); 116 117 return; 118 119 /* Dump the multiplexer's database (and the requested sub-channels also) */ 120 121 dump_multiplexer_data: 122 procedure (); 123 124 call ioa_ ("^/HMD at ^o; channel ^a; devx ^o", binary (rel (hmd_ptr), 18, 0), hmd.name, hmd.devx); 125 126 call ioa_ ("configuration:^/^3xtype = ^[workstation^;host^]; max_block_size = ^d", (hmd.type + 1), 127 hmd.max_block_size); 128 if ^brief_sw then do; /* only in long mode, please... */ 129 call ioa_ ("^3xmax_device_input_records = ^d; max_device_output_records = ^d", 130 hmd.max_device_input_records, hmd.max_device_output_records); 131 call ioa_ ("^3xic_timeout = ^d; receive_timeout = ^d; transmit_timeout = ^d", 132 hmd.ic_timeout, hmd.receive_timeout, hmd.transmit_timeout); 133 end; 134 call ioa_ ("^3xflags:^[ suspend_all_mode^]^[ signon_mode^]^[ multileave_mode^]^[ trace_mode^]^[ rts_mode^]", 135 hmd.suspend_all_mode, hmd.signon_mode, hmd.multileave_mode, hmd.trace_mode, hmd.rts_mode); 136 137 if ^brief_sw then /* keep it short when requested */ 138 call ioa_ ("loader_process = ^.3b; loader_event = ^.3b", hmd.loader_process_id, unspec (hmd.loader_event_channel)); 139 140 call ioa_ ("state = ^[down^;loading^;loaded^;started^]; minor_state = ^[send-signon^;wait-signon-response^;normal^;send-sync^;loopback^;reprocess^;send-bad-bcb^;hangup^]", 141 hmd.state, hmd.minor_state); 142 143 call ioa_ ("foreign_block_count = ^d; foreign_fcs_bytes = ^6.3b; local_block_count = ^d; local_fcs_bytes = ^6.3b", 144 hmd.foreign_block_count, unspec (hmd.foreign_fcs_bytes), 145 hmd.local_block_count, unspec (hmd.local_fcs_bytes)); 146 147 call ioa_ ("subchannels_for_output.first = ^d; subchannels_for_output.last = ^d", 148 hmd.subchannels_for_output.first, hmd.subchannels_for_output.last); 149 150 if hmd.output_chain_ptr ^= null () then 151 call ioa_ ("output_chain_ptr = ^p", hmd.output_chain_ptr); 152 153 if hmd.input.first_bufferp ^= null () then 154 call ioa_ ("input.first_bufferp = ^p; input.last_bufferp = ^p", hmd.input.first_bufferp, hmd.input.last_bufferp); 155 156 if hmd.loopback.first_bufferp ^= null () then 157 call ioa_ ("loopback.first_bufferp = ^p; loopback.last_bufferp = ^p", hmd.loopback.first_bufferp, hmd.loopback.last_bufferp); 158 159 if hmd.output_block.first_bufferp ^= null () then 160 call ioa_ ("output_block.subchannel_idx = ^d, output_block.tally = ^d; output_block.first_bufferp = ^p; output_block.last_bufferp = ^p", 161 hmd.output_block.subchannel_idx, hmd.output_block.tally, 162 hmd.output_block.first_bufferp, hmd.output_block.last_bufferp); 163 164 call ioa_ ("signon_data = ^[none^s^;^p^]; minor_state_stack = ^[none^s^;^p^]; loopback_block_chain_stack = ^[none^s^;^p^]; last_loopback_bcb = ^3.3b", 165 (hmd.signon_data_ptr = null ()), hmd.signon_data_ptr, 166 (hmd.minor_state_stack = null ()), hmd.minor_state_stack, 167 (hmd.loopback_block_chain_stack = null ()), hmd.loopback_block_chain_stack, 168 unspec (hmd.last_loopback_bcb)); 169 170 call ioa_ ("input_wabs (0:8) =^9(^[ on^; off^]^)", hmd.input_wabs (*)); 171 call ioa_ ("output_wabs (0:8) =^9(^[ on^; off^]^)", hmd.output_wabs (*)); 172 call ioa_ ("send_rts (0:8) = ^9(^[ on^; off^]^)", hmd.send_rts (*)); 173 call ioa_ ("send_rts_ack (0:8) =^9(^[ on^; off^]^)", hmd.send_rts_ack (*)); 174 175 call ioa_$nnl ("flags:^[ suspend_all_output^]^[ suspend_all_input^]^[ send_output^]^[ input_available^]^[ output_in_progress^]^[ first_foreign_block^]^[ reset_local_block_count^]", 176 hmd.suspend_all_output, hmd.suspend_all_input, hmd.send_output, hmd.flags.input_available, 177 hmd.output_in_progress, hmd.first_foreign_block, hmd.reset_local_block_count); 178 179 call ioa_ ("^[ retry_transmit_output^]^[ retry_process_output^]^[ retry_process_loopback_records^]^[ retry_process_input^]", 180 retry_transmit_output, hmd.retry_process_output, hmd.retry_process_loopback_records, 181 hmd.retry_process_input); 182 183 call ioa_ ("console_hste_idx = ^d; n_subchannels = ^d", hmd.console_hste_idx, hmd.n_subchannels); 184 185 if hmd.output_chain_ptr ^= null () then 186 call tty_dump$print_chain (ttybp, "Output-chain", binary (rel (hmd.output_chain_ptr), 18, 0), brief_sw); 187 188 if hmd.input.first_bufferp ^= null () then 189 call tty_dump$print_chain (ttybp, "Input-chain", binary (rel (hmd.input.first_bufferp), 18, 0), brief_sw); 190 191 if hmd.loopback.first_bufferp ^= null () then 192 call tty_dump$print_chain (ttybp, "Loopback-chain", binary (rel (hmd.loopback.first_bufferp), 18, 0), brief_sw); 193 194 if hmd.output_block.first_bufferp ^= null () then 195 call tty_dump$print_chain (ttybp, "Output-block", binary (rel (hmd.output_block.first_bufferp), 18, 0), brief_sw); 196 197 if ^brief_sw then /* keep it short */ 198 call dump_multiplexer_meters (); 199 200 if hmd.signon_data_ptr ^= null () then 201 call dump_signon_data (); 202 203 if hmd.minor_state_stack ^= null () then 204 call dump_minor_state_stack (); 205 206 if hmd.loopback_block_chain_stack ^= null () then 207 call dump_loopback_block_chain_stack (); 208 209 return; 210 211 end dump_multiplexer_data; 212 213 /* Print the database for an individual HASP sub-channel */ 214 215 dump_subchannel_data: 216 procedure (P_subchannel_idx); 217 218 dcl P_subchannel_idx fixed binary parameter; 219 220 hste_ptr = addr (hmd.subchannels (P_subchannel_idx)); 221 222 call ioa_ ("^/HSTE at ^o; channel ^a.^a; devx ^o", binary (rel (hste_ptr), 18, 0), hmd.name, hste.name, hste.devx); 223 224 call ioa_ ("subchannel_idx = ^d; device_type = ^[console^;reader^;printer^;punch^]; direction = ^[i/o^;input^;output^]", 225 hste.subchannel_idx, hste.device_type, (hste.direction + 1)); 226 227 call ioa_ ("rcb = ^3.3b; device_wab_idx = ^d", unspec (hste.rcb), hste.device_wab_idx); 228 229 call ioa_ ("state = ^[hungup^;listening^;dialed^]; minor_state = ^[normal^;send-rts^;wait-rts-ack^]; next_subchannel_for_output = ^d", 230 hste.state, hste.minor_state, hste.next_subchannel_for_output); 231 232 if hste.input.first_bufferp ^= null () then 233 call ioa_ ("input.n_records = ^d; input.first_bufferp = ^p; input.last_bufferp = ^p", 234 hste.input.n_records, hste.input.first_bufferp, hste.input.last_bufferp); 235 236 if hste.loopback.first_bufferp ^= null () then 237 call ioa_ ("loopback.n_records = ^d; loopback.first_bufferp = ^p; loopback.last_bufferp = ^p", 238 hste.loopback.n_records, hste.loopback.first_bufferp, hste.loopback.last_bufferp); 239 240 if hste.output.first_bufferp ^= null () then 241 call ioa_ ("output.first_bufferp = ^p; output.last_bufferp = ^p", hste.output.first_bufferp, 242 hste.output.last_bufferp); 243 244 call ioa_ ("flags:^[ requested_input^]^[ input_available^]^[ holding_output^]", 245 hste.requested_input, hste.input_available, hste.holding_output); 246 247 if ^brief_sw then /* keep it short */ 248 call dump_subchannel_meters (); 249 250 if hste.input.first_bufferp ^= null () then 251 call tty_dump$print_chain (ttybp, "Input-chain", binary (rel (hste.input.first_bufferp), 18, 0), brief_sw); 252 253 if hste.loopback.first_bufferp ^= null () then 254 call tty_dump$print_chain (ttybp, "Loopback-chain", binary (rel (hste.loopback.first_bufferp), 18, 0), brief_sw); 255 256 if hste.output.first_bufferp ^= null () then 257 call tty_dump$print_chain (ttybp, "Output-chain", binary (rel (hste.output.first_bufferp), 18, 0), brief_sw); 258 259 return; 260 261 end dump_subchannel_data; 262 263 /* Dump the multiplexer channel's metering data */ 264 265 dump_multiplexer_meters: 266 procedure (); 267 268 call ioa_ ("meters:^/^3xtime_mpx_booted = ^.3b; time_meters_copied = ^.3b; saved_meters_ptr = ^p", 269 unspec (hmd.time_mpx_booted), unspec (hmd.time_meters_copied), hmd.saved_meters_ptr); 270 271 call ioa_ ("^3xn_local_wab_set = ^d; n_input_blocks = ^d; n_input_records = ^d; n_duplicate_input_blocks = ^d", 272 hmd.n_local_wab_set, hmd.n_input_blocks, hmd.n_input_records, hmd.n_duplicate_input_blocks); 273 274 call ioa_ ("^3xn_foreign_wab_set = ^d; n_output_blocks = ^d; n_output_records = ^d", 275 hmd.n_foreign_wab_set, hmd.n_output_blocks, hmd.n_output_records); 276 277 call ioa_ ("^3xn_wraparounds = ^d; n_wraparound_blocks = ^d", hmd.n_wraparounds, hmd.n_wraparound_blocks); 278 279 return; 280 281 end dump_multiplexer_meters; 282 283 /* Dump the meters associated with a subchannel */ 284 285 dump_subchannel_meters: 286 procedure (); 287 288 call ioa_ ("meters: saved_meters_ptr = ^p", hste.saved_meters_ptr); 289 290 call ioa_ ("^3xn_local_wab_set = ^d; n_input_records = ^d; n_input_eof_records = ^d", 291 hste.device_n_local_wab_set, hste.device_n_input_records, hste.device_n_input_eof_records); 292 293 call ioa_ ("^3xn_foreign_wab_set = ^d; n_output_records = ^d; n_output_eof_records = ^d", 294 hste.device_n_foreign_wab_set, hste.device_n_output_records, hste.device_n_output_eof_records); 295 296 return; 297 298 end dump_subchannel_meters; 299 300 /* Dump the SIGNON data associated with this multiplexer */ 301 302 dump_signon_data: 303 procedure (); 304 305 hsd_ptr = pointer (ttybp, rel (hmd.signon_data_ptr)); 306 307 if ^brief_sw then /* keep it short */ 308 call ioa_ ("SIGNON data at ^o:^/^3xsignon_record_process = ^.3b; signon_record_event = ^.3b", 309 binary (rel (hsd_ptr), 18, 0), hmd_signon_data.processid, 310 unspec (hmd_signon_data.event_channel)); 311 312 if analyze_entry then 313 call check_used (hsd_ptr, currentsize (hmd_signon_data)); 314 315 return; /* don't bother to dump the actual record */ 316 317 end dump_signon_data; 318 319 /* Dump the minor state stack */ 320 321 dump_minor_state_stack: 322 procedure (); 323 324 dcl next_msse_ptr pointer; 325 326 do msse_ptr = pointer (ttybp, rel (hmd.minor_state_stack)) 327 repeat (next_msse_ptr) while (msse_ptr ^= null ()); 328 call dump_msse (); 329 if (msse.previous = null ()) then 330 next_msse_ptr = null (); 331 else next_msse_ptr = pointer (ttybp, rel (msse.previous)); 332 end; 333 334 return; 335 336 337 338 /* Dump a single entry on the minor state stack */ 339 340 dump_msse: procedure (); 341 342 dcl idx fixed binary; 343 344 call ioa_ ("^/MSSE at ^o; ^[previous = ^p^;last entry^s^]; minor_state = ^[send-signon^;wait-signon-response^;normal^;send-sync^;loopback^;reprocess^;send-bad-bcb^;hangup^]", 345 binary (rel (msse_ptr), 18, 0), (msse.previous ^= null ()), msse.previous, msse.minor_state); 346 347 do idx = 1 to hmd.n_subchannels; 348 if msse.subchannels(idx).loopback.first_bufferp ^= null () then do; 349 call ioa_ ("^3xSubchannel ^d; loopback.n_records = ^d; loopback.first_bufferp = ^p; loopback.last_bufferp = ^d", 350 idx, msse.subchannels(idx).loopback.n_records, 351 msse.subchannels(idx).loopback.first_bufferp, 352 msse.subchannels(idx).loopback.last_bufferp); 353 call tty_dump$print_chain (ttybp, "Saved loopback records", 354 binary (rel (msse.subchannels(idx).loopback.first_bufferp), 355 18, 0), 356 brief_sw); 357 if analyze_entry then 358 call trace_buffer_chain (binary (rel (msse.subchannels(idx).loopback.first_bufferp), 359 18, 0)); 360 end; 361 end; 362 363 if analyze_entry then 364 call check_used (msse_ptr, currentsize (msse)); 365 366 return; 367 368 end dump_msse; 369 370 end dump_minor_state_stack; 371 372 /* Dump the loopback block chain stack */ 373 374 dump_loopback_block_chain_stack: 375 procedure (); 376 377 dcl next_lbcse_ptr pointer; 378 379 do lbcse_ptr = pointer (ttybp, rel (hmd.loopback_block_chain_stack)) 380 repeat (next_lbcse_ptr) while (lbcse_ptr ^= null ()); 381 call dump_lbcse (); 382 if (lbcse.previous = null ()) then 383 next_lbcse_ptr = null (); 384 else next_lbcse_ptr = pointer (ttybp, rel (lbcse.previous)); 385 end; 386 387 return; 388 389 390 391 /* Dump a single entry on the stack */ 392 393 dump_lbcse: procedure (); 394 395 call ioa_ ("^/LBCSE at ^o; ^[previous = ^p^;last entry^s^]; first_bufferp = ^p; last_bufferp = ^p", 396 binary (rel (lbcse_ptr), 18, 0), (lbcse.previous ^= null ()), lbcse.previous, 397 lbcse.loopback.first_bufferp, lbcse.loopback.last_bufferp); 398 399 if lbcse.loopback.first_bufferp ^= null () then do; 400 call tty_dump$print_chain (ttybp, "Saved loopback block chain", 401 binary (rel (lbcse.loopback.first_bufferp), 18, 0), brief_sw); 402 if analyze_entry then 403 call trace_buffer_chain (binary (rel (lbcse.loopback.first_bufferp), 18, 0)); 404 end; 405 406 if analyze_entry then 407 call check_used (lbcse_ptr, currentsize (lbcse)); 408 409 return; 410 411 end dump_lbcse; 412 413 end dump_loopback_block_chain_stack; 414 415 /* Trace a chain and buffers and account for the space used */ 416 417 trace_buffer_chain: 418 procedure (P_chain_offset); 419 420 dcl P_chain_offset fixed binary (18) parameter; 421 422 dcl offset fixed binary (18); 423 424 offset = P_chain_offset; 425 426 do while (offset ^= 0); 427 if (offset < binary (tty_buf.borig, 18, 0)) then 428 return; /* invalid buffer chain */ 429 blockp = pointer (ttybp, offset); 430 offset = buffer.next; /* following call smashes buffer's contents */ 431 call check_used (blockp, (16 * (binary (buffer.size_code) + 1))); 432 end; 433 434 return; 435 436 end trace_buffer_chain; 437 1 1 /* BEGIN INCLUDE FILE ... hasp_mpx_data.incl.pl1 */ 1 2 /* Created: September-October 1979 by G. Palter */ 1 3 /* Modified: December 1980 by G. Palter as part of "loopback bug" fix */ 1 4 /* Modified: 30 March 1981 by G. Palter to add last_loopback_bcb */ 1 5 /* Modified: 24 July 1981 by G. Palter to add hmd_signon_data, update minor states, and add metering data */ 1 6 1 7 1 8 /* HASP multiplexer data */ 1 9 1 10 dcl 1 hmd aligned based (hmd_ptr), 1 11 2 name character (32) unaligned, /* name of major channel */ 1 12 2 devx fixed binary, /* device (LCT) index of the channel */ 1 13 2 configuration_data like hasp_configuration_data, /* data supplied by load operation that controls multiplexer 1 14* operation (EG: type, block size, etc.) */ 1 15 2 loader_process_id bit (36), /* process to be notified on state change for multiplexer */ 1 16 2 loader_event_channel fixed binary (71), /* ... and the channel to be used */ 1 17 2 dialup_info like dialup_info, /* information saved from DIALUP interrupt */ 1 18 2 state fixed binary, /* state of multiplexer -- down/loading/loaded/started */ 1 19 2 minor_state fixed binary, /* state when running -- normal/need sync/loopback/etc. */ 1 20 2 foreign_block_count fixed binary, /* # of last block received from foreign side */ 1 21 2 foreign_fcs_bytes character (2) unaligned, /* last FCS received from foreign side */ 1 22 2 local_block_count fixed binary, /* # of last block sent by multiplexer */ 1 23 2 local_fcs_bytes character (2) unaligned, /* last FCS sent by multiplexer */ 1 24 2 subchannels_for_output, /* a queue of sub-channels waiting SEND OUTPUT interrupts */ 1 25 3 first fixed binary, /* ... index of first sub-channel to interrupt */ 1 26 3 last fixed binary, /* ... index of last sub-channel */ 1 27 2 output_chain_ptr pointer, /* -> chain of buffers presently being sent to the FNP */ 1 28 2 input, /* chain of input blocks waiting to be split into records */ 1 29 3 first_bufferp pointer, /* ... -> first buffer in the chain */ 1 30 3 last_bufferp pointer, /* ... -> last buffer in the chain */ 1 31 2 loopback, /* chain of loopbacked blocks waiting to be retransmitted */ 1 32 3 first_bufferp pointer, 1 33 3 last_bufferp pointer, 1 34 2 output_block, /* the output block presently being constructed */ 1 35 3 subchannel_idx fixed binary, /* ... sub-channel whose records are contained in this block, 1 36* or -1 if this block contains records from several */ 1 37 3 tally fixed binary, /* ... # of characters in the block */ 1 38 3 first_bufferp pointer, /* ... -> first buffer in the block */ 1 39 3 last_bufferp pointer, /* ... -> last buffer in the block */ 1 40 2 signon_data_ptr pointer, /* -> data needed to send a SIGNON record */ 1 41 2 minor_state_stack pointer, /* -> top of minor state stack */ 1 42 2 loopback_block_chain_stack pointer, /* -> top of loopback block chain stack */ 1 43 2 last_loopback_bcb character (1) unaligned, /* BCB character of last block loopbacked from FNP */ 1 44 2 pad bit (27) unaligned, 1 45 2 bit_arrays aligned, 1 46 3 input_wabs (0:8) bit (1) unaligned, /* input wait-a-bits: OFF => input device not ready; foreign 1 47* side should not send further data */ 1 48 3 output_wabs (0:8) bit (1) unaligned, /* output wait-a-bits: OFF => output device not ready; 1 49* multiplexer should not send further data */ 1 50 3 send_rts (0:8) bit (1) unaligned, /* ON => an RTS record should be sent */ 1 51 3 send_rts_ack (0:8) bit (1) unaligned, /* ON => an RTS acknowledgement record should be sent */ 1 52 2 flags aligned, 1 53 3 suspend_all_output bit (1) unaligned, /* ON => don't send any output at all to foreign side */ 1 54 3 suspend_all_input bit (1) unaligned, /* ON => foreign side should send no input: this flag is only 1 55* set while multiplexer is loaded but not started */ 1 56 3 send_output bit (1) unaligned, /* ON => have permission to send data to FNP */ 1 57 3 input_available bit (1) unaligned, /* ON => input is being held for us by our parent */ 1 58 3 output_in_progress bit (1) unaligned, /* ON => a data block is being sent to the FNP */ 1 59 3 first_foreign_block bit (1) unaligned, /* ON => first block yet to arrive from foreign side; when it 1 60* does, accept it's block count without question */ 1 61 3 reset_local_block_count bit (1) unaligned, /* ON => set local block count to known value in next block */ 1 62 3 retry_transmit_output bit (1) unaligned, /* ON => write to the parent failed: lack of room */ 1 63 3 retry_process_output bit (1) unaligned, /* ON => call to process_output_block failed: lack of room */ 1 64 3 retry_process_loopback_records bit (1) unaligned, /* ON => call to process_loopback_records failed: no room */ 1 65 3 retry_process_input bit (1) unaligned, /* ON => call to process_input_block failed: lack of room */ 1 66 3 pad bit (25) unaligned, 1 67 2 time_mpx_booted fixed binary (71), /* date/time when multiplexer completed loading */ 1 68 2 time_meters_copied fixed binary (71), /* date/time multiplexer meters were last saved */ 1 69 2 meters like hasp_mpx_meters, /* interesting events */ 1 70 2 saved_meters_ptr pointer, /* -> hasp_mpx_meters structure for copy_meters order */ 1 71 2 console_hste_idx fixed binary, /* index of sub-channel data for operator's console */ 1 72 2 n_subchannels fixed binary, /* # of sub-channels configured in this multiplexer */ 1 73 2 subchannels (hmd_n_subchannels refer (hmd.n_subchannels)) like hste; 1 74 1 75 dcl hmd_ptr pointer; 1 76 dcl hmd_n_subchannels fixed binary; /* to allocate hmd structure */ 1 77 1 78 dcl (HMD_DOWN initial (1), /* multiplexer is down */ 1 79 HMD_LOADING initial (2), /* multiplexer is being loaded */ 1 80 HMD_LOADED initial (3), /* multiplexer has been successfully loaded */ 1 81 HMD_STARTED initial (4)) /* multiplexer has been started (will dialup sub-channels) */ 1 82 fixed binary static options (constant); 1 83 1 84 dcl (HMD_SEND_SIGNON initial (1), /* multiplexer waiting to transmit a SIGNON record */ 1 85 HMD_WAIT_SIGNON_RESPONSE initial (2), /* multiplexer is waiting for remote system's response */ 1 86 HMD_NORMAL initial (3), /* normal data transfer */ 1 87 HMD_SEND_SYNC_BLOCK initial (4), /* multiplexer must send special block to FNP to cause the FNP 1 88* to stop loopback process */ 1 89 HMD_LOOPBACK initial (5), /* FNP is returning previous output of multiplexer */ 1 90 HMD_REPROCESS initial (6), /* multiplexer is making initial pass over records loopbacked 1 91* by FNP: records are being rewritten or saved */ 1 92 HMD_SEND_BAD_BCB_BLOCK initial (7), /* multiplexer must send bad BCB block on next SEND OUTPUT */ 1 93 HMD_HANGUP_LINE initial (8)) /* multiplexer must hangup the line on next SEND OUTPUT */ 1 94 fixed binary static options (constant); 1 95 1 96 1 97 /* HASP sub-channel data */ 1 98 1 99 dcl 1 hste aligned based (hste_ptr), 1 100 2 name character (8) unaligned, /* name of device excluding name of multiplexer */ 1 101 2 subchannel_idx fixed binary, /* index of this entry in hmd.subchannels array */ 1 102 2 device_type fixed binary, /* type of device -- console/reader/printer/punch */ 1 103 2 direction fixed binary, /* direction of transfers permitted */ 1 104 2 devx fixed binary, /* channel (LCT) index of this subchannel */ 1 105 2 rcb character (1) unaligned, /* the RCB for this sub-channel */ 1 106 2 device_wab_idx fixed binary, /* index in wait-a-bit arrays for this device */ 1 107 2 dialup_info aligned like dialup_info, /* information for DIALUP interrupt */ 1 108 2 state fixed binary, /* state of sub-channel -- hungup/listening/dialed */ 1 109 2 minor_state fixed binary, /* clarification of dialed-up state -- 1 110* normal/send-rts/wait-ack */ 1 111 2 next_subchannel_for_output fixed binary, /* # of next sub-channel to receive SEND OUTPUT after us */ 1 112 2 input, /* input records waiting to be supplied to user ring */ 1 113 3 n_records fixed binary, /* ... # of records in the chain */ 1 114 3 first_bufferp pointer, /* ... -> first buffer in chain: individual records are 1 115* separated by buffer.break */ 1 116 3 last_bufferp pointer, /* ... -> last buffer in chain */ 1 117 2 loopback, /* loopbacked records waiting to be transmitted */ 1 118 3 n_records fixed binary, /* ... # of records (not used) */ 1 119 3 first_bufferp pointer, 1 120 3 last_bufferp pointer, 1 121 2 output, /* partial output record taken from tty_write to allow ... */ 1 122 3 first_bufferp pointer, /* ... MCS to request yet more output from the user */ 1 123 3 last_bufferp pointer, 1 124 2 flags aligned, 1 125 3 requested_input bit (1) unaligned, /* ON => read called with no input available: send interrupt 1 126* when some becomes available */ 1 127 3 input_available bit (1) unaligned, /* ON => some input is present in an as yet not completely 1 128* processed block: send this sub-channel an interrupt */ 1 129 3 holding_output bit (1) unaligned, /* ON => write called but not all output taken: send 1 130* interrupt when more output may be processed */ 1 131 3 pad bit (33) unaligned, 1 132 2 meters like hasp_subchannel_meters, /* interesting events for this subchannel */ 1 133 2 saved_meters_ptr pointer; /* -> hasp_subchannel_meters structure for copy_meters call */ 1 134 1 135 dcl hste_ptr pointer; 1 136 1 137 dcl (HSTE_HUNGUP initial (1), /* sub-channel is hungup */ 1 138 HSTE_LISTENING initial (2), /* sub-channel is waiting for a dialup from major channel */ 1 139 HSTE_DIALED initial (3)) /* sub-channel is dialed-up and capable of data transfer under 1 140* the control of the following minor states */ 1 141 fixed binary static options (constant); 1 142 1 143 dcl (HSTE_NORMAL initial (1), /* sub-channel is in normal data transfer */ 1 144 HSTE_SEND_RTS initial (2), /* sub-channel needs to request permission from foreign side 1 145* to transmit a file */ 1 146 HSTE_WAIT_RTS_ACK initial (3)) /* sub-channel is waiting for permission from foreign side */ 1 147 fixed binary static options (constant); 1 148 1 149 dcl (HSTE_INPUT_OUTPUT initial (0), /* device can perform input and output */ 1 150 HSTE_INPUT_ONLY initial (1), /* device can perform input only */ 1 151 HSTE_OUTPUT_ONLY initial (2)) /* device can perform output only */ 1 152 fixed binary static options (constant); 1 153 1 154 1 155 /* Data required to transmit a SIGNON record to the remote host */ 1 156 1 157 dcl 1 hmd_signon_data aligned based (hsd_ptr), 1 158 2 processid bit (36), /* process to be informed of results */ 1 159 2 pad bit (36), 1 160 2 event_channel fixed binary (71), /* IPC event channel on which signal is sent */ 1 161 2 record character (80) unaligned; /* the actual SIGNON record */ 1 162 1 163 dcl hsd_ptr pointer; 1 164 1 165 1 166 /* HASP minor state stack entry */ 1 167 1 168 dcl 1 msse aligned based (msse_ptr), 1 169 2 previous pointer, /* -> prior entry on the stack */ 1 170 2 minor_state fixed binary, /* minor state of multiplexer when this entry created */ 1 171 2 subchannels (hmd.n_subchannels), 1 172 3 loopback, /* subchannel's loopback chain when this entry created */ 1 173 4 n_records fixed binary, 1 174 4 first_bufferp pointer, 1 175 4 last_bufferp pointer; 1 176 1 177 dcl msse_ptr pointer; 1 178 1 179 1 180 /* HASP loopback block chain stack entry */ 1 181 1 182 dcl 1 lbcse aligned based (lbcse_ptr), 1 183 2 previous pointer, /* -> previous entry on the stack */ 1 184 2 loopback, /* loopback block chain when this entry was created */ 1 185 3 first_bufferp pointer, 1 186 3 last_bufferp pointer; 1 187 1 188 dcl lbcse_ptr pointer; 1 189 1 190 /* END INCLUDE FILE ... hasp_mpx_data.incl.pl1 */ 438 439 2 1 /* BEGIN INCLUDE FILE ... hasp_load_data.incl.pl1 */ 2 2 /* Created: October 1979 by G. Palter */ 2 3 /* Modified: 16 April 1981 by G. Palter to add rts_mode */ 2 4 2 5 /* Data structure for "load_mpx" highly-privileged control order */ 2 6 2 7 dcl 1 hasp_load_data aligned based (hld_ptr), 2 8 2 event_channel fixed binary (71), /* event channel to signal loading, crashes, etc. */ 2 9 2 configuration_data like hasp_configuration_data, /* data which controls multiplexer (see below) */ 2 10 2 n_subchannels fixed binary, /* # of configured sub-channels */ 2 11 2 subchannels (hasp_load_data_n_subchannels refer (hasp_load_data.n_subchannels)), 2 12 3 devx fixed binary, /* device index of sub-channel for validating the load */ 2 13 3 device_type fixed binary, /* type of device -- console/printer/reader/punch */ 2 14 3 device_number fixed binary; /* if not console, the device's number (EG: printer 3) */ 2 15 2 16 dcl hasp_load_data_n_subchannels fixed binary; 2 17 dcl hld_ptr pointer; 2 18 2 19 2 20 /* Event messages for a HASP multiplexer bootload channel */ 2 21 2 22 dcl (HASP_MPX_UP initial (1), /* multiplexer has come up */ 2 23 HASP_MPX_DOWN initial (2), /* multiplexer has gone down */ 2 24 HASP_MPX_MASKED initial (3)) /* multiplexer channel was masked */ 2 25 fixed binary (71) static options (constant); 2 26 2 27 2 28 /* Multiplexer configuration data */ 2 29 2 30 dcl 1 hasp_configuration_data aligned based, 2 31 2 type fixed binary, /* type of multiplexer -- workstation/host */ 2 32 2 max_block_size fixed binary, /* maximum block size for transmission over the line */ 2 33 2 max_device_input_records fixed binary, /* maximum # of input records to be held for a device */ 2 34 2 max_device_output_records fixed binary, /* maximum # of output records to be held */ 2 35 2 ic_timeout fixed binary, /* # of seconds to wait for initial connection */ 2 36 2 receive_timeout fixed binary, /* # of seconds to wait before sending a NAK */ 2 37 2 transmit_timeout fixed binary, /* # of seconds to wait before sending ACK0 (workstation) */ 2 38 2 max_naks fixed binary, /* # of NAKs received/transmitted before line considered down */ 2 39 2 flags, 2 40 3 suspend_all_mode bit (1) unaligned, /* ON => multiplexer should disallow all input whenever a 2 41* single input device goes not ready */ 2 42 3 signon_mode bit (1) unaligned, /* ON => multiplexer must send/receive a SIGNON record before 2 43* allowing data transfer on other devices */ 2 44 3 multileave_mode bit (1) unaligned, /* ON => multiplexer may include records for several devices 2 45* in a single block */ 2 46 3 trace_mode bit (1) unaligned, /* ON => multiplexer should record input and output blocks via 2 47* MCS tracing mechansim */ 2 48 3 rts_mode bit (1) unaligned, /* ON => multiplexer must request permission from remote 2 49* host/workstation before transmitting new files */ 2 50 3 pad bit (31) unaligned; 2 51 2 52 dcl (HASP_WORKSTATION initial (0), /* multiplexer is a workstation */ 2 53 HASP_HOST initial (1)) /* multiplexer is a host */ 2 54 fixed binary static options (constant); 2 55 3 1 /* BEGIN INCLUDE FILE ... hasp_device_data.incl.pl1 */ 3 2 /* Created: November 1979 by G. Palter */ 3 3 3 4 /* HASP device types */ 3 5 3 6 dcl (HASP_CONSOLE initial (1), /* operator's console */ 3 7 HASP_READER initial (2), 3 8 HASP_PRINTER initial (3), 3 9 HASP_PUNCH initial (4)) 3 10 fixed binary static options (constant); 3 11 3 12 3 13 /* Name of each type of device as used by the remote I/O daemon software */ 3 14 3 15 dcl HASP_DEVICE_NAMES (4) character (32) static options (constant) initial ("teleprinter", "reader", "printer", "punch"); 3 16 3 17 3 18 /* Maximum record length for each type of device */ 3 19 3 20 dcl HASP_MAX_DEVICE_RECORD_LTHS (4) fixed binary (21) static options (constant) initial (80, 80, 132, 80); 3 21 3 22 /* END INCLUDE FILE ... hasp_device_data.incl.pl1 */ 2 56 2 57 2 58 dcl (HASP_MIN_MAX_BLOCK_SIZE initial (400), /* minimum block size allowed as maximum block size */ 2 59 HASP_MAX_MAX_BLOCK_SIZE initial (1017)) 2 60 fixed binary static options (constant); 2 61 2 62 2 63 /* Default values for HASP configuration */ 2 64 2 65 dcl 1 DEFAULT_HASP_CONFIGURATION_DATA aligned static options (constant), 2 66 2 type fixed binary initial (1), /* host */ 2 67 2 max_block_size fixed binary initial (400), 2 68 2 max_device_input_records fixed binary initial (6), 2 69 2 max_device_output_records fixed binary initial (6), 2 70 2 ic_timeout fixed binary initial (30), 2 71 2 receive_timeout fixed binary initial (3), 2 72 2 transmit_timeout fixed binary initial (2), 2 73 2 max_naks fixed binary initial (10), 2 74 2 flags, 2 75 3 suspend_all_mode bit (1) unaligned initial ("0"b), 2 76 3 signon_mode bit (1) unaligned initial ("0"b), 2 77 3 multileave_mode bit (1) unaligned initial ("1"b), 2 78 3 trace_mode bit (1) unaligned initial ("0"b), 2 79 3 rts_mode bit (1) unaligned initial ("0"b), 2 80 3 pad bit (31) unaligned initial (""b); 2 81 2 82 /* END INCLUDE FILE ... hasp_load_data.incl.pl1 */ 440 441 4 1 /* BEGIN INCLUDE FILE ... hasp_mpx_meters.incl.pl1 */ 4 2 /* Created: 24 July 1981 by G. Palter */ 4 3 4 4 /* Data returned by comm_meters_ for a HASP multiplexer channel */ 4 5 4 6 dcl 1 hasp_mpx_meters_data aligned based (hmmd_ptr), 4 7 2 version fixed binary, 4 8 2 time_mpx_booted fixed binary (71), /* time when multiplexer actually loaded */ 4 9 2 time_meters_copied fixed binary (71), /* time meters last copied */ 4 10 2 idle_interval fixed binary, /* # of seconds to go once around the idle loop */ 4 11 2 current_meters like hasp_mpx_meters, 4 12 2 saved_meters like hasp_mpx_meters; 4 13 4 14 dcl hmmd_ptr pointer; 4 15 4 16 dcl HASP_MPX_METERS_DATA_VERSION_1 fixed binary static options (constant) initial (1); 4 17 4 18 4 19 /* Meters accumulated for a HASP multiplexer channel */ 4 20 4 21 dcl 1 hasp_mpx_meters aligned based (hmm_ptr), 4 22 2 input_meters, 4 23 3 n_local_wab_set fixed binary (35), /* # times we stopped accepting ALL input */ 4 24 3 n_input_blocks fixed binary (35), 4 25 3 n_input_records fixed binary (35), 4 26 3 n_duplicate_input_blocks fixed binary (35), /* # of input blocks ignored as duplicates */ 4 27 2 output_meters, 4 28 3 n_foreign_wab_set fixed binary (35), /* # times they stopped ALL our output */ 4 29 3 n_output_blocks fixed binary (35), 4 30 3 n_output_records fixed binary (35), 4 31 2 wraparound_meters, /* describes when our output was returned by FNP */ 4 32 3 n_wraparounds fixed binary (35), 4 33 3 n_wraparound_blocks fixed binary (35); 4 34 4 35 dcl hmm_ptr pointer; 4 36 4 37 /* END INCLUDE FILE ... hasp_mpx_meters.incl.pl1 */ 442 443 5 1 /* BEGIN INCLUDE FILE ... hasp_subchannel_meters.incl.pl1 */ 5 2 /* Created: 24 July 1981 by G. Palter */ 5 3 5 4 /* Data returned by comm_meters_ for a subchannel of a HASP multiplexer channel */ 5 5 5 6 dcl 1 hasp_subchannel_meters_data aligned based (hsmd_ptr), 5 7 2 version fixed binary, 5 8 2 flags, 5 9 3 report_input_meters bit (1) unaligned, /* ON => report input meters for this subchannel */ 5 10 3 report_output_meters bit (1) unaligned, /* ON => report output meters for this subchannel */ 5 11 3 pad bit (34) unaligned, 5 12 2 current_meters like hasp_subchannel_meters, 5 13 2 saved_meters like hasp_subchannel_meters; 5 14 5 15 dcl hsmd_ptr pointer; 5 16 5 17 dcl HASP_SUBCHANNEL_METERS_DATA_VERSION_1 fixed binary static options (constant) initial (1); 5 18 5 19 5 20 /* Meters accumulated for a subchannel of a HASP multiplexer channel */ 5 21 5 22 dcl 1 hasp_subchannel_meters aligned based (hsm_ptr), 5 23 2 input_meters, 5 24 3 device_n_local_wab_set fixed binary (35), /* # of times we had to stop accepting input */ 5 25 3 device_n_input_records fixed binary (35), 5 26 3 device_n_input_eof_records fixed binary (35), 5 27 2 output_meters, 5 28 3 device_n_foreign_wab_set fixed binary (35), /* # of times local system stopped our output */ 5 29 3 device_n_output_records fixed binary (35), 5 30 3 device_n_output_eof_records fixed binary (35); 5 31 5 32 dcl hsm_ptr pointer; 5 33 5 34 /* END INCLUDE FILE ... hasp_subchannel_meters.incl.pl1 */ 444 445 6 1 /* BEGIN INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 6 2 6 3 /* Defines constants and structures used by MCS interrupt handlers */ 6 4 6 5 /* Created 08/21/78 by Robert Coren */ 6 6 /* Echo negotiation types added sometime by Bernie Greenberg */ 6 7 /* TIMER and USER_INTERRUPT added in spring of 1982 by Olin Sibert */ 6 8 /* MASKED type added June 23, 1982, by Robert Coren */ 6 9 6 10 dcl DIALUP fixed bin int static options (constant) init (1); 6 11 dcl HANGUP fixed bin int static options (constant) init (2); 6 12 dcl CRASH fixed bin int static options (constant) init (3); 6 13 dcl SEND_OUTPUT fixed bin int static options (constant) init (4); 6 14 dcl INPUT_AVAILABLE fixed bin int static options (constant) init (5); 6 15 dcl ACCEPT_INPUT fixed bin int static options (constant) init (6); 6 16 dcl INPUT_REJECTED fixed bin int static options (constant) init (7); 6 17 dcl QUIT fixed bin int static options (constant) init (8); 6 18 dcl LINE_STATUS fixed bin int static options (constant) init (9); 6 19 dcl DIAL_STATUS fixed bin int static options (constant) init (10); 6 20 dcl WRU_TIMEOUT fixed bin int static options (constant) init (11); 6 21 dcl SPACE_AVAILABLE fixed bin int static options (constant) init (12); 6 22 dcl ACKNOWLEDGE_ECHNEGO_INIT fixed bin int static options (constant) init (13); 6 23 dcl ACKNOWLEDGE_ECHNEGO_STOP fixed bin int static options (constant) init (14); 6 24 dcl TIMER fixed bin int static options (constant) init (15); 6 25 dcl USER_INTERRUPT fixed bin int static options (constant) init (16); 6 26 dcl MASKED fixed bin int static options (constant) init (17); 6 27 6 28 dcl interrupt_info bit (72) aligned; 6 29 6 30 dcl 1 dialup_info aligned, /* for use with DIALUP interrupt */ 6 31 2 line_type fixed bin (9) unal uns, 6 32 2 buffer_pad fixed bin (9) unal uns, /* free space multiplexer would like in output bufs */ 6 33 2 baud_rate fixed bin (18) unal uns, 6 34 2 max_buf_size fixed bin (9) unal uns, 6 35 2 receive_mode_device bit (1) unal, /* device must be told to enter receive mode */ 6 36 2 pad bit (26) unal; 6 37 6 38 dcl 1 rtx_info aligned, /* for use with ACCEPT_INPUT interrupt */ 6 39 2 input_chain unaligned, 6 40 3 chain_head bit (18) unaligned, 6 41 3 chain_tail bit (18) unaligned, 6 42 2 input_count fixed bin (18) unal uns, 6 43 2 flags unaligned, 6 44 3 break_char bit (1), /* data contains a break character */ 6 45 3 output_in_fnp bit (1), /* there is output in the FNP */ 6 46 3 output_in_ring_0 bit (1), /* there is output in ring 0 */ 6 47 3 formfeed_present bit (1), /* input contains a formfeed character */ 6 48 3 pad bit (14); 6 49 6 50 dcl 1 timer_info aligned, /* Info supplied with TIMER interrupt */ 6 51 2 id bit (36) aligned, /* ID which was supplied in call to mcs_timer$set */ 6 52 2 subchan_idx fixed bin; /* Index of subchannel on whose behalf timer was set */ 6 53 6 54 /* END INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 446 447 7 1 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 7 2 7 3 /* Date Last Modified and Reason 7 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 7 5* Modified January 1978 by Robert Coren and Larry Johnson for variable-size buffers 7 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 7 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 7 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 7 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 7 10* Modified November 1979 by C. Hornig for MCS tracing. 7 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 7 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 7 13* Modified March 1980 by Robert Coren to reorganize metering information 7 14* Modified December 1980 by Robert Coren to add FNP-specific events 7 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 7 16* Modified November 1984 by Robert Coren to add tty_area_lock 7 17**/ 7 18 7 19 dcl ttybp ptr, 7 20 tty_buf$ ext static, /* tty buffer segment */ 7 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 7 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 7 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 7 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 7 25 7 26 7 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 7 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 7 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 7 30 7 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 7 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 7 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 7 34 7 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 7 36 2 slock bit (36), /* per system lock */ 7 37 2 absorig fixed bin (24), /* abs address of this seg */ 7 38 2 borig bit (18), /* index of start of buffer area */ 7 39 2 bleft fixed bin (18), /* words left in pool */ 7 40 2 free bit (18), /* pointer to start of free pool */ 7 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 7 42 2 padb1 bit (28) unaligned, 7 43 2 lct_ptr ptr, /* pointer to logical channel table */ 7 44 7 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 7 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 7 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 7 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 7 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 7 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 7 51 2 minbuf fixed bin (18), /* min output buffer size */ 7 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 7 53 7 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 7 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 7 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 7 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 7 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 7 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 7 60 7 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 7 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 7 63 2 bfx fixed bin, /* used in calls to iobm */ 7 64 2 nquits fixed bin (35), /* number of quits */ 7 65 2 space_needed_data, 7 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 7 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 7 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 7 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 7 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 7 71 7 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 7 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 7 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 7 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 7 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 7 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 7 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 7 79 7 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 7 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 7 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 7 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 7 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 7 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 7 86 7 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 7 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 7 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 7 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 7 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 7 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 7 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 7 94 7 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 7 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 7 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 7 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 7 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 7 100 2 echo_neg_mux_nonecho fixed bin (35), 7 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 7 102 7 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 7 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 7 105 2 trace unaligned, /* tracing information */ 7 106 3 flags, 7 107 4 enable bit, /* global tracing control */ 7 108 4 default_mode bit, /* whether to trace channels by default */ 7 109 4 read bit, /* read */ 7 110 4 write bit, /* write */ 7 111 4 data bit, /* buffers on reads and writes */ 7 112 4 control bit, /* control, priv_control, and hpriv_control */ 7 113 4 modes bit, /* (get set check)_modes */ 7 114 4 interrupt bit, /* interrupt, interrupt_later */ 7 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 7 116 4 start bit, /* start, stop */ 7 117 4 shutdown bit, /* shutdown */ 7 118 4 space_man bit, /* tty_space_man$* */ 7 119 4 pad_flags bit (6), 7 120 3 data_offset bit (18), /* offset of tracing data */ 7 121 7 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 7 123 7 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 7 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 7 126 2 timer_count fixed bin, /* Number of timers outstanding */ 7 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 7 128 7 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 7 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 7 131 7 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 7 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 7 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 7 135 7 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 7 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 7 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 7 139 7 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 7 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 7 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 7 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 7 144 7 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 7 146 7 147 2 pad2 (13) fixed bin (35), 7 148 7 149 2 free_space fixed bin; /* start of free space region */ 7 150 7 151 8 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 8 2 8 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 8 4 8 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 8 6 8 7 /* format: style3 */ 8 8 8 9 declare lock_ptr pointer; 8 10 declare 1 hc_fast_lock aligned based (lock_ptr), 8 11 2 pid bit (36) aligned, /* holder of lock */ 8 12 2 event bit (36) aligned, /* event associated with lock */ 8 13 2 flags aligned, 8 14 3 notify_sw bit (1) unaligned, 8 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 8 16 8 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 7 152 7 153 7 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 448 449 9 1 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 9 2 9 3 /* Created by J. Stern 7/26/78 */ 9 4 /* Metering information added by C. Hornig, March 1980. */ 9 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 9 6 9 7 dcl lctp ptr; /* ptr to logical channel table */ 9 8 dcl lctep ptr; /* ptr to logical channel table entry */ 9 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 9 10 9 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 9 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 9 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 9 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 9 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 9 16 2 pad (11) fixed bin, 9 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 9 18 9 19 9 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 9 21 2 lock bit (36), /* channel lock */ 9 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 9 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 9 24 2 flags unal, 9 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 9 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 9 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 9 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 9 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 9 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 9 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 9 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 9 33 3 trace bit (1) unal, /* ON to trace this channel */ 9 34 3 unused bit (1) unal, 9 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 9 36 2 major_channel_info, 9 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 9 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 9 39 2 queue_entries, 9 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 9 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 9 42 2 word_counts, 9 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 9 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 9 45 9 46 2 meters, 9 47 3 in_bytes fixed bin (35), 9 48 3 out_bytes fixed bin (35), 9 49 3 in, 9 50 4 calls fixed bin (35), 9 51 4 interrupts fixed bin (35), 9 52 4 call_time fixed bin (71), 9 53 4 interrupt_time fixed bin (71), 9 54 3 out like lcte.meters.in, 9 55 3 control like lcte.meters.in, 9 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 9 57 9 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 9 59 9 60 2 pad (3) fixed bin (35); 9 61 9 62 9 63 dcl lcntp ptr; /* ptr to logical channel name table */ 9 64 9 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 9 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 9 67 9 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 9 69 9 70 9 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 450 451 10 1 /* BEGIN INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 10 2 10 3 10 4 10 5 /****^ HISTORY COMMENTS: 10 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 10 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 10 8* Add data needed for the uncp multiplexer (DSA gateway) interface 10 9* implementation. 10 10* END HISTORY COMMENTS */ 10 11 10 12 10 13 /* 10 14* Separated from tty_buf.incl.pl1 aug 78 by J. Nicholls 10 15* Modified May 1979 by Larry Johnson to add max_buffer_tally array and to use unsigned variables. 10 16* Reported in February 1982 the modifications to add the "turn" bit in flags. 10 17**/ 10 18 10 19 dcl blockp ptr; /* pointer which block entry is based on */ 10 20 dcl free_blockp ptr; /* pointer to head of free space chain */ 10 21 10 22 10 23 dcl 1 free_block aligned based (free_blockp), /* format of start of free block */ 10 24 2 next bit (18), /* foward pointer to next free block */ 10 25 2 size fixed bin; /* number of words in this block */ 10 26 10 27 10 28 dcl 1 buffer based (blockp) aligned, /* buffer definition */ 10 29 2 next fixed bin (18) unal uns, /* addr of next buffer */ 10 30 2 flags unaligned, 10 31 3 end_of_page bit (1) unaligned, /* buffer contains end of page */ 10 32 3 converted bit (1) unaligned, /* buffer contains converted input */ 10 33 3 break bit (1) unaligned, /* buffer contains break character */ 10 34 3 mark bit (1) unaligned, /* buffer contains first character after "mark" */ 10 35 3 turn bit (1) unaligned, /* ON if the turn must be sent */ 10 36 3 pad bit (1) unaligned, 10 37 2 size_code fixed bin (3) unal uns, /* (nwords/16) - 1 */ 10 38 2 tally fixed bin (9) unal uns, /* number of characters in buffer */ 10 39 2 chars (0:59) char (1) unaligned; /* room for 60 data characters */ 10 40 10 41 /* the following array, if indexed by buffer.size_code will give maximum number of characters permitted in that buffer */ 10 42 10 43 dcl max_buffer_tally (0:7) fixed bin int static options (constant) init (60, 124, 188, 252, 316, 380, 444, 508); 10 44 10 45 /* END INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 452 453 454 end hasp_dump_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1537.3 hasp_dump_.pl1 >special_ldd>install>MR12.2-1061>hasp_dump_.pl1 438 1 03/27/82 0429.7 hasp_mpx_data.incl.pl1 >ldd>include>hasp_mpx_data.incl.pl1 440 2 10/20/82 0938.5 hasp_load_data.incl.pl1 >ldd>include>hasp_load_data.incl.pl1 2-56 3 03/27/82 0436.6 hasp_device_data.incl.pl1 >ldd>include>hasp_device_data.incl.pl1 442 4 03/27/82 0429.7 hasp_mpx_meters.incl.pl1 >ldd>include>hasp_mpx_meters.incl.pl1 444 5 03/27/82 0429.7 hasp_subchannel_meters.incl.pl1 >ldd>include>hasp_subchannel_meters.incl.pl1 446 6 10/20/82 0938.6 mcs_interrupt_info.incl.pl1 >ldd>include>mcs_interrupt_info.incl.pl1 448 7 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 7-152 8 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 450 9 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 452 10 07/19/88 1524.3 tty_buffer_block.incl.pl1 >special_ldd>install>MR12.2-1061>tty_buffer_block.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. P_brief_sw parameter bit(1) packed unaligned dcl 34 ref 23 71 P_chain_offset parameter fixed bin(18,0) dcl 420 ref 417 424 P_check_used parameter entry variable dcl 37 ref 83 90 P_devx parameter fixed bin(17,0) dcl 36 ref 83 89 P_hmd_ptr parameter pointer dcl 32 ref 23 69 P_long_sw parameter bit(1) packed unaligned dcl 38 ref 83 91 P_subchannel_idx parameter fixed bin(17,0) dcl 33 in procedure "hasp_dump_" ref 23 70 P_subchannel_idx parameter fixed bin(17,0) dcl 218 in procedure "dump_subchannel_data" ref 215 220 P_ttyap parameter pointer dcl 30 ref 23 83 P_ttybp parameter pointer dcl 29 ref 23 68 83 88 addr builtin function dcl 59 ref 94 109 220 analyze_entry 000110 automatic bit(1) dcl 52 set ref 66* 86* 312 357 363 402 406 binary builtin function dcl 59 ref 103 103 104 104 105 105 106 106 110 110 111 111 112 112 124 124 185 185 188 188 191 191 194 194 222 222 250 250 253 253 256 256 307 307 344 344 353 353 357 357 395 395 400 400 402 402 427 431 bit_arrays 67 based structure level 2 dcl 1-10 blockp 000134 automatic pointer dcl 10-19 set ref 429* 430 431* 431 borig 2 based bit(18) level 2 dcl 7-35 ref 427 brief_sw 000101 automatic bit(1) packed unaligned dcl 44 set ref 71* 91* 128 137 185* 188* 191* 194* 197 247 250* 253* 256* 307 353* 400* buffer based structure level 1 dcl 10-28 check_used 000104 automatic entry variable dcl 47 set ref 90* 115 312 363 406 431 configuration_data 11 based structure level 2 dcl 1-10 console_hste_idx 112 based fixed bin(17,0) level 2 dcl 1-10 set ref 183* currentsize builtin function dcl 59 ref 115 115 312 312 363 363 406 406 data_base_ptr 1 based pointer level 2 packed packed unaligned dcl 9-20 ref 95 device_n_foreign_wab_set 42 based fixed bin(35,0) level 4 dcl 1-99 set ref 293* device_n_input_eof_records 41 based fixed bin(35,0) level 4 dcl 1-99 set ref 290* device_n_input_records 40 based fixed bin(35,0) level 4 dcl 1-99 set ref 290* device_n_local_wab_set 37 based fixed bin(35,0) level 4 dcl 1-99 set ref 290* device_n_output_eof_records 44 based fixed bin(35,0) level 4 dcl 1-99 set ref 293* device_n_output_records 43 based fixed bin(35,0) level 4 dcl 1-99 set ref 293* device_type 3 based fixed bin(17,0) level 2 dcl 1-99 set ref 224* device_wab_idx 7 based fixed bin(17,0) level 2 dcl 1-99 set ref 227* devx 000102 automatic fixed bin(17,0) dcl 46 in procedure "hasp_dump_" set ref 89* 94 devx 10 based fixed bin(17,0) level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 124* devx 5 based fixed bin(17,0) level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 222* dialup_info 000124 automatic structure level 1 dcl 6-30 direction 4 based fixed bin(17,0) level 2 dcl 1-99 ref 224 event_channel 2 based fixed bin(71,0) level 2 dcl 1-157 ref 307 307 first 36 based fixed bin(17,0) level 3 dcl 1-10 set ref 147* first_bufferp 42 based pointer level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 104 104 153 153* 188 188 188 first_bufferp 20 based pointer level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 110 110 232 232* 250 250 250 first_bufferp 54 based pointer level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 106 106 159 159* 194 194 194 first_bufferp 6 based pointer array level 4 in structure "msse" dcl 1-168 in procedure "hasp_dump_" set ref 348 349* 353 353 357 357 first_bufferp 32 based pointer level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 112 112 240 240* 256 256 256 first_bufferp 26 based pointer level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 111 111 236 236* 253 253 253 first_bufferp 46 based pointer level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 105 105 156 156* 191 191 191 first_bufferp 2 based pointer level 3 in structure "lbcse" dcl 1-182 in procedure "hasp_dump_" set ref 395* 399 400 400 402 402 first_foreign_block 70(05) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 175* flags 70 based structure level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" flags 36 based structure level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" flags 21 based structure level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" foreign_block_count 32 based fixed bin(17,0) level 2 dcl 1-10 set ref 143* foreign_fcs_bytes 33 based char(2) level 2 packed packed unaligned dcl 1-10 ref 143 143 hasp_configuration_data based structure level 1 dcl 2-30 hasp_mpx_meters based structure level 1 dcl 4-21 hasp_subchannel_meters based structure level 1 dcl 5-22 hc_fast_lock based structure level 1 dcl 8-10 hmd based structure level 1 dcl 1-10 set ref 115 115 hmd_ptr 000112 automatic pointer dcl 1-75 set ref 69* 95* 99 103 103 104 104 105 105 106 106 108 109 115* 115 115 124 124 124 124 126 126 129 129 131 131 131 134 134 134 134 134 137 137 137 140 140 143 143 143 143 143 143 147 147 150 150 153 153 153 156 156 156 159 159 159 159 159 164 164 164 164 164 164 164 164 170 171 172 173 175 175 175 175 175 175 175 179 179 179 179 183 183 185 185 185 188 188 188 191 191 191 194 194 194 200 203 206 220 222 268 268 268 268 268 271 271 271 271 274 274 274 277 277 305 326 347 363 363 379 hmd_signon_data based structure level 1 dcl 1-157 set ref 312 312 holding_output 36(02) based bit(1) level 3 packed packed unaligned dcl 1-99 set ref 244* hsd_ptr 000116 automatic pointer dcl 1-163 set ref 305* 307 307 307 307 307 312* 312 312 hste based structure level 1 dcl 1-99 hste_ptr 000114 automatic pointer dcl 1-135 set ref 109* 110 110 111 111 112 112 220* 222 222 222 222 224 224 224 227 227 227 229 229 229 232 232 232 232 236 236 236 236 240 240 240 244 244 244 250 250 250 253 253 253 256 256 256 288 290 290 290 293 293 293 ic_timeout 15 based fixed bin(17,0) level 3 dcl 1-10 set ref 131* idx 000214 automatic fixed bin(17,0) dcl 342 in procedure "dump_msse" set ref 347* 348 349* 349 349 349 353 353 357 357* idx 000111 automatic fixed bin(17,0) dcl 54 in procedure "hasp_dump_" set ref 108* 109* in 10 based structure level 3 in structure "lcte" dcl 9-20 in procedure "hasp_dump_" in 2 based structure level 2 in structure "saved_meters" dcl 9-68 in procedure "hasp_dump_" in 30 based structure array level 4 in structure "lct" dcl 9-11 in procedure "hasp_dump_" input 16 based structure level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" input 42 based structure level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" input_available 36(01) based bit(1) level 3 in structure "hste" packed packed unaligned dcl 1-99 in procedure "hasp_dump_" set ref 244* input_available 70(03) based bit(1) level 3 in structure "hmd" packed packed unaligned dcl 1-10 in procedure "hasp_dump_" set ref 175* input_meters 37 based structure level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" input_meters 76 based structure level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" input_wabs 67 based bit(1) array level 3 packed packed unaligned dcl 1-10 set ref 170* ioa_ 000010 constant entry external dcl 56 ref 124 126 129 131 134 137 140 143 147 150 153 156 159 164 170 171 172 173 179 183 222 224 227 229 232 236 240 244 268 271 274 277 288 290 293 307 344 349 395 ioa_$nnl 000012 constant entry external dcl 56 ref 175 last 37 based fixed bin(17,0) level 3 dcl 1-10 set ref 147* last_bufferp 34 based pointer level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 240* last_bufferp 44 based pointer level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 153* last_bufferp 30 based pointer level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 236* last_bufferp 22 based pointer level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 232* last_bufferp 56 based pointer level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 159* last_bufferp 10 based pointer array level 4 in structure "msse" dcl 1-168 in procedure "hasp_dump_" set ref 349* last_bufferp 4 based pointer level 3 in structure "lbcse" dcl 1-182 in procedure "hasp_dump_" set ref 395* last_bufferp 50 based pointer level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 156* last_loopback_bcb 66 based char(1) level 2 packed packed unaligned dcl 1-10 ref 164 164 lbcse based structure level 1 dcl 1-182 set ref 406 406 lbcse_ptr 000122 automatic pointer dcl 1-188 set ref 379* 379* 382 384* 395 395 395 395 395 395 399 400 400 402 402 406* 406 406 lct based structure level 1 dcl 9-11 lct_ptr 6 based pointer level 2 dcl 7-35 ref 93 lcte based structure level 1 dcl 9-20 lcte_array 20 based structure array level 2 dcl 9-11 set ref 94 lctep 000132 automatic pointer dcl 9-8 set ref 94* 95 lctp 000130 automatic pointer dcl 9-7 set ref 93* 94 loader_event_channel 24 based fixed bin(71,0) level 2 dcl 1-10 ref 137 137 loader_process_id 22 based bit(36) level 2 dcl 1-10 set ref 137* local_block_count 34 based fixed bin(17,0) level 2 dcl 1-10 set ref 143* local_fcs_bytes 35 based char(2) level 2 packed packed unaligned dcl 1-10 ref 143 143 loopback 24 based structure level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" loopback 4 based structure array level 3 in structure "msse" dcl 1-168 in procedure "hasp_dump_" loopback 2 based structure level 2 in structure "lbcse" dcl 1-182 in procedure "hasp_dump_" loopback 46 based structure level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" loopback_block_chain_stack 64 based pointer level 2 dcl 1-10 set ref 164 164* 206 379 max_block_size 12 based fixed bin(17,0) level 3 dcl 1-10 set ref 126* max_device_input_records 13 based fixed bin(17,0) level 3 dcl 1-10 set ref 129* max_device_output_records 14 based fixed bin(17,0) level 3 dcl 1-10 set ref 129* meters 76 based structure level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" meters 6 based structure level 2 in structure "lcte" dcl 9-20 in procedure "hasp_dump_" meters 26 based structure array level 3 in structure "lct" dcl 9-11 in procedure "hasp_dump_" meters 37 based structure level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" minor_state 13 based fixed bin(17,0) level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 229* minor_state 31 based fixed bin(17,0) level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 140* minor_state 2 based fixed bin(17,0) level 2 in structure "msse" dcl 1-168 in procedure "hasp_dump_" set ref 344* minor_state_stack 62 based pointer level 2 dcl 1-10 set ref 164 164* 203 326 msse based structure level 1 dcl 1-168 set ref 363 363 msse_ptr 000120 automatic pointer dcl 1-177 set ref 326* 326* 329 331* 344 344 344 344 344 348 349 349 349 353 353 357 357 363* 363 363 multileave_mode 21(02) based bit(1) level 4 packed packed unaligned dcl 1-10 set ref 134* n_duplicate_input_blocks 101 based fixed bin(35,0) level 4 dcl 1-10 set ref 271* n_foreign_wab_set 102 based fixed bin(35,0) level 4 dcl 1-10 set ref 274* n_input_blocks 77 based fixed bin(35,0) level 4 dcl 1-10 set ref 271* n_input_records 100 based fixed bin(35,0) level 4 dcl 1-10 set ref 271* n_local_wab_set 76 based fixed bin(35,0) level 4 dcl 1-10 set ref 271* n_output_blocks 103 based fixed bin(35,0) level 4 dcl 1-10 set ref 274* n_output_records 104 based fixed bin(35,0) level 4 dcl 1-10 set ref 274* n_records 4 based fixed bin(17,0) array level 4 in structure "msse" dcl 1-168 in procedure "hasp_dump_" set ref 349* n_records 24 based fixed bin(17,0) level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 236* n_records 16 based fixed bin(17,0) level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 232* n_subchannels 113 based fixed bin(17,0) level 2 dcl 1-10 set ref 99 108 115 115 183* 347 363 363 n_wraparound_blocks 106 based fixed bin(35,0) level 4 dcl 1-10 set ref 277* n_wraparounds 105 based fixed bin(35,0) level 4 dcl 1-10 set ref 277* name based char(8) level 2 in structure "hste" packed packed unaligned dcl 1-99 in procedure "hasp_dump_" set ref 222* name based char(32) level 2 in structure "hmd" packed packed unaligned dcl 1-10 in procedure "hasp_dump_" set ref 124* 222* next based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 10-28 ref 430 next_lbcse_ptr 000224 automatic pointer dcl 377 set ref 382* 384* 385 next_msse_ptr 000204 automatic pointer dcl 324 set ref 329* 331* 332 next_subchannel_for_output 14 based fixed bin(17,0) level 2 dcl 1-99 set ref 229* null builtin function dcl 59 ref 150 153 156 159 164 164 164 185 188 191 194 200 203 206 232 236 240 250 253 256 326 329 329 344 348 379 382 382 395 399 offset 000242 automatic fixed bin(18,0) dcl 422 set ref 424* 426 427 429 430* output 32 based structure level 2 dcl 1-99 output_block 52 based structure level 2 dcl 1-10 output_chain_ptr 40 based pointer level 2 dcl 1-10 set ref 103 103 150 150* 185 185 185 output_in_progress 70(04) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 175* output_meters 102 based structure level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" output_meters 42 based structure level 3 in structure "hste" dcl 1-99 in procedure "hasp_dump_" output_wabs 67(09) based bit(1) array level 3 packed packed unaligned dcl 1-10 set ref 171* pointer builtin function dcl 59 ref 93 95 305 326 331 379 384 429 previous based pointer level 2 in structure "lbcse" dcl 1-182 in procedure "hasp_dump_" set ref 382 384 395 395* previous based pointer level 2 in structure "msse" dcl 1-168 in procedure "hasp_dump_" set ref 329 331 344 344* processid based bit(36) level 2 dcl 1-157 set ref 307* rcb 6 based char(1) level 2 packed packed unaligned dcl 1-99 ref 227 227 receive_timeout 16 based fixed bin(17,0) level 3 dcl 1-10 set ref 131* rel builtin function dcl 59 ref 93 95 103 103 104 104 105 105 106 106 110 110 111 111 112 112 124 124 185 185 188 188 191 191 194 194 222 222 250 250 253 253 256 256 305 307 307 326 331 344 344 353 353 357 357 379 384 395 395 400 400 402 402 requested_input 36 based bit(1) level 3 packed packed unaligned dcl 1-99 set ref 244* reset_local_block_count 70(06) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 175* retry_process_input 70(10) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 179* retry_process_loopback_records 70(09) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 179* retry_process_output 70(08) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 179* retry_transmit_output 70(07) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 179* rts_mode 21(04) based bit(1) level 4 packed packed unaligned dcl 1-10 set ref 134* saved_meters_ptr 46 based pointer level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 288* saved_meters_ptr 110 based pointer level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 268* send_output 70(02) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 175* send_rts 67(18) based bit(1) array level 3 packed packed unaligned dcl 1-10 set ref 172* send_rts_ack 67(27) based bit(1) array level 3 packed packed unaligned dcl 1-10 set ref 173* signon_data_ptr 60 based pointer level 2 dcl 1-10 set ref 164 164* 200 305 signon_mode 21(01) based bit(1) level 4 packed packed unaligned dcl 1-10 set ref 134* size_code 0(24) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 10-28 ref 431 state 30 based fixed bin(17,0) level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 140* state 12 based fixed bin(17,0) level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 229* subchannel_idx 52 based fixed bin(17,0) level 3 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 159* subchannel_idx 2 based fixed bin(17,0) level 2 in structure "hste" dcl 1-99 in procedure "hasp_dump_" set ref 224* subchannel_idx 000100 automatic fixed bin(17,0) dcl 43 in procedure "hasp_dump_" set ref 70* 73 73 75* 99* 100* subchannels 114 based structure array level 2 in structure "hmd" dcl 1-10 in procedure "hasp_dump_" set ref 109 220 subchannels 4 based structure array level 2 in structure "msse" dcl 1-168 in procedure "hasp_dump_" subchannels_for_output 36 based structure level 2 dcl 1-10 suspend_all_input 70(01) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 175* suspend_all_mode 21 based bit(1) level 4 packed packed unaligned dcl 1-10 set ref 134* suspend_all_output 70 based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 175* tally 53 based fixed bin(17,0) level 3 dcl 1-10 set ref 159* time_meters_copied 74 based fixed bin(71,0) level 2 dcl 1-10 ref 268 268 time_mpx_booted 72 based fixed bin(71,0) level 2 dcl 1-10 ref 268 268 trace_mode 21(03) based bit(1) level 4 packed packed unaligned dcl 1-10 set ref 134* transmit_timeout 17 based fixed bin(17,0) level 3 dcl 1-10 set ref 131* tty_buf based structure level 1 dcl 7-35 tty_dump$print_chain 000014 constant entry external dcl 57 ref 185 188 191 194 250 253 256 353 400 ttybp 000126 automatic pointer dcl 7-19 set ref 68* 88* 93 93 95 185* 188* 191* 194* 250* 253* 256* 305 326 331 353* 379 384 400* 427 429 type 11 based fixed bin(17,0) level 3 dcl 1-10 ref 126 unspec builtin function dcl 59 ref 137 137 143 143 143 143 164 164 227 227 268 268 268 268 307 307 wraparound_meters 105 based structure level 3 dcl 1-10 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT_INPUT internal static fixed bin(17,0) initial dcl 6-15 ACKNOWLEDGE_ECHNEGO_INIT internal static fixed bin(17,0) initial dcl 6-22 ACKNOWLEDGE_ECHNEGO_STOP internal static fixed bin(17,0) initial dcl 6-23 CRASH internal static fixed bin(17,0) initial dcl 6-12 DEFAULT_HASP_CONFIGURATION_DATA internal static structure level 1 dcl 2-65 DIALUP internal static fixed bin(17,0) initial dcl 6-10 DIAL_STATUS internal static fixed bin(17,0) initial dcl 6-19 FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 7-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 7-32 HANGUP internal static fixed bin(17,0) initial dcl 6-11 HASP_CONSOLE internal static fixed bin(17,0) initial dcl 3-6 HASP_DEVICE_NAMES internal static char(32) initial array packed unaligned dcl 3-15 HASP_HOST internal static fixed bin(17,0) initial dcl 2-52 HASP_MAX_DEVICE_RECORD_LTHS internal static fixed bin(21,0) initial array dcl 3-20 HASP_MAX_MAX_BLOCK_SIZE internal static fixed bin(17,0) initial dcl 2-58 HASP_MIN_MAX_BLOCK_SIZE internal static fixed bin(17,0) initial dcl 2-58 HASP_MPX_DOWN internal static fixed bin(71,0) initial dcl 2-22 HASP_MPX_MASKED internal static fixed bin(71,0) initial dcl 2-22 HASP_MPX_METERS_DATA_VERSION_1 internal static fixed bin(17,0) initial dcl 4-16 HASP_MPX_UP internal static fixed bin(71,0) initial dcl 2-22 HASP_PRINTER internal static fixed bin(17,0) initial dcl 3-6 HASP_PUNCH internal static fixed bin(17,0) initial dcl 3-6 HASP_READER internal static fixed bin(17,0) initial dcl 3-6 HASP_SUBCHANNEL_METERS_DATA_VERSION_1 internal static fixed bin(17,0) initial dcl 5-17 HASP_WORKSTATION internal static fixed bin(17,0) initial dcl 2-52 HMD_DOWN internal static fixed bin(17,0) initial dcl 1-78 HMD_HANGUP_LINE internal static fixed bin(17,0) initial dcl 1-84 HMD_LOADED internal static fixed bin(17,0) initial dcl 1-78 HMD_LOADING internal static fixed bin(17,0) initial dcl 1-78 HMD_LOOPBACK internal static fixed bin(17,0) initial dcl 1-84 HMD_NORMAL internal static fixed bin(17,0) initial dcl 1-84 HMD_REPROCESS internal static fixed bin(17,0) initial dcl 1-84 HMD_SEND_BAD_BCB_BLOCK internal static fixed bin(17,0) initial dcl 1-84 HMD_SEND_SIGNON internal static fixed bin(17,0) initial dcl 1-84 HMD_SEND_SYNC_BLOCK internal static fixed bin(17,0) initial dcl 1-84 HMD_STARTED internal static fixed bin(17,0) initial dcl 1-78 HMD_WAIT_SIGNON_RESPONSE internal static fixed bin(17,0) initial dcl 1-84 HSTE_DIALED internal static fixed bin(17,0) initial dcl 1-137 HSTE_HUNGUP internal static fixed bin(17,0) initial dcl 1-137 HSTE_INPUT_ONLY internal static fixed bin(17,0) initial dcl 1-149 HSTE_INPUT_OUTPUT internal static fixed bin(17,0) initial dcl 1-149 HSTE_LISTENING internal static fixed bin(17,0) initial dcl 1-137 HSTE_NORMAL internal static fixed bin(17,0) initial dcl 1-143 HSTE_OUTPUT_ONLY internal static fixed bin(17,0) initial dcl 1-149 HSTE_SEND_RTS internal static fixed bin(17,0) initial dcl 1-143 HSTE_WAIT_RTS_ACK internal static fixed bin(17,0) initial dcl 1-143 INPUT_AVAILABLE internal static fixed bin(17,0) initial dcl 6-14 INPUT_REJECTED internal static fixed bin(17,0) initial dcl 6-16 LINE_STATUS internal static fixed bin(17,0) initial dcl 6-18 MASKED internal static fixed bin(17,0) initial dcl 6-26 QUIT internal static fixed bin(17,0) initial dcl 6-17 SEND_OUTPUT internal static fixed bin(17,0) initial dcl 6-13 SPACE_AVAILABLE internal static fixed bin(17,0) initial dcl 6-21 TIMER internal static fixed bin(17,0) initial dcl 6-24 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 7-33 USER_INTERRUPT internal static fixed bin(17,0) initial dcl 6-25 WRU_TIMEOUT internal static fixed bin(17,0) initial dcl 6-20 abs_buf_limit internal static fixed bin(18,0) initial dcl 7-19 bsizec internal static fixed bin(17,0) initial dcl 7-28 buf_per_second internal static fixed bin(17,0) initial dcl 7-29 free_block based structure level 1 dcl 10-23 free_blockp automatic pointer dcl 10-20 hasp_load_data based structure level 1 dcl 2-7 hasp_load_data_n_subchannels automatic fixed bin(17,0) dcl 2-16 hasp_mpx_meters_data based structure level 1 dcl 4-6 hasp_subchannel_meters_data based structure level 1 dcl 5-6 hld_ptr automatic pointer dcl 2-17 hmd_n_subchannels automatic fixed bin(17,0) dcl 1-76 hmm_ptr automatic pointer dcl 4-35 hmmd_ptr automatic pointer dcl 4-14 hsm_ptr automatic pointer dcl 5-32 hsmd_ptr automatic pointer dcl 5-15 input_bpart internal static fixed bin(18,0) initial dcl 7-19 interrupt_info automatic bit(72) dcl 6-28 lcnt based structure level 1 dcl 9-65 lcntp automatic pointer dcl 9-63 lct_size automatic fixed bin(17,0) dcl 9-9 lock_ptr automatic pointer dcl 8-9 max_buffer_tally internal static fixed bin(17,0) initial array dcl 10-43 output_bpart internal static fixed bin(18,0) initial dcl 7-19 qblock_size internal static fixed bin(17,0) initial dcl 7-27 rtx_info automatic structure level 1 dcl 6-38 saved_meters based structure level 1 dcl 9-68 timer_info automatic structure level 1 dcl 6-50 tty_buf$ external static fixed bin(17,0) dcl 7-19 tty_ev internal static fixed bin(17,0) initial dcl 7-19 NAMES DECLARED BY EXPLICIT CONTEXT. dump_lbcse 004676 constant entry internal dcl 393 ref 381 dump_loopback_block_chain_stack 004642 constant entry internal dcl 374 ref 206 dump_minor_state_stack 004356 constant entry internal dcl 321 ref 203 dump_msse 004412 constant entry internal dcl 340 ref 328 dump_multiplexer_data 001766 constant entry internal dcl 121 ref 73 97 dump_multiplexer_meters 004020 constant entry internal dcl 265 ref 197 dump_signon_data 004266 constant entry internal dcl 302 ref 200 dump_subchannel_data 003312 constant entry internal dcl 215 ref 75 100 dump_subchannel_meters 004165 constant entry internal dcl 285 ref 247 hasp_analyze_ 001571 constant entry external dcl 83 hasp_dump_ 001527 constant entry external dcl 23 trace_buffer_chain 005037 constant entry internal dcl 417 ref 103 104 105 106 110 111 112 357 402 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5206 5224 5131 5216 Length 5642 5131 16 401 55 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME hasp_dump_ 832 external procedure is an external procedure. dump_multiplexer_data internal procedure shares stack frame of external procedure hasp_dump_. dump_subchannel_data internal procedure shares stack frame of external procedure hasp_dump_. dump_multiplexer_meters internal procedure shares stack frame of external procedure hasp_dump_. dump_subchannel_meters internal procedure shares stack frame of external procedure hasp_dump_. dump_signon_data internal procedure shares stack frame of external procedure hasp_dump_. dump_minor_state_stack internal procedure shares stack frame of external procedure hasp_dump_. dump_msse internal procedure shares stack frame of external procedure hasp_dump_. dump_loopback_block_chain_stack internal procedure shares stack frame of external procedure hasp_dump_. dump_lbcse internal procedure shares stack frame of external procedure hasp_dump_. trace_buffer_chain internal procedure shares stack frame of external procedure hasp_dump_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME hasp_dump_ 000100 subchannel_idx hasp_dump_ 000101 brief_sw hasp_dump_ 000102 devx hasp_dump_ 000104 check_used hasp_dump_ 000110 analyze_entry hasp_dump_ 000111 idx hasp_dump_ 000112 hmd_ptr hasp_dump_ 000114 hste_ptr hasp_dump_ 000116 hsd_ptr hasp_dump_ 000120 msse_ptr hasp_dump_ 000122 lbcse_ptr hasp_dump_ 000124 dialup_info hasp_dump_ 000126 ttybp hasp_dump_ 000130 lctp hasp_dump_ 000132 lctep hasp_dump_ 000134 blockp hasp_dump_ 000204 next_msse_ptr dump_minor_state_stack 000214 idx dump_msse 000224 next_lbcse_ptr dump_loopback_block_chain_stack 000242 offset trace_buffer_chain THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ent_var_desc call_ext_out_desc return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_ ioa_$nnl tty_dump$print_chain NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 001522 66 001534 68 001535 69 001541 70 001544 71 001546 73 001553 75 001561 77 001563 83 001564 86 001576 88 001600 89 001604 90 001606 91 001613 93 001624 94 001630 95 001633 97 001640 99 001641 100 001651 101 001653 103 001655 104 001663 105 001671 106 001677 108 001705 109 001715 110 001721 111 001726 112 001734 113 001742 115 001744 117 001765 121 001766 124 001767 126 002023 128 002053 129 002056 131 002102 134 002131 137 002176 140 002231 143 002255 147 002316 150 002342 153 002367 156 002417 159 002447 164 002506 170 002575 171 002616 172 002641 173 002664 175 002707 179 002766 183 003030 185 003054 188 003115 191 003157 194 003222 197 003263 200 003267 203 003275 206 003303 209 003311 215 003312 220 003314 222 003321 224 003360 227 003413 229 003443 232 003472 236 003526 240 003562 244 003612 247 003645 250 003651 253 003713 256 003756 259 004017 265 004020 268 004021 271 004057 274 004111 277 004140 279 004164 285 004165 288 004166 290 004207 293 004236 296 004265 302 004266 305 004267 307 004274 312 004335 315 004355 321 004356 326 004357 328 004370 329 004371 331 004400 332 004406 334 004411 340 004412 344 004413 347 004460 348 004471 349 004477 353 004542 357 004602 361 004614 363 004616 366 004641 374 004642 379 004643 381 004654 382 004655 384 004664 385 004672 387 004675 393 004676 395 004677 399 004746 400 004753 402 005006 406 005016 409 005036 417 005037 424 005041 426 005043 427 005046 429 005054 430 005060 431 005063 432 005105 434 005106 ----------------------------------------------------------- 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