COMPILATION LISTING OF SEGMENT load_fnp_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1033.3 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* format: style4,delnl,insnl,^ifthendo */ 12 load_fnp_: 13 proc (afnpno, acdtp, a_chan_listp, acksw, code); 14 15 /* load_fnp_ is the subroutine which prepares the FNP core image for 16* bootload into the FNP. It was written using parts of LD355, 17* the BOS 355 loader, as a model. 18* 19* Coded June 1, 1976 by Mike Grady. 20* Modifed October 28, 1976 by Robert Coren to pass core image name to ring zero . 21* Modified August 1978 by Larry Johnson to take array of channels to boot from caller instead of scanning cdt. 22* Modified 1979 May 9 by Art Beattie to pass FNP memory size to ring zero. 23* Modified May 1981 by Robert Coren to handle COLTS pseudo-channel. 24* Modified April 1982 by Robert Coren to handle speeds up to 72000 baud. 25* Modified June 1982 by Robert Coren to accept memory sizes up to 256K. 26* Modified 83-12-15 BIM to make the abort entry work so it can be called. 27**/ 28 29 /* Parameters */ 30 31 dcl afnpno fixed bin, 32 acdtp ptr, 33 a_chan_listp ptr, /* pointer to array of cdte entries for channels to boot */ 34 acksw bit (1), 35 code fixed bin (35); 36 37 /* External Variables */ 38 39 dcl gicb$ external; 40 41 dcl error_table_$dev_nt_assnd fixed bin (35) ext; 42 dcl error_table_$action_not_performed fixed bin (35) ext; 43 44 /* External procedures */ 45 46 dcl get_fnp_name_ entry (fixed binary) returns (character (32)); 47 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, fixed bin (35)), 48 sys_log_ entry options (variable), 49 sys_log_$error_log entry options (variable), 50 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 51 phcs_$fnp_info entry (fixed bin, fixed bin (24), fixed bin (4), fixed bin (4), fixed bin (35)), 52 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 53 load_fnp_util_$checksum entry (ptr, fixed bin) returns (bit (36) aligned), 54 load_fnp_util_$fnp_parity entry (ptr), 55 parse_tty_name_ entry (char (*) aligned, fixed bin, bit (1), fixed bin, fixed bin), 56 hcs_$terminate_noname entry (ptr, fixed bin (35)), 57 hphcs_$wire_fnp entry (fixed bin, ptr, fixed bin (24), fixed bin, fixed bin (35)), 58 hphcs_$unwire_fnp entry (fixed bin, fixed bin (35)), 59 hphcs_$load_fnp 60 entry (fixed bin, fixed bin (24), fixed bin (71), char (4), char (168) aligned, fixed bin, ptr, fixed bin (35)), 61 decode_clock_value_ 62 entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin (71), fixed bin, char (3) aligned), 63 release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 64 65 /* Constants */ 66 67 dcl me char (9) int static options (constant) init ("load_fnp_"); 68 69 dcl slot_count (4) internal static options (constant) fixed bin init (1, 2, 2, 3); 70 dcl slot_id (4) internal static options (constant) bit (3) init ("000"b, "101"b, "101"b, "001"b); 71 72 dcl first_lsla_ch internal static options (constant) fixed bin init (9); 73 dcl first_hsla_ch internal static options (constant) fixed bin init (6); 74 75 dcl sync_speed (6:15) internal static options (constant) bit (4) 76 init ("0001"b, "0011"b, "0010"b, "0100"b, "0110"b, "0111"b, "1000"b, "1001"b, "1010"b, "1011"b); 77 dcl async_speed (7) internal static options (constant) bit (4) 78 init ("0010"b, "0011"b, "0100"b, "0101"b, "0110"b, "1000"b, "1001"b); 79 80 dcl option_async internal static options (constant) bit (4) init ("1010"b); 81 82 dcl ( 83 dia_cs_to_fnp init ("111110"b), 84 dia_disconnect init ("111000"b) 85 ) internal static options (constant) bit (6); 86 87 dcl speed_bit (12) internal static options (constant) fixed bin init (1, 2, 3, 4, 8, 6, 7, 8, 8, 8, 8, 8); 88 89 dcl option_speed_code (12) bit (4) internal static options (constant) 90 init ("0001"b, "0010"b, "0011"b, "0100"b, "0111"b, "1001"b, "1010"b, "1100"b, "1101"b, "1101"b, "1110"b, 91 "1111"b); 92 93 dcl sync_pcw_model bit (18) internal static options (constant) init ("111111000000111110"b); 94 dcl async_pcw_model bit (18) internal static options (constant) init ("100000000000010110"b); 95 dcl bsc_pcw_model bit (18) internal static options (constant) init ("110000000000000100"b); 96 97 dcl sync_char bit (8) internal static options (constant) init ("00010110"b); 98 /* SYNC 026 */ 99 100 dcl INIT1 bit (18) int static options (constant) init ("011001100101011001"b); 101 dcl INIT2 bit (18) int static options (constant) init ("110011010000010000"b); 102 dcl min_modules fixed bin int static options (constant) init (7); 103 dcl max_image_age fixed bin int static options (constant) init (5); 104 105 /* Automatic Storage */ 106 107 dcl (gicb_ptr, prog_ptr) ptr; 108 dcl dirname char (168), 109 ename char (32); 110 dcl (term_cell, emerg_cell) fixed bin (4); 111 dcl (boot_segp, bcap, plp, dcwp, pcwp) ptr; 112 dcl (gicb_len, prog_len) fixed bin; 113 dcl offset fixed bin (21); 114 dcl (mbx_absadr, seg_absadr) fixed bin (24); 115 dcl fnpno fixed bin, 116 (i, j) fixed bin, 117 (fno, ano, chno) fixed bin; 118 dcl (wired, more, type) bit (1); 119 dcl (lsla_count, hsla_count) fixed bin; 120 dcl iom_ch fixed bin; 121 dcl slot fixed bin; 122 dcl nslots fixed bin; 123 dcl sid bit (3); 124 dcl seg_absadr_temp fixed bin (24); 125 dcl amt_left fixed bin; 126 dcl absadr_bits bit (24); 127 dcl copy_len fixed bin (21); 128 dcl dummy_code fixed bin (35); 129 dcl chan_listp ptr; 130 dcl baud_info_size fixed bin; 131 dcl fnp_memory_size fixed bin; 132 dcl cur_chain fixed bin; 133 dcl cur_time fixed bin (71); 134 dcl cur_year fixed bin; 135 dcl image_year fixed bin; 136 dcl image_len fixed bin (24); 137 dcl tandd_configured bit (1); 138 139 /* tables to hold config info for LSLAs and HSLAs */ 140 141 dcl 1 lsla_array (0:5, 0:51) aligned, 142 2 line_type fixed bin (17) unal, 143 2 baud_rate fixed bin (17) unal; 144 145 dcl 1 hsla_array (0:2, 0:31) aligned, 146 2 line_type fixed bin (17) unal, 147 2 baud_rate fixed bin (17) unal, 148 2 modem_type fixed bin (17) unal, 149 2 flags unal, 150 3 pl bit (1) unal, 151 3 bsc_ebcdic bit (1) unal, 152 3 bsc_transparent bit (1) unal, 153 3 vip_pollselect bit (1) unal, 154 3 autobaud bit (1) unal, 155 3 pad bit (13) unal; 156 157 dcl lsla_ch (0:5) fixed bin; 158 dcl hsla_ch (0:2) fixed bin; 159 160 dcl pcw bit (36) aligned; 161 162 dcl 1 pcw_f18b based, 163 2 type bit (2) unal, 164 2 char_len bit (4) unal, 165 2 pad1 bit (1) unal, 166 2 subch bit (5) unal, 167 2 rcv_parity bit (1) unal, 168 2 xmt_parity bit (1) unal, 169 2 parity_odd bit (1) unal, 170 2 two_icws bit (1) unal, 171 2 cct_enable bit (1) unal, 172 2 pad2 bit (1) unal; 173 174 dcl 1 async_pcw aligned based (pcwp), 175 2 f18b unal like pcw_f18b, 176 2 pad3 bit (6) unal, 177 2 two_stop bit (1) unal, 178 2 pad4 bit (3) unal, 179 2 speed bit (8) unal; 180 181 dcl 1 sync_pcw aligned based (pcwp), 182 2 f18b unal like pcw_f18b, 183 2 pad bit (10) unal, 184 2 sync_char bit (8) unal; 185 186 dcl 1 bsc_pcw aligned based (pcwp), 187 2 f18b unal like pcw_f18b, 188 2 pad3 bit (6) unal, 189 2 crc_type bit (1) unal, 190 2 pad4 bit (2) unal, 191 2 ebcdic bit (1) unal, 192 2 transparent bit (1) unal, 193 2 timers bit (1) unal, 194 2 pad5 bit (6) unal; 195 196 /* Based storage */ 197 198 dcl fb35 fixed bin (35) based; 199 dcl copy_words (copy_len) fixed bin (35) based; 200 201 dcl 1 boot_seg aligned based (boot_segp), /* segment to hold FNP bootload image */ 202 2 boot_dcw like icw, /* used by DIA during bootload */ 203 2 gicb (gicb_len) bit (36), /* the boot program */ 204 2 fnp_prog (prog_len) bit (36); /* actual program -- MCS */ 205 206 dcl 1 boot_comm_area aligned based (bcap), /* area at end of gicb to pass info */ 207 2 list_icw like icw, /* ICW for list to boot the program */ 208 2 load_dcw (5) like dcw, /* the dcws used to load MCS */ 209 2 mbx_addr fixed bin (17) unal, /* mailbox base addr for this FNP */ 210 2 pad bit (12) unal, 211 2 term_cell bit (3) unal, /* terminate interrupt for FNP to use */ 212 2 emergency_cell bit (3) unal, /* emergency to use for crash */ 213 2 pad1 bit (36) unal, 214 2 load_limits unal, 215 3 low bit (18) unal, /* MCS load limits */ 216 3 high bit (18) unal, /* low and high */ 217 2 prog_cksum bit (36) unal, /* checksum for MCS */ 218 2 boot_cksum bit (36) unal, /* checksum for gicb */ 219 2 dia_chan_no fixed bin; /* place where FNP IOM channel number of DIA is stored */ 220 221 dcl 1 dcw aligned based (dcwp), /* DIA Data Control Word */ 222 2 mult_addr bit (18) unal, /* low 18 bits of multics address */ 223 2 pad1 bit (3) unal, 224 2 parity1 bit (3) unal, /* parity bits for this 36 bit word */ 225 2 mult_addr_ex bit (6) unal, /* high 6 bits of multics address */ 226 2 command bit (6) unal, /* DIA commond opcode */ 227 2 xfer_mode bit (3) unal, /* transfer mode, bit-36 */ 228 2 fnp_addr bit (15) unal, /* address in fnp mem */ 229 2 pad2 bit (3) unal, 230 2 parity2 bit (3) unal, /* parity for 2nd 36 bit word */ 231 2 tally bit (12) unal; /* xfer tally, 36 bit words */ 232 233 dcl 1 prog_limits aligned based (plp), /* limits at end of MCS, by binder */ 234 2 low bit (18) unal, 235 2 high bit (18) unal, 236 2 count bit (18) unal, 237 2 entry bit (18) unal; 238 239 dcl 1 chan_list aligned based (chan_listp), /* list of channels to boot */ 240 2 count fixed bin, 241 2 cdte_ptr (0 refer (chan_list.count)) ptr unal; 242 243 dcl 1 mem_array_fb aligned based (memp), 244 2 mem (0:65535) fixed bin (17) unaligned; 245 246 /* Builtins */ 247 248 dcl (addr, addrel, bit, clock, divide, fixed, null, string, hbound, max, min, rel, substr) builtin; 249 250 cdtp = acdtp; 251 fnpno = afnpno; 252 fnpep = addr (cdt.fnp_entry (fnpno)); /* get ptr to this fnp entry */ 253 chan_listp = a_chan_listp; 254 255 lsla_array.line_type (*, *) = -1; 256 hsla_array.line_type (*, *) = -1; 257 lsla_ch (*) = -1; 258 hsla_ch (*) = -1; 259 tandd_configured = "0"b; 260 261 if fnpe.state = FNP_FREE 262 then do; /* but FNP is not configured */ 263 code = error_table_$dev_nt_assnd; 264 return; 265 end; 266 267 gicb_ptr = addr (gicb$); 268 269 call expand_pathname_ ((fnpe.coreimage), dirname, ename, code); 270 /* get actual name */ 271 if code ^= 0 272 then do; 273 call sys_log_$error_log (1, code, me, "expand_pathname_ on ^a for FNP ^a.", fnpe.coreimage, 274 get_fnp_name_ (fnpno)); 275 return; 276 end; 277 call hcs_$initiate_count (dirname, ename, "", image_len, 0, prog_ptr, code); 278 if prog_ptr = null () 279 then do; /* couldn't find MCS */ 280 call sys_log_$error_log (1, code, me, "Locating ^a>^a for FNP ^a.", dirname, ename, get_fnp_name_ (fnpno)); 281 return; 282 end; 283 image_len = divide (image_len, 36, 24, 0); 284 285 call get_temp_segment_ (me, boot_segp, code); 286 if code ^= 0 287 then do; 288 call sys_log_$error_log (1, code, me, "Creating boot segment in process directory for FNP ^a.", 289 get_fnp_name_ (fnpno)); 290 return; 291 end; 292 293 copy_len = gicb_ptr -> fb35 + 1; /* pickup length of gicb from seg */ 294 boot_segp -> copy_words = gicb_ptr -> copy_words; /* copy in gicb to temp seg */ 295 296 gicb_len = copy_len - 1; 297 gicb_len = (divide (gicb_len + 63, 64, 22, 0) * 64) - 1; 298 /* to next mod 64 in boot seg, note first word */ 299 300 copy_len, prog_len = prog_ptr -> fb35; /* pickup len of MCS from seg */ 301 prog_ptr = addrel (prog_ptr, 1); /* skip word */ 302 if copy_len + 1 ^= image_len 303 then do; /* check bit count of image segment against length in image */ 304 call sys_log_$error_log (1, 0, me, "Invalid core image for FNP ^a (image length error), ^a>^a", 305 get_fnp_name_ (fnpno), dirname, ename); 306 go to not_done; 307 end; 308 addr (boot_seg.fnp_prog) -> copy_words = prog_ptr -> copy_words; 309 /* copy in prog */ 310 311 call hcs_$terminate_noname (prog_ptr, code); 312 313 /* reuse gicb_ptr and prog_ptr to point at copies */ 314 315 gicb_ptr = addr (boot_seg.gicb); 316 prog_ptr = addr (boot_seg.fnp_prog); 317 318 offset = fixed (boot_dcw.tally, 17) - 17; /* get offset of boot_comm_area */ 319 bcap = addrel (gicb_ptr, offset); /* make ptr */ 320 321 plp = addrel (prog_ptr, prog_len - 2); /* make ptr to prog limits area */ 322 323 /* fill in boot_comm_area */ 324 325 call phcs_$fnp_info (fnpno, mbx_absadr, term_cell, emerg_cell, code); 326 /* get info about this FNP */ 327 if code ^= 0 328 then do; 329 call sys_log_$error_log (1, code, me, "Getting FNP info for FNP ^a.", get_fnp_name_ (fnpno)); 330 go to exit; 331 end; 332 333 boot_comm_area.mbx_addr = mbx_absadr; /* base of DIA mailbox */ 334 boot_comm_area.term_cell = bit (fixed (term_cell, 3), 3); 335 boot_comm_area.emergency_cell = bit (fixed (emerg_cell, 3), 3); 336 337 boot_comm_area.load_limits.low = prog_limits.low; 338 boot_comm_area.load_limits.high = prog_limits.high; 339 340 /* Now scan the channels to be initialized, save info in arrays */ 341 342 do i = 1 to chan_list.count; 343 cdtep = chan_list.cdte_ptr (i); 344 call parse_tty_name_ (cdte.name, fno, type, ano, chno); 345 /* decode the name to FNP number */ 346 347 if ^type 348 then do; /* LSLA */ 349 lsla_ch (ano) = 0; /* indicate the channel is needed */ 350 lsla_array (ano, chno).line_type = cdte.line_type; 351 lsla_array (ano, chno).baud_rate = baud_idx (cdte.baud_rate); 352 end; 353 else do; /* HSLA */ 354 if ano = 7 /* special pseudo-channel */ 355 then tandd_configured = "1"b; /* we'll deal with this later */ 356 else do; 357 hsla_ch (ano) = 0; /* indicate that this channel is needed */ 358 hsla_array (ano, chno).line_type = cdte.line_type; 359 hsla_array (ano, chno).baud_rate = baud_idx (cdte.baud_rate); 360 hsla_array (ano, chno).modem_type = cdte.modem_type; 361 hsla_array (ano, chno).flags.pl = cdte.flags.private_line; 362 hsla_array (ano, chno).flags.bsc_ebcdic = cdte.flags.bsc_ebcdic; 363 hsla_array (ano, chno).flags.bsc_transparent = cdte.flags.bsc_transparent; 364 hsla_array (ano, chno).flags.vip_pollselect = cdte.flags.vip_pollselect; 365 hsla_array (ano, chno).flags.autobaud = cdte.flags.autobaud; 366 end; 367 end; 368 end; 369 370 memp = prog_ptr; /* make ptr for mcs memory map dcls */ 371 372 /* Check for a valid core image. */ 373 374 /* First check .crmem for valid values. */ 375 376 if comm_reg.crmem < 32767 | comm_reg.crmem > 262143 | mod (comm_reg.crmem + 1, 32768) ^= 0 377 then do; 378 call sys_log_$error_log (1, 0, me, 379 "Invalid core image for FNP ^a (bad .crmem value of ^d in image), ^a>^a", get_fnp_name_ (fnpno), 380 comm_reg.crmem, dirname, ename); 381 go to not_done; 382 end; 383 384 /* Check .crldt for "reasonableness". */ 385 386 cur_time = clock (); 387 388 if comm_reg.crldt > cur_time 389 then do; /* give me a break! */ 390 call sys_log_$error_log (1, 0, me, "Invalid core image for FNP ^a (.crldt exceeds current time), ^a>^a", 391 get_fnp_name_ (fnpno), dirname, ename); 392 go to not_done; 393 end; 394 395 call decode_clock_value_ (cur_time, 0, 0, cur_year, 0, 0, ""); 396 call decode_clock_value_ (comm_reg.crldt, 0, 0, image_year, 0, 0, ""); 397 398 if image_year + max_image_age < cur_year 399 then do; 400 call sys_log_$error_log (1, 0, me, 401 "Invalid core image for FNP ^a (binding of image was done over ^d years ago), ^a>^a", 402 get_fnp_name_ (fnpno), max_image_age, dirname, ename); 403 go to not_done; 404 end; 405 406 /* Try chasing through module chain. */ 407 408 cur_chain = comm_reg.crmod; 409 410 if cur_chain ^= 0 411 then do i = 1 to 50 while (cur_chain > 0 & cur_chain < comm_reg.crmem); 412 413 if mem_array_fb.mem (cur_chain) = 0 414 then go to check_for_init; 415 cur_chain = mem_array_fb.mem (cur_chain); 416 end; 417 418 call sys_log_$error_log (1, 0, me, "Invalid core image for FNP ^a (bad module chain), ^a>^a", 419 get_fnp_name_ (fnpno), dirname, ename); 420 go to not_done; 421 422 check_for_init: 423 if i < min_modules 424 then do; 425 call sys_log_$error_log (1, 0, me, 426 "Invalid core image for FNP ^a (found only ^d modules, minimum required is ^d), ^a>^a", 427 get_fnp_name_ (fnpno), i, min_modules, dirname, ename); 428 go to not_done; 429 end; 430 431 if mem_array.mem (cur_chain + 1) ^= INIT1 | mem_array.mem (cur_chain + 2) ^= INIT2 432 then do; 433 call sys_log_$error_log (1, 0, me, 434 "Invalid core image for FNP ^a (init module is not last in the module chain), ^a>^a", 435 get_fnp_name_ (fnpno), dirname, ename); 436 go to not_done; 437 end; 438 439 /* 440* Check image memory size against CDT memory size. 441* If different, use minimum of the two and give a warning. 442**/ 443 444 i = (comm_reg.crmem + 1) / 1024; /* make it compatible to fnpe.memory */ 445 fnp_memory_size = min (fnpe.memory, i); /* can only use the minimum of the two */ 446 447 if fnpe.memory ^= i 448 then do; /* not fatal, but give a warning */ 449 call sys_log_$error_log (1, 0, me, 450 "Memory size of ^dK in image does not agree with^/^-memory size of ^dK in CDT for FNP ^a.^/^-Memory size of ^dK from ^[image^;CDT^] will be used." 451 , i, fnpe.memory, get_fnp_name_ (fnpno), fnp_memory_size, (fnpe.memory > i)); 452 comm_reg.crmem = fnp_memory_size * 1024 - 1; /* make sure image is set right */ 453 end; 454 455 if comm_reg.crmem = 262143 /* if whole 256K configured */ 456 then comm_reg.crmem = 261887; /* don't use last page */ 457 458 /* Now scan this configuration and patch the core image */ 459 460 itblp = make_ptr ((comm_reg.criom)); /* make a ptr to the iom table */ 461 462 /* LSLAs will be done first. */ 463 464 if fnp_memory_size < 64 /* if at all */ 465 then do; 466 467 /* Patch IOM table for each LSLA to indicate its existance */ 468 469 lsla_count = 0; /* init counter */ 470 do ano = 0 to 5; /* loop over all possible LSLAs */ 471 iom_ch = ano + first_lsla_ch; 472 473 if lsla_ch (ano) = 0 474 then do; /* we would like to use this one */ 475 lsla_count = lsla_count + 1; /* count it */ 476 if iom_table (iom_ch).dev_type ^= LSLA 477 then do; /* but it was not in image */ 478 call sys_log_ (1, "load_fnp_: Core image for FNP ^a will not support LSLA #^d; ^a>^a", 479 get_fnp_name_ (fnpno), ano, dirname, ename); 480 go to not_done; 481 end; 482 end; 483 else string (iom_table (iom_ch)) = "0"b;/* we dont want it, deconfigure in FNP */ 484 end; 485 comm_reg.crnls = lsla_count; 486 end; 487 else comm_reg.crnls = 0; 488 489 /* Now fill in actual LSLA table by slot */ 490 491 do ano = 0 to 5; /* loop over LSLA to fill slots */ 492 iom_ch = ano + first_lsla_ch; 493 494 if iom_table (iom_ch).dev_type = LSLA 495 then do; /* we are going to use this one */ 496 tblp = make_ptr (fixed (iom_table (iom_ch).table, 17)); 497 /* get ptr to LSLA table */ 498 slot = 1; /* T&D is zero */ 499 500 do i = 0 to 51; /* loop over possible channels */ 501 if lsla_array (ano, i).line_type ^= LINE_TELNET 502 then do; /* have this channel */ 503 504 nslots = slot_count (lsla_array (ano, i).baud_rate); 505 /* get number slots for it */ 506 sid = slot_id (lsla_array (ano, i).baud_rate); 507 /* and initial slot id */ 508 509 if ibm_type (addr (lsla_array (ano, i))) 510 then /* IBM code channel */ 511 lsla_table (slot).flags.ibm_code = "1"b; 512 /* mark it */ 513 514 do j = 1 to nslots; /* loop on slot count */ 515 lsla_table (slot).flags.slot_id = sid; 516 sid = bit (fixed (fixed (sid, 17) + 1, 3), 3); 517 slot = slot + 1; 518 end; 519 end; 520 end; 521 522 do i = slot to 52; /* fill rest of LSLA with null slots */ 523 lsla_table (i).flags.slot_id = "111"b; 524 end; 525 end; 526 end; 527 528 /* Process the HSLA information in the same way. */ 529 530 /* First find which HSLAs we want to use */ 531 532 hsla_count = 0; 533 do ano = 0 to 2; /* loop over HSLAs */ 534 iom_ch = ano + first_hsla_ch; 535 536 if hsla_ch (ano) = 0 537 then do; /* we want to use this one */ 538 hsla_count = hsla_count + 1; 539 if iom_table (iom_ch).dev_type ^= HSLA 540 then do; /* not in core image though */ 541 call sys_log_ (1, "load_fnp_: Core image for FNP ^a will not support HSLA #^d; ^a>^a", 542 get_fnp_name_ (fnpno), ano, dirname, ename); 543 go to not_done; 544 end; 545 end; 546 else string (iom_table (iom_ch)) = "0"b; /* we dont need this one */ 547 end; 548 comm_reg.crnhs = hsla_count; 549 550 /* Configure indivual HSLA subchannels */ 551 552 pcwp = addr (pcw); /* so based pcws will work */ 553 554 do ano = 0 to 2; 555 iom_ch = ano + first_hsla_ch; 556 557 if iom_table (iom_ch).dev_type = HSLA 558 then do; /* we will use this one */ 559 tblp = make_ptr (fixed (iom_table (iom_ch).table, 17)); 560 do i = 0 to 31; /* loop over subchannels */ 561 if hsla_array (ano, i).line_type ^= LINE_TELNET 562 then do; /* this subchannel wanted */ 563 564 if check_line_type (addr (hsla_array (ano, i))) 565 then do; /* SYNC line */ 566 hsla_table (i).flags.async = "0"b; 567 /* fill in HSLA table entry */ 568 569 hsla_table (i).flags.line_type = bit (fixed (hsla_array (ano, i).line_type, 5), 5); 570 hsla_table (i).flags.dev_speed = sync_speed (hsla_array (ano, i).baud_rate); 571 hsla_table (i).flags.modem_type = bit (fixed (hsla_array (ano, i).modem_type, 4), 4); 572 573 hsla_table (i).flags.private_line = hsla_array (ano, i).flags.pl; 574 575 call process_line_type ((hsla_array (ano, i).line_type)); 576 end; 577 578 else do; /* ASYNC line */ 579 hsla_table (i).flags.async = "1"b; 580 /* fill in HSLA table entry */ 581 hsla_table (i).flags.line_type = bit (fixed (hsla_array (ano, i).line_type, 5), 5); 582 hsla_table (i).flags.modem_type = bit (fixed (hsla_array (ano, i).modem_type, 4), 4); 583 if hsla_array (ano, i).flags.autobaud 584 then do; 585 hsla_array (ano, i).baud_rate = 4; 586 /* 300 baud */ 587 hsla_table (i).flags.option1 = "1"b; 588 end; 589 590 if hsla_array (ano, i).baud_rate > hbound (async_speed, 1) 591 then /* must be option baud */ 592 hsla_table (i).flags.dev_speed = option_async; 593 else hsla_table (i).flags.dev_speed = async_speed (hsla_array (ano, i).baud_rate); 594 595 pcw = async_pcw_model; /* build config PCW from model of async pcw */ 596 597 if ibm_type (addr (hsla_array (ano, i))) 598 then do; /* if IBM-code line then use */ 599 async_pcw.char_len = "1110"b; 600 /* 7 bit chars, 6 data 1 parity */ 601 async_pcw.rcv_parity = "0"b; 602 /* don't check parity */ 603 async_pcw.xmt_parity = "1"b; 604 /* but do set it */ 605 async_pcw.parity_odd = "1"b; 606 /* which is odd */ 607 end; 608 else async_pcw.char_len = "1111"b; 609 /* for regular chn, 8 bit char, 7 data 1 parity */ 610 611 async_pcw.subch = bit (fixed (i, 5), 5); 612 if hsla_array (ano, i).baud_rate = 1 613 then /* 110 baud gets two stop bits */ 614 async_pcw.two_stop = "1"b; 615 /* indicate speed in pcw bits for async channels */ 616 substr (async_pcw.speed, speed_bit (hsla_array (ano, i).baud_rate), 1) = "1"b; 617 618 if fnpe.type = DN6670 /* for 6670 only */ 619 then if substr (async_pcw.speed, 8, 1) 620 /* option baud rate is specified in PCW */ 621 then substr (async_pcw.speed, 1, 4) = 622 option_speed_code (hsla_array (ano, i).baud_rate); 623 end; 624 hsla_mailbox (ano).subchannel (i).config_pcw = pcw; 625 end; 626 end; 627 end; 628 end; 629 630 /* Process the check argument */ 631 632 if acksw 633 then comm_reg.crcon = "0"b; /* indicate that console I/O is enabled */ 634 else comm_reg.crcon = (17)"0"b || "1"b; /* else inhibit during bootload */ 635 636 comm_reg.crbdt = cur_time; /* set date and time of this bootload */ 637 638 comm_reg.crtdt = (17)"0"b || tandd_configured; /* indicate presence/absence of COLTS channel */ 639 640 /* Compute checksum on MCS */ 641 642 boot_comm_area.prog_cksum = load_fnp_util_$checksum (prog_ptr, prog_len); 643 644 /* Setup to fill in the boot dcw and MCS load dcws */ 645 646 boot_dcw.xfer_mode = "001"b; /* 36-bit direct */ 647 boot_dcw.fnp_addr = "0"b; /* first part is done by hphcs_$load_fnp */ 648 649 call hphcs_$wire_fnp (fnpno, boot_segp, seg_absadr, 1 + gicb_len + prog_len, code); 650 /* wire the seg */ 651 if code ^= 0 652 then do; /* some bad error has occured */ 653 call sys_log_$error_log (1, code, me, "Wiring memory for FNP ^a bootload.", get_fnp_name_ (fnpno)); 654 go to exit; 655 end; 656 wired = "1"b; /* remember we have done this */ 657 658 /* Fill in the load dcws in the boot_comm_area */ 659 660 seg_absadr_temp = seg_absadr + fixed (rel (prog_ptr), 17); 661 amt_left = prog_len; 662 663 more = "1"b; 664 do i = 1 to 4 while (more); /* loop until all dcw built */ 665 absadr_bits = bit (seg_absadr_temp, 24); 666 dcwp = addr (boot_comm_area.load_dcw (i)); 667 668 dcw.mult_addr_ex = substr (absadr_bits, 1, 6); 669 /* fill in address */ 670 dcw.mult_addr = substr (absadr_bits, 7, 18); 671 dcw.command = dia_cs_to_fnp; 672 673 /* FNP addresses are assembled into gicb */ 674 675 if amt_left > 4096 676 then do; 677 dcw.tally = "0"b; 678 amt_left = amt_left - 4096; 679 seg_absadr_temp = seg_absadr_temp + 4096; 680 end; 681 else do; 682 dcw.tally = bit (fixed (amt_left, 12), 12); 683 more = "0"b; /* done */ 684 end; 685 call load_fnp_util_$fnp_parity (dcwp); /* compute parity on dcw */ 686 call load_fnp_util_$fnp_parity (addrel (dcwp, 1)); 687 end; 688 689 if more 690 then do; /* we cant load this much into 32k */ 691 call sys_log_ (1, 692 "load_fnp_: Unable to load core image into FNP ^a. Core image ^a>^a will not fit in 32K.", 693 get_fnp_name_ (fnpno), dirname, ename); 694 go to not_done; 695 end; 696 697 dcwp = addr (boot_comm_area.load_dcw (i)); /* ptr to disconnect dcw */ 698 699 dcw.mult_addr_ex = "0"b; /* build disconnect dcw, the last dcw */ 700 dcw.mult_addr = "0"b; /* in the dcw list */ 701 dcw.command = dia_disconnect; 702 dcw.xfer_mode = "001"b; 703 dcw.fnp_addr = "0"b; 704 dcw.tally = "0"b; 705 706 call load_fnp_util_$fnp_parity (dcwp); /* compute parity on dcw */ 707 call load_fnp_util_$fnp_parity (addrel (dcwp, 1)); 708 709 boot_comm_area.list_icw.xfer_mode = "001"b; /* same for dia always */ 710 /* address is set during gicb assembly */ 711 boot_comm_area.list_icw.tally = bit (fixed (i * 2, 12), 12); 712 713 boot_comm_area.boot_cksum = load_fnp_util_$checksum (gicb_ptr, fixed (boot_dcw.tally, 17) - 2); 714 /* use boot_dcw.tally instead of gicb_len, since */ 715 /* gicb_len is rounded up to mod 64-1 */ 716 /* minus two because we dont include boot_cksum and dia channel */ 717 718 719 baud_info_size = max (1, chan_list.count); 720 begin; 721 722 dcl 1 load_info aligned, 723 2 count fixed bin, 724 2 entry (baud_info_size), 725 3 devx fixed bin, 726 3 baud fixed bin, 727 3 line_type fixed bin; 728 729 load_info.count = chan_list.count; 730 do i = 1 to chan_list.count; 731 cdtep = chan_list.cdte_ptr (i); 732 load_info.devx (i) = cdte.twx; 733 load_info.baud (i) = cdte.baud_rate; 734 load_info.line_type (i) = cdte.line_type; 735 end; 736 737 call hphcs_$load_fnp (fnpno, seg_absadr, fnpe.boot_ev_chan, comm_reg.crver, fnpe.coreimage, 738 fnp_memory_size, addr (load_info), code); 739 /* Here goes */ 740 end; 741 742 if code ^= 0 743 then do; 744 call sys_log_$error_log (1, code, me, "During FNP ^a bootload attempt.", get_fnp_name_ (fnpno)); 745 go to exit; 746 end; 747 748 fnpe.boot_segp = boot_segp; 749 return; 750 751 752 not_done: 753 code = error_table_$action_not_performed; 754 exit: 755 if wired 756 then call hphcs_$unwire_fnp (fnpno, dummy_code); 757 call release_temp_segment_ (me, boot_segp, dummy_code); 758 759 return; 760 761 abort: 762 entry (afnpno, acdtp, code); /* entry to stop a bootload attempt */ 763 764 fnpno = afnpno; 765 cdtp = acdtp; 766 fnpep = addr (cdt.fnp_entry (fnpno)); 767 boot_segp = fnpe.boot_segp; 768 code = 0; 769 wired = "1"b; 770 go to exit; 771 772 773 make_ptr: 774 proc (offset) returns (ptr); /* make ptr to FNP memory given offset */ 775 776 dcl offset fixed bin (17); 777 dcl mp_ptr ptr; 778 779 mp_ptr = addr (mem_array.mem (offset)); 780 return (mp_ptr); 781 782 end; 783 784 785 ibm_type: 786 proc (lptr) returns (bit (1) aligned); /* check for IBM-type terminals */ 787 788 dcl lptr ptr; 789 790 dcl 1 line aligned based (lptr), 791 2 line_type fixed bin (17) unal, 792 2 baud_rate fixed bin (17) unal; 793 794 if line.line_type = LINE_1050 | line.line_type = LINE_2741 | line.baud_rate = 2 795 then return ("1"b); 796 else return ("0"b); 797 798 end; 799 800 801 check_line_type: 802 proc (lptr) returns (bit (1) aligned); /* check if line is SYNC or ASYNC */ 803 804 dcl lptr ptr; 805 dcl li fixed bin; 806 807 dcl 1 line aligned based (lptr), 808 2 line_type fixed bin (17) unal, 809 2 baud_rate fixed bin (17) unal; 810 811 do li = 1 to n_sync_line_types; 812 if sync_line_type (li) = line.line_type 813 then return ("1"b); 814 end; 815 return ("0"b); 816 817 end; 818 819 820 baud_idx: 821 proc (rate) returns (fixed bin); /* get internal baud rate code */ 822 823 dcl rate fixed bin (17) unaligned; 824 dcl rix fixed bin; 825 826 do rix = 1 to hbound (baud_table, 1) while (rate ^= baud_table (rix)); 827 end; 828 return (rix); 829 830 end; 831 832 833 process_line_type: 834 proc (line_type); 835 836 dcl line_type fixed bin; 837 838 if line_type ^= LINE_BSC 839 then do; 840 pcw = sync_pcw_model; 841 sync_pcw.sync_char = sync_char; 842 end; 843 844 else do; 845 pcw = bsc_pcw_model; 846 if ^hsla_array (ano, i).flags.bsc_ebcdic 847 then do; /* ASCII code */ 848 bsc_pcw.cct_enable = "1"b; 849 if ^hsla_array (ano, i).flags.bsc_transparent 850 then do; 851 bsc_pcw.rcv_parity = "1"b; 852 bsc_pcw.xmt_parity = "1"b; 853 bsc_pcw.parity_odd = "1"b; 854 end; 855 end; 856 857 bsc_pcw.crc_type = "1"b; /* CRC-16 */ 858 bsc_pcw.ebcdic, hsla_table (i).flags.option1 = hsla_array (ano, i).flags.bsc_ebcdic; 859 bsc_pcw.transparent = hsla_array (ano, i).flags.bsc_transparent; 860 bsc_pcw.timers = "1"b; 861 end; 862 863 sync_pcw.subch = bit (fixed (i, 5), 5); 864 return; 865 866 end; 867 1 1 /* BEGIN INCLUDE FILE ... mcs_memory_map.incl.pl1 */ 1 2 1 3 /* This include file descibes MCS memory layout. 1 4* 1 5* Created 6/2/76 by Mike Grady 1 6* Modified 1979 June 1 by Art Beattie to add new cells in comm_reg. 1 7* Modified June 1982 by Robert Coren to add some more new cells in comm_reg and 1 8* change some of them to fixed bin (18) unsigned. 1 9**/ 1 10 1 11 dcl 1 mem_array aligned based (memp), /* as an array of 18 bit words */ 1 12 2 mem (0:65535) bit (18) unaligned; 1 13 1 14 1 15 dcl 1 low_mem aligned based (memp), /* detail of low memory */ 1 16 2 interrupt_vectors (0:255) bit (18) unal, /* loc 0-377 octal */ 1 17 2 interrupt_cells (16) bit (18) unal, /* loc 400-417 octal */ 1 18 2 iom_fault_status (16) bit (18) unal, /* loc 420-437 octal */ 1 19 2 processor_fault_vectors (8) bit (18) unal, /* loc 440-447 octal */ 1 20 2 chan_mailbox (24) bit (18) unal, /* loc 450-477 octal */ 1 21 2 lsla_mailbox (0:5) like hwcm, /* LSLA hardware comm regions, loc 500-637 octal */ 1 22 2 comm_reg unal, /* software communications region for MCS system */ 1 23 3 crldt fixed bin (71) aligned, /* date and time binder produced this image */ 1 24 3 crbdt fixed bin (71) aligned, /* date and time image was booted into FNP */ 1 25 3 crbuf fixed bin (17) unal, /* base of free buffer pool */ 1 26 3 crmem fixed bin (18) unsigned unal, /* last loc of mem configured */ 1 27 3 crnbf fixed bin (17) unal, /* free buffers in pool now */ 1 28 3 criom fixed bin (17) unal, /* pointer to iom table */ 1 29 3 crnhs fixed bin (17) unal, /* number of HSLAs */ 1 30 3 crnls fixed bin (17) unal, /* number of LSLAs */ 1 31 3 crcon bit (18) unal, /* console enable switch */ 1 32 3 crmod fixed bin (17) unal, /* base of module chain */ 1 33 3 crnxa fixed bin (17) unal, /* pointer to head of free space chain */ 1 34 3 crtra bit (18) unal, /* trace entry enable mask */ 1 35 3 crtrb fixed bin (18) unsigned unal, /* base of trace table */ 1 36 3 crtrc fixed bin (18) unsigned unal, /* next trace table entry pointer */ 1 37 3 crreg fixed bin (17) unal, /* pointer to fault reg storage area */ 1 38 3 crttb fixed bin (17) unal, /* pointer to tib table base */ 1 39 3 crtte fixed bin (17) unal, /* last addr in tib table */ 1 40 3 crdly fixed bin (17) unal, /* pointer to delay table chain */ 1 41 3 crver char (4) unal, /* mcs version number */ 1 42 3 crbrk fixed bin (17) unal, /* pointer to breakpoint control table */ 1 43 3 crtsw bit (18) unal, /* trace switch (zero=trace on) */ 1 44 3 crnxs fixed bin (17) unal, /* pointer to next free small block */ 1 45 3 crnbs fixed bin (17) unal, /* number of buffers devoted to small space */ 1 46 3 crcct fixed bin (17) unal, /* pointer to first cct descriptor */ 1 47 3 crskd fixed bin (17) unal, /* pointer to scheduler data block */ 1 48 3 cretb fixed bin (17) unal, /* pointer to list of echo-negotiation bit tables */ 1 49 3 crcpt fixed bin (17) unal, /* pointer to cpu page table */ 1 50 3 crpte fixed bin (17) unal, /* pointer to variable cpu page table entry */ 1 51 3 crtsz fixed bin (17) unal, /* size of trace data buffer */ 1 52 3 crmet bit (18) unal, /* metering enabled */ 1 53 3 crtdt bit (18) unal, /* 0 if no COLTS channel; set to TIB address if it exists */ 1 54 3 crbtm bit (18) unal, /* address of time meters for buffer allocation/freeing */ 1 55 3 crnxe fixed bin (18) unsigned unal, /* next available space in extended memory */ 1 56 3 crbpe fixed bin (17) unal, /* buffer paging window table entry */ 1 57 3 pad (39) bit (18) unal, 1 58 3 crcpr char (28) unal, /* image copyright notice */ 1 59 3 crash_location bit (18) unal, /* offset used for unresolved REF's */ 1 60 3 crash_opcode bit (18) unal, /* crash instruction */ 1 61 2 hsla_mailbox (0:2), /* loc 1000-3777 octal */ 1 62 3 subchannel (0:31) like hwcm; /* HSLA hardware comm regions */ 1 63 1 64 dcl 1 icw aligned based, /* Standard FNP Indirect Control Word */ 1 65 2 xfer_mode bit (3) unal, /* transfer mode, bit-36 for dia */ 1 66 2 fnp_addr bit (15) unal, /* address in fnp */ 1 67 2 pad bit (6) unal, /* padding, exhaust bit */ 1 68 2 tally bit (12) unal; 1 69 1 70 dcl 1 hwcm aligned based (hwcmp), /* Standard hardware comm region */ 1 71 2 ricw0 like icw, /* primary receive icw */ 1 72 2 ricw1 like icw, /* secondary receive icw */ 1 73 2 sicw0 like icw, /* primary send icw */ 1 74 2 sicw1 like icw, /* secondary send icw */ 1 75 2 baw bit (18) unal, /* base address word */ 1 76 2 sfcmp bit (18) unal, /* pointer to sfcm for this channel */ 1 77 2 mask_reg bit (36) unal, /* maskregister, subch 0 only */ 1 78 2 stat_icw like icw, /* status icw */ 1 79 2 config_pcw bit (36) unal; /* subchannel configuration */ 1 80 1 81 /* Tables used to describe the configuration of the FNP */ 1 82 1 83 dcl 1 iom_table (0: 15) unaligned based (itblp), /* FNP IOM table */ 1 84 2 flags, 1 85 3 mpx_chan bit (1) unal, /* multiplexed channel */ 1 86 3 pad bit (6) unal, 1 87 3 char_len bit (2) unal, 1 88 3 dev_type bit (5) unal, /* device type on this channel */ 1 89 3 dev_speed bit (4) unal, /* for those devices with speed (LSLA) */ 1 90 2 table bit (18) unal; /* pointer to secondary table for mpx_chan */ 1 91 1 92 dcl 1 lsla_table (0:52) based (tblp) unal, /* LSLA table, entry one per slot */ 1 93 2 flags, 1 94 3 pad1 bit (11) unal, 1 95 3 ibm_code bit (1) unal, /* if 6-bit odd parity */ 1 96 3 pad2 bit (3) unal, 1 97 3 slot_id bit (3) unal, /* slot type this slot */ 1 98 2 tib_addr fixed bin (17) unal; /* pointer to tib */ 1 99 1 100 dcl 1 hsla_table (0:31) based (tblp) unal, /* HSLA table, entry one per subchannel */ 1 101 2 flags, 1 102 3 conc_chan bit (1) unal, /* concentrator attached to this channnel */ 1 103 3 private_line bit (1) unal, /* indicates direct connect or pl modem for sync chan */ 1 104 3 async bit (1) unal, /* on if async channel */ 1 105 3 option1 bit (1) unal, /* three option specification bits */ 1 106 3 option2 bit (1) unal, 1 107 3 modem_type bit (4) unal, /* indicator of type of modem on this channel */ 1 108 3 line_type bit (5) unal, /* line type of this channel */ 1 109 3 dev_speed bit (4) unal, /* speed of this subchannel */ 1 110 2 tib_addr fixed bin (17) unal; /* addr of tib for this subchannel */ 1 111 1 112 dcl (memp, itblp, tblp, hwcmp) ptr; 1 113 1 114 dcl (DIA init ("00010"b), /* dev_type definitions */ 1 115 HSLA init ("00011"b), 1 116 LSLA init ("00100"b), 1 117 CONSOLE init ("00101"b), 1 118 PRINTER init ("00110"b)) bit (5) int static options (constant); 1 119 1 120 /* END INCLUDE FILE mcs_memory_map.incl.pl1 */ 868 2 1 /* BEGIN INCLUDE FILE ... baud_rates.incl.pl1 */ 2 2 2 3 /* Defines valid baud rate values for communications channels */ 2 4 2 5 /* Created by somebody a long time ago */ 2 6 /* Modified April 1982 by Robert Coren to add speeds above 9600 (up to 72000) */ 2 7 2 8 dcl baud_table (15) fixed bin int static options (constant) init 2 9 (110, 133, 150, 300, 600, 1200, 1800, 2400, 4800, 7200, 2 10 9600, 19200, 40800, 50000, 72000); 2 11 2 12 /* END INCLUDE FILE ... baud_rates.incl.pl1 */ 869 3 1 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 3 2 3 3 /* format: style3,idind25,indcomtxt */ 3 4 3 5 /* Channel Definition Table. 3 6* This table lists all of the hardware channels (ports) connected 3 7* to the system, and maintains the attributes of each one. 3 8* 3 9* PG 741230 3 10* Modified by Mike Grady 5/6/76 to add FNP info. 3 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 3 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 3 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 3 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 3 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 3 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 3 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 3 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 3 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 3 20* Modified August 1982 by E. N. Kittlitz for check_acs. 3 21* Modified January 1983 by Keith Loepere for generic_destination. 3 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 3 23* Modified 831216 by E. N. Kittlitz for required_access_class. 3 24* Modified 84-04-01 by BIM to finish communications AIM: 3 25* access class ranges, 3 26* access_control flags. 3 27**/ 3 28 3 29 3 30 /****^ HISTORY COMMENTS: 3 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 3 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 3 33* Add support for answering service to use IOCBs when tty_ cannot be 3 34* used to service login channels. 3 35* END HISTORY COMMENTS */ 3 36 3 37 3 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 3 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 3 40 3 41 dcl (cdtp, cdtep, fnpep, mpxep) 3 42 ptr; 3 43 3 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 3 45 2 author like author_dcl.author, /* standard header */ 3 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 3 47 2 current_size fixed bin, /* number of last cdte. */ 3 48 2 version fixed bin, 3 49 2 freep fixed bin, /* chain of free cdte's */ 3 50 2 n_cdtes fixed bin, /* number of used cdte's */ 3 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 3 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 3 53 2 cpu_in_dialup fixed bin (71), /* .. */ 3 54 2 pf_in_dialup fixed bin, /* .. */ 3 55 2 pp_in_dialup fixed bin, /* .. */ 3 56 2 entries_to_dialup fixed bin, /* .. */ 3 57 2 flags, 3 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 3 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 3 60 3 mux_mgr_system_init 3 61 bit (1) unal, /* mux mgr has loaded top-levels */ 3 62 3 pad1 bit (33) unal, 3 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 3 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 3 65 2 threads aligned like channel_threads, 3 66 /* root of non-fnp-top-level-multiplexers */ 3 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 3 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 3 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 3 70 3 71 3 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 3 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 3 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 3 75 2 pad1 bit (36) aligned, 3 76 2 name char (32), /* ASCII name of channel */ 3 77 2 access_class (2) bit (72) aligned, /* access class range */ 3 78 2 comment char (48), /* printable message about channel */ 3 79 2 charge_type fixed bin (17) unal, /* billing group */ 3 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 3 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 3 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 3 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 3 84 2 pad2 bit (18) unaligned, 3 85 2 answerback char (8), /* answerback string expected */ 3 86 2 initial_terminal_type 3 87 char (32) unal, /* as specified in the CMF */ 3 88 2 mpx_data unal, /* data used only for multiplexed channels */ 3 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 3 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 3 91 2 flags, 3 92 ( 3 attributes, 3 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 3 94 4 audit_access_error 3 95 bit (1), /* ON means ck that person auth is inside access class range */ 3 96 /* this implies that the access_class describes a range of 3 97* legitimate user auths. */ 3 98 4 hardwired bit (1), /* ON means it is */ 3 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 3 100 4 dont_read_answerback 3 101 bit (1), /* ON means don't try to read answerback */ 3 102 4 pada bit (4), 3 103 3 access_control unaligned, /* As below */ 3 104 4 dial_out bit (1), /* dialing user must be on ACS */ 3 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 3 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 3 107 4 login bit (1), /* logging in user must be on acs */ 3 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 3 109 4 pado bit (3), 3 110 3 options, 3 111 4 execute_initial_command 3 112 bit (1), /* ON means to do it */ 3 113 4 attached_by_operator 3 114 bit (1), /* ON means temporary attachment. */ 3 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 3 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 3 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 3 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 3 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 3 120 4 generic_destination_present 3 121 bit (1), /* ON means that the initial_command field contains 3 122* a generic destination to match on dial_out or priv attach */ 3 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 3 124 4 pado bit (9) 3 125 ) unaligned, 3 126 2 initial_command char (64), /* pseudo first input line */ 3 127 /**** The following variables represent dynamic control info, and 3 128* are used mostly by dialup_ and asu_ */ 3 129 2 event fixed bin (71), /* event call channel for channel events */ 3 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 3 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 3 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 3 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 3 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 3 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 3 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 3 137 /* 0 = dialup_, 1 = mc_tty_ */ 3 138 3 save_arg bit (1) unal, /* -save login arg given */ 3 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 3 140 3 detach_after_hangup 3 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 3 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 3 143 3 hold_arg bit (1) unal, /* -hold arg given */ 3 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 3 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 3 146 3 current_access_class_valid 3 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 3 148 3 pad bit (7) unal, 3 149 2 twx fixed bin, /* channel device index */ 3 150 2 state fixed bin, /* channel state */ 3 151 2 tty_id_code char (4), /* channel id (answerback) */ 3 152 2 current_terminal_type 3 153 char (32) unal, /* most recently-set terminal type */ 3 154 2 process ptr unal, /* ptr to ATE owning this channel */ 3 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 3 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 3 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 3 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 3 159* We do not yet define multi-class connections, but we will someday. */ 3 160 2 disconnected_ate_index 3 161 fixed bin (17) unal, /* index of ate of disconnected process */ 3 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 3 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 3 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 3 165 2 pad3 bit (14) unaligned, 3 166 /**** The following variables are kept for metering purposes. */ 3 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 3 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 3 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 3 170 2 dialup_time fixed bin (71), /* time of present dialup */ 3 171 2 disconnected_proc_command 3 172 fixed bin (12) unsigned unal, 3 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 3 174 2 disconnected_proc_number 3 175 fixed bin (12) unsigned unal, 3 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 3 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 3 178 /* number of disconnected processes that user has */ 3 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 3 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 3 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 3 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 3 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 3 184 /**** had the space. */ 3 185 2 threads aligned like channel_threads, 3 186 /**** The use name is that of the user who gave the dial or slave ****/ 3 187 /**** preaccess request. ****/ 3 188 2 user_name unaligned, 3 189 3 person char (20) unaligned, 3 190 3 project char (9) unaligned, 3 191 3 pad char (3) unaligned, /* no tag */ 3 192 2 iocbp ptr unaligned; /* 104 words */ 3 193 3 194 3 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 3 196* overlays initial_command field for slave and autocall lines */ 3 197 3 198 3 199 3 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 3 201 /* These variables are filled in from the CMF */ 3 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 3 203 2 memory fixed bin, /* amount of memory on this FNP */ 3 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 3 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 3 206 2 service_type fixed bin, /* service type */ 3 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 3 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 3 209 /**** The following are used during system operation to remember the state of the FNP */ 3 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 3 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 3 212 2 mpxe like mpxe, /* standard multiplexer data */ 3 213 2 threads aligned like channel_threads, 3 214 /* same mpx threads as channel */ 3 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 3 216 3 217 /* This structure describes the data necessary to control a multiplexer. 3 218* For FNP's., a copy appears in the fnpe. For communications lines, it 3 219* overlays the initial_command field in the cdte. */ 3 220 3 221 dcl 1 mpxe based (mpxep) aligned, 3 222 2 state fixed bin, /* current state, up, down, loading */ 3 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 3 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 3 225 2 n_bootloads fixed bin, /* count of load attempts */ 3 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 3 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 3 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 3 229 2 time_load_start fixed bin (71), /* time current load started */ 3 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 3 231 2 flags unal, 3 232 3 go bit (1), /* start MPX after it loads */ 3 233 3 listening bit (1), /* listen has been done on subchannels */ 3 234 3 check bit (1), /* loaded with check option */ 3 235 3 retry_load bit (1), /* reload if load fails */ 3 236 3 pad1 bit (32), 3 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 3 238 3 239 /* These threads define the tree of multiplexers in the cdt. */ 3 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 3 241 /* by alpha sort order of the channel name. Daughter points to the */ 3 242 /* first child of this node, if any. Daughter count is the number */ 3 243 /* of children, as a consistency check. Mother is a back pointer to */ 3 244 /* the parent, present in all the children, not just the first. */ 3 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 3 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 3 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 3 248 3 249 dcl 1 channel_threads aligned based, 3 250 2 next_sister fixed bin unaligned, 3 251 2 prev_sister fixed bin unaligned, 3 252 2 daughter fixed bin unaligned, 3 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 3 254 2 pad bit (18) unaligned, 3 255 2 daughter_count fixed bin unaligned; 3 256 3 257 /* Values for cdte.service_type field */ 3 258 3 259 dcl ( 3 260 ANS_SERVICE init (1), /* login or dial */ 3 261 FTP_SERVICE init (2), /* file transfer service */ 3 262 MC_SERVICE init (3), /* message coordinator */ 3 263 SLAVE_SERVICE init (4), /* special channel */ 3 264 DIAL_SERVICE init (5), /* transient state */ 3 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 3 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 3 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 3 268 ) fixed bin internal static options (constant); 3 269 3 270 /* Values for service type in both cdte and fnpe */ 3 271 3 272 dcl ( 3 273 INACTIVE init (7), /* not to be used, even though configured */ 3 274 ACTIVE init (1) 3 275 ) /* for FNP only, configured and to be used */ 3 276 fixed bin internal static options (constant); 3 277 3 278 /* Value for both cdte.in_use and fnpe.state */ 3 279 3 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 3 281 /* was not configured at Multics bootload time */ 3 282 3 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 3 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 3 285 3 286 /* Value for cdte.in_use */ 3 287 3 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 3 289 /* channel deleted by CDT installation */ 3 290 3 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 3 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 3 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 3 294 3 295 3 296 /* Values for mpxe.state field */ 3 297 3 298 dcl ( 3 299 FNP_FREE init (0), /* this fnpe is not used */ 3 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 3 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 3 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 3 303 FNP_UP init (4) /* FNP is up and running fine */ 3 304 ) fixed bin internal static options (constant); 3 305 3 306 dcl ( 3 307 MPX_FREE init (0), /* this mpxe is not used */ 3 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 3 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 3 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 3 311 MPX_UP init (4) /* MPX is up and running fine */ 3 312 ) fixed bin internal static options (constant); 3 313 4 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 4 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 4 8* Add data needed for the uncp multiplexer (DSA gateway) interface 4 9* implementation. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* Values for fnpe.type field */ 4 14 /* 4 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 4 16* Added in March 1982 - DN7100.fd. 4 17**/ 4 18 4 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 4 20 DN6600 init (2), /* a DataNet 6600 FNP */ 4 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 4 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 4 23 ) fixed bin internal static options (constant); 4 24 4 25 dcl fnp_types (4) char (8) int static options (constant) 4 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 4 27 4 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 4 29 init (355, 6600, 6670, 7100); 4 30 4 31 dcl supported_fnp (4) bit (1) int static options (constant) 4 32 init ("0"b, "0"b, "1"b, "1"b); 4 33 4 34 4 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 3 314 3 315 3 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 870 5 1 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 5 2 5 3 /* This include file declares the "author" substructure 5 4* in a form suitable for using the PL/I "like" attribute. 5 5* 5 6* Written 750304 by PG 5 7**/ 5 8 5 9 dcl 1 author_dcl aligned based, 6 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 6 2 6 3 /* the "author" items must always be the first ones in the table. The 6 4* module which moves the converted table to the System Control process 6 5* fills in these data items and assumes them to be at the head of the segment 6 6* regardless of the specific table's actual declaration. The variables 6 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 6 8* respectively. For tables installed in multiple processes, these 6 9* are to be used to lock out multiple installations. */ 6 10 6 11 /* Lock should be used as a modification lock. Since, in general, 6 12* entries may not be moved in system tables, even by installations, 6 13* it is sufficient for only installers and programs that change threads 6 14* to set or respect the lock. Simply updating data in an entry 6 15* requires no such protection. 6 16* 6 17* Last_install_time is used by readers of system tables to detect 6 18* installations or other serious modifications. By checking it before 6 19* and after copying a block of data, they can be protected against 6 20* modifications. 6 21* 6 22* Modules that set the lock should save proc_group_id, and then 6 23* put their group id there for the time they hold the lock. 6 24* if they do not actually install the, they should restore the group id. 6 25**/ 6 26 6 27 2 author aligned, /* validation data about table's author */ 6 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 6 29 3 lock bit (36), /* installation lock */ 6 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 6 31 3 update_authorization bit (1) unal, /* update only authorizations */ 6 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 6 33 3 pad bit (33) unaligned, 6 34 3 last_install_time fixed bin (71), 6 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 6 36 3 w_dir char (64), /* author's working directory */ 6 37 6 38 /* END INCLUDE FILE author.incl.pl1 */ 5 10 5 11 2 pad; 5 12 5 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 871 7 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 7 2 7 3 /* Written November 10 1975 by Paul Green */ 7 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 7 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 7 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 7 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 7 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 7 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 7 10 7 11 7 12 /****^ HISTORY COMMENTS: 7 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 7 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 15* Add a DSA line type. 7 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 7 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 18* Add HASP_OPR to identify HASP workstation consoles with login service. 7 19* END HISTORY COMMENTS */ 7 20 7 21 7 22 declare (LINE_MC initial (-2), 7 23 LINE_TELNET initial (-1), 7 24 LINE_UNKNOWN initial (0), 7 25 LINE_ASCII initial (1), 7 26 LINE_1050 initial (2), 7 27 LINE_2741 initial (3), 7 28 LINE_ARDS initial (4), 7 29 LINE_SYNCH initial (5), 7 30 LINE_G115 initial (6), 7 31 LINE_BSC initial (7), 7 32 LINE_ETX initial (8), 7 33 LINE_VIP initial (9), 7 34 LINE_ASYNC1 initial (10), 7 35 LINE_ASYNC2 initial (11), 7 36 LINE_ASYNC3 initial (12), 7 37 LINE_SYNC1 initial (13), 7 38 LINE_SYNC2 initial (14), 7 39 LINE_SYNC3 initial (15), 7 40 LINE_POLLED_VIP initial (16), 7 41 LINE_X25LAP initial (17), 7 42 LINE_HDLC initial (18), 7 43 LINE_COLTS initial (19), 7 44 LINE_DSA initial (20), 7 45 LINE_HASP_OPR initial (21) 7 46 ) fixed bin internal static options (constant); 7 47 7 48 dcl max_line_type fixed bin int static options (constant) init (21); 7 49 7 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 7 51 7 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 7 53 7 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 7 55 "MC", /* -2 */ 7 56 "TELNET", /* -1 */ 7 57 "none", /* 0 */ 7 58 "ASCII", /* 1 */ 7 59 "1050", /* 2 */ 7 60 "2741", /* 3 */ 7 61 "ARDS", /* 4 */ 7 62 "Sync", /* 5 */ 7 63 "G115", /* 6 */ 7 64 "BSC", /* 7 */ 7 65 "202ETX", /* 8 */ 7 66 "VIP", /* 9 */ 7 67 "ASYNC1", /* 10 */ 7 68 "ASYNC2", /* 11 */ 7 69 "ASYNC3", /* 12 */ 7 70 "SYNC1", /* 13 */ 7 71 "SYNC2", /* 14 */ 7 72 "SYNC3", /* 15 */ 7 73 "POLLED_VIP", /* 16 */ 7 74 "X25LAP", /* 17 */ 7 75 "HDLC", /* 18 */ 7 76 "COLTS", /* 19 */ 7 77 "DSA", /* 20 */ 7 78 "HASP_OPR"); /* 21 */ 7 79 7 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 872 873 874 /* BEGIN MESSAGE DOCUMENTATION 875* 876* Message: 877* load_fnp_: ERROR_MESSAGE. expand_pathname_ on IMAGE_PATH for FNP X. 878* 879* S: $info 880* 881* T: $run 882* 883* M: The CDT entry for FNP X specifies a bad path for its core image. 884* The FNP cannot be loaded. 885* 886* A: $inform_sa 887* 888* 889* Message: 890* load_fnp_: ERROR_MESSAGE. Locating IMAGE_PATH for FNP X. 891* 892* S: $info 893* 894* T: $run 895* 896* M: The system cannot locate the core image for FNP X. 897* The CDT entry for the FNP may be incorrect, or the copy of the MCS may have been deleted. 898* The FNP cannot be loaded. 899* 900* A: $inform_sa 901* 902* 903* Message: 904* load_fnp_: ERROR_MESSAGE. Creating boot segment in process directory for FNP X. 905* 906* S: $info 907* 908* T: $run 909* 910* M: Ths system was unable to create a temporary segment in the initializer's 911* process directory to hold core image for FNP X. 912* $err 913* The FNP cannot be loaded. 914* 915* A: $inform 916* 917* 918* Message: 919* load_fnp_: ERROR_MESSAGE. Getting FNP info for FNP X. 920* 921* S: $info 922* 923* T: $run 924* 925* M: The system could not obtain information about FNP X from the hardcore. 926* The CDT may disagree with the CONFIG deck. 927* The FNP cannot be loaded. 928* 929* A: $inform_sa 930* 931* 932* Message: 933* load_fnp_: Core image for FNP X will not support LSLA #N; 934* 935* S: $info 936* 937* T: $run 938* 939* M: The CDT specifies that a channel should be used, but the MCS core image 940* for FNP X does not contain support for the indicated LSLA. 941* Either the MCS core image or the CDT must be modified. 942* The FNP cannot be loaded. 943* 944* A: $inform_sa 945* 946* 947* Message: 948* load_fnp_: Core image for FNP X will not support HSLA #N; 949* 950* S: $info 951* 952* T: $run 953* 954* M: The CDT specifies that a channel should be used, but the MCS core image 955* for FNP X does not contain support for the indicated HSLA. 956* Either the MCS core image or the CDT must be modified. 957* The FNP cannot be loaded. 958* 959* A: $inform_sa 960* 961* 962* Message: 963* load_fnp_: ERROR_MESSAGE. Wiring memory for FNP X bootload. 964* 965* S: $info 966* 967* T: $run 968* 969* M: The system cannot wire down the process directory segment which will be used to boot FNP X. 970* $err 971* The FNP cannot be loaded. 972* 973* A: $inform 974* 975* 976* Message: 977* load_fnp_: Unable to load core image into FNP X. Core image will not fit in 32K. 978* 979* S: $info 980* 981* T: $run 982* 983* M: The MCS core image to be loaded into FNP X larger than 32K. 984* The MCS image is incorrectly constructed or damaged. 985* The FNP cannot be loaded. 986* 987* A: $inform 988* 989* 990* Message: 991* load_fnp_: ERROR_MESSAGE. During FNP X bootload attempt. 992* 993* S: $info 994* 995* T: $run 996* 997* M: An error occurred while sending the new core image to FNP X. 998* The FNP cannot be loaded. 999* 1000* A: $inform 1001* 1002* 1003* Message: 1004* load_fnp_: Memory size of MK in image does not agree with 1005* memory size of NK in CDT for FNP X. 1006* Memory size of from will be used. 1007* 1008* S: $info 1009* 1010* T: $run 1011* 1012* M: The memory size specified in the MCS core image does not match the memory size specified in the CDT. 1013* The memory size in the MCS core image that is loaded will be set to the minimum value. 1014* The FNP load attempt will continue. 1015* 1016* A: The memory size value in the MCS bind_fnp segment or CDT should be modified by site personnel. 1017* 1018* 1019* Message: 1020* load_fnp_: Invalid core image for FNP X (bad .crmem value of N in image), 1021* 1022* S: $info 1023* 1024* T: $run 1025* 1026* M: The value of .crmem should be 24575, 32767 or 65535 in a valid fnp core image. 1027* The MCS core image for FNP X will have to be modified. 1028* The FNP cannot be loaded. 1029* 1030* A: $inform 1031* 1032* 1033* Message: 1034* load_fnp_: Invalid core image for FNP X (.crldt exceeds current time), 1035* 1036* S: $info 1037* 1038* T: $run 1039* 1040* M: The creation date of the MCS core image for FNP X is past the current time. 1041* The MCS core image is probably damaged and will have to be recreated. 1042* The FNP cannot be loaded. 1043* 1044* A: $inform 1045* 1046* 1047* Message: 1048* load_fnp_: Invalid core image for FNP X (binding of image was done over N years ago), 1049* 1050* S: $info 1051* 1052* T: $run 1053* 1054* M: The creation date of the MCS core image for FNP X indicates the image is over N years old. 1055* The MCS core image is probably damaged and will have to be recreated. 1056* The FNP cannot be loaded. 1057* 1058* A: $inform 1059* 1060* 1061* Message: 1062* load_fnp_: Invalid core image for FNP X (bad module chain), 1063* 1064* S: $info 1065* 1066* T: $run 1067* 1068* M: An inconsistency was found in tracing through the module chain of the MCS core image for FNP X. 1069* The MCS core image is probably damaged and will have to be recreated. 1070* The FNP cannot be loaded. 1071* 1072* A: $inform 1073* 1074* 1075* Message: 1076* load_fnp_: Invalid core image for FNP X (found only N modules, minimum required is M), 1077* 1078* S: $info 1079* 1080* T: $run 1081* 1082* M: Only N program modules were found in the MCS core image for FNP X out of a minimum of M modules. 1083* The minimum number of modules is based on the number required to support the smallest FNP configuration. 1084* The MCS core image is probably damaged and will have to be recreated. 1085* The FNP cannot be loaded. 1086* 1087* A: $inform 1088* 1089* 1090* Message: 1091* load_fnp_: Invalid core image for FNP X (init module is not last in the module chain), 1092* 1093* S: $info 1094* 1095* T: $run 1096* 1097* M: In tracing through the module chain, the last module in the core image for 1098* FNP X was not found to be the init module. 1099* The init module has to be the last module in the module chain because the init module 1100* releases itself and the rest of memory for buffer space when it is finished executing. 1101* The MCS core image is probably damaged and will have to be recreated. 1102* The FNP cannot be loaded. 1103* 1104* A: $inform 1105* 1106* 1107* Message: 1108* load_fnp_: Invalid core image for FNP X (image length error), 1109* 1110* S: $info 1111* 1112* T: $run 1113* 1114* M: The bit count of the image was adjusted and did not compare with the image length found in the core image for FNP X. 1115* The first 36 bits of the image segment contains the image length set by bind_fnp_load_. 1116* The MCS core image is probably damaged and will have to be recreated. 1117* The FNP cannot be loaded. 1118* 1119* A: $inform 1120* 1121* 1122* END MESSAGE DOCUMENTATION */ 1123 1124 end load_fnp_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1536.0 load_fnp_.pl1 >special_ldd>install>MR12.2-1061>load_fnp_.pl1 868 1 09/03/82 1045.1 mcs_memory_map.incl.pl1 >ldd>include>mcs_memory_map.incl.pl1 869 2 05/28/82 1334.9 baud_rates.incl.pl1 >ldd>include>baud_rates.incl.pl1 870 3 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 3-314 4 07/19/88 1524.1 fnp_types.incl.pl1 >special_ldd>install>MR12.2-1061>fnp_types.incl.pl1 871 5 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 5-10 6 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 872 7 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.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. DN6670 constant fixed bin(17,0) initial dcl 4-19 ref 618 FNP_FREE constant fixed bin(17,0) initial dcl 3-298 ref 261 HSLA 005134 constant bit(5) initial packed unaligned dcl 1-114 ref 539 557 INIT1 005136 constant bit(18) initial packed unaligned dcl 100 ref 431 INIT2 005135 constant bit(18) initial packed unaligned dcl 101 ref 431 LINE_1050 constant fixed bin(17,0) initial dcl 7-22 ref 794 LINE_2741 constant fixed bin(17,0) initial dcl 7-22 ref 794 LINE_BSC constant fixed bin(17,0) initial dcl 7-22 ref 838 LINE_TELNET 005132 constant fixed bin(17,0) initial dcl 7-22 ref 501 561 LSLA 005133 constant bit(5) initial packed unaligned dcl 1-114 ref 476 494 a_chan_listp parameter pointer dcl 31 ref 12 253 absadr_bits 000230 automatic bit(24) packed unaligned dcl 126 set ref 665* 668 670 acdtp parameter pointer dcl 31 ref 12 250 761 765 acksw parameter bit(1) packed unaligned dcl 31 ref 12 632 addr builtin function dcl 248 ref 252 267 308 315 316 509 509 552 564 564 597 597 666 697 737 737 766 779 addrel builtin function dcl 248 ref 301 319 321 686 686 707 707 afnpno parameter fixed bin(17,0) dcl 31 ref 12 251 761 764 amt_left 000227 automatic fixed bin(17,0) dcl 125 set ref 661* 675 678* 678 682 ano 000213 automatic fixed bin(17,0) dcl 115 set ref 344* 349 350 351 354 357 358 359 360 361 362 363 364 365 470* 471 473 478* 491* 492 501 504 506 509 509* 533* 534 536 541* 554* 555 561 564 564 569 570 571 573 575 581 582 583 585 590 593 597 597 612 616 618 624* 846 849 858 859 async 0(02) based bit(1) array level 3 packed packed unaligned dcl 1-100 set ref 566* 579* async_pcw based structure level 1 dcl 174 async_pcw_model constant bit(18) initial packed unaligned dcl 94 ref 595 async_speed 000050 constant bit(4) initial array packed unaligned dcl 77 ref 590 593 author based structure level 2 dcl 5-9 author_dcl based structure level 1 dcl 5-9 autobaud 1(22) 000740 automatic bit(1) array level 3 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" set ref 365* 583 autobaud 50(23) based bit(1) level 4 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" ref 365 baud 2 000100 automatic fixed bin(17,0) array level 3 dcl 722 set ref 733* baud_info_size 000236 automatic fixed bin(17,0) dcl 130 set ref 719* 722 baud_rate 0(18) based fixed bin(17,0) level 2 in structure "line" packed packed unaligned dcl 790 in procedure "ibm_type" ref 794 baud_rate 33(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" set ref 351* 359* 733 baud_rate 0(18) 000250 automatic fixed bin(17,0) array level 2 in structure "lsla_array" packed packed unaligned dcl 141 in procedure "load_fnp_" set ref 351* 504 506 baud_rate 0(18) 000740 automatic fixed bin(17,0) array level 2 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" set ref 359* 570 585* 590 593 612 616 618 baud_table 000012 constant fixed bin(17,0) initial array dcl 2-8 ref 826 826 bcap 000172 automatic pointer dcl 111 set ref 319* 333 334 335 337 338 642 666 697 709 711 713 bit builtin function dcl 248 ref 334 335 516 569 571 581 582 611 665 682 711 863 boot_cksum 17 based bit(36) level 2 packed packed unaligned dcl 206 set ref 713* boot_comm_area based structure level 1 dcl 206 boot_dcw based structure level 2 dcl 201 boot_ev_chan 62 based fixed bin(71,0) level 2 dcl 3-200 set ref 737* boot_seg based structure level 1 dcl 201 boot_segp 60 based pointer level 2 in structure "fnpe" dcl 3-200 in procedure "load_fnp_" set ref 748* 767 boot_segp 000170 automatic pointer dcl 111 in procedure "load_fnp_" set ref 285* 294 308 315 316 318 646 647 649* 713 748 757* 767* bsc_ebcdic 1(19) 000740 automatic bit(1) array level 3 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" set ref 362* 846 858 bsc_ebcdic 50(20) based bit(1) level 4 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" ref 362 bsc_pcw based structure level 1 dcl 186 bsc_pcw_model constant bit(18) initial packed unaligned dcl 95 ref 845 bsc_transparent 50(21) based bit(1) level 4 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" ref 363 bsc_transparent 1(20) 000740 automatic bit(1) array level 3 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" set ref 363* 849 859 cct_enable 0(16) based bit(1) level 3 packed packed unaligned dcl 186 set ref 848* cdt based structure level 1 dcl 3-44 cdte based structure level 1 dcl 3-72 cdte_ptr 1 based pointer array level 2 packed packed unaligned dcl 239 ref 343 731 cdtep 001262 automatic pointer dcl 3-41 set ref 343* 344 350 351 358 359 360 361 362 363 364 365 731* 732 733 734 cdtp 001260 automatic pointer dcl 3-41 set ref 250* 252 765* 766 chan_list based structure level 1 dcl 239 chan_listp 000234 automatic pointer dcl 129 set ref 253* 342 343 719 729 730 731 channel_threads based structure level 1 dcl 3-249 char_len 0(02) based bit(4) level 3 packed packed unaligned dcl 174 set ref 599* 608* chno 000214 automatic fixed bin(17,0) dcl 115 set ref 344* 350 351 358 359 360 361 362 363 364 365 clock builtin function dcl 248 ref 386 code parameter fixed bin(35,0) dcl 31 set ref 12 263* 269* 271 273* 277* 280* 285* 286 288* 311* 325* 327 329* 649* 651 653* 737* 742 744* 752* 761 768* comm_reg 320 based structure level 2 unaligned dcl 1-15 command 0(30) based bit(6) level 2 packed packed unaligned dcl 221 set ref 671* 701* config_pcw 407 based bit(36) array level 4 packed packed unaligned dcl 1-15 set ref 624* copy_len 000231 automatic fixed bin(21,0) dcl 127 set ref 293* 294 296 300* 302 308 copy_words based fixed bin(35,0) array dcl 199 set ref 294* 294 308* 308 coreimage 6 based char(168) level 2 dcl 3-200 set ref 269 273* 737* count 000100 automatic fixed bin(17,0) level 2 in structure "load_info" dcl 722 in begin block on line 720 set ref 729* count based fixed bin(17,0) level 2 in structure "chan_list" dcl 239 in procedure "load_fnp_" ref 342 719 729 730 crbdt 322 based fixed bin(71,0) level 3 dcl 1-15 set ref 636* crc_type 0(24) based bit(1) level 2 packed packed unaligned dcl 186 set ref 857* crcon 327 based bit(18) level 3 packed packed unaligned dcl 1-15 set ref 632* 634* criom 325(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-15 ref 460 crldt 320 based fixed bin(71,0) level 3 dcl 1-15 set ref 388 396* crmem 324(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 1-15 set ref 376 376 376 378* 410 444 452* 455 455* crmod 327(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-15 ref 408 crnhs 326 based fixed bin(17,0) level 3 packed packed unaligned dcl 1-15 set ref 548* crnls 326(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 1-15 set ref 485* 487* crtdt 342(18) based bit(18) level 3 packed packed unaligned dcl 1-15 set ref 638* crver 334 based char(4) level 3 packed packed unaligned dcl 1-15 set ref 737* cur_chain 000240 automatic fixed bin(17,0) dcl 132 set ref 408* 410 410 410 413 415* 415 431 431 cur_time 000242 automatic fixed bin(71,0) dcl 133 set ref 386* 388 395* 636 cur_year 000244 automatic fixed bin(17,0) dcl 134 set ref 395* 398 dcw based structure level 1 dcl 221 dcwp 000176 automatic pointer dcl 111 set ref 666* 668 670 671 677 682 685* 686 686 697* 699 700 701 702 703 704 706* 707 707 decode_clock_value_ 000052 constant entry external dcl 47 ref 395 396 dev_speed 0(14) based bit(4) array level 3 packed packed unaligned dcl 1-100 set ref 570* 590* 593* dev_type 0(09) based bit(5) array level 3 packed packed unaligned dcl 1-83 set ref 476 494 539 557 devx 1 000100 automatic fixed bin(17,0) array level 3 dcl 722 set ref 732* dia_cs_to_fnp constant bit(6) initial packed unaligned dcl 82 ref 671 dia_disconnect constant bit(6) initial packed unaligned dcl 82 ref 701 dirname 000104 automatic char(168) packed unaligned dcl 108 set ref 269* 277* 280* 304* 378* 390* 400* 418* 425* 433* 478* 541* 691* divide builtin function dcl 248 ref 283 297 dummy_code 000232 automatic fixed bin(35,0) dcl 128 set ref 754* 757* ebcdic 0(27) based bit(1) level 2 packed packed unaligned dcl 186 set ref 858* emerg_cell 000167 automatic fixed bin(4,0) dcl 110 set ref 325* 335 emergency_cell 13(33) based bit(3) level 2 packed packed unaligned dcl 206 set ref 335* ename 000156 automatic char(32) packed unaligned dcl 108 set ref 269* 277* 280* 304* 378* 390* 400* 418* 425* 433* 478* 541* 691* entry 1 000100 automatic structure array level 2 dcl 722 error_table_$action_not_performed 000014 external static fixed bin(35,0) dcl 42 ref 752 error_table_$dev_nt_assnd 000012 external static fixed bin(35,0) dcl 41 ref 263 expand_pathname_ 000026 constant entry external dcl 47 ref 269 f18b based structure level 2 in structure "async_pcw" packed packed unaligned dcl 174 in procedure "load_fnp_" f18b based structure level 2 in structure "sync_pcw" packed packed unaligned dcl 181 in procedure "load_fnp_" f18b based structure level 2 in structure "bsc_pcw" packed packed unaligned dcl 186 in procedure "load_fnp_" fb35 based fixed bin(35,0) dcl 198 ref 293 300 first_hsla_ch constant fixed bin(17,0) initial dcl 73 ref 534 555 first_lsla_ch constant fixed bin(17,0) initial dcl 72 ref 471 492 fixed builtin function dcl 248 ref 318 334 335 496 496 516 516 559 559 569 571 581 582 611 660 682 711 713 863 flags 50 based structure level 2 in structure "cdte" dcl 3-72 in procedure "load_fnp_" flags based structure array level 2 in structure "lsla_table" packed packed unaligned dcl 1-92 in procedure "load_fnp_" flags based structure array level 2 in structure "hsla_table" packed packed unaligned dcl 1-100 in procedure "load_fnp_" flags based structure array level 2 in structure "iom_table" packed packed unaligned dcl 1-83 in procedure "load_fnp_" flags 1(18) 000740 automatic structure array level 2 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" fno 000212 automatic fixed bin(17,0) dcl 115 set ref 344* fnp_addr 0(03) based bit(15) level 3 in structure "boot_seg" packed packed unaligned dcl 201 in procedure "load_fnp_" set ref 647* fnp_addr 1(03) based bit(15) level 2 in structure "dcw" packed packed unaligned dcl 221 in procedure "load_fnp_" set ref 703* fnp_entry 120 based structure array level 2 dcl 3-44 set ref 252 766 fnp_memory_size 000237 automatic fixed bin(17,0) dcl 131 set ref 445* 449* 452 464 737* fnp_prog based bit(36) array level 2 dcl 201 set ref 308 316 fnpe based structure level 1 dcl 3-200 fnpep 001264 automatic pointer dcl 3-41 set ref 252* 261 269 273 445 447 449 449 618 737 737 748 766* 767 fnpno 000207 automatic fixed bin(17,0) dcl 115 set ref 251* 252 273* 273* 280* 280* 288* 288* 304* 304* 325* 329* 329* 378* 378* 390* 390* 400* 400* 418* 418* 425* 425* 433* 433* 449* 449* 478* 478* 541* 541* 649* 653* 653* 691* 691* 737* 744* 744* 754* 764* 766 get_fnp_name_ 000016 constant entry external dcl 46 ref 273 273 280 280 288 288 304 304 329 329 378 378 390 390 400 400 418 418 425 425 433 433 449 449 478 478 541 541 653 653 691 691 744 744 get_temp_segment_ 000032 constant entry external dcl 47 ref 285 gicb 1 based bit(36) array level 2 dcl 201 set ref 315 gicb$ 000010 external static fixed bin(17,0) dcl 39 set ref 267 gicb_len 000202 automatic fixed bin(17,0) dcl 112 set ref 296* 297* 297 308 316 649 gicb_ptr 000100 automatic pointer dcl 107 set ref 267* 293 294 315* 319 713* hbound builtin function dcl 248 ref 590 826 hcs_$initiate_count 000020 constant entry external dcl 47 ref 277 hcs_$terminate_noname 000042 constant entry external dcl 47 ref 311 high 15(18) based bit(18) level 3 in structure "boot_comm_area" packed packed unaligned dcl 206 in procedure "load_fnp_" set ref 338* high 0(18) based bit(18) level 2 in structure "prog_limits" packed packed unaligned dcl 233 in procedure "load_fnp_" ref 338 hphcs_$load_fnp 000050 constant entry external dcl 47 ref 737 hphcs_$unwire_fnp 000046 constant entry external dcl 47 ref 754 hphcs_$wire_fnp 000044 constant entry external dcl 47 ref 649 hsla_array 000740 automatic structure array level 1 dcl 145 set ref 564 564 597 597 hsla_ch 001246 automatic fixed bin(17,0) array dcl 158 set ref 258* 357* 536 hsla_count 000221 automatic fixed bin(17,0) dcl 119 set ref 532* 538* 538 548 hsla_mailbox 400 based structure array level 2 dcl 1-15 hsla_table based structure array level 1 packed packed unaligned dcl 1-100 hwcm based structure level 1 dcl 1-70 i 000210 automatic fixed bin(17,0) dcl 115 set ref 342* 343* 410* 422 425* 444* 445 447 449* 449 500* 501 504 506 509 509* 522* 523* 560* 561 564 564 566 569 569 570 570 571 571 573 573 575 579 581 581 582 582 583 585 587 590 590 593 593 597 597 611 612 616 618 624* 664* 666* 697 711 730* 731 732 733 734* 846 849 858 858 859 863 ibm_code 0(11) based bit(1) array level 3 packed packed unaligned dcl 1-92 set ref 509* icw based structure level 1 dcl 1-64 image_len 000246 automatic fixed bin(24,0) dcl 136 set ref 277* 283* 283 302 image_year 000245 automatic fixed bin(17,0) dcl 135 set ref 396* 398 iom_ch 000222 automatic fixed bin(17,0) dcl 120 set ref 471* 476 483 492* 494 496 496 534* 539 546 555* 557 559 559 iom_table based structure array level 1 packed packed unaligned dcl 1-83 set ref 483* 546* itblp 001254 automatic pointer dcl 1-112 set ref 460* 476 483 494 496 496 539 546 557 559 559 j 000211 automatic fixed bin(17,0) dcl 115 set ref 514* li 001320 automatic fixed bin(17,0) dcl 805 set ref 811* 812* line based structure level 1 dcl 807 in procedure "check_line_type" line based structure level 1 dcl 790 in procedure "ibm_type" line_type 0(09) based bit(5) array level 3 in structure "hsla_table" packed packed unaligned dcl 1-100 in procedure "load_fnp_" set ref 569* 581* line_type 000740 automatic fixed bin(17,0) array level 2 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" set ref 256* 358* 561 569 575 581 line_type 3 000100 automatic fixed bin(17,0) array level 3 in structure "load_info" dcl 722 in begin block on line 720 set ref 734* line_type 33 based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" ref 350 358 734 line_type 000250 automatic fixed bin(17,0) array level 2 in structure "lsla_array" packed packed unaligned dcl 141 in procedure "load_fnp_" set ref 255* 350* 501 line_type parameter fixed bin(17,0) dcl 836 in procedure "process_line_type" ref 833 838 line_type based fixed bin(17,0) level 2 in structure "line" packed packed unaligned dcl 790 in procedure "ibm_type" ref 794 794 line_type based fixed bin(17,0) level 2 in structure "line" packed packed unaligned dcl 807 in procedure "check_line_type" ref 812 list_icw based structure level 2 dcl 206 load_dcw 1 based structure array level 2 dcl 206 set ref 666 697 load_fnp_util_$checksum 000034 constant entry external dcl 47 ref 642 713 load_fnp_util_$fnp_parity 000036 constant entry external dcl 47 ref 685 686 706 707 load_info 000100 automatic structure level 1 dcl 722 set ref 737 737 load_limits 15 based structure level 2 packed packed unaligned dcl 206 low 15 based bit(18) level 3 in structure "boot_comm_area" packed packed unaligned dcl 206 in procedure "load_fnp_" set ref 337* low based bit(18) level 2 in structure "prog_limits" packed packed unaligned dcl 233 in procedure "load_fnp_" ref 337 low_mem based structure level 1 dcl 1-15 lptr parameter pointer dcl 788 in procedure "ibm_type" ref 785 794 794 794 lptr parameter pointer dcl 804 in procedure "check_line_type" ref 801 812 lsla_array 000250 automatic structure array level 1 dcl 141 set ref 509 509 lsla_ch 001240 automatic fixed bin(17,0) array dcl 157 set ref 257* 349* 473 lsla_count 000220 automatic fixed bin(17,0) dcl 119 set ref 469* 475* 475 485 lsla_table based structure array level 1 packed packed unaligned dcl 1-92 max builtin function dcl 248 ref 719 max_image_age 000116 constant fixed bin(17,0) initial dcl 103 set ref 398 400* mbx_absadr 000205 automatic fixed bin(24,0) dcl 114 set ref 325* 333 mbx_addr 13 based fixed bin(17,0) level 2 packed packed unaligned dcl 206 set ref 333* me 000061 constant char(9) initial packed unaligned dcl 67 set ref 273* 280* 285* 288* 304* 329* 378* 390* 400* 418* 425* 433* 449* 653* 744* 757* mem based fixed bin(17,0) array level 2 in structure "mem_array_fb" packed packed unaligned dcl 243 in procedure "load_fnp_" ref 413 415 mem based bit(18) array level 2 in structure "mem_array" packed packed unaligned dcl 1-11 in procedure "load_fnp_" set ref 431 431 779 mem_array based structure level 1 dcl 1-11 mem_array_fb based structure level 1 dcl 243 memory 1 based fixed bin(17,0) level 2 dcl 3-200 set ref 445 447 449* 449 memp 001252 automatic pointer dcl 1-112 set ref 370* 376 376 376 378 388 396 408 410 413 415 431 431 444 452 455 455 460 485 487 548 624 632 634 636 638 737 779 min builtin function dcl 248 ref 445 min_modules 000100 constant fixed bin(17,0) initial dcl 102 set ref 422 425* modem_type 1 000740 automatic fixed bin(17,0) array level 2 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" set ref 360* 571 582 modem_type 0(05) based bit(4) array level 3 in structure "hsla_table" packed packed unaligned dcl 1-100 in procedure "load_fnp_" set ref 571* 582* modem_type 34 based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" ref 360 more 000216 automatic bit(1) packed unaligned dcl 118 set ref 663* 664 683* 689 mp_ptr 001302 automatic pointer dcl 777 set ref 779* 780 mpxe 64 based structure level 2 in structure "fnpe" dcl 3-200 in procedure "load_fnp_" mpxe based structure level 1 dcl 3-221 in procedure "load_fnp_" mult_addr based bit(18) level 2 packed packed unaligned dcl 221 set ref 670* 700* mult_addr_ex 0(24) based bit(6) level 2 packed packed unaligned dcl 221 set ref 668* 699* n_sync_line_types constant fixed bin(17,0) initial dcl 7-50 ref 811 name 2 based char(32) level 2 dcl 3-72 set ref 344* nslots 000224 automatic fixed bin(17,0) dcl 122 set ref 504* 514 null builtin function dcl 248 ref 278 offset parameter fixed bin(17,0) dcl 776 in procedure "make_ptr" ref 773 779 offset 000204 automatic fixed bin(21,0) dcl 113 in procedure "load_fnp_" set ref 318* 319 option1 0(03) based bit(1) array level 3 packed packed unaligned dcl 1-100 set ref 587* 858* option_async 005137 constant bit(4) initial packed unaligned dcl 80 ref 590 option_speed_code 000032 constant bit(4) initial array packed unaligned dcl 89 ref 618 options 50(17) based structure level 3 packed packed unaligned dcl 3-72 parity_odd 0(14) based bit(1) level 3 in structure "async_pcw" packed packed unaligned dcl 174 in procedure "load_fnp_" set ref 605* parity_odd 0(14) based bit(1) level 3 in structure "bsc_pcw" packed packed unaligned dcl 186 in procedure "load_fnp_" set ref 853* parse_tty_name_ 000040 constant entry external dcl 47 ref 344 pcw 001251 automatic bit(36) dcl 160 set ref 552 595* 624 840* 845* pcw_f18b based structure level 1 packed packed unaligned dcl 162 pcwp 000200 automatic pointer dcl 111 set ref 552* 599 601 603 605 608 611 612 616 618 618 841 848 851 852 853 857 858 859 860 863 phcs_$fnp_info 000030 constant entry external dcl 47 ref 325 pl 1(18) 000740 automatic bit(1) array level 3 packed packed unaligned dcl 145 set ref 361* 573 plp 000174 automatic pointer dcl 111 set ref 321* 337 338 private_line 0(01) based bit(1) array level 3 in structure "hsla_table" packed packed unaligned dcl 1-100 in procedure "load_fnp_" set ref 573* private_line 50(19) based bit(1) level 4 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" ref 361 prog_cksum 16 based bit(36) level 2 packed packed unaligned dcl 206 set ref 642* prog_len 000203 automatic fixed bin(17,0) dcl 112 set ref 300* 321 642* 649 661 prog_limits based structure level 1 dcl 233 prog_ptr 000102 automatic pointer dcl 107 set ref 277* 278 300 301* 301 308 311* 316* 321 370 642* 660 rate parameter fixed bin(17,0) packed unaligned dcl 823 ref 820 826 rcv_parity 0(12) based bit(1) level 3 in structure "bsc_pcw" packed packed unaligned dcl 186 in procedure "load_fnp_" set ref 851* rcv_parity 0(12) based bit(1) level 3 in structure "async_pcw" packed packed unaligned dcl 174 in procedure "load_fnp_" set ref 601* rel builtin function dcl 248 ref 660 release_temp_segment_ 000054 constant entry external dcl 47 ref 757 rix 001330 automatic fixed bin(17,0) dcl 824 set ref 826* 826* 828 seg_absadr 000206 automatic fixed bin(24,0) dcl 114 set ref 649* 660 737* seg_absadr_temp 000226 automatic fixed bin(24,0) dcl 124 set ref 660* 665 679* 679 sid 000225 automatic bit(3) packed unaligned dcl 123 set ref 506* 515 516* 516 slot 000223 automatic fixed bin(17,0) dcl 121 set ref 498* 509 515 517* 517 522 slot_count 000055 constant fixed bin(17,0) initial array dcl 69 ref 504 slot_id 000054 constant bit(3) initial array packed unaligned dcl 70 in procedure "load_fnp_" ref 506 slot_id 0(15) based bit(3) array level 3 in structure "lsla_table" packed packed unaligned dcl 1-92 in procedure "load_fnp_" set ref 515* 523* speed 0(28) based bit(8) level 2 packed packed unaligned dcl 174 set ref 616* 618 618* speed_bit 000034 constant fixed bin(17,0) initial array dcl 87 ref 616 state 64 based fixed bin(17,0) level 3 dcl 3-200 ref 261 string builtin function dcl 248 set ref 483* 546* subch 0(07) based bit(5) level 3 in structure "sync_pcw" packed packed unaligned dcl 181 in procedure "load_fnp_" set ref 863* subch 0(07) based bit(5) level 3 in structure "async_pcw" packed packed unaligned dcl 174 in procedure "load_fnp_" set ref 611* subchannel 400 based structure array level 3 dcl 1-15 substr builtin function dcl 248 set ref 616* 618 618* 668 670 sync_char constant bit(8) initial packed unaligned dcl 97 in procedure "load_fnp_" ref 841 sync_char 0(28) based bit(8) level 2 in structure "sync_pcw" packed packed unaligned dcl 181 in procedure "load_fnp_" set ref 841* sync_line_type 000000 constant fixed bin(17,0) initial array dcl 7-52 ref 812 sync_pcw based structure level 1 dcl 181 sync_pcw_model constant bit(18) initial packed unaligned dcl 93 ref 840 sync_speed 000052 constant bit(4) initial array packed unaligned dcl 75 ref 570 sys_log_ 000022 constant entry external dcl 47 ref 478 541 691 sys_log_$error_log 000024 constant entry external dcl 47 ref 273 280 288 304 329 378 390 400 418 425 433 449 653 744 table 0(18) based bit(18) array level 2 packed packed unaligned dcl 1-83 set ref 496 496 559 559 tally 0(24) based bit(12) level 3 in structure "boot_seg" packed packed unaligned dcl 201 in procedure "load_fnp_" ref 318 713 tally 0(24) based bit(12) level 3 in structure "boot_comm_area" packed packed unaligned dcl 206 in procedure "load_fnp_" set ref 711* tally 1(24) based bit(12) level 2 in structure "dcw" packed packed unaligned dcl 221 in procedure "load_fnp_" set ref 677* 682* 704* tandd_configured 000247 automatic bit(1) packed unaligned dcl 137 set ref 259* 354* 638 tblp 001256 automatic pointer dcl 1-112 set ref 496* 509 515 523 559* 566 569 570 571 573 579 581 582 587 590 593 858 term_cell 13(30) based bit(3) level 2 in structure "boot_comm_area" packed packed unaligned dcl 206 in procedure "load_fnp_" set ref 334* term_cell 000166 automatic fixed bin(4,0) dcl 110 in procedure "load_fnp_" set ref 325* 334 timers 0(29) based bit(1) level 2 packed packed unaligned dcl 186 set ref 860* transparent 0(28) based bit(1) level 2 packed packed unaligned dcl 186 set ref 859* two_stop 0(24) based bit(1) level 2 packed packed unaligned dcl 174 set ref 612* twx 76 based fixed bin(17,0) level 2 dcl 3-72 ref 732 type 000217 automatic bit(1) packed unaligned dcl 118 in procedure "load_fnp_" set ref 344* 347 type based fixed bin(17,0) level 2 in structure "fnpe" dcl 3-200 in procedure "load_fnp_" ref 618 vip_pollselect 50(22) based bit(1) level 4 in structure "cdte" packed packed unaligned dcl 3-72 in procedure "load_fnp_" ref 364 vip_pollselect 1(21) 000740 automatic bit(1) array level 3 in structure "hsla_array" packed packed unaligned dcl 145 in procedure "load_fnp_" set ref 364* wired 000215 automatic bit(1) packed unaligned dcl 118 set ref 656* 754 769* xfer_mode 1 based bit(3) level 2 in structure "dcw" packed packed unaligned dcl 221 in procedure "load_fnp_" set ref 702* xfer_mode based bit(3) level 3 in structure "boot_seg" packed packed unaligned dcl 201 in procedure "load_fnp_" set ref 646* xfer_mode based bit(3) level 3 in structure "boot_comm_area" packed packed unaligned dcl 206 in procedure "load_fnp_" set ref 709* xmt_parity 0(13) based bit(1) level 3 in structure "async_pcw" packed packed unaligned dcl 174 in procedure "load_fnp_" set ref 603* xmt_parity 0(13) based bit(1) level 3 in structure "bsc_pcw" packed packed unaligned dcl 186 in procedure "load_fnp_" set ref 852* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTIVE internal static fixed bin(17,0) initial dcl 3-272 ANS_SERVICE internal static fixed bin(17,0) initial dcl 3-259 CDT_version internal static fixed bin(17,0) initial dcl 3-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 3-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 3-288 CONSOLE internal static bit(5) initial packed unaligned dcl 1-114 DIA internal static bit(5) initial packed unaligned dcl 1-114 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 3-259 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 3-259 DN355 internal static fixed bin(17,0) initial dcl 4-19 DN6600 internal static fixed bin(17,0) initial dcl 4-19 DN7100 internal static fixed bin(17,0) initial dcl 4-19 FNP_BOOT internal static fixed bin(17,0) initial dcl 3-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 3-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 3-298 FNP_UP internal static fixed bin(17,0) initial dcl 3-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 3-259 INACTIVE internal static fixed bin(17,0) initial dcl 3-272 LINE_ARDS internal static fixed bin(17,0) initial dcl 7-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 7-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 7-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 7-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 7-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 7-22 LINE_DSA internal static fixed bin(17,0) initial dcl 7-22 LINE_ETX internal static fixed bin(17,0) initial dcl 7-22 LINE_G115 internal static fixed bin(17,0) initial dcl 7-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 7-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 7-22 LINE_MC internal static fixed bin(17,0) initial dcl 7-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 7-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 7-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 7-22 LINE_VIP internal static fixed bin(17,0) initial dcl 7-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 7-22 MC_SERVICE internal static fixed bin(17,0) initial dcl 3-259 MPX_BOOT internal static fixed bin(17,0) initial dcl 3-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 3-306 MPX_FREE internal static fixed bin(17,0) initial dcl 3-306 MPX_SERVICE internal static fixed bin(17,0) initial dcl 3-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 3-306 MPX_UP internal static fixed bin(17,0) initial dcl 3-306 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 3-280 PRINTER internal static bit(5) initial packed unaligned dcl 1-114 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 3-259 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 3-259 fnp_models internal static fixed bin(17,0) initial array dcl 4-28 fnp_types internal static char(8) initial array packed unaligned dcl 4-25 generic_destination based char(32) packed unaligned dcl 3-195 hwcmp automatic pointer dcl 1-112 line_types internal static char(16) initial array packed unaligned dcl 7-54 max_line_type internal static fixed bin(17,0) initial dcl 7-48 mpxep automatic pointer dcl 3-41 supported_fnp internal static bit(1) initial array packed unaligned dcl 4-31 NAMES DECLARED BY EXPLICIT CONTEXT. abort 004620 constant entry external dcl 761 baud_idx 004736 constant entry internal dcl 820 ref 351 359 check_for_init 002441 constant label dcl 422 ref 413 check_line_type 004705 constant entry internal dcl 801 ref 564 exit 004557 constant label dcl 754 ref 330 654 745 770 ibm_type 004661 constant entry internal dcl 785 ref 509 597 load_fnp_ 000560 constant entry external dcl 12 make_ptr 004647 constant entry internal dcl 773 ref 460 496 559 not_done 004554 constant label dcl 752 ref 306 381 392 403 420 428 436 480 543 694 process_line_type 004765 constant entry internal dcl 833 ref 575 NAME DECLARED BY CONTEXT OR IMPLICATION. mod builtin function ref 376 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5414 5472 5142 5424 Length 6056 5142 56 347 252 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME load_fnp_ 875 external procedure is an external procedure. begin block on line 720 90 begin block uses auto adjustable storage. make_ptr internal procedure shares stack frame of external procedure load_fnp_. ibm_type internal procedure shares stack frame of external procedure load_fnp_. check_line_type internal procedure shares stack frame of external procedure load_fnp_. baud_idx internal procedure shares stack frame of external procedure load_fnp_. process_line_type internal procedure shares stack frame of external procedure load_fnp_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 720 000100 load_info begin block on line 720 load_fnp_ 000100 gicb_ptr load_fnp_ 000102 prog_ptr load_fnp_ 000104 dirname load_fnp_ 000156 ename load_fnp_ 000166 term_cell load_fnp_ 000167 emerg_cell load_fnp_ 000170 boot_segp load_fnp_ 000172 bcap load_fnp_ 000174 plp load_fnp_ 000176 dcwp load_fnp_ 000200 pcwp load_fnp_ 000202 gicb_len load_fnp_ 000203 prog_len load_fnp_ 000204 offset load_fnp_ 000205 mbx_absadr load_fnp_ 000206 seg_absadr load_fnp_ 000207 fnpno load_fnp_ 000210 i load_fnp_ 000211 j load_fnp_ 000212 fno load_fnp_ 000213 ano load_fnp_ 000214 chno load_fnp_ 000215 wired load_fnp_ 000216 more load_fnp_ 000217 type load_fnp_ 000220 lsla_count load_fnp_ 000221 hsla_count load_fnp_ 000222 iom_ch load_fnp_ 000223 slot load_fnp_ 000224 nslots load_fnp_ 000225 sid load_fnp_ 000226 seg_absadr_temp load_fnp_ 000227 amt_left load_fnp_ 000230 absadr_bits load_fnp_ 000231 copy_len load_fnp_ 000232 dummy_code load_fnp_ 000234 chan_listp load_fnp_ 000236 baud_info_size load_fnp_ 000237 fnp_memory_size load_fnp_ 000240 cur_chain load_fnp_ 000242 cur_time load_fnp_ 000244 cur_year load_fnp_ 000245 image_year load_fnp_ 000246 image_len load_fnp_ 000247 tandd_configured load_fnp_ 000250 lsla_array load_fnp_ 000740 hsla_array load_fnp_ 001240 lsla_ch load_fnp_ 001246 hsla_ch load_fnp_ 001251 pcw load_fnp_ 001252 memp load_fnp_ 001254 itblp load_fnp_ 001256 tblp load_fnp_ 001260 cdtp load_fnp_ 001262 cdtep load_fnp_ 001264 fnpep load_fnp_ 001302 mp_ptr make_ptr 001320 li check_line_type 001330 rix baud_idx THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a enter_begin_block leave_begin_block call_ext_out_desc call_ext_out return_mac alloc_auto_adj mdfx1 ext_entry trunc_fx2 divide_fx1 clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. decode_clock_value_ expand_pathname_ get_fnp_name_ get_temp_segment_ hcs_$initiate_count hcs_$terminate_noname hphcs_$load_fnp hphcs_$unwire_fnp hphcs_$wire_fnp load_fnp_util_$checksum load_fnp_util_$fnp_parity parse_tty_name_ phcs_$fnp_info release_temp_segment_ sys_log_ sys_log_$error_log THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$dev_nt_assnd gicb$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000553 250 000570 251 000573 252 000575 253 000600 255 000603 256 000632 257 000661 258 000673 259 000705 261 000706 263 000711 264 000714 267 000715 269 000720 271 000747 273 000751 275 001025 277 001026 278 001070 280 001074 281 001153 283 001154 285 001157 286 001200 288 001202 290 001251 293 001252 294 001256 296 001264 297 001267 300 001274 301 001277 302 001302 304 001305 306 001364 308 001365 311 001374 315 001405 316 001410 318 001414 319 001420 321 001423 325 001430 327 001447 329 001451 330 001520 333 001521 334 001525 335 001535 337 001544 338 001546 342 001550 343 001557 344 001561 347 001610 349 001613 350 001615 351 001624 352 001646 354 001647 357 001655 358 001656 359 001667 360 001714 361 001720 362 001725 363 001732 364 001737 365 001744 368 001751 370 001753 376 001755 378 001771 381 002057 386 002060 388 002062 390 002064 392 002143 395 002144 396 002176 398 002231 400 002235 403 002320 408 002321 410 002326 413 002345 415 002356 416 002357 418 002361 420 002440 422 002441 425 002444 428 002532 431 002533 433 002551 436 002630 444 002631 445 002641 447 002646 449 002651 452 002743 455 002750 460 002756 464 002764 469 002767 470 002770 471 002775 473 002777 475 003002 476 003003 478 003012 480 003065 482 003066 483 003067 484 003074 485 003076 486 003101 487 003102 491 003105 492 003111 494 003113 496 003121 498 003131 500 003133 501 003137 504 003147 506 003153 509 003162 514 003177 515 003207 516 003215 517 003225 518 003226 520 003230 522 003232 523 003237 524 003244 526 003246 532 003250 533 003251 534 003255 536 003257 538 003262 539 003263 541 003272 543 003345 545 003346 546 003347 547 003354 548 003356 552 003362 554 003364 555 003371 557 003373 559 003401 560 003411 561 003415 564 003430 566 003440 569 003446 570 003471 571 003500 573 003512 575 003520 576 003524 579 003525 581 003533 582 003555 583 003567 585 003574 587 003577 590 003602 593 003614 595 003620 597 003622 599 003631 601 003635 603 003637 605 003641 607 003643 608 003644 611 003646 612 003656 616 003675 618 003703 624 003720 626 003731 628 003733 632 003735 634 003747 636 003752 638 003754 642 003760 646 003776 647 004002 649 004004 651 004027 653 004031 654 004100 656 004101 660 004103 661 004107 663 004111 664 004113 665 004123 666 004130 668 004134 670 004137 671 004142 675 004144 677 004147 678 004151 679 004153 680 004155 682 004156 683 004163 685 004164 686 004173 687 004205 689 004207 691 004211 694 004260 697 004261 699 004265 700 004267 701 004271 702 004273 703 004277 704 004301 706 004303 707 004312 709 004324 711 004330 713 004342 719 004364 720 004371 722 004374 729 004403 730 004405 731 004416 732 004420 733 004425 734 004434 735 004442 737 004444 740 004475 742 004476 744 004500 745 004547 748 004550 749 004553 752 004554 754 004557 757 004572 759 004613 761 004614 764 004630 765 004633 766 004636 767 004641 768 004643 769 004644 770 004646 773 004647 779 004651 780 004656 785 004661 794 004663 796 004703 801 004705 811 004707 812 004717 814 004731 815 004733 820 004736 826 004740 827 004757 828 004761 833 004765 838 004767 840 004772 841 004774 842 005000 845 005001 846 005003 848 005015 849 005017 851 005022 852 005024 853 005026 857 005030 858 005032 859 005050 860 005056 863 005060 864 005070 ----------------------------------------------------------- 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