COMPILATION LISTING OF SEGMENT gcos_process_mme_ Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 09/09/83 1143.4 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 gcos_process_mme_: proc (mcp, fault_name, dummy1, dummy2, continue); 7 8 /* 9* 10* This procedure is called by sct_manager_ when a MME1 condition is 11* raised in the current ring. This procedure will make sure the MME1 12* is in the GCOS slave segment and then process it. 13* 14* The faulting instruction (MME1) is located in the machine 15* conditions, and is examined for request type (as given in the 16* computed address by a number from 1 to 44). The type is looked up 17* in a table and the appropriate MME handler is called with a ptr to 18* the machine conditions. When the MME handler returns, this 19* procedure will modify the machine conditions to force a transfer to 20* the proper location, skipping over any parameter words that 21* followed the MME, and then it will return, causing the modified 22* machine conditions to be restored and the execution of the slave 23* program to be resumed. 24* 25**/ 26 27 /* 28* 29**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* HISTORY *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 30* 31* Author: DICK SNYDER OCT 1,1970 32* Change: T. CASEY FEB 1974, 33* AUG 1974 34* Change: D. KAYDEN MAR 1975 35* Change: T. CASEY AUG 1975 36* Change: M. R. Jordan JAN 1977, 37* JUL 1977 38* Change: A. N. Kepner MAR 1978 To allow courtesy call I/O within 39* cc routines 40* Change: Dave Ward 06/09/81 Reorganized. Debug entries updated. 41* Change: Dave Ward 09/09/81 Replaced use of ALM vector 42* (gcos_call_mme_processor_) with 43* "goto mp." 44* Change: Scott C. Akers 11/28/81 Obtain MME number from even instruction 45* in all cases. 46* Change: Ron Barstad 83-08-04 Added MMEs 41-44 for 4js3 47* 48**/ 49 50 /* 51* This procedure is called as a static handler for the condition MME1 52* in the current ring. After making sure the MME is in the GCOS 53* segment and initializing some data items we can get down to the 54* business at hand - processing the MME. 55**/ 56 57 debugsw = dbs_stop_mme | dbs_trace_mme | watchsw ; 58 scup = addr (mc.scu); 59 if substr (baseno (gcos_ext_stat_$gcos_slave_area_seg), 4, 15) ^= scu.ppr.psr then do; 60 if gcos_ext_stat_$sig_ptr ^= null () then 61 call cu_$ptr_call (gcos_ext_stat_$sig_ptr, mcp, fault_name, dummy1, dummy2, continue); 62 return; 63 end; 64 else continue = "0"b; 65 66 unspec (gcos_ext_stat_$mc) = unspec (mc); 67 68 mme_number = even_instruction.MME_NO; 69 70 /* 71* Check to see if the MME number is within acceptable range. If not 72* abort the user. 73**/ 74 75 if mme_number < lbound (MME_NAME, 1) | mme_number > hbound (MME_NAME, 1) then 76 call gcos_mme_bort_$system ( 77 gcos_et_$bad_mme_addr 78 , "^i is not a valid MME number (^i to ^i)." 79 , mme_number 80 , lbound (MME_NAME, 1) 81 , hbound (MME_NAME, 1) 82 ); 83 84 /* 85* If we are within a courtesy call, verify that this MME is a valid 86* one for courtesy calls. If not, report the system detected error. 87**/ 88 89 if gcos_ext_stat_$save_data.cc then 90 if ^mme_table (mme_number) then 91 call gcos_mme_bort_$system ( 92 gcos_et_$bad_mme_in_cc 93 , "MME GE^a is not allowed within a courtesy call." 94 , MME_NAME (mme_number) 95 ); 96 97 /* 98* Now that we are fairly certain that this is a valid MME (in the 99* right range, anyway), we will initialize the increment and call the 100* MME processor routine. If the debug switch is on, tracing 101* information will be displayed. 102* 103* If this is not a supported MME, the entry gcos_mme_bort_$not_imp 104* will be called to report the error to the user. 105**/ 106 increment = 0; 107 if debugsw then call debug_1 (); 108 109 /* 110* Now call the appropriate MME processor via the transfer vector in 111* gcos_call_mme_processor_. 112**/ 113 goto mp (mme_number); 114 115 mp(11):; /** MME GEFILS 11 **/ 116 mp(16):; /** MME GESPEC 16 **/ 117 mp(25):; /** MME GEROLL 25 **/ 118 mp(29):; /** MME GEIDSE 29 **/ 119 mp(30):; /** MME .EMM 30 **/ 120 mp(35):; /** MME GENEWS 35 **/ 121 mp(36):; /** MME GESNUM 36 **/ 122 mp(38):; /** MME GESECR 38 **/ 123 mp(39):; /** MME GEXLIT 39 **/ 124 mp(40):; /** MME xxxxxx 40 **/ 125 mp(41):; /** MME xxxxxx 41 **/ 126 mp(42):; /** MME xxxxxx 42 **/ 127 mp(43):; /** MME GMODES 43 **/ 128 mp(44):; /** MME GMODER 44 **/ 129 call gcos_mme_bort_$not_imp (mcp, increment, mme_number); 130 goto return_from_mp; 131 132 mp( 1):; /** MME GEINOS 1 **/ 133 call gcos_mme_inos_$gcos_mme_inos_ (mcp, increment); 134 goto return_from_mp; 135 136 mp( 2):; /** MME GEROAD 2 **/ 137 goto return_from_mp; 138 139 mp( 3):; /** MME GEFADD 3 **/ 140 call gcos_mme_fadd_$gcos_mme_fadd_ (mcp, increment); 141 goto return_from_mp; 142 143 mp( 4):; /** MME GERELS 4 **/ 144 call gcos_mme_rels_$gcos_mme_rels_ (mcp, increment); 145 goto return_from_mp; 146 147 mp( 5):; /** MME GESNAP 5 **/ 148 call gcos_mme_snap_$gcos_mme_snap_ (mcp, increment); 149 goto return_from_mp; 150 151 mp( 6):; /** MME GELAPS 6 **/ 152 call gcos_mme_laps_$gcos_mme_laps_ (mcp, increment); 153 goto return_from_mp; 154 155 mp( 7):; /** MME GEFINI 7 **/ 156 call gcos_mme_fini_$gcos_mme_fini_ (mcp, increment); 157 goto return_from_mp; 158 159 mp( 8):; /** MME GEBORT 8 **/ 160 call gcos_mme_bort_$gcos_mme_bort_ (mcp, increment); 161 goto return_from_mp; 162 163 mp( 9):; /** MME GEMORE 9 **/ 164 call gcos_mme_more_$gcos_mme_more_ (mcp, increment); 165 goto return_from_mp; 166 167 mp(10):; /** MME GEFCON 10 **/ 168 call gcos_mme_fcon_$gcos_mme_fcon_ (mcp, increment); 169 goto return_from_mp; 170 171 mp(12):; /** MME GESETS 12 **/ 172 call gcos_mme_sets_$gcos_mme_sets_ (mcp, increment); 173 goto return_from_mp; 174 175 mp(13):; /** MME GERETS 13 **/ 176 call gcos_mme_rets_$gcos_mme_rets_ (mcp, increment); 177 goto return_from_mp; 178 179 mp(14):; /** MME GEENDC 14 **/ 180 call gcos_mme_inos_$mme_endc (mcp, increment); 181 goto return_from_mp; 182 183 mp(15):; /** MME GERELC 15 **/ 184 goto return_from_mp; 185 186 mp(17):; /** MME GETIME 17 **/ 187 call gcos_mme_time_$gcos_mme_time_ (mcp, increment); 188 goto return_from_mp; 189 190 mp(18):; /** MME GECALL 18 **/ 191 call gcos_mme_call_$gcos_mme_call_ (mcp, increment); 192 goto return_from_mp; 193 194 mp(19):; /** MME GESAVE 19 **/ 195 call gcos_mme_save_$gcos_mme_save_ (mcp, increment); 196 goto return_from_mp; 197 198 mp(20):; /** MME GERSTR 20 **/ 199 call gcos_mme_call_$mme_rstr (mcp, increment); 200 goto return_from_mp; 201 202 mp(21):; /** MME GEMREL 21 **/ 203 call gcos_mme_mrel_$gcos_mme_mrel_ (mcp, increment); 204 goto return_from_mp; 205 206 mp(22):; /** MME GESYOT 22 **/ 207 call gcos_mme_syot_$gcos_mme_syot_ (mcp, increment); 208 goto return_from_mp; 209 210 mp(23):; /** MME GECHEK 23 **/ 211 call gcos_mme_chek_$gcos_mme_chek_ (mcp, increment); 212 goto return_from_mp; 213 214 mp(24):; /** MME GEROUT 24 **/ 215 call gcos_mme_rout_$gcos_mme_rout_ (mcp, increment); 216 goto return_from_mp; 217 218 mp(26):; /** MME GEUSER 26 **/ 219 call gcos_mme_user_$gcos_mme_user_ (mcp, increment); 220 goto return_from_mp; 221 222 mp(27):; /** MME GELOOP 27 **/ 223 call gcos_mme_loop_$gcos_mme_loop_ (mcp, increment); 224 goto return_from_mp; 225 226 mp(28):; /** MME GEWAKE 28 **/ 227 call gcos_mme_wake_$gcos_mme_wake_ (mcp, increment); 228 goto return_from_mp; 229 230 mp(31):; /** MME GELBAR 31 **/ 231 call gcos_mme_lbar_$gcos_mme_lbar_ (mcp, increment); 232 goto return_from_mp; 233 234 mp(32):; /** MME GEFRCE 32 **/ 235 call gcos_mme_frce_$gcos_mme_frce_ (mcp, increment); 236 goto return_from_mp; 237 238 mp(33):; /** MME GEFSYE 33 **/ 239 call gcos_mme_fsye_$gcos_mme_fsye_ (mcp, increment); 240 goto return_from_mp; 241 242 mp(34):; /** MME GEPRIO 34 **/ 243 call gcos_mme_prio_$gcos_mme_prio_ (mcp, increment); 244 goto return_from_mp; 245 246 mp(37):; /** MME GEINFO 37 **/ 247 call gcos_mme_info_$gcos_mme_info_ (mcp, increment); 248 249 return_from_mp: ; 250 if debugsw then call debug_2 (); 251 252 /* 253* Now modify the machine conditions to skip the MME and any arguments 254* to it. This is accomplished by modifying the IC (scu.ilc) and 255* forcing the processor to refetch the instruction pair. 256**/ 257 instruction_counter = instruction_counter + increment +1; 258 scu.rfi = "1"b; /* Refetch faulted instruction. */ 259 scu.if = "1"b; /* Turn on indicator that instruction faulted. */ 260 261 return; 262 263 mme_trace: entry (arg_string); 264 265 /* Set MME trace list, and/or display it. */ 266 dcl arg_string char(*)parm; 267 mlp = addr (mme_trace_list); /* Select trace list as the MME list. */ 268 trace_or_stop = "1"b; /* Trace entry. */ 269 goto continue_db; 270 271 mme_stop: entry (arg_string); 272 273 /* Set MME stop list, and/or display it. */ 274 mlp = addr (mme_stop_list); /* Select stop list as the MME list. */ 275 trace_or_stop = "0"b; /* Stop entry. */ 276 277 continue_db: ; 278 279 on_or_off = "1"b; /* On by default. */ 280 do i = 1 by 1; 281 if next_arg (i, ap, al) then do; /* No more arg_string "arguments". */ 282 if i = 1 then /* There were no arguments => set all values on. */ 283 mme_list = "1"b; 284 dbs_trace_mme = (string (mme_trace_list) ^= "0"b); 285 dbs_stop_mme = (string (mme_stop_list) ^= "0"b); 286 return; 287 end; 288 289 /* Examine the next argument. */ 290 if arg = "-all" then do; /* Set the whole list to current on or off value. */ 291 mme_list = on_or_off; 292 goto get_arg; 293 end; 294 if arg = "-on" then do; /* Set on or off value to on. */ 295 on_or_off = "1"b; 296 goto get_arg; 297 end; 298 if arg = "-off" then do; /* Set on of off value to off. */ 299 on_or_off = "0"b; 300 goto get_arg; 301 end; 302 if (arg = "-pr") | (arg = "-print") then do; /* Display the list. */ 303 if string (mme_list) = "0"b then /* Whole list is off. */ 304 call ioa_ ("MME ^[trace^;stop^] is off for all MME's.", trace_or_stop); 305 else 306 if (^string (mme_list)) = "0"b then /* Whole list is on. */ 307 call ioa_ ("MME ^[trace^;stop^] is on for all MME's.", trace_or_stop); 308 else do; /* Display specific entries that are on. */ 309 call ioa_ ("MME ^[trace^;stop^] is on for:", trace_or_stop); 310 do j = 1 to hbound (mme_list, 1); 311 if mme_list (j) then 312 call ioa_ ("(^2i) ^a", j, MME_NAME (j)); 313 end; 314 end; 315 goto get_arg; 316 end; 317 if verify (arg, "0123456789") = 0 then do; /* => MME number. */ 318 j = fixed (arg, 17); /* Obtain MME number as binary. */ 319 if j < lbound (mme_list, 1) then do; 320 call com_err_ ( /* Debug trace MME number out of range. */ 321 0 322 , "gcos_process_mme_" 323 , "^/Arg ^i, ^i, MME number out of range ^i to ^i." 324 , i 325 , j 326 , lbound (mme_list, 1) 327 , hbound (mme_list, 1) 328 ); 329 goto get_arg; 330 end; 331 goto found_mme_name; 332 end; 333 334 /* => arg is a MME name (lookup in name table). */ 335 arg_uc = translate ( /* Convert lower to upper case. */ 336 arg 337 , "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 338 , "abcdefghijklmnopqrstuvwxyz" 339 ); 340 do j = lbound (MME_NAME, 1) to hbound (MME_NAME, 1); 341 if arg_uc = MME_NAME (j) then goto found_mme_name; 342 end; 343 call com_err_ ( /* Debug trace MME number out of range. */ 344 0 345 , "gcos_process_mme_" 346 , "^/Arg ^i, ""^a"", unknown MME name (^a^( ^a^))." 347 , i 348 , arg 349 , MME_NAME (*) 350 ); 351 goto get_arg; 352 353 found_mme_name: ; 354 mme_list (j) = on_or_off; 355 356 get_arg: ; 357 end; 358 359 watcher: entry (address); 360 361 dcl address char(*)parm; 362 363 if address = "" then do; 364 watchsw = "0"b; 365 call ioa_ ("watcher off"); 366 go to debug_return; 367 end; 368 369 watch_address = cv_oct_check_ (address, code); 370 if code ^= 0 then do; 371 call ioa_ ("bad address"); 372 go to debug_return; 373 end; 374 375 watchp = null (); 376 watchsw = "1"b; 377 watch_contents = 0; 378 379 call ioa_ ("watcher on"); 380 381 382 debug_return: 383 384 385 return; 386 1 1 /* BEGIN INCLUDE FILE gcos_next_arg.incl.pl1 (Wardd Multics) 06/09/81 2041.7 mst Tue */ 1 2 next_arg: proc (i, p, l)returns (bit (1)); 1 3 1 4 /* Set pointer "p" to the next argument in "arg_string" 1 5* and "l" to length of the argument, return "0"b. 1 6* Return "1"b if no more arguments. 1 7**/ 1 8 dcl i fixed bin(24)parm; 1 9 dcl l fixed bin(24)parm; 1 10 dcl p ptr parm; 1 11 if i = 1 then do; /* First argument. */ 1 12 rp = addr (arg_string); 1 13 rl = length (arg_string); 1 14 end; 1 15 if rl<1 then return ("1"b); /* No more arguments. */ 1 16 k = index (rs, ","); 1 17 p = rp; 1 18 if k = 0 then do; /* Final argument. */ 1 19 l = rl; 1 20 rl = 0; 1 21 rp = null (); 1 22 return ("0"b); 1 23 end; 1 24 1 25 /* More arguments remaining. */ 1 26 l = k-1; 1 27 rp = addr (rs2 (k+1)); 1 28 rl = rl - k; 1 29 return ("0"b); 1 30 1 31 dcl addr builtin; 1 32 dcl index builtin; 1 33 dcl k fixed bin(24); 1 34 dcl length builtin; 1 35 dcl rl fixed bin(24)static int; 1 36 dcl rp ptr static int; 1 37 dcl rs char(rl)unal based(rp); 1 38 dcl rs2 (k+1)char(1)unal based(rp); 1 39 end next_arg; 1 40 1 41 /* END INCLUDE FILE gcos_next_arg.incl.pl1 */ 387 388 389 debug_1: procedure (); 390 391 392 mme_statistics.count (mme_number) = mme_statistics.count (mme_number) + 1; /* bump usage count */ 393 394 if dbs_stop_mme then 395 if mme_stop_list (mme_number) then 396 goto print_mme; /* print its name and location, 397* whether or not trace is on for it */ 398 if dbs_trace_mme then 399 if mme_trace_list (mme_number) then 400 print_mme: call ioa_ ("MME ^2d GE^a at ^6o", mme_number, MME_NAME (mme_number), fixed (scu.ilc, 18)); 401 402 if watchsw then do; 403 if watchp = null then watchp = addrel (gcos_ext_stat_$gcos_slave_area_seg, watch_address); 404 if watchee ^= watch_contents then do; 405 406 watch_contents = watchee; 407 call ioa_ ("loc ^o changed to ^w before MME ^a. last MME was ^a", 408 watch_address, watch_contents, (mme_number), (gcos_ext_stat_$last_mme)); 409 end; 410 end; 411 412 stopped = "0"b; 413 if dbs_stop_mme then 414 if mme_stop_list (mme_number) then do; 415 call ioa_ ("CALLING DB"); 416 stopped = "1"b; 417 call db; 418 end; 419 420 initial_cpu_time = virtual_cpu_time_ (); 421 422 423 end debug_1; 424 425 debug_2: procedure (); 426 427 428 mme_statistics.total_time (mme_number) = mme_statistics.total_time (mme_number) + 429 virtual_cpu_time_ ()- initial_cpu_time; /* count total time used by a MME */ 430 431 if watchsw then 432 if watchee ^= watch_contents then do; 433 watch_contents = watchee; 434 call ioa_ ( 435 "loc ^6.3b changed to ^w after MME ^a" 436 , unspec (watch_address) 437 , watch_contents 438 , MME_NAME (mme_number) 439 ); 440 end; 441 442 if stopped then do; 443 call ioa_ ( 444 "returned from MME ^a processor. CALLING DB" 445 , MME_NAME (mme_number) 446 ); 447 call db; 448 end; 449 450 gcos_ext_stat_$last_mme = mme_number; 451 452 453 end debug_2; 454 455 /* Variables for gcos_process_mme_: */ 456 /* IDENTIFIER ATTRIBUTES */ 457 dcl addr builtin; 458 dcl addrel builtin; 459 dcl al fixed bin(24); 460 dcl ap ptr; 461 dcl arg char(al)unal based(ap); 462 dcl arg_uc char(100)var; 463 dcl baseno builtin; 464 dcl code fixed bin(35); 465 dcl com_err_ entry() options(variable); 466 dcl continue bit(1) aligned; 467 dcl cu_$ptr_call entry options (variable); 468 dcl cv_dec_check_ entry (char(*), fixed bin(35)) returns (fixed bin(35)); 469 dcl cv_oct_check_ entry (char(*), fixed bin(35)) returns (fixed bin(35)); 470 dcl db entry; 471 dcl debugsw bit(1); 472 dcl dummy1 ptr; 473 dcl dummy2 ptr; 474 dcl fault_name char(*); 475 dcl fixed builtin; 476 dcl gcos_et_$bad_mme_addr fixed bin(35) ext; 477 dcl gcos_et_$bad_mme_in_cc fixed bin(35) ext; 478 dcl gcos_mme_bort_$gcos_mme_bort_ entry (ptr, fixed bin(24)); 479 dcl gcos_mme_bort_$not_imp entry (ptr, fixed bin(24), fixed bin(17)); 480 dcl gcos_mme_bort_$system entry options (variable); 481 dcl gcos_mme_call_$gcos_mme_call_ entry (ptr, fixed bin(24)); 482 dcl gcos_mme_call_$mme_rstr entry (ptr, fixed bin(24)); 483 dcl gcos_mme_chek_$gcos_mme_chek_ entry (ptr, fixed bin(24)); 484 dcl gcos_mme_fadd_$gcos_mme_fadd_ entry (ptr, fixed bin(24)); 485 dcl gcos_mme_fcon_$gcos_mme_fcon_ entry (ptr, fixed bin(24)); 486 dcl gcos_mme_fini_$gcos_mme_fini_ entry (ptr, fixed bin(24)); 487 dcl gcos_mme_frce_$gcos_mme_frce_ entry (ptr, fixed bin(24)); 488 dcl gcos_mme_fsye_$gcos_mme_fsye_ entry (ptr, fixed bin(24)); 489 dcl gcos_mme_info_$gcos_mme_info_ entry (ptr, fixed bin(24)); 490 dcl gcos_mme_inos_$gcos_mme_inos_ entry (ptr, fixed bin(24)); 491 dcl gcos_mme_inos_$mme_endc entry (ptr, fixed bin(24)); 492 dcl gcos_mme_laps_$gcos_mme_laps_ entry (ptr, fixed bin(24)); 493 dcl gcos_mme_lbar_$gcos_mme_lbar_ entry (ptr, fixed bin(24)); 494 dcl gcos_mme_loop_$gcos_mme_loop_ entry (ptr, fixed bin(24)); 495 dcl gcos_mme_more_$gcos_mme_more_ entry (ptr, fixed bin(24)); 496 dcl gcos_mme_mrel_$gcos_mme_mrel_ entry (ptr, fixed bin(24)); 497 dcl gcos_mme_prio_$gcos_mme_prio_ entry (ptr, fixed bin(24)); 498 dcl gcos_mme_rels_$gcos_mme_rels_ entry (ptr, fixed bin(24)); 499 dcl gcos_mme_rets_$gcos_mme_rets_ entry (ptr, fixed bin(24)); 500 dcl gcos_mme_rout_$gcos_mme_rout_ entry (ptr, fixed bin(24)); 501 dcl gcos_mme_save_$gcos_mme_save_ entry (ptr, fixed bin(24)); 502 dcl gcos_mme_sets_$gcos_mme_sets_ entry (ptr, fixed bin(24)); 503 dcl gcos_mme_snap_$gcos_mme_snap_ entry (ptr, fixed bin(24)); 504 dcl gcos_mme_syot_$gcos_mme_syot_ entry (ptr, fixed bin(24)); 505 dcl gcos_mme_time_$gcos_mme_time_ entry (ptr, fixed bin(24)); 506 dcl gcos_mme_user_$gcos_mme_user_ entry (ptr, fixed bin(24)); 507 dcl gcos_mme_wake_$gcos_mme_wake_ entry (ptr, fixed bin(24)); 508 dcl hbound builtin; 509 dcl i fixed bin(24); 510 dcl ia fixed bin(24); 511 dcl increment fixed bin(24); 512 dcl initial_cpu_time fixed bin(71); 513 dcl instruction_counter fixed bin(18)unsigned unal based(addr(scu.ilc)); 514 dcl ioa_ entry options (variable); 515 dcl j fixed bin(24); 516 dcl lbound builtin; 517 dcl mlp ptr; 518 dcl mme_list (44)bit(1)unal based(mlp); 519 dcl mme_number fixed bin(17) /* holds mme type */; 520 dcl mme_stop_list (44) bit(1) unal int static init ((44) (1)"0"b); 521 dcl mme_trace_list (44) bit(1) unal int static init ((44) (1)"0"b); 522 dcl null builtin; 523 dcl on_or_off bit(1); 524 dcl on_sw bit(1) aligned static init ("0"b); 525 dcl previous_instr_ptr ptr; 526 dcl previous_opcode bit(9); 527 dcl state char(3); 528 dcl stopped bit(1) aligned; 529 dcl substr builtin; 530 dcl trace_or_stop bit(1); 531 dcl translate builtin; 532 dcl unspec builtin; 533 dcl verify builtin; 534 dcl virtual_cpu_time_ entry () returns (fixed bin(71)); 535 dcl watchee fixed bin(24)based (watchp); 536 dcl watchp ptr static; 537 dcl watchsw bit(1) static init ("0"b); 538 dcl watch_address fixed bin(24)static; 539 dcl watch_contents fixed bin(35) static; 540 dcl XED bit(9) internal static options (constant) 541 init ("111001111"b); 542 dcl 1 even_instruction aligned based(addr(scu.even_inst)) like machine_instruction; 543 dcl 1 odd_instruction aligned based(addr(scu.odd_inst)) like machine_instruction; 544 545 dcl 1 machine_instruction aligned based 546 ,2 MME_NO fixed bin(17)unal 547 ,2 OPCODE bit(10)unal 548 ,2 II bit(1)unal /* Interrupt inhibit. */ 549 ,2 A bit(1)unal /* Indirect via pointer register flag. */ 550 ,2 TAG bit(6) /* Instruction address modification. */ 551 ; 552 553 dcl 1 mme_statistics based (addr (gcos_ext_stat_$statistics)), /* overlay */ 554 2 total_time (44) fixed bin(71), 555 2 count (44) fixed bin(17); 556 2 1 /* BEGIN INCLUDE FILE gcos_mme_names.incl.pl1 */ 2 2 2 3 /* Author: MRJordan July 1977 2 4* Change: Dave Ward 06/17/81 mme_table (from gcos_process_mme_.pl1). 2 5* Change: Ron Barstad 83-08-03 Add MMEs 41-44 for 4js3 2 6**/ 2 7 2 8 dcl MME_NAME (44)char(4) aligned static options(constant) init( 2 9 "INOS" /* 1 */ 2 10 , "ROAD" /* 2 */ 2 11 , "FADD" /* 3 */ 2 12 , "RELS" /* 4 */ 2 13 , "SNAP" /* 5 */ 2 14 , "LAPS" /* 6 */ 2 15 , "FINI" /* 7 */ 2 16 , "BORT" /* 8 */ 2 17 , "MORE" /* 9 */ 2 18 , "FCON" /* 10 */ 2 19 , "FILS" /* 11 */ 2 20 , "SETS" /* 12 */ 2 21 , "RETS" /* 13 */ 2 22 , "ENDC" /* 14 */ 2 23 , "RELC" /* 15 */ 2 24 , "SPEC" /* 16 */ 2 25 , "TIME" /* 17 */ 2 26 , "CALL" /* 18 */ 2 27 , "SAVE" /* 19 */ 2 28 , "RSTR" /* 20 */ 2 29 , "MREL" /* 21 */ 2 30 , "SYOT" /* 22 */ 2 31 , "CHEK" /* 23 */ 2 32 , "ROUT" /* 24 */ 2 33 , "ROLL" /* 25 */ 2 34 , "USER" /* 26 */ 2 35 , "LOOP" /* 27 */ 2 36 , "WAKE" /* 28 */ 2 37 , "IDSE" /* 29 */ 2 38 , ".EMM" /* 30 */ 2 39 , "LBAR" /* 31 */ 2 40 , "FRCE" /* 32 */ 2 41 , "FSYE" /* 33 */ 2 42 , "PRIO" /* 34 */ 2 43 , "NEWS" /* 35 */ 2 44 , "SNUM" /* 36 */ 2 45 , "INFO" /* 37 */ 2 46 , "SECR" /* 38 */ 2 47 , "XLIT" /* 39 */ 2 48 , "XXXX" /* 40 */ 2 49 , "XXXX" /* 41 */ 2 50 , "XXXX" /* 42 */ 2 51 , "MODS" /* 43 */ 2 52 , "MODR" /* 44 */ 2 53 ); 2 54 2 55 /* 2 56* The following table contains a "1"b value for each MME that _i_s legal 2 57* during a courtesy call. The table is indexed by mme_number. 2 58**/ 2 59 2 60 2 61 dcl mme_table (44) bit(1) aligned internal static options (constant) initial ( 2 62 "1"b /* 1 GEINOS */ 2 63 , "0"b /* 2 GEROAD */ 2 64 , "0"b /* 3 GEFADD */ 2 65 , "0"b /* 4 GERELS */ 2 66 , "0"b /* 5 GESNAP */ 2 67 , "1"b /* 6 GELAPS */ 2 68 , "0"b /* 7 GEFINI */ 2 69 , "0"b /* 8 GEBORT */ 2 70 , "0"b /* 9 GEMORE */ 2 71 , "0"b /* 10 GEFCON */ 2 72 , "0"b /* 11 GEFILS */ 2 73 , "0"b /* 12 GESETS */ 2 74 , "0"b /* 13 GERETS */ 2 75 , "1"b /* 14 GEENDC */ 2 76 , "0"b /* 15 GERELC */ 2 77 , "1"b /* 16 GESPEC */ 2 78 , "1"b /* 17 GETIME */ 2 79 , "0"b /* 18 GECALL */ 2 80 , "0"b /* 19 GESAVE */ 2 81 , "0"b /* 20 GERSTR */ 2 82 , "0"b /* 21 GEMREL */ 2 83 , "1"b /* 22 GESYOT */ 2 84 , "0"b /* 23 GECHEK */ 2 85 , "1"b /* 24 GEROUT */ 2 86 , "0"b /* 25 GEROLL */ 2 87 , "0"b /* 26 GEUSER */ 2 88 , "1"b /* 27 GELOOP */ 2 89 , "0"b /* 28 GEWAKE */ 2 90 , "0"b /* 29 GEIDSE */ 2 91 , "0"b /* 30 GE.EMM */ 2 92 , "0"b /* 31 GELBAR */ 2 93 , "0"b /* 32 GEFRCE */ 2 94 , "0"b /* 33 GEFSYE */ 2 95 , "0"b /* 34 GEPRIO */ 2 96 , "0"b /* 35 GENEWS */ 2 97 , "1"b /* 36 GESNUM */ 2 98 , "1"b /* 37 GEINFO */ 2 99 , "0"b /* 38 GExxxx */ 2 100 , "0"b /* 39 GExxxx */ 2 101 , "0"b /* 40 GExxxx */ 2 102 , "0"b /* 41 GExxxx */ 2 103 , "0"b /* 42 GExxxx */ 2 104 , "0"b /* 43 GMODES */ 2 105 , "0"b /* 44 GMODER */ 2 106 ); 2 107 2 108 /* END INCLUDE FILE gcos_mme_names.incl.pl1 */ 557 558 559 3 1 /* BEGIN INCLUDE FILE gcos_dbs_names.incl.pl1 (Wardd Multics) 06/08/81 1626.9 mst Mon */ 3 2 3 3 dcl dbs_names (11)char(14)var static int options(constant)init( 3 4 /* 1 */ "attach_file" 3 5 , /* 2 */ "dollar" 3 6 , /* 3 */ "filecode" 3 7 , /* 4 */ "mme_call" 3 8 , /* 5 */ "mme_inos_trace" 3 9 , /* 6 */ "trace_mme" 3 10 , /* 7 */ "nondollar" 3 11 , /* 8 */ "open_file" 3 12 , /* 9 */ "msf_test" 3 13 , /* 10 */ "stop_mme" 3 14 , /* 11 */ "mme_inos_stop" 3 15 ); 3 16 3 17 dcl ( 3 18 dbs_attach_file defined(gcos_ext_stat_$dbs(1)) 3 19 ,dbs_dollar defined(gcos_ext_stat_$dbs(2)) 3 20 ,dbs_filecode defined(gcos_ext_stat_$dbs(3)) 3 21 ,dbs_mme_call defined(gcos_ext_stat_$dbs(4)) 3 22 ,dbs_mme_inos_trace defined(gcos_ext_stat_$dbs(5)) 3 23 ,dbs_trace_mme defined(gcos_ext_stat_$dbs(6)) 3 24 ,dbs_nondollar defined(gcos_ext_stat_$dbs(7)) 3 25 ,dbs_open_file defined(gcos_ext_stat_$dbs(8)) 3 26 ,dbs_msf_test defined(gcos_ext_stat_$dbs(9)) 3 27 ,dbs_stop_mme defined(gcos_ext_stat_$dbs(10)) 3 28 ,dbs_mme_inos_stop defined(gcos_ext_stat_$dbs(11)) 3 29 ) bit(1); 3 30 3 31 /* END INCLUDE FILE gcos_dbs_names.incl.pl1 */ 560 4 1 /* BEGIN INCLUDE FILE gcos_ext_stat_.incl.pl1 */ 4 2 /* 4 3* Changes to gcos_ext_stat_ must be made here AND gcos_ext_stat_.cds 4 4**/ 4 5 /* July 77 (MRJ) Mike Jordan. */ 4 6 /* Change: Mel Wilson Oct 1979 for gtss compatibility (Bell Canada). */ 4 7 /* Change: A. N. Kepner, March, 1978 to allow courtesy call i/o within cc routines. */ 4 8 /* Change: Dave Ward 06/01/81 Reorganized to eliminate alm object (using cds). Use of like structures. */ 4 9 /* Change: Scott C. Akers 01/26/82 Add tape_buffer_size for GEINOS processing. */ 4 10 /* Change: Ron Barstad 83-08-02 Added activity_card_num for execution report */ 4 11 /* Increased size of statistics for 4js3 MMEs */ 4 12 4 13 dcl gcos_ext_stat_$abort_reason char(128) varying /* abort reason from gcos pgm */ ext; 4 14 dcl gcos_ext_stat_$abort_return label /* abort return point */ ext; 4 15 dcl gcos_ext_stat_$activity_card_num pic "9999" ext; /* card number defining current activity */ 4 16 dcl gcos_ext_stat_$activity_name char(8) /* name of activity to be run */ ext; 4 17 dcl gcos_ext_stat_$activity_start_time fixed bin(71) /* TOD start of activity */ ext; 4 18 dcl gcos_ext_stat_$card_num pic "9999" /* ordinal number of card in input stream */ ext; 4 19 dcl gcos_ext_stat_$dbs (36)bit(1) /* Debugging switch. */ ext; 4 20 dcl gcos_ext_stat_$default_nondollar char(2) /* filecode where nondollar cards go by default */ ext; 4 21 dcl gcos_ext_stat_$dir_rings (3) fixed bin(3) /* ring brackets for created catalogs */ ext; 4 22 dcl gcos_ext_stat_$dpno char(100) varying /* arguments for call to dpunch */ ext; 4 23 dcl gcos_ext_stat_$dpo char(100) varying /* arguments for call to dprint */ ext; 4 24 dcl gcos_ext_stat_$endfc char(2) /* endfc value for endcopy processing */ ext; 4 25 dcl gcos_ext_stat_$er ptr /* fib pointer for *er */ ext; 4 26 dcl gcos_ext_stat_$etc_filecode char(2) /* filecode where $ ETC cards should be written */ ext; 4 27 dcl gcos_ext_stat_$gcos_slave_area_seg ptr /* pointer to gcos slave area segment */ ext; 4 28 dcl gcos_ext_stat_$gf fixed bin(24)/* sw used by getfield rtn */ ext; 4 29 dcl gcos_ext_stat_$incode fixed bin(24) /* switches to control incode processing */ ext; 4 30 dcl gcos_ext_stat_$increment_hold fixed bin(24) /* Holds increment for courtesy call returns. */ ext; 4 31 dcl gcos_ext_stat_$initial_cpu_time fixed bin(71) /* vcu time at activity start */ ext; 4 32 dcl gcos_ext_stat_$input_segment_path char(168) varying /* pathname of input segment */ ext; 4 33 dcl gcos_ext_stat_$jcl_warnings fixed bin(24) /* number warnings issued processing control cards */ ext; 4 34 dcl gcos_ext_stat_$job_cpu_time fixed bin(71) /* cpu usage at job start */ ext; 4 35 dcl gcos_ext_stat_$job_id char(18) varying /* unique job id for file naming */ ext; 4 36 dcl gcos_ext_stat_$job_real_time fixed bin(71) /* job start time in microseconds */ ext; 4 37 dcl gcos_ext_stat_$last_mme fixed bin(24)/* number of last mme executed */ ext; 4 38 dcl gcos_ext_stat_$ldrss fixed bin(24) /* loader shared stg. */ ext; 4 39 dcl gcos_ext_stat_$max_activities fixed bin(24)/* max activities in a job */ ext; 4 40 dcl gcos_ext_stat_$max_mem fixed bin(19) /* maximum memory available to an activity */ ext; 4 41 dcl gcos_ext_stat_$mme_rtrn label /* where to return at activity end */ ext; 4 42 dcl gcos_ext_stat_$nondollar char(2) /* non-dollar card file code */ ext; 4 43 dcl gcos_ext_stat_$nongcos char(2) /* filecode where nongcos dollar cards go */ ext; 4 44 dcl gcos_ext_stat_$normal_return label /* nonlocal goto for normal termination */ ext; 4 45 dcl gcos_ext_stat_$patchfile_ptr ptr /* pointer to patchfile */ ext; 4 46 dcl gcos_ext_stat_$pathname_prefix char(168)var ext; 4 47 dcl gcos_ext_stat_$pch ptr /* pointer to fib for syspunch collector file */ ext; 4 48 dcl gcos_ext_stat_$pdir char(168) varying /* pathname of process directory */ ext; 4 49 dcl gcos_ext_stat_$prt ptr /* pointer to fib for sysprint collector file */ ext; 4 50 dcl gcos_ext_stat_$rs ptr /* pointer to fib for geload r* collector file */ ext; 4 51 dcl gcos_ext_stat_$saveseg_ptr ptr /* pointer to save segment used by save/restart */ ext; 4 52 dcl gcos_ext_stat_$save_dir char(168) varying /* pathname of temp save directory */ ext; 4 53 dcl gcos_ext_stat_$seg_rings (3) fixed bin(3) /* ring brackets for created files */ ext; 4 54 dcl gcos_ext_stat_$sig_ptr ptr /* saved pointer to signal_ */ ext; 4 55 dcl gcos_ext_stat_$skip_umc bit(1) ext; 4 56 dcl gcos_ext_stat_$snumb bit (30) aligned /* snumb of the current job */ ext; 4 57 dcl gcos_ext_stat_$sought_label char(8) /* Label from GOTO, IF, or WHEN card */ ext; 4 58 dcl gcos_ext_stat_$statistics (3*44) fixed bin(24) /* mme usage statistics- 3 per mme */ ext; 4 59 dcl gcos_ext_stat_$stop_code fixed bin(24) /* debugging, print results and stop. */ ext; 4 60 dcl gcos_ext_stat_$storage_limit fixed bin(19) /* activity storage limit */ ext; 4 61 dcl gcos_ext_stat_$sysout_limit fixed bin(35) /* sysout line limit */ ext; 4 62 dcl gcos_ext_stat_$sysout_lines fixed bin(35) /* sysout lines used */ ext; 4 63 dcl gcos_ext_stat_$system_free_pointer ptr /* pointer to area for allocating in ext; set by gcos */ ext; 4 64 dcl gcos_ext_stat_$tape_buffer_size fixed bin(35) external static; /* tape buffer size for GEINOS. */ 4 65 dcl gcos_ext_stat_$temp_dir char(168) varying /* pathname of directory to hold temp files */ ext; 4 66 dcl gcos_ext_stat_$temp_seg_ptr ptr ext; 4 67 dcl gcos_ext_stat_$termination_code bit (18) /* termination code from gcos_mme_bort_ */ ext; 4 68 dcl gcos_ext_stat_$time_limit fixed bin(71) /* activity time limit */ ext; 4 69 dcl gcos_ext_stat_$userid char(12) /* the USERID */ ext; 4 70 dcl gcos_ext_stat_$validation_level fixed bin(3) /* current ring of execution */ ext; 4 71 4 72 /* Courtesy Call Queue 4 73* A queue for courtesy call addresses which must be saved during 4 74* execution of courtesy call routines. A courtesy call address is 4 75* saved each time a MME GEROUT or MME GEINOS, which specifies a 4 76* courtesy call, is executed within a courtesy call routine. Each 4 77* time a MME GEENDC is executed a courtesy call address will be 4 78* removed from this FIFO queue and the corresponding courtesy call 4 79* routine executed until the queue is empty. The FIFO "queue" is 4 80* implemented in a circular fashion. "next_avail" points to the 4 81* next empty location in the queue. "next_out" points to the 4 82* entry in the queue which has been in the queue longest. When 4 83* entering or removing entries from the queue the appropriate index 4 84* is incremented modulo the length of the queue. By convention the 4 85* queue is empty when "next_avail" equals "next_out". A 4 86* second convention is that the queue is considered to overflow 4 87* during an attempt to add an entry to the queue which would force 4 88* "next_avail" to "catch up" with "next_out". This means that 4 89* the last empty position in the queue will never be used. 4 90**/ 4 91 4 92 dcl 1 gcos_ext_stat_$courtesy_call_control aligned ext 4 93 , 3 courtesy_call 4 94 , 4 hold like save_machine_conditions /* Mach. conds. restored on courtesy call returns. */ 4 95 , 4 next_avail fixed bin(24) /* next available empty location in cc_queue. */ 4 96 , 4 next_out fixed bin(24) /* next entry to remove from cc_queue. */ 4 97 , 4 queue (6) fixed bin(24) 4 98 ; 4 99 5 1 /* BEGIN INCLUDE FILE gcos_save_mc.incl.pl1 (Wardd Multics) 09/12/81 0905.9 mst Sat */ 5 2 5 3 /* Structure to isolate the definition of the size of the 5 4*space needed to store he machine conditions structure (mc). 5 5**/ 5 6 dcl 1 save_machine_conditions based 5 7 , 3 save_space bit(1728) 5 8 ; 5 9 5 10 /* END INCLUDE FILE gcos_save_mc.incl.pl1 */ 4 100 4 101 4 102 dcl 1 gcos_ext_stat_$fct aligned ext, 4 103 3 fct (40) like fct_entry; 6 1 /* BEGIN INCLUDE FILE gcos_fct_entry.incl.pl1 (Wardd Multics) 05/30/81 1758.6 mst Sat */ 6 2 6 3 dcl 1 fct_entry aligned based, 6 4 2 filecode char(2) aligned, /* file code (or blank) */ 6 5 /* flags */ 6 6 2 sysout bit(1) unaligned, /* 1=file is sysout or dac */ 6 7 2 dac bit(1) unaligned, /* 1=file is dac,0=file is sysout */ 6 8 2 pad bit(34) unaligned, /* unused */ 6 9 2 fibptr ptr aligned /* ptr to fib for this file */ 6 10 ; 6 11 6 12 /* END INCLUDE FILE gcos_fct_entry.incl.pl1 */ 4 104 4 105 4 106 dcl 1 gcos_ext_stat_$save_data aligned ext, 4 107 3 save_data like save_data_entry; 7 1 /* BEGIN INCLUDE FILE gcos_save_data_entry.incl.pl1 (Wardd Multics) 07/01/81 1339.9 mst Wed */ 7 2 /* Change: Dave Ward 07/01/81 include gcos_flags_. */ 7 3 /* Change: Dave Ward 09/10/81 fib changed to fibs & likened to fib. */ 7 4 7 5 dcl 1 save_data_entry aligned based 7 6 ,3 flgs like flags /* system wide flgs */ 7 7 ,3 actid char(8) /* activity no. and accnt i.d. */ 7 8 ,3 short_actid bit(36) aligned /* short form of activity id */ 7 9 ,3 ident char(60) /* holds ident info from snumb card */ 7 10 ,3 psw bit(36) aligned /* program switch word */ 7 11 ,3 last_execute_act_no fixed bin(24)/* activity number of last $ EXECUTE card in job */ 7 12 ,3 activity_no fixed bin(24)/* activity number */ 7 13 ,3 job_time_limit fixed bin(71) /* job time limit */ 7 14 ,3 job_sysout_limit fixed bin(24)/* job sysout line limit */ 7 15 ,3 sysout_queue (10) char(32) /* sysout queue */ 7 16 ,3 sysout_queue_media (10) fixed bin(24)/* medium (print,punch) of each file on queue */ 7 17 ,3 sqindex fixed bin(24)/* curr offset in sysout queue */ 7 18 ,3 pathname_prefix char(168)varying /* prefix for gcos cfdescs */ 7 19 ,3 skip_umc aligned bit(1) /* flag to tell if we should skip umc names */ 7 20 ,3 job_deck pointer /* pointer to seg holding canonicalized job deck */ 7 21 ,3 jd_size fixed bin(24)/* size in words of job deck */ 7 22 ,3 jd_position fixed bin(24) /* position of current block of job deck */ 7 23 ,3 jd_rem_block_len fixed bin(24)/* words remaining in current block of job deck */ 7 24 ,3 syot_dir char(168)varying /* pathname of directory to hold sysout files */ 7 25 ,3 fibs (40) like fib 7 26 ,3 param (32) char(57)varying /* parameters */ 7 27 ; 7 28 8 1 /* BEGIN INCLUDE FILE gcos_flags.incl.pl1 (Wardd Multics) 07/01/81 1344.7 mst Wed */ 8 2 /* Change: Mel Wilson 03/01/79 to add gtssflag & identflag */ 8 3 /* Change: Dave Ward 07/01/81 revised, mad apart of gcos_ext_stat_. */ 8 4 8 5 8 6 /* Declaration of Simulator Wide Flags */ 8 7 8 8 dcl 1 flags aligned based, 8 9 2 ( 8 10 pad1, /* no longer used */ 8 11 copy, /* 1=copy option on|0=off */ 8 12 snumb, /* 1=snumb card read|0=not */ 8 13 ident, /* 1=ident card read|0=not */ 8 14 activ, /* 1=activity being defined|0=not */ 8 15 cc, /* 1=courtesy call active|0=not */ 8 16 pad2, /* no longer used */ 8 17 cksum, /* 1=don't check checksums|0=do */ 8 18 pad3, /* no longer used */ 8 19 wrapup, /* 1=processing wrapup after abort */ 8 20 8 21 /* FOLLOWING ADDED AFTER MARCH 73 */ 8 22 8 23 nosave, /* 1=disable save/restart function,0=not */ 8 24 pad4, /* no longer used */ 8 25 gcos, /* 1=job deck segment in gcos file format */ 8 26 raw, /* 1=sysout punch files to be converted to raw bit strings */ 8 27 list, /* 1=sysout print files to be converted to ascii */ 8 28 brief, /* 1=print nothing but fatal error messages on terminal */ 8 29 debug, /* 1=give option to call debug before aborting */ 8 30 no_canonicalize, /* 1=do NOT canonicalize job deck */ 8 31 8 32 /* 18 bits into first word */ 8 33 8 34 pad5, /* no longer used */ 8 35 dpunch, /* 1=dpunch sysout punch files;0=don't */ 8 36 dprint, /* 1=dprint sysout print files,0=don't */ 8 37 userid, /* 1=userid card read,0=not */ 8 38 userlib, /* 1= -userlib ctl arg given, see gcos_gein_ */ 8 39 dstar, /* 1=current activity card written on d* */ 8 40 write_etc, /* 1 tells get_cc_field to write $ ETC cards on etc_filecode */ 8 41 prev_act_abort, /* turned on by abort and off by $ BREAK */ 8 42 this_act_abort, /* turned on by abort to select abort disp codes */ 8 43 abort_subact, /* 1=processing abort subactivity */ 8 44 dump, /* 1=dump option given on activity card */ 8 45 nondollar, /* 1=reading nondollar card deck in gein */ 8 46 endjob, /* 1=cc_endjob already called once in this job */ 8 47 abort_card, /* 1=the terminator for this activity was a $ ABORT card */ 8 48 truncate, /* 1=truncate option given:truncate long ascii input lines */ 8 49 continue, /* 1=continue option given:continue after nonfatal errors */ 8 50 rout, /* 1=gcos_mme_rout_ was called in this activity */ 8 51 seeking, /* 1=gein is looking for a label and/or terminator */ 8 52 8 53 /* end of first word */ 8 54 8 55 seeking_terminator, /* 1=gein is looking for a terminator */ 8 56 lower_case, /* 1=lower case print conversion wanted */ 8 57 no_bar, /* 1=do not run slave program in BAR mode */ 8 58 long, /* 1=print some lines from execution reort on terminal */ 8 59 endfc, /* 1=process endfc option on endcopy card */ 8 60 gtssflag, /* 1=update gtss_user_state_ during execution */ 8 61 identflag, /* 1= use $ident banner info for print & punch */ 8 62 spawnflag, /* 1= entry due to tss spawn */ 8 63 taskflag /* 1= entry due to tss drl task */ 8 64 ) bit(1) unal, 8 65 2 pad6 bit(27)unal 8 66 ; 8 67 8 68 /* END INCLUDE FILE gcos_flags.incl.pl1 */ 7 29 7 30 7 31 /* END INCLUDE FILE gcos_save_data_entry.incl.pl1 */ 4 108 4 109 9 1 /* BEGIN INCLUDE FILE gcos_file_info_block_.incl.pl1 DAK - APRIL 74 */ 9 2 9 3 /* Declaration of File Information Block (fib) 9 4* 9 5* Change: Mel Wilson 11/01/79 for gtss compatibility 9 6* Change: Dave Ward 05/20/81 *_file constants. 9 7* Change: Dave Ward 05/29/81 separated fct structures. 9 8* Change: Dave Ward 09/02/81 provision for tape density 6250, dens_hist 2 bits (not 3). 9 9**/ 9 10 dcl 1 fib aligned based (fibptr) /* fib structure */ 9 11 9 12 , 2 buffer ptr aligned /* pointer to current buffer (gcos_write_) */ 9 13 , 2 buffer_indx fixed bin /* Index to buffer in use. */ 9 14 , 2 stream char(8)unal /* stream name for attaching this file */ 9 15 , 2 pathnm char(168)unal /* pathname (for disk, print or punch files) */ 9 16 , 2 unique_file_id bit(36) /* multics unique segment id for file */ 9 17 , 2 indicators /* five words of flags */ 9 18 9 19 , 3 indicators_word_1 9 20 , 4 used bit(1) unal /* 1=fib used, 0=fib used */ 9 21 , 4 attached bit(1) unal /* 1=stream is attached */ 9 22 , 4 type bit(1) unal /* 1=random, 0=linked */ 9 23 , 4 perm bit(1) unal /* 1=permanent file, 0=not */ 9 24 , 4 print bit(1) unal /* 1=file type is printer */ 9 25 , 4 punch bit(1) unal /* 1=file type is punch */ 9 26 , 4 reader bit(1) unal /* 1=file type is card reader */ 9 27 , 4 tape bit(1) unal /* 1=file type is tape */ 9 28 , 4 console bit(1) unal /* 1=file type is console typewriter */ 9 29 , 4 read bit(1) unal /* 1=read access permitted */ 9 30 , 4 write bit(1) unal /* 1=write access permitted */ 9 31 , 4 null bit(1) unal /* 1=file is null */ 9 32 , 4 purge bit(1) unal /* 1=purge file at time on release */ 9 33 , 4 gein bit(1) unal /* 1 = this file contains data cards from the job deck */ 9 34 , 4 disp bit(2) unal /* disposition code: 9 35* 00 = dismount 9 36* 01 = release 9 37* 10 = save 9 38* 11 = continue */ 9 39 , 4 adisp bit(2) unal /* abort disp - same codes as disp */ 9 40 , 4 order bit(1) unal /* 1 = write, 0 = read or other */ 9 41 , 4 mode bit(2) unal /* tape i/o mode 9 42* 00 = binary 9 43* 01 = decimal 9 44* 10 = nine */ 9 45 , 4 tracks bit(2) unal /* tape request code: 9 46* 00 = installation default 9 47* 01 = 7 track 9 48* 10 = 9 track */ 9 49 , 4 density bit(4) unal /* tape density from $ TAPE card 9 50* 0000 = site standard high 9 51* 0001 = 200 bpi 9 52* 0010 = 556 bpi 9 53* 0100 = 800 bpi 9 54* 1001 = 1600 bpi 9 55* 1100 = 6250 bpi 9 56* 1111 = handler capable of any appropriate denisty */ 9 57 , 4 dens_hist bit(2) unal /* density history for MME GEFADD */ 9 58 , 4 forced_acl_flag bit(1) unal /* 1 => acl forced for gtss file (2.4) */ 9 59 , 4 fill bit(6) unal /* reserved for future use */ 9 60 , 3 indicators_word_2 9 61 , 4 plud bit(18) unal /* primary log unit designator */ 9 62 /* bcd channel and channel number */ 9 63 9 64 , 4 slud bit(18) unal /* secondary log. unit designator */ 9 65 /* bcd channel and channel number */ 9 66 , 3 indicators_word_3 9 67 , 4 serial_no bit(30) unal /* tape serial number */ 9 68 , 4 pad bit( 6) unal /* unused */ 9 69 , 3 indicators_word_4 9 70 , 4 tape_name bit(72) unal /* tape name */ 9 71 9 72 , 2 current fixed bin(21) /* current file position */ 9 73 , 2 last fixed bin(21) /* eof for sequential disk files */ 9 74 , 2 size fixed bin(24) /* offset of end of file in words */ 9 75 , 2 init_size fixed bin(24) /* file size at start of activity */ 9 76 , 2 init_posit fixed bin(24) /* file position at start of activity */ 9 77 , 2 iocount fixed bin(35) /* total no. of i/o operations */ 9 78 , 2 rec_len fixed bin(24) /* length of current record (gcos_write_) */ 9 79 , 2 command_count fixed bin(17) unal /* size of command table for device (gcos_mme_inos_) */ 9 80 , 2 command_index fixed bin(17) unal /* pointer to command table entry (gcos_mme_inos_) */ 9 81 , 2 error_retry fixed bin(17) unal /* error retry counter */ 9 82 , 2 seq_no fixed bin(17) unal /* tape reel sequence no */ 9 83 ; 9 84 dcl fibptr ptr /* pointer to current fib in gcos_ext_stat_ */; 9 85 9 86 /* File usage classification constants: */ 9 87 dcl linked_file bit(1)static int options(constant)init("0"b); 9 88 dcl random_file bit(1)static int options(constant)init("1"b); 9 89 dcl read_file bit(1)static int options(constant)init("0"b); 9 90 dcl write_file bit(1)static int options(constant)init("1"b); 9 91 9 92 /* END INCLUDE FILE gcos_file_info_block_.incl.pl1 */ 4 110 4 111 4 112 dcl 1 gcos_ext_stat_$mc like mc /* machine condition from abort or fault */ ext; 10 1 /* */ 10 2 /* BEGIN INCLUDE FILE mc.incl.pl1 Created Dec 72 for 6180 - WSS. */ 10 3 /* Modified 06/07/76 by Greenberg for mc.resignal */ 10 4 /* Modified 07/07/76 by Morris for fault register data */ 10 5 /* Modified 08/28/80 by J. A. Bush for the DPS8/70M CVPU */ 10 6 /* Modified '82 to make values constant */ 10 7 10 8 /* words 0-15 pointer registers */ 10 9 10 10 dcl mcp ptr; 10 11 10 12 dcl 1 mc based (mcp) aligned, 10 13 2 prs (0:7) ptr, /* POINTER REGISTERS */ 10 14 (2 regs, /* registers */ 10 15 3 x (0:7) bit (18), /* index registers */ 10 16 3 a bit (36), /* accumulator */ 10 17 3 q bit (36), /* q-register */ 10 18 3 e bit (8), /* exponent */ 10 19 3 pad1 bit (28), 10 20 3 t bit (27), /* timer register */ 10 21 3 pad2 bit (6), 10 22 3 ralr bit (3), /* ring alarm register */ 10 23 10 24 2 scu (0:7) bit (36), 10 25 10 26 2 mask bit (72), /* mem controller mask at time of fault */ 10 27 2 ips_temp bit (36), /* Temporary storage for IPS info */ 10 28 2 errcode fixed bin (35), /* fault handler's error code */ 10 29 2 fim_temp, 10 30 3 unique_index bit (18) unal, /* unique index for restarting faults */ 10 31 3 resignal bit (1) unal, /* recompute signal name with fcode below */ 10 32 3 fcode bit (17) unal, /* fault code used as index to FIM table and SCT */ 10 33 2 fault_reg bit (36), /* fault register */ 10 34 2 pad2 bit (1), 10 35 2 cpu_type fixed bin (2) unsigned, /* L68 = 0, DPS8/70M = 1 */ 10 36 2 ext_fault_reg bit (15), /* extended fault reg for DPS8/70M CPU */ 10 37 2 fault_time bit (54), /* time of fault */ 10 38 10 39 2 eis_info (0:7) bit (36)) unaligned; 10 40 10 41 10 42 dcl (apx fixed bin init (0), 10 43 abx fixed bin init (1), 10 44 bpx fixed bin init (2), 10 45 bbx fixed bin init (3), 10 46 lpx fixed bin init (4), 10 47 lbx fixed bin init (5), 10 48 spx fixed bin init (6), 10 49 sbx fixed bin init (7)) internal static options (constant); 10 50 10 51 10 52 10 53 10 54 dcl scup ptr; 10 55 10 56 dcl 1 scu based (scup) aligned, /* SCU DATA */ 10 57 10 58 10 59 /* WORD (0) */ 10 60 10 61 (2 ppr, /* PROCEDURE POINTER REGISTER */ 10 62 3 prr bit (3), /* procedure ring register */ 10 63 3 psr bit (15), /* procedure segment register */ 10 64 3 p bit (1), /* procedure privileged bit */ 10 65 10 66 2 apu, /* APPENDING UNIT STATUS */ 10 67 3 xsf bit (1), /* ext seg flag - IT modification */ 10 68 3 sdwm bit (1), /* match in SDW Ass. Mem. */ 10 69 3 sd_on bit (1), /* SDW Ass. Mem. ON */ 10 70 3 ptwm bit (1), /* match in PTW Ass. Mem. */ 10 71 3 pt_on bit (1), /* PTW Ass. Mem. ON */ 10 72 3 pi_ap bit (1), /* Instr Fetch or Append cycle */ 10 73 3 dsptw bit (1), /* Fetch of DSPTW */ 10 74 3 sdwnp bit (1), /* Fetch of SDW non paged */ 10 75 3 sdwp bit (1), /* Fetch of SDW paged */ 10 76 3 ptw bit (1), /* Fetch of PTW */ 10 77 3 ptw2 bit (1), /* Fetch of pre-paged PTW */ 10 78 3 fap bit (1), /* Fetch of final address paged */ 10 79 3 fanp bit (1), /* Fetch of final address non-paged */ 10 80 3 fabs bit (1), /* Fetch of final address absolute */ 10 81 10 82 2 fault_cntr bit (3), /* number of retrys of EIS instructions */ 10 83 10 84 10 85 /* WORD (1) */ 10 86 10 87 2 fd, /* FAULT DATA */ 10 88 3 iro bit (1), /* illegal ring order */ 10 89 3 oeb bit (1), /* out of execute bracket */ 10 90 3 e_off bit (1), /* no execute */ 10 91 3 orb bit (1), /* out of read bracket */ 10 92 3 r_off bit (1), /* no read */ 10 93 3 owb bit (1), /* out of write bracket */ 10 94 3 w_off bit (1), /* no write */ 10 95 3 no_ga bit (1), /* not a gate */ 10 96 3 ocb bit (1), /* out of call bracket */ 10 97 3 ocall bit (1), /* outward call */ 10 98 3 boc bit (1), /* bad outward call */ 10 99 3 inret bit (1), /* inward return */ 10 100 3 crt bit (1), /* cross ring transfer */ 10 101 3 ralr bit (1), /* ring alarm register */ 10 102 3 am_er bit (1), /* associative memory fault */ 10 103 3 oosb bit (1), /* out of segment bounds */ 10 104 3 paru bit (1), /* processor parity upper */ 10 105 3 parl bit (1), /* processor parity lower */ 10 106 3 onc_1 bit (1), /* op not complete type 1 */ 10 107 3 onc_2 bit (1), /* op not complete type 2 */ 10 108 10 109 2 port_stat, /* PORT STATUS */ 10 110 3 ial bit (4), /* illegal action lines */ 10 111 3 iac bit (3), /* illegal action channel */ 10 112 3 con_chan bit (3), /* connect channel */ 10 113 10 114 2 fi_num bit (5), /* (fault/interrupt) number */ 10 115 2 fi_flag bit (1), /* 1 => fault, 0 => interrupt */ 10 116 10 117 10 118 /* WORD (2) */ 10 119 10 120 2 tpr, /* TEMPORARY POINTER REGISTER */ 10 121 3 trr bit (3), /* temporary ring register */ 10 122 3 tsr bit (15), /* temporary segment register */ 10 123 10 124 2 pad2 bit (9), 10 125 10 126 2 cpu_no bit (3), /* CPU number */ 10 127 10 128 2 delta bit (6), /* tally modification DELTA */ 10 129 10 130 10 131 /* WORD (3) */ 10 132 10 133 2 word3 bit (18), 10 134 10 135 2 tsr_stat, /* TSR STATUS for 1,2,&3 word instructions */ 10 136 3 tsna, /* Word 1 status */ 10 137 4 prn bit (3), /* Word 1 PR number */ 10 138 4 prv bit (1), /* Word 1 PR valid bit */ 10 139 3 tsnb, /* Word 2 status */ 10 140 4 prn bit (3), /* Word 2 PR number */ 10 141 4 prv bit (1), /* Word 2 PR valid bit */ 10 142 3 tsnc, /* Word 3 status */ 10 143 4 prn bit (3), /* Word 3 PR number */ 10 144 4 prv bit (1), /* Word 3 PR valid bit */ 10 145 10 146 2 tpr_tbr bit (6), /* TPR.TBR field */ 10 147 10 148 10 149 /* WORD (4) */ 10 150 10 151 2 ilc bit (18), /* INSTRUCTION COUNTER */ 10 152 10 153 2 ir, /* INDICATOR REGISTERS */ 10 154 3 zero bit (1), /* zero indicator */ 10 155 3 neg bit (1), /* negative indicator */ 10 156 3 carry bit (1), /* carryry indicator */ 10 157 3 ovfl bit (1), /* overflow indicator */ 10 158 3 eovf bit (1), /* eponent overflow */ 10 159 3 eufl bit (1), /* exponent underflow */ 10 160 3 oflm bit (1), /* overflow mask */ 10 161 3 tro bit (1), /* tally runout */ 10 162 3 par bit (1), /* parity error */ 10 163 3 parm bit (1), /* parity mask */ 10 164 3 bm bit (1), /* ^bar mode */ 10 165 3 tru bit (1), /* truncation mode */ 10 166 3 mif bit (1), /* multi-word instruction mode */ 10 167 3 abs bit (1), /* absolute mode */ 10 168 3 pad bit (4), 10 169 10 170 10 171 /* WORD (5) */ 10 172 10 173 2 ca bit (18), /* COMPUTED ADDRESS */ 10 174 10 175 2 cu, /* CONTROL UNIT STATUS */ 10 176 3 rf bit (1), /* on first cycle of repeat instr */ 10 177 3 rpt bit (1), /* repeat instruction */ 10 178 3 rd bit (1), /* repeat double instruction */ 10 179 3 rl bit (1), /* repeat link instruciton */ 10 180 3 pot bit (1), /* IT modification */ 10 181 3 pon bit (1), /* return type instruction */ 10 182 3 xde bit (1), /* XDE from Even location */ 10 183 3 xdo bit (1), /* XDE from Odd location */ 10 184 3 poa bit (1), /* operation preparation */ 10 185 3 rfi bit (1), /* tells CPU to refetch instruction */ 10 186 3 its bit (1), /* ITS modification */ 10 187 3 if bit (1), /* fault occured during instruction fetch */ 10 188 10 189 2 cpu_tag bit (6)) unaligned, /* computed tag field */ 10 190 10 191 10 192 /* WORDS (6,7) */ 10 193 10 194 2 even_inst bit (36), /* even instruction of faulting pair */ 10 195 10 196 2 odd_inst bit (36); /* odd instruction of faulting pair */ 10 197 10 198 10 199 10 200 10 201 10 202 10 203 /* ALTERNATE SCU DECLARATION */ 10 204 10 205 10 206 dcl 1 scux based (scup) aligned, 10 207 10 208 (2 pad0 bit (36), 10 209 10 210 2 fd, /* GROUP II FAULT DATA */ 10 211 3 isn bit (1), /* illegal segment number */ 10 212 3 ioc bit (1), /* illegal op code */ 10 213 3 ia_am bit (1), /* illegal address - modifier */ 10 214 3 isp bit (1), /* illegal slave procedure */ 10 215 3 ipr bit (1), /* illegal procedure */ 10 216 3 nea bit (1), /* non existent address */ 10 217 3 oobb bit (1), /* out of bounds */ 10 218 3 pad bit (29), 10 219 10 220 2 pad2 bit (36), 10 221 10 222 2 pad3a bit (18), 10 223 10 224 2 tsr_stat (0:2), /* TSR STATUS as an ARRAY */ 10 225 3 prn bit (3), /* PR number */ 10 226 3 prv bit (1), /* PR valid bit */ 10 227 10 228 2 pad3b bit (6)) unaligned, 10 229 10 230 2 pad45 (0:1) bit (36), 10 231 10 232 2 instr (0:1) bit (36); /* Instruction ARRAY */ 10 233 10 234 10 235 10 236 /* END INCLUDE FILE mc.incl.pl1 */ 4 113 4 114 4 115 dcl 1 gcos_ext_stat_$gcos_gtss ext 4 116 , 3 gcos_gtss_ext 4 117 , 4 u_state_ptr ptr 4 118 , 4 snumb_index fixed bin(24) 4 119 , 4 home_path char(168) 4 120 ; 4 121 4 122 /* END INCLUDE FILE gcos_ext_stat_.incl.pl1 */ 561 562 563 end gcos_process_mme_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/09/83 1007.1 gcos_process_mme_.pl1 >spec>on>09/07/83-gcos>gcos_process_mme_.pl1 387 1 03/27/82 0424.8 gcos_next_arg.incl.pl1 >ldd>include>gcos_next_arg.incl.pl1 557 2 09/08/83 1229.3 gcos_mme_names.incl.pl1 >spec>on>09/07/83-gcos>gcos_mme_names.incl.pl1 560 3 03/27/82 0424.8 gcos_dbs_names.incl.pl1 >ldd>include>gcos_dbs_names.incl.pl1 561 4 09/08/83 1229.3 gcos_ext_stat_.incl.pl1 >spec>on>09/07/83-gcos>gcos_ext_stat_.incl.pl1 4-100 5 03/27/82 0424.8 gcos_save_mc.incl.pl1 >ldd>include>gcos_save_mc.incl.pl1 4-104 6 03/27/82 0424.8 gcos_fct_entry.incl.pl1 >ldd>include>gcos_fct_entry.incl.pl1 4-108 7 03/27/82 0424.8 gcos_save_data_entry.incl.pl1 >ldd>include>gcos_save_data_entry.incl.pl1 7-29 8 09/08/83 1230.3 gcos_flags.incl.pl1 >spec>on>09/07/83-gcos>gcos_flags.incl.pl1 4-110 9 03/27/82 0424.8 gcos_file_info_block_.incl.pl1 >ldd>include>gcos_file_info_block_.incl.pl1 4-113 10 08/17/83 1135.7 mc.incl.pl1 >ldd>include>mc.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. MME_NAME 000130 constant char(4) initial array dcl 2-8 set ref 75 75 75 75 75 75 89* 311* 340 340 341 343* 398* 434* 443* MME_NO based fixed bin(17,0) level 2 packed unaligned dcl 542 ref 68 addr builtin function dcl 457 in procedure "gcos_process_mme_" ref 58 68 257 257 267 274 392 392 428 428 addr builtin function dcl 1-31 in procedure "next_arg" ref 1-12 1-27 addrel builtin function dcl 458 ref 403 address parameter char unaligned dcl 361 set ref 359 363 369* al 000100 automatic fixed bin(24,0) dcl 459 set ref 281* 290 294 298 302 302 317 318 335 343 343 ap 000102 automatic pointer dcl 460 set ref 281* 290 294 298 302 302 317 318 335 343 arg based char unaligned dcl 461 set ref 290 294 298 302 302 317 318 335 343* arg_string parameter char unaligned dcl 266 set ref 263 271 1-12 1-13 arg_uc 000104 automatic varying char(100) dcl 462 set ref 335* 341 baseno builtin function dcl 463 ref 59 cc 0(05) 000152 external static bit(1) level 4 packed unaligned dcl 4-106 ref 89 code 000136 automatic fixed bin(35,0) dcl 464 set ref 369* 370 com_err_ 000024 constant entry external dcl 465 ref 320 343 continue parameter bit(1) dcl 466 set ref 6 60* 64* count 130 based fixed bin(17,0) array level 2 dcl 553 set ref 392* 392 cu 5(18) based structure level 2 packed unaligned dcl 10-56 cu_$ptr_call 000026 constant entry external dcl 467 ref 60 cv_oct_check_ 000030 constant entry external dcl 469 ref 369 db 000032 constant entry external dcl 470 ref 417 447 dbs_stop_mme defined bit(1) unaligned dcl 3-17 set ref 57 285* 394 413 dbs_trace_mme defined bit(1) unaligned dcl 3-17 set ref 57 284* 398 debugsw 000137 automatic bit(1) unaligned dcl 471 set ref 57* 107 250 dummy1 parameter pointer dcl 472 set ref 6 60* dummy2 parameter pointer dcl 473 set ref 6 60* even_inst 6 based bit(36) level 2 dcl 10-56 set ref 68 even_instruction based structure level 1 dcl 542 fault_name parameter char unaligned dcl 474 set ref 6 60* fct_entry based structure level 1 dcl 6-3 fib based structure level 1 dcl 9-10 fixed builtin function dcl 475 ref 318 398 398 flags based structure level 1 dcl 8-8 flgs 000152 external static structure level 3 dcl 4-106 gcos_et_$bad_mme_addr 000034 external static fixed bin(35,0) dcl 476 set ref 75* gcos_et_$bad_mme_in_cc 000036 external static fixed bin(35,0) dcl 477 set ref 89* gcos_ext_stat_$dbs 000140 external static bit(1) array unaligned dcl 4-19 set ref 57 57 57 57 284* 284 285* 285 394 394 398 398 413 413 gcos_ext_stat_$gcos_slave_area_seg 000142 external static pointer dcl 4-27 ref 59 403 gcos_ext_stat_$last_mme 000144 external static fixed bin(24,0) dcl 4-37 set ref 407 450* gcos_ext_stat_$mc 000154 external static structure level 1 unaligned dcl 4-112 set ref 66* gcos_ext_stat_$save_data 000152 external static structure level 1 dcl 4-106 gcos_ext_stat_$sig_ptr 000146 external static pointer dcl 4-54 set ref 60 60* gcos_ext_stat_$statistics 000150 external static fixed bin(24,0) array dcl 4-58 set ref 392 392 428 428 gcos_mme_bort_$gcos_mme_bort_ 000040 constant entry external dcl 478 ref 160 gcos_mme_bort_$not_imp 000042 constant entry external dcl 479 ref 129 gcos_mme_bort_$system 000044 constant entry external dcl 480 ref 75 89 gcos_mme_call_$gcos_mme_call_ 000046 constant entry external dcl 481 ref 191 gcos_mme_call_$mme_rstr 000050 constant entry external dcl 482 ref 199 gcos_mme_chek_$gcos_mme_chek_ 000052 constant entry external dcl 483 ref 211 gcos_mme_fadd_$gcos_mme_fadd_ 000054 constant entry external dcl 484 ref 140 gcos_mme_fcon_$gcos_mme_fcon_ 000056 constant entry external dcl 485 ref 168 gcos_mme_fini_$gcos_mme_fini_ 000060 constant entry external dcl 486 ref 156 gcos_mme_frce_$gcos_mme_frce_ 000062 constant entry external dcl 487 ref 235 gcos_mme_fsye_$gcos_mme_fsye_ 000064 constant entry external dcl 488 ref 239 gcos_mme_info_$gcos_mme_info_ 000066 constant entry external dcl 489 ref 247 gcos_mme_inos_$gcos_mme_inos_ 000070 constant entry external dcl 490 ref 133 gcos_mme_inos_$mme_endc 000072 constant entry external dcl 491 ref 180 gcos_mme_laps_$gcos_mme_laps_ 000074 constant entry external dcl 492 ref 152 gcos_mme_lbar_$gcos_mme_lbar_ 000076 constant entry external dcl 493 ref 231 gcos_mme_loop_$gcos_mme_loop_ 000100 constant entry external dcl 494 ref 223 gcos_mme_more_$gcos_mme_more_ 000102 constant entry external dcl 495 ref 164 gcos_mme_mrel_$gcos_mme_mrel_ 000104 constant entry external dcl 496 ref 203 gcos_mme_prio_$gcos_mme_prio_ 000106 constant entry external dcl 497 ref 243 gcos_mme_rels_$gcos_mme_rels_ 000110 constant entry external dcl 498 ref 144 gcos_mme_rets_$gcos_mme_rets_ 000112 constant entry external dcl 499 ref 176 gcos_mme_rout_$gcos_mme_rout_ 000114 constant entry external dcl 500 ref 215 gcos_mme_save_$gcos_mme_save_ 000116 constant entry external dcl 501 ref 195 gcos_mme_sets_$gcos_mme_sets_ 000120 constant entry external dcl 502 ref 172 gcos_mme_snap_$gcos_mme_snap_ 000122 constant entry external dcl 503 ref 148 gcos_mme_syot_$gcos_mme_syot_ 000124 constant entry external dcl 504 ref 207 gcos_mme_time_$gcos_mme_time_ 000126 constant entry external dcl 505 ref 187 gcos_mme_user_$gcos_mme_user_ 000130 constant entry external dcl 506 ref 219 gcos_mme_wake_$gcos_mme_wake_ 000132 constant entry external dcl 507 ref 227 hbound builtin function dcl 508 ref 75 75 75 310 320 320 340 i 000140 automatic fixed bin(24,0) dcl 509 in procedure "gcos_process_mme_" set ref 280* 281* 282 320* 343* i parameter fixed bin(24,0) dcl 1-8 in procedure "next_arg" ref 1-2 1-11 if 5(29) based bit(1) level 3 packed unaligned dcl 10-56 set ref 259* ilc 4 based bit(18) level 2 packed unaligned dcl 10-56 set ref 257 257 398 398 increment 000141 automatic fixed bin(24,0) dcl 511 set ref 106* 129* 133* 140* 144* 148* 152* 156* 160* 164* 168* 172* 176* 180* 187* 191* 195* 199* 203* 207* 211* 215* 219* 223* 227* 231* 235* 239* 243* 247* 257 index builtin function dcl 1-32 ref 1-16 initial_cpu_time 000142 automatic fixed bin(71,0) dcl 512 set ref 420* 428 instruction_counter based fixed bin(18,0) unsigned unaligned dcl 513 set ref 257* 257 ioa_ 000134 constant entry external dcl 514 ref 303 305 309 311 365 371 379 398 407 415 434 443 j 000144 automatic fixed bin(24,0) dcl 515 set ref 310* 311 311* 311* 318* 319 320* 340* 341* 354 k 000166 automatic fixed bin(24,0) dcl 1-33 set ref 1-16* 1-18 1-26 1-27 1-28 l parameter fixed bin(24,0) dcl 1-9 set ref 1-2 1-19* 1-26* lbound builtin function dcl 516 ref 75 75 75 319 320 320 340 length builtin function dcl 1-34 ref 1-13 machine_instruction based structure level 1 dcl 545 mc based structure level 1 dcl 10-12 set ref 66 mcp parameter pointer dcl 10-10 set ref 6 58 60* 66 129* 133* 140* 144* 148* 152* 156* 160* 164* 168* 172* 176* 180* 187* 191* 195* 199* 203* 207* 211* 215* 219* 223* 227* 231* 235* 239* 243* 247* mlp 000146 automatic pointer dcl 517 set ref 267* 274* 282 291 303 305 310 311 319 320 320 320 320 354 mme_list based bit(1) array unaligned dcl 518 set ref 282* 291* 303 305 310 311 319 320 320 320 320 354* mme_number 000150 automatic fixed bin(17,0) dcl 519 set ref 68* 75 75 75* 89 89 113 129* 392 392 394 398 398* 398 407 413 428 428 434 443 450 mme_statistics based structure level 1 unaligned dcl 553 mme_stop_list 000010 internal static bit(1) initial array unaligned dcl 520 set ref 274 285 394 413 mme_table 000054 constant bit(1) initial array dcl 2-61 ref 89 mme_trace_list 000012 internal static bit(1) initial array unaligned dcl 521 set ref 267 284 398 null builtin function dcl 522 ref 60 375 1-21 403 on_or_off 000151 automatic bit(1) unaligned dcl 523 set ref 279* 291 295* 299* 354 p parameter pointer dcl 1-10 set ref 1-2 1-17* ppr based structure level 2 packed unaligned dcl 10-56 psr 0(03) based bit(15) level 3 packed unaligned dcl 10-56 ref 59 rfi 5(27) based bit(1) level 3 packed unaligned dcl 10-56 set ref 258* rl 000021 internal static fixed bin(24,0) dcl 1-35 set ref 1-13* 1-15 1-16 1-19 1-20* 1-28* 1-28 rp 000022 internal static pointer dcl 1-36 set ref 1-12* 1-16 1-17 1-21* 1-27* 1-27 rs based char unaligned dcl 1-37 ref 1-16 rs2 based char(1) array unaligned dcl 1-38 set ref 1-27 save_data 000152 external static structure level 2 dcl 4-106 save_data_entry based structure level 1 dcl 7-5 save_machine_conditions based structure level 1 packed unaligned dcl 5-6 scu 30 based bit(36) array level 2 in structure "mc" packed unaligned dcl 10-12 in procedure "gcos_process_mme_" set ref 58 scu based structure level 1 dcl 10-56 in procedure "gcos_process_mme_" scup 000154 automatic pointer dcl 10-54 set ref 58* 59 68 257 257 258 259 398 398 stopped 000152 automatic bit(1) dcl 528 set ref 412* 416* 442 substr builtin function dcl 529 ref 59 total_time based fixed bin(71,0) array level 2 dcl 553 set ref 428* 428 trace_or_stop 000153 automatic bit(1) unaligned dcl 530 set ref 268* 275* 303* 305* 309* translate builtin function dcl 531 ref 335 unspec builtin function dcl 532 set ref 66* 66 434 434 verify builtin function dcl 533 ref 317 virtual_cpu_time_ 000136 constant entry external dcl 534 ref 420 428 watch_address 000017 internal static fixed bin(24,0) dcl 538 set ref 369* 403 407* 434 434 watch_contents 000020 internal static fixed bin(35,0) dcl 539 set ref 377* 404 406* 407* 431 433* 434* watchee based fixed bin(24,0) dcl 535 ref 404 406 431 433 watchp 000014 internal static pointer dcl 536 set ref 375* 403 403* 404 406 431 433 watchsw 000016 internal static bit(1) initial unaligned dcl 537 set ref 57 364* 376* 402 431 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. XED internal static bit(9) initial unaligned dcl 540 abx internal static fixed bin(17,0) initial dcl 10-42 apx internal static fixed bin(17,0) initial dcl 10-42 bbx internal static fixed bin(17,0) initial dcl 10-42 bpx internal static fixed bin(17,0) initial dcl 10-42 cv_dec_check_ 000000 constant entry external dcl 468 dbs_attach_file defined bit(1) unaligned dcl 3-17 dbs_dollar defined bit(1) unaligned dcl 3-17 dbs_filecode defined bit(1) unaligned dcl 3-17 dbs_mme_call defined bit(1) unaligned dcl 3-17 dbs_mme_inos_stop defined bit(1) unaligned dcl 3-17 dbs_mme_inos_trace defined bit(1) unaligned dcl 3-17 dbs_msf_test defined bit(1) unaligned dcl 3-17 dbs_names internal static varying char(14) initial array dcl 3-3 dbs_nondollar defined bit(1) unaligned dcl 3-17 dbs_open_file defined bit(1) unaligned dcl 3-17 fibptr automatic pointer dcl 9-84 gcos_ext_stat_$abort_reason external static varying char(128) dcl 4-13 gcos_ext_stat_$abort_return external static label variable dcl 4-14 gcos_ext_stat_$activity_card_num external static picture(4) unaligned dcl 4-15 gcos_ext_stat_$activity_name external static char(8) unaligned dcl 4-16 gcos_ext_stat_$activity_start_time external static fixed bin(71,0) dcl 4-17 gcos_ext_stat_$card_num external static picture(4) unaligned dcl 4-18 gcos_ext_stat_$courtesy_call_control external static structure level 1 dcl 4-92 gcos_ext_stat_$default_nondollar external static char(2) unaligned dcl 4-20 gcos_ext_stat_$dir_rings external static fixed bin(3,0) array dcl 4-21 gcos_ext_stat_$dpno external static varying char(100) dcl 4-22 gcos_ext_stat_$dpo external static varying char(100) dcl 4-23 gcos_ext_stat_$endfc external static char(2) unaligned dcl 4-24 gcos_ext_stat_$er external static pointer dcl 4-25 gcos_ext_stat_$etc_filecode external static char(2) unaligned dcl 4-26 gcos_ext_stat_$fct external static structure level 1 dcl 4-102 gcos_ext_stat_$gcos_gtss external static structure level 1 unaligned dcl 4-115 gcos_ext_stat_$gf external static fixed bin(24,0) dcl 4-28 gcos_ext_stat_$incode external static fixed bin(24,0) dcl 4-29 gcos_ext_stat_$increment_hold external static fixed bin(24,0) dcl 4-30 gcos_ext_stat_$initial_cpu_time external static fixed bin(71,0) dcl 4-31 gcos_ext_stat_$input_segment_path external static varying char(168) dcl 4-32 gcos_ext_stat_$jcl_warnings external static fixed bin(24,0) dcl 4-33 gcos_ext_stat_$job_cpu_time external static fixed bin(71,0) dcl 4-34 gcos_ext_stat_$job_id external static varying char(18) dcl 4-35 gcos_ext_stat_$job_real_time external static fixed bin(71,0) dcl 4-36 gcos_ext_stat_$ldrss external static fixed bin(24,0) dcl 4-38 gcos_ext_stat_$max_activities external static fixed bin(24,0) dcl 4-39 gcos_ext_stat_$max_mem external static fixed bin(19,0) dcl 4-40 gcos_ext_stat_$mme_rtrn external static label variable dcl 4-41 gcos_ext_stat_$nondollar external static char(2) unaligned dcl 4-42 gcos_ext_stat_$nongcos external static char(2) unaligned dcl 4-43 gcos_ext_stat_$normal_return external static label variable dcl 4-44 gcos_ext_stat_$patchfile_ptr external static pointer dcl 4-45 gcos_ext_stat_$pathname_prefix external static varying char(168) dcl 4-46 gcos_ext_stat_$pch external static pointer dcl 4-47 gcos_ext_stat_$pdir external static varying char(168) dcl 4-48 gcos_ext_stat_$prt external static pointer dcl 4-49 gcos_ext_stat_$rs external static pointer dcl 4-50 gcos_ext_stat_$save_dir external static varying char(168) dcl 4-52 gcos_ext_stat_$saveseg_ptr external static pointer dcl 4-51 gcos_ext_stat_$seg_rings external static fixed bin(3,0) array dcl 4-53 gcos_ext_stat_$skip_umc external static bit(1) unaligned dcl 4-55 gcos_ext_stat_$snumb external static bit(30) dcl 4-56 gcos_ext_stat_$sought_label external static char(8) unaligned dcl 4-57 gcos_ext_stat_$stop_code external static fixed bin(24,0) dcl 4-59 gcos_ext_stat_$storage_limit external static fixed bin(19,0) dcl 4-60 gcos_ext_stat_$sysout_limit external static fixed bin(35,0) dcl 4-61 gcos_ext_stat_$sysout_lines external static fixed bin(35,0) dcl 4-62 gcos_ext_stat_$system_free_pointer external static pointer dcl 4-63 gcos_ext_stat_$tape_buffer_size external static fixed bin(35,0) dcl 4-64 gcos_ext_stat_$temp_dir external static varying char(168) dcl 4-65 gcos_ext_stat_$temp_seg_ptr external static pointer dcl 4-66 gcos_ext_stat_$termination_code external static bit(18) unaligned dcl 4-67 gcos_ext_stat_$time_limit external static fixed bin(71,0) dcl 4-68 gcos_ext_stat_$userid external static char(12) unaligned dcl 4-69 gcos_ext_stat_$validation_level external static fixed bin(3,0) dcl 4-70 ia automatic fixed bin(24,0) dcl 510 lbx internal static fixed bin(17,0) initial dcl 10-42 linked_file internal static bit(1) initial unaligned dcl 9-87 lpx internal static fixed bin(17,0) initial dcl 10-42 odd_instruction based structure level 1 dcl 543 on_sw internal static bit(1) initial dcl 524 previous_instr_ptr automatic pointer dcl 525 previous_opcode automatic bit(9) unaligned dcl 526 random_file internal static bit(1) initial unaligned dcl 9-88 read_file internal static bit(1) initial unaligned dcl 9-89 sbx internal static fixed bin(17,0) initial dcl 10-42 scux based structure level 1 dcl 10-206 spx internal static fixed bin(17,0) initial dcl 10-42 state automatic char(3) unaligned dcl 527 write_file internal static bit(1) initial unaligned dcl 9-90 NAMES DECLARED BY EXPLICIT CONTEXT. continue_db 001570 constant label dcl 277 ref 269 debug_1 002525 constant entry internal dcl 389 ref 107 debug_2 002730 constant entry internal dcl 425 ref 250 debug_return 002427 constant label dcl 382 ref 366 372 found_mme_name 002264 constant label dcl 353 ref 331 341 gcos_process_mme_ 000504 constant entry external dcl 6 get_arg 002272 constant label dcl 356 ref 292 296 300 315 329 351 mme_stop 001550 constant entry external dcl 271 mme_trace 001525 constant entry external dcl 263 mp 000000 constant label array(44) dcl 115 ref 113 next_arg 002430 constant entry internal dcl 1-2 ref 281 print_mme 002552 constant label dcl 398 ref 394 return_from_mp 001502 constant label dcl 249 ref 130 134 137 141 145 149 153 157 161 165 169 173 177 181 184 188 192 196 200 204 208 212 216 220 224 228 232 236 240 244 watcher 002300 constant entry external dcl 359 NAME DECLARED BY CONTEXT OR IMPLICATION. string builtin function ref 284 285 303 305 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4212 4370 3465 4222 Length 5116 3465 156 512 524 14 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gcos_process_mme_ 440 external procedure is an external procedure. next_arg internal procedure shares stack frame of external procedure gcos_process_mme_. debug_1 internal procedure shares stack frame of external procedure gcos_process_mme_. debug_2 internal procedure shares stack frame of external procedure gcos_process_mme_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mme_stop_list gcos_process_mme_ 000012 mme_trace_list gcos_process_mme_ 000014 watchp gcos_process_mme_ 000016 watchsw gcos_process_mme_ 000017 watch_address gcos_process_mme_ 000020 watch_contents gcos_process_mme_ 000021 rl next_arg 000022 rp next_arg STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gcos_process_mme_ 000100 al gcos_process_mme_ 000102 ap gcos_process_mme_ 000104 arg_uc gcos_process_mme_ 000136 code gcos_process_mme_ 000137 debugsw gcos_process_mme_ 000140 i gcos_process_mme_ 000141 increment gcos_process_mme_ 000142 initial_cpu_time gcos_process_mme_ 000144 j gcos_process_mme_ 000146 mlp gcos_process_mme_ 000150 mme_number gcos_process_mme_ 000151 on_or_off gcos_process_mme_ 000152 stopped gcos_process_mme_ 000153 trace_or_stop gcos_process_mme_ 000154 scup gcos_process_mme_ 000166 k next_arg THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry_desc any_to_any_tr THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$ptr_call cv_oct_check_ db gcos_mme_bort_$gcos_mme_bort_ gcos_mme_bort_$not_imp gcos_mme_bort_$system gcos_mme_call_$gcos_mme_call_ gcos_mme_call_$mme_rstr gcos_mme_chek_$gcos_mme_chek_ gcos_mme_fadd_$gcos_mme_fadd_ gcos_mme_fcon_$gcos_mme_fcon_ gcos_mme_fini_$gcos_mme_fini_ gcos_mme_frce_$gcos_mme_frce_ gcos_mme_fsye_$gcos_mme_fsye_ gcos_mme_info_$gcos_mme_info_ gcos_mme_inos_$gcos_mme_inos_ gcos_mme_inos_$mme_endc gcos_mme_laps_$gcos_mme_laps_ gcos_mme_lbar_$gcos_mme_lbar_ gcos_mme_loop_$gcos_mme_loop_ gcos_mme_more_$gcos_mme_more_ gcos_mme_mrel_$gcos_mme_mrel_ gcos_mme_prio_$gcos_mme_prio_ gcos_mme_rels_$gcos_mme_rels_ gcos_mme_rets_$gcos_mme_rets_ gcos_mme_rout_$gcos_mme_rout_ gcos_mme_save_$gcos_mme_save_ gcos_mme_sets_$gcos_mme_sets_ gcos_mme_snap_$gcos_mme_snap_ gcos_mme_syot_$gcos_mme_syot_ gcos_mme_time_$gcos_mme_time_ gcos_mme_user_$gcos_mme_user_ gcos_mme_wake_$gcos_mme_wake_ ioa_ virtual_cpu_time_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. gcos_et_$bad_mme_addr gcos_et_$bad_mme_in_cc gcos_ext_stat_$dbs gcos_ext_stat_$gcos_slave_area_seg gcos_ext_stat_$last_mme gcos_ext_stat_$mc gcos_ext_stat_$save_data gcos_ext_stat_$sig_ptr gcos_ext_stat_$statistics LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000477 57 000517 58 000531 59 000536 60 000554 62 000611 64 000612 66 000613 68 000617 75 000622 89 000664 106 000716 107 000717 113 000722 115 000724 116 000725 117 000726 118 000727 119 000730 120 000731 121 000732 122 000733 123 000734 124 000735 125 000736 126 000737 127 000740 128 000741 129 000742 130 000756 132 000757 133 000760 134 000772 136 000773 137 000774 139 000775 140 000776 141 001010 143 001011 144 001012 145 001024 147 001025 148 001026 149 001040 151 001041 152 001042 153 001054 155 001055 156 001056 157 001070 159 001071 160 001072 161 001104 163 001105 164 001106 165 001120 167 001121 168 001122 169 001134 171 001135 172 001136 173 001150 175 001151 176 001152 177 001164 179 001165 180 001166 181 001200 183 001201 184 001202 186 001203 187 001204 188 001216 190 001217 191 001220 192 001232 194 001233 195 001234 196 001246 198 001247 199 001250 200 001262 202 001263 203 001264 204 001276 206 001277 207 001300 208 001312 210 001313 211 001314 212 001326 214 001327 215 001330 216 001342 218 001343 219 001344 220 001356 222 001357 223 001360 224 001372 226 001373 227 001374 228 001406 230 001407 231 001410 232 001422 234 001423 235 001424 236 001436 238 001437 239 001440 240 001452 242 001453 243 001454 244 001466 246 001467 247 001470 249 001502 250 001503 257 001506 258 001515 259 001517 261 001521 263 001522 267 001540 268 001543 269 001545 271 001546 274 001563 275 001566 277 001570 279 001571 280 001573 281 001576 282 001603 284 001621 285 001631 286 001640 290 001641 291 001647 292 001665 294 001666 295 001672 296 001674 298 001675 299 001701 300 001702 302 001703 303 001713 305 001742 309 001765 310 002005 311 002013 313 002044 315 002046 317 002047 318 002061 319 002074 320 002077 329 002153 331 002154 335 002155 340 002172 341 002201 342 002207 343 002211 351 002263 353 002264 354 002265 356 002272 357 002273 359 002275 363 002313 364 002322 365 002324 366 002341 369 002342 370 002366 371 002370 372 002404 375 002405 376 002407 377 002411 379 002412 382 002427 1 2 002430 1 11 002432 1 12 002435 1 13 002441 1 15 002447 1 16 002461 1 17 002473 1 18 002475 1 19 002476 1 20 002500 1 21 002501 1 22 002503 1 26 002510 1 27 002512 1 28 002516 1 29 002520 389 002525 392 002526 394 002532 398 002542 402 002605 403 002610 404 002621 406 002624 407 002625 412 002663 413 002664 415 002675 416 002711 417 002713 420 002720 423 002727 425 002730 428 002731 431 002754 433 002761 434 002762 442 003014 443 003016 447 003037 450 003044 453 003047 ----------------------------------------------------------- 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