COMPILATION LISTING OF SEGMENT gcos_mme_call_ Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 09/09/83 1148.8 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 gcos_mme_call_: proc (mcp, increment); 7 8 /* 9* * MME GECALL is used to load programs into memory. The programs may be either relocatable 10* * or absolute. Note, if dynamic library ** present, it is searched first. 11* * 12* * MME GERSTR restores data saved by MME GESAVE. The data is read from the file 13* * whose filecode is in the q reqister. The calling sequence is the same as that 14* * shown for MME GECALL. 15* * 16* * CALLING SEQUENCE: 17* * 18* * MME GECALL 19* * BCI 1,XXXXXX BCD PROGRAM NAME 20* * ZERO L(FIRST WORD),L(ERR RTRN) PLACE TO BEGIN LOADING 21* * ZERO L(TRANSFER),0 PLACE TO XFER CONTROL TO 22* * (IF 0, GO TO PLACE SPECIFIED 23* * IN THE PROGRAM'S DIRECTORY) 24* * 25* * RETURNS: 26* * 27* * C(A) 0-17 LOADING ORIGIN 28* * C(A) 18-35 NUMBER OF WORDS LOADED 29* * C(Q) 0-17 TRANSFER ADDRESS IN PGM DIR. 30* * 31* * On error returns the C(Q) 18-35 contains the error code. 32* * 33* * _c_o_d_e _r_e_a_s_o_n 34* * 35* * 30 i3-file code not defined 36* * 42 m4/n4-i/o lim. call/save 37* * 43 m6/n7-i/o err. call/save 38* * 46 non-random gecall file 39* * 48 m6-call/rstr checksum 40* * 51 m2/m3-call name missing 41* * 42* Author: DICK SNYDER OCTOBER 26, 1970 43* Change: T. CASEY OCTOBER 1973, FEBRUARY 1974, AUGUST 1974 44* Change: D. KAYDEN APRIL 1974, JULY 1974, APRIL 1975 45* Change: M. R. Jordan, September 1977 46* Change: Dave Ward 05/29/81 made FB precision adequate. 47**/ 48 scup = addr (mc.scu); /* init pointer to scu data */ 49 i = instruction_counter+1; /* get parameter loc'n */ 50 callp = addrel (gcos_ext_stat_$gcos_slave_area_seg, i); /* build ptr to parameters */ 51 52 /* see if the dynamic library ** exists. if it does, search */ 53 /* it first before the regular library. */ 54 do i = 1 to hbound (save_data.fibs, 1); 55 if fct.filecode (i) = "**" then 56 if ^fct.sysout (i) then do; 57 dylibsw = "1"b; /* remember that we are searching dynamic lib */ 58 fc_join: ; 59 fibptr = fct.fibptr (i); /* come here from mme_rstr entry point */ 60 fib.iocount = fib.iocount + 1; 61 if ^fib.type then do; 62 if gecall.error_return_loc ^= (18)"0"b then 63 call Error (gcos_et_$non_rndm_call_file); 64 else 65 call gcos_mme_bort_$system (gcos_et_$non_rndm_call_file); 66 end; 67 load_at = fib.stream; /* get stream to load from */ 68 goto search_lib; 69 end; 70 end; 71 72 73 srch_gs: ; /* come here after searching ** file, if one was there */ 74 dylibsw = "0"b; /* searching regular lib now */ 75 load_at = "glib"; /* search standard system library */ 76 77 search_lib: 78 if first_lib then do; /* initialize if not done previously */ 79 first_lib = "0"b; 80 statp = addr (st); /* init pointer to ios status */ 81 scup = addr (mc.scu); /* init pointer to scu data */ 82 i = instruction_counter+1; /* get parameter loc'n */ 83 callp = addrel (gcos_ext_stat_$gcos_slave_area_seg, i); /* build ptr to parameters */ 84 if dbs_mme_call then do; /* print gecall name if trace is on */ 85 call gcos_cv_gebcd_ascii_ ( 86 addr (gecall.prog_name) 87 , 6 88 , addr (ascii_gecall_name) 89 ); /* translate call name to ascii */ 90 call ioa_ ("mme gecall ^a", ascii_gecall_name); 91 end; 92 end; 93 seek_save, k = 0; /* init file offsets */ 94 95 /* Read catalog record and search for program to be loaded */ 96 /* **************N O T E********************************************************* 97* * 98* * The catalog for the simulator library, gcos_system_software_, is not 99* * the same as the catalog for a random system loadable file produced by 100* * SYSEDIT, and commonly used as a dynamic library (** file). 101* * This routine presently handles both types. Note that it would be 102* * inefficient for the simulator to utilize a sector oriented catalog 103* * for its primary software library. In fact, after GCOS is booted, it 104* * does not use the catalogs contained in its primary software libraries. 105* * It uses one linear directory that it has built from the disjoint disk 106* * catalogs of its primary libraries. The catalog formats of the GCOS 107* * and the GCOS simulator primary libraries should be of no concern 108* * to users of either system. 109* * 110* * See the GCOS PLM (AN77) for a detailed description of the differences 111* * in format between a random system loadable file (a dynamic library), the 112* * simulator library, and a tape system loadable file (from which the 113* * simulator library is produced). 114* * 115* **************N O T E******************************************************* */ 116 prefp = addr (buffer); /* init buffer pointer */ 117 118 call ios_$seek (load_at, "read", "first", 0, st); /* seek to start of file */ 119 if status.code ^= 0 then do; /* error ? */ 120 message = "from ios_$seek to start of file"; 121 122 io_abort: ; 123 if status.code ^= 0 then 124 call check_fs_errcode_ (status.code, "xxxxxxxx", longerror); /* get error message */ 125 call gcos_cv_gebcd_ascii_ (addr (gecall.prog_name), 6, addr (ascii_gecall_name)); /* get call name in ascii */ 126 if gecall.error_return_loc ^= (18)"0"b then 127 call Error (gcos_et_$io_err_call_save); 128 else call gcos_mme_bort_$system (gcos_et_$io_err_call_save, 129 "on ^a; looking for ^a^/^a^/^a", load_at, ascii_gecall_name, longerror, message); 130 end; 131 132 133 read: ; 134 call ios_$read (load_at, prefp, 0, 1000, j, st); /* read catalog */ 135 if status.code ^= 0 then do; 136 message = "from ios_$read first catalog block"; 137 goto io_abort; /* error ? */ 138 end; 139 140 if gcatblk.avail_ptr ^= 1 then go to sim_cat; /* determine catalog type */ 141 gcatsw = "1"b; /* GCOS standard catalog type */ 142 143 gcat_loop: ; 144 do i = 1 to 15; /* search entries on this block */ 145 if gcatblk.element (i) = gecall.prog_name then do; 146 seek_save = gcatblk.address (i)*64; 147 go to readp; 148 end; 149 end; 150 /* not found - is there another block ? */ 151 if gcatblk.next_cat = 0 then go to next_lib; /* if not, search next library */ 152 call ios_$seek (load_at, "read", "first", gcatblk.next_cat*64, st); 153 if status.code ^= 0 then do; 154 message = "from ios_$seek to next random catalog block"; 155 goto io_abort; 156 end; 157 158 call ios_$read (load_at, prefp, 0, 64, j, st); /* read in next catalog block */ 159 if status.code ^= 0 then do; 160 message = "from ios_$read random catalog block"; 161 goto io_abort; 162 end; 163 go to gcat_loop; /* now go scan it */ 164 165 sim_cat: ; 166 gcatsw = "0"b; 167 168 do i = 1 to catblk.no_ent; /* loop for no. of entries in cat */ 169 if catblk.element (i) = gecall.prog_name then do; /* hit ? */ 170 seek_save = catblk.address (i); 171 go to readp; 172 end; 173 end; 174 175 next_lib: ; 176 if rstr_switch then goto not_found; /* search only one file for mme gerstr */ 177 if dylibsw then go to srch_gs; /* no hit on dynamic lib, try regular */ 178 179 if ^seclibsw then do; /* but only if we have not searched it yet */ 180 seclibsw = "1"b; /* remember that we have */ 181 if gcos_ext_stat_$save_data.userlib then do; /* -userlib arg enables use of this feature */ 182 load_at = "slib"; /* search secondary library */ 183 go to search_lib; 184 end; 185 end; 186 187 not_found: ; 188 call gcos_cv_gebcd_ascii_ (addr (gecall.prog_name), 6, addr (ascii_gecall_name)); /* convert call name to ascii */ 189 190 if gecall.error_return_loc ^= (18)"0"b then 191 call Error (gcos_et_$call_name_missing); 192 else call gcos_mme_bort_$system (gcos_et_$call_name_missing, 193 """^a""", ascii_gecall_name); 194 195 /* Come here when entry found. Seek to and read preface record */ 196 readp: ; 197 call ios_$seek (load_at, "read", "first", seek_save, st); /* seek */ 198 if status.code ^= 0 then do; 199 message = "from ios_$seek to preface record"; 200 goto io_abort; /* abort if error */ 201 end; 202 203 call ios_$read (load_at, prefp, 0, 64, j, st); /* read preface rcrd */ 204 if status.code ^= 0 then do; 205 message = "from ios_$read preface record"; 206 goto io_abort; /* abort if error */ 207 end; 208 209 /* compute no of dcws in preface */ 210 first_loc = gcos_ext_stat_$storage_limit; 211 last_loc = -1; 212 do ndcw = 1 to 58 while (substr (preface.dcws (ndcw), 22, 3) ^= "000"b); 213 dcwp = addr (preface.dcws (ndcw)); 214 first_loc = min (first_loc, fixed (dcw_model.data_addr, 18)); 215 last_loc = max (last_loc, fixed (dcw_model.data_addr, 18)+fixed (dcw_model.count, 12)-1); 216 end; 217 dcwp = addr (preface.dcws (ndcw)); 218 first_loc = min (first_loc, fixed (dcw_model.data_addr, 18)); 219 last_loc = max (last_loc, fixed (dcw_model.data_addr, 18)+fixed (dcw_model.count, 12)-1); 220 pgm_text_length = last_loc-first_loc+1; 221 reloc_len = fixed (preface.reloc_words); /* save no. of relocation words */ 222 load_origin = fixed (preface.origin); /* save origin */ 223 pgm_length = fixed (preface.data_words); /* save pgm length */ 224 225 if gcatsw then do; 226 reloc_len = reloc_len*64; /* for a GCOS catalog, convert blocks to words */ 227 pgm_length = pgm_length*64; 228 seek_save = seek_save + 64; /* and program starts in next block */ 229 end; 230 else seek_save = seek_save+6+ndcw; /* for a simulator catalog, program immediately follows */ 231 232 transfer_addr = fixed (preface.entry); /* save entry point */ 233 load_increment = 0; /* init load increment */ 234 235 if gecall.origin ^= (18)"0"b then do; /* did slave specify an origin ? */ 236 if load_origin > 131072 then /* relocatable overlay ? */ 237 load_increment = fixed (gecall.origin); 238 else load_increment = fixed (gecall.origin)-load_origin; /* set up new load increment */ 239 load_origin = fixed (gecall.origin); /* use user specified origin */ 240 transfer_addr = transfer_addr+load_increment; /* new transfer address */ 241 end; 242 243 /* In the following test, load_origin + pgm_text_length > storage_limit is the same as 244* load_origin + pgm_text_length -1 >= storage_limit. A storage_limit of nnnK means that the program 245* can legitimately address 0 to nnnK-1. */ 246 247 if load_origin + pgm_text_length > gcos_ext_stat_$storage_limit then do; /* will pgm_text fit ? */ 248 if gecall.error_return_loc ^= (18)"0"b then 249 call Error (gcos_et_$io_lim_call_save); 250 else call gcos_mme_bort_$system (gcos_et_$io_lim_call_save); 251 end; 252 253 mc.regs.q = substr (unspec (transfer_addr), 19, 18)||substr (mc.regs.q, 19, 18); 254 255 /* Use user specified transfer address if present */ 256 if gecall.xfer_addr ^= (18)"0"b then transfer_addr = fixed (gecall.xfer_addr); 257 258 call ios_$seek (load_at, "read", "first", seek_save, st); /* seek to read data record */ 259 if status.code ^= 0 | status.eof then do; 260 if status.code = 0 then 261 longerror = "end of file"; 262 message = "from ios_$seek to first dat block"; 263 goto io_abort; 264 end; 265 266 first_loc = first_loc-1024+load_increment; 267 268 /* Loop to read data records into gcos segment */ 269 xfer_total = 0; /* clear xfer total */ 270 do i = 1 to ndcw; /* loop to process dcws */ 271 272 dcwp = addr (preface.dcws (i)); /* get pointer to a dcw */ 273 j = fixed (dcw_model.count); /* grab xfer count */ 274 if j = 0 then j = 4096; /* count of 0 = 4096 */ 275 xfer_total = xfer_total + j; /* total up words to xfer */ 276 277 end; 278 279 call ios_$read (load_at, gcos_ext_stat_$gcos_slave_area_seg, (first_loc), xfer_total, k, st); /* read data record */ 280 if status.code ^= 0 | xfer_total ^= k then do; 281 if status.code = 0 then 282 longerror = "data words read ^= total of dcw counts"; 283 message = "from ios_$read data blocks"; 284 goto io_abort; /* error ? */ 285 end; 286 287 /* Calculate checksum and compare with that in preface block */ 288 if preface.data_check ^= 0 then do; /* don't do if checksum = 0 */ 289 290 ptr = addrel (gcos_ext_stat_$gcos_slave_area_seg, first_loc); /* get ptr to first loc loaded */ 291 accum = 0; /* clear accumulator */ 292 293 do i = 1 to xfer_total; 294 accum = accum + fixed (checker (i)); /* add a word */ 295 if accum > 68719476735 then do; /* carry into second word ? */ 296 accum = accum - 68719476736 + 1; /* add carry to low end of no. */ 297 end; 298 end; 299 300 if substr (unspec (accum), 37, 36) ^= unspec (preface.data_check) then do; /* error */ 301 if gecall.error_return_loc ^= (18)"0"b then 302 call Error (gcos_et_$call_rstr_cksm); 303 else call gcos_mme_bort_$system (gcos_et_$call_rstr_cksm); 304 end; 305 end; 306 307 /* If this is an absolute program, go turn control back to the user */ 308 if reloc_len = 0 then go to start_pgm; 309 if load_increment = 0 then go to start_pgm; /* no relocation to do */ 310 311 /* Must change load increment before relocating program. The load increment */ 312 /* is usually off by 102 octal in the preface record. Actually, the */ 313 /* preface record is off by 400102 but the extra 400000 is really just a */ 314 /* flag to indicate that the program is relocatable. */ 315 316 /* The 102 octal consists of the slave area prefix, which is 100 octal words 317* long, followed by two words immediately after it, reserved by the loader for 318* communication between overlay modules. Thus it represents the difference 319* between giving the load increment relative to the beginning of the program and 320* giving it relative to the beginning of the slave area. 321**/ 322 if fixed (preface.origin) > 131072 then 323 load_increment = load_increment+131072-fixed (preface.origin); /* fix load increment */ 324 325 if gcatsw then do; /* for a GCOS catalog, move to beginning of next block */ 326 call ios_$seek (load_at, "read", "first", seek_save+pgm_length, st); 327 if status.code ^= 0 then do; 328 message = "from ios_$seek to first random relocation block"; 329 goto io_abort; 330 end; 331 end; 332 333 rd_rel: ; 334 call ios_$read (load_at, prefp, 0, 1000, j, st); /* read reloc record */ 335 if status.code ^= 0 then do; 336 message = "from ios_$read relocation block"; 337 goto io_abort; 338 end; 339 340 size = min (reloc_len, 1000); /* can only relocate 18000 words per read */ 341 reloc_len = reloc_len-1000; 342 size = min (size*36, pgm_text_length*2); 343 do i = 1 to size; 344 if reloc_bits (i) then do; /* reloc bit on? */ 345 fb18 = fixed (gcos_reloc.half_wd (i)); /* pull the half word */ 346 fb18 = fb18 + load_increment; /* increment it */ 347 gcos_reloc.half_wd (i) = bit (fb18); /* put it back */ 348 end; 349 end; 350 351 if reloc_len > 0 then go to rd_rel; /* more relocation bits ? */ 352 353 /* Come here when relocation finished */ 354 start_pgm: ; /* return load origin and pgm length in A */ 355 call Apply_Patches (); 356 mc.regs.a = substr (unspec (load_origin), 19, 18)||substr (unspec (pgm_text_length), 19, 18); 357 358 /* Set "increment" to force xfer to location specified in transfer address */ 359 /* when control is returned to the user. */ 360 increment = transfer_addr - instruction_counter - 1; /* compute offset from current instruction */ 361 362 exit_gecall: 363 364 return; /* go start program */ 365 366 mme_rstr: entry (mcp, increment); 367 368 rstr_switch = "1"b; /* remember we entered here */ 369 scup = addr (mc.scu); /* init pointer to scu data */ 370 callp = addrel (gcos_ext_stat_$gcos_slave_area_seg, instruction_counter+1); /* build ptr to parameters */ 371 372 call gcos_cv_gebcd_ascii_ (addr (mc.regs.q), 6, addr (fc)); /* get file code in ascii */ 373 do i = 1 to hbound (save_data.fibs, 1); /* look for file code */ 374 if fct.filecode (i) = substr (fc, 5, 2) then if ^fct.sysout (i) then do; 375 goto fc_join; 376 end; 377 end; 378 379 /* if gecall.error_return_loc ^= (18)"0"b then 380* call Error (gcos_et_$fc_not_defined); 381* else call gcos_mme_bort_$system (gcos_et_$fc_not_defined, """^a""", substr (fc, 5, 2)); 382**/ 383 call gcos_mme_bort_$system (gcos_et_$fc_not_defined, """^a""", substr (fc, 5, 2)); 384 385 Apply_Patches: proc (); 386 387 388 if gcos_ext_stat_$patchfile_ptr = null () then return; 389 390 391 module_name = gecall.prog_name; 392 call Get_Module_Name_Index (); 393 394 395 if module_name_index ^= 0 then do; 396 patch_ptr = ptr (gcos_ext_stat_$patchfile_ptr, patch_file.module (module_name_index).first_patch_offset); 397 number_of_patches = patch_file.module (module_name_index).number_of_patches; 398 do i = 1 to number_of_patches; 399 if patch (i).location > gcos_ext_stat_$storage_limit then do; 400 end; 401 word_ptr = ptr (gcos_ext_stat_$gcos_slave_area_seg, patch (i).location); 402 if dbs_mme_call then 403 call ioa_ ( 404 "before ^w; after ^w^[^-NO CHANGE^]" 405 , word 406 , patch (i).content 407 , (word = patch (i).content) 408 ); 409 word = patch (i).content; 410 end; 411 end; 412 else if dbs_mme_call then call ioa_ ("no patches"); 413 414 415 return; 416 417 Get_Module_Name_Index: proc (); 418 419 420 dcl divide builtin; 421 dcl floor builtin; 422 dcl l fixed bin(24); 423 dcl u fixed bin(24); 424 425 426 l = 1; 427 u = patch_file.number_of_names; 428 429 430 do while (u >= l); 431 432 module_name_index = floor (divide ((l+u), 2, 17)); 433 434 if module_name < patch_file.module (module_name_index).name then u = module_name_index-1; 435 else if module_name > patch_file.module (module_name_index).name then l = module_name_index+1; 436 else return; 437 438 end; 439 440 441 module_name_index = 0; 442 443 444 return; 445 446 447 end Get_Module_Name_Index; 448 449 dcl i fixed bin(24); 450 dcl module_name bit (36); 451 dcl module_name_index fixed bin(24); 452 dcl null builtin; 453 dcl number_of_patches fixed bin(24); 454 dcl patch_ptr ptr; 455 dcl ptr builtin; 456 dcl word fixed bin(35) based (word_ptr); 457 dcl word_ptr ptr; 458 459 dcl 1 patch (number_of_patches) aligned based (patch_ptr), 460 2 location fixed bin(17), 461 2 content fixed bin(35); 462 463 dcl 1 patch_file aligned based (gcos_ext_stat_$patchfile_ptr), 464 2 version fixed bin(24), 465 2 number_of_names fixed bin(24), 466 2 module (130560), 467 3 name bit (36), 468 3 first_patch_offset bit (18) unal, 469 3 number_of_patches fixed bin(17) unal; 470 end Apply_Patches; 471 472 Error: proc (code); 473 474 call gcos_mme_bort_$abort_number (code, abort_number); 475 mc.regs.q = unspec (abort_number); 476 return_loc = fixed (gecall.error_return_loc, 18, 0); 477 gecall.error_return_loc = (18)"0"b; 478 increment = return_loc-instruction_counter-1; 479 goto exit_gecall; 480 481 dcl abort_number fixed bin(35); 482 dcl code fixed bin(35); 483 dcl return_loc fixed bin(18); 484 end Error; 485 486 /* Variables for gcos_mme_call_: */ 487 /* IDENTIFIER ATTRIBUTES */ 488 dcl accum fixed bin(71) /* checksum accumulator */; 489 dcl addr builtin; 490 dcl addrel builtin; 491 dcl ascii_gecall_name char (6) /* for printing in trace or error messages */; 492 dcl bit builtin; 493 dcl buffer bit (36000) /* preface and relocation blk buffer */; 494 dcl callp pointer; 495 dcl checker (pgm_length) bit (36) aligned based (ptr) /* overlay for computing chksum */; 496 dcl check_fs_errcode_ ext entry (fixed bin(24), char (8), char (100)); 497 dcl dcwp pointer; 498 dcl dylibsw bit (1) aligned init ("0"b) /* on if searching dynamic library (**) */; 499 dcl fb18 fixed bin(18) /* need full 18 bits for address arithmetic */; 500 dcl fc char (6); 501 dcl first_lib bit (1) aligned init ("1"b) /* on until initialzation done */; 502 dcl first_loc fixed bin(18); 503 dcl fixed builtin; 504 dcl gcatsw bit (1) /* 0=simulator catalog, 1=gcos format catalog */; 505 dcl gcos_cv_gebcd_ascii_ ext entry (pointer, fixed bin(24), pointer); 506 dcl gcos_et_$call_name_missing fixed bin(35) ext; 507 dcl gcos_et_$call_rstr_cksm fixed bin(35) ext; 508 dcl gcos_et_$fc_not_defined fixed bin(35) ext; 509 dcl gcos_et_$io_err_call_save fixed bin(35) ext; 510 dcl gcos_et_$io_lim_call_save fixed bin(35) ext; 511 dcl gcos_et_$non_rndm_call_file fixed bin(35) ext; 512 dcl gcos_mme_bort_$abort_number entry (fixed bin(35), fixed bin(35)); 513 dcl gcos_mme_bort_$system entry options (variable); 514 dcl i fixed bin(24); 515 dcl increment fixed bin(24) /* number of parameter words to skip */; 516 dcl instruction_counter fixed bin(18)unsigned unal based(addr(scu.ilc)); 517 dcl ioa_ ext entry options (variable); 518 dcl ios_$read ext entry (char (*) aligned, pointer, fixed bin(24), fixed bin(24), fixed bin(24), bit (72) aligned); 519 dcl ios_$seek ext entry (char (*) aligned, char (*), char (*), fixed bin(24), bit (72) aligned); 520 dcl j fixed bin(24); 521 dcl k fixed bin(24); 522 dcl last_loc fixed bin(18); 523 dcl load_at char (8) aligned /* holds attach name of file to load from */; 524 dcl load_increment fixed bin(24); 525 dcl load_origin fixed bin(24); 526 dcl longerror char (100); 527 dcl max builtin; 528 dcl message char (60); 529 dcl min builtin; 530 dcl ndcw fixed bin(24); 531 dcl pgm_length fixed bin(24); 532 dcl pgm_text_length fixed bin(18); 533 dcl prefp pointer; 534 dcl ptr pointer; 535 dcl reloc_bits (36000) bit(1)unaligned based (prefp) /* overlay for relocation record */; 536 dcl reloc_len fixed bin(24); 537 dcl rstr_switch bit (1) aligned init ("0"b) /* on if entered at mme_rstr */; 538 dcl seclibsw bit (1) aligned init ("0"b) /* on if searching secondary library */; 539 dcl seek_save fixed bin(24) /* holds seek offset */; 540 dcl size fixed bin(24) /* size of pgm overlay arrays */; 541 dcl st bit (72) aligned /* ios status */; 542 dcl state char (4); 543 dcl statp pointer; 544 dcl substr builtin; 545 dcl transfer_addr fixed bin(24); 546 dcl unspec builtin; 547 dcl xfer_total fixed bin(24) /* used to hold total no. words to xfer */; 548 549 dcl 1 status aligned based (statp), /* overlay for ios_ status */ 550 2 code fixed bin(24), /* standard error code */ 551 2 fill bit (9) unaligned, 552 2 eof bit (1) unaligned /* eof bit */ 553 ; 554 555 556 dcl 1 gecall aligned based (callp), /* overlay for gecall parameters */ 557 2 prog_name bit (36) unaligned, /* bcd pgm name */ 558 2 origin bit (18) unaligned, /* place to begin loading */ 559 2 error_return_loc bit (18) unaligned, 560 2 xfer_addr bit (18) unaligned /* transfer address */ 561 ; 562 563 564 dcl 1 preface aligned based (prefp), /* model of preface record - 64 words max */ 565 2 data_check fixed bin(24), /* checksum of following data words */ 566 2 rel_check fixed bin(24), /* checksum of following reloc. words */ 567 2 rel_abs fixed bin(24), /* 0=absolute|^0=relocatable */ 568 2 name bit (36) unaligned, /* name of pgm */ 569 2 entry bit (18) unaligned, /* entry address */ 570 2 origin bit (18) unaligned, /* origin */ 571 2 reloc_words bit (18) unaligned, /* no. of relocation words */ 572 2 data_words bit (18) unaligned, /* no. of data words */ 573 2 dcws (ndcw) bit (36) unaligned /* dcw(s) - max of 58 - to load following data records */ 574 ; 575 576 577 dcl 1 dcw_model aligned based (dcwp), /* model of dcw */ 578 2 data_addr bit (18) unaligned, 579 2 zero bit (3) unaligned, 580 2 action bit (3) unaligned, 581 2 count bit (12) unaligned /* number of words to xfer */ 582 ; 583 584 585 dcl 1 gcos_reloc aligned based (ptr), /* overlay for each half word */ 586 2 half_wd (131072) bit (18) unaligned; /* of the loaded program */ 587 588 589 dcl 1 catblk aligned based (prefp), /* catalog image */ 590 2 nxt fixed bin(24), /* pointer to next cat blk */ 591 2 no_ent fixed bin(24), /* no. of entries in this cat blk */ 592 2 elblock (499), /* room for 499 entries */ 593 3 element bit (36) unaligned, /* prog name */ 594 3 address fixed bin(24) /* offset in file of preface rcrd */ 595 ; 596 597 598 dcl 1 gcatblk aligned based (prefp), /* catalog image for gcos format catalog */ 599 2 avail_ptr fixed bin(18)unsigned unaligned, 600 2 next_cat fixed bin(18)unsigned unaligned, 601 2 pad bit (36), 602 2 elblock (15), 603 3 element bit (36), 604 3 length fixed bin(18)unsigned unaligned, 605 3 address fixed bin(18)unsigned unaligned, 606 3 pad bit (72); 607 1 1 /* BEGIN INCLUDE FILE gcos_ext_stat_.incl.pl1 */ 1 2 /* 1 3* Changes to gcos_ext_stat_ must be made here AND gcos_ext_stat_.cds 1 4**/ 1 5 /* July 77 (MRJ) Mike Jordan. */ 1 6 /* Change: Mel Wilson Oct 1979 for gtss compatibility (Bell Canada). */ 1 7 /* Change: A. N. Kepner, March, 1978 to allow courtesy call i/o within cc routines. */ 1 8 /* Change: Dave Ward 06/01/81 Reorganized to eliminate alm object (using cds). Use of like structures. */ 1 9 /* Change: Scott C. Akers 01/26/82 Add tape_buffer_size for GEINOS processing. */ 1 10 /* Change: Ron Barstad 83-08-02 Added activity_card_num for execution report */ 1 11 /* Increased size of statistics for 4js3 MMEs */ 1 12 1 13 dcl gcos_ext_stat_$abort_reason char(128) varying /* abort reason from gcos pgm */ ext; 1 14 dcl gcos_ext_stat_$abort_return label /* abort return point */ ext; 1 15 dcl gcos_ext_stat_$activity_card_num pic "9999" ext; /* card number defining current activity */ 1 16 dcl gcos_ext_stat_$activity_name char(8) /* name of activity to be run */ ext; 1 17 dcl gcos_ext_stat_$activity_start_time fixed bin(71) /* TOD start of activity */ ext; 1 18 dcl gcos_ext_stat_$card_num pic "9999" /* ordinal number of card in input stream */ ext; 1 19 dcl gcos_ext_stat_$dbs (36)bit(1) /* Debugging switch. */ ext; 1 20 dcl gcos_ext_stat_$default_nondollar char(2) /* filecode where nondollar cards go by default */ ext; 1 21 dcl gcos_ext_stat_$dir_rings (3) fixed bin(3) /* ring brackets for created catalogs */ ext; 1 22 dcl gcos_ext_stat_$dpno char(100) varying /* arguments for call to dpunch */ ext; 1 23 dcl gcos_ext_stat_$dpo char(100) varying /* arguments for call to dprint */ ext; 1 24 dcl gcos_ext_stat_$endfc char(2) /* endfc value for endcopy processing */ ext; 1 25 dcl gcos_ext_stat_$er ptr /* fib pointer for *er */ ext; 1 26 dcl gcos_ext_stat_$etc_filecode char(2) /* filecode where $ ETC cards should be written */ ext; 1 27 dcl gcos_ext_stat_$gcos_slave_area_seg ptr /* pointer to gcos slave area segment */ ext; 1 28 dcl gcos_ext_stat_$gf fixed bin(24)/* sw used by getfield rtn */ ext; 1 29 dcl gcos_ext_stat_$incode fixed bin(24) /* switches to control incode processing */ ext; 1 30 dcl gcos_ext_stat_$increment_hold fixed bin(24) /* Holds increment for courtesy call returns. */ ext; 1 31 dcl gcos_ext_stat_$initial_cpu_time fixed bin(71) /* vcu time at activity start */ ext; 1 32 dcl gcos_ext_stat_$input_segment_path char(168) varying /* pathname of input segment */ ext; 1 33 dcl gcos_ext_stat_$jcl_warnings fixed bin(24) /* number warnings issued processing control cards */ ext; 1 34 dcl gcos_ext_stat_$job_cpu_time fixed bin(71) /* cpu usage at job start */ ext; 1 35 dcl gcos_ext_stat_$job_id char(18) varying /* unique job id for file naming */ ext; 1 36 dcl gcos_ext_stat_$job_real_time fixed bin(71) /* job start time in microseconds */ ext; 1 37 dcl gcos_ext_stat_$last_mme fixed bin(24)/* number of last mme executed */ ext; 1 38 dcl gcos_ext_stat_$ldrss fixed bin(24) /* loader shared stg. */ ext; 1 39 dcl gcos_ext_stat_$max_activities fixed bin(24)/* max activities in a job */ ext; 1 40 dcl gcos_ext_stat_$max_mem fixed bin(19) /* maximum memory available to an activity */ ext; 1 41 dcl gcos_ext_stat_$mme_rtrn label /* where to return at activity end */ ext; 1 42 dcl gcos_ext_stat_$nondollar char(2) /* non-dollar card file code */ ext; 1 43 dcl gcos_ext_stat_$nongcos char(2) /* filecode where nongcos dollar cards go */ ext; 1 44 dcl gcos_ext_stat_$normal_return label /* nonlocal goto for normal termination */ ext; 1 45 dcl gcos_ext_stat_$patchfile_ptr ptr /* pointer to patchfile */ ext; 1 46 dcl gcos_ext_stat_$pathname_prefix char(168)var ext; 1 47 dcl gcos_ext_stat_$pch ptr /* pointer to fib for syspunch collector file */ ext; 1 48 dcl gcos_ext_stat_$pdir char(168) varying /* pathname of process directory */ ext; 1 49 dcl gcos_ext_stat_$prt ptr /* pointer to fib for sysprint collector file */ ext; 1 50 dcl gcos_ext_stat_$rs ptr /* pointer to fib for geload r* collector file */ ext; 1 51 dcl gcos_ext_stat_$saveseg_ptr ptr /* pointer to save segment used by save/restart */ ext; 1 52 dcl gcos_ext_stat_$save_dir char(168) varying /* pathname of temp save directory */ ext; 1 53 dcl gcos_ext_stat_$seg_rings (3) fixed bin(3) /* ring brackets for created files */ ext; 1 54 dcl gcos_ext_stat_$sig_ptr ptr /* saved pointer to signal_ */ ext; 1 55 dcl gcos_ext_stat_$skip_umc bit(1) ext; 1 56 dcl gcos_ext_stat_$snumb bit (30) aligned /* snumb of the current job */ ext; 1 57 dcl gcos_ext_stat_$sought_label char(8) /* Label from GOTO, IF, or WHEN card */ ext; 1 58 dcl gcos_ext_stat_$statistics (3*44) fixed bin(24) /* mme usage statistics- 3 per mme */ ext; 1 59 dcl gcos_ext_stat_$stop_code fixed bin(24) /* debugging, print results and stop. */ ext; 1 60 dcl gcos_ext_stat_$storage_limit fixed bin(19) /* activity storage limit */ ext; 1 61 dcl gcos_ext_stat_$sysout_limit fixed bin(35) /* sysout line limit */ ext; 1 62 dcl gcos_ext_stat_$sysout_lines fixed bin(35) /* sysout lines used */ ext; 1 63 dcl gcos_ext_stat_$system_free_pointer ptr /* pointer to area for allocating in ext; set by gcos */ ext; 1 64 dcl gcos_ext_stat_$tape_buffer_size fixed bin(35) external static; /* tape buffer size for GEINOS. */ 1 65 dcl gcos_ext_stat_$temp_dir char(168) varying /* pathname of directory to hold temp files */ ext; 1 66 dcl gcos_ext_stat_$temp_seg_ptr ptr ext; 1 67 dcl gcos_ext_stat_$termination_code bit (18) /* termination code from gcos_mme_bort_ */ ext; 1 68 dcl gcos_ext_stat_$time_limit fixed bin(71) /* activity time limit */ ext; 1 69 dcl gcos_ext_stat_$userid char(12) /* the USERID */ ext; 1 70 dcl gcos_ext_stat_$validation_level fixed bin(3) /* current ring of execution */ ext; 1 71 1 72 /* Courtesy Call Queue 1 73* A queue for courtesy call addresses which must be saved during 1 74* execution of courtesy call routines. A courtesy call address is 1 75* saved each time a MME GEROUT or MME GEINOS, which specifies a 1 76* courtesy call, is executed within a courtesy call routine. Each 1 77* time a MME GEENDC is executed a courtesy call address will be 1 78* removed from this FIFO queue and the corresponding courtesy call 1 79* routine executed until the queue is empty. The FIFO "queue" is 1 80* implemented in a circular fashion. "next_avail" points to the 1 81* next empty location in the queue. "next_out" points to the 1 82* entry in the queue which has been in the queue longest. When 1 83* entering or removing entries from the queue the appropriate index 1 84* is incremented modulo the length of the queue. By convention the 1 85* queue is empty when "next_avail" equals "next_out". A 1 86* second convention is that the queue is considered to overflow 1 87* during an attempt to add an entry to the queue which would force 1 88* "next_avail" to "catch up" with "next_out". This means that 1 89* the last empty position in the queue will never be used. 1 90**/ 1 91 1 92 dcl 1 gcos_ext_stat_$courtesy_call_control aligned ext 1 93 , 3 courtesy_call 1 94 , 4 hold like save_machine_conditions /* Mach. conds. restored on courtesy call returns. */ 1 95 , 4 next_avail fixed bin(24) /* next available empty location in cc_queue. */ 1 96 , 4 next_out fixed bin(24) /* next entry to remove from cc_queue. */ 1 97 , 4 queue (6) fixed bin(24) 1 98 ; 1 99 2 1 /* BEGIN INCLUDE FILE gcos_save_mc.incl.pl1 (Wardd Multics) 09/12/81 0905.9 mst Sat */ 2 2 2 3 /* Structure to isolate the definition of the size of the 2 4*space needed to store he machine conditions structure (mc). 2 5**/ 2 6 dcl 1 save_machine_conditions based 2 7 , 3 save_space bit(1728) 2 8 ; 2 9 2 10 /* END INCLUDE FILE gcos_save_mc.incl.pl1 */ 1 100 1 101 1 102 dcl 1 gcos_ext_stat_$fct aligned ext, 1 103 3 fct (40) like fct_entry; 3 1 /* BEGIN INCLUDE FILE gcos_fct_entry.incl.pl1 (Wardd Multics) 05/30/81 1758.6 mst Sat */ 3 2 3 3 dcl 1 fct_entry aligned based, 3 4 2 filecode char(2) aligned, /* file code (or blank) */ 3 5 /* flags */ 3 6 2 sysout bit(1) unaligned, /* 1=file is sysout or dac */ 3 7 2 dac bit(1) unaligned, /* 1=file is dac,0=file is sysout */ 3 8 2 pad bit(34) unaligned, /* unused */ 3 9 2 fibptr ptr aligned /* ptr to fib for this file */ 3 10 ; 3 11 3 12 /* END INCLUDE FILE gcos_fct_entry.incl.pl1 */ 1 104 1 105 1 106 dcl 1 gcos_ext_stat_$save_data aligned ext, 1 107 3 save_data like save_data_entry; 4 1 /* BEGIN INCLUDE FILE gcos_save_data_entry.incl.pl1 (Wardd Multics) 07/01/81 1339.9 mst Wed */ 4 2 /* Change: Dave Ward 07/01/81 include gcos_flags_. */ 4 3 /* Change: Dave Ward 09/10/81 fib changed to fibs & likened to fib. */ 4 4 4 5 dcl 1 save_data_entry aligned based 4 6 ,3 flgs like flags /* system wide flgs */ 4 7 ,3 actid char(8) /* activity no. and accnt i.d. */ 4 8 ,3 short_actid bit(36) aligned /* short form of activity id */ 4 9 ,3 ident char(60) /* holds ident info from snumb card */ 4 10 ,3 psw bit(36) aligned /* program switch word */ 4 11 ,3 last_execute_act_no fixed bin(24)/* activity number of last $ EXECUTE card in job */ 4 12 ,3 activity_no fixed bin(24)/* activity number */ 4 13 ,3 job_time_limit fixed bin(71) /* job time limit */ 4 14 ,3 job_sysout_limit fixed bin(24)/* job sysout line limit */ 4 15 ,3 sysout_queue (10) char(32) /* sysout queue */ 4 16 ,3 sysout_queue_media (10) fixed bin(24)/* medium (print,punch) of each file on queue */ 4 17 ,3 sqindex fixed bin(24)/* curr offset in sysout queue */ 4 18 ,3 pathname_prefix char(168)varying /* prefix for gcos cfdescs */ 4 19 ,3 skip_umc aligned bit(1) /* flag to tell if we should skip umc names */ 4 20 ,3 job_deck pointer /* pointer to seg holding canonicalized job deck */ 4 21 ,3 jd_size fixed bin(24)/* size in words of job deck */ 4 22 ,3 jd_position fixed bin(24) /* position of current block of job deck */ 4 23 ,3 jd_rem_block_len fixed bin(24)/* words remaining in current block of job deck */ 4 24 ,3 syot_dir char(168)varying /* pathname of directory to hold sysout files */ 4 25 ,3 fibs (40) like fib 4 26 ,3 param (32) char(57)varying /* parameters */ 4 27 ; 4 28 5 1 /* BEGIN INCLUDE FILE gcos_flags.incl.pl1 (Wardd Multics) 07/01/81 1344.7 mst Wed */ 5 2 /* Change: Mel Wilson 03/01/79 to add gtssflag & identflag */ 5 3 /* Change: Dave Ward 07/01/81 revised, mad apart of gcos_ext_stat_. */ 5 4 5 5 5 6 /* Declaration of Simulator Wide Flags */ 5 7 5 8 dcl 1 flags aligned based, 5 9 2 ( 5 10 pad1, /* no longer used */ 5 11 copy, /* 1=copy option on|0=off */ 5 12 snumb, /* 1=snumb card read|0=not */ 5 13 ident, /* 1=ident card read|0=not */ 5 14 activ, /* 1=activity being defined|0=not */ 5 15 cc, /* 1=courtesy call active|0=not */ 5 16 pad2, /* no longer used */ 5 17 cksum, /* 1=don't check checksums|0=do */ 5 18 pad3, /* no longer used */ 5 19 wrapup, /* 1=processing wrapup after abort */ 5 20 5 21 /* FOLLOWING ADDED AFTER MARCH 73 */ 5 22 5 23 nosave, /* 1=disable save/restart function,0=not */ 5 24 pad4, /* no longer used */ 5 25 gcos, /* 1=job deck segment in gcos file format */ 5 26 raw, /* 1=sysout punch files to be converted to raw bit strings */ 5 27 list, /* 1=sysout print files to be converted to ascii */ 5 28 brief, /* 1=print nothing but fatal error messages on terminal */ 5 29 debug, /* 1=give option to call debug before aborting */ 5 30 no_canonicalize, /* 1=do NOT canonicalize job deck */ 5 31 5 32 /* 18 bits into first word */ 5 33 5 34 pad5, /* no longer used */ 5 35 dpunch, /* 1=dpunch sysout punch files;0=don't */ 5 36 dprint, /* 1=dprint sysout print files,0=don't */ 5 37 userid, /* 1=userid card read,0=not */ 5 38 userlib, /* 1= -userlib ctl arg given, see gcos_gein_ */ 5 39 dstar, /* 1=current activity card written on d* */ 5 40 write_etc, /* 1 tells get_cc_field to write $ ETC cards on etc_filecode */ 5 41 prev_act_abort, /* turned on by abort and off by $ BREAK */ 5 42 this_act_abort, /* turned on by abort to select abort disp codes */ 5 43 abort_subact, /* 1=processing abort subactivity */ 5 44 dump, /* 1=dump option given on activity card */ 5 45 nondollar, /* 1=reading nondollar card deck in gein */ 5 46 endjob, /* 1=cc_endjob already called once in this job */ 5 47 abort_card, /* 1=the terminator for this activity was a $ ABORT card */ 5 48 truncate, /* 1=truncate option given:truncate long ascii input lines */ 5 49 continue, /* 1=continue option given:continue after nonfatal errors */ 5 50 rout, /* 1=gcos_mme_rout_ was called in this activity */ 5 51 seeking, /* 1=gein is looking for a label and/or terminator */ 5 52 5 53 /* end of first word */ 5 54 5 55 seeking_terminator, /* 1=gein is looking for a terminator */ 5 56 lower_case, /* 1=lower case print conversion wanted */ 5 57 no_bar, /* 1=do not run slave program in BAR mode */ 5 58 long, /* 1=print some lines from execution reort on terminal */ 5 59 endfc, /* 1=process endfc option on endcopy card */ 5 60 gtssflag, /* 1=update gtss_user_state_ during execution */ 5 61 identflag, /* 1= use $ident banner info for print & punch */ 5 62 spawnflag, /* 1= entry due to tss spawn */ 5 63 taskflag /* 1= entry due to tss drl task */ 5 64 ) bit(1) unal, 5 65 2 pad6 bit(27)unal 5 66 ; 5 67 5 68 /* END INCLUDE FILE gcos_flags.incl.pl1 */ 4 29 4 30 4 31 /* END INCLUDE FILE gcos_save_data_entry.incl.pl1 */ 1 108 1 109 6 1 /* BEGIN INCLUDE FILE gcos_file_info_block_.incl.pl1 DAK - APRIL 74 */ 6 2 6 3 /* Declaration of File Information Block (fib) 6 4* 6 5* Change: Mel Wilson 11/01/79 for gtss compatibility 6 6* Change: Dave Ward 05/20/81 *_file constants. 6 7* Change: Dave Ward 05/29/81 separated fct structures. 6 8* Change: Dave Ward 09/02/81 provision for tape density 6250, dens_hist 2 bits (not 3). 6 9**/ 6 10 dcl 1 fib aligned based (fibptr) /* fib structure */ 6 11 6 12 , 2 buffer ptr aligned /* pointer to current buffer (gcos_write_) */ 6 13 , 2 buffer_indx fixed bin /* Index to buffer in use. */ 6 14 , 2 stream char(8)unal /* stream name for attaching this file */ 6 15 , 2 pathnm char(168)unal /* pathname (for disk, print or punch files) */ 6 16 , 2 unique_file_id bit(36) /* multics unique segment id for file */ 6 17 , 2 indicators /* five words of flags */ 6 18 6 19 , 3 indicators_word_1 6 20 , 4 used bit(1) unal /* 1=fib used, 0=fib used */ 6 21 , 4 attached bit(1) unal /* 1=stream is attached */ 6 22 , 4 type bit(1) unal /* 1=random, 0=linked */ 6 23 , 4 perm bit(1) unal /* 1=permanent file, 0=not */ 6 24 , 4 print bit(1) unal /* 1=file type is printer */ 6 25 , 4 punch bit(1) unal /* 1=file type is punch */ 6 26 , 4 reader bit(1) unal /* 1=file type is card reader */ 6 27 , 4 tape bit(1) unal /* 1=file type is tape */ 6 28 , 4 console bit(1) unal /* 1=file type is console typewriter */ 6 29 , 4 read bit(1) unal /* 1=read access permitted */ 6 30 , 4 write bit(1) unal /* 1=write access permitted */ 6 31 , 4 null bit(1) unal /* 1=file is null */ 6 32 , 4 purge bit(1) unal /* 1=purge file at time on release */ 6 33 , 4 gein bit(1) unal /* 1 = this file contains data cards from the job deck */ 6 34 , 4 disp bit(2) unal /* disposition code: 6 35* 00 = dismount 6 36* 01 = release 6 37* 10 = save 6 38* 11 = continue */ 6 39 , 4 adisp bit(2) unal /* abort disp - same codes as disp */ 6 40 , 4 order bit(1) unal /* 1 = write, 0 = read or other */ 6 41 , 4 mode bit(2) unal /* tape i/o mode 6 42* 00 = binary 6 43* 01 = decimal 6 44* 10 = nine */ 6 45 , 4 tracks bit(2) unal /* tape request code: 6 46* 00 = installation default 6 47* 01 = 7 track 6 48* 10 = 9 track */ 6 49 , 4 density bit(4) unal /* tape density from $ TAPE card 6 50* 0000 = site standard high 6 51* 0001 = 200 bpi 6 52* 0010 = 556 bpi 6 53* 0100 = 800 bpi 6 54* 1001 = 1600 bpi 6 55* 1100 = 6250 bpi 6 56* 1111 = handler capable of any appropriate denisty */ 6 57 , 4 dens_hist bit(2) unal /* density history for MME GEFADD */ 6 58 , 4 forced_acl_flag bit(1) unal /* 1 => acl forced for gtss file (2.4) */ 6 59 , 4 fill bit(6) unal /* reserved for future use */ 6 60 , 3 indicators_word_2 6 61 , 4 plud bit(18) unal /* primary log unit designator */ 6 62 /* bcd channel and channel number */ 6 63 6 64 , 4 slud bit(18) unal /* secondary log. unit designator */ 6 65 /* bcd channel and channel number */ 6 66 , 3 indicators_word_3 6 67 , 4 serial_no bit(30) unal /* tape serial number */ 6 68 , 4 pad bit( 6) unal /* unused */ 6 69 , 3 indicators_word_4 6 70 , 4 tape_name bit(72) unal /* tape name */ 6 71 6 72 , 2 current fixed bin(21) /* current file position */ 6 73 , 2 last fixed bin(21) /* eof for sequential disk files */ 6 74 , 2 size fixed bin(24) /* offset of end of file in words */ 6 75 , 2 init_size fixed bin(24) /* file size at start of activity */ 6 76 , 2 init_posit fixed bin(24) /* file position at start of activity */ 6 77 , 2 iocount fixed bin(35) /* total no. of i/o operations */ 6 78 , 2 rec_len fixed bin(24) /* length of current record (gcos_write_) */ 6 79 , 2 command_count fixed bin(17) unal /* size of command table for device (gcos_mme_inos_) */ 6 80 , 2 command_index fixed bin(17) unal /* pointer to command table entry (gcos_mme_inos_) */ 6 81 , 2 error_retry fixed bin(17) unal /* error retry counter */ 6 82 , 2 seq_no fixed bin(17) unal /* tape reel sequence no */ 6 83 ; 6 84 dcl fibptr ptr /* pointer to current fib in gcos_ext_stat_ */; 6 85 6 86 /* File usage classification constants: */ 6 87 dcl linked_file bit(1)static int options(constant)init("0"b); 6 88 dcl random_file bit(1)static int options(constant)init("1"b); 6 89 dcl read_file bit(1)static int options(constant)init("0"b); 6 90 dcl write_file bit(1)static int options(constant)init("1"b); 6 91 6 92 /* END INCLUDE FILE gcos_file_info_block_.incl.pl1 */ 1 110 1 111 1 112 dcl 1 gcos_ext_stat_$mc like mc /* machine condition from abort or fault */ ext; 7 1 /* */ 7 2 /* BEGIN INCLUDE FILE mc.incl.pl1 Created Dec 72 for 6180 - WSS. */ 7 3 /* Modified 06/07/76 by Greenberg for mc.resignal */ 7 4 /* Modified 07/07/76 by Morris for fault register data */ 7 5 /* Modified 08/28/80 by J. A. Bush for the DPS8/70M CVPU */ 7 6 /* Modified '82 to make values constant */ 7 7 7 8 /* words 0-15 pointer registers */ 7 9 7 10 dcl mcp ptr; 7 11 7 12 dcl 1 mc based (mcp) aligned, 7 13 2 prs (0:7) ptr, /* POINTER REGISTERS */ 7 14 (2 regs, /* registers */ 7 15 3 x (0:7) bit (18), /* index registers */ 7 16 3 a bit (36), /* accumulator */ 7 17 3 q bit (36), /* q-register */ 7 18 3 e bit (8), /* exponent */ 7 19 3 pad1 bit (28), 7 20 3 t bit (27), /* timer register */ 7 21 3 pad2 bit (6), 7 22 3 ralr bit (3), /* ring alarm register */ 7 23 7 24 2 scu (0:7) bit (36), 7 25 7 26 2 mask bit (72), /* mem controller mask at time of fault */ 7 27 2 ips_temp bit (36), /* Temporary storage for IPS info */ 7 28 2 errcode fixed bin (35), /* fault handler's error code */ 7 29 2 fim_temp, 7 30 3 unique_index bit (18) unal, /* unique index for restarting faults */ 7 31 3 resignal bit (1) unal, /* recompute signal name with fcode below */ 7 32 3 fcode bit (17) unal, /* fault code used as index to FIM table and SCT */ 7 33 2 fault_reg bit (36), /* fault register */ 7 34 2 pad2 bit (1), 7 35 2 cpu_type fixed bin (2) unsigned, /* L68 = 0, DPS8/70M = 1 */ 7 36 2 ext_fault_reg bit (15), /* extended fault reg for DPS8/70M CPU */ 7 37 2 fault_time bit (54), /* time of fault */ 7 38 7 39 2 eis_info (0:7) bit (36)) unaligned; 7 40 7 41 7 42 dcl (apx fixed bin init (0), 7 43 abx fixed bin init (1), 7 44 bpx fixed bin init (2), 7 45 bbx fixed bin init (3), 7 46 lpx fixed bin init (4), 7 47 lbx fixed bin init (5), 7 48 spx fixed bin init (6), 7 49 sbx fixed bin init (7)) internal static options (constant); 7 50 7 51 7 52 7 53 7 54 dcl scup ptr; 7 55 7 56 dcl 1 scu based (scup) aligned, /* SCU DATA */ 7 57 7 58 7 59 /* WORD (0) */ 7 60 7 61 (2 ppr, /* PROCEDURE POINTER REGISTER */ 7 62 3 prr bit (3), /* procedure ring register */ 7 63 3 psr bit (15), /* procedure segment register */ 7 64 3 p bit (1), /* procedure privileged bit */ 7 65 7 66 2 apu, /* APPENDING UNIT STATUS */ 7 67 3 xsf bit (1), /* ext seg flag - IT modification */ 7 68 3 sdwm bit (1), /* match in SDW Ass. Mem. */ 7 69 3 sd_on bit (1), /* SDW Ass. Mem. ON */ 7 70 3 ptwm bit (1), /* match in PTW Ass. Mem. */ 7 71 3 pt_on bit (1), /* PTW Ass. Mem. ON */ 7 72 3 pi_ap bit (1), /* Instr Fetch or Append cycle */ 7 73 3 dsptw bit (1), /* Fetch of DSPTW */ 7 74 3 sdwnp bit (1), /* Fetch of SDW non paged */ 7 75 3 sdwp bit (1), /* Fetch of SDW paged */ 7 76 3 ptw bit (1), /* Fetch of PTW */ 7 77 3 ptw2 bit (1), /* Fetch of pre-paged PTW */ 7 78 3 fap bit (1), /* Fetch of final address paged */ 7 79 3 fanp bit (1), /* Fetch of final address non-paged */ 7 80 3 fabs bit (1), /* Fetch of final address absolute */ 7 81 7 82 2 fault_cntr bit (3), /* number of retrys of EIS instructions */ 7 83 7 84 7 85 /* WORD (1) */ 7 86 7 87 2 fd, /* FAULT DATA */ 7 88 3 iro bit (1), /* illegal ring order */ 7 89 3 oeb bit (1), /* out of execute bracket */ 7 90 3 e_off bit (1), /* no execute */ 7 91 3 orb bit (1), /* out of read bracket */ 7 92 3 r_off bit (1), /* no read */ 7 93 3 owb bit (1), /* out of write bracket */ 7 94 3 w_off bit (1), /* no write */ 7 95 3 no_ga bit (1), /* not a gate */ 7 96 3 ocb bit (1), /* out of call bracket */ 7 97 3 ocall bit (1), /* outward call */ 7 98 3 boc bit (1), /* bad outward call */ 7 99 3 inret bit (1), /* inward return */ 7 100 3 crt bit (1), /* cross ring transfer */ 7 101 3 ralr bit (1), /* ring alarm register */ 7 102 3 am_er bit (1), /* associative memory fault */ 7 103 3 oosb bit (1), /* out of segment bounds */ 7 104 3 paru bit (1), /* processor parity upper */ 7 105 3 parl bit (1), /* processor parity lower */ 7 106 3 onc_1 bit (1), /* op not complete type 1 */ 7 107 3 onc_2 bit (1), /* op not complete type 2 */ 7 108 7 109 2 port_stat, /* PORT STATUS */ 7 110 3 ial bit (4), /* illegal action lines */ 7 111 3 iac bit (3), /* illegal action channel */ 7 112 3 con_chan bit (3), /* connect channel */ 7 113 7 114 2 fi_num bit (5), /* (fault/interrupt) number */ 7 115 2 fi_flag bit (1), /* 1 => fault, 0 => interrupt */ 7 116 7 117 7 118 /* WORD (2) */ 7 119 7 120 2 tpr, /* TEMPORARY POINTER REGISTER */ 7 121 3 trr bit (3), /* temporary ring register */ 7 122 3 tsr bit (15), /* temporary segment register */ 7 123 7 124 2 pad2 bit (9), 7 125 7 126 2 cpu_no bit (3), /* CPU number */ 7 127 7 128 2 delta bit (6), /* tally modification DELTA */ 7 129 7 130 7 131 /* WORD (3) */ 7 132 7 133 2 word3 bit (18), 7 134 7 135 2 tsr_stat, /* TSR STATUS for 1,2,&3 word instructions */ 7 136 3 tsna, /* Word 1 status */ 7 137 4 prn bit (3), /* Word 1 PR number */ 7 138 4 prv bit (1), /* Word 1 PR valid bit */ 7 139 3 tsnb, /* Word 2 status */ 7 140 4 prn bit (3), /* Word 2 PR number */ 7 141 4 prv bit (1), /* Word 2 PR valid bit */ 7 142 3 tsnc, /* Word 3 status */ 7 143 4 prn bit (3), /* Word 3 PR number */ 7 144 4 prv bit (1), /* Word 3 PR valid bit */ 7 145 7 146 2 tpr_tbr bit (6), /* TPR.TBR field */ 7 147 7 148 7 149 /* WORD (4) */ 7 150 7 151 2 ilc bit (18), /* INSTRUCTION COUNTER */ 7 152 7 153 2 ir, /* INDICATOR REGISTERS */ 7 154 3 zero bit (1), /* zero indicator */ 7 155 3 neg bit (1), /* negative indicator */ 7 156 3 carry bit (1), /* carryry indicator */ 7 157 3 ovfl bit (1), /* overflow indicator */ 7 158 3 eovf bit (1), /* eponent overflow */ 7 159 3 eufl bit (1), /* exponent underflow */ 7 160 3 oflm bit (1), /* overflow mask */ 7 161 3 tro bit (1), /* tally runout */ 7 162 3 par bit (1), /* parity error */ 7 163 3 parm bit (1), /* parity mask */ 7 164 3 bm bit (1), /* ^bar mode */ 7 165 3 tru bit (1), /* truncation mode */ 7 166 3 mif bit (1), /* multi-word instruction mode */ 7 167 3 abs bit (1), /* absolute mode */ 7 168 3 pad bit (4), 7 169 7 170 7 171 /* WORD (5) */ 7 172 7 173 2 ca bit (18), /* COMPUTED ADDRESS */ 7 174 7 175 2 cu, /* CONTROL UNIT STATUS */ 7 176 3 rf bit (1), /* on first cycle of repeat instr */ 7 177 3 rpt bit (1), /* repeat instruction */ 7 178 3 rd bit (1), /* repeat double instruction */ 7 179 3 rl bit (1), /* repeat link instruciton */ 7 180 3 pot bit (1), /* IT modification */ 7 181 3 pon bit (1), /* return type instruction */ 7 182 3 xde bit (1), /* XDE from Even location */ 7 183 3 xdo bit (1), /* XDE from Odd location */ 7 184 3 poa bit (1), /* operation preparation */ 7 185 3 rfi bit (1), /* tells CPU to refetch instruction */ 7 186 3 its bit (1), /* ITS modification */ 7 187 3 if bit (1), /* fault occured during instruction fetch */ 7 188 7 189 2 cpu_tag bit (6)) unaligned, /* computed tag field */ 7 190 7 191 7 192 /* WORDS (6,7) */ 7 193 7 194 2 even_inst bit (36), /* even instruction of faulting pair */ 7 195 7 196 2 odd_inst bit (36); /* odd instruction of faulting pair */ 7 197 7 198 7 199 7 200 7 201 7 202 7 203 /* ALTERNATE SCU DECLARATION */ 7 204 7 205 7 206 dcl 1 scux based (scup) aligned, 7 207 7 208 (2 pad0 bit (36), 7 209 7 210 2 fd, /* GROUP II FAULT DATA */ 7 211 3 isn bit (1), /* illegal segment number */ 7 212 3 ioc bit (1), /* illegal op code */ 7 213 3 ia_am bit (1), /* illegal address - modifier */ 7 214 3 isp bit (1), /* illegal slave procedure */ 7 215 3 ipr bit (1), /* illegal procedure */ 7 216 3 nea bit (1), /* non existent address */ 7 217 3 oobb bit (1), /* out of bounds */ 7 218 3 pad bit (29), 7 219 7 220 2 pad2 bit (36), 7 221 7 222 2 pad3a bit (18), 7 223 7 224 2 tsr_stat (0:2), /* TSR STATUS as an ARRAY */ 7 225 3 prn bit (3), /* PR number */ 7 226 3 prv bit (1), /* PR valid bit */ 7 227 7 228 2 pad3b bit (6)) unaligned, 7 229 7 230 2 pad45 (0:1) bit (36), 7 231 7 232 2 instr (0:1) bit (36); /* Instruction ARRAY */ 7 233 7 234 7 235 7 236 /* END INCLUDE FILE mc.incl.pl1 */ 1 113 1 114 1 115 dcl 1 gcos_ext_stat_$gcos_gtss ext 1 116 , 3 gcos_gtss_ext 1 117 , 4 u_state_ptr ptr 1 118 , 4 snumb_index fixed bin(24) 1 119 , 4 home_path char(168) 1 120 ; 1 121 1 122 /* END INCLUDE FILE gcos_ext_stat_.incl.pl1 */ 608 609 8 1 /* BEGIN INCLUDE FILE gcos_dbs_names.incl.pl1 (Wardd Multics) 06/08/81 1626.9 mst Mon */ 8 2 8 3 dcl dbs_names (11)char(14)var static int options(constant)init( 8 4 /* 1 */ "attach_file" 8 5 , /* 2 */ "dollar" 8 6 , /* 3 */ "filecode" 8 7 , /* 4 */ "mme_call" 8 8 , /* 5 */ "mme_inos_trace" 8 9 , /* 6 */ "trace_mme" 8 10 , /* 7 */ "nondollar" 8 11 , /* 8 */ "open_file" 8 12 , /* 9 */ "msf_test" 8 13 , /* 10 */ "stop_mme" 8 14 , /* 11 */ "mme_inos_stop" 8 15 ); 8 16 8 17 dcl ( 8 18 dbs_attach_file defined(gcos_ext_stat_$dbs(1)) 8 19 ,dbs_dollar defined(gcos_ext_stat_$dbs(2)) 8 20 ,dbs_filecode defined(gcos_ext_stat_$dbs(3)) 8 21 ,dbs_mme_call defined(gcos_ext_stat_$dbs(4)) 8 22 ,dbs_mme_inos_trace defined(gcos_ext_stat_$dbs(5)) 8 23 ,dbs_trace_mme defined(gcos_ext_stat_$dbs(6)) 8 24 ,dbs_nondollar defined(gcos_ext_stat_$dbs(7)) 8 25 ,dbs_open_file defined(gcos_ext_stat_$dbs(8)) 8 26 ,dbs_msf_test defined(gcos_ext_stat_$dbs(9)) 8 27 ,dbs_stop_mme defined(gcos_ext_stat_$dbs(10)) 8 28 ,dbs_mme_inos_stop defined(gcos_ext_stat_$dbs(11)) 8 29 ) bit(1); 8 30 8 31 /* END INCLUDE FILE gcos_dbs_names.incl.pl1 */ 610 611 end gcos_mme_call_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/09/83 1007.3 gcos_mme_call_.pl1 >spec>on>09/07/83-gcos>gcos_mme_call_.pl1 608 1 09/08/83 1229.3 gcos_ext_stat_.incl.pl1 >spec>on>09/07/83-gcos>gcos_ext_stat_.incl.pl1 1-100 2 03/27/82 0424.8 gcos_save_mc.incl.pl1 >ldd>include>gcos_save_mc.incl.pl1 1-104 3 03/27/82 0424.8 gcos_fct_entry.incl.pl1 >ldd>include>gcos_fct_entry.incl.pl1 1-108 4 03/27/82 0424.8 gcos_save_data_entry.incl.pl1 >ldd>include>gcos_save_data_entry.incl.pl1 4-29 5 09/08/83 1230.3 gcos_flags.incl.pl1 >spec>on>09/07/83-gcos>gcos_flags.incl.pl1 1-110 6 03/27/82 0424.8 gcos_file_info_block_.incl.pl1 >ldd>include>gcos_file_info_block_.incl.pl1 1-113 7 08/17/83 1135.7 mc.incl.pl1 >ldd>include>mc.incl.pl1 610 8 03/27/82 0424.8 gcos_dbs_names.incl.pl1 >ldd>include>gcos_dbs_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. a 24 based bit(36) level 3 packed unaligned dcl 7-12 set ref 356* abort_number 002242 automatic fixed bin(35,0) dcl 481 set ref 474* 475 accum 000100 automatic fixed bin(71,0) dcl 488 set ref 291* 294* 294 295 296* 296 300 addr builtin function dcl 489 ref 48 49 80 81 82 85 85 85 85 116 125 125 125 125 188 188 188 188 213 217 272 360 369 370 372 372 372 372 478 addrel builtin function dcl 490 ref 50 83 290 370 address 3 based fixed bin(24,0) array level 3 in structure "catblk" dcl 589 in procedure "gcos_mme_call_" ref 170 address 3(18) based fixed bin(18,0) array level 3 in structure "gcatblk" packed unsigned unaligned dcl 598 in procedure "gcos_mme_call_" ref 146 ascii_gecall_name 000102 automatic char(6) unaligned dcl 491 set ref 85 85 90* 125 125 128* 188 188 192* avail_ptr based fixed bin(18,0) level 2 packed unsigned unaligned dcl 598 ref 140 bit builtin function dcl 492 ref 347 buffer 000104 automatic bit(36000) unaligned dcl 493 set ref 116 callp 002054 automatic pointer dcl 494 set ref 50* 62 83* 85 85 125 125 126 145 169 188 188 190 235 236 238 239 248 256 256 301 370* 391 476 477 catblk based structure level 1 dcl 589 check_fs_errcode_ 000010 constant entry external dcl 496 ref 123 checker based bit(36) array dcl 495 ref 294 code based fixed bin(24,0) level 2 in structure "status" dcl 549 in procedure "gcos_mme_call_" set ref 119 123 123* 135 153 159 198 204 259 260 280 281 327 335 code parameter fixed bin(35,0) dcl 482 in procedure "Error" set ref 472 474* content 1 based fixed bin(35,0) array level 2 dcl 459 set ref 402* 402 409 count 0(24) based bit(12) level 2 packed unaligned dcl 577 ref 215 219 273 data_addr based bit(18) level 2 packed unaligned dcl 577 ref 214 215 218 219 data_check based fixed bin(24,0) level 2 dcl 564 ref 288 300 data_words 5(18) based bit(18) level 2 packed unaligned dcl 564 ref 223 dbs_mme_call defined bit(1) unaligned dcl 8-17 ref 84 402 412 dcw_model based structure level 1 dcl 577 dcwp 002056 automatic pointer dcl 497 set ref 213* 214 215 215 217* 218 219 219 272* 273 dcws 6 based bit(36) array level 2 packed unaligned dcl 564 set ref 212 213 217 272 divide builtin function dcl 420 ref 432 dylibsw 002060 automatic bit(1) initial dcl 498 set ref 57* 74* 177 498* elblock 2 based structure array level 2 in structure "gcatblk" dcl 598 in procedure "gcos_mme_call_" elblock 2 based structure array level 2 in structure "catblk" dcl 589 in procedure "gcos_mme_call_" element 2 based bit(36) array level 3 in structure "gcatblk" dcl 598 in procedure "gcos_mme_call_" ref 145 element 2 based bit(36) array level 3 in structure "catblk" packed unaligned dcl 589 in procedure "gcos_mme_call_" ref 169 entry 4 based bit(18) level 2 packed unaligned dcl 564 ref 232 eof 1(09) based bit(1) level 2 packed unaligned dcl 549 ref 259 error_return_loc 1(18) based bit(18) level 2 packed unaligned dcl 556 set ref 62 126 190 248 301 476 477* fb18 002061 automatic fixed bin(18,0) dcl 499 set ref 345* 346* 346 347 fc 002062 automatic char(6) unaligned dcl 500 set ref 372 372 374 383 383 fct 000052 external static structure array level 2 dcl 1-102 fct_entry based structure level 1 dcl 3-3 fib based structure level 1 dcl 6-10 fibptr 2 000052 external static pointer array level 3 in structure "gcos_ext_stat_$fct" dcl 1-102 in procedure "gcos_mme_call_" ref 59 fibptr 002174 automatic pointer dcl 6-84 in procedure "gcos_mme_call_" set ref 59* 60 60 61 67 fibs 322 000054 external static structure array level 3 dcl 1-106 ref 54 373 filecode 000052 external static char(2) array level 3 dcl 1-102 ref 55 374 first_lib 002064 automatic bit(1) initial dcl 501 set ref 77 79* 501* first_loc 002065 automatic fixed bin(18,0) dcl 502 set ref 210* 214* 214 218* 218 220 266* 266 279 290 first_patch_offset 3 based bit(18) array level 3 packed unaligned dcl 463 ref 396 fixed builtin function dcl 503 ref 214 215 215 218 219 219 221 222 223 232 236 238 239 256 273 294 322 322 345 476 flags based structure level 1 dcl 5-8 flgs 000054 external static structure level 3 dcl 1-106 floor builtin function dcl 421 ref 432 gcatblk based structure level 1 dcl 598 gcatsw 002066 automatic bit(1) unaligned dcl 504 set ref 141* 166* 225 325 gcos_cv_gebcd_ascii_ 000012 constant entry external dcl 505 ref 85 125 188 372 gcos_et_$call_name_missing 000014 external static fixed bin(35,0) dcl 506 set ref 190* 192* gcos_et_$call_rstr_cksm 000016 external static fixed bin(35,0) dcl 507 set ref 301* 303* gcos_et_$fc_not_defined 000020 external static fixed bin(35,0) dcl 508 set ref 383* gcos_et_$io_err_call_save 000022 external static fixed bin(35,0) dcl 509 set ref 126* 128* gcos_et_$io_lim_call_save 000024 external static fixed bin(35,0) dcl 510 set ref 248* 250* gcos_et_$non_rndm_call_file 000026 external static fixed bin(35,0) dcl 511 set ref 62* 64* gcos_ext_stat_$dbs 000042 external static bit(1) array unaligned dcl 1-19 ref 84 84 402 402 412 412 gcos_ext_stat_$fct 000052 external static structure level 1 dcl 1-102 gcos_ext_stat_$gcos_slave_area_seg 000044 external static pointer dcl 1-27 set ref 50 83 279* 290 370 401 gcos_ext_stat_$patchfile_ptr 000046 external static pointer dcl 1-45 ref 388 396 396 397 427 434 435 gcos_ext_stat_$save_data 000054 external static structure level 1 dcl 1-106 gcos_ext_stat_$storage_limit 000050 external static fixed bin(19,0) dcl 1-60 ref 210 247 399 gcos_mme_bort_$abort_number 000030 constant entry external dcl 512 ref 474 gcos_mme_bort_$system 000032 constant entry external dcl 513 ref 64 128 192 250 303 383 gcos_reloc based structure level 1 dcl 585 gecall based structure level 1 dcl 556 half_wd based bit(18) array level 2 packed unaligned dcl 585 set ref 345 347* i 002212 automatic fixed bin(24,0) dcl 449 in procedure "Apply_Patches" set ref 398* 399 401 402 402 409* i 002067 automatic fixed bin(24,0) dcl 514 in procedure "gcos_mme_call_" set ref 49* 50 54* 55 55 59* 82* 83 144* 145 146* 168* 169 170* 270* 272* 293* 294* 343* 344 345 347* 373* 374 374* ilc 4 based bit(18) level 2 packed unaligned dcl 7-56 set ref 49 82 360 370 478 increment parameter fixed bin(24,0) dcl 515 set ref 6 360* 366 478* indicators 60 based structure level 2 dcl 6-10 indicators_word_1 60 based structure level 3 dcl 6-10 instruction_counter based fixed bin(18,0) unsigned unaligned dcl 516 ref 49 82 360 370 478 ioa_ 000034 constant entry external dcl 517 ref 90 402 412 iocount 72 based fixed bin(35,0) level 2 dcl 6-10 set ref 60* 60 ios_$read 000036 constant entry external dcl 518 ref 134 158 203 279 334 ios_$seek 000040 constant entry external dcl 519 ref 118 152 197 258 326 j 002070 automatic fixed bin(24,0) dcl 520 set ref 134* 158* 203* 273* 274 274* 275 334* k 002071 automatic fixed bin(24,0) dcl 521 set ref 93* 279* 280 l 002232 automatic fixed bin(24,0) dcl 422 set ref 426* 430 432 435* last_loc 002072 automatic fixed bin(18,0) dcl 522 set ref 211* 215* 215 219* 219 220 load_at 002074 automatic char(8) dcl 523 set ref 67* 75* 118* 128* 134* 152* 158* 182* 197* 203* 258* 279* 326* 334* load_increment 002076 automatic fixed bin(24,0) dcl 524 set ref 233* 236* 238* 240 266 309 322* 322 346 load_origin 002077 automatic fixed bin(24,0) dcl 525 set ref 222* 236 238 239* 247 356 location based fixed bin(17,0) array level 2 dcl 459 ref 399 401 longerror 002100 automatic char(100) unaligned dcl 526 set ref 123* 128* 260* 281* max builtin function dcl 527 ref 215 219 mc based structure level 1 dcl 7-12 mcp parameter pointer dcl 7-10 ref 6 48 81 253 253 356 366 369 372 372 475 message 002131 automatic char(60) unaligned dcl 528 set ref 120* 128* 136* 154* 160* 199* 205* 262* 283* 328* 336* min builtin function dcl 529 ref 214 218 340 342 module 2 based structure array level 2 dcl 463 module_name 002213 automatic bit(36) unaligned dcl 450 set ref 391* 434 435 module_name_index 002214 automatic fixed bin(24,0) dcl 451 set ref 395 396 397 432* 434 434 435 435 441* name 2 based bit(36) array level 3 dcl 463 ref 434 435 ndcw 002150 automatic fixed bin(24,0) dcl 530 set ref 212* 212* 213* 217 230 270 next_cat 0(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 598 ref 151 152 no_ent 1 based fixed bin(24,0) level 2 dcl 589 ref 168 null builtin function dcl 452 ref 388 number_of_names 1 based fixed bin(24,0) level 2 dcl 463 ref 427 number_of_patches 002215 automatic fixed bin(24,0) dcl 453 in procedure "Apply_Patches" set ref 397* 398 number_of_patches 3(18) based fixed bin(17,0) array level 3 in structure "patch_file" packed unaligned dcl 463 in procedure "Apply_Patches" ref 397 origin 1 based bit(18) level 2 in structure "gecall" packed unaligned dcl 556 in procedure "gcos_mme_call_" ref 235 236 238 239 origin 4(18) based bit(18) level 2 in structure "preface" packed unaligned dcl 564 in procedure "gcos_mme_call_" ref 222 322 322 patch based structure array level 1 dcl 459 patch_file based structure level 1 dcl 463 patch_ptr 002216 automatic pointer dcl 454 set ref 396* 399 401 402 402 409 pgm_length 002151 automatic fixed bin(24,0) dcl 531 set ref 223* 227* 227 326 pgm_text_length 002152 automatic fixed bin(18,0) dcl 532 set ref 220* 247 342 356 preface based structure level 1 dcl 564 prefp 002154 automatic pointer dcl 533 set ref 116* 134* 140 145 146 151 152 158* 168 169 170 203* 212 213 217 221 222 223 232 272 288 300 322 322 334* 344 prog_name based bit(36) level 2 packed unaligned dcl 556 set ref 85 85 125 125 145 169 188 188 391 ptr 002156 automatic pointer dcl 534 in procedure "gcos_mme_call_" set ref 290* 294 345 347 ptr builtin function dcl 455 in procedure "Apply_Patches" ref 396 401 q 25 based bit(36) level 3 packed unaligned dcl 7-12 set ref 253* 253 372 372 475* regs 20 based structure level 2 packed unaligned dcl 7-12 reloc_bits based bit(1) array unaligned dcl 535 ref 344 reloc_len 002160 automatic fixed bin(24,0) dcl 536 set ref 221* 226* 226 308 340 341* 341 351 reloc_words 5 based bit(18) level 2 packed unaligned dcl 564 ref 221 return_loc 002243 automatic fixed bin(18,0) dcl 483 set ref 476* 478 rstr_switch 002161 automatic bit(1) initial dcl 537 set ref 176 368* 537* save_data 000054 external static structure level 2 dcl 1-106 save_data_entry based structure level 1 dcl 4-5 save_machine_conditions based structure level 1 packed unaligned dcl 2-6 scu based structure level 1 dcl 7-56 in procedure "gcos_mme_call_" scu 30 based bit(36) array level 2 in structure "mc" packed unaligned dcl 7-12 in procedure "gcos_mme_call_" set ref 48 81 369 scup 002176 automatic pointer dcl 7-54 set ref 48* 49 81* 82 360 369* 370 478 seclibsw 002162 automatic bit(1) initial dcl 538 set ref 179 180* 538* seek_save 002163 automatic fixed bin(24,0) dcl 539 set ref 93* 146* 170* 197* 228* 228 230* 230 258* 326 size 002164 automatic fixed bin(24,0) dcl 540 set ref 340* 342* 342 343 st 002166 automatic bit(72) dcl 541 set ref 80 118* 134* 152* 158* 197* 203* 258* 279* 326* 334* statp 002170 automatic pointer dcl 543 set ref 80* 119 123 123 135 153 159 198 204 259 259 260 280 281 327 335 status based structure level 1 dcl 549 stream 3 based char(8) level 2 packed unaligned dcl 6-10 ref 67 substr builtin function dcl 544 ref 212 253 253 300 356 356 374 383 383 sysout 1 000052 external static bit(1) array level 3 packed unaligned dcl 1-102 ref 55 374 transfer_addr 002172 automatic fixed bin(24,0) dcl 545 set ref 232* 240* 240 253 256* 360 type 60(02) based bit(1) level 4 packed unaligned dcl 6-10 ref 61 u 002233 automatic fixed bin(24,0) dcl 423 set ref 427* 430 432 434* unspec builtin function dcl 546 ref 253 300 300 356 356 475 userlib 0(22) 000054 external static bit(1) level 4 packed unaligned dcl 1-106 ref 181 word based fixed bin(35,0) dcl 456 set ref 402* 402 409* word_ptr 002220 automatic pointer dcl 457 set ref 401* 402 402 409 xfer_addr 2 based bit(18) level 2 packed unaligned dcl 556 ref 256 256 xfer_total 002173 automatic fixed bin(24,0) dcl 547 set ref 269* 275* 275 279* 280 293 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. abx internal static fixed bin(17,0) initial dcl 7-42 apx internal static fixed bin(17,0) initial dcl 7-42 bbx internal static fixed bin(17,0) initial dcl 7-42 bpx internal static fixed bin(17,0) initial dcl 7-42 dbs_attach_file defined bit(1) unaligned dcl 8-17 dbs_dollar defined bit(1) unaligned dcl 8-17 dbs_filecode defined bit(1) unaligned dcl 8-17 dbs_mme_inos_stop defined bit(1) unaligned dcl 8-17 dbs_mme_inos_trace defined bit(1) unaligned dcl 8-17 dbs_msf_test defined bit(1) unaligned dcl 8-17 dbs_names internal static varying char(14) initial array dcl 8-3 dbs_nondollar defined bit(1) unaligned dcl 8-17 dbs_open_file defined bit(1) unaligned dcl 8-17 dbs_stop_mme defined bit(1) unaligned dcl 8-17 dbs_trace_mme defined bit(1) unaligned dcl 8-17 gcos_ext_stat_$abort_reason external static varying char(128) dcl 1-13 gcos_ext_stat_$abort_return external static label variable dcl 1-14 gcos_ext_stat_$activity_card_num external static picture(4) unaligned dcl 1-15 gcos_ext_stat_$activity_name external static char(8) unaligned dcl 1-16 gcos_ext_stat_$activity_start_time external static fixed bin(71,0) dcl 1-17 gcos_ext_stat_$card_num external static picture(4) unaligned dcl 1-18 gcos_ext_stat_$courtesy_call_control external static structure level 1 dcl 1-92 gcos_ext_stat_$default_nondollar external static char(2) unaligned dcl 1-20 gcos_ext_stat_$dir_rings external static fixed bin(3,0) array dcl 1-21 gcos_ext_stat_$dpno external static varying char(100) dcl 1-22 gcos_ext_stat_$dpo external static varying char(100) dcl 1-23 gcos_ext_stat_$endfc external static char(2) unaligned dcl 1-24 gcos_ext_stat_$er external static pointer dcl 1-25 gcos_ext_stat_$etc_filecode external static char(2) unaligned dcl 1-26 gcos_ext_stat_$gcos_gtss external static structure level 1 unaligned dcl 1-115 gcos_ext_stat_$gf external static fixed bin(24,0) dcl 1-28 gcos_ext_stat_$incode external static fixed bin(24,0) dcl 1-29 gcos_ext_stat_$increment_hold external static fixed bin(24,0) dcl 1-30 gcos_ext_stat_$initial_cpu_time external static fixed bin(71,0) dcl 1-31 gcos_ext_stat_$input_segment_path external static varying char(168) dcl 1-32 gcos_ext_stat_$jcl_warnings external static fixed bin(24,0) dcl 1-33 gcos_ext_stat_$job_cpu_time external static fixed bin(71,0) dcl 1-34 gcos_ext_stat_$job_id external static varying char(18) dcl 1-35 gcos_ext_stat_$job_real_time external static fixed bin(71,0) dcl 1-36 gcos_ext_stat_$last_mme external static fixed bin(24,0) dcl 1-37 gcos_ext_stat_$ldrss external static fixed bin(24,0) dcl 1-38 gcos_ext_stat_$max_activities external static fixed bin(24,0) dcl 1-39 gcos_ext_stat_$max_mem external static fixed bin(19,0) dcl 1-40 gcos_ext_stat_$mc external static structure level 1 unaligned dcl 1-112 gcos_ext_stat_$mme_rtrn external static label variable dcl 1-41 gcos_ext_stat_$nondollar external static char(2) unaligned dcl 1-42 gcos_ext_stat_$nongcos external static char(2) unaligned dcl 1-43 gcos_ext_stat_$normal_return external static label variable dcl 1-44 gcos_ext_stat_$pathname_prefix external static varying char(168) dcl 1-46 gcos_ext_stat_$pch external static pointer dcl 1-47 gcos_ext_stat_$pdir external static varying char(168) dcl 1-48 gcos_ext_stat_$prt external static pointer dcl 1-49 gcos_ext_stat_$rs external static pointer dcl 1-50 gcos_ext_stat_$save_dir external static varying char(168) dcl 1-52 gcos_ext_stat_$saveseg_ptr external static pointer dcl 1-51 gcos_ext_stat_$seg_rings external static fixed bin(3,0) array dcl 1-53 gcos_ext_stat_$sig_ptr external static pointer dcl 1-54 gcos_ext_stat_$skip_umc external static bit(1) unaligned dcl 1-55 gcos_ext_stat_$snumb external static bit(30) dcl 1-56 gcos_ext_stat_$sought_label external static char(8) unaligned dcl 1-57 gcos_ext_stat_$statistics external static fixed bin(24,0) array dcl 1-58 gcos_ext_stat_$stop_code external static fixed bin(24,0) dcl 1-59 gcos_ext_stat_$sysout_limit external static fixed bin(35,0) dcl 1-61 gcos_ext_stat_$sysout_lines external static fixed bin(35,0) dcl 1-62 gcos_ext_stat_$system_free_pointer external static pointer dcl 1-63 gcos_ext_stat_$tape_buffer_size external static fixed bin(35,0) dcl 1-64 gcos_ext_stat_$temp_dir external static varying char(168) dcl 1-65 gcos_ext_stat_$temp_seg_ptr external static pointer dcl 1-66 gcos_ext_stat_$termination_code external static bit(18) unaligned dcl 1-67 gcos_ext_stat_$time_limit external static fixed bin(71,0) dcl 1-68 gcos_ext_stat_$userid external static char(12) unaligned dcl 1-69 gcos_ext_stat_$validation_level external static fixed bin(3,0) dcl 1-70 lbx internal static fixed bin(17,0) initial dcl 7-42 linked_file internal static bit(1) initial unaligned dcl 6-87 lpx internal static fixed bin(17,0) initial dcl 7-42 random_file internal static bit(1) initial unaligned dcl 6-88 read_file internal static bit(1) initial unaligned dcl 6-89 sbx internal static fixed bin(17,0) initial dcl 7-42 scux based structure level 1 dcl 7-206 spx internal static fixed bin(17,0) initial dcl 7-42 state automatic char(4) unaligned dcl 542 write_file internal static bit(1) initial unaligned dcl 6-90 NAMES DECLARED BY EXPLICIT CONTEXT. Apply_Patches 002403 constant entry internal dcl 385 ref 355 Error 002613 constant entry internal dcl 472 ref 62 126 190 248 301 Get_Module_Name_Index 002547 constant entry internal dcl 417 ref 392 exit_gecall 002260 constant label dcl 362 ref 479 fc_join 000321 constant label dcl 58 set ref 375 gcat_loop 000723 constant label dcl 143 set ref 163 gcos_mme_call_ 000254 constant entry external dcl 6 io_abort 000533 constant label dcl 122 ref 137 155 161 200 206 263 284 329 337 mme_rstr 002263 constant entry external dcl 366 next_lib 001112 constant label dcl 175 ref 151 not_found 001132 constant label dcl 187 set ref 176 rd_rel 002103 constant label dcl 333 ref 351 read 000650 constant label dcl 133 readp 001213 constant label dcl 196 ref 147 171 search_lib 000375 constant label dcl 77 ref 68 183 sim_cat 001065 constant label dcl 165 set ref 140 srch_gs 000371 constant label dcl 73 set ref 177 start_pgm 002234 constant label dcl 354 ref 308 309 NAME DECLARED BY CONTEXT OR IMPLICATION. hbound builtin function ref 54 373 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3120 3176 2652 3130 Length 3602 2652 56 367 246 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gcos_mme_call_ 1306 external procedure is an external procedure. Apply_Patches internal procedure shares stack frame of external procedure gcos_mme_call_. Get_Module_Name_Index internal procedure shares stack frame of external procedure gcos_mme_call_. Error internal procedure shares stack frame of external procedure gcos_mme_call_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gcos_mme_call_ 000100 accum gcos_mme_call_ 000102 ascii_gecall_name gcos_mme_call_ 000104 buffer gcos_mme_call_ 002054 callp gcos_mme_call_ 002056 dcwp gcos_mme_call_ 002060 dylibsw gcos_mme_call_ 002061 fb18 gcos_mme_call_ 002062 fc gcos_mme_call_ 002064 first_lib gcos_mme_call_ 002065 first_loc gcos_mme_call_ 002066 gcatsw gcos_mme_call_ 002067 i gcos_mme_call_ 002070 j gcos_mme_call_ 002071 k gcos_mme_call_ 002072 last_loc gcos_mme_call_ 002074 load_at gcos_mme_call_ 002076 load_increment gcos_mme_call_ 002077 load_origin gcos_mme_call_ 002100 longerror gcos_mme_call_ 002131 message gcos_mme_call_ 002150 ndcw gcos_mme_call_ 002151 pgm_length gcos_mme_call_ 002152 pgm_text_length gcos_mme_call_ 002154 prefp gcos_mme_call_ 002156 ptr gcos_mme_call_ 002160 reloc_len gcos_mme_call_ 002161 rstr_switch gcos_mme_call_ 002162 seclibsw gcos_mme_call_ 002163 seek_save gcos_mme_call_ 002164 size gcos_mme_call_ 002166 st gcos_mme_call_ 002170 statp gcos_mme_call_ 002172 transfer_addr gcos_mme_call_ 002173 xfer_total gcos_mme_call_ 002174 fibptr gcos_mme_call_ 002176 scup gcos_mme_call_ 002212 i Apply_Patches 002213 module_name Apply_Patches 002214 module_name_index Apply_Patches 002215 number_of_patches Apply_Patches 002216 patch_ptr Apply_Patches 002220 word_ptr Apply_Patches 002232 l Get_Module_Name_Index 002233 u Get_Module_Name_Index 002242 abort_number Error 002243 return_loc Error THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_fs_errcode_ gcos_cv_gebcd_ascii_ gcos_mme_bort_$abort_number gcos_mme_bort_$system ioa_ ios_$read ios_$seek THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. gcos_et_$call_name_missing gcos_et_$call_rstr_cksm gcos_et_$fc_not_defined gcos_et_$io_err_call_save gcos_et_$io_lim_call_save gcos_et_$non_rndm_call_file gcos_ext_stat_$dbs gcos_ext_stat_$fct gcos_ext_stat_$gcos_slave_area_seg gcos_ext_stat_$patchfile_ptr gcos_ext_stat_$save_data gcos_ext_stat_$storage_limit LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 498 000241 501 000242 537 000244 538 000245 6 000250 48 000262 49 000267 50 000273 54 000300 55 000305 57 000317 58 000321 59 000322 60 000330 61 000334 62 000337 64 000352 67 000362 68 000366 70 000367 73 000371 74 000372 75 000373 77 000375 79 000377 80 000400 81 000402 82 000407 83 000413 84 000420 85 000423 90 000443 93 000464 116 000466 118 000470 119 000526 120 000530 122 000533 123 000534 125 000553 126 000574 128 000610 133 000650 134 000651 135 000707 136 000711 137 000714 140 000715 141 000721 143 000723 144 000724 145 000731 146 000737 147 000743 149 000744 151 000746 152 000751 153 001012 154 001014 155 001017 158 001020 159 001056 160 001060 161 001063 163 001064 165 001065 166 001066 168 001067 169 001077 170 001104 171 001107 173 001110 175 001112 176 001113 177 001115 179 001117 180 001121 181 001123 182 001127 183 001131 187 001132 188 001133 190 001154 192 001170 196 001213 197 001214 198 001251 199 001253 200 001256 203 001257 204 001315 205 001317 206 001322 210 001323 211 001326 212 001330 213 001341 214 001343 215 001352 216 001362 217 001364 218 001367 219 001376 220 001406 221 001411 222 001414 223 001417 225 001422 226 001424 227 001427 228 001432 229 001434 230 001435 232 001441 233 001444 235 001445 236 001452 238 001460 239 001465 240 001470 247 001472 248 001477 250 001511 253 001521 256 001533 258 001542 259 001577 260 001605 262 001612 263 001615 266 001616 269 001622 270 001623 272 001633 273 001636 274 001641 275 001645 277 001646 279 001650 280 001705 281 001712 283 001717 284 001722 288 001723 290 001725 291 001733 293 001735 294 001745 295 001752 296 001754 298 001757 300 001761 301 001764 303 002000 308 002011 309 002013 322 002015 325 002033 326 002035 327 002075 328 002077 329 002102 333 002103 334 002104 335 002142 336 002144 337 002147 340 002150 341 002155 342 002157 343 002170 344 002177 345 002204 346 002215 347 002217 349 002230 351 002232 354 002234 355 002235 356 002236 360 002250 362 002260 366 002261 368 002271 369 002273 370 002300 372 002310 373 002330 374 002335 375 002351 377 002352 383 002354 611 002402 385 002403 388 002404 391 002412 392 002414 395 002415 396 002417 397 002431 398 002435 399 002443 401 002452 402 002456 409 002517 410 002523 411 002525 412 002526 415 002546 417 002547 426 002550 427 002552 430 002557 432 002563 434 002566 435 002601 436 002607 438 002610 441 002611 444 002612 472 002613 474 002615 475 002626 476 002633 477 002637 478 002641 479 002651 ----------------------------------------------------------- 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