COMPILATION LISTING OF SEGMENT dn355 Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1031.9 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style4,insnl,delnl,^ifthendo */ 14 dn355: 15 procedure; 16 return; /* should never be called here */ 17 18 /* Date last modified and reason 19* 20* Written 10/08/74 by F. A. Canali for new tty dim 21* Modified by Robert Coren and Mike Grady to fix bugs and add features 22* Modified by Robert Coren 10/08/75 for multiple 355s 23* Modified by J. Stern 04/22/77 to introduce WTCBs 24* Modified by J. Stern 06/23/77 to behave correctly when no submailboxes available 25* Modified by J. Stern 07/28/77 to use all 3 words of command data in submailbox 26* Modified Jan.-Feb. 1978 to use variable-size output buffers and fix some bugs 27* Modified 3/13/78 by Robert Coren to use clock builtin instead of clock_ and to get correct 28* time at hangup_fnp_lines entry 29* Modified August 1978 by Robert Coren for demultiplexing 30* Modified November 8, 1978 by Robert Coren to introduce FNP-initiated mailboxes 31* Modified July 2 1979 by B. Greenberg for negotiated echo. 32* Modified March 1980 by Robert Coren to eliminate use of circular buffer. 33* Modified April 1980 by Robert Coren to add metering information. 34* Modified 1980 December by Art Beattie to ignore interrupts in invalid levels. Also allowed command_data for 35* send_wcd operations to be 216 bits long (6 * 36-bit word). Corrected error message documentation. 36* Modified December 1980 by Robert Coren to handle report_meters opcode 37* Modified April 1981 by Chris Jones for io_manager conversion 38* Modified September 1981 by Robert Coren to record character counts in LCTE meters and to force COLTS buffer size to maximum 39* Modified February 1982 by C. Hornig for MR10 io_manager. 40* Modified June 1982 by Robert Coren to process "line_masked" opcode. 41* Modified 1984-07-28 BIM for dn355_boot_interrupt$system_fault. 42* Modified 1984-07-30 BIM for paged mode IOM. 43* Modified September 1984 by Robert Coren to use include file to define delay queue entries 44**/ 45 46 /****^ HISTORY COMMENTS: 47* 1) change(86-04-23,Coren), approve(86-04-23,MCR7300), 48* audit(86-06-19,Beattie), install(86-07-08,MR12.0-1089): 49* To handle 8-word echo-break tables. 50* 2) change(86-06-19,Kissel), approve(86-07-30,MCR7475), audit(86-09-04,Coren), 51* install(86-10-09,MR12.0-1181): 52* Changed to support the new tty event message format declared in 53* net_event_message.incl.pl1 which replaces tty_event_message.incl.pl1. 54* 3) change(87-07-20,Farley), approve(88-02-24,MCR7791), 55* audit(88-03-09,Beattie), install(88-03-15,MR12.2-1035): 56* Changed no response loop to use a real time constant and retry the timeout 57* or error one time along with reporting the problem. If no response occurs 58* after the retry then the FNP will be crashed. 59* END HISTORY COMMENTS */ 60 61 interrupt: 62 entry (x_dno, x_level, x_status); /* entry from iom_manager */ 63 64 dcl x_dno fixed bin (35); /* index from assignment time */ 65 dcl x_level fixed bin (3); /* interrupt level */ 66 dcl x_status bit (36) aligned; /* status after special or fault */ 67 68 if tc_data$system_shutdown ^= 0 69 then return; /* ignore 355's if shut down in progress */ 70 interrupt_entry = "1"b; 71 72 call setup; 73 level = x_level; /* copy level to local stack */ 74 if datanet_info.trace 75 then do; 76 if level ^= 3 | ^fnp_info.running 77 then syserr_severity = just_tell; 78 else syserr_severity = log; 79 call syserr (syserr_severity, 80 "dn355: FNP ^a level ^d status ^w^[ running^]^[ bootloading^]^[ t_and_d_in_progress^]", fnp_name, 81 level, x_status, fnp_info.running, fnp_info.bootloading, fnp_info.t_and_d_in_progress); 82 end; 83 if level ^= 3 & level ^= 7 84 then do; /* if not a good interrupt level */ 85 call syserr (beeper, "dn355: FNP ^a invalid interrupt level ^o", fnp_name, level); 86 if fnp_info.bootloading 87 then if level = 1 /* system fault */ 88 then call dn355_boot_interrupt$system_fault (dno); 89 return; /* lets hope its benign */ 90 end; 91 92 if (^fnp_info.t_and_d_in_progress) & (^fnp_info.running) & (^fnp_info.bootloading) 93 then return; /* spurious interrupt */ 94 95 if ^stac (addr (lcte.lock), pds$processid) /* somebody else has it */ 96 then do; 97 98 do while (^stac (addr (fnp_info.queue_lock), pds$processid)); 99 end; 100 101 if level = 7 102 then fnp_info.level_7_pending = "1"b; 103 else fnp_info.level_3_pending = "1"b; 104 105 if stac (addr (lcte.lock), pds$processid) /* in case it got unlocked meanwhile */ 106 then call process_int_queue ("0"b); 107 108 else if ^stacq (fnp_info.queue_lock, "0"b, pds$processid) 109 then call syserr (crash_system, "dn355: inconsistent queue lock"); 110 end; 111 112 else do; 113 call process_int (level); 114 115 do while (^stac (addr (fnp_info.queue_lock), pds$processid)); 116 end; /* check the queue to see if anything came in while we had the lock */ 117 118 call process_int_queue ("0"b); 119 end; 120 121 return; 122 123 global_exit: /* if abort out of an internal proc */ 124 if interrupt_entry 125 then do; 126 if stacq (lcte.lock, "0"b, pds$processid) /* make sure we undo anything we did */ 127 then if lcte.notify_reqd 128 then do; 129 lcte.notify_reqd = "0"b; 130 call pxss$notify (tty_ev); 131 end; 132 133 lcte.locked_for_interrupt = "0"b; 134 135 end; 136 return; 137 138 /* entry to send a command to the FNP */ 139 send_wcd: 140 entry (a_fnpp, a_pcbp, opa, chrsa, data); 141 142 dcl a_fnpp ptr, /* parameters */ 143 a_pcbp ptr, 144 opa fixed bin (8), 145 data bit (*), 146 chrsa fixed bin (8); /* numeric */ 147 148 dcl tdata bit (8 * 36); /* could be up to 8 words for set_echnego_break_table */ 149 dcl data_len fixed bin (8); 150 151 pcbp = a_pcbp; 152 go to send_join; 153 154 send_global_wcd: 155 entry (a_fnpp, opa, chrsa, data); 156 157 pcbp = null (); 158 159 send_join: 160 interrupt_entry = "0"b; 161 fnpp = a_fnpp; 162 ttybp = addr (tty_buf$); /* get ptr to tty buf */ 163 infop = addr (dn355_data$); /* and dn 355 info */ 164 lctep = fnp_info.lcte_ptr; 165 operation = opa; /* and copy op to local stack */ 166 if ^fnp_info.running /* can't talk to it if it's not listening */ 167 then return; 168 169 no_response = "0"b; 170 dno = fnp_info.fnp_number; 171 mbxp = fnp_info.mbx_pt; /* get pointer to mailbox */ 172 data_len = min (length (tdata), chrsa); /* compute bit length of command data */ 173 if data_len > 0 174 then tdata = substr (data, 1, data_len); 175 else tdata = "0"b; 176 177 i = index (used_string, "0"b); /* find a free sub mbx */ 178 if i = 0 /* no submailbox */ 179 then do; 180 call make_q_entry (operation, data_len, tdata); 181 fnp_info.mbx_unavailable = fnp_info.mbx_unavailable + 1; 182 /* form q entry element from data */ 183 end; 184 185 else do; /* we have a sub mbx, ship it off to the 355 */ 186 subp = addr (datanet_mbx.dn355_sub_mbxes (i - 1)); 187 /* get sub mbx addr */ 188 if pcbp ^= null () 189 then do; 190 string (sub_mbx.line_number) = string (pcb.line_number); 191 /* move line number to sub mbx */ 192 devx = pcb.devx; 193 end; 194 195 else string (sub_mbx.line_number) = "0"b; /* unless no pcb (global call) */ 196 197 sub_mbx.op_code = operation; /* set sub mbx op */ 198 sub_mbx.cmd_data_len = divide (data_len, 6, 17, 0); 199 /* set data length */ 200 if operation = accept_direct_output /* if output op */ 201 then do; 202 if ^pcb.flags.dialed /* output without a dialup? */ 203 then call throw_away_output; /* discard it */ 204 205 else call process_send_output (i - 1, "0"b); 206 end; 207 208 else if operation = set_echnego_break_table 209 then do; 210 if pcb.flags.dialed 211 then call send_echo_table (i - 1, tdata); 212 end; 213 214 else do; 215 sub_mbx.io_cmd = wcd; /* set write control data cmd */ 216 smbx_cmd_data_long = substr (tdata, 1, data_len); 217 /* move command data to sub mbx */ 218 call send_mbx (i - 1); /* ship the mbx off to the 355 */ 219 fnp_info.output_control_transactions = fnp_info.output_control_transactions + 1; 220 end; 221 222 223 if no_response 224 then call report_fnp_no_response; 225 end; 226 227 228 return; /* return to caller */ 229 230 process_interrupt_queue: 231 entry (x_dno); 232 233 interrupt_entry = "0"b; 234 call setup; 235 on cleanup call check_lock; 236 masked = "1"b; /* have to mask and wire while holding queue lock */ 237 call pmut$wire_and_mask (wire_arg, wire_ptr); 238 239 do while (^stac (addr (fnp_info.queue_lock), pds$processid)); 240 end; 241 queue_locked = "1"b; 242 243 call process_int_queue ("1"b); 244 return; 245 246 setup: 247 proc; 248 249 ttybp = addr (tty_buf$); /* get addr of tty buffer segment */ 250 dno = x_dno; /* copy 355 number to local stack */ 251 infop = addr (dn355_data$); /* get address of 355 info segment */ 252 253 fnpp = addr (datanet_info.per_datanet (dno)); 254 fnp_name = fnp_info.fnp_tag; 255 mbxp = fnp_info.mbx_pt; /* get mailbox pointer */ 256 lctep = fnp_info.lcte_ptr; 257 258 return; 259 end setup; 260 261 process_int_queue: 262 proc (caller_masked); 263 264 /* called with queue locked. Empties the queue, and must unlock it when done */ 265 266 dcl caller_masked bit (1); /* indicates whether caller explicitly called pmut$wire_and_mask */ 267 268 do while (dequeue (level)); 269 fnp_info.processed_from_q = fnp_info.processed_from_q + 1; 270 /* meter */ 271 if ^stacq (fnp_info.queue_lock, "0"b, pds$processid) 272 then call syserr (crash_system, "dn355: inconsistent queue lock"); 273 274 queue_locked = "0"b; 275 if caller_masked 276 then call pmut$unwire_unmask (wire_arg, wire_ptr); 277 masked = "0"b; 278 279 call process_int (level); 280 281 if caller_masked 282 then do; /* if we unmasked, we have to mask again */ 283 masked = "1"b; 284 call pmut$wire_and_mask (wire_arg, wire_ptr); 285 end; 286 287 do while (^stac (addr (fnp_info.queue_lock), pds$processid)); 288 end; 289 queue_locked = "1"b; 290 end; 291 292 lcte.locked_for_interrupt = "0"b; 293 if ^stacq (lcte.lock, "0"b, pds$processid) 294 then call syserr (crash_system, "dn355: LCTE lock ^^= processid"); 295 296 if ^stacq (fnp_info.queue_lock, "0"b, pds$processid) 297 then call syserr (crash_system, "dn355: inconsistent queue lock"); 298 299 queue_locked = "0"b; 300 if caller_masked 301 then call pmut$unwire_unmask (wire_arg, wire_ptr); 302 masked = "0"b; 303 304 if lcte.notify_reqd 305 then do; 306 lcte.notify_reqd = "0"b; 307 call pxss$notify (tty_ev); 308 end; 309 310 return; 311 312 dequeue: 313 proc (a_level) returns (bit (1)); 314 315 dcl a_level fixed bin; 316 317 if fnp_info.level_3_pending 318 then do; 319 fnp_info.level_3_pending = "0"b; 320 a_level = 3; 321 return ("1"b); 322 end; 323 324 else if fnp_info.level_7_pending 325 then do; 326 fnp_info.level_7_pending = "0"b; 327 a_level = 7; 328 return ("1"b); 329 end; 330 331 else return ("0"b); 332 333 end /* dequeue */; 334 end /* process_int_queue */; 335 336 process_int: 337 proc (a_level); 338 339 /* internal procedure to process an interrupt, either when it occurs or from the queue */ 340 341 dcl a_level fixed bin; 342 343 level = a_level; 344 345 lcte.locked_for_interrupt = "1"b; 346 if level = 7 347 then do; /* emergency interrupt */ 348 349 if fnp_info.t_and_d_in_progress 350 then do; 351 if fnp_info.t_and_d_lev_7_occurred 352 then return; 353 fnp_info.t_and_d_lev_7_occurred = "1"b; 354 t_and_d_join: 355 if fnp_info.t_and_d_notify_requested 356 then do; 357 call pxss$notify (tty_ev); 358 fnp_info.t_and_d_notify_requested = "0"b; 359 end; 360 unspec (auto_net_event_message) = "0"b; 361 auto_net_event_message.version = NET_EVENT_MESSAGE_VERSION_1; 362 auto_net_event_message.network_type = MCS_NETWORK_TYPE; 363 auto_net_event_message.handle = dno; 364 auto_net_event_message.type = level; 365 unspec (net_event_message_arg) = unspec (auto_net_event_message); 366 call pxss$unique_ring_0_wakeup (fnp_info.boot_process_id, fnp_info.boot_ev_chan, 367 net_event_message_arg, 0); 368 return; 369 end; 370 371 /* figure out reason for crash according to data in mailbox header */ 372 373 fault_type = datanet_mbx.crash_data.fault_code; 374 if fault_type > hbound (dn355_messages$fault_names, 1) | fault_type < 0 375 then fault_name = "unknown fault"; 376 else fault_name = dn355_messages$fault_names (fault_type); 377 378 call syserr (beeper, "dn355: emergency interrupt from FNP ^a: ^a", fnp_info.fnp_tag, fault_name); 379 380 if datanet_mbx.crash_data.ic ^= 0 381 then call syserr (just_tell, "FNP instruction counter = ^6o", datanet_mbx.crash_data.ic); 382 383 if fault_type = iom_channel_fault 384 then call syserr (just_tell, "channel ^o, fault status = ^6o", datanet_mbx.crash_data.fault_word, 385 datanet_mbx.crash_data.iom_fault_status); 386 387 else if fault_type = illegal_opcode 388 then if dn355_word.opcode = die_code /* did 355 crash deliberately? */ 389 then do; 390 modulep = addr (dn355_messages$per_module); 391 module_num = fixed (dn355_word.modnum, 4); 392 if module_num > 0 & module_num <= hbound (dn355_modules.list_offset, 1) 393 & dn355_word.crash_code > 0 & dn355_word.crash_code <= hbound (modulep -> message_offset, 1) 394 then do; 395 reasonp = ptr (modulep, dn355_modules.list_offset (module_num)); 396 reasonp = ptr (reasonp, reasonp -> message_offset (dn355_word.crash_code)); 397 398 call syserr (just_tell, "^a: ^a", dn355_modules.name (module_num), dn355_reason.msg); 399 end; 400 end; 401 402 call report_fnp_crash; /* report it and hang up lines */ 403 return; /* done with this interrupt */ 404 end; 405 406 /* level must be 3, a normal everyday 355 interrupt */ 407 408 if fnp_info.bootloading /* if this is bootload status */ 409 then do; 410 call dn355_boot_interrupt (dno); /* let special routine figure it out */ 411 return; 412 end; 413 414 if fnp_info.t_and_d_in_progress 415 then do; 416 if fnp_info.t_and_d_lev_3_occurred 417 then return; 418 fnp_info.t_and_d_lev_3_occurred = "1"b; 419 go to t_and_d_join; 420 end; 421 422 if ^fnp_info.running /* if this interrupt is premature, ignore it */ 423 then return; 424 425 no_response = "0"b; /* initially */ 426 427 if fnp_info.count > 0 /* had we had to wait for a free mbx? */ 428 then call process_q; 429 430 /* process any submailboxes which have been returned by the 355 */ 431 432 timw = ldac (addr (datanet_mbx.term_inpt_mpx_wd));/* get timw and clear */ 433 434 do i = 0 to 7; /* loop over submailbox indicators */ 435 436 if timwb (i) & ^no_response 437 then do; /* if mailbox was returned by 355 then we have something to do */ 438 439 subp = addr (datanet_mbx.dn355_sub_mbxes (i)); 440 /* get pointer to sub mailbox */ 441 datanet_mbx.mbx_used_flags.used (i) = "0"b; 442 /* clear submailbox used flag */ 443 datanet_mbx.num_in_use = datanet_mbx.num_in_use - 1; 444 fnp_info.cumulative_mbx_in_use = fnp_info.cumulative_mbx_in_use + datanet_mbx.num_in_use; 445 fnp_info.mbx_in_use_updated = fnp_info.mbx_in_use_updated + 1; 446 447 if sub_mbx.io_cmd = wcd 448 then do; 449 if sub_mbx.op_code = dump_mem | sub_mbx.op_code = patch_mem 450 then do; 451 fnp_info.dump_patch_in_progress = "0"b; 452 call pxss$notify (FNP_DUMP_PATCH_EVENT); 453 end; 454 455 else if sub_mbx.op_code = report_meters 456 then do; 457 call get_line_number; 458 if devx = -1 459 then if fnp_info.get_meters_waiting 460 /* fnp_multiplexer is waiting for global meters */ 461 then do; 462 fnp_info.get_meters_waiting = "0"b; 463 call pxss$notify (FNP_METER_EVENT); 464 end; 465 else ; /* copy_meters for whole FNP shouldn't arise */ 466 467 else if pcb.get_meters_waiting/* waiting for channel's meters */ 468 then do; 469 pcb.get_meters_waiting = "0"b; 470 call pxss$notify (FNP_METER_EVENT); 471 end; 472 473 else pcb.copied_meters_ready = "1"b; 474 /* must be copy_meters, mark it so call side can copy them to unwired */ 475 end; 476 end; /* just free submbx */ 477 478 else do; 479 call get_line_number; 480 if sub_mbx.io_cmd = wtx 481 then do; /* check for write text */ 482 483 pcb.output_mbx_pending = "0"b; 484 dcwlptr = addr (fnp_info.dcw_list_array_ptr -> dcw_list_array (i)); 485 chain_head_ptr = ptr (ttybp, bin (dcw_list (1).dcw_ptr, 18) - (tty_buf.absorig + dataoff)); 486 call tty_space_man$free_chain ((pcb.devx), OUTPUT, chain_head_ptr); 487 /* and the output chain */ 488 489 if sub_mbx.command_data (1) ^= "0"b 490 /* immediate send-output */ 491 then call process_send_output (i, "1"b); 492 493 end; 494 495 496 497 else do; 498 call syserr (beeper, "dn355: unrecognized io command ^o from FNP ^a for line ^o", 499 sub_mbx.io_cmd, fnp_info.fnp_tag, bin (string (sub_mbx.line_number), 10)); 500 /* complain */ 501 call report_fnp_crash; /* act as if FNP crashed */ 502 return; 503 end; 504 end; 505 end; 506 end; 507 508 do i = 8 to 11; /* now look at FNP-initiated mailboxes */ 509 if timwb (i) & ^no_response 510 then do; 511 subp = addr (datanet_mbx.fnp_sub_mbxes (i - 8)); 512 call get_line_number; 513 514 if sub_mbx.io_cmd = rcd 515 then do; /* check for control stuff */ 516 517 if (sub_mbx.op_code = accept_direct_input) | (sub_mbx.op_code = send_output) 518 | (sub_mbx.op_code = input_in_mailbox) 519 then do; 520 fnp_info.bleft_355 = fnp_sub_mbx.n_free_buffers - 4; 521 /* get the buffer count from 355 */ 522 523 if fnp_info.bleft_355 < 0 524 then /* if above was too much correction */ 525 fnp_info.bleft_355 = 0; /* make it safe */ 526 527 528 if fnp_info.free_size > 16000000000 529 then do; 530 fnp_info.free_size = 0; 531 fnp_info.free_count = 0; 532 end; 533 534 fnp_info.free_size = fnp_info.free_size + fnp_info.bleft_355; 535 fnp_info.free_count = fnp_info.free_count + 1; 536 end; 537 538 if sub_mbx.op_code = accept_direct_input | sub_mbx.op_code = input_in_mailbox 539 then fnp_info.input_data_transactions = fnp_info.input_data_transactions + 1; 540 else fnp_info.input_control_transactions = fnp_info.input_control_transactions + 1; 541 542 if sub_mbx.op_code = accept_new_terminal 543 then do; /* check for new terminal on line */ 544 545 546 pcb.line_type, dialup_info.line_type = bin (sub_mbx.command_data (1), 17); 547 if sub_mbx.command_data (2) 548 then pcb.baud_rate = baud_table (bin (sub_mbx.command_data (2), 17)); 549 550 do j = 1 to n_sync_line_types while (sync_line_type (j) ^= pcb.line_type); 551 end; 552 pcb.sync_line = (j <= n_sync_line_types); 553 554 if ^pcb.sync_line /* asynchronous */ 555 then bits_per_char = 10; 556 else bits_per_char = 8; /* assumption for synchronous lines */ 557 558 max_buf_chars = 559 divide (divide (pcb.baud_rate, bits_per_char, 17, 0), buf_per_second, 17, 0); 560 pcb.max_buf_size = min (16 * divide (max_buf_chars + 67, 64, 17, 0), 128); 561 /* round up to multiple of 16 words */ 562 if pcb.line_type = LINE_COLTS 563 then pcb.max_buf_size = 128; /* COLTS channel always gets big buffers */ 564 565 dialup_info.baud_rate = pcb.baud_rate; 566 dialup_info.max_buf_size = pcb.max_buf_size; 567 dialup_info.buffer_pad = 0; 568 dialup_info.receive_mode_device = (dialup_info.line_type = LINE_ETX); 569 dialup_info.pad = "0"b; 570 pcb.dialed = "1"b; 571 572 sub_mbx.op_code = terminal_accepted; 573 /* inform 355 that term is ok */ 574 sub_mbx.cmd_data_len = 3; /* we will put write buffer threshold in command data */ 575 if ^pcb.high_speed /* less than 1200 baud */ 576 then addr (sub_mbx.command_data) -> unal_number = 2; 577 /* set low write buffer threshold */ 578 else addr (sub_mbx.command_data) -> unal_number = 4; 579 /* set high write buffer threshold */ 580 sub_mbx.io_cmd = wcd; 581 call return_mbx (i); 582 interrupt_info = unspec (dialup_info); 583 call channel_manager$interrupt (devx, DIALUP, interrupt_info); 584 585 end; 586 587 588 else if sub_mbx.op_code = disconnected_line 589 then do; /* see if line just hung up */ 590 pcb.dialed = "0"b; 591 call throw_away_output; 592 call channel_manager$interrupt (devx, HANGUP, ""b); 593 call free_mbx (i); 594 595 end; 596 597 else if sub_mbx.op_code = wru_timeout 598 then do; /* 355 couldn't get answerback */ 599 if pcb.dialed 600 then call channel_manager$interrupt (devx, WRU_TIMEOUT, ""b); 601 call free_mbx (i); 602 end; 603 604 else if sub_mbx.op_code = break_condition 605 then do; /* check for break */ 606 607 if pcb.dialed 608 then do; 609 if pcb.hndlquit 610 then call throw_away_output; 611 call channel_manager$interrupt (devx, QUIT, ""b); 612 end; 613 call free_mbx (i); 614 end; 615 616 617 else if sub_mbx.op_code = send_output 618 then do; /* is this request for output? */ 619 620 call free_mbx (i); 621 if pcb.dialed 622 then call process_send_output (-1, "1"b); 623 /* -1 indicates no current mailbox */ 624 end; 625 626 627 else if sub_mbx.op_code = accept_direct_input 628 then do; /* check for input from terminal */ 629 630 if pcb.dialed 631 then call process_accept_input; 632 633 else do; 634 sub_mbx.io_cmd = wcd; /* we'll tell him to hang up */ 635 sub_mbx.op_code = disconnect_this_line; 636 call return_mbx (i); 637 end; 638 end; 639 640 else if sub_mbx.op_code = error_message 641 then do; /* error message from 355 */ 642 offset = bin (error_msg.data (1), 18); 643 /* get which error message this is */ 644 if offset > 0 & offset <= hbound (dn355_messages$error_messages, 1) 645 then do; 646 offset = dn355_messages$error_messages (offset); 647 /* offset of message */ 648 reasonp = addr (dn355_messages$error_messages); 649 /* get ptr */ 650 reasonp = ptr (reasonp, offset); 651 /* now we have message */ 652 reason_msg = dn355_reason.msg; 653 end; 654 655 else reason_msg = "unrecognized error ^o ^o ^o"; 656 657 do ix = 1 to 3; 658 full_words (ix) = bin (error_msg.data (ix + 1), 18); 659 end; 660 call syserr (just_tell, "dn355: Message from FNP ^a: " || reason_msg, fnp_info.fnp_tag, 661 full_words); 662 call free_mbx (i); 663 end; 664 665 else if sub_mbx.op_code = input_in_mailbox 666 then do; 667 if pcb.dialed 668 then call process_input_in_mbx; 669 else do; 670 sub_mbx.io_cmd = wcd; /* tell him to give up */ 671 sub_mbx.op_code = disconnect_this_line; 672 call return_mbx (i); 673 end; 674 end; 675 676 else if sub_mbx.op_code >= first_acu_op_code & sub_mbx.op_code <= last_acu_op_code 677 then do; /* acu failure */ 678 interrupt_info = bit (bin (sub_mbx.op_code, 9)); 679 call channel_manager$interrupt (devx, DIAL_STATUS, interrupt_info); 680 call free_mbx (i); 681 end; 682 683 else if sub_mbx.op_code = line_status 684 then do; /* some status from fnp */ 685 interrupt_info = substr (unspec (sub_mbx.command_data), 1, 72); 686 call channel_manager$interrupt (devx, LINE_STATUS, interrupt_info); 687 call free_mbx (i); 688 end; 689 690 else if sub_mbx.op_code = ack_echnego_init 691 then do; 692 call free_mbx (i); 693 call channel_manager$interrupt (devx, ACKNOWLEDGE_ECHNEGO_INIT, "0"b); 694 end; 695 696 else if sub_mbx.op_code = ack_echnego_stop 697 then do; 698 call free_mbx (i); 699 call channel_manager$interrupt (devx, ACKNOWLEDGE_ECHNEGO_STOP, "0"b); 700 end; 701 702 else if sub_mbx.op_code = line_masked 703 then do; /* see if channel was masked */ 704 pcb.dialed, pcb.listen = "0"b; 705 call throw_away_output; 706 call syserr (just_tell, 707 "dn355: FNP masked channel ^a.h^d^[0^;^]^d for excessive interrupts", fnp_info.fnp_tag, 708 binary (sub_mbx.line_number.la_no, 3), (binary (sub_mbx.line_number.slot_no, 6) < 10), 709 binary (sub_mbx.line_number.slot_no, 6)); 710 call channel_manager$interrupt (devx, MASKED, ""b); 711 call free_mbx (i); 712 713 end; 714 715 else do; 716 call syserr (beeper, "dn355: unrecognized op code ^o with rcd from FNP ^a for devx ^o", 717 sub_mbx.op_code, fnp_info.fnp_tag, devx); 718 /* someone goofed */ 719 call report_fnp_crash; 720 return; 721 end; 722 end; 723 724 725 726 else if sub_mbx.io_cmd = rtx 727 then call process_rtx; /* check for read text */ 728 729 else do; 730 call syserr (beeper, "dn355: unrecognized io command ^o from FNP ^a for line ^o", sub_mbx.io_cmd, 731 fnp_info.fnp_tag, bin (string (sub_mbx.line_number), 10)); 732 /* complain */ 733 call report_fnp_crash; /* give up on this FNP */ 734 return; 735 end; 736 end; 737 end; 738 739 740 if ^no_response /* assuming we believe FNP is still there */ 741 then if fnp_info.count > 0 742 then call process_q; 743 744 745 if no_response /* if someone discovered that the FNP was gone */ 746 then call report_fnp_no_response; 747 748 return; 749 end /* process_int */; 750 751 process_q: 752 proc; 753 754 /* process the queue of mailbox operations that could not be performed 755* because no mailboxes wre available 756**/ 757 758 q_first = fnp_info.cur_ptr; 759 q_count = fnp_info.count; 760 i = 1; /* preset while variable */ 761 762 do while (q_count > 0 & i > 0); 763 i = index (used_string, "0"b); 764 if i > 0 /* now we can have one */ 765 then do; 766 subp = addr (datanet_mbx.dn355_sub_mbxes (i - 1)); 767 qptr = ptr (ttybp, q_first); 768 if q_entry.pcb_offset ^= "0"b /* for a specific channel */ 769 then do; 770 pcbp = ptr (ttybp, q_entry.pcb_offset); 771 string (sub_mbx.line_number) = string (pcb.line_number); 772 devx = pcb.devx; 773 end; 774 else string (sub_mbx.line_number) = ""b; 775 776 if q_entry.opcode = accept_direct_output 777 then if pcb.dialed 778 then call process_send_output (i - 1, "0"b); 779 else ; 780 781 else if q_entry.opcode = set_echnego_break_table 782 then if pcb.dialed 783 then call send_echo_table (i - 1, q_entry.cmd_data); 784 else ; 785 786 else do; 787 sub_mbx.io_cmd = wcd; 788 sub_mbx.op_code = q_entry.opcode; 789 sub_mbx.cmd_data_len = divide (q_entry.cmd_count, 6, 8, 0); 790 smbx_cmd_data_long = substr (q_entry.cmd_data, 1, q_entry.cmd_count); 791 call send_mbx (i - 1); 792 fnp_info.output_control_transactions = fnp_info.output_control_transactions + 1; 793 end; 794 795 if no_response /* give up in this case */ 796 then go to update_q_ptrs; 797 798 q_first = q_entry.next; /* on to next queue entry */ 799 q_count = q_count - 1; 800 call tty_space_man$free_space (size (q_entry), qptr); 801 end; 802 803 else fnp_info.mbx_unavailable = fnp_info.mbx_unavailable + 1; 804 end; 805 806 update_q_ptrs: 807 fnp_info.cur_ptr = q_first; 808 fnp_info.count = q_count; 809 if q_count = 0 810 then fnp_info.last_ptr = 0; 811 812 return; 813 end /* process_q */; 814 815 /* internal subroutine to process send output */ 816 817 process_send_output: 818 proc (a_mbx_num, interrupt_entry); 819 820 dcl a_mbx_num fixed bin; /* -1 indicates mailbox not already allocated */ 821 dcl mbx_num fixed bin; 822 dcl interrupt_entry bit (1) aligned; /* indicates whether or not called on interrupt side */ 823 824 mbx_num = a_mbx_num; 825 if pcb.end_frame | pcb.output_mbx_pending /* if we're waiting for form-feed or we got delayed */ 826 then do; 827 pcb.flags.send_output = "1"b; /* we'll want output eventually */ 828 return; /* don't do anything else */ 829 end; 830 831 if pcb.write_first = 0 832 then do; 833 pcb.flags.send_output = "1"b; /* if no output then just set flag */ 834 call channel_manager$interrupt (devx, SEND_OUTPUT, ""b); 835 end; 836 837 else do; 838 if mbx_num = -1 /* caller didn't supply one */ 839 then do; 840 mbx_num = index (used_string, "0"b) - 1;/* find a free one */ 841 842 if mbx_num = -1 /* still? we didn't get one */ 843 then do; 844 call make_q_entry (accept_direct_output, 0, ""b); 845 fnp_info.mbx_unavailable = fnp_info.mbx_unavailable + 1; 846 return; /* we'll catch it later */ 847 end; 848 else do; 849 subp = addr (datanet_mbx.dn355_sub_mbxes (mbx_num)); 850 string (sub_mbx.line_number) = string (pcb.line_number); 851 end; 852 end; 853 854 855 pcb.flags.send_output = "0"b; /* make sure flag clear */ 856 dcwlptr = addr (fnp_info.dcw_list_array_ptr -> dcw_list_array (mbx_num)); 857 858 sub_mbx.data_addr = bit (bin (bin (rel (dcwlptr), 18) + tty_buf.absorig, 18), 18); 859 output_limit = 860 max ( 861 min (divide ((fnp_info.bleft_355 - tc_data$fnp_buffer_threshold) * 60, output_bpart, 17, 0), 862 max_chain_len * 4 * (pcb.max_buf_size - 1)), 1); 863 864 output_chars = 0; /* none so far */ 865 continue = "1"b; 866 do j = 1 to max_chain_len while (pcb.write_first ^= 0 & output_chars < output_limit & continue); 867 /* set up dcw list */ 868 dcw_list (j).dcw_ptr = bit (bin (pcb.write_first + dataoff + tty_buf.absorig, 18), 18); 869 /* set dcw abs addr */ 870 blockp = ptr (ttybp, pcb.write_first); /* get ptr to buffer */ 871 if buffer.tally = 0 /* we don't want this in a dcw */ 872 then call syserr (crash_system, "dn355: output buffer at ^o has zero tally", pcb.write_first); 873 874 dcw_list (j).dcw_tally = bit (buffer.tally, 9); 875 /* set dcw tally from buffer */ 876 dcw_list (j).pad = "0"b; /* 355 depends on this */ 877 pcb.write_first = buffer.next; /* now bump to next buffer */ 878 pcb.write_cnt = pcb.write_cnt - buffer.tally; 879 /* decrement count of chars in chain */ 880 output_chars = output_chars + buffer.tally; 881 /* keep count of characters sent */ 882 if buffer.flags.end_of_page /* if this buffer fills a page/screen */ 883 then do; 884 pcb.flags.end_frame = "1"b; /* remember it */ 885 continue = "0"b; /* terminate the loop */ 886 end; 887 end; 888 889 chain_len = max (j - 1, 1); /* this is now the length of the chain */ 890 891 sub_mbx.word_cnt = chain_len; /* we have maximum length dcw list */ 892 sub_mbx.op_code = accept_direct_output; /* and do not have last buffer */ 893 sub_mbx.command_data (1) = "0"b; /* make sure it starts clean */ 894 sub_mbx.io_cmd = wtx; /* set write text io command */ 895 pcb.output_mbx_pending = "1"b; 896 buffer.next = 0; /* indicate end of active write block */ 897 call send_mbx (mbx_num); /* ship sub mbx off to 355 */ 898 fnp_info.output_data_transactions = fnp_info.output_data_transactions + 1; 899 lcte.meters.out_bytes = lcte.meters.out_bytes + output_chars; 900 /* meter */ 901 902 if /* tree */ pcb.write_first = 0 903 then do; /* see if we ran out of buffers */ 904 pcb.write_last = 0; /* zero ptr to last */ 905 if interrupt_entry 906 then call channel_manager$interrupt (devx, SEND_OUTPUT, ""b); 907 /* wakeup the user */ 908 end; 909 else if chain_len < max_chain_len & ^pcb.flags.end_frame 910 /* must have stopped because there wasn't enough space */ 911 then fnp_info.fnp_space_restricted_output = fnp_info.fnp_space_restricted_output + 1; 912 end; 913 914 return; /* and return to caller */ 915 end; 916 917 /* internal subroutine to process set_echnego_break_table operation */ 918 919 /* Because the echo table is 8 words long, it won't fit in a sub_mbx, so we 920* have to send the FNP the address so it can read the table. To avoid extra 921* storage overhead, and the necessity of freeing storage when the operation 922* completes, the table is put in the dcw_list area corresponding to the mailbox. */ 923 924 send_echo_table: 925 procedure (mbx_num, table_bits); 926 927 dcl mbx_num fixed bin; 928 dcl table_bits bit (8 * 36); 929 930 dcl table_ptr pointer; 931 dcl bits_to_send bit (8 * 36) based; 932 933 if ^pcb.dialed 934 then return; 935 table_ptr = addr (fnp_info.dcw_list_array_ptr -> dcw_list_array (mbx_num)); 936 table_ptr -> bits_to_send = table_bits; 937 sub_mbx.op_code = set_echnego_break_table; 938 sub_mbx.io_cmd = wcd; 939 sub_mbx.data_addr = bit (bin (bin (rel (table_ptr), 18) + tty_buf.absorig, 18), 18); 940 sub_mbx.word_cnt = 8; 941 942 call send_mbx (mbx_num); 943 fnp_info.output_control_transactions = fnp_info.output_control_transactions + 1; 944 return; 945 end send_echo_table; 946 947 /* internal procedure to respond to accept_input mailbox */ 948 949 process_accept_input: 950 proc; 951 952 dcl tally fixed bin; 953 dcl buf_size fixed bin; 954 dcl prev_blockp ptr; 955 956 input_count = input_sub_mbx.n_chars; /* get char count */ 957 j = divide (input_count + 3, 4, 17, 0); /* compute number of words of circular buffer needed */ 958 959 if enough_input_space (j) & pcb.read_first = 0 960 then do; 961 do k = 1 to input_sub_mbx.n_buffers; 962 tally = input_sub_mbx.dcw (k).tally; 963 buf_size = 16 * divide (tally + 67, 64, 17, 0); 964 /* get next higher multiple of 16 words */ 965 call tty_space_man$get_buffer (devx, buf_size, INPUT, blockp); 966 if blockp = null () /* couldn't get the space */ 967 then do; 968 if pcb.read_first ^= 0 /* if we started building a chain */ 969 then call tty_space_man$free_chain (devx, INPUT, ptr (ttybp, pcb.read_first)); 970 pcb.read_first = 0; 971 go to reject; 972 end; 973 974 if pcb.read_first = 0 975 then pcb.read_first = bin (rel (blockp)); 976 else prev_blockp -> buffer.next = bin (rel (blockp)); 977 978 buffer.tally = tally; 979 input_sub_mbx.dcw (k).abs_addr = 980 bit (bin (tty_buf.absorig + bin (rel (addr (buffer.chars))), 24), 24); 981 /* point DCW at data portion of buffer */ 982 prev_blockp = blockp; 983 end; 984 985 pcb.read_last = bin (rel (blockp)); 986 987 sub_mbx.op_code = input_accepted; /* inform 355 that we will take input now */ 988 sub_mbx.io_cmd = rtx; 989 call return_mbx (i); 990 end; 991 992 else do; 993 reject: 994 sub_mbx.io_cmd = wcd; 995 sub_mbx.op_code = reject_request_temp; /* inform 355 that we can not accept input 996* at the present time */ 997 call return_mbx (i); 998 fnp_info.input_reject_count = fnp_info.input_reject_count + 1; 999 call channel_manager$interrupt (devx, INPUT_REJECTED, ""b); 1000 end; 1001 1002 end /* process_accept_input */; 1003 1004 /* internal proc to process rtx */ 1005 process_rtx: 1006 proc; 1007 1008 dcl real_word_cnt fixed bin; 1009 dcl n_words fixed bin; 1010 dcl buf_size fixed bin; 1011 dcl source_ptr ptr; 1012 dcl target_ptr ptr; 1013 1014 fnp_info.input_data_transactions = fnp_info.input_data_transactions + 1; 1015 real_word_cnt = input_sub_mbx.n_chars; 1016 lcte.meters.in_bytes = lcte.meters.in_bytes + real_word_cnt; 1017 rtx_info.break_char = substr (input_sub_mbx.command_data, 18, 1); 1018 call check_ff ("0"b); /* see if input ends with a form feed */ 1019 input_count = real_word_cnt; 1020 if input_count ^= 0 /* must have been a single FF that we discarded */ 1021 then do; 1022 rtx_info.output_in_fnp = substr (input_sub_mbx.command_data, 17, 1); 1023 rtx_info.output_in_ring_0 = (pcb.write_first ^= 0); 1024 rtx_info.input_count = input_count; 1025 rtx_info.chain_head = bit (pcb.read_first, 18); 1026 rtx_info.chain_tail = bit (pcb.read_last, 18); 1027 interrupt_info = unspec (rtx_info); 1028 call channel_manager$interrupt (devx, ACCEPT_INPUT, interrupt_info); 1029 end; 1030 1031 else call tty_space_man$free_chain (devx, INPUT, ptr (ttybp, pcb.read_first)); 1032 1033 pcb.read_first, pcb.read_last = 0; 1034 1035 call free_mbx (i); 1036 1037 return; /* and return to caller */ 1038 1039 process_input_in_mbx: 1040 entry; 1041 1042 /* we will copy input directly from mailbox into one buffer (if possible) */ 1043 1044 numchars = fnp_sub_mbx.n_chars; 1045 rtx_info.break_char = substr (fnp_sub_mbx.command_data, 18, 1); 1046 call check_ff ("1"b); 1047 if numchars > 0 1048 then do; 1049 n_words = divide (numchars + 3, 4, 17, 0); 1050 if enough_input_space (n_words) 1051 then do; 1052 buf_size = 16 * (divide (n_words + 17, 16, 17, 0)); 1053 /* get next multiple of 16 words */ 1054 call tty_space_man$get_buffer (devx, buf_size, INPUT, blockp); 1055 if blockp = null 1056 then go to not_enough_space; 1057 1058 source_ptr = addr (fnp_sub_mbx.input_data); 1059 target_ptr = addr (buffer.chars); 1060 target_ptr -> chars = source_ptr -> chars; 1061 buffer.tally = numchars; 1062 rtx_info.output_in_fnp = substr (fnp_sub_mbx.command_data, 17, 1); 1063 rtx_info.output_in_ring_0 = (pcb.write_first ^= 0); 1064 rtx_info.input_count = numchars; 1065 rtx_info.chain_head, rtx_info.chain_tail = rel (blockp); 1066 /* only one buffer */ 1067 lcte.meters.in_bytes = lcte.meters.in_bytes + numchars; 1068 interrupt_info = unspec (rtx_info); 1069 call channel_manager$interrupt (devx, ACCEPT_INPUT, interrupt_info); 1070 call free_mbx (i); 1071 end; 1072 1073 else do; /* space test failed */ 1074 not_enough_space: 1075 sub_mbx.io_cmd = wcd; /* tell him we can't take it */ 1076 sub_mbx.op_code = reject_request_temp; 1077 call return_mbx (i); 1078 call channel_manager$interrupt (devx, INPUT_REJECTED, ""b); 1079 end; 1080 end; 1081 1082 else call free_mbx (i); /* nothing there except form_feed */ 1083 return; 1084 1085 check_ff: 1086 proc (in_mbx); /* internal procedure to check input for form-feed */ 1087 1088 dcl in_mbx bit (1); 1089 1090 rtx_info.formfeed_present = "0"b; /* for now */ 1091 if pcb.sync_line /* form feeds not interesting in this case */ 1092 then return; 1093 1094 if in_mbx 1095 then do; 1096 bufp = addr (fnp_sub_mbx.input_data); 1097 chars_left = numchars; 1098 end; 1099 1100 else do; 1101 blockp = ptr (ttybp, pcb.read_last); 1102 chars_left = buffer.tally; 1103 bufp = addr (buffer.chars); 1104 end; 1105 1106 if substr (bufp -> input_chars, chars_left, 1) = form_feed 1107 /* yup, input ends with FF */ 1108 then rtx_info.formfeed_present = "1"b; 1109 if pcb.flags.end_frame & rtx_info.break_char /* time to restart suspended output */ 1110 then do; 1111 if (chars_left <= 2) 1112 then if verify (substr (bufp -> input_chars, 1, chars_left), ff_cr_lf) = 0 1113 then do; /* this input is just to restart output, discard it */ 1114 if in_mbx 1115 then numchars = 0; 1116 else real_word_cnt = 0; 1117 end; 1118 pcb.flags.end_frame = "0"b; 1119 if pcb.flags.send_output /* more output to ship */ 1120 then if pcb.write_first ^= 0 /* it's waiting in tty_buf */ 1121 then call make_q_entry (accept_direct_output, 0, ""b); 1122 /* we'll get to it shortly */ 1123 else call channel_manager$interrupt (devx, SEND_OUTPUT, ""b); 1124 end; 1125 1126 end /* check_ff */; 1127 1128 end /* process_rtx */; 1129 1130 /* internal proc to check if this channel can have input space */ 1131 1132 enough_input_space: 1133 proc (count) returns (bit (1)); 1134 1135 dcl count fixed bin; 1136 1137 lctp = tty_buf.lct_ptr; 1138 chan_lctep = addr (lct.lcte_array (devx)); 1139 return (chan_lctep -> lcte.input_words + count <= divide (tty_buf.bleft, input_bpart, 17, 0)); 1140 end /* enough_input_space */; 1141 1142 1143 /* internal proc to put an element onto delay queue */ 1144 1145 make_q_entry: 1146 proc (opc, cnt, databits); 1147 1148 dcl (opc, cnt) fixed bin (8), /* parameters */ 1149 databits bit (8 * 36); 1150 1151 call tty_space_man$get_space (size (q_entry), new_qp); 1152 if new_qp = null 1153 then do; 1154 call syserr (crash_system, "dn355: unable to allocate block for delay queue"); 1155 return; 1156 end; 1157 1158 new_qrel = bin (rel (new_qp)); 1159 if fnp_info.cur_ptr = 0 /* nothing in the queue yet */ 1160 then fnp_info.cur_ptr = new_qrel; 1161 else do; 1162 qptr = ptr (ttybp, fnp_info.last_ptr); 1163 q_entry.next = new_qrel; /* make the preceding entry point to the new one */ 1164 end; 1165 1166 fnp_info.last_ptr = new_qrel; 1167 qptr = new_qp; 1168 fnp_info.count = fnp_info.count + 1; 1169 fnp_info.q_entries_made = fnp_info.q_entries_made + 1; 1170 1171 q_entry.opcode = opc; /* set q element op code */ 1172 q_entry.cmd_count = cnt; /* and command count */ 1173 if pcbp ^= null () 1174 then q_entry.pcb_offset = rel (pcbp); 1175 else q_entry.pcb_offset = "0"b; 1176 q_entry.next = 0; 1177 q_entry.cmd_data = databits; /* move data to q element */ 1178 return; /* return to caller */ 1179 end; 1180 1181 /* internal procedure to derive devx & PCB pointer from mailbox line number */ 1182 1183 get_line_number: 1184 proc; 1185 1186 dcl x fixed bin; 1187 1188 if string (sub_mbx.line_number) = "0"b 1189 then do; /* some type of global request */ 1190 do x = 1 to hbound (global_opcodes, 1) while (sub_mbx.op_code ^= global_opcodes (x)); 1191 end; /* make sure it really is */ 1192 if x > hbound (global_opcodes, 1) 1193 then do; /* else can the FNP */ 1194 call syserr (beeper, "dn355: line number of 0 with non-global opcode in submbx ^o, FNP ^a", i, 1195 fnp_info.fnp_tag); 1196 call report_fnp_crash; 1197 go to global_exit; 1198 end; 1199 1200 pcbp = null; 1201 devx = -1; 1202 end; 1203 1204 else do; 1205 n_pcbs = fnp_info.no_of_channels; 1206 if string (sub_mbx.line_number) = TANDD_LINE_NUMBER 1207 /* don't decode this, go straight to it */ 1208 then pcbp = addr (fnp_info.pcb_array_ptr -> pcb_array (fnp_info.tandd_pcbx)); 1209 else do; 1210 lano = sub_mbx.line_number.la_no; /* get line adapter number for devx lookup */ 1211 if sub_mbx.is_hsla 1212 then j = fnp_info.hsla_idx (fixed (lano)); 1213 else j = fnp_info.lsla_idx (fixed (lano)); 1214 /* get starting position */ 1215 do j = j to n_pcbs; /* loop thru devx table */ 1216 pcbp = addr (fnp_info.pcb_array_ptr -> pcb_array (j)); 1217 if string (pcb.line_number) = string (sub_mbx.line_number) 1218 then go to match; /* check for right slot */ 1219 end; 1220 call syserr (beeper, "dn355: no slot number match for sub mbx ^o, FNP ^a", i, fnp_info.fnp_tag); 1221 /* bitch */ 1222 call report_fnp_crash; 1223 go to global_exit; 1224 end; 1225 1226 match: 1227 devx = pcb.devx; /* copy devx to automatic */ 1228 1229 end; 1230 return; 1231 1232 end /* get_line_number */; 1233 1234 1235 /* internal procedure to ship sub mbx off to 355 */ 1236 send_mbx: 1237 return_mbx: 1238 proc (a_mbx_no); 1239 1240 dcl a_mbx_no fixed bin; 1241 dcl mbx_no fixed bin; 1242 dcl pcw_error bit (1); 1243 dcl timeout_time fixed bin (71); 1244 dcl 1 ima aligned like io_manager_arg; 1245 1246 mbx_no = a_mbx_no; 1247 go to test_pcw; 1248 1249 free_mbx: 1250 entry (a_mbx_no); /* this for those which haven't been rewritten */ 1251 1252 mbx_no = a_mbx_no + 4; /* use different interrupt level for freeing */ 1253 1254 test_pcw: 1255 if ^fnp_info.io_manager_assigned 1256 then do; 1257 no_response = "1"b; /* lie, but effectively */ 1258 return; 1259 end; 1260 1261 no_response = "0"b; 1262 if datanet_mbx.dia_pcw.command ^= "0"b 1263 then do; /* first a quick check to save time */ 1264 wait_for_response: 1265 timeout_time = clock () + TWO_SECONDS; 1266 do while ((clock () < timeout_time) & (datanet_mbx.dia_pcw.command ^= "0"b)); 1267 /* loop until dia picks up last command */ 1268 end; 1269 if datanet_mbx.dia_pcw.error | datanet_mbx.dia_pcw.command ^= "0"b 1270 then do; 1271 if ^no_response 1272 then do; 1273 pcw_error = datanet_mbx.dia_pcw.error; 1274 no_response = "1"b; 1275 datanet_mbx.dia_pcw.error = "0"b; 1276 string (datanet_mbx.dia_pcw) = dn355_util$compute_parity (string (datanet_mbx.dia_pcw)); 1277 /* recompute parity */ 1278 ima.chx = fnp_info.io_manager_chx; 1279 ima.ptp = fnp_info.ptp; 1280 call io_manager$connect_direct (ima); 1281 /* re-kick FNP */ 1282 call syserr (just_tell, 1283 "dn355: ^[Error^;Timeout^] sending mailbox interrupt to FNP ^a, will retry.", pcw_error, 1284 fnp_info.fnp_tag); 1285 goto wait_for_response; 1286 end; 1287 end; 1288 else goto send_new_connect; 1289 end; 1290 else do; 1291 send_new_connect: 1292 no_response = "0"b; 1293 1294 if mbx_no < 8 /* one of ours */ 1295 then do; 1296 datanet_mbx.mbx_used_flags.used (mbx_no) = "1"b; 1297 datanet_mbx.num_in_use = datanet_mbx.num_in_use + 1; 1298 fnp_info.max_mbx_in_use = max (fnp_info.max_mbx_in_use, datanet_mbx.num_in_use); 1299 fnp_info.cumulative_mbx_in_use = fnp_info.cumulative_mbx_in_use + datanet_mbx.num_in_use; 1300 fnp_info.mbx_in_use_updated = fnp_info.mbx_in_use_updated + 1; 1301 end; /* set used flag */ 1302 string (datanet_mbx.dia_pcw) = initial_pcw; /* initialize pcw */ 1303 datanet_mbx.dia_pcw.mbx_no = bit (fixed (mbx_no, 6), 6); 1304 /* set sub mbx number */ 1305 1306 string (datanet_mbx.dia_pcw) = dn355_util$compute_parity (string (datanet_mbx.dia_pcw)); 1307 /* set the parity bit; bit 22 */ 1308 1309 ima.chx = fnp_info.io_manager_chx; 1310 ima.ptp = fnp_info.ptp; 1311 call io_manager$connect_direct (ima); /* kick 355 */ 1312 1313 return; /* return to caller */ 1314 end; 1315 end send_mbx; 1316 1317 /* entry and internal proc to hangup all lines on an FNP */ 1318 1319 hangup_fnp_lines: 1320 entry (a_fnp_no); 1321 1322 dcl a_fnp_no fixed bin; 1323 1324 ttybp = addr (tty_buf$); 1325 infop = addr (dn355_data$); 1326 call hangup_fnp (a_fnp_no); 1327 return; 1328 1329 1330 hangup_fnp: 1331 proc (fnp_no); 1332 1333 dcl fnp_no fixed bin; 1334 1335 fnpp = addr (datanet_info.per_datanet (fnp_no)); 1336 n_pcbs = fnp_info.no_of_channels; 1337 do j = 1 to n_pcbs; 1338 pcbp = addr (fnp_info.pcb_array_ptr -> pcb_array (j)); 1339 if pcb.dialed 1340 then do; 1341 call throw_away_output; 1342 call channel_manager$interrupt ((pcb.devx), CRASH, ""b); 1343 end; 1344 end; 1345 1346 if fnp_info.count > 0 /* get rid of any outstanding delay queue entries */ 1347 then do; 1348 q_count = fnp_info.count; 1349 q_first = fnp_info.cur_ptr; 1350 do q_count = q_count to 0 by -1 while (q_first ^= 0); 1351 qptr = ptr (ttybp, q_first); /* get real pointer to queue entry */ 1352 q_first = qptr -> q_entry.next; /* save pointer to next one */ 1353 call tty_space_man$free_space (size (q_entry), qptr); 1354 end; 1355 1356 fnp_info.count, fnp_info.cur_ptr, fnp_info.last_ptr = 0; 1357 end; 1358 1359 end; 1360 1361 1362 1363 throw_away_output: 1364 proc; 1365 1366 /* throws away pending write chain on quit and hangup */ 1367 1368 if pcb.write_first ^= 0 1369 then do; 1370 call tty_space_man$free_chain ((pcb.devx), OUTPUT, ptr (ttybp, pcb.write_first)); 1371 pcb.write_first, pcb.write_last, pcb.write_cnt = 0; 1372 1373 end; 1374 1375 pcb.end_frame = "0"b; 1376 1377 return; 1378 end /* throw_away_output */; 1379 1380 /* internal procedure to report that DIA never set PCW to 0 */ 1381 1382 report_fnp_no_response: 1383 proc; 1384 1385 call syserr (beeper, "dn355: FNP ^a did not respond to mailbox interrupt", fnp_info.fnp_tag); 1386 call report_fnp_crash; /* treat it like a crash */ 1387 return; 1388 1389 end /* report_fnp_no_response */; 1390 1391 1392 /* internal procedure to tell initializer and clean up when FNP crashes */ 1393 1394 report_fnp_crash: 1395 proc; 1396 1397 fnp_info.running = "0"b; /* it isn't any more */ 1398 if fnp_info.dump_patch_in_progress /* somebody's waiting for this */ 1399 then call pxss$notify (FNP_DUMP_PATCH_EVENT); /* don't let them wait forever */ 1400 1401 if ^fnp_info.bootloading /* if we weren't still loading it */ 1402 then /* now report hangups for all lines that were dialed to it */ 1403 call hangup_fnp (dno); 1404 else fnp_info.bootloading = "0"b; 1405 1406 auto_fnp_msg.state = FNP_DOWN; /* tell the responsible process */ 1407 auto_fnp_msg.fnp_no = dno; 1408 auto_fnp_msg.flags = "0"b; 1409 unspec (fnp_event_message) = unspec (auto_fnp_msg); 1410 call pxss$ring_0_wakeup (fnp_info.boot_process_id, fnp_info.boot_ev_chan, fnp_event_message, 0); 1411 1412 return; 1413 1414 end report_fnp_crash; 1415 check_lock: 1416 proc; 1417 1418 /* the cleanup procedure -- makes sure we don't crawl out with lock set */ 1419 1420 if queue_locked 1421 then call syserr (crash_system, "dn355: attempted crawlout with FNP queue locked"); 1422 1423 else if masked 1424 then call pmut$unwire_unmask (wire_arg, wire_ptr);/* it's probably too late, but just in case */ 1425 1426 return; 1427 end check_lock; 1428 1429 /* Main program declarations */ 1430 1431 dcl (dcwlptr, bufp, qptr) ptr, /* random pointers used */ 1432 timw fixed bin (24), /* local slot for mailbox timw */ 1433 (level, dno, i, ix, q_first, q_count, chars_left, numchars, k, j, chain_len) fixed bin, 1434 /* random halfwords used */ 1435 devx fixed bin, /* index of current channel */ 1436 operation fixed bin (8), /* local slot for delay queue operation */ 1437 lano bit (3) unal; /* local slot for line number */ 1438 dcl fnp_name char (1) aligned; /* for syserr calls */ 1439 1440 dcl no_response bit (1) aligned; /* set by send_mbx to indicate that DIA didn't respond */ 1441 1442 dcl interrupt_entry bit (1); /* whether entered through dn355$interrupt */ 1443 1444 dcl input_count fixed bin; /* count sent with accept_dir_input */ 1445 1446 dcl chan_lctep ptr; /* pointer to subchannel's LCTE */ 1447 dcl chain_head_ptr ptr; /* pointer to output chain to be freed */ 1448 dcl output_limit fixed bin; /* maximum number of output chars to be sent at once */ 1449 dcl output_chars fixed bin; /* number of output chars sent so far */ 1450 1451 dcl bits_per_char fixed bin; 1452 dcl max_buf_chars fixed bin; /* number of characters to go in largest buffer at this speed */ 1453 1454 dcl wire_arg fixed bin (71); 1455 dcl wire_ptr ptr; 1456 dcl masked bit (1); 1457 dcl queue_locked bit (1); 1458 dcl continue bit (1); /* for premature termination of loops */ 1459 1460 dcl offset fixed bin; /* offset of error message in dn355_messages */ 1461 dcl syserr_severity fixed bin (35); 1462 1463 /* Codes used for syserr are declared here because syserr_constants.incl.pl1 cannot 1464* be used, owing to a naming conflict with mcs_interrupt_info.incl.pl1. 1465**/ 1466 1467 dcl ( 1468 dataoff init (1), /* offset in buffer of data */ 1469 max_chain_len init (16), /* maximum dcw chain length */ 1470 just_tell init (0), /* syserr message, no alarm */ 1471 beeper init (3), /* syserr ring beeper */ 1472 log init (4), 1473 crash_system init (1) 1474 ) fixed bin int static options (constant); /* argument to syserr */ 1475 1476 dcl FNP_DOWN fixed bin int static options (constant) init (2); 1477 1478 dcl initial_pcw bit (36) int static init ("000000000000000000000000000000111001"b); 1479 /* initial dia pcw */ 1480 dcl TANDD_LINE_NUMBER bit (10) int static options (constant) init ((10)"1"b); 1481 /* i.e., 1777 octal */ 1482 dcl TWO_SECONDS fixed bin (71) int static options (constant) init (2000000); 1483 /* used to wait for DIA to clear PCW */ 1484 1485 dcl timwb (0:11) bit (1) based (addr (timw)), /* timw as a bit array */ 1486 used_string bit (8) based (addr (datanet_mbx.mbx_used_flags.used (0))); 1487 /* mailbox used flags as a bit string */ 1488 1489 dcl (addr, binary, substr, stac, stacq, string, ptr, rel, index, fixed, divide, bin, max, min, null, length, bit, unspec, 1490 hbound, size, verify, clock) builtin; /* builtin functions used */ 1491 1492 dcl unal_number fixed bin (17) unal based, /* handy way of referencing an unaligned number */ 1493 chars char (numchars) based; /* handy way of moving character strings */ 1494 1495 dcl input_chars char (chars_left) based; /* for scanning entire input */ 1496 1497 dcl smbx_cmd_data_long bit (216) unaligned based (addr (sub_mbx.command_data)); 1498 1499 dcl tc_data$system_shutdown ext fixed bin; /* external variables used */ 1500 dcl tc_data$fnp_buffer_threshold ext static fixed bin; 1501 dcl pds$processid bit (36) aligned ext static; 1502 1503 dcl ff_cr_lf char (3) int static options (constant) init (" 1504 "); 1505 1506 dcl form_feed init (" ") char (1) int static options (constant); 1507 1508 dcl syserr entry options (variable), /* external entries called */ 1509 ldac entry (ptr) returns (fixed bin (24)), 1510 dn355_util$compute_parity entry (bit (36)) returns (bit (36)), 1511 ( 1512 dn355_boot_interrupt, 1513 dn355_boot_interrupt$system_fault 1514 ) entry (fixed bin), 1515 pxss$ring_0_wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)), 1516 pxss$unique_ring_0_wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)), 1517 pxss$notify entry (fixed bin); 1518 1519 dcl pmut$wire_and_mask entry (fixed bin (71), ptr); 1520 dcl pmut$unwire_unmask entry (fixed bin (71), ptr); 1521 dcl 1 auto_net_event_message aligned like net_event_message; 1522 dcl 1 auto_fnp_msg aligned like fnp_msg; 1523 dcl fnp_event_message fixed bin (71); 1524 1525 dcl 1 dcw_list (max_chain_len) aligned based (dcwlptr), /* dcw list for output */ 1526 2 dcw_ptr bit (18) unal, /* pointer to buffer */ 1527 2 pad bit (9) unal, /* unused */ 1528 2 dcw_tally bit (9) unal; /* tally */ 1529 1530 dcl 1 dcw_list_array (0:7) aligned based, 1531 2 dcw_list_template (max_chain_len) like dcw_list; 1532 1533 dcl 1 q_entry aligned like fnp_queue_entry based (qptr); 1534 1535 dcl new_qp ptr; /* temporary to newly-allocated block */ 1536 dcl new_qrel fixed bin; 1537 1538 dcl 1 dn355_word unal based (addr (datanet_mbx.fault_word)), 1539 /* format of 355 crash word */ 1540 2 modnum bit (4), /* module number (1 - 8) */ 1541 2 opcode fixed bin (4), 1542 2 crash_code fixed bin (8); /* used to index list of messages */ 1543 1544 dcl fault_type fixed bin; /* 355 fault code */ 1545 dcl fault_name char (16); /* 355 fault name */ 1546 dcl module_num fixed bin; /* 355 module number */ 1547 1548 dcl iom_channel_fault fixed bin int static init (9); 1549 dcl illegal_opcode fixed bin int static init (3); 1550 dcl die_code fixed bin int static init (9); 1551 1552 dcl 1 error_msg aligned based (addr (sub_mbx.command_data (1))), 1553 /* error message data */ 1554 2 data (4) bit (18) unal; 1555 1556 dcl full_words (3) fixed bin; 1557 1558 dcl reason_msg char (64); 1559 1560 dcl cleanup condition; 1561 1 1 /* BEGIN INCLUDE FILE ... baud_rates.incl.pl1 */ 1 2 1 3 /* Defines valid baud rate values for communications channels */ 1 4 1 5 /* Created by somebody a long time ago */ 1 6 /* Modified April 1982 by Robert Coren to add speeds above 9600 (up to 72000) */ 1 7 1 8 dcl baud_table (15) fixed bin int static options (constant) init 1 9 (110, 133, 150, 300, 600, 1200, 1800, 2400, 4800, 7200, 1 10 9600, 19200, 40800, 50000, 72000); 1 11 1 12 /* END INCLUDE FILE ... baud_rates.incl.pl1 */ 1562 1563 2 1 /* BEGIN INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 2 2 2 3 /* Created 8/25/78 by J. Stern */ 2 4 2 5 2 6 /* call channel_manager$read (devx, chain_ptr, more_input_flag, code) */ 2 7 dcl channel_manager$read entry (fixed bin, ptr, bit (1) aligned, fixed bin (35)); 2 8 2 9 /* call channel_manager$write (devx, output_ptr, code) */ 2 10 dcl channel_manager$write entry (fixed bin, ptr, fixed bin (35)); 2 11 2 12 /* call channel_manager$control (devx, control_type, info_ptr, code) */ 2 13 dcl channel_manager$control entry (fixed bin, char (*), ptr, fixed bin (35)); 2 14 2 15 /* call channel_manager$set_modes (devx, mode_change_list_ptr, code) */ 2 16 dcl channel_manager$set_modes entry (fixed bin, ptr, fixed bin (35)); 2 17 2 18 /* call channel_manager$check_modes (devx, mode_change_list_ptr, code) */ 2 19 dcl channel_manager$check_modes entry (fixed bin, ptr, fixed bin (35)); 2 20 2 21 /* call channel_manager$get_modes (devx, modes, code) */ 2 22 dcl channel_manager$get_modes entry (fixed bin, char (*), fixed bin (35)); 2 23 2 24 /* call channel_manager$interrupt (devx, int_type, int_data) */ 2 25 dcl channel_manager$interrupt entry (fixed bin, fixed bin, bit (72) aligned); 2 26 2 27 /* call channel_manager$interrupt_later (devx, int_type, int_data) */ 2 28 dcl channel_manager$interrupt_later entry (fixed bin, fixed bin, bit (72) aligned); 2 29 2 30 /* call channel_manager$queued_interrupt (devx, int_type, int_data) */ 2 31 dcl channel_manager$queued_interrupt entry (fixed bin, fixed bin, bit (72) aligned); 2 32 2 33 2 34 /* END INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 1564 1565 3 1 /* BEGIN dn355_data.incl.pl1 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 3 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 3 8* Add data needed for the uncp multiplexer (DSA gateway) interface 3 9* implementation. 3 10* 2) change(89-03-20,Parisek), approve(89-06-06,MCR8110), 3 11* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 3 12* Add support of protocol mpx. 3 13* END HISTORY COMMENTS */ 3 14 3 15 3 16 /* Date Last Modified and Reason 3 17* 3 18* Created 07/25/74 by R. B. Snyder for new ttydim. 3 19* Modified 06/23/77 by J. Stern to add channel_work_reqd and cwork_count 3 20* Modified 08/14/78 by Robert Coren to remove devx_tab and invent PCBs 3 21* Modified 79 May 14 by Art Beattie to add fnp_mem_size 3 22* Modified December 1979 by Robert Coren to add FNP queue lock 3 23* Modified January 1980 by Larry Johnson to increase max number of FNPs to 8 3 24* Modified 02/12/80 by Robert Coren to add dcw_list_array_ptr 3 25* Modified 03/06/80 by Robert Coren to add some metering info 3 26* Modified 12/10/80 by Robert Coren to add get_meters_waiting flag 3 27* Modified 83-12-16 BIM to use a chanid instead of iom/channel fb's. 3 28* Modified 1984-07-26 BIM for paged iom. 3 29* Modified in September 1985 for the DN7100 version interim. 3 30**/ 3 31 3 32 /* LOCKING RULES: A fnp is locked by its LCTE unless its LCTE is uninitialized. 3 33* In that case, the configuration_lock must be held. 3 34* if tty_lock$lock_lcte returns io_no_permission, then the caller must 3 35* lock$lock_fast the configuration lock and retry the LCTE lock. If 3 36* the lcte is now initialized, too bad. Otherwise, the config lock protects. 3 37* 3 38* Configuration locking is interesting to init_multiplexer and 3 39* all of fnp t&d and reconfiguration. The guts of the multiplexer 3 40* pay no attention to it. Thus, if the LCTE can be locked, it MUST be 3 41* locked before changing the io_manager_assigned flag. */ 3 42 3 43 /* format: style4,delnl,insnl,^ifthendo */ 3 44 3 45 dcl max_no_355s fixed bin int static init (8) options (constant); 3 46 /* max no of 355s we can handle (arbitrary) */ 3 47 dcl dn355_data$ external fixed bin; 3 48 3 49 dcl infop pointer; 3 50 dcl fnpp ptr; 3 51 3 52 dcl 1 datanet_info aligned based (infop), 3 53 2 configuration_lock aligned, 3 54 3 pid bit (36) aligned, 3 55 3 event bit (36) aligned, 3 56 3 flags aligned, 3 57 4 notify_sw bit (1) unaligned, 3 58 4 pad bit (35) aligned, 3 59 2 no_of_355s fixed bin, /* no. of FNP's */ 3 60 2 trace bit (1) aligned, /* watch events on console */ 3 61 2 debug_stop bit (1) aligned, /* crash on errors */ 3 62 2 uncp_bufp ptr, /* pointer to the circular buffer */ 3 63 2 protocol_datap ptr, /* pointer to protocol_mpx data */ 3 64 2 pad1 (6) bit (36) aligned, 3 65 2 per_datanet (max_no_355s) aligned like fnp_info; /* data per datanet */ 3 66 3 67 dcl 1 fnp_info aligned based (fnpp), /* structure for each FNP */ 3 68 2 mbx_pt pointer, /* pointer to mailbox NULL if not in config */ 3 69 2 pcb_array_ptr pointer, /* pointer to array of physical channel blocks */ 3 70 2 dcw_list_array_ptr pointer, /* pointer to array of space reserved for output DCW lists */ 3 71 2 no_of_channels fixed bin, /* number of channels on this FNP */ 3 72 2 fnp_id, 3 73 3 fnp_tag char (1) unaligned, /* letter identifying FNP */ 3 74 3 fnp_number fixed bin (9) unsigned unaligned, /* sequence number of FNP */ 3 75 3 padc bit (18) unaligned, 3 76 2 io_chanid char (8) aligned, 3 77 2 io_manager_chx fixed bin (35), /* devx for DIA on iom */ 3 78 2 lsla_idx (0:5) fixed bin aligned, /* index into PCB array for lsla lines */ 3 79 2 hsla_idx (0:2) fixed bin aligned, /* index into PCB array for hsla lines */ 3 80 2 count fixed bin, /* number of items in delay queue */ 3 81 2 cur_ptr fixed bin, /* offset in tty_buf of next delay queue element */ 3 82 2 last_ptr fixed bin, /* offset in tty_buf of last delay queue element */ 3 83 2 bleft_355 fixed bin, /* number of free buffers in this 355 */ 3 84 2 flags, 3 85 3 work_reqd bit (1) unaligned, /* mailbox messages queued up */ 3 86 3 bootloading bit (1) unaligned, /* currently being bootloaded */ 3 87 3 running bit (1) unaligned, /* this FNP is running */ 3 88 3 wired bit (1) unaligned, /* bootload buffer is wired */ 3 89 3 dump_patch_in_progress bit (1) unaligned, /* a dump or patch order is in progress */ 3 90 3 level_3_pending bit (1) unaligned, /* level 3 interrupt pending */ 3 91 3 level_7_pending bit (1) unaligned, /* level 7 interrupt pending */ 3 92 3 dump_patch_disabled bit (1) unaligned, /* dump & patch orders disabled because of timeout */ 3 93 3 t_and_d_in_progress bit (1) unaligned, /* T & D using FNP */ 3 94 3 t_and_d_lev_3_occurred bit (1) unaligned, /* A level 3 occurred */ 3 95 3 t_and_d_lev_7_occurred bit (1) unaligned, 3 96 3 t_and_d_notify_requested bit (1) unaligned, 3 97 3 t_and_d_assigned bit (1) unaligned, /* AS has given fnp to process */ 3 98 3 get_meters_waiting bit (1) unaligned, /* waiting for meter copy to complete */ 3 99 3 padb bit (7) unaligned, 3 100 3 active_dial unaligned, 3 101 4 active_bit (15) bit (1) unaligned, /* ON if the process is active */ 3 102 2 lcte_ptr ptr, /* pointer to this FNP's LCT entry */ 3 103 2 astep ptr, /* pointer to aste of wired bootload buffer */ 3 104 2 boot_ev_chan fixed bin (71), /* event channel over which to signal bootload completion */ 3 105 2 boot_process_id bit (36), /* process that initiated bootload */ 3 106 2 version char (4), /* version id of core image */ 3 107 2 fnp_mem_size fixed bin (18) unsigned, /* memory size of this FNP in 18-bit words */ 3 108 2 queue_lock bit (36) aligned, /* lock for interrupt queue */ 3 109 2 dump_patch_lock bit (36), /* lock for fnp_dump or _patch operation */ 3 110 2 q_entries_made fixed bin (35), /* count of delay queue entries made */ 3 111 2 input_reject_count fixed bin, /* number of times input rejected */ 3 112 2 processed_from_q fixed bin (35), /* number of interrupts processed from queue */ 3 113 2 fnp_channel_locked fixed bin (35), /* number of times dn355 found per-FNP lock locked */ 3 114 2 input_data_transactions fixed bin (35), /* number of mailbox transactions for input */ 3 115 2 output_data_transactions fixed bin (35), /* number of mailbox transactions for output */ 3 116 2 input_control_transactions fixed bin (35), /* number of mailbox transactions for inbound control info */ 3 117 2 output_control_transactions fixed bin (35), /* number of mailbox transactions for outbound control info */ 3 118 2 cumulative_mbx_in_use fixed bin (35), /* cumulative count of number of outbound mailboxes in use */ 3 119 2 max_mbx_in_use fixed bin, /* maximum number of mailboxes in use at any given time */ 3 120 2 mbx_in_use_updated fixed bin (35), /* number of increments to cumulative_mbx_in_use */ 3 121 2 mbx_unavailable fixed bin (35), /* number of times had to queue mailbox transaction because none available */ 3 122 2 free_size fixed bin (35), /* cumulative amount of bleft_355 */ 3 123 2 free_count fixed bin, /* number of adds to above */ 3 124 2 fnp_space_restricted_output fixed bin (35), /* number of times available FNP space restricted amount of output sent */ 3 125 2 tandd_pcbx fixed bin, /* index of PCB for COLTS channel */ 3 126 2 n_pages_wired fixed bin, /* pages wired for loading */ 3 127 2 config_flags aligned, 3 128 3 available bit (1) unaligned, /* reconfig says "yes" */ 3 129 3 io_manager_assigned bit (1) unaligned, /* We have channel assigned to us */ 3 130 3 pad bit (34) unaligned, 3 131 2 uncp_pcbx1 fixed bin (17) unaligned, /* For the DN7100 */ 3 132 2 uncp_pcbx2 fixed bin (17) unaligned, /* For the DN7100 */ 3 133 2 ptx fixed bin, /* page table index, used only at bootload */ 3 134 2 ptp pointer unaligned; /* page table for this FNP */ 3 135 3 136 /**** The following named constants are used to lay out the 3 137* iom page tables. Each FNP has to have its own page 3 138* table because there is not enough room to have eight different 3 139* bootload images of 32 K and > 64 K of tty_buf 3 140* 3 141* THE MAX TTY BUF LENGTH IS 192 K words. We could have another 16 K 3 142* easily, and then after that it would get hard. */ 3 143 3 144 /**** The layout 3 145* 3 146* Page I/O address Memory address Comments 3 147* ---- ------ -------------- -------- 3 148* 0 0 xxxxxx invalid PTW 3 149* 1 2000 2000 write-enabled (mailbox) 3 150* 2 4000 4000 write-enabled (mailbox) 3 151* 3 6000 6000 write-enabled (mailbox) 3 152* 4 10000 as needed bootload image segment page 0 3 153* .... .... .... .... 3 154* 35 110000 as needed bootload image segment page 31 3 155* 36 112000 xxxxxx invalid PTW 3 156* ... .... .... .... 3 157* 63 160000 .... invalid PTW 3 158* 64 200000 as needed tty_buf page 0 3 159* ... .... .... .... 3 160* 127 260000 as needed tty_buf page 63 3 161* 255 ...... ..... tty_buf page 191 3 162**/ 3 163 3 164 /**** We assume that the page table starts at all zeros. */ 3 165 3 166 declare FIRST_BOOTLOAD_PAGEX fixed bin init (4) int static options (constant); 3 167 declare FIRST_TTY_BUF_PAGEX fixed bin init (64) int static options (constant); 3 168 3 169 /* End include file dn355_data.incl.pl1 */ 1566 1567 4 1 /* BEGIN dn355_mailbox.incl.pl1 */ 4 2 4 3 /* Date Last Modified and Reason 4 4* Created 07/25/74 by R. B. Snyder for new ttydim. 4 5* Modified 08/20/75 by Mike Grady to prepare for multiple 355's 4 6* Modified 11/08/78 by Robert Coren to introduce FNP-controlled mailboxes 4 7* Modified 02/19/80 by Robert Coren to specify format of accept_input mailbox 4 8* Modified 04/23/80 by Robert Coren to replace lock with num_in_use 4 9* Modified 09/21/82 by Robert Coren to make subfields of crash_data be fixed bin (18) unsigned 4 10* */ 4 11 4 12 dcl 1 datanet_mbx aligned based (mbxp), /* declaration of 355 mailbox */ 4 13 2 dia_pcw aligned, /* Peripheral Control Word for DIA */ 4 14 3 zero bit (18) unaligned, 4 15 3 error bit (1) unaligned, /* set to "1"b if error on connect */ 4 16 3 pad1 bit (5) unaligned, 4 17 3 mbx_no bit (6) unaligned, /* number of submbx being sent to 355 */ 4 18 3 command bit (6) unaligned, /* always 71 (octal) */ 4 19 2 mailbox_requests fixed bin, /* 0 mod 256K cnt of mbx requests by 355 */ 4 20 2 term_inpt_mpx_wd bit (36) aligned, /* terminate interrupt multiplex word */ 4 21 2 last_mbx_req_count fixed bin, /* previous value of mailbox_requests */ 4 22 2 num_in_use fixed bin, /* number of submailboxes currently in use */ 4 23 2 mbx_used_flags, /* one bit for each mailbox */ 4 24 3 used (0:7) bit (1) unaligned, /* "1"b means this mbx is being used */ 4 25 3 pad2 bit (28) unaligned, 4 26 2 crash_data, /* data for 355 emergency interrupt */ 4 27 3 fault_code fixed bin (18) unal unsigned, 4 28 3 ic fixed bin (18) unal unsigned, 4 29 3 iom_fault_status fixed bin (18) unal unsigned, 4 30 3 fault_word fixed bin (18) unal unsigned, /* contains either faulting instruction or iomchannel no */ 4 31 2 dn355_sub_mbxes (0:7) aligned, /* 8 CS-initiated submailboxes */ 4 32 3 pad4 (8) fixed bin, /* eight words each */ 4 33 2 fnp_sub_mbxes (0:3) aligned, /* 4 FNP-initiated mailboxes */ 4 34 3 pad5 (28) fixed bin; /* 28 words each */ 4 35 4 36 dcl 1 sub_mbx aligned based (subp), /* declaration of a submailbox */ 4 37 2 dn355_no bit (3) unaligned, /* 355 number */ 4 38 2 pad1 bit (5) unaligned, 4 39 2 line_number unaligned, /* line number assigned by 355 */ 4 40 3 is_hsla bit (1) unaligned, /* on if hsla, off if lsla */ 4 41 3 la_no bit (3) unaligned, /* line adapter (high or low speed) number */ 4 42 3 slot_no bit (6) unaligned, /* physical slot/subchannel number */ 4 43 2 terminal_id bit (18) unaligned, /* not used */ 4 44 4 45 2 terminal_type bit (9) unaligned, /* unused */ 4 46 2 cmd_data_len fixed bin (8) unaligned, /* no. of 6 bit chars in command data */ 4 47 2 op_code fixed bin (8) unaligned, /* op code */ 4 48 2 io_cmd fixed bin (8) unaligned, /* i/o cmd */ 4 49 4 50 2 command_data (3) bit (36) unaligned, /* data associated with op code */ 4 51 4 52 2 address unal, /* dcw buffer or circular queue address */ 4 53 3 data_addr bit (18) unaligned, /* data address */ 4 54 3 word_cnt fixed bin (18) unsigned unaligned, /* data length */ 4 55 2 pad3 bit (72) unaligned; 4 56 4 57 /* The structure below defines the long form of submailbox used by the FNP. Note that 4 58* the declaration of command_data and input_data is that used for the input_in_mailbox 4 59* operation; other FNP-initiated operations use the command_data format described by 4 60* the above (short mailbox) structure 4 61**/ 4 62 4 63 dcl 1 fnp_sub_mbx aligned based (subp), /* format used for FNP-controlled mailbox */ 4 64 2 dn355_no bit (3) unaligned, /* as above */ 4 65 2 pad1 bit (5) unaligned, 4 66 2 line_number unaligned, /* as above */ 4 67 3 is_hsla bit (1) unaligned, 4 68 3 la_no bit (3) unaligned, 4 69 3 slot_no bit (6) unaligned, 4 70 2 n_free_buffers fixed bin (17) unaligned, /* number of free blocks in FNP at present */ 4 71 4 72 2 pad3 bit (9) unaligned, 4 73 2 n_chars fixed bin (9) unsigned unaligned, /* number of data characters (if input) */ 4 74 2 op_code fixed bin (9) unsigned unaligned, /* as above */ 4 75 2 io_cmd fixed bin (9) unsigned unaligned, /* as above */ 4 76 4 77 2 input_data char (100) unaligned, /* input characters for input_in_mailbox op */ 4 78 2 command_data bit (36) unaligned; /* shouldn't need more than one word */ 4 79 4 80 /* The structure below defines the format of a long submailbox used for an accept_input operation 4 81* when the data is too long to fit directly in the mailbox. command_data and n_chars occupy the same position as for input_in_mailbox, above. 4 82**/ 4 83 4 84 dcl 1 input_sub_mbx aligned based (subp), 4 85 2 pad1 bit (8) unaligned, 4 86 2 line_number unaligned like sub_mbx.line_number, 4 87 2 n_free_buffers fixed bin (17) unaligned, /* number of free blocks in FNP at present */ 4 88 4 89 2 n_chars fixed bin (17) unaligned, /* total number of data characters */ 4 90 2 op_code fixed bin (9) unsigned unaligned, 4 91 2 io_cmd fixed bin (9) unsigned unaligned, 4 92 4 93 2 n_buffers fixed bin, /* number of buffers in this input chain */ 4 94 2 dcw (24), /* "pseudo-DCWs" used to specify buffer addresses and tallies */ 4 95 3 abs_addr bit (24) unaligned, /* supplied by CS */ 4 96 3 tally fixed bin (12) unsigned unaligned, /* in characters, supplied by FNP */ 4 97 2 command_data bit (36) unaligned; /* as above */ 4 98 4 99 dcl subp pointer; 4 100 dcl mbxp pointer; 4 101 4 102 /* END dn355_mailbox.incl.pl1 */ 1568 1569 5 1 /* BEGIN INCLUDE FILE ... dn355_messages.incl.pl1 */ 5 2 5 3 /* created 1/31/75 by Robert S. Coren 5 4* * modified 5/19/76 by Robert S. Coren to add bootload messages 5 5* * Modified 1979 June 8 by Art Beattie to add messages to config_messages. 5 6* */ 5 7 5 8 /* This include file describes the data segment used in interpreting 5 9* * the info returned with an emergency interrupt from the 355, 5 10* * as well as error message mailboxes and bootload interrupts 5 11* */ 5 12 5 13 dcl dn355_messages$fault_names (0:10) char(16) aligned external; /* names associated with 355 fault codes */ 5 14 5 15 dcl dn355_messages$per_module fixed bin external; /* names and messages associated with 355 modules */ 5 16 5 17 dcl dn355_messages$error_messages (10) fixed bin ext; /* error_messages sent from the 355 */ 5 18 5 19 dcl dn355_messages$boot_messages (0:4) fixed bin external; /* messages describing major bootload status */ 5 20 5 21 dcl dn355_messages$config_messages (0:15) fixed bin external; /* messages describing configuration errors */ 5 22 5 23 dcl modulep ptr; 5 24 dcl reasonp ptr; 5 25 5 26 5 27 /* list of module names and message list offsets */ 5 28 5 29 dcl 1 dn355_modules (9) based (modulep) aligned, 5 30 2 name char(12), 5 31 2 list_offset fixed bin; 5 32 5 33 /* list of message offsets */ 5 34 5 35 dcl message_offset (22) fixed bin based; 5 36 5 37 5 38 /* crash messages for each module */ 5 39 5 40 dcl 1 dn355_reason aligned based (reasonp), 5 41 2 length fixed bin (8) unal, 5 42 2 msg char(0 refer (dn355_reason.length)) unal; 5 43 5 44 5 45 /* END INCLUDE FILE ... dn355_messages.incl.pl1 */ 1570 1571 6 1 /* Begin include file fnp_mpx_msg_.incl.pl1 BIM 83-12-20 */ 6 2 /* Message from ring 0 fnp mpx to user ring mpx manager */ 6 3 /* format: style3 */ 6 4 6 5 dcl fnp_msg_ptr pointer; 6 6 dcl 1 fnp_msg aligned based (fnp_msg_ptr), 6 7 2 fnp_no fixed bin (17) unal, 6 8 2 state fixed bin (17) unal, 6 9 2 flags unaligned, 6 10 3 deconfigured bit, 6 11 3 pad bit (35); 6 12 6 13 /* End include file fnp_mpx_msg_.incl.pl1 */ 1572 1573 7 1 /* BEGIN INCLUDE FILE...fnp_queue_entry.incl.pl1 */ 7 2 7 3 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(86-04-23,Coren), approve(86-04-23,MCR7300), 7 7* audit(86-05-19,Beattie), install(86-07-08,MR12.0-1089): 7 8* To increase the size of cmd_data to allow for 8-word echo-break tables. 7 9* END HISTORY COMMENTS */ 7 10 7 11 7 12 /* This include file defines the delay queue entries used by dn355 when an outbound 7 13* mailbox is unavailable */ 7 14 7 15 /* Extracted from dn355.pl1 by Robert Coren, September 1984 */ 7 16 7 17 dcl fnp_qptr pointer; 7 18 7 19 dcl 1 fnp_queue_entry based (fnp_qptr) aligned, /* definition of delay queue entry */ 7 20 2 opcode fixed bin (8) unal, /* opcode */ 7 21 2 cmd_count fixed bin (8) unal, /* count of valid command data */ 7 22 2 pcb_offset bit (18) unal, /* PCB of channel */ 7 23 2 cmd_data bit (8 * 36) unal, /* 8 words of command data */ 7 24 2 next fixed bin; /* offset of next queue entry */ 7 25 7 26 /* END INCLUDE FILE...fnp_queue_entry.incl.pl1 */ 1574 1575 8 1 /* Begin include file io_manager_dcls.incl.pl1 */ 8 2 8 3 /* Written by Charles Hornig, late 1980 and early 1981 */ 8 4 /* Modified for MR10 interface, February 1982 */ 8 5 /* Channel reconfiguration entries added by Chris Jones, January 1984 */ 8 6 8 7 /* These entries are callable on unwired stacks. */ 8 8 8 9 /* call io_manager$assign (Chx, Channel, Handler, Index, Statusp, Code); */ 8 10 dcl io_manager$assign 8 11 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 8 12 fixed bin (35), ptr, fixed bin (35)); 8 13 8 14 /* call io_manager$assign_add (Chx, Channel, Handler, Index, Statusp, Code); */ 8 15 dcl io_manager$assign_add 8 16 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 8 17 fixed bin (35), ptr, fixed bin (35)); 8 18 8 19 /* call io_manager$unassign (Chx, Code); */ 8 20 dcl io_manager$unassign entry (fixed bin (35), fixed bin (35)); 8 21 8 22 /* call io_manager$unassign_delete (Chx, Code); */ 8 23 dcl io_manager$unassign_delete entry (fixed bin (35), fixed bin (35)); 8 24 8 25 /* call io_manager$connect (Io_manager_arg); */ 8 26 dcl io_manager$connect entry (1 aligned like io_manager_arg); 8 27 8 28 /* call io_manager$connect_abs (Io_manager_arg); */ 8 29 dcl io_manager$connect_abs entry (1 aligned like io_manager_arg); 8 30 8 31 /* call io_manager$connect_direct (Io_manager_arg); */ 8 32 dcl io_manager$connect_direct entry (1 aligned like io_manager_arg); 8 33 8 34 /* call io_manager$get_status (Chx, Io_status_entry_ptr); */ 8 35 dcl io_manager$get_status entry (fixed bin (35), ptr); 8 36 8 37 /* call io_manager$mask (Chx); */ 8 38 dcl io_manager$mask entry (fixed bin (35)); 8 39 8 40 /* call io_manager$ignore_interrupt (); */ 8 41 dcl io_manager$ignore_interrupt entry (fixed bin (35), fixed bin (3), bit (36) aligned); 8 42 8 43 /* call io_manager$data_tdcw (Io_manager_arg); 8 44* dcl io_manager$data_tdcw entry (1 aligned like io_manager_arg); 8 45* 8 46* /* call io_manager$workspace_tdcw (Io_manager_arg); */ 8 47 dcl io_manager$workspace_tdcw entry (1 aligned like io_manager_arg); 8 48 8 49 dcl io_manager_arg_ptr ptr; 8 50 dcl 1 io_manager_arg aligned based (io_manager_arg_ptr), 8 51 2 chx fixed bin (35), /* channel index from io_manager$assign */ 8 52 2 bound fixed bin (19), /* workspace size */ 8 53 2 pcw bit (36) aligned, /* or IDCW */ 8 54 2 listx fixed bin (18), /* DCW list offset */ 8 55 2 ptp ptr, /* page table pointer */ 8 56 2 listp ptr, /* DCW list pointer */ 8 57 2 dcw_pair_ptr ptr; /* DCW pair pointer */ 8 58 8 59 /* End include file io_manager_dcls.incl.pl1 */ 1576 1577 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 */ 1578 1579 10 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 10 2 10 3 /* Written November 10 1975 by Paul Green */ 10 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 10 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 10 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 10 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 10 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 10 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 10 10 10 11 10 12 /****^ HISTORY COMMENTS: 10 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 10 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 15* Add a DSA line type. 10 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 10 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 18* Add HASP_OPR to identify HASP workstation consoles with login service. 10 19* END HISTORY COMMENTS */ 10 20 10 21 10 22 declare (LINE_MC initial (-2), 10 23 LINE_TELNET initial (-1), 10 24 LINE_UNKNOWN initial (0), 10 25 LINE_ASCII initial (1), 10 26 LINE_1050 initial (2), 10 27 LINE_2741 initial (3), 10 28 LINE_ARDS initial (4), 10 29 LINE_SYNCH initial (5), 10 30 LINE_G115 initial (6), 10 31 LINE_BSC initial (7), 10 32 LINE_ETX initial (8), 10 33 LINE_VIP initial (9), 10 34 LINE_ASYNC1 initial (10), 10 35 LINE_ASYNC2 initial (11), 10 36 LINE_ASYNC3 initial (12), 10 37 LINE_SYNC1 initial (13), 10 38 LINE_SYNC2 initial (14), 10 39 LINE_SYNC3 initial (15), 10 40 LINE_POLLED_VIP initial (16), 10 41 LINE_X25LAP initial (17), 10 42 LINE_HDLC initial (18), 10 43 LINE_COLTS initial (19), 10 44 LINE_DSA initial (20), 10 45 LINE_HASP_OPR initial (21) 10 46 ) fixed bin internal static options (constant); 10 47 10 48 dcl max_line_type fixed bin int static options (constant) init (21); 10 49 10 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 10 51 10 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 10 53 10 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 10 55 "MC", /* -2 */ 10 56 "TELNET", /* -1 */ 10 57 "none", /* 0 */ 10 58 "ASCII", /* 1 */ 10 59 "1050", /* 2 */ 10 60 "2741", /* 3 */ 10 61 "ARDS", /* 4 */ 10 62 "Sync", /* 5 */ 10 63 "G115", /* 6 */ 10 64 "BSC", /* 7 */ 10 65 "202ETX", /* 8 */ 10 66 "VIP", /* 9 */ 10 67 "ASYNC1", /* 10 */ 10 68 "ASYNC2", /* 11 */ 10 69 "ASYNC3", /* 12 */ 10 70 "SYNC1", /* 13 */ 10 71 "SYNC2", /* 14 */ 10 72 "SYNC3", /* 15 */ 10 73 "POLLED_VIP", /* 16 */ 10 74 "X25LAP", /* 17 */ 10 75 "HDLC", /* 18 */ 10 76 "COLTS", /* 19 */ 10 77 "DSA", /* 20 */ 10 78 "HASP_OPR"); /* 21 */ 10 79 10 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 1580 1581 11 1 /* BEGIN mailbox_ops.incl.pl1 11 2* 11 3* Created 8/15/74 by F. A. Canali 11 4* Modified 12/01/75 by J. Goldman for dial out 11 5* Modified 8/24/76 by Robert Coren to add dont_accept_calls and blast 11 6* Modified 7/28/77 by J. Stern to add set_delay_table 11 7* Modified 2/6/78 by Robert Coren to add sync_msg_size 11 8* Modified 6/29/79 by B. Greenberg for FNP echo negotiation 11 9* Modified Oct. 1979 by Robert Coren to add oflow & iflow modes 11 10* Modified 1/21/80 by Robert Coren to add parity controls 11 11* Modified 12/10/80 by Robert Coren to add report_meters 11 12* */ 11 13 11 14 dcl ( /* declaration of submailbox io commands */ 11 15 11 16 rcd init (1), /* read control data */ 11 17 rtx init (2), /* read text */ 11 18 wcd init (3), /* write control data */ 11 19 wtx init (4) /* write text */ 11 20 11 21 ) fixed bin (8) int static options (constant); 11 22 11 23 11 24 dcl ( /* declaration of submailbox op codes sent by 6180 to 355 */ 11 25 11 26 terminal_accepted init (0), /* a dialed terminal has been accepted */ 11 27 disconnect_this_line init (1), /* hang up a line */ 11 28 disconnect_all_lines init (2), /* hang up all lines */ 11 29 dont_accept_calls init (3), /* the 6180 is no longer accepting terminals */ 11 30 accept_calls init (4), /* the 6180 is ready to accept terminals */ 11 31 input_accepted init (5), /* the 6180 will accept input and has reserved 11 32* space in its circular buffer */ 11 33 set_line_type init (6), /* set the line type */ 11 34 enter_receive init (7), /* give the line to the terminal */ 11 35 set_framing_chars init (8), /* set characters for block transfer */ 11 36 blast init (9), /* BOS blast message */ 11 37 accept_direct_output init (10), /* the 6180 has an output request */ 11 38 accept_last_output init (11), /* same as above but the 355 may 11 39* unlock the keyboard and accept input 11 40* when the output transmission is through */ 11 41 dial init (12), /* use command data to dial a phone number */ 11 42 reject_request_temp init (14), /* an input request can not be serviced */ 11 43 terminal_rejected init (16), /* a dial up has been rejected */ 11 44 disconnect_accepted init (17), /* the 6180 recognizes a disconnection */ 11 45 init_complete init (18), /* 6180 system initialization is complete */ 11 46 dump_mem init (19), /* dump 355 memory */ 11 47 patch_mem init (20), /* patch 355 memory */ 11 48 fnp_break init (21), /* to control fnp break points */ 11 49 line_control init (22), /* line control order to fnp */ 11 50 sync_msg_size init (23), /* set message size for sync line */ 11 51 set_echnego_break_table init (24), /* send over echo negotiation break table */ 11 52 start_negotiated_echo init (25), /* attempt to start FNP echoing for ech. nego. */ 11 53 stop_negotiated_echo init (26), /* 6180 wants FNP to stop negotiated echo */ 11 54 init_echo_negotiation init (27), /* synchronize echo negotiation ctrs. */ 11 55 break_acknowledged init (29), /* the 6180 recognizes a break for a terminal */ 11 56 input_fc_chars init (30), /* set input flow control chars */ 11 57 output_fc_chars init (31), /* set output flow control chars */ 11 58 alter_parameters init (34), /* request to alter 355 parms for a terminal */ 11 59 checksum_error init (35), /* submailbox has a checksum error */ 11 60 report_meters init (36), /* get meters from FNP */ 11 61 set_delay_table init (37) /* tells 355 to set new delay table for channel */ 11 62 ) fixed bin (8) int static options (constant); 11 63 11 64 11 65 dcl ( /* submailbox op codes sent from 355 to 6180 */ 11 66 11 67 accept_new_terminal init (64), /* a terminal has dialed up */ 11 68 disconnected_line init (65), /* a terminal has been hung up */ 11 69 input_in_mailbox init (66), /* this mailbox contains input */ 11 70 line_masked init (67), /* channel was masked for excessive interrupts */ 11 71 s6180_params init (68), /* return bcount */ 11 72 send_output init (69), /* I am ready to send to a terminal */ 11 73 ack_echnego_init init (70), /* I have zeroed my ech. nego. ctr. */ 11 74 ack_echnego_stop init (71), /* I have sent all that I have echoed. */ 11 75 connect_to_slave init (73), /* a dialup sequence has been completed */ 11 76 accept_direct_input init (74), /* HEY! here's some input for you */ 11 77 break_condition init (75), /* a break has been hit for a terminl */ 11 78 wru_timeout init (76), /* no answerback */ 11 79 error_message init (77), /* error message from the 355 */ 11 80 first_acu_op_code init (80), 11 81 acu_no_power init (80), /* power indicator of auto-call unit is off */ 11 82 acu_line_occupied init (81), /* auto-call unit's line is being used */ 11 83 acu_dial_failure init (82), /* dial out failed */ 11 84 acu_no_good init (83), /* invalid dial out attempt */ 11 85 last_acu_op_code init (83), 11 86 line_status init (84) /* line status reported by fnp */ 11 87 ) fixed bin (8) int static options (constant); 11 88 11 89 dcl ( /* declaration of sub operations for alter parameters */ 11 90 11 91 Breakchar init (1), /* specifies break character */ 11 92 Nocontrol init (2), /* enter/leave nocontrol mode */ 11 93 Fullduplex init (3), /* perform character echoing */ 11 94 Break init (4), /* send line break to terminal */ 11 95 Errormsg init (5), /* indicates error detected by 355 */ 11 96 Meter init (6), /* read metering info */ 11 97 Sensepos init (7), /* sense position of carrier */ 11 98 Crecho init (8), /* enter/leave crecho mode */ 11 99 Lfecho init (9), /* enter/leave line feed echo mode */ 11 100 Lock init (10), /* lock keyboard */ 11 101 Msg init (11), /* precanned msg for dialing terminals */ 11 102 Upstate init (12), /* are you up? */ 11 103 Dumpoutput init (13), /* throw away output */ 11 104 Tabecho init (14), /* echo tabs */ 11 105 Setbusy init (15), /* force dataset busy */ 11 106 Listen init (16), /* answer the phone */ 11 107 Hndlquit init (17), /* send newline on receipt of quit */ 11 108 Chngstring init (18), /* printer addressing string definition */ 11 109 Wru init (19), /* read answerback */ 11 110 Echoplex init (20), /* enter/leave echoplex mode */ 11 111 Xmit_hold init (21), /* start/stop transmit hold */ 11 112 Dumpinput init (22), /* throw away input */ 11 113 Replay init (23), /* replay interrupted input */ 11 114 Polite init (24), /* write only if at left margin */ 11 115 Block_xfer init (25), /* block transfer or "frame" mode */ 11 116 Set_buffer_size init (26), /* set input buffer size */ 11 117 Breakall init (27), /* break on all characters */ 11 118 Prefixnl init (28), /* prefix output with newlines if input present */ 11 119 Input_flow_control init (29), /* iflow mode */ 11 120 Output_flow_control init (30), /* oflow mode */ 11 121 Odd_parity init (31), /* generate odd parity */ 11 122 Eight_bit_in init (32), /* 8bit mode */ 11 123 Eight_bit_out init (33) /* no_outp mode */ 11 124 ) fixed bin (8) int static options (constant); 11 125 11 126 dcl global_opcodes (9) fixed bin (8) int static options (constant) init ( 11 127 2, /* disconnect_all_lines */ 11 128 3, /* dont_accept_calls */ 11 129 4, /* accept_calls */ 11 130 9, /* blast */ 11 131 19, /* dump_mem */ 11 132 20, /* patch_mem */ 11 133 21, /* fnp_break */ 11 134 36, /* report_meters */ 11 135 77); /* error_message */ 11 136 11 137 /* END of mailbox_ops.incl.pl1 */ 1582 1583 12 1 /* BEGIN INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 12 2 12 3 /* Defines constants and structures used by MCS interrupt handlers */ 12 4 12 5 /* Created 08/21/78 by Robert Coren */ 12 6 /* Echo negotiation types added sometime by Bernie Greenberg */ 12 7 /* TIMER and USER_INTERRUPT added in spring of 1982 by Olin Sibert */ 12 8 /* MASKED type added June 23, 1982, by Robert Coren */ 12 9 12 10 dcl DIALUP fixed bin int static options (constant) init (1); 12 11 dcl HANGUP fixed bin int static options (constant) init (2); 12 12 dcl CRASH fixed bin int static options (constant) init (3); 12 13 dcl SEND_OUTPUT fixed bin int static options (constant) init (4); 12 14 dcl INPUT_AVAILABLE fixed bin int static options (constant) init (5); 12 15 dcl ACCEPT_INPUT fixed bin int static options (constant) init (6); 12 16 dcl INPUT_REJECTED fixed bin int static options (constant) init (7); 12 17 dcl QUIT fixed bin int static options (constant) init (8); 12 18 dcl LINE_STATUS fixed bin int static options (constant) init (9); 12 19 dcl DIAL_STATUS fixed bin int static options (constant) init (10); 12 20 dcl WRU_TIMEOUT fixed bin int static options (constant) init (11); 12 21 dcl SPACE_AVAILABLE fixed bin int static options (constant) init (12); 12 22 dcl ACKNOWLEDGE_ECHNEGO_INIT fixed bin int static options (constant) init (13); 12 23 dcl ACKNOWLEDGE_ECHNEGO_STOP fixed bin int static options (constant) init (14); 12 24 dcl TIMER fixed bin int static options (constant) init (15); 12 25 dcl USER_INTERRUPT fixed bin int static options (constant) init (16); 12 26 dcl MASKED fixed bin int static options (constant) init (17); 12 27 12 28 dcl interrupt_info bit (72) aligned; 12 29 12 30 dcl 1 dialup_info aligned, /* for use with DIALUP interrupt */ 12 31 2 line_type fixed bin (9) unal uns, 12 32 2 buffer_pad fixed bin (9) unal uns, /* free space multiplexer would like in output bufs */ 12 33 2 baud_rate fixed bin (18) unal uns, 12 34 2 max_buf_size fixed bin (9) unal uns, 12 35 2 receive_mode_device bit (1) unal, /* device must be told to enter receive mode */ 12 36 2 pad bit (26) unal; 12 37 12 38 dcl 1 rtx_info aligned, /* for use with ACCEPT_INPUT interrupt */ 12 39 2 input_chain unaligned, 12 40 3 chain_head bit (18) unaligned, 12 41 3 chain_tail bit (18) unaligned, 12 42 2 input_count fixed bin (18) unal uns, 12 43 2 flags unaligned, 12 44 3 break_char bit (1), /* data contains a break character */ 12 45 3 output_in_fnp bit (1), /* there is output in the FNP */ 12 46 3 output_in_ring_0 bit (1), /* there is output in ring 0 */ 12 47 3 formfeed_present bit (1), /* input contains a formfeed character */ 12 48 3 pad bit (14); 12 49 12 50 dcl 1 timer_info aligned, /* Info supplied with TIMER interrupt */ 12 51 2 id bit (36) aligned, /* ID which was supplied in call to mcs_timer$set */ 12 52 2 subchan_idx fixed bin; /* Index of subchannel on whose behalf timer was set */ 12 53 12 54 /* END INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 1584 1585 13 1 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 13 2 13 3 /****^ HISTORY COMMENTS: 13 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 13 5* install(86-10-09,MR12.0-1181): 13 6* This include file was formerly tty_event_message.incl.pl1. It has been 13 7* updated with different fields and new constants, and renamed to 13 8* net_event_message.incl.pl1 13 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 13 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 13 11* Add NETWORK_TYPE_VALUES array. 13 12* END HISTORY COMMENTS */ 13 13 13 14 /* describes event message passed with wakeups from the tty DIM */ 13 15 /* Created 5/24/76 by Robert S. Coren */ 13 16 13 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 13 18 13 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 13 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 13 21 13 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 13 23 2 version bit (2) unaligned, /* Currently version 1 */ 13 24 2 reason bit (16) unaligned, /* Additional info about the event */ 13 25 2 pad bit (6) unaligned, /* Must be zero */ 13 26 2 network_type fixed bin (4) unsigned unaligned, 13 27 /* See below for constants */ 13 28 2 type fixed bin (8) unsigned unaligned, 13 29 /* Type of interrupt, see below */ 13 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 13 31 13 32 /* Network type constants */ 13 33 13 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 13 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 13 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 13 37 13 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 13 39 "MCS", 13 40 "DSA", 13 41 "MOWSE"); 13 42 13 43 13 44 /* MCS event message type constants */ 13 45 13 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 13 47 13 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 13 49 /* used for "start" order, etc. */ 13 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 13 51 /* dialup */ 13 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 13 53 /* hangup */ 13 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 13 55 /* dialout status returned */ 13 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 13 57 /* quit */ 13 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 13 59 /* input arrived */ 13 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 13 61 /* output completed */ 13 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 13 63 /* control tables sent status */ 13 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 13 65 /* channel masked by FNP */ 13 66 13 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 13 68 /* 0 */ 13 69 "dialup", /* 1 */ 13 70 "hangup", /* 2 */ 13 71 "dialout status", /* 3 */ 13 72 "quit", /* 4 */ 13 73 "read", /* 5 */ 13 74 "write", /* 6 */ 13 75 "line status", /* 7 */ 13 76 "masked"); /* 8 */ 13 77 13 78 /* DSA event message type constants */ 13 79 13 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 13 81 13 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 13 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 13 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 13 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 13 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 13 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 13 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 13 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 13 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 13 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 13 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 13 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 13 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 13 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 13 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 13 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 13 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 13 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 13 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 13 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 13 102 13 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 13 104 /* 0 */ 13 105 "attention", /* 1 */ 13 106 "data_attention", /* 2 */ 13 107 "demand_release_sru", /* 3 */ 13 108 "demand_turn", /* 4 */ 13 109 "demand_turn_ack", /* 5 */ 13 110 "purge", /* 6 */ 13 111 "recover", /* 7 */ 13 112 "recover_ack", /* 8 */ 13 113 "release_sru", /* 9 */ 13 114 "resume", /* 10 */ 13 115 "resume_ack", /* 11 */ 13 116 "suspend", /* 12 */ 13 117 "suspend_ack", /* 13 */ 13 118 "terminate_abnormal", /* 14 */ 13 119 "establishment", /* 15 */ 13 120 "terminated", /* 16 */ 13 121 "user_unassign", /* 17 */ 13 122 "data input", /* 18 */ 13 123 "data output"); /* 19 */ 13 124 13 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 1586 1587 14 1 /* BEGIN INCLUDE FILE ... pcb.incl.pl1 */ 14 2 14 3 14 4 14 5 /****^ HISTORY COMMENTS: 14 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 14 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 14 8* Add data needed for the uncp multiplexer (DSA gateway) interface 14 9* implementation. 14 10* END HISTORY COMMENTS */ 14 11 14 12 14 13 /* Created 08/14/78 by Robert S. Coren */ 14 14 /* Modified 02/19/80 by Robert S. Coren to add read_first & read_last */ 14 15 /* Modified 12/10/80 by Robert S. Coren to add metering stuff */ 14 16 /* Modified May 1981 by Robert S.Coren to add tandd_attached flag */ 14 17 /* Modified in February 1982 to add: dumpout, turn, enter_receive_pending, 14 18* connection_type, send_lf, extra_nl,lfecho flags for DN7100 */ 14 19 14 20 /* Describes physical channel blocks for FNP channels */ 14 21 14 22 dcl n_pcbs fixed bin; 14 23 dcl pcbp ptr; 14 24 14 25 dcl 1 pcb_array (n_pcbs) based aligned like pcb; 14 26 14 27 dcl 1 pcb aligned based (pcbp), /* physical channel block declaration */ 14 28 2 channel_desc unaligned, 14 29 3 devx fixed bin (17), /* index of LCT entry */ 14 30 3 subchan fixed bin (7) unaligned, /* logical subchannel/lsla slot # correspondence */ 14 31 3 line_number unal, /* regular line number */ 14 32 4 is_hsla bit (1) unaligned, /* on if hsla, off if lsla */ 14 33 4 la_no bit (3) unaligned, /* line adapter (high or low speed) number */ 14 34 4 slot_no bit (6) unaligned, /* physical slot or subchannel number */ 14 35 2 write_first fixed bin (17) unaligned, /* offset of first buffer in output chain */ 14 36 2 write_last fixed bin (17) unaligned, /* offset of last buffer in output chain */ 14 37 2 baud_rate fixed bin (17) unaligned, /* baud rate of channel */ 14 38 2 line_type fixed bin (17) unaligned, /* line type */ 14 39 2 max_buf_size fixed bin (17) unaligned, /* largest buffer to be allocated for output */ 14 40 2 write_cnt fixed bin (17) unaligned, /* number of characters in write chain */ 14 41 2 flags unaligned, 14 42 3 listen bit (1), /* channel is ready for dialup */ 14 43 3 dialed bit (1), /* channel is dialed up or connected */ 14 44 3 send_output bit (1), /* channel is ready for output */ 14 45 3 high_speed bit (1), /* needs large send_out threshold */ 14 46 3 sync_line bit (1), /* synchronous channel */ 14 47 3 end_frame bit (1), /* channel is waiting for formfeed */ 14 48 3 hndlquit bit (1), /* channel in hndlquit mode */ 14 49 3 breakall_enabled bit (1), /* breakall mode allowed for this channel */ 14 50 3 output_mbx_pending bit (1), /* A wtx mbx has been sent, but not relinquished */ 14 51 3 copied_meters_ready bit (1), /* copy_meters operation has completed */ 14 52 3 get_meters_waiting bit (1), /* waiting for get_meters operation to complete */ 14 53 3 tandd_attached bit (1), /* this channel is in use by T & D */ 14 54 3 enter_receive_pending bit (1), /* enter_receive is waiting for send */ 14 55 3 turn bit (1), /* Multics owns the turn */ 14 56 3 extra_nl bit (1), /* add NL at end of buffer (read) */ 14 57 3 send_lf bit (1), /* send lf after read */ 14 58 3 lfecho bit (1), /* Validate lfecho mode */ 14 59 3 dumpout bit (1), /* To purge first write after special dial */ 14 60 3 buffer_flag bit (1), /* Utilisation of a buffer in place of the circular buffer. */ 14 61 3 connection_type bit (2), /* For full-duplex */ 14 62 3 padb bit (6), 14 63 3 uncp_pcbx fixed bin (9) unal uns, /* To manage the full duplex with the datanet 7100 */ 14 64 2 read_first fixed bin (18) unsigned unaligned, /* head of read chain (while reading from FNP) */ 14 65 2 read_last fixed bin (18) unsigned unaligned, /* tail of read chain (likewise) */ 14 66 2 saved_meters_ptr pointer unaligned, /* pointer to (unwired) copy of meters at last dialup */ 14 67 2 copied_meters_offset fixed bin (18) unsigned; /* offset in tty_buf of buffer meters copied to */ 14 68 14 69 /* END INCLUDE FILE ... pcb.incl.pl1 */ 1588 1589 15 1 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 15 2 15 3 /* Date Last Modified and Reason 15 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 15 5* Modified January 1978 by Robert Coren and Larry Johnson for variable-size buffers 15 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 15 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 15 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 15 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 15 10* Modified November 1979 by C. Hornig for MCS tracing. 15 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 15 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 15 13* Modified March 1980 by Robert Coren to reorganize metering information 15 14* Modified December 1980 by Robert Coren to add FNP-specific events 15 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 15 16* Modified November 1984 by Robert Coren to add tty_area_lock 15 17**/ 15 18 15 19 dcl ttybp ptr, 15 20 tty_buf$ ext static, /* tty buffer segment */ 15 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 15 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 15 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 15 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 15 25 15 26 15 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 15 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 15 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 15 30 15 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 15 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 15 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 15 34 15 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 15 36 2 slock bit (36), /* per system lock */ 15 37 2 absorig fixed bin (24), /* abs address of this seg */ 15 38 2 borig bit (18), /* index of start of buffer area */ 15 39 2 bleft fixed bin (18), /* words left in pool */ 15 40 2 free bit (18), /* pointer to start of free pool */ 15 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 15 42 2 padb1 bit (28) unaligned, 15 43 2 lct_ptr ptr, /* pointer to logical channel table */ 15 44 15 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 15 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 15 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 15 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 15 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 15 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 15 51 2 minbuf fixed bin (18), /* min output buffer size */ 15 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 15 53 15 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 15 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 15 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 15 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 15 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 15 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 15 60 15 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 15 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 15 63 2 bfx fixed bin, /* used in calls to iobm */ 15 64 2 nquits fixed bin (35), /* number of quits */ 15 65 2 space_needed_data, 15 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 15 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 15 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 15 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 15 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 15 71 15 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 15 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 15 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 15 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 15 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 15 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 15 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 15 79 15 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 15 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 15 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 15 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 15 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 15 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 15 86 15 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 15 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 15 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 15 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 15 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 15 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 15 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 15 94 15 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 15 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 15 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 15 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 15 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 15 100 2 echo_neg_mux_nonecho fixed bin (35), 15 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 15 102 15 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 15 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 15 105 2 trace unaligned, /* tracing information */ 15 106 3 flags, 15 107 4 enable bit, /* global tracing control */ 15 108 4 default_mode bit, /* whether to trace channels by default */ 15 109 4 read bit, /* read */ 15 110 4 write bit, /* write */ 15 111 4 data bit, /* buffers on reads and writes */ 15 112 4 control bit, /* control, priv_control, and hpriv_control */ 15 113 4 modes bit, /* (get set check)_modes */ 15 114 4 interrupt bit, /* interrupt, interrupt_later */ 15 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 15 116 4 start bit, /* start, stop */ 15 117 4 shutdown bit, /* shutdown */ 15 118 4 space_man bit, /* tty_space_man$* */ 15 119 4 pad_flags bit (6), 15 120 3 data_offset bit (18), /* offset of tracing data */ 15 121 15 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 15 123 15 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 15 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 15 126 2 timer_count fixed bin, /* Number of timers outstanding */ 15 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 15 128 15 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 15 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 15 131 15 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 15 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 15 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 15 135 15 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 15 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 15 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 15 139 15 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 15 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 15 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 15 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 15 144 15 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 15 146 15 147 2 pad2 (13) fixed bin (35), 15 148 15 149 2 free_space fixed bin; /* start of free space region */ 15 150 15 151 16 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 16 2 16 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 16 4 16 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 16 6 16 7 /* format: style3 */ 16 8 16 9 declare lock_ptr pointer; 16 10 declare 1 hc_fast_lock aligned based (lock_ptr), 16 11 2 pid bit (36) aligned, /* holder of lock */ 16 12 2 event bit (36) aligned, /* event associated with lock */ 16 13 2 flags aligned, 16 14 3 notify_sw bit (1) unaligned, 16 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 16 16 16 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 15 152 15 153 15 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 1590 1591 17 1 /* BEGIN INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 17 2 17 3 17 4 17 5 /****^ HISTORY COMMENTS: 17 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 17 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 17 8* Add data needed for the uncp multiplexer (DSA gateway) interface 17 9* implementation. 17 10* END HISTORY COMMENTS */ 17 11 17 12 17 13 /* 17 14* Separated from tty_buf.incl.pl1 aug 78 by J. Nicholls 17 15* Modified May 1979 by Larry Johnson to add max_buffer_tally array and to use unsigned variables. 17 16* Reported in February 1982 the modifications to add the "turn" bit in flags. 17 17**/ 17 18 17 19 dcl blockp ptr; /* pointer which block entry is based on */ 17 20 dcl free_blockp ptr; /* pointer to head of free space chain */ 17 21 17 22 17 23 dcl 1 free_block aligned based (free_blockp), /* format of start of free block */ 17 24 2 next bit (18), /* foward pointer to next free block */ 17 25 2 size fixed bin; /* number of words in this block */ 17 26 17 27 17 28 dcl 1 buffer based (blockp) aligned, /* buffer definition */ 17 29 2 next fixed bin (18) unal uns, /* addr of next buffer */ 17 30 2 flags unaligned, 17 31 3 end_of_page bit (1) unaligned, /* buffer contains end of page */ 17 32 3 converted bit (1) unaligned, /* buffer contains converted input */ 17 33 3 break bit (1) unaligned, /* buffer contains break character */ 17 34 3 mark bit (1) unaligned, /* buffer contains first character after "mark" */ 17 35 3 turn bit (1) unaligned, /* ON if the turn must be sent */ 17 36 3 pad bit (1) unaligned, 17 37 2 size_code fixed bin (3) unal uns, /* (nwords/16) - 1 */ 17 38 2 tally fixed bin (9) unal uns, /* number of characters in buffer */ 17 39 2 chars (0:59) char (1) unaligned; /* room for 60 data characters */ 17 40 17 41 /* the following array, if indexed by buffer.size_code will give maximum number of characters permitted in that buffer */ 17 42 17 43 dcl max_buffer_tally (0:7) fixed bin int static options (constant) init (60, 124, 188, 252, 316, 380, 444, 508); 17 44 17 45 /* END INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 1592 1593 18 1 /* BEGIN INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 18 2 18 3 /* This include file declares all the entries in tty_space_man and defines the constants 18 4** to be used for the flags argument 18 5** Modified 08/21/78 by Robert Coren to eliminate "masked" flag 18 6** Modified March 1981 by Robert Coren to add get_perm_space entry 18 7** Modified April 1981 by Robert Coren to add switch_chain entry 18 8**/ 18 9 18 10 dcl tty_space_man$get_space entry (fixed bin, ptr); 18 11 dcl tty_space_man$get_perm_space entry (fixed bin, ptr); 18 12 dcl tty_space_man$free_space entry (fixed bin, ptr); 18 13 dcl tty_space_man$get_buffer entry (fixed bin, fixed bin, bit (1), ptr); 18 14 dcl tty_space_man$free_buffer entry (fixed bin, bit (1), ptr); 18 15 dcl tty_space_man$get_chain entry (fixed bin, fixed bin, fixed bin, bit (1), ptr); 18 16 dcl tty_space_man$free_chain entry (fixed bin, bit (1), ptr); 18 17 dcl tty_space_man$switch_chain entry (fixed bin, fixed bin, bit (1), bit (1), ptr); 18 18 dcl tty_space_man$needs_space entry (fixed bin); 18 19 18 20 dcl INPUT bit (1) int static options (constant) init ("0"b); 18 21 dcl OUTPUT bit (1) int static options (constant) init ("1"b); 18 22 18 23 /* END INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 1594 1595 1596 /* BEGIN MESSAGE DOCUMENTATION 1597* 1598* Message: 1599* dn355: FNP X invalid interrupt level N 1600* 1601* S: $beep 1602* 1603* T: $run 1604* 1605* M: An FNP interrupt has been received from frontend X with an invalid 1606* interrupt level of octal value N and will be ignored. If this message is 1607* displayed when a DN6670 is being powered up, this message can be ignored. 1608* If this message occurs under any other circumstances, there might be 1609* something wrong with the system's interface with the FNP and should be 1610* investigated by FE representatives. 1611* 1612* A: $inform 1613* 1614* 1615* Message: 1616* dn355: emergency interrupt from FNP X: FAULT 1617* .br 1618* FNP instruction counter = IC 1619* .br 1620* channel CHN, fault status = FS 1621* .br 1622* FNP_MODULE: REASON_FOR_CRASH 1623* 1624* S: $beep 1625* 1626* T: $run 1627* 1628* M: An emergency interrupt has been received from FNP X indicating 1629* it has crashed. All lines dialed to FNP X will be hung up. The 1630* crash was nominally caused by a fault of type FAULT. Lines 1631* following the first line of the message appear only in certain cases 1632* and provide additional information about the nature of the crash. 1633* 1634* A: The system will automatically attempt to reboot the crashed FNP. 1635* Subsequent messages will indicate the success or failure of this attempt. 1636* No action is required now, but action may be required if the 1637* automatic reboot fails. 1638* 1639* 1640* Message: 1641* dn355: no slot number match for sub mbx N, FNP X 1642* 1643* S: $beeper 1644* 1645* T: $run 1646* 1647* M: An error has occurred processing submailbox N for FNP X. 1648* The submailbox indicates a line number for which no match could 1649* be found. 1650* 1651* A: $inform 1652* 1653* 1654* Message: 1655* dn355: Message from FNP X: MESSAGE 1656* 1657* S: $info 1658* 1659* T: $run 1660* 1661* M: An error has been detected by FNP X as explained by MESSAGE. 1662* 1663* A: No action is required by the operator to deal with the error mentioned 1664* in the message. Action may be required by appropriate personnel to correct 1665* the problem that caused the error and undo what the FNP may have done to 1666* continue operation. This may require shutting down the FNP for repairs by 1667* Field Engineering and reboot of the FNP to restore full operation. 1668* 1669* 1670* Message: 1671* dn355: FNP masked channel NAME for excessive interrupts 1672* 1673* S: $info 1674* 1675* T: $run 1676* 1677* M: The FNP has masked the channel whose name is NAME because it was 1678* generating interrupts faster than they could be handled. 1679* 1680* A: The interruptions can be caused by any number of problems. This 1681* can be caused by the dataset leads changing too fast for the FNP 1682* software to handle properly; disconnecting or connecting FNP cables, 1683* powering off or on a hardwired terminal, a bad modem, etc. It is 1684* also possible that the FNP channel hardware is defective. Future 1685* attempts to use this channel may possibly crash the FNP. CS 1686* representatives may need to be called to investigate. An "attach" 1687* command will be necessary to put the channel back in service. 1688* 1689* 1690* Message: 1691* dn355: unrecognized op code OPCODE with rcd from FNP X for devx N 1692* 1693* S: $beeper 1694* 1695* T: $run 1696* 1697* M: An invalid op code, OPCODE, has been received from FNP X for device 1698* index N in a mailbox containing an rcd (read control data) command. 1699* 1700* A: $inform 1701* 1702* 1703* Message: 1704* dn355: unrecognized io command C from FNP X for line N 1705* 1706* S: $beeper 1707* 1708* T: $run 1709* 1710* M: An invalid io command was received from FNP X for line N. C is the 1711* octal representation of the command. 1712* 1713* A: $inform 1714* 1715* 1716* Message: 1717* dn355: output buffer at N has zero tally 1718* 1719* S: $crash 1720* 1721* T: $run 1722* 1723* M: An output buffer with a zero tally has been found at offset N 1724* in the segment tty_buf. 1725* 1726* A: $inform 1727* 1728* 1729* Message: 1730* dn355: unable to allocate block for delay queue 1731* 1732* S: $crash 1733* 1734* T: $run 1735* 1736* M: There was insufficient space left in tty_buf to allocate a block 1737* in which to build a delay queue. 1738* 1739* A: $inform 1740* 1741* 1742* Message: 1743* dn355: FNP X did not respond to mailbox interrupt 1744* 1745* S: $beep 1746* 1747* T: $run 1748* 1749* M: An attempt to interrupt FNP X was unsuccessful. The FNP is assumed 1750* to be down. 1751* 1752* A: The system will automatically attempt to reboot the crashed FNP. 1753* Subsequent messages will indicate the success or failure of this attempt. 1754* No action is required now, but action may be required if the 1755* automatic reboot fails. 1756* 1757* 1758* Message: 1759* dn355: inconsistent queue lock 1760* 1761* S: $crash 1762* 1763* T: $run 1764* 1765* M: A process attempted to unlock the interrupt queue lock without having it 1766* locked. 1767* 1768* A: $inform 1769* 1770* 1771* Message: 1772* dn355: LCTE lock ^= processid 1773* 1774* S: $crash 1775* 1776* T: $run 1777* 1778* M: The FNP channel lock did not contain the processid of the process 1779* attempting to unlock it. 1780* 1781* 1782* Message: 1783* dn355: attempted crawlout with FNP queue locked 1784* 1785* S: $crash 1786* 1787* T: $run 1788* 1789* M: An attempt was made to crawl out while an FNP queue lock (a processor 1790* lock) was locked. 1791* 1792* A: $inform 1793* 1794* 1795* Message: 1796* dn355: line number of 0 with non-global opcode in submbx N, FNP X 1797* 1798* S: $beeper 1799* 1800* T: $run 1801* 1802* M: Mailbox N from FNP X contained a non-global opcode which requires a 1803* non-zero line number. 1804* 1805* 1806* Message: 1807* dn355: FNP X level L status S STATE 1808* 1809* S: $info 1810* 1811* T: $run 1812* 1813* M: An interrupt at a level other than 3 (or possibly at level 3 if the 1814* FNP is not running) was received from FNP X. S is an octal representation 1815* of the status accompanying the interrupt. STATE indicates the current state 1816* of the FNP: running, bootloading, or in T&D. This message only appears if 1817* tracing is enabled for the specified FNP. 1818* 1819* A: None required. 1820* 1821* 1822* Message: 1823* dn355: Error sending mailbox interrupt to FNP X, will retry. 1824* 1825* S: $info 1826* 1827* T: $run 1828* 1829* M: An error has been detected in the transmission of a mailbox interrupt 1830* to the FNP. The transmission will be retried once. 1831* 1832* A: None required. 1833* 1834* 1835* Message: 1836* dn355: Timeout sending mailbox interrupt to FNP X, will retry. 1837* 1838* S: $info 1839* 1840* T: $run 1841* 1842* M: The FNP did not respond within 2 seconds to the previously 1843* sent mailbox interrupt. The transmission will be retried once. 1844* 1845* A: None required. 1846* 1847* 1848* END MESSAGE DOCUMENTATION */ 1849 1850 1851 end dn355; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0824.9 dn355.pl1 >special_ldd>install>MR12.3-1114>dn355.pl1 1562 1 05/28/82 1334.9 baud_rates.incl.pl1 >ldd>include>baud_rates.incl.pl1 1564 2 05/06/80 0958.2 channel_manager_dcls.incl.pl1 >ldd>include>channel_manager_dcls.incl.pl1 1566 3 10/26/89 2011.9 dn355_data.incl.pl1 >ldd>include>dn355_data.incl.pl1 1568 4 10/20/82 0938.5 dn355_mailbox.incl.pl1 >ldd>include>dn355_mailbox.incl.pl1 1570 5 09/12/79 1808.7 dn355_messages.incl.pl1 >ldd>include>dn355_messages.incl.pl1 1572 6 07/11/84 0937.3 fnp_mpx_msg_.incl.pl1 >ldd>include>fnp_mpx_msg_.incl.pl1 1574 7 07/10/86 2015.0 fnp_queue_entry.incl.pl1 >ldd>include>fnp_queue_entry.incl.pl1 1576 8 07/11/84 0937.3 io_manager_dcls.incl.pl1 >ldd>include>io_manager_dcls.incl.pl1 1578 9 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 1580 10 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 1582 11 10/20/82 0938.6 mailbox_ops.incl.pl1 >ldd>include>mailbox_ops.incl.pl1 1584 12 10/20/82 0938.6 mcs_interrupt_info.incl.pl1 >ldd>include>mcs_interrupt_info.incl.pl1 1586 13 08/06/87 0913.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 1588 14 07/21/88 2036.0 pcb.incl.pl1 >ldd>include>pcb.incl.pl1 1590 15 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 15-152 16 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 1592 17 07/21/88 2036.0 tty_buffer_block.incl.pl1 >ldd>include>tty_buffer_block.incl.pl1 1594 18 06/18/81 0900.8 tty_space_man_dcls.incl.pl1 >ldd>include>tty_space_man_dcls.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. ACCEPT_INPUT 000102 constant fixed bin(17,0) initial dcl 12-15 set ref 1028* 1069* ACKNOWLEDGE_ECHNEGO_INIT 000001 constant fixed bin(17,0) initial dcl 12-22 set ref 693* ACKNOWLEDGE_ECHNEGO_STOP 000013 constant fixed bin(17,0) initial dcl 12-23 set ref 699* CRASH 000126 constant fixed bin(17,0) initial dcl 12-12 set ref 1342* DIALUP 000131 constant fixed bin(17,0) initial dcl 12-10 set ref 583* DIAL_STATUS 000101 constant fixed bin(17,0) initial dcl 12-19 set ref 679* FNP_DOWN constant fixed bin(17,0) initial dcl 1476 ref 1406 FNP_DUMP_PATCH_EVENT 000115 constant fixed bin(17,0) initial dcl 15-31 set ref 452* 1398* FNP_METER_EVENT 000000 constant fixed bin(17,0) initial dcl 15-32 set ref 463* 470* HANGUP 000002 constant fixed bin(17,0) initial dcl 12-11 set ref 592* INPUT 000046 constant bit(1) initial packed unaligned dcl 18-20 set ref 965* 968* 1031* 1054* INPUT_REJECTED 000106 constant fixed bin(17,0) initial dcl 12-16 set ref 999* 1078* LINE_COLTS constant fixed bin(17,0) initial dcl 10-22 ref 562 LINE_ETX constant fixed bin(17,0) initial dcl 10-22 ref 568 LINE_STATUS 000120 constant fixed bin(17,0) initial dcl 12-18 set ref 686* MASKED 000103 constant fixed bin(17,0) initial dcl 12-26 set ref 710* MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 13-34 ref 362 NET_EVENT_MESSAGE_VERSION_1 constant bit(2) initial packed unaligned dcl 13-20 ref 361 OUTPUT 000111 constant bit(1) initial packed unaligned dcl 18-21 set ref 486* 1370* QUIT 000114 constant fixed bin(17,0) initial dcl 12-17 set ref 611* SEND_OUTPUT 000113 constant fixed bin(17,0) initial dcl 12-13 set ref 834* 905* 1123* TANDD_LINE_NUMBER constant bit(10) initial packed unaligned dcl 1480 ref 1206 TWO_SECONDS 000046 constant fixed bin(71,0) initial dcl 1482 ref 1264 WRU_TIMEOUT 000065 constant fixed bin(17,0) initial dcl 12-20 set ref 599* a_fnp_no parameter fixed bin(17,0) dcl 1322 set ref 1319 1326* a_fnpp parameter pointer dcl 142 ref 139 154 161 a_level parameter fixed bin(17,0) dcl 341 in procedure "process_int" ref 336 343 a_level parameter fixed bin(17,0) dcl 315 in procedure "dequeue" set ref 312 320* 327* a_mbx_no parameter fixed bin(17,0) dcl 1240 ref 1236 1236 1246 1249 1252 a_mbx_num parameter fixed bin(17,0) dcl 820 ref 817 824 a_pcbp parameter pointer dcl 142 ref 139 151 abs_addr 3 based bit(24) array level 3 packed packed unaligned dcl 4-84 set ref 979* absorig 1 based fixed bin(24,0) level 2 dcl 15-35 ref 485 858 868 939 979 accept_direct_input constant fixed bin(8,0) initial dcl 11-65 ref 517 538 627 accept_direct_output constant fixed bin(8,0) initial dcl 11-24 set ref 200 776 844* 892 1119* accept_new_terminal constant fixed bin(8,0) initial dcl 11-65 ref 542 ack_echnego_init constant fixed bin(8,0) initial dcl 11-65 ref 690 ack_echnego_stop constant fixed bin(8,0) initial dcl 11-65 ref 696 addr builtin function dcl 1489 ref 95 98 105 115 162 163 177 186 216 239 249 251 253 287 387 390 391 392 392 396 432 432 436 439 484 509 511 575 578 642 648 658 763 766 790 840 849 856 935 979 1058 1059 1096 1103 1138 1206 1216 1324 1325 1335 1338 address 5 based structure level 2 packed packed unaligned dcl 4-36 auto_fnp_msg 000170 automatic structure level 1 dcl 1522 set ref 1409 auto_net_event_message 000166 automatic structure level 1 dcl 1521 set ref 360* 365 baud_rate 0(18) 000260 automatic fixed bin(18,0) level 2 in structure "dialup_info" packed packed unsigned unaligned dcl 12-30 in procedure "dn355" set ref 565* baud_rate 2 based fixed bin(17,0) level 2 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" set ref 547* 558 565 baud_table 000026 constant fixed bin(17,0) initial array dcl 1-8 ref 547 beeper 000126 constant fixed bin(17,0) initial dcl 1467 set ref 85* 378* 498* 716* 730* 1194* 1220* 1385* bin builtin function dcl 1489 ref 485 498 498 546 547 642 658 678 730 730 858 858 868 939 939 974 976 979 979 985 1158 binary builtin function dcl 1489 ref 706 706 706 706 706 bit builtin function dcl 1489 ref 678 858 868 874 939 979 1025 1026 1303 bits_per_char 000152 automatic fixed bin(17,0) dcl 1451 set ref 554* 556* 558 bits_to_send based bit(288) packed unaligned dcl 931 set ref 936* bleft 3 based fixed bin(18,0) level 2 dcl 15-35 ref 1139 bleft_355 27 based fixed bin(17,0) level 2 dcl 3-67 set ref 520* 523 523* 534 859 blockp 000274 automatic pointer dcl 17-19 set ref 870* 871 874 877 878 880 882 896 965* 966 974 976 978 979 982 985 1054* 1055 1059 1061 1065 1101* 1102 1103 boot_ev_chan 36 based fixed bin(71,0) level 2 dcl 3-67 set ref 366* 1410* boot_process_id 40 based bit(36) level 2 dcl 3-67 set ref 366* 1410* bootloading 30(01) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 79* 86 92 408 1401 1404* break_char 1(18) 000262 automatic bit(1) level 3 packed packed unaligned dcl 12-38 set ref 1017* 1045* 1109 break_condition constant fixed bin(8,0) initial dcl 11-65 ref 604 buf_per_second constant fixed bin(17,0) initial dcl 15-29 ref 558 buf_size 000412 automatic fixed bin(17,0) dcl 1010 in procedure "process_rtx" set ref 1052* 1054* buf_size 000375 automatic fixed bin(17,0) dcl 953 in procedure "process_accept_input" set ref 963* 965* buffer based structure level 1 dcl 17-28 buffer_pad 0(09) 000260 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 12-30 set ref 567* bufp 000114 automatic pointer dcl 1431 set ref 1096* 1103* 1106 1111 caller_masked parameter bit(1) packed unaligned dcl 266 ref 261 275 281 300 chain_head 000262 automatic bit(18) level 3 packed packed unaligned dcl 12-38 set ref 1025* 1065* chain_head_ptr 000146 automatic pointer dcl 1447 set ref 485* 486* chain_len 000133 automatic fixed bin(17,0) dcl 1431 set ref 889* 891 909 chain_tail 0(18) 000262 automatic bit(18) level 3 packed packed unaligned dcl 12-38 set ref 1026* 1065* chan_lctep 000144 automatic pointer dcl 1446 set ref 1138* 1139 channel_desc based structure level 2 packed packed unaligned dcl 14-27 channel_manager$interrupt 000042 constant entry external dcl 2-25 ref 583 592 599 611 679 686 693 699 710 834 905 999 1028 1069 1078 1123 1342 chars 1 based char(1) array level 2 in structure "buffer" packed packed unaligned dcl 17-28 in procedure "dn355" set ref 979 1059 1103 chars based char packed unaligned dcl 1492 in procedure "dn355" set ref 1060* 1060 chars_left 000127 automatic fixed bin(17,0) dcl 1431 set ref 1097* 1102* 1106 1106 1111 1111 1111 chrsa parameter fixed bin(8,0) dcl 142 ref 139 154 172 chx 000464 automatic fixed bin(35,0) level 2 dcl 1244 set ref 1278* 1309* cleanup 000230 stack reference condition dcl 1560 ref 235 clock builtin function dcl 1489 ref 1264 1266 cmd_count 0(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 1533 set ref 789 790 1172* cmd_data 1 based bit(288) level 2 packed packed unaligned dcl 1533 set ref 781* 790 1177* cmd_data_len 1(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 4-36 set ref 198* 574* 789* cnt parameter fixed bin(8,0) dcl 1148 ref 1145 1172 command 0(30) based bit(6) level 3 packed packed unaligned dcl 4-12 set ref 1262 1266 1269 command_data 33 based bit(36) level 2 in structure "input_sub_mbx" packed packed unaligned dcl 4-84 in procedure "dn355" ref 1017 1022 command_data 33 based bit(36) level 2 in structure "fnp_sub_mbx" packed packed unaligned dcl 4-63 in procedure "dn355" ref 1045 1062 command_data 2 based bit(36) array level 2 in structure "sub_mbx" packed packed unaligned dcl 4-36 in procedure "dn355" set ref 216 489 546 547 547 575 578 642 658 685 790 893* config_flags 66 based structure level 2 dcl 3-67 continue 000162 automatic bit(1) packed unaligned dcl 1458 set ref 865* 866 885* copied_meters_ready 4(09) based bit(1) level 3 packed packed unaligned dcl 14-27 set ref 473* count parameter fixed bin(17,0) dcl 1135 in procedure "enough_input_space" ref 1132 1139 count 24 based fixed bin(17,0) level 2 in structure "fnp_info" dcl 3-67 in procedure "dn355" set ref 427 740 759 808* 1168* 1168 1346 1348 1356* crash_code 0(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 1538 ref 392 392 396 crash_data 6 based structure level 2 dcl 4-12 crash_system 000131 constant fixed bin(17,0) initial dcl 1467 set ref 108* 271* 293* 296* 871* 1154* 1420* cumulative_mbx_in_use 55 based fixed bin(35,0) level 2 dcl 3-67 set ref 444* 444 1299* 1299 cur_ptr 25 based fixed bin(17,0) level 2 dcl 3-67 set ref 758 806* 1159 1159* 1349 1356* data parameter bit packed unaligned dcl 142 in procedure "dn355" ref 139 154 173 data based bit(18) array level 2 in structure "error_msg" packed packed unaligned dcl 1552 in procedure "dn355" ref 642 658 data_addr 5 based bit(18) level 3 packed packed unaligned dcl 4-36 set ref 858* 939* data_len 000110 automatic fixed bin(8,0) dcl 149 set ref 172* 173 173 180* 198 216 databits parameter bit(288) packed unaligned dcl 1148 ref 1145 1177 datanet_info based structure level 1 dcl 3-52 datanet_mbx based structure level 1 dcl 4-12 dataoff constant fixed bin(17,0) initial dcl 1467 ref 485 868 dcw 3 based structure array level 2 dcl 4-84 dcw_list based structure array level 1 dcl 1525 dcw_list_array based structure array level 1 dcl 1530 set ref 484 856 935 dcw_list_array_ptr 4 based pointer level 2 dcl 3-67 ref 484 856 935 dcw_ptr based bit(18) array level 2 packed packed unaligned dcl 1525 set ref 485 868* dcw_tally 0(27) based bit(9) array level 2 packed packed unaligned dcl 1525 set ref 874* dcwlptr 000112 automatic pointer dcl 1431 set ref 484* 485 856* 858 868 874 876 devx 000134 automatic fixed bin(17,0) dcl 1431 in procedure "dn355" set ref 192* 458 583* 592* 599* 611* 679* 686* 693* 699* 710* 716* 772* 834* 905* 965* 968* 999* 1028* 1031* 1054* 1069* 1078* 1123* 1138 1201* 1226* devx based fixed bin(17,0) level 3 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" ref 192 486 772 1226 1342 1370 dia_pcw based structure level 2 dcl 4-12 set ref 1276* 1276 1276 1302* 1306* 1306 1306 dialed 4(01) based bit(1) level 3 packed packed unaligned dcl 14-27 set ref 202 210 570* 590* 599 607 621 630 667 704* 776 781 933 1339 dialup_info 000260 automatic structure level 1 dcl 12-30 set ref 582 die_code constant fixed bin(17,0) initial dcl 1550 ref 387 disconnect_this_line constant fixed bin(8,0) initial dcl 11-24 ref 635 671 disconnected_line constant fixed bin(8,0) initial dcl 11-65 ref 588 divide builtin function dcl 1489 ref 198 558 558 560 789 859 957 963 1049 1052 1139 dn355_boot_interrupt 000024 constant entry external dcl 1508 ref 410 dn355_boot_interrupt$system_fault 000026 constant entry external dcl 1508 ref 86 dn355_data$ 000044 external static fixed bin(17,0) dcl 3-47 set ref 163 251 1325 dn355_messages$error_messages 000052 external static fixed bin(17,0) array dcl 5-17 set ref 644 646 648 dn355_messages$fault_names 000046 external static char(16) array dcl 5-13 ref 374 376 dn355_messages$per_module 000050 external static fixed bin(17,0) dcl 5-15 set ref 390 dn355_modules based structure array level 1 dcl 5-29 dn355_reason based structure level 1 dcl 5-40 dn355_sub_mbxes 10 based structure array level 2 dcl 4-12 set ref 186 439 766 849 dn355_util$compute_parity 000022 constant entry external dcl 1508 ref 1276 1306 dn355_word based structure level 1 packed packed unaligned dcl 1538 dno 000122 automatic fixed bin(17,0) dcl 1431 set ref 86* 170* 250* 253 363 410* 1401* 1407 dump_mem constant fixed bin(8,0) initial dcl 11-24 ref 449 dump_patch_in_progress 30(04) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 451* 1398 end_frame 4(05) based bit(1) level 3 packed packed unaligned dcl 14-27 set ref 825 884* 909 1109 1118* 1375* end_of_page 0(18) based bit(1) level 3 packed packed unaligned dcl 17-28 ref 882 error 0(18) based bit(1) level 3 packed packed unaligned dcl 4-12 set ref 1269 1273 1275* error_message constant fixed bin(8,0) initial dcl 11-65 ref 640 error_msg based structure level 1 dcl 1552 fault_code 6 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 4-12 ref 373 fault_name 000200 automatic char(16) packed unaligned dcl 1545 set ref 374* 376* 378* fault_type 000177 automatic fixed bin(17,0) dcl 1544 set ref 373* 374 374 376 383 387 fault_word 7(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 4-12 set ref 383* 387 391 392 392 396 ff_cr_lf 000045 constant char(3) initial packed unaligned dcl 1503 ref 1111 first_acu_op_code constant fixed bin(8,0) initial dcl 11-65 ref 676 fixed builtin function dcl 1489 ref 391 1211 1213 1303 flags 1(18) 000262 automatic structure level 2 in structure "rtx_info" packed packed unaligned dcl 12-38 in procedure "dn355" flags 1 000170 automatic structure level 2 in structure "auto_fnp_msg" packed packed unaligned dcl 1522 in procedure "dn355" set ref 1408* flags 0(18) based structure level 2 in structure "buffer" packed packed unaligned dcl 17-28 in procedure "dn355" flags 30 based structure level 2 in structure "fnp_info" dcl 3-67 in procedure "dn355" flags 2(09) based structure level 2 in structure "lcte" packed packed unaligned dcl 9-20 in procedure "dn355" flags 4 based structure level 2 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" fnp_event_message 000172 automatic fixed bin(71,0) dcl 1523 set ref 1409* 1410* fnp_id 7 based structure level 2 dcl 3-67 fnp_info based structure level 1 dcl 3-67 fnp_msg based structure level 1 dcl 6-6 fnp_name 000137 automatic char(1) dcl 1438 set ref 79* 85* 254* fnp_no 000170 automatic fixed bin(17,0) level 2 in structure "auto_fnp_msg" packed packed unaligned dcl 1522 in procedure "dn355" set ref 1407* fnp_no parameter fixed bin(17,0) dcl 1333 in procedure "hangup_fnp" ref 1330 1335 fnp_number 7(09) based fixed bin(9,0) level 3 packed packed unsigned unaligned dcl 3-67 ref 170 fnp_queue_entry based structure level 1 dcl 7-19 fnp_space_restricted_output 63 based fixed bin(35,0) level 2 dcl 3-67 set ref 909* 909 fnp_sub_mbx based structure level 1 dcl 4-63 fnp_sub_mbxes 110 based structure array level 2 dcl 4-12 set ref 511 fnp_tag 7 based char(1) level 3 packed packed unaligned dcl 3-67 set ref 254 378* 498* 660* 706* 716* 730* 1194* 1220* 1282* 1385* fnpp 000240 automatic pointer dcl 3-50 set ref 76 79 79 79 86 92 92 92 98 101 103 108 115 161* 164 166 170 171 181 181 219 219 239 253* 254 255 256 269 269 271 287 296 317 319 324 326 349 351 353 354 358 366 366 378 408 414 416 418 422 427 444 444 445 445 451 458 462 484 498 520 523 523 528 530 531 534 534 534 535 535 538 538 540 540 660 706 716 730 740 758 759 792 792 803 803 806 808 809 845 845 856 859 898 898 909 909 935 943 943 998 998 1014 1014 1159 1159 1162 1166 1168 1168 1169 1169 1194 1205 1206 1206 1211 1213 1216 1220 1254 1278 1279 1282 1298 1298 1299 1299 1300 1300 1309 1310 1335* 1336 1338 1346 1348 1349 1356 1356 1356 1385 1397 1398 1401 1404 1410 1410 form_feed 007452 constant char(1) initial packed unaligned dcl 1506 ref 1106 formfeed_present 1(21) 000262 automatic bit(1) level 3 packed packed unaligned dcl 12-38 set ref 1090* 1106* free_count 62 based fixed bin(17,0) level 2 dcl 3-67 set ref 531* 535* 535 free_size 61 based fixed bin(35,0) level 2 dcl 3-67 set ref 528 530* 534* 534 full_words 000205 automatic fixed bin(17,0) array dcl 1556 set ref 658* 660* get_meters_waiting 4(10) based bit(1) level 3 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" set ref 467 469* get_meters_waiting 30(13) based bit(1) level 3 in structure "fnp_info" packed packed unaligned dcl 3-67 in procedure "dn355" set ref 458 462* global_opcodes 000002 constant fixed bin(8,0) initial array dcl 11-126 ref 1190 1190 1192 handle 1 000166 automatic fixed bin(35,0) level 2 dcl 1521 set ref 363* hbound builtin function dcl 1489 ref 374 392 392 644 1190 1192 hc_fast_lock based structure level 1 dcl 16-10 high_speed 4(03) based bit(1) level 3 packed packed unaligned dcl 14-27 ref 575 hndlquit 4(06) based bit(1) level 3 packed packed unaligned dcl 14-27 ref 609 hsla_idx 21 based fixed bin(17,0) array level 2 dcl 3-67 ref 1211 i 000123 automatic fixed bin(17,0) dcl 1431 set ref 177* 178 186 205 210 218 434* 436 439 441 484 489* 508* 509 511 581* 593* 601* 613* 620* 636* 662* 672* 680* 687* 692* 698* 711* 760* 762 763* 764 766 776 781 791 989* 997* 1035* 1070* 1077* 1082* 1194* 1220* ic 6(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 4-12 set ref 380 380* illegal_opcode constant fixed bin(17,0) initial dcl 1549 ref 387 ima 000464 automatic structure level 1 dcl 1244 set ref 1280* 1311* in 2 based structure level 2 in structure "saved_meters" dcl 9-68 in procedure "dn355" in 30 based structure array level 4 in structure "lct" dcl 9-11 in procedure "dn355" in 10 based structure level 3 in structure "lcte" dcl 9-20 in procedure "dn355" in_bytes 6 based fixed bin(35,0) level 3 dcl 9-20 set ref 1016* 1016 1067* 1067 in_mbx parameter bit(1) packed unaligned dcl 1088 ref 1085 1094 1114 index builtin function dcl 1489 ref 177 763 840 infop 000236 automatic pointer dcl 3-49 set ref 74 163* 251* 253 1325* 1335 initial_pcw 000050 constant bit(36) initial packed unaligned dcl 1478 ref 1302 input_accepted constant fixed bin(8,0) initial dcl 11-24 ref 987 input_bpart constant fixed bin(18,0) initial dcl 15-19 ref 1139 input_chain 000262 automatic structure level 2 packed packed unaligned dcl 12-38 input_chars based char packed unaligned dcl 1495 ref 1106 1111 input_control_transactions 53 based fixed bin(35,0) level 2 dcl 3-67 set ref 540* 540 input_count 1 000262 automatic fixed bin(18,0) level 2 in structure "rtx_info" packed packed unsigned unaligned dcl 12-38 in procedure "dn355" set ref 1024* 1064* input_count 000142 automatic fixed bin(17,0) dcl 1444 in procedure "dn355" set ref 956* 957 1019* 1020 1024 input_data 2 based char(100) level 2 packed packed unaligned dcl 4-63 set ref 1058 1096 input_data_transactions 51 based fixed bin(35,0) level 2 dcl 3-67 set ref 538* 538 1014* 1014 input_in_mailbox constant fixed bin(8,0) initial dcl 11-65 ref 517 538 665 input_reject_count 46 based fixed bin(17,0) level 2 dcl 3-67 set ref 998* 998 input_sub_mbx based structure level 1 dcl 4-84 input_words 5 based fixed bin(17,0) level 3 packed packed unaligned dcl 9-20 ref 1139 interrupt_entry parameter bit(1) dcl 822 in procedure "process_send_output" ref 817 905 interrupt_entry 000141 automatic bit(1) packed unaligned dcl 1442 in procedure "dn355" set ref 70* 123 159* 233* interrupt_info 000256 automatic bit(72) dcl 12-28 set ref 582* 583* 678* 679* 685* 686* 1027* 1028* 1068* 1069* io_cmd 1(27) based fixed bin(8,0) level 2 packed packed unaligned dcl 4-36 set ref 215* 447 480 498* 514 580* 634* 670* 726 730* 787* 894* 938* 988* 993* 1074* io_manager$connect_direct 000054 constant entry external dcl 8-32 ref 1280 1311 io_manager_arg based structure level 1 dcl 8-50 io_manager_assigned 66(01) based bit(1) level 3 packed packed unaligned dcl 3-67 ref 1254 io_manager_chx 12 based fixed bin(35,0) level 2 dcl 3-67 ref 1278 1309 iom_channel_fault constant fixed bin(17,0) initial dcl 1548 ref 383 iom_fault_status 7 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 4-12 set ref 383* is_hsla 0(08) based bit(1) level 3 packed packed unaligned dcl 4-36 set ref 1211 ix 000124 automatic fixed bin(17,0) dcl 1431 set ref 657* 658 658* j 000132 automatic fixed bin(17,0) dcl 1431 set ref 550* 550* 552 866* 868 874 876* 889 957* 959* 1211* 1213* 1215* 1215* 1216* 1337* 1338* just_tell 000112 constant fixed bin(17,0) initial dcl 1467 set ref 76 380* 383* 398* 660* 706* 1282* k 000131 automatic fixed bin(17,0) dcl 1431 set ref 961* 962 979* la_no 0(09) based bit(3) level 3 packed packed unaligned dcl 4-36 set ref 706 706 1210 lano 000136 automatic bit(3) packed unaligned dcl 1431 set ref 1210* 1211 1213 last_acu_op_code constant fixed bin(8,0) initial dcl 11-65 ref 676 last_ptr 26 based fixed bin(17,0) level 2 dcl 3-67 set ref 809* 1162 1166* 1356* lct based structure level 1 dcl 9-11 lct_ptr 6 based pointer level 2 dcl 15-35 ref 1137 lcte based structure level 1 dcl 9-20 lcte_array 20 based structure array level 2 dcl 9-11 set ref 1138 lcte_ptr 32 based pointer level 2 dcl 3-67 ref 164 256 lctep 000254 automatic pointer dcl 9-8 set ref 95 105 126 126 129 133 164* 256* 292 293 304 306 345 899 899 1016 1016 1067 1067 lctp 000252 automatic pointer dcl 9-7 set ref 1137* 1138 ldac 000020 constant entry external dcl 1508 ref 432 length based fixed bin(8,0) level 2 in structure "dn355_reason" packed packed unaligned dcl 5-40 in procedure "dn355" ref 398 398 652 length builtin function dcl 1489 in procedure "dn355" ref 172 level 000121 automatic fixed bin(17,0) dcl 1431 set ref 73* 76 79* 83 83 85* 86 101 113* 268* 279* 343* 346 364 level_3_pending 30(05) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 103* 317 319* level_7_pending 30(06) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 101* 324 326* line_masked constant fixed bin(8,0) initial dcl 11-65 ref 702 line_number 0(08) based structure level 2 in structure "sub_mbx" packed packed unaligned dcl 4-36 in procedure "dn355" set ref 190* 195* 498 498 730 730 771* 774* 850* 1188 1206 1217 line_number 0(26) based structure level 3 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" ref 190 771 850 1217 line_status constant fixed bin(8,0) initial dcl 11-65 ref 683 line_type 000260 automatic fixed bin(9,0) level 2 in structure "dialup_info" packed packed unsigned unaligned dcl 12-30 in procedure "dn355" set ref 546* 568 line_type 2(18) based fixed bin(17,0) level 2 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" set ref 546* 550 562 list_offset 3 based fixed bin(17,0) array level 2 dcl 5-29 ref 392 395 listen 4 based bit(1) level 3 packed packed unaligned dcl 14-27 set ref 704* lock based bit(36) level 2 dcl 9-20 set ref 95 105 126 293 locked_for_interrupt 2(12) based bit(1) level 3 packed packed unaligned dcl 9-20 set ref 133* 292* 345* log constant fixed bin(17,0) initial dcl 1467 ref 78 lsla_idx 13 based fixed bin(17,0) array level 2 dcl 3-67 ref 1213 masked 000160 automatic bit(1) packed unaligned dcl 1456 set ref 236* 277* 283* 302* 1423 max builtin function dcl 1489 ref 859 889 1298 max_buf_chars 000153 automatic fixed bin(17,0) dcl 1452 set ref 558* 560 max_buf_size 3 based fixed bin(17,0) level 2 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" set ref 560* 562* 566 859 max_buf_size 1 000260 automatic fixed bin(9,0) level 2 in structure "dialup_info" packed packed unsigned unaligned dcl 12-30 in procedure "dn355" set ref 566* max_chain_len constant fixed bin(17,0) initial dcl 1467 ref 859 866 909 1525 1530 max_mbx_in_use 56 based fixed bin(17,0) level 2 dcl 3-67 set ref 1298* 1298 max_no_355s internal static fixed bin(17,0) initial dcl 3-45 ref 3-52 mbx_in_use_updated 57 based fixed bin(35,0) level 2 dcl 3-67 set ref 445* 445 1300* 1300 mbx_no 000460 automatic fixed bin(17,0) dcl 1241 in procedure "return_mbx" set ref 1246* 1252* 1294 1296 1303 mbx_no 0(24) based bit(6) level 3 in structure "datanet_mbx" packed packed unaligned dcl 4-12 in procedure "dn355" set ref 1303* mbx_num 000354 automatic fixed bin(17,0) dcl 821 in procedure "process_send_output" set ref 824* 838 840* 842 849 856 897* mbx_num parameter fixed bin(17,0) dcl 927 in procedure "send_echo_table" set ref 924 935 942* mbx_pt based pointer level 2 dcl 3-67 ref 171 255 mbx_unavailable 60 based fixed bin(35,0) level 2 dcl 3-67 set ref 181* 181 803* 803 845* 845 mbx_used_flags 5 based structure level 2 dcl 4-12 mbxp 000244 automatic pointer dcl 4-100 set ref 171* 177 186 255* 373 380 380 383 383 387 391 392 392 396 432 432 439 441 443 443 444 511 763 766 840 849 1262 1266 1269 1269 1273 1275 1276 1276 1276 1296 1297 1297 1298 1299 1302 1303 1306 1306 1306 message_offset based fixed bin(17,0) array dcl 5-35 ref 392 396 meters 6 based structure level 2 in structure "lcte" dcl 9-20 in procedure "dn355" meters 26 based structure array level 3 in structure "lct" dcl 9-11 in procedure "dn355" min builtin function dcl 1489 ref 172 560 859 modnum based bit(4) level 2 packed packed unaligned dcl 1538 ref 391 module_num 000204 automatic fixed bin(17,0) dcl 1546 set ref 391* 392 392 395 398 modulep 000246 automatic pointer dcl 5-23 set ref 390* 392 392 395 395 398 msg 0(09) based char level 2 packed packed unaligned dcl 5-40 set ref 398* 652 n_buffers 2 based fixed bin(17,0) level 2 dcl 4-84 ref 961 n_chars 1(09) based fixed bin(9,0) level 2 in structure "fnp_sub_mbx" packed packed unsigned unaligned dcl 4-63 in procedure "dn355" ref 1044 n_chars 1 based fixed bin(17,0) level 2 in structure "input_sub_mbx" packed packed unaligned dcl 4-84 in procedure "dn355" ref 956 1015 n_free_buffers 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-63 ref 520 n_pcbs 000266 automatic fixed bin(17,0) dcl 14-22 set ref 1205* 1215 1336* 1337 n_sync_line_types constant fixed bin(17,0) initial dcl 10-50 ref 550 552 n_words 000411 automatic fixed bin(17,0) dcl 1009 set ref 1049* 1050* 1052 name based char(12) array level 2 dcl 5-29 set ref 398* net_event_message based structure level 1 dcl 13-22 net_event_message_arg 000264 automatic fixed bin(71,0) dcl 13-19 set ref 365* 366* network_type 0(24) 000166 automatic fixed bin(4,0) level 2 packed packed unsigned unaligned dcl 1521 set ref 362* new_qp 000174 automatic pointer dcl 1535 set ref 1151* 1152 1158 1167 new_qrel 000176 automatic fixed bin(17,0) dcl 1536 set ref 1158* 1159 1163 1166 next 11 based fixed bin(17,0) level 2 in structure "q_entry" dcl 1533 in procedure "dn355" set ref 798 1163* 1176* 1352 next based fixed bin(18,0) level 2 in structure "buffer" packed packed unsigned unaligned dcl 17-28 in procedure "dn355" set ref 877 896* 976* no_of_channels 6 based fixed bin(17,0) level 2 dcl 3-67 ref 1205 1336 no_response 000140 automatic bit(1) dcl 1440 set ref 169* 223 425* 436 509 740 745 795 1257* 1261* 1271 1274* 1291* notify_reqd 2(11) based bit(1) level 3 packed packed unaligned dcl 9-20 set ref 126 129* 304 306* null builtin function dcl 1489 ref 157 188 966 1055 1152 1173 1200 num_in_use 4 based fixed bin(17,0) level 2 dcl 4-12 set ref 443* 443 444 1297* 1297 1298 1299 numchars 000130 automatic fixed bin(17,0) dcl 1431 set ref 1044* 1047 1049 1060 1060 1061 1064 1067 1097 1114* offset 000163 automatic fixed bin(17,0) dcl 1460 set ref 642* 644 644 646* 646 650 op_code 1(18) based fixed bin(8,0) level 2 packed packed unaligned dcl 4-36 set ref 197* 449 449 455 517 517 517 538 538 542 572* 588 597 604 617 627 635* 640 665 671* 676 676 678 683 690 696 702 716* 788* 892* 937* 987* 995* 1076* 1190 opa parameter fixed bin(8,0) dcl 142 ref 139 154 165 opc parameter fixed bin(8,0) dcl 1148 ref 1145 1171 opcode based fixed bin(8,0) level 2 in structure "q_entry" packed packed unaligned dcl 1533 in procedure "dn355" set ref 776 781 788 1171* opcode 0(04) based fixed bin(4,0) level 2 in structure "dn355_word" packed packed unaligned dcl 1538 in procedure "dn355" ref 387 operation 000135 automatic fixed bin(8,0) dcl 1431 set ref 165* 180* 197 200 208 out_bytes 7 based fixed bin(35,0) level 3 dcl 9-20 set ref 899* 899 output_bpart constant fixed bin(18,0) initial dcl 15-19 ref 859 output_chars 000151 automatic fixed bin(17,0) dcl 1449 set ref 864* 866 880* 880 899 output_control_transactions 54 based fixed bin(35,0) level 2 dcl 3-67 set ref 219* 219 792* 792 943* 943 output_data_transactions 52 based fixed bin(35,0) level 2 dcl 3-67 set ref 898* 898 output_in_fnp 1(19) 000262 automatic bit(1) level 3 packed packed unaligned dcl 12-38 set ref 1022* 1062* output_in_ring_0 1(20) 000262 automatic bit(1) level 3 packed packed unaligned dcl 12-38 set ref 1023* 1063* output_limit 000150 automatic fixed bin(17,0) dcl 1448 set ref 859* 866 output_mbx_pending 4(08) based bit(1) level 3 packed packed unaligned dcl 14-27 set ref 483* 825 895* pad 1(10) 000260 automatic bit(26) level 2 in structure "dialup_info" packed packed unaligned dcl 12-30 in procedure "dn355" set ref 569* pad 0(18) based bit(9) array level 2 in structure "dcw_list" packed packed unaligned dcl 1525 in procedure "dn355" set ref 876* patch_mem constant fixed bin(8,0) initial dcl 11-24 ref 449 pcb based structure level 1 dcl 14-27 pcb_array based structure array level 1 dcl 14-25 set ref 1206 1216 1338 pcb_array_ptr 2 based pointer level 2 dcl 3-67 ref 1206 1216 1338 pcb_offset 0(18) based bit(18) level 2 packed packed unaligned dcl 1533 set ref 768 770 1173* 1175* pcbp 000270 automatic pointer dcl 14-23 set ref 151* 157* 188 190 192 202 210 467 469 473 483 486 546 547 550 552 554 558 560 562 562 565 566 570 575 590 599 607 609 621 630 667 704 704 770* 771 772 776 781 825 825 827 831 833 850 855 859 866 868 870 871 877 878 878 884 895 902 904 909 933 959 968 968 968 970 974 974 985 1023 1025 1026 1031 1031 1033 1033 1063 1091 1101 1109 1118 1119 1119 1173 1173 1200* 1206* 1216* 1217 1226 1338* 1339 1342 1368 1370 1370 1370 1371 1371 1371 1375 pcw_error 000461 automatic bit(1) packed unaligned dcl 1242 set ref 1273* 1282* pds$processid 000014 external static bit(36) dcl 1501 ref 95 98 105 108 115 126 239 271 287 293 296 per_datanet 22 based structure array level 2 dcl 3-52 set ref 253 1335 pmut$unwire_unmask 000040 constant entry external dcl 1520 ref 275 300 1423 pmut$wire_and_mask 000036 constant entry external dcl 1519 ref 237 284 prev_blockp 000376 automatic pointer dcl 954 set ref 976 982* processed_from_q 47 based fixed bin(35,0) level 2 dcl 3-67 set ref 269* 269 ptp 4 000464 automatic pointer level 2 in structure "ima" dcl 1244 in procedure "return_mbx" set ref 1279* 1310* ptp 71 based pointer level 2 in structure "fnp_info" packed packed unaligned dcl 3-67 in procedure "dn355" ref 1279 1310 ptr builtin function dcl 1489 ref 395 396 485 650 767 770 870 968 968 1031 1031 1101 1162 1351 1370 1370 pxss$notify 000034 constant entry external dcl 1508 ref 130 307 357 452 463 470 1398 pxss$ring_0_wakeup 000030 constant entry external dcl 1508 ref 1410 pxss$unique_ring_0_wakeup 000032 constant entry external dcl 1508 ref 366 q_count 000126 automatic fixed bin(17,0) dcl 1431 set ref 759* 762 799* 799 808 809 1348* 1350* 1350* q_entries_made 45 based fixed bin(35,0) level 2 dcl 3-67 set ref 1169* 1169 q_entry based structure level 1 dcl 1533 set ref 800 800 1151 1151 1353 1353 q_first 000125 automatic fixed bin(17,0) dcl 1431 set ref 758* 767 798* 806 1349* 1350 1351 1352* qptr 000116 automatic pointer dcl 1431 set ref 767* 768 770 776 781 781 788 789 790 790 798 800 800 800* 1151 1151 1162* 1163 1167* 1171 1172 1173 1175 1176 1177 1351* 1352 1353 1353 1353* queue_lock 43 based bit(36) level 2 dcl 3-67 set ref 98 108 115 239 271 287 296 queue_locked 000161 automatic bit(1) packed unaligned dcl 1457 set ref 241* 274* 289* 299* 1420 rcd constant fixed bin(8,0) initial dcl 11-14 ref 514 read_first 5 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 14-27 set ref 959 968 968 968 970* 974 974* 1025 1031 1031 1033* read_last 5(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 14-27 set ref 985* 1026 1033* 1101 real_word_cnt 000410 automatic fixed bin(17,0) dcl 1008 set ref 1015* 1016 1019 1116* reason_msg 000210 automatic char(64) packed unaligned dcl 1558 set ref 652* 655* 660 reasonp 000250 automatic pointer dcl 5-24 set ref 395* 396* 396 396 398 648* 650* 650 652 receive_mode_device 1(09) 000260 automatic bit(1) level 2 packed packed unaligned dcl 12-30 set ref 568* reject_request_temp 000013 constant fixed bin(8,0) initial dcl 11-24 ref 995 1076 rel builtin function dcl 1489 ref 858 939 974 976 979 985 1065 1158 1173 report_meters constant fixed bin(8,0) initial dcl 11-24 ref 455 rtx constant fixed bin(8,0) initial dcl 11-14 ref 726 988 rtx_info 000262 automatic structure level 1 dcl 12-38 set ref 1027 1068 running 30(02) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 76 79* 92 166 422 1397* send_output constant fixed bin(8,0) initial dcl 11-65 in procedure "dn355" ref 517 617 send_output 4(02) based bit(1) level 3 in structure "pcb" packed packed unaligned dcl 14-27 in procedure "dn355" set ref 827* 833* 855* 1119 set_echnego_break_table constant fixed bin(8,0) initial dcl 11-24 ref 208 781 937 size builtin function dcl 1489 ref 800 800 1151 1151 1353 1353 slot_no 0(12) based bit(6) level 3 packed packed unaligned dcl 4-36 set ref 706 706 706 smbx_cmd_data_long based bit(216) packed unaligned dcl 1497 set ref 216* 790* source_ptr 000414 automatic pointer dcl 1011 set ref 1058* 1060 stac builtin function dcl 1489 ref 95 98 105 115 239 287 stacq builtin function dcl 1489 ref 108 126 271 293 296 state 0(18) 000170 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 1522 set ref 1406* string builtin function dcl 1489 set ref 190* 190 195* 498 498 730 730 771* 771 774* 850* 850 1188 1206 1217 1217 1276* 1276 1276 1302* 1306* 1306 1306 sub_mbx based structure level 1 dcl 4-36 subp 000242 automatic pointer dcl 4-99 set ref 186* 190 195 197 198 215 216 439* 447 449 449 455 480 489 498 498 498 511* 514 517 517 517 520 538 538 542 546 547 547 572 574 575 578 580 588 597 604 617 627 634 635 640 642 658 665 670 671 676 676 678 683 685 690 696 702 706 706 706 706 706 716 726 730 730 730 766* 771 774 787 788 789 790 849* 850 858 891 892 893 894 937 938 939 940 956 961 962 979 987 988 993 995 1015 1017 1022 1044 1045 1058 1062 1074 1076 1096 1188 1190 1206 1210 1211 1217 substr builtin function dcl 1489 ref 173 216 685 790 1017 1022 1045 1062 1106 1111 sync_line 4(04) based bit(1) level 3 packed packed unaligned dcl 14-27 set ref 552* 554 1091 sync_line_type 000014 constant fixed bin(17,0) initial array dcl 10-52 ref 550 syserr 000016 constant entry external dcl 1508 ref 79 85 108 271 293 296 378 380 383 398 498 660 706 716 730 871 1154 1194 1220 1282 1385 1420 syserr_severity 000164 automatic fixed bin(35,0) dcl 1461 set ref 76* 78* 79* t_and_d_in_progress 30(08) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 79* 92 349 414 t_and_d_lev_3_occurred 30(09) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 416 418* t_and_d_lev_7_occurred 30(10) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 351 353* t_and_d_notify_requested 30(11) based bit(1) level 3 packed packed unaligned dcl 3-67 set ref 354 358* table_bits parameter bit(288) packed unaligned dcl 928 ref 924 936 table_ptr 000364 automatic pointer dcl 930 set ref 935* 936 939 tally 0(27) based fixed bin(9,0) level 2 in structure "buffer" packed packed unsigned unaligned dcl 17-28 in procedure "dn355" set ref 871 874 878 880 978* 1061* 1102 tally 3(24) based fixed bin(12,0) array level 3 in structure "input_sub_mbx" packed packed unsigned unaligned dcl 4-84 in procedure "dn355" ref 962 tally 000374 automatic fixed bin(17,0) dcl 952 in procedure "process_accept_input" set ref 962* 963 978 tandd_pcbx 64 based fixed bin(17,0) level 2 dcl 3-67 ref 1206 target_ptr 000416 automatic pointer dcl 1012 set ref 1059* 1060 tc_data$fnp_buffer_threshold 000012 external static fixed bin(17,0) dcl 1500 ref 859 tc_data$system_shutdown 000010 external static fixed bin(17,0) dcl 1499 ref 68 tdata 000100 automatic bit(288) packed unaligned dcl 148 set ref 172 173* 175* 180* 210* 216 term_inpt_mpx_wd 2 based bit(36) level 2 dcl 4-12 set ref 432 432 terminal_accepted constant fixed bin(8,0) initial dcl 11-24 ref 572 timeout_time 000462 automatic fixed bin(71,0) dcl 1243 set ref 1264* 1266 timw 000120 automatic fixed bin(24,0) dcl 1431 set ref 432* 436 509 timwb based bit(1) array packed unaligned dcl 1485 ref 436 509 trace 5 based bit(1) level 2 dcl 3-52 ref 74 tty_buf based structure level 1 dcl 15-35 tty_buf$ 000056 external static fixed bin(17,0) dcl 15-19 set ref 162 249 1324 tty_ev 000050 constant fixed bin(17,0) initial dcl 15-19 set ref 130* 307* 357* tty_space_man$free_chain 000066 constant entry external dcl 18-16 ref 486 968 1031 1370 tty_space_man$free_space 000062 constant entry external dcl 18-12 ref 800 1353 tty_space_man$get_buffer 000064 constant entry external dcl 18-13 ref 965 1054 tty_space_man$get_space 000060 constant entry external dcl 18-10 ref 1151 ttybp 000272 automatic pointer dcl 15-19 set ref 162* 249* 485 485 767 770 858 868 870 939 968 968 979 1031 1031 1101 1137 1139 1162 1324* 1351 1370 1370 type 0(28) 000166 automatic fixed bin(8,0) level 2 packed packed unsigned unaligned dcl 1521 set ref 364* unal_number based fixed bin(17,0) packed unaligned dcl 1492 set ref 575* 578* unspec builtin function dcl 1489 set ref 360* 365* 365 582 685 1027 1068 1409* 1409 used 5 based bit(1) array level 3 packed packed unaligned dcl 4-12 set ref 177 441* 763 840 1296* used_string based bit(8) packed unaligned dcl 1485 ref 177 763 840 verify builtin function dcl 1489 ref 1111 version 000166 automatic bit(2) level 2 packed packed unaligned dcl 1521 set ref 361* wcd constant fixed bin(8,0) initial dcl 11-14 ref 215 447 580 634 670 787 938 993 1074 wire_arg 000154 automatic fixed bin(71,0) dcl 1454 set ref 237* 275* 284* 300* 1423* wire_ptr 000156 automatic pointer dcl 1455 set ref 237* 275* 284* 300* 1423* word_cnt 5(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 4-36 set ref 891* 940* word_counts 5 based structure level 2 dcl 9-20 write_cnt 3(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 14-27 set ref 878* 878 1371* write_first 1 based fixed bin(17,0) level 2 packed packed unaligned dcl 14-27 set ref 831 866 868 870 871* 877* 902 1023 1063 1119 1368 1370 1370 1371* write_last 1(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 14-27 set ref 904* 1371* wru_timeout constant fixed bin(8,0) initial dcl 11-65 ref 597 wtx constant fixed bin(8,0) initial dcl 11-14 ref 480 894 x 000450 automatic fixed bin(17,0) dcl 1186 set ref 1190* 1190* 1192 x_dno parameter fixed bin(35,0) dcl 64 ref 61 230 250 x_level parameter fixed bin(3,0) dcl 65 ref 61 73 x_status parameter bit(36) dcl 66 set ref 61 79* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Block_xfer internal static fixed bin(8,0) initial dcl 11-89 Break internal static fixed bin(8,0) initial dcl 11-89 Breakall internal static fixed bin(8,0) initial dcl 11-89 Breakchar internal static fixed bin(8,0) initial dcl 11-89 Chngstring internal static fixed bin(8,0) initial dcl 11-89 Crecho internal static fixed bin(8,0) initial dcl 11-89 DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 13-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 13-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 13-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 13-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 13-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 13-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 13-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 13-103 DSA_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 13-35 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 13-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 13-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 13-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 13-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 13-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 13-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 13-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 13-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 13-99 Dumpinput internal static fixed bin(8,0) initial dcl 11-89 Dumpoutput internal static fixed bin(8,0) initial dcl 11-89 Echoplex internal static fixed bin(8,0) initial dcl 11-89 Eight_bit_in internal static fixed bin(8,0) initial dcl 11-89 Eight_bit_out internal static fixed bin(8,0) initial dcl 11-89 Errormsg internal static fixed bin(8,0) initial dcl 11-89 FIRST_BOOTLOAD_PAGEX internal static fixed bin(17,0) initial dcl 3-166 FIRST_TTY_BUF_PAGEX internal static fixed bin(17,0) initial dcl 3-167 Fullduplex internal static fixed bin(8,0) initial dcl 11-89 Hndlquit internal static fixed bin(8,0) initial dcl 11-89 INPUT_AVAILABLE internal static fixed bin(17,0) initial dcl 12-14 Input_flow_control internal static fixed bin(8,0) initial dcl 11-89 LINE_1050 internal static fixed bin(17,0) initial dcl 10-22 LINE_2741 internal static fixed bin(17,0) initial dcl 10-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 10-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 10-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 10-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 10-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 10-22 LINE_BSC internal static fixed bin(17,0) initial dcl 10-22 LINE_DSA internal static fixed bin(17,0) initial dcl 10-22 LINE_G115 internal static fixed bin(17,0) initial dcl 10-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 10-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 10-22 LINE_MC internal static fixed bin(17,0) initial dcl 10-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 10-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 10-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 10-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 10-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 10-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 10-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 10-22 LINE_VIP internal static fixed bin(17,0) initial dcl 10-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 10-22 Lfecho internal static fixed bin(8,0) initial dcl 11-89 Listen internal static fixed bin(8,0) initial dcl 11-89 Lock internal static fixed bin(8,0) initial dcl 11-89 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 13-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 13-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 13-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 13-50 MCS_HANGUP_MSG internal static fixed bin(17,0) initial dcl 13-52 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 13-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 13-64 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 13-67 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 13-56 MCS_READ_MSG internal static fixed bin(17,0) initial dcl 13-58 MCS_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 13-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 13-60 MOWSE_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 13-36 Meter internal static fixed bin(8,0) initial dcl 11-89 Msg internal static fixed bin(8,0) initial dcl 11-89 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 13-38 Nocontrol internal static fixed bin(8,0) initial dcl 11-89 Odd_parity internal static fixed bin(8,0) initial dcl 11-89 Output_flow_control internal static fixed bin(8,0) initial dcl 11-89 Polite internal static fixed bin(8,0) initial dcl 11-89 Prefixnl internal static fixed bin(8,0) initial dcl 11-89 Replay internal static fixed bin(8,0) initial dcl 11-89 SPACE_AVAILABLE internal static fixed bin(17,0) initial dcl 12-21 Sensepos internal static fixed bin(8,0) initial dcl 11-89 Set_buffer_size internal static fixed bin(8,0) initial dcl 11-89 Setbusy internal static fixed bin(8,0) initial dcl 11-89 TIMER internal static fixed bin(17,0) initial dcl 12-24 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 15-33 Tabecho internal static fixed bin(8,0) initial dcl 11-89 USER_INTERRUPT internal static fixed bin(17,0) initial dcl 12-25 Upstate internal static fixed bin(8,0) initial dcl 11-89 Wru internal static fixed bin(8,0) initial dcl 11-89 Xmit_hold internal static fixed bin(8,0) initial dcl 11-89 abs_buf_limit internal static fixed bin(18,0) initial dcl 15-19 accept_calls internal static fixed bin(8,0) initial dcl 11-24 accept_last_output internal static fixed bin(8,0) initial dcl 11-24 acu_dial_failure internal static fixed bin(8,0) initial dcl 11-65 acu_line_occupied internal static fixed bin(8,0) initial dcl 11-65 acu_no_good internal static fixed bin(8,0) initial dcl 11-65 acu_no_power internal static fixed bin(8,0) initial dcl 11-65 alter_parameters internal static fixed bin(8,0) initial dcl 11-24 blast internal static fixed bin(8,0) initial dcl 11-24 break_acknowledged internal static fixed bin(8,0) initial dcl 11-24 bsizec internal static fixed bin(17,0) initial dcl 15-28 channel_manager$check_modes 000000 constant entry external dcl 2-19 channel_manager$control 000000 constant entry external dcl 2-13 channel_manager$get_modes 000000 constant entry external dcl 2-22 channel_manager$interrupt_later 000000 constant entry external dcl 2-28 channel_manager$queued_interrupt 000000 constant entry external dcl 2-31 channel_manager$read 000000 constant entry external dcl 2-7 channel_manager$set_modes 000000 constant entry external dcl 2-16 channel_manager$write 000000 constant entry external dcl 2-10 checksum_error internal static fixed bin(8,0) initial dcl 11-24 connect_to_slave internal static fixed bin(8,0) initial dcl 11-65 dial internal static fixed bin(8,0) initial dcl 11-24 disconnect_accepted internal static fixed bin(8,0) initial dcl 11-24 disconnect_all_lines internal static fixed bin(8,0) initial dcl 11-24 dn355_messages$boot_messages external static fixed bin(17,0) array dcl 5-19 dn355_messages$config_messages external static fixed bin(17,0) array dcl 5-21 dont_accept_calls internal static fixed bin(8,0) initial dcl 11-24 enter_receive internal static fixed bin(8,0) initial dcl 11-24 fnp_break internal static fixed bin(8,0) initial dcl 11-24 fnp_msg_ptr automatic pointer dcl 6-5 fnp_qptr automatic pointer dcl 7-17 free_block based structure level 1 dcl 17-23 free_blockp automatic pointer dcl 17-20 init_complete internal static fixed bin(8,0) initial dcl 11-24 init_echo_negotiation internal static fixed bin(8,0) initial dcl 11-24 input_fc_chars internal static fixed bin(8,0) initial dcl 11-24 io_manager$assign 000000 constant entry external dcl 8-10 io_manager$assign_add 000000 constant entry external dcl 8-15 io_manager$connect 000000 constant entry external dcl 8-26 io_manager$connect_abs 000000 constant entry external dcl 8-29 io_manager$get_status 000000 constant entry external dcl 8-35 io_manager$ignore_interrupt 000000 constant entry external dcl 8-41 io_manager$mask 000000 constant entry external dcl 8-38 io_manager$unassign 000000 constant entry external dcl 8-20 io_manager$unassign_delete 000000 constant entry external dcl 8-23 io_manager$workspace_tdcw 000000 constant entry external dcl 8-47 io_manager_arg_ptr automatic pointer dcl 8-49 lcnt based structure level 1 dcl 9-65 lcntp automatic pointer dcl 9-63 lct_size automatic fixed bin(17,0) dcl 9-9 line_control internal static fixed bin(8,0) initial dcl 11-24 line_types internal static char(16) initial array packed unaligned dcl 10-54 lock_ptr automatic pointer dcl 16-9 max_buffer_tally internal static fixed bin(17,0) initial array dcl 17-43 max_line_type internal static fixed bin(17,0) initial dcl 10-48 output_fc_chars internal static fixed bin(8,0) initial dcl 11-24 qblock_size internal static fixed bin(17,0) initial dcl 15-27 s6180_params internal static fixed bin(8,0) initial dcl 11-65 saved_meters based structure level 1 dcl 9-68 set_delay_table internal static fixed bin(8,0) initial dcl 11-24 set_framing_chars internal static fixed bin(8,0) initial dcl 11-24 set_line_type internal static fixed bin(8,0) initial dcl 11-24 start_negotiated_echo internal static fixed bin(8,0) initial dcl 11-24 stop_negotiated_echo internal static fixed bin(8,0) initial dcl 11-24 sync_msg_size internal static fixed bin(8,0) initial dcl 11-24 terminal_rejected internal static fixed bin(8,0) initial dcl 11-24 timer_info automatic structure level 1 dcl 12-50 tty_space_man$free_buffer 000000 constant entry external dcl 18-14 tty_space_man$get_chain 000000 constant entry external dcl 18-15 tty_space_man$get_perm_space 000000 constant entry external dcl 18-11 tty_space_man$needs_space 000000 constant entry external dcl 18-18 tty_space_man$switch_chain 000000 constant entry external dcl 18-17 NAMES DECLARED BY EXPLICIT CONTEXT. check_ff 005536 constant entry internal dcl 1085 ref 1018 1046 check_lock 007004 constant entry internal dcl 1415 ref 235 dequeue 001747 constant entry internal dcl 312 ref 268 dn355 000530 constant entry external dcl 14 enough_input_space 005667 constant entry internal dcl 1132 ref 959 1050 free_mbx 006262 constant entry internal dcl 1249 ref 593 601 613 620 662 680 687 692 698 711 1035 1070 1082 get_line_number 006043 constant entry internal dcl 1183 ref 457 479 512 global_exit 001046 constant label dcl 123 ref 1197 1223 hangup_fnp 006512 constant entry internal dcl 1330 ref 1326 1401 hangup_fnp_lines 001442 constant entry external dcl 1319 interrupt 000542 constant entry external dcl 61 make_q_entry 005717 constant entry internal dcl 1145 ref 180 844 1119 match 006246 constant label dcl 1226 ref 1217 not_enough_space 005506 constant label dcl 1074 ref 1055 process_accept_input 004763 constant entry internal dcl 949 ref 630 process_input_in_mbx 005340 constant entry internal dcl 1039 ref 667 process_int 002007 constant entry internal dcl 336 ref 113 279 process_int_queue 001510 constant entry internal dcl 261 ref 105 118 243 process_interrupt_queue 001357 constant entry external dcl 230 process_q 004070 constant entry internal dcl 751 ref 427 740 process_rtx 005204 constant entry internal dcl 1005 ref 726 process_send_output 004304 constant entry internal dcl 817 ref 205 489 621 776 reject 005155 constant label dcl 993 ref 971 report_fnp_crash 006722 constant entry internal dcl 1394 ref 402 501 719 733 1196 1222 1386 report_fnp_no_response 006672 constant entry internal dcl 1382 ref 223 745 return_mbx 006252 constant entry internal dcl 1236 ref 581 636 672 989 997 1077 send_echo_table 004707 constant entry internal dcl 924 ref 210 781 send_global_wcd 001134 constant entry external dcl 154 send_join 001155 constant label dcl 159 set ref 152 send_mbx 006255 constant entry internal dcl 1236 ref 218 791 897 942 send_new_connect 006421 constant label dcl 1291 ref 1269 send_wcd 001103 constant entry external dcl 139 setup 001464 constant entry internal dcl 246 ref 72 234 t_and_d_join 002032 constant label dcl 354 ref 419 test_pcw 006270 constant label dcl 1254 ref 1247 throw_away_output 006630 constant entry internal dcl 1363 ref 202 591 609 705 1341 update_q_ptrs 004274 constant label dcl 806 ref 795 wait_for_response 006303 constant label dcl 1264 ref 1285 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10034 10124 7454 10044 Length 10770 7454 70 630 360 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dn355 844 external procedure is an external procedure. on unit on line 235 92 on unit setup internal procedure shares stack frame of external procedure dn355. process_int_queue internal procedure shares stack frame of external procedure dn355. dequeue internal procedure shares stack frame of external procedure dn355. process_int internal procedure shares stack frame of external procedure dn355. process_q internal procedure shares stack frame of external procedure dn355. process_send_output internal procedure shares stack frame of external procedure dn355. send_echo_table internal procedure shares stack frame of external procedure dn355. process_accept_input internal procedure shares stack frame of external procedure dn355. process_rtx internal procedure shares stack frame of external procedure dn355. check_ff internal procedure shares stack frame of external procedure dn355. enough_input_space internal procedure shares stack frame of external procedure dn355. make_q_entry internal procedure shares stack frame of external procedure dn355. get_line_number internal procedure shares stack frame of external procedure dn355. return_mbx internal procedure shares stack frame of external procedure dn355. hangup_fnp internal procedure shares stack frame of external procedure dn355. throw_away_output internal procedure shares stack frame of external procedure dn355. report_fnp_no_response internal procedure shares stack frame of external procedure dn355. report_fnp_crash internal procedure shares stack frame of external procedure dn355. check_lock internal procedure shares stack frame of on unit on line 235. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dn355 000100 tdata dn355 000110 data_len dn355 000112 dcwlptr dn355 000114 bufp dn355 000116 qptr dn355 000120 timw dn355 000121 level dn355 000122 dno dn355 000123 i dn355 000124 ix dn355 000125 q_first dn355 000126 q_count dn355 000127 chars_left dn355 000130 numchars dn355 000131 k dn355 000132 j dn355 000133 chain_len dn355 000134 devx dn355 000135 operation dn355 000136 lano dn355 000137 fnp_name dn355 000140 no_response dn355 000141 interrupt_entry dn355 000142 input_count dn355 000144 chan_lctep dn355 000146 chain_head_ptr dn355 000150 output_limit dn355 000151 output_chars dn355 000152 bits_per_char dn355 000153 max_buf_chars dn355 000154 wire_arg dn355 000156 wire_ptr dn355 000160 masked dn355 000161 queue_locked dn355 000162 continue dn355 000163 offset dn355 000164 syserr_severity dn355 000166 auto_net_event_message dn355 000170 auto_fnp_msg dn355 000172 fnp_event_message dn355 000174 new_qp dn355 000176 new_qrel dn355 000177 fault_type dn355 000200 fault_name dn355 000204 module_num dn355 000205 full_words dn355 000210 reason_msg dn355 000236 infop dn355 000240 fnpp dn355 000242 subp dn355 000244 mbxp dn355 000246 modulep dn355 000250 reasonp dn355 000252 lctp dn355 000254 lctep dn355 000256 interrupt_info dn355 000260 dialup_info dn355 000262 rtx_info dn355 000264 net_event_message_arg dn355 000266 n_pcbs dn355 000270 pcbp dn355 000272 ttybp dn355 000274 blockp dn355 000354 mbx_num process_send_output 000364 table_ptr send_echo_table 000374 tally process_accept_input 000375 buf_size process_accept_input 000376 prev_blockp process_accept_input 000410 real_word_cnt process_rtx 000411 n_words process_rtx 000412 buf_size process_rtx 000414 source_ptr process_rtx 000416 target_ptr process_rtx 000450 x get_line_number 000460 mbx_no return_mbx 000461 pcw_error return_mbx 000462 timeout_time return_mbx 000464 ima return_mbx THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as r_ne_as r_le_a call_ext_out_desc call_ext_out return_mac stac_mac enable_op ext_entry ext_entry_desc int_entry index_bs_1_eis stacq_mac clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. channel_manager$interrupt dn355_boot_interrupt dn355_boot_interrupt$system_fault dn355_util$compute_parity io_manager$connect_direct ldac pmut$unwire_unmask pmut$wire_and_mask pxss$notify pxss$ring_0_wakeup pxss$unique_ring_0_wakeup syserr tty_space_man$free_chain tty_space_man$free_space tty_space_man$get_buffer tty_space_man$get_space THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dn355_data$ dn355_messages$error_messages dn355_messages$fault_names dn355_messages$per_module pds$processid tc_data$fnp_buffer_threshold tc_data$system_shutdown tty_buf$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000527 16 000535 61 000536 68 000547 70 000552 72 000554 73 000555 74 000560 76 000563 78 000574 79 000576 83 000653 85 000660 86 000707 89 000725 92 000726 95 000732 98 000741 99 000752 101 000753 103 000762 105 000765 108 001000 110 001025 113 001026 115 001030 116 001040 118 001041 121 001045 123 001046 126 001050 129 001062 130 001064 133 001072 136 001075 139 001076 151 001122 152 001126 154 001127 157 001153 159 001155 161 001156 162 001162 163 001165 164 001167 165 001171 166 001173 169 001176 170 001177 171 001203 172 001205 173 001212 175 001221 177 001224 178 001231 180 001232 181 001234 183 001241 186 001242 188 001245 190 001251 192 001256 193 001261 195 001262 197 001264 198 001267 200 001273 202 001276 205 001304 206 001313 208 001314 210 001316 212 001327 215 001330 216 001332 218 001336 219 001343 223 001350 228 001353 230 001354 233 001364 234 001365 235 001366 236 001404 237 001406 239 001417 240 001430 241 001431 243 001433 244 001436 1319 001437 1324 001447 1325 001452 1326 001454 1327 001463 246 001464 249 001465 250 001470 251 001473 253 001475 254 001500 255 001503 256 001505 258 001507 261 001510 268 001512 269 001517 271 001524 274 001551 275 001552 277 001571 279 001572 281 001574 283 001602 284 001604 287 001615 288 001626 289 001627 290 001631 292 001632 293 001635 296 001662 299 001710 300 001711 302 001730 304 001731 306 001735 307 001737 310 001746 312 001747 317 001751 319 001755 320 001757 321 001761 324 001766 326 001771 327 001773 328 001775 331 002002 336 002007 343 002011 345 002013 346 002016 349 002020 351 002024 353 002030 354 002032 357 002036 358 002045 360 002050 361 002052 362 002056 363 002062 364 002064 365 002070 366 002072 368 002110 373 002111 374 002115 376 002125 378 002137 380 002167 383 002221 387 002257 390 002267 391 002272 392 002276 395 002312 396 002321 398 002325 402 002362 403 002363 408 002364 410 002370 411 002377 414 002400 416 002403 418 002407 419 002411 422 002412 425 002416 427 002417 432 002422 434 002436 436 002443 439 002451 441 002455 443 002462 444 002464 445 002471 447 002475 449 002502 451 002512 452 002514 453 002523 455 002524 457 002526 458 002527 462 002536 463 002540 465 002547 467 002550 469 002554 470 002556 471 002565 473 002566 476 002570 479 002571 480 002572 483 002600 484 002603 485 002610 486 002622 489 002640 493 002647 498 002650 501 002713 502 002714 506 002715 508 002717 509 002725 511 002733 512 002737 514 002740 517 002747 520 002766 523 002774 528 002776 530 003002 531 003003 534 003004 535 003010 538 003011 540 003023 542 003030 546 003033 547 003041 550 003047 551 003066 552 003070 554 003100 556 003106 558 003110 560 003115 562 003125 565 003134 566 003137 567 003142 568 003144 569 003154 570 003156 572 003160 574 003163 575 003165 578 003173 580 003175 581 003177 582 003201 583 003203 585 003216 588 003217 590 003221 591 003224 592 003225 593 003242 595 003244 597 003245 599 003247 601 003270 602 003272 604 003273 607 003275 609 003301 611 003305 613 003322 614 003324 617 003325 620 003327 621 003331 624 003343 627 003344 630 003346 634 003354 635 003356 636 003360 638 003362 640 003363 642 003365 644 003370 646 003374 648 003400 650 003402 652 003404 653 003411 655 003412 657 003415 658 003423 659 003434 660 003436 662 003472 663 003474 665 003475 667 003477 670 003505 671 003507 672 003511 674 003513 676 003514 678 003520 679 003526 680 003541 681 003543 683 003544 685 003546 686 003551 687 003564 688 003566 690 003567 692 003571 693 003573 694 003610 696 003611 698 003613 699 003615 700 003632 702 003633 704 003635 705 003642 706 003643 710 003723 711 003740 713 003742 716 003743 719 004000 720 004001 722 004002 726 004003 730 004007 733 004052 734 004053 737 004054 740 004056 745 004064 748 004067 751 004070 758 004071 759 004074 760 004076 762 004100 763 004104 764 004112 766 004113 767 004116 768 004122 770 004126 771 004131 772 004136 773 004141 774 004142 776 004144 779 004164 781 004165 784 004207 787 004210 788 004212 789 004215 790 004223 791 004231 792 004236 795 004243 798 004245 799 004250 800 004252 801 004265 803 004266 804 004273 806 004274 808 004277 809 004301 812 004303 817 004304 824 004306 825 004310 827 004314 828 004316 831 004317 833 004322 834 004324 835 004341 838 004342 840 004345 842 004354 844 004356 845 004364 846 004371 849 004372 850 004375 855 004402 856 004404 858 004411 859 004423 864 004454 865 004455 866 004457 868 004501 870 004515 871 004521 874 004550 876 004561 877 004563 878 004566 880 004573 882 004575 884 004600 885 004602 887 004603 889 004605 891 004613 892 004615 893 004617 894 004620 895 004622 896 004625 897 004630 898 004632 899 004637 902 004644 904 004650 905 004652 908 004673 909 004674 914 004706 924 004707 933 004711 935 004716 936 004723 937 004727 938 004732 939 004734 940 004745 942 004747 943 004755 944 004762 949 004763 956 004764 957 004770 959 004773 961 005006 962 005017 963 005023 965 005027 966 005044 968 005050 970 005072 971 005075 974 005076 976 005107 978 005114 979 005117 982 005135 983 005137 985 005141 987 005145 988 005150 989 005152 990 005154 993 005155 995 005160 997 005162 998 005164 999 005166 1002 005203 1005 005204 1014 005205 1015 005212 1016 005216 1017 005223 1018 005230 1019 005234 1020 005236 1022 005237 1023 005245 1024 005255 1025 005260 1026 005264 1027 005271 1028 005273 1029 005306 1031 005307 1033 005330 1035 005335 1037 005337 1039 005340 1044 005341 1045 005346 1046 005353 1047 005357 1049 005361 1050 005364 1052 005371 1054 005376 1055 005413 1058 005417 1059 005422 1060 005425 1061 005431 1062 005434 1063 005442 1064 005452 1065 005455 1067 005461 1068 005466 1069 005470 1070 005503 1071 005505 1074 005506 1076 005511 1077 005513 1078 005515 1080 005532 1082 005533 1083 005535 1085 005536 1090 005540 1091 005542 1094 005547 1096 005555 1097 005560 1098 005562 1101 005563 1102 005570 1103 005573 1106 005575 1109 005603 1111 005611 1114 005625 1116 005631 1118 005632 1119 005634 1123 005651 1126 005666 1132 005667 1137 005671 1138 005674 1139 005700 1145 005717 1151 005721 1152 005734 1154 005740 1155 005760 1158 005761 1159 005764 1162 005772 1163 005776 1166 006000 1167 006001 1168 006003 1169 006004 1171 006010 1172 006015 1173 006021 1175 006032 1176 006034 1177 006036 1178 006042 1183 006043 1188 006044 1190 006051 1191 006066 1192 006070 1194 006073 1196 006123 1197 006124 1200 006125 1201 006127 1202 006131 1205 006132 1206 006135 1210 006145 1211 006151 1213 006161 1215 006165 1216 006175 1217 006202 1219 006212 1220 006214 1222 006244 1223 006245 1226 006246 1230 006251 1236 006252 1246 006257 1247 006261 1249 006262 1252 006264 1254 006270 1257 006274 1258 006276 1261 006277 1262 006300 1264 006303 1266 006306 1268 006317 1269 006320 1271 006327 1273 006331 1274 006333 1275 006335 1276 006337 1278 006352 1279 006355 1280 006357 1282 006366 1285 006417 1289 006420 1291 006421 1294 006422 1296 006425 1297 006431 1298 006432 1299 006440 1300 006444 1302 006450 1303 006452 1306 006461 1309 006474 1310 006477 1311 006501 1313 006510 1315 006511 1330 006512 1335 006514 1336 006521 1337 006523 1338 006531 1339 006536 1341 006541 1342 006542 1344 006562 1346 006564 1348 006567 1349 006570 1350 006572 1351 006600 1352 006603 1353 006605 1354 006620 1356 006623 1359 006627 1363 006630 1368 006631 1370 006635 1371 006660 1375 006667 1377 006671 1382 006672 1385 006673 1386 006720 1387 006721 1394 006722 1397 006723 1398 006726 1401 006740 1404 006747 1406 006751 1407 006753 1408 006756 1409 006762 1410 006764 1412 007003 1415 007004 1420 007005 1423 007031 1426 007044 ----------------------------------------------------------- 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