COMPILATION LISTING OF SEGMENT gtss_ios_io_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/84 1258.3 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 gtss_ios_io_: proc (file_no, select_ptr, memory_ptr, memory_limit, status, code); 10 11 /* 12* " This entry performs random or sequential input or output on 13* " the designated file according to the select sequence provided by 14* " the user. 15* 16* Author: Dave Ward 03/04/80 (derived from gtss_ios_) 17**/ 18 dcl code fixed bin (35) parm; 19 dcl file_no fixed bin (24) parm; 20 dcl memory_limit fixed bin (24) parm; 21 dcl memory_ptr ptr parm; 22 dcl select_ptr ptr parm; 23 dcl status fixed bin(24)parm; 24 25 fn = file_no; /* Use local variables */ 26 sp = select_ptr; 27 storlimit = memory_limit+1; /* The memory_limit parameter passed to gtss_ios_io_ 28* is the address of the highest location in the segment which 29* may be accessed. The storlimit variable represents the 30* number of words at the beginning of te segment which 31* may be accessed. */ 32 ap = gtss_disk.attributes_ptr (fn); 33 34 status = 0; /* Initialize status to indicate no error */ 35 code = 0; 36 37 seeksw = "0"b; 38 slave_status = "400000000000"b3; 39 idptr = addrel (sp, 1); /* get pointer to first identifier word */ 40 ta_seg_ptr = baseptr (baseno (memory_ptr)); /* get pointer to beginning of 41* user's memory segment */ 42 select_seg_ptr = baseptr (baseno (sp)); /* get pointer to beginning of 43* segment containing select sequence */ 44 select_seq_in_memory = (select_seg_ptr = ta_seg_ptr); 45 opptr = addrel (idptr, -1); /* build pointer to operation word */ 46 sptr = addrel (idptr, 1); /* build pointer to return word */ 47 dcw_offset = fixed (id_word.dcwp); /* get dcw list pointer */ 48 count = 1; 49 if db_ios then 50 call ioa_ ("Select Sequence for file ^i:", fn); 51 /* Make sure file number is valid and file is open */ 52 if bad_file_status (fn, status) then do; 53 call return_stat; 54 return; 55 end; 56 data_moved = 0; 57 da_residue = 0; 58 wc_residue = 0; 59 60 lookup: ; 61 62 do i = 1 to hbound (io_commands, 1); 63 cmd_word = io_commands (i); /* get command */ 64 if substr (cmd_word, 1, 6) = op_word.dev_com then /* are device and */ 65 if substr (cmd_word, 19, 5) = op_word.ioc_com then do; /* ioc commands = ? */ 66 67 on cond (record_quota_overflow) begin; 68 gtss_disk (fn) = gtss_disk (41); /* Restore file fn to state before change_size. */ 69 if db_ios then 70 call ioa_ ("gtss_ios_io_: record quota overflow."); 71 code = error_table_$rqover; 72 call return_stat; 73 status = 16; /* Record quota overflow. */ 74 goto fin_io; 75 end; 76 gtss_disk (41) = gtss_disk (fn); /* Save state of file fn. */ 77 goto com_proc (i); /* goto processing rtn */ 78 end; 79 end; /* no...continue */ 80 81 82 status = 3; /* unsupported I/O command */ 83 call return_stat; 84 fin_io: ; 85 86 return; 87 88 com_proc (1): ; /* disk or drum seek */ 89 90 if count >= 2 then do; 91 status = 13; /* second I/O command cannot be seek */ 92 call return_stat; 93 return; 94 end; 95 96 seeksw = "1"b; /* indicate seek to be done */ 97 98 99 if pat_body (fn).random then do; /* no seek necessary for sequential file */ 100 101 if select_seq_in_memory then 102 if dcw_offset >= storlimit then do; /* dcw addr OOB? */ 103 status = 4; /* DCW is outside of slave limits */ 104 if db_ios then call ioa_ ("dcw_offset = ^i; storlimit = ^i", 105 dcw_offset, storlimit); 106 call return_stat; 107 return; 108 end; 109 110 dcw_ptr = addrel (select_seg_ptr, dcw_offset); /* get address of dcw */ 111 if select_seq_in_memory then 112 if fixed (dcw.data_addr) >= storlimit /* data address OOB? */ 113 then do; 114 status = 5; /* DCW points outside of slave limits */ 115 call return_stat; 116 return; 117 end; 118 119 if fixed (dcw.count) ^= 1 then do; 120 status = 6; /* Seek DCW count is not 1 */ 121 call return_stat; 122 return; 123 end; 124 125 seek_ptr = addrel (select_seg_ptr, dcw.data_addr); 126 i = seek_ptr -> seek_address; /* grab seek address */ 127 file_position (fn) = i*64; /* multiply by block size */ 128 seek_ptr -> seek_address = 0; /* Clobber user's seek address */ 129 end; 130 131 if db_ios then 132 if pat_body (fn).random then 133 call ioa_ ("SDIA seek_address = ^o", i); 134 else call ioa_ ("SDIA (linked file)"); 135 136 component (fn) = divide (file_position (fn), sys_info$max_seg_size, 24, 0); 137 last_component = (component (fn) + 1 >= no_components (fn)); 138 if last_component then 139 if file_size (fn) <= 0 140 then seg_length = 0; 141 else 142 seg_length = mod (file_size (fn)-1, sys_info$max_seg_size)+1; 143 else seg_length = sys_info$max_seg_size; 144 offset (fn) = mod (file_position (fn), sys_info$max_seg_size); 145 if msf (fn) then 146 file_ptr = msf_array_ptr (fn) -> msf_components (component (fn)); 147 else file_ptr = single_segment_ptr (fn); 148 file_ptr = addrel (file_ptr, offset (fn)); 149 150 if ^pat_body (fn).random then do; 151 if mod (file_position (fn), 320) ^= 0 then do; 152 call com_err_ (0, "gtss_ios_", "Bug: file_position = ^i; not a multiple of 320", 153 file_position (fn)); 154 dcl gtss_ios_bug condition; 155 signal condition (gtss_ios_bug); 156 end; 157 end; 158 159 160 bump: ; 161 162 idptr = addrel (idptr, 2); /* get ptr to new id word */ 163 opptr = addrel (idptr, -1); /* build pointer to operation word */ 164 sptr = addrel (idptr, 1); /* build pointer to return word */ 165 dcw_offset = fixed (id_word.dcwp); /* get dcw list pointer */ 166 count = count + 1; 167 goto lookup; 168 169 com_proc (2): ; /* read disk continuous */ 170 171 if db_ios then call ioa_ ("RDIC"); 172 if ^seeksw then do; /* read must be preceded by a seek */ 173 status = 7; /* Disk read or write not preceeded by a seek */ 174 call return_stat; 175 return; 176 end; 177 178 /* A null file cannot be read */ 179 if ^ap -> non_null then do; 180 status = 0; /* eof encountered */ 181 substr (slave_status, 7, 12) = "1700"b3; /* set null file bit */ 182 183 /* * ADD status word 1 record count residue setting? * */ 184 call return_stat; 185 return; 186 end; 187 188 if select_seq_in_memory then 189 if dcw_offset >= storlimit then do; /* dcw addr OOB? */ 190 status = 4; /* DCW is outside of slave limits */ 191 call return_stat; 192 return; 193 end; 194 195 dcw_ptr = addrel (select_seg_ptr, dcw_offset); /* get address of dcw */ 196 197 198 /* Read Operation */ 199 200 disconnect = "0"b; 201 tdcw_previous = "1"b; /* Insure that the first DCW 202* will be rejected if a TDCW. */ 203 204 read_loop: do dcw_number = 1 to 4096; 205 206 /* At this point dcw_ptr points to the next 207* DCW to be interpreted. */ 208 209 goto read_case (fixed (dcw.action)); 210 211 read_case (4): ; 212 read_case (5): ; 213 read_case (6): ; 214 read_case (7): ; 215 status = 10; /* Bad action code in DCW */ 216 call return_stat; 217 return; 218 219 read_case (0): ; /* IOTD */ 220 disconnect = "1"b; 221 222 read_case (1): ; /* IOTP */ 223 if db_ios then do; 224 if disconnect then call ioa_ 225 ("IOTD count = ^o, address = ^o", fixed (dcw.count), fixed (dcw.data_addr)); 226 else call ioa_ 227 ("IOTP count = ^o, address = ^o", fixed (dcw.count), fixed (dcw.data_addr)); 228 end; 229 ta_offset = fixed (dcw.data_addr); 230 l = fixed (dcw.count); 231 if l = 0 then l = 4096; 232 233 restart_read: ; 234 ta_ptr = addrel (ta_seg_ptr, ta_offset); 235 if ta_offset + l > storlimit | offset (fn) + l > seg_length 236 then do; 237 238 /* Control is transferred here when either 239* 1. The current DCW references outside the user's slave memory limits. 240* or 241* 2. The end of file will be crossed by the current DCW. 242* or 243* 3. The end of a file component will be crossed by the current DCW. 244**/ 245 246 if read_memory_fault () then do; 247 call return_stat; 248 return; 249 end; 250 if read_end_of_file ("1"b) then do; 251 call return_stat; 252 return; 253 end; 254 call read_next_component ("1"b); 255 goto restart_read; 256 end; 257 ta_ptr -> M = file_ptr -> M; /* Data transfer */ 258 259 /* Remember last address + 1 of data transferred */ 260 da_residue = ta_offset + l; 261 262 read_file_posit: ; /* Update position in file */ 263 offset (fn) = offset (fn) + l; 264 file_ptr = addrel (file_ptr, l); 265 data_moved = data_moved +l; 266 267 if disconnect then do; 268 wc_residue = 0; 269 call return_stat; 270 return; 271 end; 272 273 /* Move to next DCW */ 274 dcw_offset = dcw_offset + 1; 275 if select_seq_in_memory then 276 if dcw_offset > storlimit then do; 277 status = 4; /* DCW is outside of slave limits */ 278 call return_stat; 279 return; 280 end; 281 dcw_ptr = addrel (select_seg_ptr, dcw_offset); 282 tdcw_previous = "0"b; 283 goto finished_read_dcw; 284 285 read_case (3): ; /* IONTP */ 286 if db_ios then 287 call ioa_ ("IONTP count = ^o", fixed (dcw.count)); 288 l = fixed (dcw.count); 289 if l = 0 then l = 4096; 290 restart_nonread: ; 291 if offset (fn) + l > seg_length then do; 292 if read_end_of_file ("0"b) then do; 293 call return_stat; 294 return; 295 end; 296 call read_next_component ("0"b); 297 goto restart_nonread; 298 end; 299 goto read_file_posit; /* Update position in file */ 300 301 read_case (2): ; /* TDCW */ 302 if db_ios then 303 call ioa_ ("TDCW address = ^o", fixed (dcw.data_addr)); 304 if tdcw_previous then do; 305 status = 11; /* Two TDCW's in a row */ 306 wc_residue = 0; 307 call return_stat; 308 return; 309 end; 310 tdcw_previous = "1"b; 311 dcw_offset = fixed (dcw.data_addr); 312 if select_seq_in_memory then 313 if dcw_offset > storlimit then do; 314 status = 4; /* DCW is outside of slave limits */ 315 wc_residue = 0; 316 call return_stat; 317 return; 318 end; 319 dcw_ptr = addrel (select_seg_ptr, dcw_offset); 320 321 finished_read_dcw: ; 322 end read_loop; 323 324 status = 12; /* Maximum of 4096 DCW's exceeded */ 325 call return_stat; 326 return; 327 328 com_proc (3): ; /* write disk continuous */ 329 330 if db_ios then call ioa_ ("WDIC"); 331 if ^seeksw then do; /* write must be preceded by a seek */ 332 status = 7; /* Disk read or write not preceeded by a seek */ 333 call return_stat; 334 return; 335 end; 336 337 if ^permissions (fn).write then do; /* write not allowed ? */ 338 status = 2; /* a write was attempted on a file which was 339* opened in read mode */ 340 call return_stat; 341 return; 342 end; 343 344 if select_seq_in_memory then 345 if dcw_offset >= storlimit then do; /* dcw addr OOB? */ 346 status = 4; /* DCW is outside of slave limits */ 347 call return_stat; 348 return; 349 end; 350 351 dcw_ptr = addrel (select_seg_ptr, dcw_offset); /* get address of dcw */ 352 353 /* Write Operation */ 354 355 if ^ap -> non_null then do; 356 ap -> non_null = "1"b; 357 if pat_body.perm (fn) then do; /* Perm File */ 358 gtss_file_attributes_ptr = gtss_dfd_ext_$disk_file_data (fn).gtss_disk.attributes_ptr; 359 gtss_file_values.version = 1; 360 gtss_file_values.change_name = "0"b; 361 gtss_file_values.dname = gtss_dfd_ext_$disk_file_data (fn).gtss_disk.dir_name; 362 gtss_file_values.ename = gtss_dfd_ext_$disk_file_data (fn).gtss_disk.entry_name; 363 gtss_file_values.new_ename = " "; /* Set values for current entry. */ 364 string (gtss_file_values.set_switch) = "0"b; 365 gtss_file_values.set_switch.null_file = "1"b; 366 gtss_file_values.data_flags.null_file = "0"b; 367 368 call gtss_attributes_mgr_$set (addr (gtss_file_values), code); 369 if code ^= 0 then status = 16; /* $set failed. */ 370 end; 371 372 end; 373 write_performed (fn) = "1"b; 374 disconnect = "0"b; 375 tdcw_previous = "1"b; /* Insure that the first DCW 376* will be rejected if a TDCW. */ 377 378 do dcw_number = 1 to 4096; 379 380 /* At this point dcw_ptr points to the next 381* DCW to be interpreted. */ 382 383 i = fixed (dcw.action); 384 goto write_case (i); 385 386 write_case (4): ; 387 write_case (5): ; 388 write_case (6): ; 389 write_case (7): ; 390 status = 10; /* Bad action code in DCW */ 391 call return_stat; 392 return; 393 394 write_case (0): ; /* IOTD */ 395 disconnect = "1"b; 396 397 write_case (1): ; /* IOTP */ 398 if db_ios then do; 399 if disconnect then call ioa_ 400 ("IOTD count = ^o, address = ^o", fixed (dcw.count), fixed (dcw.data_addr)); 401 else call ioa_ 402 ("IOTP count = ^o, address = ^o", fixed (dcw.count), fixed (dcw.data_addr)); 403 end; 404 ta_offset = fixed (dcw.data_addr); 405 l = fixed (dcw.count); 406 if l = 0 then l = 4096; 407 408 restart_write: ; 409 ta_ptr = addrel (ta_seg_ptr, ta_offset); 410 if ta_offset + l > storlimit | offset (fn) + l > seg_length 411 then do; 412 413 /* Control is transferred here when either 414* 1. The current DCW references outside the user's slave memory limits. 415* or 416* 2. The end of file will be crossed by the current DCW. 417* or 418* 3. The end of a file component will be crossed by the current DCW. 419**/ 420 421 if write_memory_fault () then do; 422 call return_stat; 423 return; 424 end; 425 if write_end_of_file ("1"b) then do; 426 call return_stat; 427 return; 428 end; 429 call write_next_component ("1"b); 430 goto restart_write; 431 end; 432 file_ptr -> M = ta_ptr -> M; /* Data transfer */ 433 434 /* Remember last address + 1 of data transferred */ 435 da_residue = ta_offset + l; 436 437 write_file_posit: ; /* Update position in file */ 438 offset (fn) = offset (fn) + l; 439 file_ptr = addrel (file_ptr, l); 440 data_moved = data_moved +l; 441 442 if disconnect then do; 443 wc_residue = 0; 444 call write_to_end_of_sector; 445 call return_stat; 446 return; 447 end; 448 449 /* Move to next DCW */ 450 dcw_offset = dcw_offset + 1; 451 if select_seq_in_memory then 452 if dcw_offset > storlimit then do; 453 status = 4; /* DCW is outside of slave limits */ 454 call return_stat; 455 return; 456 end; 457 dcw_ptr = addrel (select_seg_ptr, dcw_offset); 458 tdcw_previous = "0"b; 459 goto finished_write_dcw; 460 461 write_case (3): ; /* IONTP */ 462 if db_ios then 463 call ioa_ ("IONTP count = ^o", fixed (dcw.count)); 464 l = fixed (dcw.count); 465 if l = 0 then l = 4096; 466 restart_nonwrite: ; 467 if offset (fn) + l > seg_length then do; 468 if write_end_of_file ("0"b) then do; 469 call return_stat; 470 return; 471 end; 472 call write_next_component ("0"b); 473 goto restart_nonwrite; 474 end; 475 unspec (file_ptr -> M) = "0"b; /* Nondata transfer */ 476 goto write_file_posit; /* Update position in file */ 477 478 write_case (2): ; /* TDCW */ 479 if db_ios then 480 call ioa_ ("TDCW address = ^o", fixed (dcw.data_addr)); 481 if tdcw_previous then do; 482 status = 11; /* Two TDCW's in a row */ 483 wc_residue = 0; 484 call return_stat; 485 return; 486 end; 487 tdcw_previous = "1"b; 488 dcw_offset = fixed (dcw.data_addr); 489 if select_seq_in_memory then 490 if dcw_offset > storlimit then do; 491 status = 4; /* DCW is outside of slave limits */ 492 wc_residue = 0; 493 call return_stat; 494 return; 495 end; 496 dcw_ptr = addrel (select_seg_ptr, dcw_offset); 497 498 finished_write_dcw: ; 499 end; /* End write loop do. */ 500 501 status = 12; /* Maximum of 4096 DCW's exceeded */ 502 call return_stat; 503 return; 504 505 506 com_proc (4): ; /* rewind disk/drum */ 507 508 if db_ios then call ioa_ ("REW"); 509 if pat_body (fn).random then do; /* abort if random */ 510 status = 8; /* attempt to space or rewind random file */ 511 call return_stat; 512 return; 513 end; 514 515 file_position (fn) = 0; 516 call return_stat; 517 return; 518 519 com_proc (5): ; /* backspace disk/drum */ 520 521 bksp_sw = "1"b; /* remember backspace */ 522 if db_ios then 523 call ioa_ ("BSR count = ^o", fixed (op_word.count)); 524 525 526 bksp_share: 527 528 if pat_body (fn).random then do; /* abort if random */ 529 status = 8; /* attempt to space or rewind random file */ 530 call return_stat; 531 return; 532 end; 533 if ^ap -> non_null then do; /* is this a null file ? */ 534 status = 1; /* eof encountered */ 535 536 /* * ADD status word 1 record count residue setting? * */ 537 call return_stat; 538 return; 539 end; 540 541 j = fixed (op_word.count); /* extract fixed(op_word.count) */ 542 if j = 0 then j = 64; /* zero count means 64 */ 543 j = 320*j; 544 if bksp_sw then j = -j; 545 546 file_position (fn) = file_position (fn) + j; 547 548 /* * NOTE: Add code to provide: 549* 1) load point status of positioned off front of file. 550* 2) setting status word 1 record count residue (right 6bits) 551* if positioned off either end of the file. 552* * */ 553 if file_position (fn) < 0 then file_position (fn) = 0; /* allow for backspace too far */ 554 if file_position (fn) > file_size (fn) then do; /* check for end of file */ 555 status = 1; /* end of file encountered */ 556 557 rec_ct_residue = divide (file_position (fn) - file_size (fn), 320, 17, 0); 558 substr (slave_status, 31, 6) = substr (unspec (rec_ct_residue), 31, 6); 559 560 file_position (fn) = file_size (fn); 561 562 end; 563 564 565 call return_stat; 566 return; /* process status */ 567 568 com_proc (6): ; /* forward space disc/drum */ 569 570 bksp_sw = "0"b; /* remember forward space */ 571 if db_ios then 572 call ioa_ ("FSR count = ^o", fixed (op_word.count)); 573 574 goto bksp_share; /* now go share backspace code */ 575 576 com_proc (7): ; /* reset status for disk/drum */ 577 578 if db_ios then call ioa_ ("RESS"); 579 call return_stat; 580 return; 581 582 com_proc (8): ; /* request status for disk/drum */ 583 584 if db_ios then call ioa_ ("REQS"); 585 call return_stat; 586 return; 587 /* INTERNAL PROCEDURES */ 588 589 bad_file_status: proc (fn, status) returns (bit (1)); 590 591 /* This routine is called to verify that 592* the file number input parameter corresponds 593* to a valid open file. If so, "0"b is returned. 594* Otherwise , "1"b is returned. */ 595 596 dcl fn fixed bin (24) parm; 597 dcl status fixed bin (24) parm; 598 599 if fn < lbound (gtss_disk, 1) | fn >= hbound (gtss_disk, 1) then do; 600 status = 15; /* Bad file number */ 601 return ("1"b); 602 end; 603 if gtss_disk.fcb_ptr (fn) = null () then do; 604 status = 14; /* File not open */ 605 return ("1"b); 606 end; 607 return ("0"b); 608 end bad_file_status; 609 610 read_end_of_file: proc (data_transfer) returns (bit (1) aligned); 611 612 dcl data_transfer bit (1) aligned parm /* Input parameter which indicates 613* whether data is to be transferred to memory ("1"b) 614* or skipped ("0"b). */; 615 616 617 /* This routine checks to see if the current DCW causes the end of file boundary 618* to be crossed. If so, and the data_transfer flag is on, this routine 619* transfers as much data as possible. The end of file is indicated for random files by 620* returning "1"b. If no end of file, no data is transferred and "0"b is returned. 621**/ 622 623 /* Determine whether end of file is the problem */ 624 wc_residue = l; 625 l = seg_length - offset (fn); 626 data_moved = data_moved +l; 627 if last_component then do; 628 status = 1; /* eof encountered */ 629 if l < 1 then return ("1"b); /* Indicate end of file */; 630 if data_transfer then do; 631 ta_ptr -> M = file_ptr -> M; /* Data transfer */ 632 da_residue = ta_offset + l; 633 end; 634 wc_residue = wc_residue - l; 635 dcl x fixed bin; 636 x = divide (wc_residue, 320, 17); 637 if db_ios then call ioa_ ("ios: wc_residue=^i (mod 320 ^a) rec_count_residue=^i" 638 , wc_residue 639 , substr ("no yes", (fixed (mod (wc_residue, 320) = 0, 17)*3)+1, 3) 640 , x); 641 substr (slave_status, 31, 6) = bit (fixed (x, 6)); /* => Record count residue. */ 642 return ("1"b); /* Indicate end of file */ 643 end; 644 return ("0"b); /* Not end of file */ 645 end read_end_of_file; 646 647 read_memory_fault: proc returns (bit (1) aligned); 648 649 650 /* This routine checks to see if the current DCW would cause 651* data to be transferred outside of the user's slave memory limits. 652* If so this routine transfers as much data as possible and 653* returns "1"b. If not, no data is transferred and "0"b is returned. 654* In the special case that the current DCW would cause the end of 655* file to be encountered before exceeding memory limits, then no data 656* is transferred and "0"b is returned. 657**/ 658 659 if ta_offset - storlimit > offset (fn) - seg_length 660 then do; /* Slave memory is the most severe 661* limitation on this read. */ 662 status = 5; /* DCW references outside of slave limits */ 663 wc_residue = l; 664 l = storlimit - ta_offset; 665 if l < 1 then return ("1"b); /* Indicate memory fault */; 666 wc_residue = wc_residue -l; 667 ta_ptr -> M = file_ptr -> M; /* Data transfer */ 668 da_residue = ta_offset + l; 669 data_moved = data_moved +l; 670 return ("1"b); /* Indicate memory fault */ 671 end; 672 return ("0"b); /* No memory fault */ 673 end read_memory_fault; 674 675 read_next_component: proc (data_transfer); 676 677 dcl data_transfer bit (1) aligned parm /* Input parameter which indicates 678* whether data is to be transferred to memory ("1"b) 679* or skipped ("0"b). */; 680 681 /* This routine handles the case that the end of the current component 682* of a multisegment file will be crossed by the current DCW when 683* the current component is not the last one. The remaining data in 684* the current component is transferred to slave memory (if the data_transfer 685* flag is on) and the next component is made current. 686**/ 687 688 if l >= 1 & data_transfer then do; 689 ta_ptr -> M = file_ptr -> M; /* Data Transfer */ 690 da_residue, ta_offset = ta_offset + l; 691 end; 692 693 l = wc_residue - l; 694 component (fn) = component (fn) + 1; 695 last_component = (component (fn) + 1 >= no_components (fn)); 696 file_ptr = msf_array_ptr (fn) -> msf_components (component (fn)); 697 offset (fn) = 0; 698 if last_component then 699 seg_length = mod (file_size (fn)-1, sys_info$max_seg_size)+1; 700 else seg_length = sys_info$max_seg_size; 701 return; 702 end read_next_component; 703 704 return_stat: proc; 705 706 707 /* If this is a five word select sequence then the pointer to the status return address, 708* sptr, may have to be adjusted. */ 709 if count = 1 then do; 710 cmd_word = io_commands (1); /* seek command */ 711 if substr (cmd_word, 1, 6) = op_word.dev_com then /* are device and */ 712 if substr (cmd_word, 19, 5) = op_word.ioc_com then /* ioc commands = ? */ 713 sptr = addrel (sptr, 2); 714 end; 715 if ^pat_body (fn).random then do; 716 file_position (fn) = file_position (fn) + data_moved; 717 i = mod (file_position (fn), 320); 718 if i > 0 then file_position (fn) = file_position (fn) + 320 - i; 719 end; 720 if db_ios then 721 call ioa_ ("Status return address = ^o", fixed (return_word.status_return)); 722 if select_seq_in_memory & 723 fixed (return_word.status_return) >= storlimit then do; 724 if status = 0 then status = 9; /* Status return address is 725* outside of slave limits */ 726 swptr = addr (scratch_status); 727 end; 728 else do; 729 if return_word.status_return = (18)"0"b then /* program doesn't want status */ 730 swptr = addr (scratch_status); /* so fake a return area */ 731 732 else swptr = addrel (select_seg_ptr, return_word.status_return); /* get address of status words */ 733 end; 734 735 sw1 = slave_status; /* move status into slave */ 736 sw2 = "0"b; 737 738 substr (sw2, 25, 12) = substr (unspec (wc_residue), 25, 12); /* return word count */ 739 substr (sw2, 1, 18) = substr (unspec (da_residue), 19, 18); /* and data address residues */ 740 if status < lbound (err_case, 1) | status > hbound (err_case, 1) then return; 741 goto err_case (status); 742 743 err_case (0): ; 744 err_case (2): ; 745 err_case (3): ; 746 err_case (4): ; 747 err_case (5): ; 748 err_case (6): ; 749 err_case (7): ; 750 err_case (8): ; 751 err_case (9): ; 752 err_case (10): ; 753 err_case (13): ; 754 goto done_stat; 755 756 err_case (1): ; /* End of file was encountered */ 757 substr (sw1, 3, 4) = "1111"b; 758 goto done_stat; 759 760 err_case (11): ; /* Two TDCW's in a row */ 761 substr (sw1, 22, 3) = "010"b; 762 goto done_stat; 763 764 err_case (12): ; /* Maximum of 4096 DCW's exceeded */ 765 substr (sw1, 22, 3) = "001"b; 766 goto done_stat; 767 768 done_stat: ; 769 if db_ios then 770 call ioa_ ("Status = Word1: ^12o Word2: ^12o", fixed (sw1), fixed (sw2)); 771 772 return; 773 dcl i fixed bin (24); 774 end /* return_stat */; 775 776 write_end_of_file: proc (data_transfer) returns (bit (1) aligned); 777 778 dcl data_transfer bit (1) aligned parm /* Input parameter which indicates 779* whether data is to be transferred to memory ("1"b) 780* or skipped ("0"b). */; 781 782 783 /* This routine checks to see if the current DCW causes the end of file boundary 784* to be crossed. If so, and the data_transfer flag is on, this routine 785* transfers as much data as possible. The end of file is indicated by 786* returning "1"b. If no end of file, no data is transferred and "0"b is returned. 787**/ 788 789 /* Determine whether end of file is the problem */ 790 wc_residue = l; 791 l = seg_length - offset (fn); 792 data_moved = data_moved +l; 793 if last_component then do; 794 status = 1; /* eof encountered */ 795 if l < 1 then return ("1"b); /* Indicate end of file */; 796 if data_transfer then do; 797 file_ptr -> M = ta_ptr -> M; /* Data transfer */ 798 da_residue = ta_offset + l; 799 end; 800 else unspec (file_ptr -> M) = "0"b; /* Nondata transfer */ 801 wc_residue = wc_residue - l; 802 dcl x fixed bin; 803 x = divide (wc_residue, 320, 17); 804 if db_ios then call ioa_ ("ios: wc_residue=^i (mod 320 ^a) rec_count_residue=^i" 805 , wc_residue 806 , substr ("no yes", (fixed (mod (wc_residue, 320) = 0, 17)*3)+1, 3) 807 , x); 808 substr (slave_status, 31, 6) = bit (fixed (x, 6)); /* => Record count residue. */ 809 return ("1"b); /* Indicate end of file */ 810 end; 811 return ("0"b); /* Not end of file */ 812 end write_end_of_file; 813 814 write_memory_fault: proc returns (bit (1) aligned); 815 816 817 /* This routine checks to see if the current DCW would cause 818* data to be transferred outside of the user's slave memory limits. 819* If so this routine transfers as much data as possible and 820* returns "1"b. If not, no data is transferred and "0"b is returned. 821* In the special case that the current DCW would cause the end of 822* file to be encountered before exceeding memory limits, then no data 823* is transferred and "0"b is returned. 824**/ 825 826 if ta_offset - storlimit > offset (fn) - seg_length 827 then do; /* Slave memory is the most severe 828* limitation on this write. */ 829 status = 5; /* DCW references outside of slave limits */ 830 wc_residue = l; 831 l = storlimit - ta_offset; 832 if l < 1 then return ("1"b); /* Indicate memory fault */; 833 wc_residue = wc_residue -l; 834 file_ptr -> M = ta_ptr -> M; /* Data transfer */ 835 da_residue = ta_offset + l; 836 data_moved = data_moved +l; 837 return ("1"b); /* Indicate memory fault */ 838 end; 839 return ("0"b); /* No memory fault */ 840 end write_memory_fault; 841 842 write_next_component: proc (data_transfer); 843 844 dcl data_transfer bit (1) aligned parm /* Input parameter which indicates 845* whether data is to be transferred to memory ("1"b) 846* or skipped ("0"b). */; 847 848 /* This routine handles the case that the end of the current component 849* of a multisegment file will be crossed by the current DCW when 850* the current component is not the last one. The remaining data in 851* the current component is transferred from slave memory (if the data_transfer 852* flag is on) and the next component is made current. 853**/ 854 855 if l >= 1 & data_transfer then do; 856 file_ptr -> M = ta_ptr -> M; /* Data Transfer */ 857 da_residue, ta_offset = ta_offset + l; 858 end; 859 else unspec (file_ptr -> M) = "0"b; /* Nondata transfer */ 860 861 l = wc_residue - l; 862 component (fn) = component (fn) + 1; 863 last_component = (component (fn) + 1 >= no_components (fn)); 864 file_ptr = msf_array_ptr (fn) -> msf_components (component (fn)); 865 offset (fn) = 0; 866 if last_component then 867 seg_length = mod (file_size (fn)-1, sys_info$max_seg_size)+1; 868 else seg_length = sys_info$max_seg_size; 869 return; 870 end write_next_component; 871 872 write_to_end_of_sector: proc; 873 874 /* This routine writes zeros from the current file position to the 875* nearest sector (64 word) boundary. If the file is currently 876* positioned at a sector boundary, no writing is done. 877**/ 878 879 i = mod (offset (fn), 64); 880 if i > 0 then do; 881 l = 64 - i; 882 unspec (file_ptr -> M) = "0"b; 883 end; 884 return; 885 886 dcl i fixed bin (24); 887 888 end write_to_end_of_sector; 889 890 /* VARIABLES FOR GTSS_IOS_ */ 891 dcl hcs_$fs_get_path_name entry(ptr,char(*),fixed bin,char(*),fixed bin(35)); 892 dcl file_dir char(168); 893 dcl file_dir_len fixed bin; 894 dcl file_ent char(32); 895 dcl gcos_status bit(12)aligned based(gsp); 896 dcl bit72 bit(72)aligned based; 897 dcl gsp ptr; 898 899 dcl acl_ptr ptr /* pointer to segment_acl passed 900* as a parameter to msf_manager_$acl_list */; 901 dcl ap ptr /* Pointer to the attributes structure for the current file */; 902 dcl bc fixed bin (24) /* Used as a sink for bit counts returned by 903* msf_manager_$get_ptr */; 904 dcl bit_count fixed bin (24) /* The bit count of the last segment of an msf. 905* Passed as a parameter to msf_manager_$adjust. */; 906 dcl bksp_sw bit (1) /* Distinguishes between backspacing 907* "1"b and forward spacing "0"b a linked file. */; 908 dcl cmd_word bit (36) aligned /* temp */; 909 dcl count fixed bin (24) /* Counts io commands processed 910* for current io select sequence */; 911 dcl da_residue fixed bin /* Address of last memory location 912* accessed during I/O. Used in building 913* return status words for I/O. */; 914 dcl data_moved fixed bin (24) /* number of words moved or skipped over by 915* the current read or write operation. */; 916 dcl dcw_number fixed bin (24) /* Used to count DCW's in 917* the current select sequence */; 918 dcl dcw_offset fixed bin (24) /* slave offset of current dcw */; 919 dcl dcw_ptr ptr /* Multics pointer to the current dcw */; 920 dcl disconnect bit (1) /* Indicator that the last DCW has been encountered. */; 921 dcl error_table_$namedup fixed bin (35) ext; 922 dcl error_table_$rqover fixed bin(35)ext; 923 dcl error_table_$segknown fixed bin (35) ext; 924 dcl fcb_ptr ptr init (null ()) /* pointer to file control block 925* used by msf_manager_ */; 926 dcl file_ptr ptr /* pointer to current positoion in file */; 927 dcl fn fixed bin (24) /* Index in gtss_ext_$disk_file_data of 928* information about the file to be processed. */; 929 dcl get_mode fixed bin (5) /* User's access mode to segment as 930* returned by hcs_$fs_get_mode */; 931 dcl gsc fixed bin(24); 932 dcl i fixed bin (24); 933 dcl idptr ptr /* Pointer to the current id 934* word of the I/O select sequence. */; 935 dcl j fixed bin (24); 936 dcl l fixed bin (24) /* The length in words of the current 937* piece of data to be moved to or from the file */; 938 dcl largest_file fixed bin (24) /* Max no. of llinks a file can grow to */; 939 dcl last_component bit (1) /* When on, indicates that the 940* current component is the last component of the file */; 941 dcl li bit (1) /* variable for the parameter link_indicator */; 942 dcl M char (l*4) based /* A template used for moving data 943* to or from the file. */; 944 dcl max_change fixed bin (24) /* The maximum amount that 945* the size of a file can be increased 946* expressed in llinks (320 word blocks) */; 947 dcl msf_components (0:499) ptr based /* An array of pointers for each msf. 948* Each component which has been accessed has a 949* corresponding initialized pointer. */; 950 951 dcl msf_save bit (1) /* A flag used to remember whether 952* the file was a msf before its size 953* was changed. */; 954 dcl no_components_save fixed bin (24) /* Used to remember the number 955* of components a file had before its 956* size was changed */; 957 dcl pat_body_overlay bit (180) based /* used for initializing the 958* pat body to all zeros */; 959 dcl opptr ptr /* Pointer to the current operation 960* word of the I/O select sequence. */; 961 dcl rec_ct_residue fixed bin (24) /* holds no of unskipped records */; 962 dcl record_quota_overflow condition ext; 963 dcl sc fixed bin (24) /* local variable for the parameter size_change */; 964 dcl scratch_status bit (72) aligned /* temp */; 965 dcl seek_address fixed bin (24) based /* user seek address for disk or drum */; 966 dcl seek_ptr ptr /* Pointer to the word containing 967* the io seek address */; 968 dcl seeksw bit (1) /* sw controlling disk or drum seeks */; 969 dcl seg_length fixed bin (24) /* length in words of current component of file */; 970 dcl select_seg_ptr ptr /* Pointer to beginning of 971* segment containing select sequence */; 972 dcl select_seq_in_memory bit (1) /* 1 => the select sequence is in the 973* same segment that is used for Gcos memory. 974* In this case the addresses of DCW's, seek address data word, and 975* status return words will be checked against the 976* memory_limit parameter. */; 977 dcl slave_status bit (36) aligned; 978 dcl sp ptr /* Pointer to user's select sequence for this I/O */; 979 dcl storlimit fixed bin (24) /* slave core boundary */; 980 dcl sptr ptr /* pointer to return word of select sequence */; 981 dcl swptr ptr /* Pointer to status return words */; 982 dcl sys_info$max_seg_size fixed bin (35) ext; 983 dcl ta_offset fixed bin (24) /* Offset in the user's slave memory 984* of the transmission area for the current DCW. */; 985 dcl ta_ptr ptr /* pointer to the transmission area for 986* the current DCW. */; 987 dcl ta_seg_ptr ptr /* pointer to the user's slave 988* memory segment */; 989 dcl tdcw_previous bit (1) /* Indicator that the last DCW processed was a TDCW */; 990 dcl tfp fixed bin (71); 991 dcl wc_residue fixed bin (24) /* Number of words remaining to be transferred 992* in the current dcw when eof or 993* memory fault occurs. Used in building 994* return status words for I/O. */; 995 dcl work_area area (sys_info$max_seg_size) aligned 996 based (gtss_ext_$work_area_ptr) /* Area used to store arrays of pointers to 997* components of msf's. */; 998 dcl delete_$path entry (char (*), char (*), bit (6), char (*), fixed bin (35)); 999 dcl hcs_$fs_get_mode entry (ptr, fixed bin (5), fixed bin (35)); 1000 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 1001 dcl ioa_ entry options (variable); 1002 dcl msf_manager_$adjust entry (ptr, fixed bin, fixed bin (24), bit (3), fixed bin (35)); 1003 dcl msf_manager_$close entry (ptr); 1004 dcl msf_manager_$get_ptr entry (ptr, fixed bin, bit (1), ptr, fixed bin (24), fixed bin (35)); 1005 dcl msf_manager_$open entry (char (*), char (*), ptr, fixed bin (35)); 1006 1007 /* STRUCTURES */ 1008 1009 dcl 1 dcw aligned based (dcw_ptr), /* dcw model */ 1010 2 data_addr bit (18) unaligned, /* data address */ 1011 2 zero bit (3) unaligned, /* fill */ 1012 2 action bit (3) unaligned, /* action */ 1013 2 count bit (12) unaligned; /* word count for transfer */ 1014 1015 dcl 1 id_word aligned based (idptr), /* model of identification word */ 1016 2 filep bit (18) unaligned, /* file control block pointer */ 1017 2 dcwp bit (18) unaligned; /* dcw list pointer */ 1018 1019 1020 dcl 1 op_word aligned based (opptr), /* model of operation word */ 1021 2 dev_com bit (6) unaligned, /* device command */ 1022 2 zero1 bit (12) unaligned, /* zeros */ 1023 2 ioc_com bit (5) unaligned, /* ioc command */ 1024 2 zero2 bit (1) unaligned, /* zero */ 1025 2 control bit (6) unaligned, /* control */ 1026 2 count bit (6) unaligned; /* count */ 1027 1028 dcl 1 return_word aligned based (sptr), /* model of status return word */ 1029 2 status_return bit (18) unaligned, /* pointer to return words */ 1030 2 courtesy_call bit (18) unaligned; /* pointer to courtesy call rtn */ 1031 1032 dcl 1 stat_words aligned based (swptr), /* model of status words */ 1033 2 sw1 bit (36) aligned, /* word 1 */ 1034 2 sw2 bit (36) aligned; /* word 2 */ 1035 1036 1037 1038 dcl decode_mode (0:63) bit (3) aligned /* Permissions are read, execute, write */ 1039 static init ( /* OCTAL */ 1040 "100"b, /* 0 -- Zero access mode maps to Query permission */ 1041 "100"b, /* 1 */ 1042 (2) (1)"000"b, /* 2-3 */ 1043 "110"b, /* 4 */ 1044 (3) (1)"000"b, /* 5-7 */ 1045 "100"b, /* 10 */ 1046 (7) (1)"000"b, /* 11-17 */ 1047 (2) (1)"101"b, /* 20-21 */ 1048 (2) (1) "000"b, /* 22-23 */ 1049 "101"b, /* 24 */ 1050 (11) (1)"000"b, /* 25-37 */ 1051 (2) (1) "100"b, /* 40-41 */ 1052 (6) (1)"000"b, /* 42-47 */ 1053 "100"b, /* 50 */ 1054 (3) (1)"000"b, /* 51-53 */ 1055 "100"b, /* 54 */ 1056 (3) (1)"000"b, /* 55-57 */ 1057 (2) (1)"101"b, /* 60-61 */ 1058 (10) (1)"000"b, /* 62-73 */ 1059 "101"b, /* 74 */ 1060 (3) (1)"000"b); /* 75-77 */ 1061 1062 dcl io_commands (8) bit (36) internal static aligned init ( 1063 1064 1065 /* Disk Command Table */ 1066 1067 "340000000002"b3, /* 34 - seek disk address */ 1068 "250000002400"b3, /* 25 - read disk continuous */ 1069 "310000002400"b3, /* 31 - write disk continuous */ 1070 "700000020001"b3, /* 70 - rewind */ 1071 "460000020001"b3, /* 46 - backspace record(s) */ 1072 "440000020001"b3, /* 44 - forward space record(s) */ 1073 "400000020001"b3, /* 40 - reset status */ 1074 "000000020001"b3); /* 00 - request status */ 1075 1 1 /* BEGIN INCLUDE FILE gtss_dfd_ext_.incl.pl1 */ 1 2 /* 1 3* Created: (Wardd Multics) 06/09/78 1650.6 mst Fri 1 4**/ 1 5 1 6 dcl 1 gtss_dfd_ext_$disk_file_data (41) aligned ext, /* disk_file_data structure */ 1 7 1 8 3 gtss_disk, 1 9 4 dir_name char (168) unal, /* containing directory for file */ 1 10 4 entry_name char (32) unal, /* entry name for file */ 1 11 4 fcb_ptr ptr aligned, /* ptr to file control block */ 1 12 4 msf_array_ptr ptr, /* Pointer to an array of pointers for a msf. Each 1 13* component which has been accessed has a corresponding 1 14* initialized pointer. Currently 500 components 1 15* are supported. */ 1 16 4 single_segment_ptr ptr, /* Pointer to segment for single segment file */ 1 17 4 indicators aligned, /* one word of flags */ 1 18 1 19 5 msf bit (1) unaligned, /* 1=msf segment | 0= single segment */ 1 20 5 protected_file bit (1) unaligned, /* 1=file uses protections | 0= unprotected */ 1 21 5 fill bit (34) unal, 1 22 1 23 4 permissions aligned, 1 24 5 read bit (1) unaligned, /* 1=read permission */ 1 25 5 execute bit (1) unaligned, /* 1=execute permission */ 1 26 5 write bit (1) unaligned, /* 1=write permission */ 1 27 5 fill2 bit (33) unaligned, /* unused at this time */ 1 28 1 29 4 access_mode bit (6) aligned, /* contains the mode by which the file was accessed */ 1 30 4 component fixed bin, /* current component value (first component = 0) */ 1 31 4 offset fixed bin (24), /* current word offset in the component */ 1 32 4 file_position fixed bin (30), /* current file position in words */ 1 33 4 file_size fixed bin (30), /* size of file in words */ 1 34 4 no_components fixed bin (24), /* number of components for a msf */ 1 35 4 attributes_ptr ptr, /* Pointer to the attributes structure 1 36* for this file. (See gtss_file_attributes.incl.pl1) */ 1 37 1 38 4 pat_body, 1 39 1 40 5 word_0, 1 41 6 defective bit (1) unal, /* 1 = file has defective space */ 1 42 6 io_errors bit (1) unal, /* 1 = I/O errors encountered on file */ 1 43 6 reserved bit (2) unal, /* Reserved for GCOS */ 1 44 6 sct bit (12) unal, /* address of SCT for device on which 1 45* file begins or if cataloged, 1 46* for device with file catalog entry */ 1 47 6 reserved2 bit (2) unal, /* Reserved for GCOS */ 1 48 1 49 5 word_1, 1 50 6 io_time fixed bin (35), /* I/O time for this file */ 1 51 1 52 5 word_2, 1 53 6 protected bit (1) unal, /* 1 = file has protected allocation */ 1 54 6 hash_code bit (5) unal, /* hash code of user name under which 1 55* file is cataloged */ 1 56 6 not_cat bit (1) unal, /* 1 = file is not cataloged */ 1 57 6 last_desc bit (1) unal, /* 1 = last descriptor for file is not in memory */ 1 58 6 random bit (1) unal, /* 1 = access to file is random */ 1 59 6 perm bit (1) unal, /* 1 = file space is permanently assigned */ 1 60 6 first_desc bit (1) unal, /* 1 = first descriptor for file is not in memory */ 1 61 6 creator bit (1) unal, /* 1 = user is not creator of file */ 1 62 6 disposition bit (2) unal, /* Abort disposition code 1 63* 00 = Release 1 64* 01 = Dismount 1 65* 10 = Save 1 66* 11 = Continue */ 1 67 6 ids1 bit (1) unal, /* 1 = file is an I-D-S/I file */ 1 68 6 write_performed bit (1) unal, /* 1 = write was performed on file */ 1 69 6 unpermitted_access bit (1) unal, /* 1 = unpermitted access to file attempted or seek 1 70* attempted to part of file marked defective (only 1 71* for procted allocation) */ 1 72 6 purge bit (1) unal, /* 1 = file space to be purgedbefore deallocating file. */ 1 73 6 sector_number bit (18) unal, /* If cataloged file, sector number of file catalog 1 74* (on device with SCT referenced in word 0). If 1 75* cataloged file that is proctected (bit 0 ON in this 1 76* word), memory location of table in File Management 1 77* Supervisor Executive. If user temporary file, 1 78* largest size file has ever attained, in llinks. 1 79* If system value equals 777777 octal, it is system 1 80* file created by System Input. */ 1 81 1 82 5 word_3, 1 83 6 llink_size bit (14) unal, /* 0-13 ^= 0, Current total file size in llinks 1 84* 0-13 = 0, File size is greater than 16,383 llinks, 1 85* and if the file is cataloged, call to .MFS19,5 with 1 86* offset to PAT pointer in index 5 will cause bits 1 87* 14-35 of Q-register to be set to file size. (Unless 1 88* there is a Seek error on file catalog in which case 1 89* zero is returned. ) 1 90* */ 1 91 6 llink_position bit (22) unal, /* Relative llink position within the space descriptors 1 92* in memory. */ 1 93 1 94 5 word_4, 1 95 6 not_last_desc bit (1) unal, /* 1 = not last descriptor in memory */ 1 96 6 space_desc bit (1) unal, /* 0 = this is space descriptor */ 1 97 6 space_defective bit (1) unal, /* 1 = Space is defective */ 1 98 6 extent bit (15) unal, /* Number of llinks in this extent (area defined by this 1 99* descriptor) */ 1 100 6 origin bit (18) unal; /* device llinks number of origin of this extent */ 1 101 /* END INCLUDE FILE gtss_dfd_ext_.incl.pl1 */ 1076 1077 2 1 /* BEGIN INCLUDE FILE gtss_file_attributes.incl.pl1 */ 2 2 /* 2 3* Created: (Kepner Multics) 06/02/78 1522.0 mst Fri 2 4**/ 2 5 2 6 /* Declaration of File Attributes Segement */ 2 7 2 8 2 9 dcl gtss_file_attributes_ptr ptr init(null()); 2 10 2 11 dcl 1 gtss_file_attributes based (gtss_file_attributes_ptr) aligned, 2 12 2 max_size fixed bin (24), /* maximum size the file can grow to 2 13* in 320 word blocks. if = 0 then the 2 14* file size is unlimited. */ 2 15 2 current_size fixed bin (24), /* current size of the file in 320 word blocks */ 2 16 2 user_attributes aligned, 2 17 3 non_null bit (1) unal, /* 0 = this file has never been written to */ 2 18 3 user_attr bit (35) unal, /* User defined attributes */ 2 19 2 descriptor aligned, 2 20 3 device_type bit (6) unaligned, /* currently ignored */ 2 21 3 words_block bit (12) unaligned, /* number of words per physical block */ 2 22 3 llink_flag bit (1) unaligned, /* if 0= size in links | 1= size in llinks */ 2 23 3 mode bit (1) unaligned, /* 0= linked file | 1= random file */ 2 24 3 perm bit (1) unaligned, /* 1=permanent file|0=not */ 2 25 3 fill bit (1) unaligned, 2 26 3 size bit (14) unaligned; 2 27 2 28 2 29 /* END INCLUDE FILE gtss_file_attributes.incl.pl1 */ 1078 1079 3 1 /* BEGIN INCLUDE FILE gtss_ext_.incl.pl1 */ 3 2 /* 3 3* Created: (Wardd Multics) 05/20/78 1307.6 mst Sat 3 4* Modified: Ward 1981 add suspended_process dcl 3 5* Modified: Ron Barstad 83-07-21 Fixed level number on mcfc to 3 3 6* Modified: Ron Barstad 83-07-25 Fixed derail range in statistics to 4js3 number 3 7**/ 3 8 dcl gtss_ext_$aem fixed bin static ext /* >0 Print "additional" error information. */; 3 9 dcl gtss_ext_$bad_drl_rtrn static ext label /* Default for drl_rtrn. */; 3 10 dcl gtss_ext_$db (72)bit(1)unal static ext; 3 11 dcl gtss_ext_$deferred_catalogs_ptr ptr ext; 3 12 dcl gtss_ext_$dispose_of_drl static ext label /* quit handlers for some derails use this label to abort */; 3 13 dcl gtss_ext_$drl_rtrn (4)static ext label /* where to return at subsystem end */; 3 14 dcl gtss_ext_$drm_path char(168)static ext /* gtss_expand_pathname_stores drm_path */; 3 15 dcl gtss_ext_$drun_jid char (5) static ext /* valid only for DRUN executing under absentee */; 3 16 dcl gtss_ext_$event_channel fixed bin (71) static ext /* used for DABT signals */; 3 17 dcl gtss_ext_$finished static ext label /* Return to gtss for normal conclusion. */; 3 18 dcl gtss_ext_$gdb_name char(8)ext /* Name H* module to debug. */; 3 19 dcl gtss_ext_$get_line entry(ptr,ptr,fixed bin(21),fixed bin(21),fixed bin(35))variable ext /* Build mode input procedure. */; 3 20 dcl gtss_ext_$gtss_slave_area_seg (4) ext static ptr /* pointer to gtss slave area segment */; 3 21 dcl gtss_ext_$hcs_work_area_ptr ptr ext static /* Temp seg for acl lists. */; 3 22 dcl gtss_ext_$homedir char (64) static ext /* user's home dir */; 3 23 dcl gtss_ext_$last_k_was_out bit (1)aligned ext static /* "1"b => last tty output was output. */; 3 24 dcl gtss_ext_$pdir char (168) varying ext static /* pathname of process directory */; 3 25 dcl gtss_ext_$popup_from_pi static ext label /* transfer to this label after pi simulates popup primitive */; 3 26 dcl gtss_ext_$process_type fixed bin (17) static ext; 3 27 dcl gtss_ext_$put_chars entry(ptr,ptr,fixed bin(24),fixed bin(35)) variable ext /* Terminal output procedure. */; 3 28 dcl gtss_ext_$restart_from_pi static ext label /* transfer to this label after pi restores machine conditions */; 3 29 dcl gtss_ext_$restart_seg_ptr ptr static ext /* points to DRUN restart file when exec under absentee */; 3 30 dcl gtss_ext_$sig_ptr ext static ptr /* saved ptr to signal_ */; 3 31 dcl gtss_ext_$stack_level_ fixed bin ext static; 3 32 dcl gtss_ext_$suspended_process bit(1) ext static; 3 33 dcl gtss_ext_$SYstarstar_file_no fixed bin (24) static ext; 3 34 dcl gtss_ext_$user_id char (26)var ext; 3 35 dcl gtss_ext_$work_area_ptr ptr ext; 3 36 3 37 dcl 1 gtss_ext_$CFP_bits aligned static external 3 38 , 3 no_input_yet bit (1) unaligned /* used in gtss_CFP_input_, gtss_read_starCFP_ */ 3 39 , 3 rtn_bits bit (4) unaligned /* used in gtss_CFP_input_, gtss_CFP_output_ */ 3 40 , 3 cpos_called bit (1) unaligned /* used in gtss_CFP_input_, gtss_drl_t_cfio_, gtss_abandon_CFP_ */ 3 41 , 3 cout_called bit (1) unaligned /* used in gtss_read_starCFP_, gtss_abandon_CFP_ */ 3 42 , 3 build_mode bit (1) unaligned /* used in gtss_build_, gtss_dsd_process_ */ 3 43 ; 3 44 3 45 dcl 1 gtss_ext_$com_reg aligned static ext, 3 46 3 tsdmx, 3 47 4 dst fixed bin (18) unsigned unaligned, 3 48 4 dit fixed bin (18) unsigned unaligned, 3 49 3 tsdpt fixed bin (36) unsigned unaligned, 3 50 3 tsddt fixed bin (36) unsigned unaligned, 3 51 3 tsdid bit (72) unaligned, 3 52 3 tsdsd bit (36) unaligned, 3 53 3 tsdst fixed bin (36) unsigned unaligned, 3 54 3 tsdjb fixed bin (35) unaligned, 3 55 3 tsdgt, 3 56 4 ust_loc fixed bin (18) unsigned unaligned, 3 57 4 gating_ctl fixed bin (18) unsigned unaligned, 3 58 3 tcdfr bit (36) unaligned; 3 59 3 60 dcl 1 gtss_ext_$flags aligned static ext 3 61 , 3 dispose_of_drl_on_pi bit (01) unal /* 1 => drl that should be aborted after quit-pi sequence */ 3 62 , 3 drl_in_progress bit (01) unal /* 1 => drl handler executing; 0 => gcos code executing */ 3 63 , 3 popup_from_pi bit (01) unal /* 1 => derail processor will simulate Gcos break instead of returning */ 3 64 , 3 unfinished_drl bit (01) unal /* 1 => subsystem is handling breaks and quit was raised during a drl */ 3 65 , 3 ss_time_limit_set bit (01) unal /* 1 => exec time limit set for subsystem */ 3 66 , 3 timer_ranout bit (01) unal /* 1 => user is executing timer runout code */ 3 67 , 3 gtss_com_err_sw bit (01) unal /* 1 => stop com_err_ string from going to terminal */ 3 68 , 3 available bit (65) unal 3 69 ; 3 70 3 71 3 72 dcl 1 gtss_ext_$statistics aligned static ext, /* Derail usage statistics */ 3 73 3 total_time (-10:71)fixed bin (71), 3 74 3 count (-10:71)fixed bin (17); 3 75 3 76 /* Declaration of Available File Table 3 77* */ 3 78 dcl 1 gtss_ext_$aft aligned ext, /* aft structure */ 3 79 3 80 3 start_list (0:102) fixed bin (24), /* >0 => 1st aft_entry row to start of next entry chain. */ 3 81 3 82 3 aft_entry (20), 3 83 4 altname char (8), /* altname name for attaching this file */ 3 84 4 next_entry fixed bin (24), /* Next aft_entry in hash chain. */ 3 85 4 previous_add fixed bin (24), /* Previously added entry. */ 3 86 4 next_add fixed bin (24), /* Entry added after this one. */ 3 87 4 used bit (1) unal, /* "1"b => aft_entry contains AFT value. */ 3 88 4 forced bit(1) unal, /* "1"b => gtss_verify_access_ forced access on this file. */ 3 89 3 90 3 free_space fixed bin (24), /* Index of start of free space list for aft entries. */ 3 91 3 first_added fixed bin (24), /* >0 => start of chain in add order. */ 3 92 3 last_added fixed bin (24) /* >0 => end of chain in added order. */; 3 93 3 94 dcl gtss_ext_$ppt ptr ext /* switch name for tapein drl */; 3 95 /** Data structure to provide access to installed 3 96* subsystems fast library load. 3 97* **/ 3 98 dcl 1 gtss_ext_$fast_lib aligned ext 3 99 , 3 fast_lib_fcb ptr /* Pointer to msf fcb. */ 3 100 , 3 fast_lib_ncp fixed bin (24) /* Number of components. */ 3 101 , 3 comp_ptr (0:9)ptr /* Pointer to component. */ 3 102 , 3 comp_wds (0:9)fixed bin (24) /* Component length (words). */ 3 103 ; 3 104 3 105 /* Pointers to segments to regulate multipler 3 106* callers to files. Same segments are used to regulate 3 107* all simulator callers. 3 108**/ 3 109 dcl 1 gtss_ext_$mcfc aligned ext, 3 110 3 multics_lock_id bit(36), 3 111 3 wait_time fixed bin, 3 112 3 files_ptr ptr, 3 113 3 names_ptr ptr, 3 114 3 callers_ptr (0:3)ptr 3 115 ; 3 116 3 117 /* END INCLUDE FILE gtss_ext_.incl.pl1 */ 1080 1081 4 1 /* BEGIN INCLUDE FILE gtss_file_values.incl.pl1 */ 4 2 /* 4 3* Created: (Wardd Multics) 09/01/78 1447.1 mst Fri 4 4**/ 4 5 4 6 /** The gtss_file_values structure provides parameters to the 4 7* gtss_attributes_mgr_ subroutine. 4 8* 4 9* The caller must provide space for this structure, fill in 4 10* the version with 1, the dname and ename with the file directory 4 11* and entry name, and for calls to gtss_attributes_mgr_$set, 4 12* fill in values to be reset and set the corresponding set_switch 4 13* to "1"b. 4 14* 4 15* If the (Multics) file located is a directory 4 16* a GCOS catalog is implied. 4 17* 4 18* If both ename and new_ename are set but no set_switch 4 19* is "1"b (and the set entry is called) this implies 4 20* that the existing attribute values are being renamed 4 21* to the new entry. 4 22* 4 23* Then: call gtss_attributes_mgr_$set(addr(gtss_file_values),code); 4 24* 4 25* Use of ename/new_ename combinations 4 26* for set entry. 4 27* 4 28* -|-----------|-----------|-|-----------------| 4 29* | ename |new_ename || meaning | 4 30* =|===========|===========|=|=================| 4 31* | blanks | blanks || illegal | 4 32* -|-----------|-----------|-|-----------------| 4 33* | blanks |not blanks|| initial | 4 34* | | || setting | 4 35* -|-----------|-----------|-|-----------------| 4 36* |not blanks| blanks || check enames's | 4 37* | | ||attribute values| 4 38* | | || and reset. | 4 39* -|-----------|-----------|-|-----------------| 4 40* |not blanks|not blanks|| delete ename's | 4 41* | | || values and put | 4 42* | | || on values for | 4 43* | | || new_ename's | 4 44* -|-----------|-----------|-|-----------------| 4 45***/ 4 46 dcl attr_name (0:7)char(4)static int options(constant)init( 4 47 /* 0 */ "mode" 4 48 , /* 1 */ "maxl" 4 49 , /* 2 */ "curl" 4 50 , /* 3 */ "busy" 4 51 , /* 4 */ "attr" 4 52 , /* 5 */ "null" 4 53 , /* 6 */ "noal" 4 54 , /* 7 */ "crdt" 4 55 ); 4 56 dcl 1 gtss_file_values aligned automatic 4 57 , 3 version fixed bin(17) /* Current version is 1. (OUT) */ 4 58 , 3 dname char(168)unal /* Directory name. (IN) */ 4 59 , 3 ename char(032)unal /* Entry name. (IN) */ 4 60 , 3 new_ename char(032)unal /* New entry name. (IN) */ 4 61 , 3 change_name bit(1) /* "1"b => Change segment name. (IN) */ 4 62 , 3 catalog bit(1) /* "1"b => File is a catalog (Multics directory). (OUT) */ 4 63 , 3 info_ptr ptr /* hcs_$status_long (4. entry_ptr) info structure address. (OUT) */ 4 64 , 3 set_switch /* "1"b => Set corresponding value. (IN) */ 4 65 , 4 mode_random bit(01)unal /* 0. Set the random/sequential(linked) field. */ 4 66 , 4 maxll bit(01)unal /* 1. Set max size value. */ 4 67 , 4 curll bit(01)unal /* 2. Set current size value. */ 4 68 , 4 busy bit(01)unal /* 3. Set file as busy. */ 4 69 , 4 attr bit(01)unal /* 4. Set user attributes value. */ 4 70 , 4 null_file bit(01)unal /* 5. Set null file value. */ 4 71 , 4 number_allocations bit(01)unal /* 6. Set or increment number of uses. */ 4 72 , 4 creation_date bit(01)unal /* 7. Set file creation date. */ 4 73 , 4 not_in_use bit(28)unal 4 74 /* The above set_ variables should be declared in an order 4 75* corresponding to the value in the attr_name array. */ 4 76 , 3 data_flags /* (OUT|IN) */ 4 77 , 4 mode_random bit(01)unal /* "1"b => random. */ 4 78 , 4 busy bit(01)unal /* "1"b => file is busy. */ 4 79 , 4 null_file bit(01)unal /* "1"b => file is null. */ 4 80 , 4 not_in_use2 bit(33)unal 4 81 , 3 data_fields /* (OUT|IN) */ 4 82 , 4 curll fixed bin(35) /* Current length in llinks (>=0). */ 4 83 , 4 maxll fixed bin(35) /* Maximum length in llinks (>=0). */ 4 84 , 4 number_allocations fixed bin(35) /* 0 => set | >0 => increment modulo 262144. */ 4 85 , 3 attributes /* (OUT|IN) */ 4 86 , 4 not_in_use3 bit(01)unal 4 87 , 4 attr bit(35)unal /* User specified file attribute value. */ 4 88 , 3 creation_date char(06) /* MMDDYY of creation. */ 4 89 ; 4 90 4 91 4 92 /* END INCLUDE FILE gtss_file_values.incl.pl1 */ 1082 1083 5 1 /* BEGIN INCLUDE FILE gtss_entry_dcls.incl.pl1 */ 5 2 /* 5 3* Created: (Wardd Multics) 06/30/78 1624.8 mst Fri 5 4* Modified: Ron Barstad 84-02-24 Fixed wrong and obsolete entries 5 5**/ 5 6 5 7 /** gtss external entry variables. **/ 5 8 dcl com_err_ entry() options(variable); 5 9 dcl gtss_CFP_abort_ entry options(variable); 5 10 dcl gtss_CFP_break_ entry options(variable); 5 11 dcl gtss_CFP_input_ entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 5 12 dcl gtss_CFP_output_ entry (ptr, ptr, fixed bin(21), fixed bin(35)); 5 13 dcl gtss_abandon_CFP_ entry options(variable); 5 14 dcl gtss_abort_dump_ entry (fixed bin(18)); 5 15 dcl gtss_abort_subsystem_ entry options (variable); 5 16 dcl gtss_abort_subsystem_$not_imp entry (ptr, fixed bin(24)); 5 17 dcl gtss_abs_login_banner_ entry() returns(char(*)); 5 18 dcl gtss_abs_logout_banner_ entry() returns(char(*)); 5 19 dcl gtss_abs_$abs_equiv entry options(variable); 5 20 dcl gtss_abs_$cpu_runout entry (ptr, char(4)); 5 21 dcl gtss_abs_$create_absin entry() returns(char(*)); 5 22 dcl gtss_abs_$dabt_check entry (ptr, char(4)); 5 23 dcl gtss_abs_$get_id entry (char(5)) returns(char(19)); 5 24 dcl gtss_abs_$get_drm entry() returns(char(*)); 5 25 dcl gtss_adjust_size_ entry (ptr); 5 26 dcl gtss_aft_$add entry (char(8), fixed bin(24), fixed bin(35)); 5 27 dcl gtss_aft_$delete entry (char(8), fixed bin(24), fixed bin(35)); 5 28 dcl gtss_aft_$find entry (char(8), fixed bin(24), fixed bin(35)); 5 29 dcl gtss_aft_$initialize entry (fixed bin(35)); 5 30 dcl gtss_ascii_bcd_ entry (ptr, fixed bin, ptr); 5 31 dcl gtss_attributes_mgr_$get entry (ptr, fixed bin(35)); 5 32 dcl gtss_attributes_mgr_$set entry (ptr, fixed bin(35)); 5 33 dcl gtss_bcd_ascii_ entry (ptr, fixed bin(24), ptr); 5 34 dcl gtss_bcd_ascii_$lc entry (ptr, fixed bin(24), ptr); 5 35 dcl gtss_break_vector_ entry (); 5 36 dcl gtss_break_vector_$drl_in_progress entry() returns(bit(1)); 5 37 dcl gtss_break_vector_$status entry() returns(bit(1)); 5 38 dcl gtss_build_ entry options(variable); 5 39 dcl gtss_com_err_ entry options(variable); 5 40 dcl gtss_derail_processor_ entry (ptr, char(*), ptr, ptr, bit(1) aligned) /* called at fault time instead of signal_ */; 5 41 dcl gtss_derail_processor_$set entry options(variable); 5 42 dcl gtss_dq_$catp entry (char (5), ptr, fixed bin (18) unsigned); 5 43 dcl gtss_dq_$create entry (bit(1)); 5 44 dcl gtss_dq_$dibp entry (char(5), ptr); 5 45 dcl gtss_dq_$entries_info entry (ptr, fixed bin (18) unsigned, fixed bin (18) unsigned); 5 46 dcl gtss_dq_$hdrp entry (ptr); 5 47 dcl gtss_dq_$mod_js entry (char(5), fixed bin (6) unsigned, bit (1)); 5 48 dcl gtss_dq_$open_exc entry (bit(1)); 5 49 dcl gtss_dq_$open_gen entry (bit(1)); 5 50 dcl gtss_drl_abort_ entry (ptr, fixed bin); 5 51 dcl gtss_drl_addmem_ entry (ptr, fixed bin); 5 52 dcl gtss_drl_callss_ entry (ptr, fixed bin); 5 53 dcl gtss_drl_corfil_ entry (ptr, fixed bin); 5 54 dcl gtss_drl_defil_ entry (ptr, fixed bin); 5 55 dcl gtss_drl_defil_$subr entry (ptr, ptr, ptr); 5 56 dcl gtss_drl_dio_ entry (ptr, fixed bin); 5 57 dcl gtss_drl_drlimt_ entry (ptr, fixed bin); 5 58 dcl gtss_drl_drlsav_ entry (ptr, fixed bin); 5 59 dcl gtss_drl_filact_ entry (ptr, fixed bin); 5 60 dcl gtss_drl_filsp_ entry (ptr, fixed bin); 5 61 dcl gtss_drl_grow_ entry (ptr, fixed bin); 5 62 dcl gtss_drl_gwake_ entry (ptr, fixed bin); 5 63 dcl gtss_drl_jsts_ entry (ptr, fixed bin); 5 64 dcl gtss_drl_kin_ entry (ptr, fixed bin); 5 65 dcl gtss_drl_kotnow_ entry (ptr, fixed bin); 5 66 dcl gtss_drl_kotnow_$gtss_drl_kout_ entry (ptr, fixed bin); 5 67 dcl gtss_drl_koutn_ entry (ptr, fixed bin); 5 68 dcl gtss_drl_morlnk_ entry (ptr, fixed bin); 5 69 dcl gtss_drl_msub_ entry (ptr, fixed bin); 5 70 dcl gtss_drl_objtim_ entry (ptr, fixed bin); 5 71 dcl gtss_drl_part_ entry (ptr, fixed bin); 5 72 dcl gtss_drl_pasaft_ entry (ptr, fixed bin); 5 73 dcl gtss_drl_pasdes_ entry (ptr, fixed bin); 5 74 dcl gtss_drl_pasust_ entry (ptr, fixed bin); 5 75 dcl gtss_drl_pdio_ entry (ptr, fixed bin); 5 76 dcl gtss_drl_prgdes_ entry (ptr, fixed bin); 5 77 dcl gtss_drl_pseudo_ entry (ptr, fixed bin); 5 78 dcl gtss_drl_relmem_ entry (ptr, fixed bin); 5 79 dcl gtss_drl_restor_ entry (ptr, fixed bin); 5 80 dcl gtss_drl_retfil_ entry (ptr, fixed bin); 5 81 dcl gtss_drl_return_ entry (ptr, fixed bin); 5 82 dcl gtss_drl_rew_ entry (ptr, fixed bin); 5 83 dcl gtss_drl_rstswh_ entry (ptr, fixed bin); 5 84 dcl gtss_drl_setlno_ entry (ptr, fixed bin); 5 85 dcl gtss_drl_setswh_ entry (ptr, fixed bin); 5 86 dcl gtss_drl_snumb_ entry (ptr, fixed bin); 5 87 dcl gtss_drl_spawn_ entry (ptr, fixed bin); 5 88 dcl gtss_drl_spawn_$gtss_drl_pasflr_ entry (ptr, fixed bin); 5 89 dcl gtss_drl_stoppt_ entry (ptr, fixed bin); 5 90 dcl gtss_drl_switch_ entry (ptr, fixed bin); 5 91 dcl gtss_drl_sysret_ entry (ptr, fixed bin); 5 92 dcl gtss_drl_t_cfio_ entry (ptr, fixed bin); 5 93 dcl gtss_drl_t_cmov_ entry (ptr, fixed bin); 5 94 dcl gtss_drl_t_err_ entry (ptr, fixed bin); 5 95 dcl gtss_drl_t_goto_ entry (ptr, fixed bin); 5 96 dcl gtss_drl_t_linl_ entry (ptr, fixed bin); 5 97 dcl gtss_drl_t_rscc_ entry (ptr, fixed bin); 5 98 dcl gtss_drl_tapein_ entry (ptr, fixed bin); 5 99 dcl gtss_drl_task_ entry (ptr, fixed bin); 5 100 dcl gtss_drl_termtp_ entry (ptr, fixed bin); 5 101 dcl gtss_drl_time_ entry (ptr, fixed bin); 5 102 dcl gtss_drun_ entry (bit(1)); 5 103 dcl gtss_dsd_lookup_ entry (char(8) var) returns(fixed bin(24)); 5 104 dcl gtss_dsd_process_ entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 5 105 dcl gtss_edit_dsd_ entry (ptr, fixed bin(21)) returns(fixed bin(24)); 5 106 dcl gtss_mcfc_empty entry (char(*) var); 5 107 dcl gtss_expand_pathname_ entry (ptr, char(*), char(*), fixed bin(35)); 5 108 dcl gtss_expand_pathname_$verify_umc entry (ptr, char(*), char(*), bit(18), fixed bin(35)); 5 109 dcl gtss_fault_processor_ entry options(variable); 5 110 dcl gtss_find_cond_frame_ entry (char(32) var) returns(ptr); 5 111 dcl gtss_fault_processor_$timer_runout entry (ptr, char(*)); 5 112 dcl gtss_filact_error_status_ entry (fixed bin(35))returns(bit(12)); 5 113 dcl gtss_filact_funct02_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 114 dcl gtss_filact_funct03_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 115 dcl gtss_filact_funct04_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 116 dcl gtss_filact_funct05_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 117 dcl gtss_filact_funct08_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 118 dcl gtss_filact_funct10_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 119 dcl gtss_filact_funct11_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 120 dcl gtss_filact_funct14_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 121 dcl gtss_filact_funct18_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 122 dcl gtss_filact_funct19_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 123 dcl gtss_filact_funct21_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 124 dcl gtss_filact_funct22_ entry (ptr, bit(18), ptr, ptr, ptr, fixed bin(35)); 5 125 dcl gtss_mcfc_init_ entry (char(*) var); 5 126 dcl gtss_interp_prim_ entry options(variable); 5 127 dcl gtss_interp_prim_$callss entry (char(4), ptr); 5 128 dcl gtss_interp_prim_$sysret entry options(variable); 5 129 dcl gtss_interp_prim_$t_goto entry (char(4)); 5 130 dcl gtss_ios_change_size_ entry (fixed bin(24), fixed bin(24), bit(1), fixed bin(24), fixed bin(35)); 5 131 dcl gtss_ios_close_ entry (fixed bin(24), ptr, fixed bin(35)); 5 132 dcl gtss_ios_exchange_names_ entry (fixed bin(24), fixed bin(24), fixed bin(24), fixed bin(35)); 5 133 dcl gtss_ios_initialize_ entry options(variable); 5 134 dcl gtss_ios_io_ entry (fixed bin(24), ptr, ptr, fixed bin(24), fixed bin(24), fixed bin(35)); 5 135 dcl gtss_ios_open_ entry (fixed bin(24), char(168), char(32), bit(6), bit(1), ptr, ptr, fixed bin(35)); 5 136 dcl gtss_ios_position_ entry (fixed bin(24), fixed bin(24), fixed bin(24), bit(6), ptr); 5 137 dcl gtss_mcfc_$delete entry (fixed bin(24), char(*), char(*), bit(36) aligned, ptr, fixed bin(35)); 5 138 dcl gtss_mcfc_$open entry (char(*), char(*), bit(6), bit(36) aligned, ptr, fixed bin(35)); 5 139 dcl gtss_mcfc_$close entry (char(*), char(*), bit(36) aligned, ptr, fixed bin(35)); 5 140 dcl gtss_read_starCFP_ entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 5 141 dcl gtss_read_starCFP_$last_os entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 5 142 dcl gtss_run_subsystem_ entry (fixed bin(24)); 5 143 dcl gtss_run_subsystem_$finish entry options(variable); 5 144 dcl gtss_run_subsystem_$restor entry (fixed bin(24), ptr); 5 145 dcl gtss_run_subsystem_$restor_perm entry (fixed bin(24), ptr, fixed bin(18)); 5 146 dcl gtss_set_slave_ entry (fixed bin (24), ptr); 5 147 dcl gtss_set_slave_$load_bar entry (fixed bin (17)); 5 148 dcl gtss_update_safe_store_ entry (ptr); 5 149 dcl gtss_verify_access_ entry (char(*), char(*), fixed bin(24), bit(6), bit(12) aligned); 5 150 dcl gtss_verify_access_$check_forced_access entry (char(*), char(*), fixed bin(24)); 5 151 dcl gtss_write_starCFP_ entry (ptr, ptr, fixed bin(21), fixed bin(35)); 5 152 /* END INCLUDE FILE gtss_entry_dcls.incl.pl1 */ 1084 1085 6 1 /* BEGIN INCLUDE FILE gtss_db_names.incl.pl1 */ 6 2 /* 6 3* Created: (Wardd Multics) 03/29/79 1909.1 mst Thu 6 4**/ 6 5 6 6 /* To provide a new debugging switch: 6 7* 6 8* 1) Locate the comment "Insert next entry above this comment". 6 9* 6 10* 2) Place a new declaration for a db_ variable just 6 11* above this comment, in the same manner as the 6 12* current declaration just above the comment, using 6 13* the next integer gtss_ext_$db index. 6 14* 6 15* 3) Execute the gtss|db_names ted macro (this updates 6 16* the sorted name table). 6 17* 6 18* 4) Example use: 6 19* 6 20* if db_drl_grow then do; 6 21* . 6 22* . 6 23* . 6 24* debug i/o statements using com_err_ or ioa_ 6 25* . 6 26* . 6 27* . 6 28* end; 6 29* 6 30**/ 6 31 6 32 dcl ( 6 33 db_ bit(1) defined(gtss_ext_$db(01)) 6 34 ,db_CFP_input bit(1) defined(gtss_ext_$db(02)) 6 35 ,db_drl_addmem bit(1) defined(gtss_ext_$db(03)) 6 36 ,db_drl_defil bit(1) defined(gtss_ext_$db(04)) 6 37 ,db_drl_filact bit(1) defined(gtss_ext_$db(05)) 6 38 ,db_drl_filsp bit(1) defined(gtss_ext_$db(06)) 6 39 ,db_drl_grow bit(1) defined(gtss_ext_$db(07)) 6 40 ,db_drl_rew bit(1) defined(gtss_ext_$db(08)) 6 41 ,db_filact_funct02 bit(1) defined(gtss_ext_$db(09)) 6 42 ,db_filact_funct03 bit(1) defined(gtss_ext_$db(10)) 6 43 ,db_filact_funct04 bit(1) defined(gtss_ext_$db(11)) 6 44 ,db_filact_funct05 bit(1) defined(gtss_ext_$db(12)) 6 45 ,db_filact_funct10 bit(1) defined(gtss_ext_$db(13)) 6 46 ,db_filact_funct11 bit(1) defined(gtss_ext_$db(14)) 6 47 ,db_filact_funct14 bit(1) defined(gtss_ext_$db(15)) 6 48 ,db_filact_funct18 bit(1) defined(gtss_ext_$db(16)) 6 49 ,db_filact_funct19 bit(1) defined(gtss_ext_$db(17)) 6 50 ,db_filact_funct21 bit(1) defined(gtss_ext_$db(18)) 6 51 ,db_filact_funct22 bit(1) defined(gtss_ext_$db(19)) 6 52 ,db_interp_prim bit(1) defined(gtss_ext_$db(20)) 6 53 ,db_ios bit(1) defined(gtss_ext_$db(21)) 6 54 ,db_run_subsystem bit(1) defined(gtss_ext_$db(22)) 6 55 ,db_drl_t_cfio bit(1) defined(gtss_ext_$db(23)) 6 56 ,db_drl_switch bit(1) defined(gtss_ext_$db(24)) 6 57 ,db_drl_dio bit(1) defined(gtss_ext_$db(25)) 6 58 ,db_drl_retfil bit(1) defined(gtss_ext_$db(26)) 6 59 ,db_drl_msub bit(1) defined(gtss_ext_$db(27)) 6 60 ,db_drl_callss bit(1) defined(gtss_ext_$db(28)) 6 61 ,db_drl_rstswh bit(1) defined(gtss_ext_$db(29)) 6 62 ,db_drl_setswh bit(1) defined(gtss_ext_$db(30)) 6 63 ,db_mcfc bit(1) defined(gtss_ext_$db(31)) 6 64 ,db_dq bit(1) defined(gtss_ext_$db(32)) 6 65 ,db_abs bit(1) defined(gtss_ext_$db(33)) 6 66 ,db_attributes_mgr bit(1) defined(gtss_ext_$db(34)) 6 67 ,db_expand_pathname bit(1) defined(gtss_ext_$db(35)) 6 68 ,db_drl_part bit(1) defined(gtss_ext_$db(36)) 6 69 ,db_drl_morlnk bit(1) defined(gtss_ext_$db(37)) 6 70 ,db_drl_kin bit(1) defined(gtss_ext_$db(38)) 6 71 /* Insert next entry above this comment. */ 6 72 ); 6 73 6 74 /* Table of sorted names. */ 6 75 dcl 1 debug_bit_names (38) static int options(constant) 6 76 , 2 name char(18)var init( 6 77 "" ,"CFP_input" ,"abs" ,"attributes_mgr" ,"dq" ,"drl_addmem" 6 78 ,"drl_callss" ,"drl_defil" ,"drl_dio" ,"drl_filact" ,"drl_filsp" 6 79 ,"drl_grow" ,"drl_kin" ,"drl_morlnk" ,"drl_msub" ,"drl_part" 6 80 ,"drl_retfil" ,"drl_rew" ,"drl_rstswh" ,"drl_setswh" ,"drl_switch" 6 81 ,"drl_t_cfio" ,"expand_pathname" ,"filact_funct02" ,"filact_funct03" 6 82 ,"filact_funct04" ,"filact_funct05" ,"filact_funct10" ,"filact_funct11" 6 83 ,"filact_funct14" ,"filact_funct18" ,"filact_funct19" ,"filact_funct21" 6 84 ,"filact_funct22" ,"interp_prim" ,"ios" ,"mcfc" ,"run_subsystem" 6 85 ) 6 86 , 2 value fixed bin init( 6 87 01 ,02 ,33 ,34 ,32 ,03 ,28 ,04 ,25 ,05 ,06 ,07 ,38 ,37 ,27 ,36 ,26 ,08 6 88 ,29 ,30 ,24 ,23 ,35 ,09 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 6 89 ,31 ,22 6 90 ); 6 91 /* End of table. */ 6 92 /* END INCLUDE FILE gtss_db_names.incl.pl1 */ 1086 1087 end /* gtss_ios_io_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/84 1043.8 gtss_ios_io_.pl1 >spec>on>7105>gtss_ios_io_.pl1 1076 1 09/09/83 1713.2 gtss_dfd_ext_.incl.pl1 >ldd>include>gtss_dfd_ext_.incl.pl1 1078 2 09/09/83 1714.0 gtss_file_attributes.incl.pl1 >ldd>include>gtss_file_attributes.incl.pl1 1080 3 09/09/83 1713.8 gtss_ext_.incl.pl1 >ldd>include>gtss_ext_.incl.pl1 1082 4 09/09/83 1714.0 gtss_file_values.incl.pl1 >ldd>include>gtss_file_values.incl.pl1 1084 5 12/10/84 1029.7 gtss_entry_dcls.incl.pl1 >spec>on>7105>gtss_entry_dcls.incl.pl1 1086 6 09/09/83 1713.6 gtss_db_names.incl.pl1 >ldd>include>gtss_db_names.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. M based char unaligned dcl 942 set ref 257* 257 432* 432 475* 631* 631 667* 667 689* 689 797* 797 800* 834* 834 856* 856 859* 882* action 0(21) based bit(3) level 2 packed unaligned dcl 1009 ref 209 383 ap 000106 automatic pointer dcl 901 set ref 32* 179 355 356 533 attributes_ptr 100 000016 external static pointer array level 3 dcl 1-6 set ref 32 358 bksp_sw 000110 automatic bit(1) unaligned dcl 906 set ref 521* 544 570* change_name 73 000206 automatic bit(1) level 2 dcl 4-56 set ref 360* cmd_word 000111 automatic bit(36) dcl 908 set ref 63* 64 64 710* 711 711 code parameter fixed bin(35,0) dcl 18 set ref 9 35* 71* 368* 369 com_err_ 000022 constant entry external dcl 5-8 ref 152 component 73 000016 external static fixed bin(17,0) array level 3 dcl 1-6 set ref 136* 137 145 694* 694 695 696 862* 862 863 864 count 0(30) based bit(6) level 2 in structure "op_word" packed unaligned dcl 1020 in procedure "gtss_ios_io_" ref 522 522 541 571 571 count 000112 automatic fixed bin(24,0) dcl 909 in procedure "gtss_ios_io_" set ref 48* 90 166* 166 709 count 0(24) based bit(12) level 2 in structure "dcw" packed unaligned dcl 1009 in procedure "gtss_ios_io_" ref 119 224 224 226 226 230 286 286 288 399 399 401 401 405 462 462 464 da_residue 000113 automatic fixed bin(17,0) dcl 911 set ref 57* 260* 435* 632* 668* 690* 739 798* 835* 857* data_addr based bit(18) level 2 packed unaligned dcl 1009 ref 111 125 224 224 226 226 229 302 302 311 399 399 401 401 404 479 479 488 data_flags 101 000206 automatic structure level 2 dcl 4-56 data_moved 000114 automatic fixed bin(24,0) dcl 914 set ref 56* 265* 265 440* 440 626* 626 669* 669 716 792* 792 836* 836 data_transfer parameter bit(1) dcl 677 in procedure "read_next_component" ref 675 688 data_transfer parameter bit(1) dcl 612 in procedure "read_end_of_file" ref 610 630 data_transfer parameter bit(1) dcl 778 in procedure "write_end_of_file" ref 776 796 data_transfer parameter bit(1) dcl 844 in procedure "write_next_component" ref 842 855 db_ios defined bit(1) unaligned dcl 6-32 ref 49 69 104 131 171 223 286 302 330 398 462 479 508 522 571 578 584 637 720 769 804 dcw based structure level 1 dcl 1009 dcw_number 000115 automatic fixed bin(24,0) dcl 916 set ref 204* 378* dcw_offset 000116 automatic fixed bin(24,0) dcl 918 set ref 47* 101 104* 110 165* 188 195 274* 274 275 281 311* 312 319 344 351 450* 450 451 457 488* 489 496 dcw_ptr 000120 automatic pointer dcl 919 set ref 110* 111 119 125 195* 209 224 224 224 224 226 226 226 226 229 230 281* 286 286 288 302 302 311 319* 351* 383 399 399 399 399 401 401 401 401 404 405 457* 462 462 464 479 479 488 496* dcwp 0(18) based bit(18) level 2 packed unaligned dcl 1015 ref 47 165 dev_com based bit(6) level 2 packed unaligned dcl 1020 ref 64 711 dir_name 000016 external static char(168) array level 3 packed unaligned dcl 1-6 set ref 361 disconnect 000122 automatic bit(1) unaligned dcl 920 set ref 200* 220* 224 267 374* 395* 399 442 dname 1 000206 automatic char(168) level 2 packed unaligned dcl 4-56 set ref 361* ename 53 000206 automatic char(32) level 2 packed unaligned dcl 4-56 set ref 362* entry_name 52 000016 external static char(32) array level 3 packed unaligned dcl 1-6 set ref 362 error_table_$rqover 000010 external static fixed bin(35,0) dcl 922 ref 71 fcb_ptr 000124 automatic pointer initial dcl 924 in procedure "gtss_ios_io_" set ref 924* fcb_ptr 62 000016 external static pointer array level 3 in structure "gtss_dfd_ext_$disk_file_data" dcl 1-6 in procedure "gtss_ios_io_" set ref 603 file_no parameter fixed bin(24,0) dcl 19 ref 9 25 file_position 75 000016 external static fixed bin(30,0) array level 3 dcl 1-6 set ref 127* 136 144 151 152* 515* 546* 546 553 553* 554 557 560* 716* 716 717 718* 718 file_ptr 000126 automatic pointer dcl 926 set ref 145* 147* 148* 148 257 264* 264 432 439* 439 475 631 667 689 696* 797 800 834 856 859 864* 882 file_size 76 000016 external static fixed bin(30,0) array level 3 dcl 1-6 set ref 138 141 554 557 560 698 866 fn 000130 automatic fixed bin(24,0) dcl 927 in procedure "gtss_ios_io_" set ref 25* 32 49* 52* 68 76 99 127 131 136 136 137 137 138 141 144 144 145 145 145 147 148 150 151 152 235 263 263 291 337 357 358 361 362 373 410 438 438 467 509 515 526 546 546 553 553 554 554 557 557 560 560 625 659 694 694 695 695 696 696 697 698 715 716 716 717 718 718 791 826 862 862 863 863 864 864 865 866 879 fn parameter fixed bin(24,0) dcl 596 in procedure "bad_file_status" ref 589 599 599 603 gtss_attributes_mgr_$set 000024 constant entry external dcl 5-32 ref 368 gtss_dfd_ext_$disk_file_data 000016 external static structure array level 1 dcl 1-6 gtss_disk 000016 external static structure array level 2 dcl 1-6 set ref 68* 68 76* 76 599 599 gtss_ext_$db 000020 external static bit(1) array unaligned dcl 3-10 ref 49 49 69 69 104 104 131 131 171 171 223 223 286 286 302 302 330 330 398 398 462 462 479 479 508 508 522 522 571 571 578 578 584 584 637 637 720 720 769 769 804 804 gtss_file_attributes based structure level 1 dcl 2-11 gtss_file_attributes_ptr 000204 automatic pointer initial dcl 2-9 set ref 358* 2-9* gtss_file_values 000206 automatic structure level 1 dcl 4-56 set ref 368 368 gtss_ios_bug 000100 stack reference condition dcl 154 ref 155 i 000131 automatic fixed bin(24,0) dcl 932 in procedure "gtss_ios_io_" set ref 62* 63 77* 126* 127 131* 383* 384 i 000402 automatic fixed bin(24,0) dcl 886 in procedure "write_to_end_of_sector" set ref 879* 880 881 i 000100 automatic fixed bin(24,0) dcl 773 in procedure "return_stat" set ref 717* 718 718 id_word based structure level 1 dcl 1015 idptr 000132 automatic pointer dcl 933 set ref 39* 45 46 47 162* 162 163 164 165 indicators 70 000016 external static structure array level 3 dcl 1-6 io_commands 000046 constant bit(36) initial array dcl 1062 ref 62 63 710 ioa_ 000014 constant entry external dcl 1001 ref 49 69 104 131 134 171 224 226 286 302 330 399 401 462 479 508 522 571 578 584 637 720 769 804 ioc_com 0(18) based bit(5) level 2 packed unaligned dcl 1020 ref 64 711 j 000134 automatic fixed bin(24,0) dcl 935 set ref 541* 542 542* 543* 543 544* 544 546 l 000135 automatic fixed bin(24,0) dcl 936 set ref 230* 231 231* 235 235 257 257 260 263 264 265 288* 289 289* 291 405* 406 406* 410 410 432 432 435 438 439 440 464* 465 465* 467 475 624 625* 626 629 631 631 632 634 663 664* 665 666 667 667 668 669 688 689 689 690 693* 693 790 791* 792 795 797 797 798 800 801 830 831* 832 833 834 834 835 836 855 856 856 857 859 861* 861 881* 882 last_component 000136 automatic bit(1) unaligned dcl 939 set ref 137* 138 627 695* 698 793 863* 866 memory_limit parameter fixed bin(24,0) dcl 20 ref 9 27 memory_ptr parameter pointer dcl 21 ref 9 40 msf 70 000016 external static bit(1) array level 4 packed unaligned dcl 1-6 set ref 145 msf_array_ptr 64 000016 external static pointer array level 3 dcl 1-6 set ref 145 696 864 msf_components based pointer array dcl 947 ref 145 696 864 new_ename 63 000206 automatic char(32) level 2 packed unaligned dcl 4-56 set ref 363* no_components 77 000016 external static fixed bin(24,0) array level 3 dcl 1-6 set ref 137 695 863 non_null 2 based bit(1) level 3 packed unaligned dcl 2-11 set ref 179 355 356* 533 null_file 100(05) 000206 automatic bit(1) level 3 in structure "gtss_file_values" packed unaligned dcl 4-56 in procedure "gtss_ios_io_" set ref 365* null_file 101(02) 000206 automatic bit(1) level 3 in structure "gtss_file_values" packed unaligned dcl 4-56 in procedure "gtss_ios_io_" set ref 366* offset 74 000016 external static fixed bin(24,0) array level 3 dcl 1-6 set ref 144* 148 235 263* 263 291 410 438* 438 467 625 659 697* 791 826 865* 879 op_word based structure level 1 dcl 1020 opptr 000140 automatic pointer dcl 959 set ref 45* 64 64 163* 522 522 541 571 571 711 711 pat_body 102 000016 external static structure array level 3 dcl 1-6 perm 104(09) 000016 external static bit(1) array level 5 packed unaligned dcl 1-6 set ref 357 permissions 71 000016 external static structure array level 3 dcl 1-6 random 104(08) 000016 external static bit(1) array level 5 packed unaligned dcl 1-6 set ref 99 131 150 509 526 715 rec_ct_residue 000142 automatic fixed bin(24,0) dcl 961 set ref 557* 558 record_quota_overflow 000144 stack reference condition dcl 962 ref 67 return_word based structure level 1 dcl 1028 scratch_status 000152 automatic bit(72) dcl 964 set ref 726 729 seek_address based fixed bin(24,0) dcl 965 set ref 126 128* seek_ptr 000154 automatic pointer dcl 966 set ref 125* 126 128 seeksw 000156 automatic bit(1) unaligned dcl 968 set ref 37* 96* 172 331 seg_length 000157 automatic fixed bin(24,0) dcl 969 set ref 138* 141* 143* 235 291 410 467 625 659 698* 700* 791 826 866* 868* select_ptr parameter pointer dcl 22 ref 9 26 select_seg_ptr 000160 automatic pointer dcl 970 set ref 42* 44 110 125 195 281 319 351 457 496 732 select_seq_in_memory 000162 automatic bit(1) unaligned dcl 972 set ref 44* 101 111 188 275 312 344 451 489 722 set_switch 100 000206 automatic structure level 2 dcl 4-56 set ref 364* single_segment_ptr 66 000016 external static pointer array level 3 dcl 1-6 set ref 147 slave_status 000163 automatic bit(36) dcl 977 set ref 38* 181* 558* 641* 735 808* sp 000164 automatic pointer dcl 978 set ref 26* 39 42 sptr 000170 automatic pointer dcl 980 set ref 46* 164* 711* 711 720 720 722 729 732 stat_words based structure level 1 dcl 1032 status parameter fixed bin(24,0) dcl 597 in procedure "bad_file_status" set ref 589 600* 604* status parameter fixed bin(24,0) dcl 23 in procedure "gtss_ios_io_" set ref 9 34* 52* 73* 82* 91* 103* 114* 120* 173* 180* 190* 215* 277* 305* 314* 324* 332* 338* 346* 369* 390* 453* 482* 491* 501* 510* 529* 534* 555* 628* 662* 724 724* 740 740 741 794* 829* status_return based bit(18) level 2 packed unaligned dcl 1028 ref 720 720 722 729 732 storlimit 000166 automatic fixed bin(24,0) dcl 979 set ref 27* 101 104* 111 188 235 275 312 344 410 451 489 659 664 722 826 831 sw1 based bit(36) level 2 dcl 1032 set ref 735* 757* 761* 765* 769 769 sw2 1 based bit(36) level 2 dcl 1032 set ref 736* 738* 739* 769 769 swptr 000172 automatic pointer dcl 981 set ref 726* 729* 732* 735 736 738 739 757 761 765 769 769 769 769 sys_info$max_seg_size 000012 external static fixed bin(35,0) dcl 982 ref 136 141 143 144 698 700 866 868 ta_offset 000174 automatic fixed bin(24,0) dcl 983 set ref 229* 234 235 260 404* 409 410 435 632 659 664 668 690 690* 798 826 831 835 857 857* ta_ptr 000176 automatic pointer dcl 985 set ref 234* 257 409* 432 631 667 689 797 834 856 ta_seg_ptr 000200 automatic pointer dcl 987 set ref 40* 44 234 409 tdcw_previous 000202 automatic bit(1) unaligned dcl 989 set ref 201* 282* 304 310* 375* 458* 481 487* user_attributes 2 based structure level 2 dcl 2-11 version 000206 automatic fixed bin(17,0) level 2 dcl 4-56 set ref 359* wc_residue 000203 automatic fixed bin(24,0) dcl 991 set ref 58* 268* 306* 315* 443* 483* 492* 624* 634* 634 636 637* 637 637 663* 666* 666 693 738 790* 801* 801 803 804* 804 804 830* 833* 833 861 word_2 104 000016 external static structure array level 4 dcl 1-6 write 71(02) 000016 external static bit(1) array level 4 packed unaligned dcl 1-6 set ref 337 write_performed 104(15) 000016 external static bit(1) array level 5 packed unaligned dcl 1-6 set ref 373* x 000332 automatic fixed bin(17,0) dcl 635 in procedure "read_end_of_file" set ref 636* 637* 641 x 000356 automatic fixed bin(17,0) dcl 802 in procedure "write_end_of_file" set ref 803* 804* 808 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. acl_ptr automatic pointer dcl 899 attr_name internal static char(4) initial array unaligned dcl 4-46 bc automatic fixed bin(24,0) dcl 902 bit72 based bit(72) dcl 896 bit_count automatic fixed bin(24,0) dcl 904 db_ defined bit(1) unaligned dcl 6-32 db_CFP_input defined bit(1) unaligned dcl 6-32 db_abs defined bit(1) unaligned dcl 6-32 db_attributes_mgr defined bit(1) unaligned dcl 6-32 db_dq defined bit(1) unaligned dcl 6-32 db_drl_addmem defined bit(1) unaligned dcl 6-32 db_drl_callss defined bit(1) unaligned dcl 6-32 db_drl_defil defined bit(1) unaligned dcl 6-32 db_drl_dio defined bit(1) unaligned dcl 6-32 db_drl_filact defined bit(1) unaligned dcl 6-32 db_drl_filsp defined bit(1) unaligned dcl 6-32 db_drl_grow defined bit(1) unaligned dcl 6-32 db_drl_kin defined bit(1) unaligned dcl 6-32 db_drl_morlnk defined bit(1) unaligned dcl 6-32 db_drl_msub defined bit(1) unaligned dcl 6-32 db_drl_part defined bit(1) unaligned dcl 6-32 db_drl_retfil defined bit(1) unaligned dcl 6-32 db_drl_rew defined bit(1) unaligned dcl 6-32 db_drl_rstswh defined bit(1) unaligned dcl 6-32 db_drl_setswh defined bit(1) unaligned dcl 6-32 db_drl_switch defined bit(1) unaligned dcl 6-32 db_drl_t_cfio defined bit(1) unaligned dcl 6-32 db_expand_pathname defined bit(1) unaligned dcl 6-32 db_filact_funct02 defined bit(1) unaligned dcl 6-32 db_filact_funct03 defined bit(1) unaligned dcl 6-32 db_filact_funct04 defined bit(1) unaligned dcl 6-32 db_filact_funct05 defined bit(1) unaligned dcl 6-32 db_filact_funct10 defined bit(1) unaligned dcl 6-32 db_filact_funct11 defined bit(1) unaligned dcl 6-32 db_filact_funct14 defined bit(1) unaligned dcl 6-32 db_filact_funct18 defined bit(1) unaligned dcl 6-32 db_filact_funct19 defined bit(1) unaligned dcl 6-32 db_filact_funct21 defined bit(1) unaligned dcl 6-32 db_filact_funct22 defined bit(1) unaligned dcl 6-32 db_interp_prim defined bit(1) unaligned dcl 6-32 db_mcfc defined bit(1) unaligned dcl 6-32 db_run_subsystem defined bit(1) unaligned dcl 6-32 debug_bit_names internal static structure array level 1 unaligned dcl 6-75 decode_mode internal static bit(3) initial array dcl 1038 delete_$path 000000 constant entry external dcl 998 error_table_$namedup external static fixed bin(35,0) dcl 921 error_table_$segknown external static fixed bin(35,0) dcl 923 file_dir automatic char(168) unaligned dcl 892 file_dir_len automatic fixed bin(17,0) dcl 893 file_ent automatic char(32) unaligned dcl 894 gcos_status based bit(12) dcl 895 get_mode automatic fixed bin(5,0) dcl 929 gsc automatic fixed bin(24,0) dcl 931 gsp automatic pointer dcl 897 gtss_CFP_abort_ 000000 constant entry external dcl 5-9 gtss_CFP_break_ 000000 constant entry external dcl 5-10 gtss_CFP_input_ 000000 constant entry external dcl 5-11 gtss_CFP_output_ 000000 constant entry external dcl 5-12 gtss_abandon_CFP_ 000000 constant entry external dcl 5-13 gtss_abort_dump_ 000000 constant entry external dcl 5-14 gtss_abort_subsystem_ 000000 constant entry external dcl 5-15 gtss_abort_subsystem_$not_imp 000000 constant entry external dcl 5-16 gtss_abs_$abs_equiv 000000 constant entry external dcl 5-19 gtss_abs_$cpu_runout 000000 constant entry external dcl 5-20 gtss_abs_$create_absin 000000 constant entry external dcl 5-21 gtss_abs_$dabt_check 000000 constant entry external dcl 5-22 gtss_abs_$get_drm 000000 constant entry external dcl 5-24 gtss_abs_$get_id 000000 constant entry external dcl 5-23 gtss_abs_login_banner_ 000000 constant entry external dcl 5-17 gtss_abs_logout_banner_ 000000 constant entry external dcl 5-18 gtss_adjust_size_ 000000 constant entry external dcl 5-25 gtss_aft_$add 000000 constant entry external dcl 5-26 gtss_aft_$delete 000000 constant entry external dcl 5-27 gtss_aft_$find 000000 constant entry external dcl 5-28 gtss_aft_$initialize 000000 constant entry external dcl 5-29 gtss_ascii_bcd_ 000000 constant entry external dcl 5-30 gtss_attributes_mgr_$get 000000 constant entry external dcl 5-31 gtss_bcd_ascii_ 000000 constant entry external dcl 5-33 gtss_bcd_ascii_$lc 000000 constant entry external dcl 5-34 gtss_break_vector_ 000000 constant entry external dcl 5-35 gtss_break_vector_$drl_in_progress 000000 constant entry external dcl 5-36 gtss_break_vector_$status 000000 constant entry external dcl 5-37 gtss_build_ 000000 constant entry external dcl 5-38 gtss_com_err_ 000000 constant entry external dcl 5-39 gtss_derail_processor_ 000000 constant entry external dcl 5-40 gtss_derail_processor_$set 000000 constant entry external dcl 5-41 gtss_dq_$catp 000000 constant entry external dcl 5-42 gtss_dq_$create 000000 constant entry external dcl 5-43 gtss_dq_$dibp 000000 constant entry external dcl 5-44 gtss_dq_$entries_info 000000 constant entry external dcl 5-45 gtss_dq_$hdrp 000000 constant entry external dcl 5-46 gtss_dq_$mod_js 000000 constant entry external dcl 5-47 gtss_dq_$open_exc 000000 constant entry external dcl 5-48 gtss_dq_$open_gen 000000 constant entry external dcl 5-49 gtss_drl_abort_ 000000 constant entry external dcl 5-50 gtss_drl_addmem_ 000000 constant entry external dcl 5-51 gtss_drl_callss_ 000000 constant entry external dcl 5-52 gtss_drl_corfil_ 000000 constant entry external dcl 5-53 gtss_drl_defil_ 000000 constant entry external dcl 5-54 gtss_drl_defil_$subr 000000 constant entry external dcl 5-55 gtss_drl_dio_ 000000 constant entry external dcl 5-56 gtss_drl_drlimt_ 000000 constant entry external dcl 5-57 gtss_drl_drlsav_ 000000 constant entry external dcl 5-58 gtss_drl_filact_ 000000 constant entry external dcl 5-59 gtss_drl_filsp_ 000000 constant entry external dcl 5-60 gtss_drl_grow_ 000000 constant entry external dcl 5-61 gtss_drl_gwake_ 000000 constant entry external dcl 5-62 gtss_drl_jsts_ 000000 constant entry external dcl 5-63 gtss_drl_kin_ 000000 constant entry external dcl 5-64 gtss_drl_kotnow_ 000000 constant entry external dcl 5-65 gtss_drl_kotnow_$gtss_drl_kout_ 000000 constant entry external dcl 5-66 gtss_drl_koutn_ 000000 constant entry external dcl 5-67 gtss_drl_morlnk_ 000000 constant entry external dcl 5-68 gtss_drl_msub_ 000000 constant entry external dcl 5-69 gtss_drl_objtim_ 000000 constant entry external dcl 5-70 gtss_drl_part_ 000000 constant entry external dcl 5-71 gtss_drl_pasaft_ 000000 constant entry external dcl 5-72 gtss_drl_pasdes_ 000000 constant entry external dcl 5-73 gtss_drl_pasust_ 000000 constant entry external dcl 5-74 gtss_drl_pdio_ 000000 constant entry external dcl 5-75 gtss_drl_prgdes_ 000000 constant entry external dcl 5-76 gtss_drl_pseudo_ 000000 constant entry external dcl 5-77 gtss_drl_relmem_ 000000 constant entry external dcl 5-78 gtss_drl_restor_ 000000 constant entry external dcl 5-79 gtss_drl_retfil_ 000000 constant entry external dcl 5-80 gtss_drl_return_ 000000 constant entry external dcl 5-81 gtss_drl_rew_ 000000 constant entry external dcl 5-82 gtss_drl_rstswh_ 000000 constant entry external dcl 5-83 gtss_drl_setlno_ 000000 constant entry external dcl 5-84 gtss_drl_setswh_ 000000 constant entry external dcl 5-85 gtss_drl_snumb_ 000000 constant entry external dcl 5-86 gtss_drl_spawn_ 000000 constant entry external dcl 5-87 gtss_drl_spawn_$gtss_drl_pasflr_ 000000 constant entry external dcl 5-88 gtss_drl_stoppt_ 000000 constant entry external dcl 5-89 gtss_drl_switch_ 000000 constant entry external dcl 5-90 gtss_drl_sysret_ 000000 constant entry external dcl 5-91 gtss_drl_t_cfio_ 000000 constant entry external dcl 5-92 gtss_drl_t_cmov_ 000000 constant entry external dcl 5-93 gtss_drl_t_err_ 000000 constant entry external dcl 5-94 gtss_drl_t_goto_ 000000 constant entry external dcl 5-95 gtss_drl_t_linl_ 000000 constant entry external dcl 5-96 gtss_drl_t_rscc_ 000000 constant entry external dcl 5-97 gtss_drl_tapein_ 000000 constant entry external dcl 5-98 gtss_drl_task_ 000000 constant entry external dcl 5-99 gtss_drl_termtp_ 000000 constant entry external dcl 5-100 gtss_drl_time_ 000000 constant entry external dcl 5-101 gtss_drun_ 000000 constant entry external dcl 5-102 gtss_dsd_lookup_ 000000 constant entry external dcl 5-103 gtss_dsd_process_ 000000 constant entry external dcl 5-104 gtss_edit_dsd_ 000000 constant entry external dcl 5-105 gtss_expand_pathname_ 000000 constant entry external dcl 5-107 gtss_expand_pathname_$verify_umc 000000 constant entry external dcl 5-108 gtss_ext_$CFP_bits external static structure level 1 dcl 3-37 gtss_ext_$SYstarstar_file_no external static fixed bin(24,0) dcl 3-33 gtss_ext_$aem external static fixed bin(17,0) dcl 3-8 gtss_ext_$aft external static structure level 1 dcl 3-78 gtss_ext_$bad_drl_rtrn external static label variable dcl 3-9 gtss_ext_$com_reg external static structure level 1 dcl 3-45 gtss_ext_$deferred_catalogs_ptr external static pointer dcl 3-11 gtss_ext_$dispose_of_drl external static label variable dcl 3-12 gtss_ext_$drl_rtrn external static label variable array dcl 3-13 gtss_ext_$drm_path external static char(168) unaligned dcl 3-14 gtss_ext_$drun_jid external static char(5) unaligned dcl 3-15 gtss_ext_$event_channel external static fixed bin(71,0) dcl 3-16 gtss_ext_$fast_lib external static structure level 1 dcl 3-98 gtss_ext_$finished external static label variable dcl 3-17 gtss_ext_$flags external static structure level 1 dcl 3-60 gtss_ext_$gdb_name external static char(8) unaligned dcl 3-18 gtss_ext_$get_line external static entry variable dcl 3-19 gtss_ext_$gtss_slave_area_seg external static pointer array dcl 3-20 gtss_ext_$hcs_work_area_ptr external static pointer dcl 3-21 gtss_ext_$homedir external static char(64) unaligned dcl 3-22 gtss_ext_$last_k_was_out external static bit(1) dcl 3-23 gtss_ext_$mcfc external static structure level 1 dcl 3-109 gtss_ext_$pdir external static varying char(168) dcl 3-24 gtss_ext_$popup_from_pi external static label variable dcl 3-25 gtss_ext_$ppt external static pointer dcl 3-94 gtss_ext_$process_type external static fixed bin(17,0) dcl 3-26 gtss_ext_$put_chars external static entry variable dcl 3-27 gtss_ext_$restart_from_pi external static label variable dcl 3-28 gtss_ext_$restart_seg_ptr external static pointer dcl 3-29 gtss_ext_$sig_ptr external static pointer dcl 3-30 gtss_ext_$stack_level_ external static fixed bin(17,0) dcl 3-31 gtss_ext_$statistics external static structure level 1 dcl 3-72 gtss_ext_$suspended_process external static bit(1) unaligned dcl 3-32 gtss_ext_$user_id external static varying char(26) dcl 3-34 gtss_ext_$work_area_ptr external static pointer dcl 3-35 gtss_fault_processor_ 000000 constant entry external dcl 5-109 gtss_fault_processor_$timer_runout 000000 constant entry external dcl 5-111 gtss_filact_error_status_ 000000 constant entry external dcl 5-112 gtss_filact_funct02_ 000000 constant entry external dcl 5-113 gtss_filact_funct03_ 000000 constant entry external dcl 5-114 gtss_filact_funct04_ 000000 constant entry external dcl 5-115 gtss_filact_funct05_ 000000 constant entry external dcl 5-116 gtss_filact_funct08_ 000000 constant entry external dcl 5-117 gtss_filact_funct10_ 000000 constant entry external dcl 5-118 gtss_filact_funct11_ 000000 constant entry external dcl 5-119 gtss_filact_funct14_ 000000 constant entry external dcl 5-120 gtss_filact_funct18_ 000000 constant entry external dcl 5-121 gtss_filact_funct19_ 000000 constant entry external dcl 5-122 gtss_filact_funct21_ 000000 constant entry external dcl 5-123 gtss_filact_funct22_ 000000 constant entry external dcl 5-124 gtss_find_cond_frame_ 000000 constant entry external dcl 5-110 gtss_interp_prim_ 000000 constant entry external dcl 5-126 gtss_interp_prim_$callss 000000 constant entry external dcl 5-127 gtss_interp_prim_$sysret 000000 constant entry external dcl 5-128 gtss_interp_prim_$t_goto 000000 constant entry external dcl 5-129 gtss_ios_change_size_ 000000 constant entry external dcl 5-130 gtss_ios_close_ 000000 constant entry external dcl 5-131 gtss_ios_exchange_names_ 000000 constant entry external dcl 5-132 gtss_ios_initialize_ 000000 constant entry external dcl 5-133 gtss_ios_io_ 000000 constant entry external dcl 5-134 gtss_ios_open_ 000000 constant entry external dcl 5-135 gtss_ios_position_ 000000 constant entry external dcl 5-136 gtss_mcfc_$close 000000 constant entry external dcl 5-139 gtss_mcfc_$delete 000000 constant entry external dcl 5-137 gtss_mcfc_$open 000000 constant entry external dcl 5-138 gtss_mcfc_empty 000000 constant entry external dcl 5-106 gtss_mcfc_init_ 000000 constant entry external dcl 5-125 gtss_read_starCFP_ 000000 constant entry external dcl 5-140 gtss_read_starCFP_$last_os 000000 constant entry external dcl 5-141 gtss_run_subsystem_ 000000 constant entry external dcl 5-142 gtss_run_subsystem_$finish 000000 constant entry external dcl 5-143 gtss_run_subsystem_$restor 000000 constant entry external dcl 5-144 gtss_run_subsystem_$restor_perm 000000 constant entry external dcl 5-145 gtss_set_slave_ 000000 constant entry external dcl 5-146 gtss_set_slave_$load_bar 000000 constant entry external dcl 5-147 gtss_update_safe_store_ 000000 constant entry external dcl 5-148 gtss_verify_access_ 000000 constant entry external dcl 5-149 gtss_verify_access_$check_forced_access 000000 constant entry external dcl 5-150 gtss_write_starCFP_ 000000 constant entry external dcl 5-151 hcs_$fs_get_mode 000000 constant entry external dcl 999 hcs_$fs_get_path_name 000000 constant entry external dcl 891 hcs_$make_seg 000000 constant entry external dcl 1000 largest_file automatic fixed bin(24,0) dcl 938 li automatic bit(1) unaligned dcl 941 max_change automatic fixed bin(24,0) dcl 944 msf_manager_$adjust 000000 constant entry external dcl 1002 msf_manager_$close 000000 constant entry external dcl 1003 msf_manager_$get_ptr 000000 constant entry external dcl 1004 msf_manager_$open 000000 constant entry external dcl 1005 msf_save automatic bit(1) unaligned dcl 951 no_components_save automatic fixed bin(24,0) dcl 954 pat_body_overlay based bit(180) unaligned dcl 957 sc automatic fixed bin(24,0) dcl 963 tfp automatic fixed bin(71,0) dcl 990 work_area based area dcl 995 NAMES DECLARED BY EXPLICIT CONTEXT. bad_file_status 003134 constant entry internal dcl 589 ref 52 bksp_share 002733 constant label dcl 526 ref 574 bump 001162 constant label dcl 160 com_proc 000000 constant label array(8) dcl 88 ref 77 done_stat 003711 constant label dcl 768 ref 754 758 762 766 err_case 000030 constant label array(0:13) dcl 743 ref 740 740 741 fin_io 000623 constant label dcl 84 ref 74 finished_read_dcw 001744 constant label dcl 321 ref 283 finished_write_dcw 002623 constant label dcl 498 ref 459 gtss_ios_io_ 000321 constant entry external dcl 9 lookup 000463 constant label dcl 60 set ref 167 read_case 000010 constant label array(0:7) dcl 211 ref 209 read_end_of_file 003175 constant entry internal dcl 610 ref 250 292 read_file_posit 001510 constant label dcl 262 ref 299 read_loop 001272 constant label dcl 204 read_memory_fault 003325 constant entry internal dcl 647 ref 246 read_next_component 003402 constant entry internal dcl 675 ref 254 296 restart_nonread 001617 constant label dcl 290 ref 297 restart_nonwrite 002467 constant label dcl 466 ref 473 restart_read 001424 constant label dcl 233 ref 255 restart_write 002273 constant label dcl 408 ref 430 return_stat 003470 constant entry internal dcl 704 ref 53 72 83 92 106 115 121 174 184 191 216 247 251 269 278 293 307 316 325 333 340 347 391 422 426 445 454 469 484 493 502 511 516 530 537 565 579 585 write_case 000020 constant label array(0:7) dcl 386 ref 384 write_end_of_file 003751 constant entry internal dcl 776 ref 425 468 write_file_posit 002357 constant label dcl 437 ref 476 write_memory_fault 004110 constant entry internal dcl 814 ref 421 write_next_component 004165 constant entry internal dcl 842 ref 429 472 write_to_end_of_sector 004261 constant entry internal dcl 872 ref 444 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 368 368 726 729 addrel builtin function ref 39 45 46 110 125 148 162 163 164 195 234 264 281 319 351 409 439 457 496 711 732 baseno builtin function ref 40 42 baseptr builtin function ref 40 42 bit builtin function ref 641 808 divide builtin function ref 136 557 636 803 fixed builtin function ref 47 111 119 165 209 224 224 224 224 226 226 226 226 229 230 286 286 288 302 302 311 383 399 399 399 399 401 401 401 401 404 405 462 462 464 479 479 488 522 522 541 571 571 637 637 641 720 720 722 769 769 769 769 804 804 808 hbound builtin function ref 62 599 740 lbound builtin function ref 599 740 mod builtin function ref 141 144 151 637 637 698 717 804 804 866 879 null builtin function ref 924 2-9 603 string builtin function ref 364 substr builtin function set ref 64 64 181* 558* 558 637 637 641* 711 711 738* 738 739* 739 757* 761* 765* 804 804 808* unspec builtin function set ref 475 558 738 739 800* 859* 882* STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4472 4520 4334 4502 Length 5070 4334 26 334 136 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gtss_ios_io_ 386 external procedure is an external procedure. on unit on line 67 80 on unit bad_file_status internal procedure shares stack frame of external procedure gtss_ios_io_. read_end_of_file internal procedure shares stack frame of external procedure gtss_ios_io_. read_memory_fault internal procedure shares stack frame of external procedure gtss_ios_io_. read_next_component internal procedure shares stack frame of external procedure gtss_ios_io_. return_stat 102 internal procedure is called by several nonquick procedures. write_end_of_file internal procedure shares stack frame of external procedure gtss_ios_io_. write_memory_fault internal procedure shares stack frame of external procedure gtss_ios_io_. write_next_component internal procedure shares stack frame of external procedure gtss_ios_io_. write_to_end_of_sector internal procedure shares stack frame of external procedure gtss_ios_io_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gtss_ios_io_ 000106 ap gtss_ios_io_ 000110 bksp_sw gtss_ios_io_ 000111 cmd_word gtss_ios_io_ 000112 count gtss_ios_io_ 000113 da_residue gtss_ios_io_ 000114 data_moved gtss_ios_io_ 000115 dcw_number gtss_ios_io_ 000116 dcw_offset gtss_ios_io_ 000120 dcw_ptr gtss_ios_io_ 000122 disconnect gtss_ios_io_ 000124 fcb_ptr gtss_ios_io_ 000126 file_ptr gtss_ios_io_ 000130 fn gtss_ios_io_ 000131 i gtss_ios_io_ 000132 idptr gtss_ios_io_ 000134 j gtss_ios_io_ 000135 l gtss_ios_io_ 000136 last_component gtss_ios_io_ 000140 opptr gtss_ios_io_ 000142 rec_ct_residue gtss_ios_io_ 000152 scratch_status gtss_ios_io_ 000154 seek_ptr gtss_ios_io_ 000156 seeksw gtss_ios_io_ 000157 seg_length gtss_ios_io_ 000160 select_seg_ptr gtss_ios_io_ 000162 select_seq_in_memory gtss_ios_io_ 000163 slave_status gtss_ios_io_ 000164 sp gtss_ios_io_ 000166 storlimit gtss_ios_io_ 000170 sptr gtss_ios_io_ 000172 swptr gtss_ios_io_ 000174 ta_offset gtss_ios_io_ 000176 ta_ptr gtss_ios_io_ 000200 ta_seg_ptr gtss_ios_io_ 000202 tdcw_previous gtss_ios_io_ 000203 wc_residue gtss_ios_io_ 000204 gtss_file_attributes_ptr gtss_ios_io_ 000206 gtss_file_values gtss_ios_io_ 000332 x read_end_of_file 000356 x write_end_of_file 000402 i write_to_end_of_sector return_stat 000100 i return_stat THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ge_a call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext mod_fx1 signal enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ gtss_attributes_mgr_$set ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$rqover gtss_dfd_ext_$disk_file_data gtss_ext_$db sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000313 924 000326 2 9 000330 25 000331 26 000334 27 000337 32 000342 34 000347 35 000350 37 000351 38 000352 39 000354 40 000357 42 000366 44 000373 45 000400 46 000403 47 000406 48 000411 49 000413 52 000435 53 000453 54 000457 56 000460 57 000461 58 000462 60 000463 62 000464 63 000471 64 000473 67 000513 68 000527 69 000540 71 000556 72 000563 73 000570 74 000574 76 000577 77 000607 79 000612 82 000614 83 000617 84 000623 86 000624 88 000625 90 000626 91 000631 92 000634 93 000640 96 000641 99 000643 101 000651 103 000656 104 000661 106 000706 107 000712 110 000713 111 000717 114 000730 115 000733 116 000737 119 000740 120 000747 121 000752 122 000756 125 000757 126 000764 127 000766 128 000770 131 000771 134 001021 136 001034 137 001044 138 001050 141 001056 143 001066 144 001070 145 001074 147 001105 148 001107 150 001112 151 001117 152 001123 155 001157 160 001162 162 001163 163 001166 164 001171 165 001174 166 001177 167 001200 169 001201 171 001202 172 001217 173 001221 174 001224 175 001230 179 001231 180 001235 181 001237 184 001241 185 001245 188 001246 190 001253 191 001256 192 001262 195 001263 200 001267 201 001270 204 001272 209 001277 211 001303 212 001304 213 001305 214 001306 215 001307 216 001312 217 001316 219 001317 220 001320 222 001322 223 001323 224 001327 226 001362 229 001412 230 001415 231 001420 233 001424 234 001425 235 001431 246 001444 247 001451 248 001455 250 001456 251 001465 252 001471 254 001472 255 001476 257 001477 260 001505 262 001510 263 001511 264 001520 265 001523 267 001524 268 001526 269 001527 270 001533 274 001534 275 001535 277 001542 278 001545 279 001551 281 001552 282 001556 283 001557 285 001560 286 001561 288 001610 289 001613 290 001617 291 001620 292 001630 293 001637 294 001643 296 001644 297 001650 299 001651 301 001652 302 001653 304 001704 305 001706 306 001711 307 001712 308 001716 310 001717 311 001721 312 001724 314 001730 315 001733 316 001734 317 001740 319 001741 321 001744 322 001745 324 001747 325 001752 326 001756 328 001757 330 001760 331 001775 332 001777 333 002002 334 002006 337 002007 338 002017 340 002022 341 002026 344 002027 346 002034 347 002037 348 002043 351 002044 355 002050 356 002054 357 002056 358 002062 359 002064 360 002066 361 002067 362 002073 363 002077 364 002102 365 002103 366 002105 368 002107 369 002122 373 002127 374 002135 375 002136 378 002140 383 002145 384 002151 386 002152 387 002153 388 002154 389 002155 390 002156 391 002161 392 002165 394 002166 395 002167 397 002171 398 002172 399 002176 401 002231 404 002261 405 002264 406 002267 408 002273 409 002274 410 002300 421 002313 422 002320 423 002324 425 002325 426 002334 427 002340 429 002341 430 002345 432 002346 435 002354 437 002357 438 002360 439 002367 440 002372 442 002373 443 002375 444 002376 445 002377 446 002403 450 002404 451 002405 453 002412 454 002415 455 002421 457 002422 458 002426 459 002427 461 002430 462 002431 464 002460 465 002463 466 002467 467 002470 468 002500 469 002507 470 002513 472 002514 473 002520 475 002521 476 002530 478 002531 479 002532 481 002563 482 002565 483 002570 484 002571 485 002575 487 002576 488 002600 489 002603 491 002607 492 002612 493 002613 494 002617 496 002620 498 002623 499 002624 501 002626 502 002631 503 002635 506 002636 508 002637 509 002654 510 002664 511 002667 512 002673 515 002674 516 002675 517 002701 519 002702 521 002703 522 002705 526 002733 529 002743 530 002746 531 002752 533 002753 534 002757 537 002762 538 002766 541 002767 542 002772 543 002776 544 003000 546 003004 553 003007 554 003012 555 003015 557 003020 558 003024 560 003026 565 003030 566 003034 568 003035 570 003036 571 003037 574 003065 576 003066 578 003067 579 003104 580 003110 582 003111 584 003112 585 003127 586 003133 589 003134 599 003136 600 003143 601 003145 603 003152 604 003161 605 003163 607 003170 610 003175 624 003177 625 003201 626 003211 627 003212 628 003214 629 003217 630 003225 631 003230 632 003236 634 003241 636 003243 637 003246 641 003312 642 003317 644 003323 647 003325 659 003327 662 003342 663 003345 664 003347 665 003352 666 003357 667 003361 668 003370 669 003373 670 003375 672 003400 675 003402 688 003404 689 003412 690 003420 693 003424 694 003426 695 003433 696 003441 697 003446 698 003447 700 003464 701 003466 704 003467 709 003475 710 003501 711 003503 715 003526 716 003535 717 003540 718 003544 720 003551 722 003576 724 003613 726 003620 727 003622 729 003623 732 003630 735 003633 736 003635 738 003637 739 003641 740 003644 741 003651 743 003652 744 003653 745 003654 746 003655 747 003656 748 003657 749 003660 750 003661 751 003662 752 003663 753 003664 754 003665 756 003666 757 003667 758 003672 760 003673 761 003674 762 003701 764 003702 765 003703 766 003710 768 003711 769 003712 772 003750 776 003751 790 003753 791 003755 792 003765 793 003766 794 003770 795 003773 796 004001 797 004004 798 004012 799 004015 800 004016 801 004024 803 004026 804 004031 808 004075 809 004102 811 004106 814 004110 826 004112 829 004125 830 004130 831 004132 832 004135 833 004142 834 004144 835 004153 836 004156 837 004160 839 004163 842 004165 855 004167 856 004175 857 004203 858 004207 859 004210 861 004216 862 004220 863 004225 864 004233 865 004240 866 004241 868 004256 869 004260 872 004261 879 004262 880 004272 881 004273 882 004276 884 004304 ----------------------------------------------------------- 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