THIS FILE IS DAMAGED COMPILATION LISTING OF SEGMENT cpm_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/04/86 1436.3 mst Tue Options: optimize list 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* format: off */ 8 9 /* Multics Control Point Manager -- The control point manager provides a simple form of mulitasking within a process. 10* Each control point is given a separate stack and, optionally, a separate of set the standard I/O switches. Once given 11* control, a control point will continue to run until it either kills itself or attempts to block on an IPC event 12* channel. This module implements the primitive operations of the control point manager. */ 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 16* audit(86-10-20,Fawcett), install(86-11-03,MR12.0-1206): 17* Written to support control point management in March 1985 by G. Palter 18* based on C. Hornig's task_ctl_. 19* END HISTORY COMMENTS */ 20 21 /* format: style3,linecom */ 22 23 cpm_: 24 procedure (); 25 26 ERROR_RETURN_FROM_CPM_: 27 return; /* not an entrypoint */ 28 29 30 /* Parameters */ 31 32 dcl P_control_point_id bit (36) aligned parameter; 33 dcl P_code fixed binary (35) parameter; 34 35 dcl P_ccpi_ptr pointer parameter; /* create: -> description of the new control point */ 36 37 dcl P_user_cl_intermediary /* *user_cl_intermediary: the user's CL intermediary */ 38 entry (bit (1) aligned) variable parameter; 39 40 dcl P_userproc /* generate_call*: the entrypoint to be called */ 41 entry (pointer) variable parameter; 42 dcl P_userproc_info_ptr pointer parameter; /* generate_call*: the argument to the user's entrypoint */ 43 44 dcl P_pushed_preferred_control_point /* (push pop)_preferred_control_point: set ON => we ... */ 45 bit (1) aligned parameter; /* ... pushed the preferred control point */ 46 47 dcl P_cpma_ptr pointer parameter; /* get_*_meters: -> the meters */ 48 49 dcl P_cpd_ptr pointer parameter; /* update_state_caller: -> the control point */ 50 dcl P_new_state fixed binary parameter; /* update_state_caller: new state for the control point */ 51 52 dcl P_mask bit (36) aligned parameter; /* *mask_ips_interrupts_caller: the current IPS mask */ 53 54 55 /* Remaining declarations */ 56 57 dcl 1 current_control_point_data /* the current control point's definition */ 58 like control_point_data aligned based (current_cpd_ptr); 59 dcl current_cpd_ptr pointer; 60 61 dcl 1 parent_control_point_data /* the identified control point's parent's definition */ 62 like control_point_data aligned based (control_point_data.parent); 63 64 dcl 1 io_switches like control_point_data.io_switches aligned based (ios_ptr); 65 dcl ios_ptr pointer; 66 67 dcl system_area area based (system_area_ptr); 68 dcl system_area_ptr pointer; 69 70 dcl 1 decoded_control_point_id 71 aligned, 72 2 stack_segno bit (18) unaligned, 73 2 unique_bits bit (18) unaligned; 74 75 dcl 1 userproc_arg_list aligned, 76 2 header like arg_list.header, 77 2 arg_ptrs (1) pointer; 78 79 dcl generate_call_flags bit (36) aligned; 80 dcl prior_state fixed binary; 81 dcl target_cpd_ptr pointer; 82 83 dcl stack_idx fixed binary; 84 85 dcl mask bit (36) aligned; 86 87 dcl ( 88 cpm_et_$already_started, 89 cpm_et_$already_stopped, 90 cpm_et_$cant_destroy_root, 91 cpm_et_$cant_stop_root, 92 cpm_et_$cant_wakeup_when_stopped, 93 cpm_et_$control_point_not_found, 94 cpm_et_$preferred_cant_be_stopped, 95 cpm_et_$preferred_stack_overflow, 96 cpm_et_$wakeup_ignored, 97 error_table_$badcall, 98 error_table_$out_of_sequence, 99 error_table_$unimplemented_version 100 ) fixed binary (35) external; 101 102 dcl ( 103 sys_info$all_valid_ips_mask, 104 sys_info$comm_privilege, 105 sys_info$dir_privilege, 106 sys_info$ipc_privilege, 107 sys_info$rcp_privilege, 108 sys_info$ring1_privilege, 109 sys_info$seg_privilege, 110 sys_info$soos_privilege 111 ) bit (36) aligned external; 112 113 dcl continue_to_signal_ entry (fixed binary (35)); 114 dcl ( 115 cpm_alm_$call_overseer, 116 cpm_alm_$call_generate_call 117 ) entry (); 118 dcl cpm_alm_$switch_stacks 119 entry (pointer); 120 dcl cpm_initialize_ entry (); 121 dcl cpm_overseer_$cl_intermediary 122 entry (bit (36) aligned); 123 dcl cpm_overseer_$generate_call 124 entry (pointer, entry (pointer), pointer); 125 dcl ( 126 cu_$get_cl_intermediary, 127 cu_$set_cl_intermediary 128 ) entry (entry (bit (36) aligned)); 129 dcl get_privileges_ entry () returns (bit (36) aligned); 130 dcl get_system_free_area_ 131 entry () returns (pointer); 132 dcl get_temp_segment_ entry (character (*), pointer, fixed binary (35)); 133 dcl hcs_$get_process_usage 134 entry (pointer, fixed binary (35)); 135 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 136 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 137 dcl hcs_$set_stack_ptr entry (pointer); 138 dcl ioa_$rsnnl entry () options (variable); 139 dcl ipc_$reassign_call_channels 140 entry (bit (36) aligned, bit (36) aligned); 141 dcl ipc_$wait_for_an_event 142 entry (); 143 dcl release_temp_segment_ 144 entry (character (*), pointer, fixed binary (35)); 145 dcl sub_err_ entry () options (variable); 146 dcl ( 147 system_privilege_$comm_priv_on, 148 system_privilege_$comm_priv_off, 149 system_privilege_$dir_priv_on, 150 system_privilege_$dir_priv_off, 151 system_privilege_$ipc_priv_on, 152 system_privilege_$ipc_priv_off, 153 system_privilege_$rcp_priv_on, 154 system_privilege_$rcp_priv_off, 155 system_privilege_$ring1_priv_on, 156 system_privilege_$ring1_priv_off, 157 system_privilege_$seg_priv_on, 158 system_privilege_$seg_priv_off, 159 system_privilege_$soos_priv_on, 160 system_privilege_$soos_priv_off 161 ) entry (fixed binary (35)); 162 163 dcl (addr, addwordno, baseno, baseptr, binary, bit, bool, clock, codeptr, currentsize, hbound, length, mod, null, 164 stackbaseptr, string, substr, unspec) 165 builtin; 166 167 dcl (any_other, cleanup) 168 condition; 169 170 /* Create a new control point which is left in the STOPPED state */ 171 172 create: 173 entry (P_ccpi_ptr, P_control_point_id, P_code); 174 175 if stackbaseptr () -> stack_header.cpm_enabled = ""b 176 then do; /* first time in the process */ 177 call cpm_initialize_ (); 178 current_cpd_ptr = stackbaseptr () -> stack_header.cpm_data_ptr; 179 end; 180 181 ccpi_ptr = P_ccpi_ptr; /* copy input parameter for the internal procedure */ 182 183 system_area_ptr = get_system_free_area_ (); 184 185 mask = ""b; /* for any_other handler */ 186 on any_other call any_other_handler (); 187 188 cpd_ptr = null (); /* for cleanup handler */ 189 on cleanup 190 begin; 191 if cpd_ptr ^= null () 192 then call destroy_control_point (cpd_ptr); 193 end; 194 195 call create_control_point (); /* does most of the work */ 196 197 call push_call_frame (cpm_alm_$call_overseer, unspec (create_control_point_info), 198 create_control_point_info.initproc.entry, create_control_point_info.initproc.info_ptr); 199 200 P_control_point_id = control_point_data.id; 201 P_code = 0; /* success */ 202 203 return; 204 205 206 /* Control arrives here iff an error occured while creating the control point */ 207 208 ERROR_RETURN_FROM_CPM_$CREATE: 209 if cpd_ptr ^= null () 210 then call destroy_control_point (cpd_ptr); 211 return; /* create_failure procedure has already set P_code */ 212 213 /* Destroy the specified control point -- This entrypoint queues a call to cpm_$call_self_destruct onto the target control 214* point's stack and then forces the scheduler to run that control point. */ 215 216 destroy: 217 entry (P_control_point_id, P_code); 218 219 call check_initialization ("cpm_$destroy"); /* aborts if not initialized */ 220 221 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the call entirely */ 222 if cpd_ptr = addr (cpm_data_$root_control_point_data) 223 then do; /* the root control point is sacred */ 224 P_code = cpm_et_$cant_destroy_root; 225 return; 226 end; 227 228 call generate_call (P_control_point_id, call_self_destruct, null (), P_code); 229 230 return; 231 232 233 234 /* This entrypoint is called by cpm_$destroy on the stack of the control point which is to be destroyed. It does a 235* non-local goto to the control point's destroy label which has been initialized to cpm_$self_destruct. The non-local 236* goto will unwind the entire stack allowing any cleanup handlers to be run. */ 237 238 call_self_destruct: 239 entry (); 240 241 cpd_ptr = stackbaseptr () -> stack_header.cpm_data_ptr; 242 243 if codeptr (control_point_data.destroy) = codeptr (self_destruct) 244 then go to control_point_data.destroy; /* transfer to the self_destruct entrypoint */ 245 else call sub_err_ (cpm_et_$cant_destroy_root, cpm_data_$subsystem_name, ACTION_CANT_RESTART, null (), 0); 246 247 248 249 /* This entrypoint is not actually called but, rather, is the target of the non-local goto performed above by 250* cpm_$call_self_destruct. This entrypoint will update the control point's state to DEAD and then invoke the scheduler 251* to find something else to do. */ 252 253 self_destruct: 254 entry (); 255 256 current_cpd_ptr, cpd_ptr = stackbaseptr () -> stack_header.cpm_data_ptr; 257 258 mask = ""b; /* for any_other handler */ 259 on any_other call any_other_handler (); 260 261 call update_state (CPM_DESTROYED); /* this control point is ready for destruction */ 262 263 do while ("1"b); /* find something else to do */ 264 call scheduler$find_runnable (); 265 end; 266 267 /* Start the specified control point -- Places the control point into the READY state if it was STOPPED */ 268 269 start: 270 entry (P_control_point_id, P_code); 271 272 call check_initialization ("cpm_$start"); 273 274 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the call entirely */ 275 276 mask = ""b; /* for any_other handler */ 277 on any_other call any_other_handler (); 278 279 if control_point_data.state = CPM_STOPPED 280 then do; 281 call update_state (CPM_READY); 282 P_code = 0; /* success */ 283 end; 284 285 else P_code = cpm_et_$already_started; /* it's already running or blocked */ 286 287 return; 288 289 290 291 /* Stop the specified control point -- Places the control point into the STOPPED state if it was READY or BLOCKED */ 292 293 stop: 294 entry (P_control_point_id, P_code); 295 296 call check_initialization ("cpm_$stop"); 297 298 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the call entirely */ 299 if cpd_ptr = addr (cpm_data_$root_control_point_data) 300 then do; /* the root control point is sacred */ 301 P_code = cpm_et_$cant_stop_root; 302 return; 303 end; 304 305 mask = ""b; /* for any_other handler */ 306 on any_other call any_other_handler (); 307 308 if (control_point_data.state = CPM_READY) | (control_point_data.state = CPM_BLOCKED) 309 then do; 310 call update_state (CPM_STOPPED); 311 P_code = 0; /* success */ 312 end; 313 314 else P_code = cpm_et_$already_stopped; /* it was stopped earlier */ 315 316 return; 317 318 /* Block the current control point */ 319 320 block: 321 entry (); 322 323 call check_initialization ("cpm_$block"); /* sets current_cpd_ptr */ 324 cpd_ptr = current_cpd_ptr; 325 326 mask = ""b; /* for any_other handler */ 327 on any_other call any_other_handler (); 328 329 if control_point_data.state = CPM_READY 330 then call update_state (CPM_BLOCKED); 331 332 return; 333 334 335 336 /* Wakeup the specified control point -- Places the control point into the READY state if it was BLOCKED */ 337 338 wakeup: 339 entry (P_control_point_id, P_code); 340 341 call check_initialization ("cpm_$wakeup"); 342 343 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the call entirely */ 344 345 mask = ""b; /* for any_other handler */ 346 on any_other call any_other_handler (); 347 348 if control_point_data.state = CPM_BLOCKED 349 then do; 350 call update_state (CPM_READY); 351 P_code = 0; /* success */ 352 end; 353 354 else if control_point_data.state = CPM_READY /* it's already awake */ 355 then P_code = cpm_et_$wakeup_ignored; 356 357 else P_code = cpm_et_$cant_wakeup_when_stopped; /* it's stopped and must be started first */ 358 359 return; 360 361 /* Run the scheduler to find the highest priority ready control point and give control to said control point */ 362 363 scheduler: 364 entry (); 365 366 call check_initialization ("cpm_$scheduler"); 367 368 mask = ""b; /* for any_other handler */ 369 on any_other call any_other_handler (); 370 371 call scheduler$find_runnable (); 372 373 return; 374 375 /* Return the user CL intermediary for a given control point -- The user CL intermediary is invoked by 376* cpm_cl_intermediary_ (the control point CL intermediary) before actually establishing a new command level or stopping 377* the control point. The user's intermediary can take whatever actions it desires and then inform the control point's 378* intermediary either to return to the caller of cu_$cl (i.e., a "start" command) or to continue with the standard CL 379* intermediary operation. */ 380 381 get_user_cl_intermediary: 382 entry (P_control_point_id, P_user_cl_intermediary, P_code); 383 384 call check_initialization ("cpm_$get_user_cl_intermediary"); 385 386 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the call entirely */ 387 388 P_user_cl_intermediary = control_point_data.user_cl_intermediary; 389 390 P_code = 0; /* success */ 391 392 return; 393 394 395 396 /* Set the user CL intermediary for a given control point -- See the get_user_cl_intermediary entrypoint for a description 397* of this feature. */ 398 399 set_user_cl_intermediary: 400 entry (P_control_point_id, P_user_cl_intermediary, P_code); 401 402 call check_initialization ("cpm_$set_user_cl_intermediary"); 403 404 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the call entirely */ 405 406 control_point_data.user_cl_intermediary = P_user_cl_intermediary; 407 408 P_code = 0; /* success */ 409 410 return; 411 412 413 414 /* A "null" entry variable which should never be called -- Used as the initial value for user's CL intermediarys */ 415 416 nulle: 417 entry () options (variable); 418 419 call sub_err_ (error_table_$badcall, cpm_data_$subsystem_name, ACTION_CANT_RESTART, null (), 0, 420 "The ""null"" entry value can not be invoked."); 421 422 /* Generate a call to the supplied user program in another control point */ 423 424 generate_call: /* ... run it immediately */ 425 entry (P_control_point_id, P_userproc, P_userproc_info_ptr, P_code); 426 427 generate_call_flags = CPM_GC_FORCE_READY; 428 go to BEGIN_GENERATE_CALL; 429 430 431 generate_call_preferred: /* ... run it immediately as the preferred control point */ 432 entry (P_control_point_id, P_userproc, P_userproc_info_ptr, P_code); 433 434 generate_call_flags = CPM_GC_FORCE_READY | CPM_GC_PUSH_PREFERRED; 435 go to BEGIN_GENERATE_CALL; 436 437 438 generate_call_when_ready: /* ... run it when it next becomes READY */ 439 entry (P_control_point_id, P_userproc, P_userproc_info_ptr, P_code); 440 441 generate_call_flags = ""b; 442 go to BEGIN_GENERATE_CALL; 443 444 445 BEGIN_GENERATE_CALL: 446 call check_initialization ("cpm_$generate_call"); 447 448 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the call entirely */ 449 450 mask = ""b; /* for any_other handler */ 451 on any_other call any_other_handler (); 452 453 454 if current_cpd_ptr = cpd_ptr 455 then do; 456 457 /* The call is to take place in this control point -- Invoke the user's program directly but first place the control point 458* into the same state as it would be in after releasing control via the scheduler. This action is necessary to insure 459* that cpm_overseer_$generate_call will operate correctly. See the internal procedure switch_control_points for an 460* explanation of the various operations performed here. */ 461 462 call mask_ips_interrupts (mask); /* can't be interrupted */ 463 current_control_point_data.ips_mask = mask; 464 465 current_control_point_data.privileges = get_privileges_ (); 466 call cu_$get_cl_intermediary (current_control_point_data.cl_intermediary); 467 468 if current_control_point_data.swapped_switches 469 | different_switches (current_cpd_ptr, cpm_data_$previous_control_point) 470 then call save_io_switches (); /* save when cpm_overseer_$generate_call expects to restore */ 471 472 if trace_$transaction_begin (1) /* disable tracing temporarily */ 473 then ; 474 475 unspec (userproc_arg_list.header) = ""b;/* setup the argument list for the user's procedure */ 476 userproc_arg_list.header.call_type = Interseg_call_type; 477 userproc_arg_list.header.arg_count = 1; 478 userproc_arg_list.arg_ptrs (1) = addr (P_userproc_info_ptr); 479 480 call cpm_overseer_$generate_call (addr (generate_call_flags), P_userproc, addr (userproc_arg_list)); 481 /* make the call */ 482 483 if trace_$transaction_end (1) /* turn tracing back on */ 484 then ; 485 486 if current_control_point_data.swapped_switches 487 | different_switches (current_cpd_ptr, cpm_data_$previous_control_point) 488 then call restore_io_switches (); /* restore our switches if we saved them above */ 489 490 call cu_$set_cl_intermediary (current_control_point_data.cl_intermediary); 491 call restore_privileges (); /* put our privileges and CL intermediary back */ 492 493 mask = current_control_point_data.ips_mask; 494 call unmask_ips_interrupts (mask); /* allow IPS interrupts again */ 495 end; 496 497 498 else do; 499 500 /* The call is to take place in some other control point -- Push the necessary frame on its stack and run it immediately 501* if requested. If we do schedule it immediately, we must also temporarily change this control point's state to READY so 502* that, after the other control point finishes or blocks, this control point will be able to run and clean up the stack 503* frames associated with this generate_call. */ 504 505 call push_call_frame (cpm_alm_$call_generate_call, generate_call_flags, P_userproc, 506 P_userproc_info_ptr); 507 508 if generate_call_flags & CPM_GC_FORCE_READY 509 then do; /* run the other control point right now */ 510 prior_state = current_control_point_data.state; 511 512 if current_control_point_data.state ^= CPM_READY 513 then do; /* ... must make the current control point READY */ 514 target_cpd_ptr = cpd_ptr; 515 cpd_ptr = current_cpd_ptr; 516 call update_state (CPM_READY); 517 cpd_ptr = target_cpd_ptr; 518 end; 519 520 /*** A cleanup handler to restore the current control point state isn't necessary because, 521* if a non-local goto occurs, it can only have happened while this control point was 522* ready and, if we were blocked, we are about to punt the call to ipc_$block which put us 523* into that state. */ 524 525 call scheduler$run_specific_control_point (); 526 527 if prior_state ^= CPM_READY 528 then do; /* ... put the current control point back */ 529 cpd_ptr = current_cpd_ptr; 530 call update_state (prior_state); 531 end; 532 end; 533 end; 534 535 P_code = 0; /* success */ 536 537 return; 538 539 /* Return the identity of the currently preferred control point -- The preferred control point is always given priority 540* over all others whenever it is ready. In addition, cu_$cl will actually only invoke a new control point when called in 541* the preferred control point. */ 542 543 get_preferred_control_point: 544 entry () returns (bit (36) aligned); 545 546 call check_initialization ("cpm_$get_preferred_control_point"); 547 548 if cpm_data_$preferred_control_point ^= null () 549 then return (cpm_data_$preferred_control_point -> control_point_data.id); 550 else return ((36)"0"b); /* none at present */ 551 552 553 554 /* Set the preferred control point to the specified control point iff it isn't STOPPED */ 555 556 set_preferred_control_point: 557 entry (P_control_point_id, P_code); 558 559 call check_initialization ("cpm_$set_preferred_control_point"); 560 561 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the entire call */ 562 if control_point_data.state = CPM_STOPPED 563 then do; 564 P_code = cpm_et_$preferred_cant_be_stopped; 565 return; 566 end; 567 568 mask = ""b; /* for any_other handler */ 569 on any_other call any_other_handler (); 570 571 if cpm_data_$preferred_control_point ^= cpd_ptr 572 then do; /* actually switching control points */ 573 call mask_ips_interrupts (mask); 574 call switch_preferred_control_points (); 575 call unmask_ips_interrupts (mask); 576 end; 577 578 P_code = 0; /* success */ 579 580 return; 581 582 /* Push the preferred control point -- Saves the current preferred control point on the top of the stack and makes the 583* specified control point preferred. If a control point is actually pushed, the P_pushed_preferred_control_point 584* parameter will be set. That parameter must be used in subsequent calls to pop the stack. */ 585 586 push_preferred_control_point: 587 entry (P_control_point_id, P_pushed_preferred_control_point, P_code); 588 589 call check_initialization ("cpm_$push_preferred_control_point"); 590 591 P_pushed_preferred_control_point = "0"b; /* initialize this parameter for cleanup handlers */ 592 593 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the entire call */ 594 if control_point_data.state = CPM_STOPPED 595 then do; 596 P_code = cpm_et_$preferred_cant_be_stopped; 597 return; 598 end; 599 600 if cpm_data_$preferred_control_point_stack.stack_depth 601 = hbound (cpm_data_$preferred_control_point_stack.cpd_ptr_stack, 1) 602 then do; /* the stack is already full */ 603 P_code = cpm_et_$preferred_stack_overflow; 604 return; 605 end; 606 607 mask = ""b; /* for any_other handler */ 608 on any_other call any_other_handler (); 609 610 if cpm_data_$preferred_control_point ^= cpd_ptr 611 then do; /* we're actually switching preferred control points */ 612 613 call mask_ips_interrupts (mask); 614 615 cpm_data_$preferred_control_point_stack.stack_depth, stack_idx = 616 cpm_data_$preferred_control_point_stack.stack_depth + 1; 617 618 cpm_data_$preferred_control_point_stack.cpd_ptr_stack (stack_idx) = cpm_data_$preferred_control_point; 619 620 call switch_preferred_control_points (); 621 622 P_pushed_preferred_control_point = "1"b; 623 624 call unmask_ips_interrupts (mask); 625 end; 626 627 P_code = 0; /* success */ 628 629 return; 630 631 /* Pop the preferred control point stack by making the top of the stack the new preferred control point if and only if 632* the P_pushed_preferred_control_point parameter is "1"b. */ 633 634 pop_preferred_control_point: 635 entry (P_pushed_preferred_control_point); 636 637 call check_initialization ("cpm_$pop_preferred_control_point"); 638 639 mask = ""b; /* for any_other handler */ 640 on any_other call any_other_handler (); 641 642 if P_pushed_preferred_control_point /* the caller did push it */ 643 then do; 644 645 call mask_ips_interrupts (mask); 646 647 P_pushed_preferred_control_point = "0"b;/* once is enough, thank you */ 648 649 if cpm_data_$preferred_control_point_stack.stack_depth > 0 650 then do; /* and there's something on the stack */ 651 stack_idx = cpm_data_$preferred_control_point_stack.stack_depth; 652 cpm_data_$preferred_control_point_stack.stack_depth = stack_idx - 1; 653 654 cpd_ptr = cpm_data_$preferred_control_point_stack.cpd_ptr_stack (stack_idx); 655 656 call switch_preferred_control_points (); 657 end; 658 659 call unmask_ips_interrupts (mask); 660 end; 661 662 return; 663 664 /* Return the usage meters recorded for a given control point */ 665 666 get_control_point_meters: 667 entry (P_control_point_id, P_cpma_ptr, P_code); 668 669 call check_initialization ("cpm_$get_control_point_meters"); 670 671 cpma_ptr = P_cpma_ptr; 672 if control_point_meters_argument.version ^= CONTROL_POINT_METERS_ARGUMENT_VERSION_1 673 then do; 674 P_code = error_table_$unimplemented_version; 675 return; 676 end; 677 678 call find_control_point (P_control_point_id); /* sets cpd_ptr or aborts the entire call */ 679 680 mask = ""b; /* for any_other handler */ 681 on any_other call any_other_handler (); 682 683 call update_meters (current_control_point_data.meters, (0)); 684 /* insure that all usage values are up-to-date */ 685 686 control_point_meters_argument.meters = control_point_data.meters; 687 control_point_meters_argument.number_wanted, control_point_meters_argument.number_can_return = 688 MAX_NUMBER_OF_METERS; 689 690 P_code = 0; /* success */ 691 692 return; 693 694 695 696 /* Return the usage meters recorded for the control point scheduler */ 697 698 get_scheduler_meters: 699 entry (P_cpma_ptr, P_code); 700 701 call check_initialization ("cpm_$get_scheduler_meters"); 702 703 cpma_ptr = P_cpma_ptr; 704 if control_point_meters_argument.version ^= CONTROL_POINT_METERS_ARGUMENT_VERSION_1 705 then do; 706 P_code = error_table_$unimplemented_version; 707 return; 708 end; 709 710 control_point_meters_argument.meters = cpm_data_$global_meters.overhead; 711 control_point_meters_argument.number_wanted, control_point_meters_argument.number_can_return = 712 MAX_NUMBER_OF_METERS; 713 714 P_code = 0; /* success */ 715 716 return; 717 718 /* Validate that control point management is enabled */ 719 720 check_initialization: 721 procedure (p_entrypoint_name); 722 723 dcl p_entrypoint_name character (*) parameter; 724 725 if stackbaseptr () -> stack_header.cpm_enabled /* we are on: find the current control point's definition */ 726 then current_cpd_ptr = stackbaseptr () -> stack_header.cpm_data_ptr; 727 728 else call sub_err_ (error_table_$out_of_sequence, cpm_data_$subsystem_name, ACTION_CANT_RESTART, null (), 0, 729 "At least one call to cpm_$create must preceed any call to ^a.", p_entrypoint_name); 730 731 return; 732 733 end check_initialization; 734 735 736 737 /* Find the control_point_data for the request control point or abort the call completely */ 738 739 find_control_point: 740 procedure (p_control_point_id); 741 742 dcl p_control_point_id bit (36) aligned parameter; 743 744 string (decoded_control_point_id) = p_control_point_id; 745 746 if cpm_data_$valid_control_points.map (binary (decoded_control_point_id.stack_segno, 18, 0)) 747 then do; /* the given ID does identify a valid stack */ 748 cpd_ptr = baseptr (decoded_control_point_id.stack_segno) -> stack_header.cpm_data_ptr; 749 if control_point_data.id = p_control_point_id 750 then return; /* and the stack does indeed belong to that control point */ 751 end; 752 753 /*** Control arrives here iff the supplied control point ID is invalid */ 754 P_code = cpm_et_$control_point_not_found; 755 go to ERROR_RETURN_FROM_CPM_; 756 757 end find_control_point; 758 759 /* Mask all IPS interrupts */ 760 761 mask_ips_interrupts: 762 procedure (p_mask); 763 764 dcl p_mask bit (36) aligned parameter; 765 766 call hcs_$set_ips_mask (""b, p_mask); 767 768 end mask_ips_interrupts; 769 770 771 /* Invoke mask_ips_interrupts -- This entrypoint exists to prevent making the mask_ips_interrupts internal procedure 772* non-quick by invoking it from within an on unit or other non-quick procedure. */ 773 774 mask_ips_interrupts_caller: 775 entry (P_mask); 776 777 call mask_ips_interrupts (P_mask); 778 return; 779 780 781 782 /* Restore the IPS mask to its state prior to calling mask_ips_interrupts */ 783 784 unmask_ips_interrupts: 785 procedure (p_mask); 786 787 dcl p_mask bit (36) aligned parameter; 788 789 if substr (p_mask, 36, 1) = "1"b 790 then call hcs_$reset_ips_mask (p_mask, p_mask); 791 792 end unmask_ips_interrupts; 793 794 795 /* Invoke unmask_ips_interrupts -- This entrypoint exists to prevent making the unmask_ips_interrupts internal procedure 796* non-quick by invoking it from within an on unit or other non-quick procedure. */ 797 798 unmask_ips_interrupts_caller: 799 entry (P_mask); 800 801 call unmask_ips_interrupts (P_mask); 802 return; 803 804 805 806 /* The any_other handler established whenever we have masked IPS signals */ 807 808 any_other_handler: 809 procedure (); 810 811 call unmask_ips_interrupts_caller (mask); 812 813 call continue_to_signal_ ((0)); /* be sure the error gets through */ 814 815 end any_other_handler; 816 817 /* Restore the current control point's system privileges -- We need not worry about access to system_privilege_ as we only 818* call it when we actually discover that a privilege has changed and the only way to change privileges is to use the 819* system_privilege_ gate itself. */ 820 821 restore_privileges: 822 procedure (); 823 824 dcl current_privileges bit (36) aligned; 825 826 current_privileges = get_privileges_ (); 827 828 if current_control_point_data.privileges = current_privileges 829 then return; /* privileges are already correct */ 830 831 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$comm_privilege 832 then if current_control_point_data.privileges & sys_info$comm_privilege 833 then call system_privilege_$comm_priv_on ((0)); 834 else call system_privilege_$comm_priv_off ((0)); 835 836 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$dir_privilege 837 then if current_control_point_data.privileges & sys_info$dir_privilege 838 then call system_privilege_$dir_priv_on ((0)); 839 else call system_privilege_$dir_priv_off ((0)); 840 841 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$ipc_privilege 842 then if current_control_point_data.privileges & sys_info$ipc_privilege 843 then call system_privilege_$ipc_priv_on ((0)); 844 else call system_privilege_$ipc_priv_off ((0)); 845 846 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$rcp_privilege 847 then if current_control_point_data.privileges & sys_info$rcp_privilege 848 then call system_privilege_$rcp_priv_on ((0)); 849 else call system_privilege_$rcp_priv_off ((0)); 850 851 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$ring1_privilege 852 then if current_control_point_data.privileges & sys_info$ring1_privilege 853 then call system_privilege_$ring1_priv_on ((0)); 854 else call system_privilege_$ring1_priv_off ((0)); 855 856 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$seg_privilege 857 then if current_control_point_data.privileges & sys_info$seg_privilege 858 then call system_privilege_$seg_priv_on ((0)); 859 else call system_privilege_$seg_priv_off ((0)); 860 861 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$soos_privilege 862 then if current_control_point_data.privileges & sys_info$soos_privilege 863 then call system_privilege_$soos_priv_on ((0)); 864 else call system_privilege_$soos_priv_off ((0)); 865 866 return; 867 868 end restore_privileges; 869 870 /* Save the current control point's standard I/O switches -- Always called with all IPS signals masked */ 871 872 save_io_switches: 873 procedure (); 874 875 if current_control_point_data.swapped_switches 876 then ios_ptr = addr (cpm_data_$root_control_point_data.io_switches); 877 else ios_ptr = addr (current_control_point_data.io_switches); 878 879 call iox_$move_attach (iox_$user_io, io_switches.user_io, (0)); 880 call iox_$move_attach (iox_$user_input, io_switches.user_input, (0)); 881 call iox_$move_attach (iox_$user_output, io_switches.user_output, (0)); 882 call iox_$move_attach (iox_$error_output, io_switches.error_output, (0)); 883 884 return; 885 886 end save_io_switches; 887 888 889 /* Restore the current control point's standard I/O switches -- Always called with all IPS signals masked */ 890 891 restore_io_switches: 892 procedure (); 893 894 if current_control_point_data.swapped_switches 895 then ios_ptr = addr (cpm_data_$root_control_point_data.io_switches); 896 else ios_ptr = addr (current_control_point_data.io_switches); 897 898 call iox_$move_attach (io_switches.user_io, iox_$user_io, (0)); 899 call iox_$move_attach (io_switches.user_input, iox_$user_input, (0)); 900 call iox_$move_attach (io_switches.user_output, iox_$user_output, (0)); 901 call iox_$move_attach (io_switches.error_output, iox_$error_output, (0)); 902 903 return; 904 905 end restore_io_switches; 906 907 908 909 /* Determines if the two specified control points use different sets of standard I/O switches */ 910 911 different_switches: 912 procedure (p_cpd_1_ptr, p_cpd_2_ptr) returns (bit (1) aligned); 913 914 dcl 1 cpd_1 like control_point_data aligned based (p_cpd_1_ptr); 915 dcl 1 cpd_2 like control_point_data aligned based (p_cpd_2_ptr); 916 dcl (p_cpd_1_ptr, p_cpd_2_ptr) 917 pointer parameter; 918 919 if cpd_1.swapped_switches & cpd_2.swapped_switches 920 then return ("0"b); /* both control points are using the root's switches */ 921 922 else if cpd_1.group_id = cpd_2.group_id /* same group: they use the same switches ... */ 923 then return (cpd_1.swapped_switches ^= cpd_2.swapped_switches); 924 /* ... unless one is using the root's but not the other */ 925 926 else if (cpd_1.swapped_switches & (cpd_2.group_id = cpm_data_$root_control_point_data.group_id)) 927 | (cpd_2.swapped_switches & (cpd_1.group_id = cpm_data_$root_control_point_data.group_id)) 928 then return ("0"b); /* different groups: but one is swapped to the other */ 929 930 else return ("1"b); /* different groups really using different switches */ 931 932 end different_switches; 933 934 /* The control point scheduler */ 935 936 scheduler: 937 procedure (); 938 return; /* not used */ 939 940 941 /* Run the control point at the top of the ready queue -- If there are no ready control points, wait for an IPC event to 942* make one or more control points eligible. */ 943 944 scheduler$find_runnable: 945 entry (); 946 947 call update_meters (current_control_point_data.meters, cpm_data_$global_meters.overhead.n_schedules); 948 949 if cpm_data_$ready_queue.first = null () 950 then do; /* nothing ready at present */ 951 if (current_cpd_ptr ^= cpm_data_$preferred_control_point) 952 & (cpm_data_$preferred_control_point ^= null ()) 953 then if cpm_data_$preferred_control_point -> control_point_data.state = CPM_BLOCKED 954 then do; /* ... preferred is blocked: better to hcs_$block in it */ 955 cpd_ptr = cpm_data_$preferred_control_point; 956 call switch_control_points (); 957 end; 958 do while (cpm_data_$ready_queue.first = null ()); 959 call ipc_$wait_for_an_event (); /* ... we are preferred or he's not blocked: hcs_$block */ 960 end; 961 end; 962 963 cpd_ptr = cpm_data_$ready_queue.first; /* run whoever's on top */ 964 965 call switch_control_points (); /* THUNK! */ 966 967 if cpm_data_$gc_control_points /* there are control points we can eliminate */ 968 then call gc_dead_control_points (); 969 970 call update_meters (cpm_data_$global_meters.overhead, current_control_point_data.meters.n_schedules); 971 972 return; 973 974 975 976 /* Run the selected control point */ 977 978 scheduler$run_specific_control_point: 979 entry (); 980 981 call update_meters (current_control_point_data.meters, cpm_data_$global_meters.overhead.n_schedules); 982 983 call switch_control_points (); /* THUNK! */ 984 985 if cpm_data_$gc_control_points /* there are control points we can eliminate */ 986 then call gc_dead_control_points (); 987 988 call update_meters (cpm_data_$global_meters.overhead, current_control_point_data.meters.n_schedules); 989 990 return; 991 992 /* Actual code to switch from one control point to another */ 993 994 switch_control_points: 995 procedure (); 996 997 if current_cpd_ptr = cpd_ptr /* asked to run ourselves -- nothing to do */ 998 then return; 999 1000 call mask_ips_interrupts (mask); /* can't be interrupted during this process */ 1001 1002 1003 /* Save the present IPS mask, system privileges, and CL intermediary in the control point's definition -- Each control 1004* point is permitted to manipulate these per-process values as if it were the only control point in the process. 1005* Therefore, we must save and restore these values whenever we switch control points to insure that each control point's 1006* settings of these mechansims will be undisturbed by other control points */ 1007 1008 current_control_point_data.ips_mask = mask; 1009 1010 current_control_point_data.privileges = get_privileges_ (); 1011 1012 call cu_$get_cl_intermediary (current_control_point_data.cl_intermediary); 1013 1014 1015 /* Save our standard I/O switches if they are not the same set as used by the control point about to be run */ 1016 1017 if different_switches (current_cpd_ptr, cpd_ptr) 1018 then call save_io_switches (); 1019 1020 1021 /* Switch Stacks -- We must inform inform ring-0 of the change so it will properly signal faults, IPS interrupts, etc. */ 1022 1023 cpm_data_$previous_control_point = current_cpd_ptr; 1024 1025 if trace_$transaction_begin (1) /* disable tracing -- let the new control point ... */ 1026 then ; /* ... reenable it if appropriate */ 1027 1028 call hcs_$set_stack_ptr (control_point_data.stack_ptr); 1029 1030 call cpm_alm_$switch_stacks (control_point_data.stack_ptr); 1031 1032 /*** Immediately after the above call, control returns to this point in the new control point we chose to run. 1033* Consequently, current_control_point_data now refers to the control point referenced above as 1034* control_point_data and the control point referenced above as current_control_point_data is now referenced 1035* through cpm_data_$previous_control_point. */ 1036 1037 if trace_$transaction_end (1) /* reenable tracing if it was running in this control point */ 1038 then ; 1039 1040 1041 /* Restore our I/O switches */ 1042 1043 if different_switches (current_cpd_ptr, cpm_data_$previous_control_point) 1044 then call restore_io_switches (); 1045 1046 1047 /* Restore our saved CL intermediary, system privileges, and IPS mask */ 1048 1049 call cu_$set_cl_intermediary (current_control_point_data.cl_intermediary); 1050 1051 call restore_privileges (); 1052 1053 mask = current_control_point_data.ips_mask; 1054 call unmask_ips_interrupts (mask); /* let IPS through again */ 1055 1056 return; 1057 1058 end switch_control_points; 1059 1060 /* Finish the destruction of any dead control points */ 1061 1062 gc_dead_control_points: 1063 procedure (); 1064 1065 system_area_ptr = get_system_free_area_ (); /* needed by destroy_control_point */ 1066 1067 call gc_worker (addr (cpm_data_$root_control_point_data)); 1068 1069 cpm_data_$gc_control_points = "0"b; /* we've done all we can for now */ 1070 1071 return; 1072 1073 1074 1075 /* Actually walks the tree of control points looking for those which can be eliminated */ 1076 1077 gc_worker: 1078 procedure (p_cpd_ptr) recursive; 1079 1080 dcl 1 p_control_point_data 1081 like control_point_data aligned based (p_cpd_ptr); 1082 dcl p_cpd_ptr pointer parameter; 1083 1084 dcl 1 a_control_point_data 1085 like control_point_data aligned based (a_cpd_ptr); 1086 dcl a_cpd_ptr pointer; 1087 1088 dcl next_cpd_ptr pointer; 1089 1090 /*** Walk the control point's list of children and flush any of them that are dead */ 1091 do a_cpd_ptr = p_control_point_data.first_child repeat (next_cpd_ptr) while (a_cpd_ptr ^= null ()); 1092 next_cpd_ptr = a_control_point_data.next_peer; 1093 call gc_worker (a_cpd_ptr); 1094 end; 1095 1096 /*** If this control point is dead and has no children, eliminate it */ 1097 if (p_control_point_data.state = CPM_DESTROYED) & (p_control_point_data.first_child = null ()) 1098 then call destroy_control_point (p_cpd_ptr); 1099 1100 return; 1101 1102 end gc_worker; 1103 1104 end gc_dead_control_points; 1105 1106 end scheduler; 1107 1108 /* Update the meters for a given control point or for the scheduler itself */ 1109 1110 update_meters: 1111 procedure (p_meters, p_n_schedules); 1112 1113 dcl 1 p_meters like control_point_meters aligned parameter; 1114 dcl p_n_schedules fixed binary parameter; 1115 1116 dcl 1 local_usage like process_usage aligned; 1117 dcl local_real_time fixed binary (71); 1118 1119 local_real_time = clock (); /* to compute real-time change */ 1120 1121 local_usage.number_wanted = MAX_NUMBER_OF_METERS; /* get all the meters */ 1122 call hcs_$get_process_usage (addr (local_usage), (0)); 1123 1124 call mask_ips_interrupts (mask); /* update them uniterruptably */ 1125 1126 p_n_schedules = p_n_schedules + 1; /* count the scheduling */ 1127 1128 p_meters.real_time = p_meters.real_time + local_real_time - cpm_data_$global_meters.last_meters.real_time; 1129 p_meters.usage = p_meters.usage + local_usage - cpm_data_$global_meters.last_meters.usage; 1130 1131 cpm_data_$global_meters.last_meters.real_time = local_real_time; 1132 cpm_data_$global_meters.last_meters.usage = local_usage; 1133 1134 call unmask_ips_interrupts (mask); 1135 1136 return; 1137 1138 end update_meters; 1139 1140 /* Changes the state of a control point */ 1141 1142 update_state: 1143 procedure (p_new_state); 1144 1145 dcl p_new_state fixed binary parameter; 1146 1147 if p_new_state = control_point_data.state /* the control point is already in the requested state */ 1148 then return; 1149 1150 call mask_ips_interrupts (mask); 1151 1152 if control_point_data.preferred & ((p_new_state = CPM_DESTROYED) | (p_new_state = CPM_STOPPED)) 1153 then do; /* only READY or BLOCKED control points can be preferred */ 1154 call set_preferred_control_point (cpm_data_$root_control_point_data.id, (0)); 1155 end; /* ... so try to switch it to the root control point */ 1156 1157 if control_point_data.state = CPM_READY /* it's about to become not ready: remove it from the queue */ 1158 then call remove_from_ready_queue (); 1159 1160 control_point_data.state = p_new_state; 1161 1162 if control_point_data.state = CPM_READY /* it's been made ready: stick it into the ready queue */ 1163 then call insert_into_ready_queue (); 1164 1165 else if control_point_data.state = CPM_DESTROYED /* it's been killed */ 1166 then do; 1167 call ipc_$reassign_call_channels (control_point_data.id, parent_control_point_data.id); 1168 string (decoded_control_point_id) = control_point_data.id; 1169 cpm_data_$valid_control_points.map (binary (decoded_control_point_id.stack_segno, 18, 0)) = "0"b; 1170 cpm_data_$gc_control_points = "1"b; /* ... we need to cleanup when next possible */ 1171 cpm_data_$n_control_points = cpm_data_$n_control_points - 1; 1172 end; 1173 1174 call unmask_ips_interrupts (mask); 1175 1176 return; 1177 1178 end update_state; 1179 1180 1181 1182 /* Invoke update_state -- Called by cpm_overseer_$generate_call */ 1183 1184 update_state_caller: 1185 entry (P_cpd_ptr, P_new_state); 1186 1187 mask = ""b; /* for any_other handler */ 1188 on any_other call any_other_handler (); 1189 1190 cpd_ptr = P_cpd_ptr; 1191 1192 call update_state (P_new_state); 1193 1194 return; 1195 1196 /* Sets the preferred control point -- Rethreads the ready queue to reflect the change in priority of the old and new 1197* preferred control points */ 1198 1199 switch_preferred_control_points: 1200 procedure (); 1201 1202 dcl old_preferred_cpd_ptr 1203 pointer; 1204 1205 control_point_data.preferred = "1"b; /* this control point is now preferred */ 1206 1207 if control_point_data.state = CPM_READY 1208 then do; /* it's ready: rethread it to the top of the queue */ 1209 call remove_from_ready_queue (); 1210 call insert_into_ready_queue (); 1211 end; 1212 1213 1214 /* Actually switch preferred control points */ 1215 1216 old_preferred_cpd_ptr = cpm_data_$preferred_control_point; 1217 1218 cpm_data_$preferred_control_point = cpd_ptr; /* establish the new preferred control point */ 1219 1220 cpd_ptr = old_preferred_cpd_ptr; 1221 1222 1223 /* control_point_data now refers to the old preferred control point */ 1224 1225 control_point_data.preferred = "0"b; /* it's no longer special */ 1226 1227 if control_point_data.state = CPM_READY 1228 then do; /* rethread to reflect its lowered priority */ 1229 call remove_from_ready_queue (); 1230 call insert_into_ready_queue (); 1231 end; 1232 1233 return; 1234 1235 end switch_preferred_control_points; 1236 1237 /* Inserts a control point into the ready queue -- This procedure expects its caller to have masked IPS interrupts. */ 1238 1239 insert_into_ready_queue: 1240 procedure (); 1241 1242 dcl (prev_cpd_ptr, next_cpd_ptr) 1243 pointer; 1244 1245 prev_cpd_ptr = null (); /* assume it goes at the beginning of the queue */ 1246 next_cpd_ptr = cpm_data_$ready_queue.first; 1247 1248 if control_point_data.preferred /* it should always have first priority */ 1249 then go to INSERT_INTO_THE_LIST; 1250 1251 do next_cpd_ptr = cpm_data_$ready_queue.first repeat (next_cpd_ptr -> control_point_data.next_ready) 1252 while (next_cpd_ptr ^= null ()); 1253 if (next_cpd_ptr -> control_point_data.priority > control_point_data.priority) 1254 & ^next_cpd_ptr -> control_point_data.preferred 1255 then go to INSERT_INTO_THE_LIST; /* next one is lower priority and not preferred */ 1256 else prev_cpd_ptr = next_cpd_ptr; 1257 end; /* add to the end of the queue if we fall through */ 1258 1259 INSERT_INTO_THE_LIST: 1260 if prev_cpd_ptr = null () /* put it at the top of the queue */ 1261 then cpm_data_$ready_queue.first = cpd_ptr; 1262 else prev_cpd_ptr -> control_point_data.next_ready = cpd_ptr; 1263 1264 if next_cpd_ptr = null () /* put it at the end of the queue */ 1265 then cpm_data_$ready_queue.last = cpd_ptr; 1266 else next_cpd_ptr -> control_point_data.prev_ready = cpd_ptr; 1267 1268 control_point_data.prev_ready = prev_cpd_ptr; 1269 control_point_data.next_ready = next_cpd_ptr; 1270 1271 return; 1272 1273 end insert_into_ready_queue; 1274 1275 1276 1277 /* Removes a control point from the ready queue -- This procedure expects its caller to have masked IPS interrupts. */ 1278 1279 remove_from_ready_queue: 1280 procedure (); 1281 1282 if control_point_data.prev_ready = null () /* we are at the top of the queue */ 1283 then cpm_data_$ready_queue.first = control_point_data.next_ready; 1284 else control_point_data.prev_ready -> control_point_data.next_ready = control_point_data.next_ready; 1285 1286 if control_point_data.next_ready = null () /* we are at the bottom of the queue */ 1287 then cpm_data_$ready_queue.last = control_point_data.prev_ready; 1288 else control_point_data.next_ready -> control_point_data.prev_ready = control_point_data.prev_ready; 1289 1290 control_point_data.ready_queue = null (); /* complete the removal process */ 1291 1292 return; 1293 1294 end remove_from_ready_queue; 1295 1296 /* Creates a new control point */ 1297 1298 create_control_point: 1299 procedure () options (non_quick); 1300 1301 dcl code fixed binary (35); 1302 1303 if create_control_point_info.version ^= CREATE_CONTROL_POINT_INFO_VERSION_1 1304 then call create_failure (error_table_$unimplemented_version); 1305 1306 call mask_ips_interrupts_caller (mask); /* avoid interrupts until we can clean up properly */ 1307 1308 allocate control_point_data in (system_area) set (cpd_ptr); 1309 control_point_data.stack_ptr, control_point_data.parent, control_point_data.peers = null (); 1310 1311 call unmask_ips_interrupts_caller (mask); /* the cleanup handler will now work OK */ 1312 1313 call get_temp_segment_ (cpm_data_$subsystem_name, control_point_data.stack_ptr, code); 1314 if code ^= 0 1315 then call create_failure (code); 1316 1317 1318 /* Setup most of the control point's data */ 1319 1320 decoded_control_point_id.stack_segno = baseno (control_point_data.stack_ptr); 1321 decoded_control_point_id.unique_bits = substr (bit (clock (), 71), 54, 18); 1322 control_point_data.id = string (decoded_control_point_id); 1323 1324 control_point_data.state = CPM_STOPPED; /* the user must start it */ 1325 1326 control_point_data.priority = create_control_point_info.priority; 1327 control_point_data.preferred = "0"b; /* it's an ordinary control point */ 1328 1329 control_point_data.last_frame_ptr = null (); /* cpm_alm_$switch_stacks hasn't been used yet */ 1330 1331 if create_control_point_info.independent 1332 then control_point_data.parent = addr (cpm_data_$root_control_point_data); 1333 else control_point_data.parent = stackbaseptr () -> stack_header.cpm_data_ptr; 1334 1335 control_point_data.peers, /* we haven't threaded it into any lists yet */ 1336 control_point_data.children, control_point_data.ready_queue = null (); 1337 1338 if create_control_point_info.user_cl_intermediary_given 1339 then control_point_data.user_cl_intermediary = create_control_point_info.user_cl_intermediary; 1340 else control_point_data.user_cl_intermediary = nulle; 1341 1342 control_point_data.comment = create_control_point_info.comment; 1343 1344 control_point_data.ips_mask = sys_info$all_valid_ips_mask; 1345 substr (control_point_data.ips_mask, 36) = "1"b; /* start with all IPS interrupts enabled */ 1346 1347 control_point_data.privileges = ""b; /* start with no privileges */ 1348 1349 control_point_data.cl_intermediary = cpm_overseer_$cl_intermediary; 1350 /* start with the "standard" CL intermediary */ 1351 1352 control_point_data.io_switches = parent_control_point_data.io_switches; 1353 control_point_data.group_id = parent_control_point_data.group_id; 1354 /* we'll share our parent's switches until we've run once */ 1355 1356 control_point_data.meters = 0; /* hasn't been used yet */ 1357 1358 1359 /* Initialize the new control point's stack by copying its parent's stack header */ 1360 1361 call mask_ips_interrupts_caller (mask); /* the rest of this operation must not be interrupted */ 1362 1363 if trace_$transaction_begin (1) 1364 then ; /* new stack should have standard operator pointers */ 1365 1366 control_point_data.stack_ptr -> stack_header = parent_control_point_data.stack_ptr -> stack_header; 1367 control_point_data.stack_ptr -> stack_header.stack_begin_ptr, 1368 control_point_data.stack_ptr -> stack_header.stack_end_ptr = 1369 addwordno (control_point_data.stack_ptr, currentsize (control_point_data.stack_ptr -> stack_header)); 1370 1371 control_point_data.stack_ptr -> stack_header.cpm_data_ptr = cpd_ptr; 1372 control_point_data.stack_ptr -> stack_header.cpm_enabled = substr(control_point_data.id,1,length(stack_header.cpm_enabled)); 1373 1374 unspec (control_point_data.stack_ptr -> stack_header.trace) = ""b; 1375 1376 if trace_$transaction_end (1) 1377 then ; 1378 1379 control_point_data.destroy = cv_entry_to_label_ (self_destruct); 1380 1381 1382 /* Thread this control point into its parent's children chain */ 1383 1384 if parent_control_point_data.first_child = null () 1385 then do; /* new control point is the parent's first child */ 1386 parent_control_point_data.first_child = cpd_ptr; 1387 control_point_data.prev_peer = null (); 1388 end; 1389 else do; /* parent has several other children already */ 1390 parent_control_point_data.last_child -> control_point_data.next_peer = cpd_ptr; 1391 control_point_data.prev_peer = parent_control_point_data.last_child; 1392 end; 1393 1394 control_point_data.next_peer = null (); 1395 parent_control_point_data.last_child = cpd_ptr; 1396 1397 cpm_data_$valid_control_points.map (binary (decoded_control_point_id.stack_segno, 18, 0)) = "1"b; 1398 cpm_data_$n_control_points = cpm_data_$n_control_points + 1; 1399 1400 call unmask_ips_interrupts_caller (mask); 1401 1402 return; 1403 1404 1405 1406 /* Reports an error during control point creation to our caller */ 1407 1408 create_failure: 1409 procedure (p_code); 1410 1411 dcl p_code fixed binary (35) parameter; 1412 1413 P_code = p_code; 1414 go to ERROR_RETURN_FROM_CPM_$CREATE; 1415 1416 end create_failure; 1417 1418 1419 1420 /* Converts an entry variable into a label variable which will unwind the stack */ 1421 1422 cv_entry_to_label_: 1423 procedure (p_entry) returns (label variable); 1424 1425 dcl p_entry entry variable parameter; 1426 1427 dcl a_label label variable; 1428 dcl 1 a_label_decoded aligned based (addr (a_label)), 1429 2 code_ptr pointer, 1430 2 environment_ptr pointer; 1431 1432 a_label_decoded.code_ptr = codeptr (p_entry); 1433 a_label_decoded.environment_ptr = control_point_data.stack_ptr -> stack_header.stack_begin_ptr; 1434 /* will unwind the stack to its first frame */ 1435 1436 return (a_label); 1437 1438 end cv_entry_to_label_; 1439 1440 end create_control_point; 1441 1442 /* Destroys an old control point -- This procedure is only called after all the control point's children have been 1443* destroyed. It is also called during the creation of a control point if an error occurs after the control point is 1444* partially created. */ 1445 1446 destroy_control_point: 1447 procedure (p_cpd_ptr); 1448 1449 dcl p_cpd_ptr pointer parameter; 1450 1451 dcl 1 p_control_point_data 1452 like control_point_data aligned based (p_cpd_ptr); 1453 dcl 1 p_parent_control_point_data 1454 like control_point_data aligned based (p_control_point_data.parent); 1455 1456 1457 /* Remove the dead control point from its parent's children chain */ 1458 1459 if p_control_point_data.parent ^= null () 1460 then do; /* there's a parent defined */ 1461 p_parent_control_point_data.meters = p_parent_control_point_data.meters + p_control_point_data.meters; 1462 1463 call mask_ips_interrupts_caller (mask); /* prevent interrupts while rechaining */ 1464 1465 /*** Check that the parent knows of the control point before rechaining -- This check is only 1466* necessary if the control point's peer chain pointers are null as this could indicate that the 1467* control point hadn't been chained before it was destroyed. */ 1468 1469 if p_control_point_data.prev_peer = null () 1470 then do; /* it might be the parent's first child */ 1471 if p_parent_control_point_data.first_child = p_cpd_ptr 1472 then p_parent_control_point_data.first_child = p_control_point_data.next_peer; 1473 end; 1474 else p_control_point_data.prev_peer -> control_point_data.next_peer = p_control_point_data.next_peer; 1475 1476 if p_control_point_data.next_peer = null () 1477 then do; /* it might be the parent's last child */ 1478 if p_parent_control_point_data.last_child = p_cpd_ptr 1479 then p_parent_control_point_data.last_child = p_control_point_data.prev_peer; 1480 end; 1481 else p_control_point_data.next_peer -> control_point_data.prev_peer = p_control_point_data.prev_peer; 1482 1483 p_control_point_data.parent, p_control_point_data.peers = null (); 1484 call unmask_ips_interrupts_caller (mask); 1485 end; /* the parent no longers knows about us */ 1486 1487 1488 /* Destroy the dead control point's stack */ 1489 1490 if p_control_point_data.stack_ptr ^= null () 1491 then do; /* its stack exists */ 1492 call release_temp_segment_ (cpm_data_$subsystem_name, p_control_point_data.stack_ptr, (0)); 1493 p_control_point_data.stack_ptr = null (); 1494 end; 1495 1496 1497 /* Complete the destruction of the control point */ 1498 1499 free p_control_point_data in (system_area); 1500 p_cpd_ptr = null (); /* its destroyed */ 1501 1502 return; 1503 1504 end destroy_control_point; 1505 1506 /* Creates a stack frame on the given stack to call the specified entrypoint -- 1507* 1508* The stack frame is initialized appropriately so that, when cpm_alm_$switch_stacks returns on the new stack, the 1509* entrypoint specified by the p_caller parameter will be invoked. As this entrypoint is invoked by a return with its 1510* stack frame already extant, it must be an ALM routine which then calls the actual PL/I caller entrypoint. The 1511* correspondence between the ALM and PL/I procedures follows: 1512* 1513* ALM entrypoint PL/I entrypoint 1514* cpm_alm_$call_overseer cpm_overseer_$overseer 1515* cpm_alm_$call_generate_call cpm_overseer_$generate_call 1516* 1517* The PL/I entrypoint prepares the environment according to the data in the p_caller_info parameter 1518* and then invokes the entrypoint specified as the p_callee parameter passing it the p_callee_info_ptr parameter as its 1519* single parameter. When the callee entrypoint returns, the PL/I entrypoint returns to the ALM entrypoint. The 1520* cpm_alm_$call_cpm_overseer_ entrypoint will then transfer to cpm_$self_destruct to destroy the control point; the 1521* cpm_alm_$call_cpm_generate_call_ entrypoint will then return to the prior stack frame on the stack which is normally a 1522* frame owned by cpm_$scheduler. */ 1523 1524 push_call_frame: 1525 procedure (p_caller, p_caller_info, p_callee, p_callee_info_ptr) options (non_quick); 1526 1527 dcl p_caller entry () variable parameter; 1528 dcl p_caller_info bit (*) aligned parameter; 1529 dcl p_callee entry (pointer) variable parameter; 1530 dcl p_callee_info_ptr pointer parameter; 1531 1532 dcl 1 call_frame aligned based (sp), /* the stack frame for p_caller */ 1533 2 header like stack_frame aligned, /* ... standard stack frame header */ 1534 2 arguments, /* ... arguments to either p_callee or p_caller's PL/I */ 1535 3 caller_info_ptr 1536 pointer, 1537 3 callee entry (pointer) variable, 1538 3 callee_arg_list_ptr 1539 pointer, 1540 3 callee_info_ptr 1541 pointer, 1542 2 caller_arg_list, /* ... the argument list for p_caller's PL/I counterpart */ 1543 3 header like arg_list.header, 1544 3 arg_ptrs (3) pointer, 1545 2 callee_arg_list, /* ... the argument list for p_callee */ 1546 3 header like arg_list.header, 1547 3 arg_ptrs (1) pointer, 1548 2 caller_info bit (length (p_caller_info)) aligned; 1549 1550 call mask_ips_interrupts_caller (mask); /* creating the frame must not be interrupted */ 1551 1552 sb = control_point_data.stack_ptr; /* find the target stack ... */ 1553 sp = stack_header.stack_end_ptr; /* ... and the place to lay down the caller frame */ 1554 1555 stack_frame.return_ptr = codeptr (p_caller); /* where to begin execution after cpm_alm_$switch_stacks */ 1556 stack_frame.translator_id = TRANSLATOR_ID_ALM; 1557 1558 call_frame.caller_info = p_caller_info; /* copy the parameters into the frame */ 1559 call_frame.caller_info_ptr = addr (call_frame.caller_info); 1560 call_frame.callee = p_callee; 1561 call_frame.callee_info_ptr = p_callee_info_ptr; 1562 1563 stack_frame.arg_ptr = addr (call_frame.caller_arg_list); 1564 /* record where this frame's argument list may be found */ 1565 1566 unspec (call_frame.caller_arg_list.header) = ""b; /* setup the caller's argument list */ 1567 call_frame.caller_arg_list.header.call_type = Interseg_call_type; 1568 call_frame.caller_arg_list.header.arg_count = 3; /* caller_flags, callee, callee_info_ptr */ 1569 call_frame.caller_arg_list.arg_ptrs (1) = addr (call_frame.caller_info_ptr); 1570 call_frame.caller_arg_list.arg_ptrs (2) = addr (call_frame.callee); 1571 call_frame.caller_arg_list.arg_ptrs (3) = addr (call_frame.callee_arg_list_ptr); 1572 1573 call_frame.callee_arg_list_ptr = addr (call_frame.callee_arg_list); 1574 /* record where the callee's argument list can be found */ 1575 1576 unspec (call_frame.callee_arg_list.header) = ""b; /* setup the callee's argument list */ 1577 call_frame.callee_arg_list.header.call_type = Interseg_call_type; 1578 call_frame.callee_arg_list.header.arg_count = 1; 1579 call_frame.callee_arg_list.arg_ptrs (1) = addr (call_frame.callee_info_ptr); 1580 1581 stack_frame.prev_sp = control_point_data.last_frame_ptr; 1582 /* when this call is done: return to the scheduler */ 1583 1584 control_point_data.last_frame_ptr = sp; /* have cpm_alm_$switch_stacks return to this new frame */ 1585 1586 stack_frame.next_sp, /* "push" the frame into existence */ 1587 /* Note that we guarantee that the next stack frame */ 1588 /* goes on a mod 16-word boundary. */ 1589 stack_header.stack_end_ptr = 1590 addwordno (sp, (currentsize (call_frame) + 16 - mod (currentsize (call_frame), 16))); 1591 1592 call unmask_ips_interrupts_caller (mask); 1593 1594 return; 1595 1596 end push_call_frame; 1597 1598 /* format: off */ 1599 /* BEGIN INCLUDE FILE ... cpm_data_.incl.pl1 */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 1 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 1 6* Written to support control point management in March 1985 by G. Palter. 1 7* END HISTORY COMMENTS */ 1 8 1 9 /* format: style3,linecom */ 1 10 1 11 /* Static data defined by the Control Point Manager for external use */ 1 12 1 13 dcl cpm_data_$n_control_points /* # of control points actually extant in the process */ 1 14 fixed binary external; 1 15 1 16 /* END INCLUDE FILE ... cpm_data_.incl.pl1 */ 1599 1600 /* BEGIN INCLUDE FILE ... cpm_internal_data.incl.pl1 */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 2 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 2 6* Written to support control point management in March 1985 by G. Palter. 2 7* END HISTORY COMMENTS */ 2 8 2 9 /* format: style3,linecom */ 2 10 2 11 /* NOTE: This include file references structures contained in the following independent include files -- 2 12* cpm_control_point_data.incl.pl1 cpm_ctrl_pt_meters.incl.pl1 2 13* process_usage.incl.pl1 */ 2 14 2 15 2 16 /* Constants defined by the Control Point Manager for internal use only */ 2 17 2 18 dcl cpm_data_$subsystem_name /* our name for use in error messages, etc. */ 2 19 character (32) external; 2 20 2 21 2 22 /* Static data defined by the Control Point Manager for internal use only */ 2 23 2 24 dcl 1 cpm_data_$root_control_point_data /* definition of the root control point */ 2 25 like control_point_data aligned external; 2 26 2 27 dcl cpm_data_$gc_control_points /* ON => there are destroyed control points to ... */ 2 28 bit (1) aligned external; /* ... be garbage collected */ 2 29 2 30 dcl cpm_data_$saved_cl_intermediary /* the process' original CL intermediary */ 2 31 entry (bit (36) aligned) variable external; 2 32 2 33 dcl cpm_data_$preferred_control_point /* -> definition of the preferred control point */ 2 34 pointer external; 2 35 2 36 dcl 1 cpm_data_$preferred_control_point_stack /* preferred control points stacked by ... */ 2 37 aligned external, /* ... event calls and timers */ 2 38 2 stack_depth fixed binary, /* ... # of entries in the stack at present */ 2 39 2 pad bit (36) aligned, 2 40 2 cpd_ptr_stack (16) pointer; /* ... the actual stack */ 2 41 2 42 dcl 1 cpm_data_$ready_queue /* ordered list of ready control points in the process */ 2 43 aligned external, 2 44 2 first pointer, 2 45 2 last pointer; 2 46 2 47 dcl cpm_data_$previous_control_point /* -> definition of control point which ran before current */ 2 48 pointer external; 2 49 2 50 dcl 1 cpm_data_$valid_control_points /* maps stack segment numbers into an indication of ... */ 2 51 aligned external, /* ... whether there is a live control point there */ 2 52 2 map (0:4095) bit (1) unaligned; 2 53 2 54 dcl 1 cpm_data_$global_meters /* global meters kept by the control point manager */ 2 55 aligned external, 2 56 2 overhead like control_point_meters, /* ... scheduling overhead */ 2 57 2 last_meters like control_point_meters; /* ... used to compute meters (not really a meter) */ 2 58 2 59 /* END INCLUDE FILE ... cpm_internal_data.incl.pl1 */ 1600 1601 /* BEGIN INCLUDE FILE ... cpm_control_point_data.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 3 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 3 6* Written to support control point management in March 1985 by G. Palter. 3 7* END HISTORY COMMENTS */ 3 8 3 9 /* format: style3,linecom,idind22 */ 3 10 3 11 /* NOTE: This include file references structures contained in the following independent include files -- 3 12* cpm_ctrl_pt_meters.incl.pl1 process_usage.incl.pl1 */ 3 13 3 14 3 15 /* Definition of a single control point in the process */ 3 16 3 17 dcl 1 control_point_data aligned based (cpd_ptr), 3 18 2 id bit (36) aligned, /* unique ID of this control point */ 3 19 2 group_id bit (36) aligned, /* unique ID of containing group of control points */ 3 20 2 state fixed binary, /* scheduling state (see below) */ 3 21 2 flags, 3 22 3 preferred bit (1) unaligned, /* ON => this is the preferred task (infinite priority) */ 3 23 3 swapped_switches /* ON => this control point's switches were swapped ... */ 3 24 bit (1) unaligned, /* ... with the root's during an unclaimed signal */ 3 25 3 pad bit (34) unaligned, 3 26 2 priority fixed binary, /* scheduling priority */ 3 27 2 pad bit (36) aligned, 3 28 2 stack_ptr pointer, /* -> the stack used by this control point */ 3 29 2 last_frame_ptr pointer, /* -> last frame in said stack where control is to resume */ 3 30 2 destroy label, /* transferring to this label will kill the control point */ 3 31 2 parent pointer, /* -> defintion of this control point's parent */ 3 32 2 peers, /* linked list of this control point's peers */ 3 33 3 prev_peer pointer, 3 34 3 next_peer pointer, 3 35 2 children, /* linked list of this control point's children */ 3 36 3 first_child pointer, 3 37 3 last_child pointer, 3 38 2 ready_queue, /* ordered list of control points in the ready state */ 3 39 3 prev_ready pointer, 3 40 3 next_ready pointer, 3 41 2 user_cl_intermediary /* procedure to be called by cpm_overseer_$cl_intermediary */ 3 42 entry (bit (1) aligned), 3 43 2 comment character (64), /* a description of this control point */ 3 44 2 saved_environment, /* data saved when the control point stops running ... */ 3 45 3 ips_mask bit (36) aligned, /* ... IPS mask when it stopped running */ 3 46 3 privileges bit (36) aligned, /* ... system privileges */ 3 47 3 cl_intermediary entry (bit (36) aligned), /* ... CL intermediary */ 3 48 3 io_switches, /* ... standard I/O switches */ 3 49 4 user_io pointer, 3 50 4 user_input pointer, 3 51 4 user_output pointer, 3 52 4 error_output pointer, 3 53 2 meters like control_point_meters; /* per control point metering data */ 3 54 3 55 dcl cpd_ptr pointer; 3 56 3 57 3 58 /* Scheduler states for a control point */ 3 59 3 60 dcl ( 3 61 CPM_DESTROYED initial (0), /* waiting to be deleted */ 3 62 CPM_STOPPED initial (1), /* can not run without an explicit cpm_$start */ 3 63 CPM_BLOCKED initial (2), /* blocked on an IPC event channel */ 3 64 CPM_READY initial (3) /* eligible to run on next call to cpm_$scheduler */ 3 65 ) fixed binary static options (constant); 3 66 3 67 /* END INCLUDE FILE ... cpm_control_point_data.incl.pl1 */ 1601 4 1 /* BEGIN INCLUDE FILE ... cpm_ctrl_pt_meters.incl.pl1 */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 4 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 4 6* Written to support control point management in March 1985 by G. Palter. 4 7* END HISTORY COMMENTS */ 4 8 4 9 /* format: style3,linecom */ 4 10 4 11 /* NOTE: The include file references structures contained in the following independent include file -- 4 12* process_usage.incl.pl1 */ 4 13 4 14 4 15 /* Definition of control point metering data -- A set of metering data is kept independently for each control point which 4 16* provides usage statistics for that control point. In addition, another set of metering data is kept to record the 4 17* overhead involved in the control point scheduler */ 4 18 4 19 dcl 1 control_point_meters 4 20 aligned based (cpm_ptr), 4 21 2 n_schedules fixed binary, /* # of times the control point has been run or 4 22* # of times the scheduler has been invoked */ 4 23 2 pad fixed binary, 4 24 2 real_time fixed binary (71), /* ... real time used by the control point or scheduler */ 4 25 2 usage like process_usage; /* ... CPU, memory, etc. */ 4 26 4 27 dcl cpm_ptr pointer; 4 28 4 29 4 30 /* Definition of the structure used in calls to cpm_$get_control_point_meters and cpm_$get_scheduler_meters */ 4 31 4 32 dcl 1 control_point_meters_argument 4 33 aligned based (cpma_ptr), 4 34 2 version character (8) unaligned, 4 35 2 meters like control_point_meters; 4 36 4 37 dcl CONTROL_POINT_METERS_ARGUMENT_VERSION_1 4 38 character (8) static options (constant) initial ("cpma_001"); 4 39 4 40 dcl MAX_NUMBER_OF_METERS 4 41 fixed bin internal static options (constant) init (9); 4 42 4 43 dcl cpma_ptr pointer; 4 44 4 45 /* END INCLUDE FILE ... cpm_ctrl_pt_meters.incl.pl1 */ 1602 5 1 /* BEGIN INCLUDE FILE process_usage.incl.pl1 WRITTEN 09/17/76 BY Richard Bratt */ 5 2 5 3 declare 5 4 process_usage_pointer pointer, 5 5 1 process_usage based (process_usage_pointer), 5 6 2 number_wanted fixed bin, /* max number of entries to be returned */ 5 7 2 number_can_return fixed bin, /* the number of entries currently returnable */ 5 8 2 cpu_time fixed bin (71), 5 9 2 paging_measure fixed bin (71), 5 10 2 page_faults fixed bin (34), 5 11 2 pd_faults fixed bin (34), 5 12 2 virtual_cpu_time fixed bin (71), 5 13 2 segment_faults fixed bin (34), 5 14 2 bounds_faults fixed bin (34), 5 15 2 vtoc_reads fixed bin (34), 5 16 2 vtoc_writes fixed bin (34); 5 17 5 18 /* END INCLUDE FILE process_usage.incl.pl1 */ 1603 1604 /* BEGIN INCLUDE FILE ... cpm_create_ctrl_pt_info.incl.pl1 */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 6 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 6 6* Written to support control point management in March 1985 by G. Palter. 6 7* END HISTORY COMMENTS */ 6 8 6 9 /* format: style3,linecom */ 6 10 6 11 /* Description of a new control point to be created by a call to cpm_$create */ 6 12 6 13 dcl 1 create_control_point_info 6 14 aligned based (ccpi_ptr), 6 15 2 header, 6 16 3 version character (8) unaligned, 6 17 3 comment character (64) unaligned, /* a description of the control point */ 6 18 3 initproc, /* definition of the first user code to be run */ 6 19 4 entry entry (pointer) variable, /* ... the actual program */ 6 20 4 info_ptr pointer, /* ... and its single parameter */ 6 21 3 user_cl_intermediary /* user program to be called by cpm_cl_intermediary_ */ 6 22 entry (bit (1) aligned) variable, 6 23 3 priority fixed binary, /* scheduling prioirty (1 is highest, 2 next, etc.) */ 6 24 3 flags, 6 25 4 independent bit (1) unaligned, /* ON => the new control point is standalone */ 6 26 /* OFF => the new control point belongs to the current one */ 6 27 4 separate_standard_iocbs /* ON => the new control point should have its own switches */ 6 28 bit (1) unaligned, /* OFF => the new control point shares its parent's */ 6 29 4 user_io_attach_desc_given /* ON => there is an attach description for user_i/o */ 6 30 bit (1) unaligned, /* OFF => user_i/o should be syn_'ed to the parent's */ 6 31 4 user_cl_intermediary_given /* ON => user has supplied a program to be called by ... */ 6 32 bit (1) unaligned, /* ... cpm_cl_intermediary_ before creating a new level */ 6 33 4 pad bit (32) unaligned, 6 34 3 pad bit (36) aligned, 6 35 3 user_io_attach_desc_length /* length of the user_i/o attach description (if present) */ 6 36 fixed binary (21), 6 37 2 user_io_attach_desc /* attach description for user_i/o */ 6 38 character (ccpi_user_io_attach_desc_length 6 39 refer (create_control_point_info.user_io_attach_desc_length)) unaligned; 6 40 6 41 dcl CREATE_CONTROL_POINT_INFO_VERSION_1 6 42 character (8) static options (constant) initial ("ccpi_001"); 6 43 6 44 dcl ccpi_user_io_attach_desc_length /* required to allocate the above structure */ 6 45 fixed binary (21); 6 46 dcl ccpi_ptr pointer; 6 47 6 48 /* END INCLUDE FILE ... cpm_create_ctrl_pt_info.incl.pl1 */ 1604 1605 /* BEGIN INCLUDE FILE ... cpm_generate_call_flags.incl.pl1 */ 7 2 7 3 /****^ HISTORY COMMENTS: 7 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 7 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 7 6* Written to s tr ptr, /* (28) pointer to pl1_operators_$operator_table */ 8 47 2 call_op_ptr ptr, /* (30) pointer to standard call operator */ 8 48 2 push_op_ptr ptr, /* (32) pointer to standard push operator */ 8 49 2 return_op_ptr ptr, /* (34) pointer to standard return operator */ 8 50 2 return_no_pop_op_ptr 8 51 ptr, /* (36) pointer to standard return / no pop operator */ 8 52 2 entry_op_ptr ptr, /* (38) pointer to standard entry operator */ 8 53 2 trans_op_tv_ptr ptr, /* (40) pointer to translator operator ptrs */ 8 54 2 isot_ptr ptr, /* (42) pointer to ISOT */ 8 55 2 sct_ptr ptr, /* (44) pointer to System Condition Table */ 8 56 2 unwinder_ptr ptr, /* (46) pointer to unwinder for current ring */ 8 57 2 sys_link_info_ptr ptr, /* (48) pointer to *system link name table */ 8 58 2 rnt_ptr ptr, /* (50) pointer to Reference Name Table */ 8 59 2 ect_ptr ptr, /* (52) pointer to event channel table */ 8 60 2 assign_linkage_ptr ptr, /* (54) pointer to storage for (obsolete) hcs_$assign_linkage */ 8 61 2 heap_header_ptr ptr, /* (56) pointer to the heap header for this ring */ 8 62 2 trace, 8 63 3 frames, 8 64 4 count fixed bin, /* (58) number of trace frames */ 8 65 4 top_ptr ptr unal, /* (59) pointer to last trace frame */ 8 66 3 in_trace bit (36) aligned, /* (60) trace antirecursion flag */ 8 67 2 pad2 bit (36), /* (61) */ 8 68 2 pad5 pointer; /* (62) pointer to future stuff */ 8 69 8 70 /* The following offset refers to a table within the pl1 operator table. */ 8 71 8 72 dcl tv_offset fixed bin init (361) internal static; 8 73 /* (551) octal */ 8 74 8 75 8 76 /* The following constants are offsets within this transfer vector table. */ 8 77 8 78 dcl ( 8 79 call_offset fixed bin init (271), 8 80 push_offset fixed bin init (272), 8 81 return_offset fixed bin init (273), 8 82 return_no_pop_offset fixed bin init (274), 8 83 entry_offset fixed bin init (275) 8 84 ) internal static; 8 85 8 86 8 87 8 88 8 89 8 90 /* The following declaration is an overlay of the whole stack header. Procedures which 8 91* move the whole stack header should use this overlay. 8 92**/ 8 93 8 94 dcl stack_header_overlay (size (stack_header)) fixed bin based (sb); 8 95 8 96 8 97 8 98 /* END INCLUDE FILE ... stack_header.incl.pl1 */ 1606 1607 /* BEGIN INCLUDE FILE ... stack_frame.incl.pl1 ... */ 9 2 9 3 /* format: off */ 9 4 9 5 /* Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr and pl1_ps_ptr */ 9 6 /* Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager bit & main_proc bit */ 9 7 /* Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr */ 9 8 /* Modified: 03/01/84, S. Herbst - Added RETURN_PTR_MASK */ 9 9 9 10 9 11 /****^ HISTORY COMMENTS: 9 12* 1) change(86-09-15,Kissel), approve(86-09-15,MCR7473), 9 13* audit(86-10-01,Fawcett), install(86-11-03,MR12.0-1206): 9 14* Modified to add constants for the translator_id field in the stack_frame 9 15* structure. 9 16* END HISTORY COMMENTS */ 9 17 9 18 9 19 dcl RETURN_PTR_MASK bit (72) int static options (constant) /* mask to be AND'd with stack_frame.return_ptr */ 9 20 init ("777777777777777777000000"b3); /* when copying, to ignore bits that a call fills */ 9 21 /* with indicators (nonzero for Fortran hexfp caller) */ 9 22 /* say: unspec(ptr) = unspec(stack_frame.return_ptr) & RETURN_PTR_MASK; */ 9 23 9 24 dcl TRANSLATOR_ID_PL1V2 bit (18) internal static options (constant) init ("000000"b3); 9 25 dcl TRANSLATOR_ID_ALM bit (18) internal static options (constant) init ("000001"b3); 9 26 dcl TRANSLATOR_ID_PL1V1 bit (18) internal static options (constant) init ("000002"b3); 9 27 dcl TRANSLATOR_ID_SIGNAL_CALLER bit (18) internal static options (constant) init ("000003"b3); 9 28 dcl TRANSLATOR_ID_SIGNALLER bit (18) internal static options (constant) init ("000004"b3); 9 29 9 30 9 31 dcl sp pointer; /* pointer to beginning of stack frame */ 9 32 9 33 dcl stack_frame_min_length fixed bin static init(48); 9 34 9 35 9 36 dcl 1 stack_frame based(sp) aligned, 9 37 2 pointer_registers(0 : 7) ptr, 9 38 2 prev_sp pointer, 9 39 2 next_sp pointer, 9 40 2 return_ptr pointer, 9 41 2 entry_ptr pointer, 9 42 2 operator_and_lp_ptr ptr, /* serves as both */ 9 43 2 arg_ptr pointer, 9 44 2 static_ptr ptr unaligned, 9 45 2 support_ptr ptr unal, /* only used by fortran I/O */ 9 46 2 on_unit_relp1 bit(18) unaligned, 9 47 2 on_unit_relp2 bit(18) unaligned, 9 48 2 translator_id bit(18) unaligned, /* Translator ID (see constants above) 9 49* 0 => PL/I version II 9 50* 1 => ALM 9 51* 2 => PL/I version I 9 52* 3 => signal caller frame 9 53* 4 => signaller frame */ 9 54 2 operator_return_offset bit(18) unaligned, 9 55 2 x(0: 7) bit(18) unaligned, /* index registers */ 9 56 2 a bit(36), /* accumulator */ 9 57 2 q bit(36), /* q-register */ 9 58 2 e bit(36), /* exponent */ 9 59 2 timer bit(27) unaligned, /* timer */ 9 60 2 pad bit(6) unaligned, 9 61 2 ring_alarm_reg bit(3) unaligned; 9 62 9 63 9 64 dcl 1 stack_frame_flags based(sp) aligned, 9 65 2 pad(0 : 7) bit(72), /* skip over prs */ 9 66 2 xx0 bit(22) unal, 9 67 2 main_proc bit(1) unal, /* on if frame belongs to a main procedure */ 9 68 2 run_unit_manager bit(1) unal, /* on if frame belongs to run unit manager */ 9 69 2 signal bit(1) unal, /* on if frame belongs to logical signal_ */ 9 70 2 crawl_out bit(1) unal, /* on if this is a signal caller frame */ 9 71 2 signaller bit(1) unal, /* on if next frame is signaller's */ 9 72 2 link_trap bit(1) unal, /* on if this frame was made by the linker */ 9 73 2 support bit(1) unal, /* on if frame belongs to a support proc */ 9 74 2 condition bit(1) unal, /* on if condition established in this frame */ 9 75 2 xx0a bit(6) unal, 9 76 2 xx1 fixed bin, 9 77 2 xx2 fixed bin, 9 78 2 xx3 bit(25) unal, 9 79 2 old_crawl_out bit (1) unal, /* on if this is a signal caller frame */ 9 80 2 old_signaller bit(1) unal, /* on if next frame is signaller's */ 9 81 2 xx3a bit(9) unaligned, 9 82 2 xx4(9) bit(72) aligned, 9 83 2 v2_pl1_op_ret_base ptr, /* When a V2 PL/I program calls an operator the 9 84* * operator puts a pointer to the base of 9 85* * the calling procedure here. (text base ptr) */ 9 86 2 xx5 bit(72) aligned, 9 87 2 pl1_ps_ptr ptr; /* ptr to ps for this frame; also used by fio. */ 9 88 9 89 /* format: on */ 9 90 9 91 /* END INCLUDE FILE ... stack_frame.incl.pl1 */ 1607 1608 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 10 2* 10 3* James R. Davis 10 May 79 */ 10 4 10 5 10 6 10 7 /****^ HISTORY COMMENTS: 10 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 10 9* audit(86-07-15,Schroth): 10 10* added command_name_arglist declaration to allow the storage of the 10 11* command name given to the command processor 10 12* END HISTORY COMMENTS */ 10 13 10 14 dcl 1 arg_list aligned based, 10 15 2 header, 10 16 3 arg_count fixed bin (17) unsigned unal, 10 17 3 pad1 bit (1) unal, 10 18 3 call_type fixed bin (18) unsigned unal, 10 19 3 desc_count fixed bin (17) unsigned unal, 10 20 3 pad2 bit (19) unal, 10 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 10 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 10 23 10 24 10 25 dcl 1 command_name_arglist aligned based, 10 26 2 header, 10 27 3 arg_count fixed bin (17) unsigned unal, 10 28 3 pad1 bit (1) unal, 10 29 3 call_type fixed bin (18) unsigned unal, 10 30 3 desc_count fixed bin (17) unsigned unal, 10 31 3 mbz bit(1) unal, 10 32 3 has_command_name bit(1) unal, 10 33 3 pad2 bit (17) unal, 10 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 10 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 10 36 2 name, 10 37 3 command_name_ptr pointer, 10 38 3 command_name_length fixed bin (21); 10 39 10 40 10 41 10 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 10 43 2 header, 10 44 3 arg_count fixed bin (17) unsigned unal, 10 45 3 pad1 bit (1) unal, 10 46 3 call_type fixed bin (18) unsigned unal, 10 47 3 desc_count fixed bin (17) unsigned unal, 10 48 3 pad2 bit (19) unal, 10 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 10 50 2 envptr ptr, 10 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 10 52 10 53 10 54 dcl ( 10 55 Quick_call_type init (0), 10 56 Interseg_call_type init (4), 10 57 Envptr_supplied_call_type 10 58 init (8) 10 59 ) fixed bin (18) unsigned unal int static options (constant); 10 60 10 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 10 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 10 63* an argument list of the proper size in the user's stack 10 64* 10 65**/ 10 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 1608 1609 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 11 2 11 3 /* Written 05/04/78 by C. D. Tavares */ 11 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 11 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 11 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 11 7 11 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 11 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 11 10 iox_$close entry (pointer, fixed bin (35)), 11 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 11 12 iox_$delete_record entry (pointer, fixed bin (35)), 11 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 11 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 11 15 iox_$err_not_attached entry options (variable), 11 16 iox_$err_not_closed entry options (variable), 11 17 iox_$err_no_operation entry options (variable), 11 18 iox_$err_not_open entry options (variable), 11 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 11 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 11 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 11 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 11 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 11 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 11 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 11 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 11 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 11 28 iox_$propagate entry (pointer), 11 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 11 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 11 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 11 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 11 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 11 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 11 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 11 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 11 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 11 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 11 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 11 40 11 41 dcl (iox_$user_output, 11 42 iox_$user_input, 11 43 iox_$user_io, 11 44 iox_$error_output) external static pointer; 11 45 11 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 1609 1610 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 12 2 /* format: style3 */ 12 3 12 4 /* These constants are to be used for the flags argument of sub_err_ */ 12 5 /* They are just "string (condition_info_header.action_flags)" */ 12 6 12 7 declare ( 12 8 ACTION_CAN_RESTART init (""b), 12 9 ACTION_CANT_RESTART init ("1"b), 12 10 ACTION_DEFAULT_RESTART 12 11 init ("01"b), 12 12 ACTION_QUIET_RESTART 12 13 init ("001"b), 12 14 ACTION_SUPPORT_SIGNAL 12 15 init ("0001"b) 12 16 ) bit (36) aligned internal static options (constant); 12 17 12 18 /* End include file */ 1610 1611 /* START OF: trace_interface.incl.pl1 * * * * * * * * * * * * * * * * */ 13 2 /* Written: May 1984 by Jeffrey D. Ives. */ 13 3 /* format: style2,^inddcls,^indnoniterdo,^inditerdo,dclind5,idind35 */ 13 4 13 5 /* IDENTIFICATION */ 13 6 13 7 dcl trace_$me entry () returns (char (32)); 13 8 dcl trace_$version entry () returns (char (32)); 13 9 13 10 /* TRANSACTIONS */ 13 11 13 12 dcl trace_$transaction_begin entry (fixed bin (71)) returns (bit aligned); 13 13 dcl trace_$transaction_begin_force entry (fixed bin (71)); 13 14 dcl trace_$transaction_end entry (fixed bin (71)) returns (bit aligned); 13 15 13 16 /* ACTIONS */ 13 17 13 18 dcl trace_$update_default_parms entry () returns (bit aligned); 13 19 dcl trace_$update_global_parms entry () returns (bit aligned); 13 20 dcl trace_$add_specified_eps entry (fixed bin, fixed bin); 13 21 dcl trace_$add_specified_locs entry (fixed bin, fixed bin); 13 22 dcl trace_$remove_specified_eps entry (fixed bin); 13 23 dcl trace_$remove_specified_locs entry (fixed bin); 13 24 dcl trace_$turn_on_specified_eps entry (fixed bin); 13 25 dcl trace_$turn_off_specified_eps entry (fixed bin); 13 26 13 27 /* CONVERSION */ 13 28 13 29 dcl trace_$cv_inout_to_bits entry (char (8) aligned) returns (bit (2) aligned); 13 30 dcl trace_$cv_bits_to_inout entry (bit (2) aligned) returns (char (8) aligned); 13 31 dcl trace_$cv_n_to_number entry (char (16)) returns (fixed bin (34)); 13 32 dcl trace_$cv_onoff_to_bit entry (char (8) aligned) returns (bit aligned); 13 33 dcl trace_$cv_bit_to_onoff entry (bit aligned) returns (char (8) aligned); 13 34 dcl trace_$cv_entry_name_to_spp entry (char (256) var, ptr) returns (1 like stop_proc aligned); 13 35 dcl trace_$cv_file_path_to_osw entry (char (256) var, ptr) returns (1 like output_switch aligned); 13 36 dcl trace_$cv_stream_name_to_osw entry (char (32) var) returns (1 like output_switch aligned); 13 37 13 38 /* METERS */ 13 39 13 40 dcl trace_$entrypoint_counts entry (fixed bin) returns (1 aligned like counts); 13 41 dcl trace_$entrypoint_global_meters entry (fixed bin) returns (1 like meters aligned); 13 42 dcl trace_$entrypoint_local_meters entry (fixed bin) returns (1 like meters aligned); 13 43 dcl trace_$metered entry () returns (1 like meters aligned); 13 44 dcl trace_$removed entry () returns (1 like meters aligned); 13 45 dcl trace_$reset_meters entry (); 13 46 13 47 /* ENTRYPOINTS */ 13 48 13 49 dcl trace_$entrypoint_index entry (ptr unal) returns (fixed bin); 13 50 dcl trace_$entrypoint_name entry (fixed bin) returns (char (65) var); 13 51 dcl trace_$entrypoint_ptr entry (fixed bin) returns (ptr); 13 52 dcl trace_$entrypoint_seg_path entry (fixed bin) returns (char (256) var); 13 53 dcl trace_$entrypoint_status entry (fixed bin) returns (char (32) var); 13 54 dcl trace_$function entry (fixed bin) returns (bit aligned); 13 55 dcl trace_$num_entrypoints entry () returns (fixed bin); 13 56 dcl trace_$num_specified_entrypoints entry () returns (fixed bin); 13 57 dcl trace_$specified_entrypoint_index entry (fixed bin) returns (fixed bin); 13 58 dcl trace_$specify_entrypoints entry (char (256) var, ptr); 13 59 dcl trace_$translator_id entry (fixed bin) returns (fixed bin); 13 60 13 61 /* LOCATIONS */ 13 62 13 63 dcl trace_$location_ptr entry (fixed bin) returns (ptr); 13 64 dcl trace_$location_seg_path entry (fixed bin) returns (char (256) var); 13 65 dcl trace_$location_values entry (fixed bin) returns (1 aligned like watch_values); 13 66 dcl trace_$num_locations entry () returns (fixed bin); 13 67 dcl trace_$num_specified_locations entry () returns (fixed bin); 13 68 dcl trace_$specified_location_index entry (fixed bin) returns (fixed bin); 13 69 dcl trace_$specify_locations entry (char (256) var); 13 70 dcl trace_$specify_changed_locations entry (); 13 71 13 72 /* EVENT BUFFER */ 13 73 13 74 dcl trace_$buffer_counts entry (fixed bin (34), fixed bin (34)); 13 75 dcl trace_$buffer_event entry (fixed bin (34), fixed bin, char (2), ptr unal, 1 like counts aligned, 1 like meters aligned); 13 76 dcl trace_$buffer_event_header entry (fixed bin (34)) returns (char (256) var); 13 77 dcl trace_$buffer_event_string entry (fixed bin (34)) returns (char (256) var); 13 78 dcl trace_$buffer_ptr entry () returns (ptr unal); 13 79 13 80 /* TRACE PARAMETERS */ 13 81 13 82 dcl trace_$arguments entry (fixed bin) returns (bit (2) aligned); 13 83 dcl trace_$set_arguments entry (bit (2) aligned); 13 84 dcl trace_$call entry (fixed bin) returns (char (256) var); 13 85 dcl trace_$set_call entry (char (256) var); 13 86 dcl trace_$every entry (fixed bin) returns (fixed bin (34)); 13 87 dcl trace_$set_every entry (fixed bin (34)); 13 88 dcl trace_$first entry (fixed bin) returns (fixed bin (34)); 13 89 dcl trace_$set_first entry (fixed bin (34)); 13 90 dcl trace_$high entry (fixed bin) returns (fixed bin (34)); 13 91 dcl trace_$set_high entry (fixed bin (34)); 13 92 dcl trace_$last entry (fixed bin) returns (fixed bin (34)); 13 93 dcl trace_$set_last entry (fixed bin (34)); 13 94 dcl trace_$low entry (fixed bin) returns (fixed bin (34)); 13 95 dcl trace_$set_low entry (fixed bin (34)); 13 96 dcl trace_$new_high entry (fixed bin) returns (bit aligned); 13 97 dcl trace_$set_new_high entry (bit aligned); 13 98 dcl trace_$parms_string entry (fixed bin, bit aligned) returns (char (256) var); 13 99 dcl trace_$parms_specified entry () returns (bit aligned); 13 100 dcl trace_$stop entry (fixed bin) returns (bit (2) aligned); 13 101 dcl trace_$set_stop entry (bit (2) aligned); 13 102 dcl trace_$stop_every entry (fixed bin) returns (fixed bin (34)); 13 103 dcl trace_$set_stop_every entry (fixed bin (34)); 13 104 dcl trace_$stop_low entry (fixed bin) returns (fixed bin (34)); 13 105 dcl trace_$set_stop_low entry (fixed bin (34)); 13 106 dcl trace_$trace entry (fixed bin) returns (bit (2) aligned); 13 107 dcl trace_$set_trace entry (bit (2) aligned); 13 108 13 109 /* GLOBAL PARAMETERS */ 13 110 13 111 dcl trace_$alm entry () returns (bit aligned); 13 112 dcl trace_$set_alm entry (bit aligned); 13 113 dcl trace_$automatic entry () returns (bit aligned); 13 114 dcl trace_$set_automatic entry (bit aligned); 13 115 dcl trace_$buffer entry () returns (bit aligned); 13 116 dcl trace_$set_buffer entry (bit aligned); 13 117 dcl trace_$calibrate entry () returns (bit aligned); 13 118 dcl trace_$set_calibrate entry (bit aligned); 13 119 dcl trace_$compensation entry (fixed bin) returns (1 aligned like compensation); 13 120 dcl trace_$set_compensation entry (fixed bin, 1 aligned like compensation); 13 121 dcl trace_$enabled entry () returns (bit aligned); 13 122 dcl trace_$set_enabled entry (bit aligned); 13 123 dcl trace_$global_parms_string entry () returns (char (256) var); 13 124 dcl trace_$long entry () returns (bit aligned); 13 125 dcl trace_$set_long entry (bit aligned); 13 126 dcl trace_$meter entry () returns (bit aligned); 13 127 dcl trace_$set_meter entry (bit aligned); 13 128 dcl trace_$output_switch entry () returns (1 like output_switch aligned); 13 129 dcl trace_$set_output_switch entry (1 like output_switch aligned); 13 130 dcl trace_$signals entry () returns (bit aligned); 13 131 dcl trace_$set_signals entry (bit aligned); 13 132 dcl trace_$stop_proc entry () returns (1 like stop_proc); 13 133 dcl trace_$set_stop_proc entry (1 like stop_proc); 13 134 dcl trace_$stop_routine entry () returns (entry); 13 135 dcl trace_$set_stop_routine entry (entry); 13 136 dcl trace_$trace_routine entry () returns (entry); 13 137 dcl trace_$set_trace_routine entry (entry); 13 138 dcl trace_$loud entry () returns (bit aligned); 13 139 dcl trace_$set_loud entry (bit aligned); 13 140 13 141 /* MISCELLANEOUS */ 13 142 13 143 dcl trace_$in_trace entry () returns (bit aligned); 13 144 13 145 /* STRUCTURES AND CONSTANTS */ 13 146 13 147 dcl 1 watch_values aligned, 13 148 2 old bit (36), 13 149 2 new bit (36); 13 150 13 151 dcl 1 counts aligned, 13 152 2 calls fixed bin (53), /* total number of calls */ 13 153 2 level fixed bin (34), /* current recursion level */ 13 154 2 max_level fixed bin (34); /* max ever recursion level */ 13 155 13 156 13 157 dcl 1 meters aligned, 13 158 2 real_time fixed bin (53), /* The total amount of real time metered. */ 13 159 2 vcpu_time fixed bin (53), /* The total amount of virtual cpu time metered. */ 13 160 2 page_faults fixed bin (34); /* The total number of page faults metered. */ 13 161 13 162 dcl 1 output_switch aligned based, 13 163 2 iocb_ptr ptr, 13 164 2 stream_name char (32) var, 13 165 2 file_path char (256) var; 13 166 13 167 dcl 1 stop_proc aligned based, 13 168 2 entry_value entry (), 13 169 2 entry_name char (256) var; 13 170 13 171 dcl 1 compensation aligned, 13 172 2 real_time fixed bin (53), 13 173 2 vcpu_time fixed bin (53); 13 174 13 175 dcl ( 13 176 COMPENSATION_FROM_ENTRY_TO_ENTRY init (1), 13 177 COMPENSATION_FROM_ENTRY_TO_RETURN init (2), 13 178 COMPENSATION_FROM_RETURN_TO_ENTRY init (3), 13 179 COMPENSATION_FROM_RETURN_TO_RETURN init (4) 13 180 ) static options (constant); 13 181 13 182 /* END OF: trace_interface.incl.pl1 * * * * * * * * * * * * * * * * */ 1611 1612 /* format: on */ 1613 1614 end cpm_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/86 1031.4 cpm_.pl1 >special_ldd>install>MR12.0-1206>cpm_.pl1 1599 1 11/03/86 1113.1 cpm_data_.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_data_.incl.pl1 1600 2 11/03/86 1113.3 cpm_internal_data.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_internal_data.incl.pl1 1601 3 11/03/86 1112.9 cpm_control_point_data.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_control_point_data.incl.pl1 1602 4 11/03/86 1114.7 cpm_ctrl_pt_meters.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_ctrl_pt_meters.incl.pl1 1603 5 10/26/76 1333.6 process_usage.incl.pl1 >ldd>include>process_usage.incl.pl1 1604 6 11/03/86 1113.1 cpm_create_ctrl_pt_info.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_create_ctrl_pt_info.incl.pl1 1605 7 11/03/86 1113.3 cpm_generate_call_flags.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_generate_call_flags.incl.pl1 1606 8 11/04/86 1324.3 stack_header.incl.pl1 >special_ldd>install>MR12.0-1206>stack_header.incl.pl1 1607 9 11/03/86 1114.7 stack_frame.incl.pl1 >special_ldd>install>MR12.0-1206>stack_frame.incl.pl1 1608 10 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 1609 11 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 1610 12 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 1611 13 10/23/84 1349.5 trace_interface.incl.pl1 >ldd>include>trace_interface.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. ACTION_CANT_RESTART 000022 constant bit(36) initial dcl 12-7 set ref 245* 419* 728* CONTROL_POINT_METERS_ARGUMENT_VERSION_1 000002 constant char(8) initial unaligned dcl 4-37 ref 672 704 CPM_BLOCKED constant fixed bin(17,0) initial dcl 3-60 set ref 308 329* 348 951 CPM_DESTROYED constant fixed bin(17,0) initial dcl 3-60 set ref 261* 1097 1152 1165 CPM_GC_FORCE_READY constant bit(36) initial dcl 7-13 ref 427 434 508 CPM_GC_PUSH_PREFERRED constant bit(36) initial dcl 7-13 ref 434 CPM_READY constant fixed bin(17,0) initial dcl 3-60 set ref 281* 308 329 350* 354 512 516* 527 1157 1162 1207 1227 CPM_STOPPED constant fixed bin(17,0) initial dcl 3-60 set ref 279 310* 562 594 1152 1324 CREATE_CONTROL_POINT_INFO_VERSION_1 000000 constant char(8) initial unaligned dcl 6-41 ref 1303 Interseg_call_type constant fixed bin(18,0) initial unsigned unaligned dcl 10-54 ref 476 1567 unaligned dcl 1532 in procedure "push_call_frame" set ref 1578* arg_list based structure level 1 dcl 10-14 arg_ptr 32 based pointer level 2 dcl 9-36 set ref 1563* arg_ptrs 64 based pointer array level 3 in structure "call_frame" dcl 1532 in procedure "push_call_frame" set ref 1569* 1570* 1571* arg_ptrs 74 based pointer array level 3 in structure "call_frame" dcl 1532 in procedure "push_call_frame" set ref 1579* arg_ptrs 2 000110 automatic pointer array level 2 in structure "userproc_arg_list" dcl 75 in procedure "cpm_" set ref 478* arguments 50 based structure level 2 dcl 1532 baseno builtin function dcl 163 ref 1320 baseptr builtin function dcl 163 ref 748 binary builtin function dcl 163 ref 746 1169 1397 bit builtin function dcl 163 ref 1321 bool builtin function dcl 163 ref 831 836 841 846 851 856 861 call_frame based structure level 1 dcl 1532 set ref 1586 1586 call_type 0(18) 000110 automatic fixed bin(18,0) level 3 in structure "userproc_arg_list" packed unsigned unaligned dcl 75 in procedure "cpm_" set ref 476* call_type 62(18) based fixed bin(18,0) level 4 in structure "call_frame" packed unsigned unaligned dcl 1532 in procedure "push_call_frame" set ref 1567* call_type 72(18) based fixed bin(18,0) level 4 in structure "call_frame" packed unsigned unaligned dcl 1532 in procedure "push_call_frame" set ref 1577* callee 52 based entry variable level 3 dcl 1532 set ref 1560* 1570 callee_arg_list 72 based structure level 2 dcl 1532 set ref 1573 callee_arg_list_ptr 56 based pointer level 3 dcl 1532 set ref 1571 1573* callee_info_ptr 60 based pointer level 3 dcl 1532 set ref 1561* 1579 caller_arg_list 62 based structure level 2 dcl 1532 set ref 1563 caller_info 76 based bit level 2 dcl 1532 set ref 1558* 1559 caller_info_ptr 50 based pointer level 3 dcl 1532 set ref 1559* 1569 ccpi_ptr 000142 automatic pointer dcl 6-46 set ref 181* 197 197 197 197 1303 1326 1331 1338 1338 1342 children 24 based structure level 2 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" children 24 based structure level 2 in structure "p_parent_control_point_data" dcl 1453 in procedure "destroy_control_point" children 24 based structure level 2 in structure "p_control_point_data" dcl 1080 in procedure "gc_worker" children 24 based structure level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1335* cl_intermediary 62 based entry variable level 3 in structure "current_control_point_data" dcl 57 in procedure "cpm_" set ref 466* 490* 1012* 1049* cl_intermediary 62 based entry variable level 3 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1349* cleanup 000130 stack reference condition dcl 167 ref 189 clock builtin function dcl 163 ref 1119 1321 code 000100 automatic fixed bin(35,0) dcl 1301 set ref 1313* 1314 1314* code_ptr based pointer level 2 dcl 1428 set ref 1432* codeptr builtin function dcl 163 ref 243 243 1432 1555 comment 2 based char(64) level 3 in structure "create_control_point_info" packed unaligned dcl 6-13 in procedure "cpm_" ref 1342 comment 40 based char(64) level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1342* compensation 000164 automatic structure level 1 dcl 13-171 continue_to_signal_ 000060 constant entry external dcl 113 ref 813 control_point_data based structure level 1 dcl 3-17 set ref 1308 control_point_meters based structure level 1 dcl 4-19 control_point_meters_argument based structure level 1 dcl 4-32 counts 000152 automatic structure level 1 dcl 13-151 cpd_1 based structure level 1 dcl 914 cpd_2 based structure level 1 dcl 915 cpd_ptr 000136 automatic pointer dcl 3-55 set ref 188* 191 191* 200 208 208* 222 241* 243 243 256* 279 299 308 308 324* 329 348 354 388 406 454 514 515* 517* 529* 562 571 594 610 654* 686 748* 749 955* 963* 997 1017* 1028 1030 1147 1152 1157 1160 1162 1165 1167 1167 1168 1190* 1205 1207 1218 1220* 1225 1227 1248 1253 1259 1262 1264 1266 1268 1269 1282 1282 1284 1284 1286 1286 1288 1288 1290 1308* 1309 1309 1309 1313 1320 1322 1324 1326 1327 1329 1331 1333 1335 1335 1335 1338 1340 1342 1344 1345 1347 1349 1352 1352 1353 1353 1356 1366 1366 1367 1367 1367 1367 1371 1371 1372 1372 1374 1379 1384 1386 1386 1387 1390 1390 1391 1391 1394 1395 1395 1433 1552 1581 1584 cpd_ptr_stack 2 000176 external static pointer array level 2 dcl 2-36 set ref 600 618* 654 cpm_alm_$call_generate_call 000064 constant entry external dcl 114 ref 505 505 cpm_alm_$call_overseer 000062 constant entry external dcl 114 ref 197 197 cpm_alm_$switch_stacks 000066 constant entry external dcl 118 ref 1030 cpm_data_$gc_control_points 000172 external static bit(1) dcl 2-27 set ref 967 985 1069* 1170* cpm_data_$global_meters 000206 external static structure level 1 dcl 2-54 cpm_data_$n_control_points 000164 external static fixed bin(17,0) dcl 1-13 set ref 1171* 1171 1398* 1398 cpm_data_$preferred_control_point 000174 external static pointer dcl 2-33 set ref 548 548 571 610 618 951 951 951 955 1216 1218* cpm_data_$preferred_control_point_stack 000176 external static structure level 1 dcl 2-36 cpm_data_$previous_control_point 000202 external static pointer dcl 2-47 set ref 468* 486* 1023* 1043* cpm_data_$ready_queue 000200 external static structure level 1 dcl 2-42 cpm_data_$root_control_point_data 000170 external static structure level 1 dcl 2-24 set ref 222 299 1067 1067 1331 cpm_data_$subsystem_name 000166 external static char(32) unaligned dcl 2-18 set ref 245* 419* 728* 1313* 1492* cpm_data_$valid_control_points 000204 external static structure level 1 dcl 2-50 cpm_data_ptr 4 based pointer level 2 dcl 8-26 set ref 178 241 256 725 748 1333 1371* cpm_enabled 13(18) based bit(18) level 2 packed unaligned dcl 8-26 set ref 175 725 1372* 1372 cpm_et_$already_started 000010 external static fixed bin(35,0) dcl 87 ref 285 cpm_et_$already_stopped 000012 external static fixed bin(35,0) dcl 87 ref 314 cpm_et_$cant_destroy_root 000014 external static fixed bin(35,0) dcl 87 set ref 224 245* cpm_et_$cant_stop_root 000016 external static fixed bin(35,0) dcl 87 ref 301 cpm_et_$cant_wakeup_when_stopped 000020 external static fixed bin(35,0) dcl 87 ref 357 cpm_et_$control_point_not_found 000022 external static fixed bin(35,0) dcl 87 ref 754 cpm_et_$preferred_cant_be_stopped 000024 external static fixed bin(35,0) dcl 87 ref 564 596 cpm_et_$preferred_stack_overflow 000026 external static fixed bin(35,0) dcl 87 ref 603 cpm_et_$wakeup_ignored 000030 external static fixed bin(35,0) dcl 87 ref 354 cpm_initialize_ 000070 constant entry external dcl 120 ref 177 cpm_overseer_$cl_intermediary 000072 constant entry external dcl 121 ref 1349 cpm_overseer_$generate_call 000074 constant entry external dcl 123 ref 480 cpma_ptr 000140 automatic pointer dcl 4-43 set ref 671* 672 686 687 687 703* 704 710 711 711 create_control_point_info based structure level 1 dcl 6-13 set ref 197 197 cu_$get_cl_intermediary 000076 constant entry external dcl 125 ref 466 1012 cu_$set_cl_intermediary 000100 constant entry external dcl 125 ref 490 1049 current_control_point_data based structure level 1 dcl 57 current_cpd_ptr 000100 automatic pointer dcl 59 set ref 178* 256* 324 454 463 465 466 468 468* 486 486* 490 493 510 512 515 529 683 725* 828 831 831 836 836 841 841 846 846 851 851 856 856 861 861 875 877 894 896 947 951 970 981 988 997 1008 1010 1012 1017* 1023 1043* 1049 1053 current_privileges 000240 automatic bit(36) dcl 824 set ref 826* 828 831 836 841 846 851 856 861 currentsize builtin function dcl 163 ref 1367 1586 1586 decoded_control_point_id 000106 automatic structure level 1 dcl 70 set ref 744* 1168* 1322 destroy 12 based label variable level 2 dcl 3-17 set ref 243 243 1379* entry 22 based entry variable level 4 dcl 6-13 set ref 197* environment_ptr 2 based pointer level 2 dcl 1428 set ref 1433* error_output 6 based pointer level 2 dcl 64 set ref 882* 901* error_table_$badcall 000032 external static fixed bin(35,0) dcl 87 set ref 419* error_table_$out_of_sequence 000034 external static fixed bin(35,0) dcl 87 set ref 728* error_table_$unimplemented_version 000036 external static fixed bin(35,0) dcl 87 set ref 674 706 1303* first 000200 external static pointer level 2 dcl 2-42 set ref 949 958 963 1246 1251 1259* 1282* first_child 24 based pointer level 3 in structure "p_parent_control_point_data" dcl 1453 in procedure "destroy_control_point" set ref 1471 1471* first_child 24 based pointer level 3 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" set ref 1384 1386* first_child 24 based pointer level 3 in structure "p_control_point_data" dcl 1080 in procedure "gc_worker" ref 1091 1097 flags 3 based structure level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" flags 3 based structure level 2 in structure "current_control_point_data" dcl 57 in procedure "cpm_" flags 3 based structure level 2 in structure "cpd_2" dcl 915 in procedure "different_switches" flags 3 based structure level 2 in structure "cpd_1" dcl 914 in procedure "different_switches" flags 35 based structure level 3 in structure "create_control_point_info" dcl 6-13 in procedure "cpm_" generate_call_flags 000114 automatic bit(36) dcl 79 set ref 427* 434* 441* 480 480 505* 508 get_privileges_ 000102 constant entry external dcl 129 ref 465 826 1010 get_system_free_area_ 000104 constant entry external dcl 130 ref 183 1065 get_temp_segment_ 000106 constant entry external dcl 132 ref 1313 group_id 1 000170 external static bit(36) level 2 in structure "cpm_data_$root_control_point_data" dcl 2-24 in procedure "cpm_" set ref 926 926 group_id 1 based bit(36) level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1353* group_id 1 based bit(36) level 2 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" ref 1353 group_id 1 based bit(36) level 2 in structure "cpd_1" dcl 914 in procedure "different_switches" ref 922 926 group_id 1 based bit(36) level 2 in structure "cpd_2" dcl 915 in procedure "different_switches" ref 922 926 hbound builtin function dcl 163 ref 600 hcs_$get_process_usage 000110 constant entry external dcl 133 ref 1122 hcs_$reset_ips_mask 000112 constant entry external dcl 135 ref 789 hcs_$set_ips_mask 000114 constant entry external dcl 136 ref 766 hcs_$set_stack_ptr 000116 constant entry external dcl 137 ref 1028 header based structure level 2 in structure "arg_list" dcl 10-14 in procedure "cpm_" header based structure level 2 in structure "create_control_point_info" dcl 6-13 in procedure "cpm_" header 72 based structure level 3 in structure "call_frame" dcl 1532 in procedure "push_call_frame" set ref 1576* header 000110 automatic structure level 2 in structure "userproc_arg_list" dcl 75 in procedure "cpm_" set ref 475* header 62 based structure level 3 in structure "call_frame" dcl 1532 in procedure "push_call_frame" set ref 1566* id based bit(36) level 2 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" set ref 1167* id based bit(36) level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 200 548 749 1167* 1168 1322* 1372 id 000170 external static bit(36) level 2 in structure "cpm_data_$root_control_point_data" dcl 2-24 in procedure "cpm_" set ref 1154* independent 35 based bit(1) level 4 packed unaligned dcl 6-13 ref 1331 info_ptr 26 based pointer level 4 dcl 6-13 set ref 197* initproc 22 based structure level 3 dcl 6-13 io_switches based structure level 1 dcl 64 in procedure "cpm_" io_switches 66 based structure level 3 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1352* io_switches 66 based structure level 3 in structure "p_parent_control_point_data" dcl 1453 in procedure "destroy_control_point" io_switches 66 based structure level 3 in structure "cpd_2" dcl 915 in procedure "different_switches" io_switches 66 based structure level 3 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" ref 1352 io_switches 66 based structure level 3 in structure "p_control_point_data" dcl 1451 in procedure "destroy_control_point" io_switches 66 based structure level 3 in structure "cpd_1" dcl 914 in procedure "different_switches" io_switches 66 based structure level 3 in structure "current_control_point_data" dcl 57 in procedure "cpm_" set ref 877 896 io_switches 66 based structure level 3 in structure "a_control_point_data" dcl 1084 in procedure "gc_worker" io_switches 66 000170 external static structure level 3 in structure "cpm_data_$root_control_point_data" dcl 2-24 in procedure "cpm_" set ref 875 894 io_switches 66 based structure level 3 in structure "p_control_point_data" dcl 1080 in procedure "gc_worker" ios_ptr 000102 automatic pointer dcl 65 set ref 875* 877* 879 880 881 882 894* 896* 898 899 900 901 iox_$error_output 000220 external static pointer dcl 11-41 set ref 882* 901* iox_$move_attach 000210 constant entry external dcl 11-8 ref 879 880 881 882 898 899 900 901 iox_$user_input 000214 external static pointer dcl 11-41 set ref 880* 899* iox_$user_io 000216 external static pointer dcl 11-41 set ref 879* 898* iox_$user_output 000212 external static pointer dcl 11-41 set ref 881* 900* ipc_$reassign_call_channels 000120 constant entry external dcl 139 ref 1167 ipc_$wait_for_an_event 000122 constant entry external dcl 141 ref 959 ips_mask 60 based bit(36) level 3 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1344* 1345* ips_mask 60 based bit(36) level 3 in structure "current_control_point_data" dcl 57 in procedure "cpm_" set ref 463* 493 1008* 1053 last 2 000200 external static pointer level 2 dcl 2-42 set ref 1264* 1286* last_child 26 based pointer level 3 in structure "p_parent_control_point_data" dcl 1453 in procedure "destroy_control_point" set ref 1478 1478* last_child 26 based pointer level 3 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" set ref 1390 1391 1395* last_frame_ptr 10 based pointer level 2 dcl 3-17 set ref 1329* 1581 1584* last_meters 22 000206 external static structure level 2 dcl 2-54 length builtin function dcl 163 ref 1372 1558 1559 1586 1586 local_real_time 000332 automatic fixed bin(71,0) dcl 1117 set ref 1119* 1128 1131 local_usage 000314 automatic structure level 1 dcl 1116 set ref 1122 1122 1129 1132 map 000204 external static bit(1) array level 2 packed unaligned dcl 2-50 set ref 746 1169* 1397* mask 000121 automatic bit(36) dcl 85 set ref 185* 258* 276* 305* 326* 345* 368* 450* 462* 463 493* 494* 568* 573* 575* 607* 613* pointer level 2 dcl 9-36 set ref 1586* null builtin function dcl 163 ref 188 191 208 228 228 245 245 419 419 548 728 728 949 951 958 1091 1097 1245 1251 1259 1264 1282 1286 1290 1309 1329 1335 1384 1387 1394 1459 1469 1476 1483 1490 1493 1500 number_can_return 7 based fixed bin(17,0) level 4 dcl 4-32 set ref 687* 711* number_wanted 000314 automatic fixed bin(17,0) level 2 in structure "local_usage" dcl 1116 in procedure "update_meters" set ref 1121* number_wanted 6 based fixed bin(17,0) level 4 in structure "control_point_meters_argument" dcl 4-32 in procedure "cpm_" set ref 687* 711* old_preferred_cpd_ptr 000350 automatic pointer dcl 1202 set ref 1216* 1220 output_switch based structure level 1 dcl 13-162 overhead 000206 external static structure level 2 dcl 2-54 set ref 710 970* 988* p_callee parameter entry variable dcl 1529 ref 1524 1560 p_callee_info_ptr parameter pointer dcl 1530 ref 1524 1561 p_caller parameter entry variable dcl 1527 ref 1524 1555 p_caller_info parameter bit dcl 1528 ref 1524 1558 1558 1559 1586 1586 p_code parameter fixed bin(35,0) dcl 1411 ref 1408 1413 p_control_point_data based structure level 1 dcl 1080 in procedure "gc_worker" p_control_point_data based structure level 1 dcl 1451 in procedure "destroy_control_point" set ref 1499 p_control_point_id parameter bit(36) dcl 742 ref 739 744 749 p_cpd_1_ptr parameter pointer dcl 916 ref 911 919 922 922 926 926 p_cpd_2_ptr parameter pointer dcl 916 ref 911 919 922 922 926 926 p_cpd_ptr parameter pointer dcl 1082 in procedure "gc_worker" set ref 1077 1091 1097 1097 1097* p_cpd_ptr parameter pointer dcl 1449 in procedure "destroy_control_point" set ref 1446 1459 1461 1461 1461 1469 1471 1471 1471 1471 1474 1474 1476 1478 1478 1478 1478 1481 1481 1483 1483 1490 1492 1493 1499 1500* p_entry parameter entry variable dcl 1425 ref 1422 1432 p_entrypoint_name parameter char unaligned dcl 723 set ref 720 728* p_mask parameter bit(36) dcl 764 in procedure "mask_ips_interrupts" set ref 761 766* p_mask parameter bit(36) dcl 787 in procedure "unmask_ips_interrupts" set ref 784 789 789* 789* p_meters parameter structure level 1 dcl 1113 set ref 1110 p_n_schedules parameter fixed bin(17,0) dcl 1114 set ref 1110 1126* 1126 p_new_state parameter fixed bin(17,0) dcl 1145 ref 1142 1147 1152 1152 1160 p_parent_control_point_data based structure level 1 dcl 1453 parent 16 based pointer level 2 in structure "p_control_point_data" dcl 1451 in procedure "destroy_control_point" set ref 1459 1461 1461 1471 1471 1478 1478 1483* parent 16 based pointer level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1167 1309* 1331* 1333* 1352 1353 1366 1384 1386 1390 1391 1395 parent_control_point_data based structure level 1 dcl 61 peers 20 based structure level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1309* 1335* peers 20 based structure level 2 in structure "p_control_point_data" dcl 1451 in procedure "destroy_control_point" set ref 1483* peers 20 based structure level 2 in structure "a_control_point_data" dcl 1084 in procedure "gc_worker" preferred 3 based bit(1) level 3 packed unaligned dcl 3-17 set ref 1152 1205* 1225* 1248 1253 1327* prev_cpd_ptr 000360 automatic pointer dcl 1242 set ref 1245* 1256* 1259 1262 1268 prev_peer 20 based pointer level 3 in structure "p_control_point_data" dcl 1451 in procedure "destroy_control_point" set ref 1469 1474 1478 1481 prev_peer 20 based pointer level 3 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1387* 1391* 1481* prev_ready 30 based pointer level 3 dcl 3-17 set ref 1266* 1268* 1282 1284 1286 1288* 1288 prev_sp 20 based pointer level 2 dcl 9-36 set ref 1581* prior_state 000115 automatic fixed bin(17,0) dcl 80 set ref 510* 527 530* priority 34 based fixed bin(17,0) level 3 in structure "create_control_point_info" dcl 6-13 in procedure "cpm_" ref 1326 priority 4 based fixed bin(17,0) level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1253 1253 1326* privileges 61 based bit(36) level 3 in structure "current_control_point_data" dcl 57 in procedure "cpm_" set ref 465* 828 831 831 836 836 841 841 846 846 851 851 856 856 861 861 1010* privileges 61 based bit(36) level 3 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1347* process_usage based structure level 1 unaligned dcl 5-3 ready_queue 30 based structure level 2 dcl 3-17 set ref 1290* 1335* real_time 24 000206 external static fixed bin(71,0) level 3 in structure "cpm_data_$global_meters" dcl 2-54 in procedure "cpm_" set ref 1128 1131* real_time 2 parameter fixed bin(71,0) level 2 in structure "p_meters" dcl 1113 in procedure "update_meters" set ref 1128* 1128 release_temp_segment_ 000124 constant entry external dcl 143 ref 1492 return_ptr 24 based pointer level 2 dcl 9-36 set ref 1555* saved_environment 60 based structure level 2 in structure "cpd_1" dcl 914 in procedure "different_switches" saved_environment 60 based structure level 2 in structure "a_control_point_data" dcl 1084 in procedure "gc_worker" saved_environment 60 based structure level 2 in structure "cpd_2" dcl 915 in procedure "different_switches" saved_environment 60 based structure level 2 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" saved_environment 60 based structure level 2 in structure "p_parent_control_point_data" dcl 1453 in procedure "destroy_control_point" saved_environment 60 based structure level 2 in structure "p_control_point_data" dcl 1080 in procedure "gc_worker" saved_environment 60 based structure level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" saved_environment 60 based structure level 2 in structure "p_control_point_data" dcl 1451 in procedure "destroy_control_point" saved_environment 60 000170 external static structure level 2 in structure "cpm_data_$root_control_point_data" dcl 2-24 in procedure "cpm_" saved_environment 60 based structure level 2 in structure "current_control_point_data" dcl 57 in procedure "cpm_" sb 000144 automatic pointer dcl 8-24 set ref 1372 1552* 1553 1586 sp 000146 automatic pointer dcl 9-31 set ref 1553* 1555 1556 1558 1559 1559 1560 1561 1563 1563 1566 1567 1568 1569 1569 1570 1570 1571 1571 1573 1573 1576 1577 1578 1579 1579 1581 1584 1586 1586 1586 1586 stack_begin_ptr 22 based pointer level 2 dcl 8-26 set ref 1367* 1433 stack_depth 000176 external static fixed bin(17,0) level 2 dcl 2-36 set ref 600 615 615* 649 651 652* stack_end_ptr 24 based pointer level 2 dcl 8-26 set ref 1367* 1553 1586* stack_frame based structure level 1 dcl 9-36 stack_header based structure level 1 dcl 8-26 set ref 1366* 1366 1367 stack_idx 000120 automatic fixed bin(17,0) dcl 83 set ref 615* 618 651* 652 654 stack_ptr 6 based pointer level 2 in structure "p_control_point_data" dcl 1451 in procedure "destroy_control_point" set ref 1490 1492* 1493* stack_ptr 6 based pointer level 2 in structure "parent_control_point_data" dcl 61 in procedure "cpm_" ref 1366 stack_ptr 6 based pointer level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 1028* 1030* 1309* 1313* 1320 1366 1367 1367 1367 1367 1371 1372 1374 1433 1552 stack_segno 000106 automatic bit(18) level 2 packed unaligned dcl 70 set ref 746 748 1169 1320* 1397 stackbaseptr builtin function dcl 163 ref 175 178 241 256 725 725 1333 state 2 based fixed bin(17,0) level 2 in structure "current_control_point_data" dcl 57 in procedure "cpm_" ref 510 512 state 2 based fixed bin(17,0) level 2 in structure "p_control_point_data" dcl 1080 in procedure "gc_worker" ref 1097 state 2 based fixed bin(17,0) level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 279 308 308 329 348 354 562 594 951 1147 1157 1160* 1162 1165 1207 1227 1324* stop_proc based structure level 1 dcl 13-167 string builtin function dcl 163 set ref 744* 1168* 1322 sub_err_ 000126 constant entry external dcl 145 ref 245 419 728 substr builtin function dcl 163 set ref 789 1321 1345* 1372 swapped_switches 3(01) based bit(1) level 3 in structure "current_control_point_data" packed unaligned dcl 57 in procedure "cpm_" ref 468 486 875 894 swapped_switches 3(01) based bit(1) level 3 in structure "cpd_1" packed unaligned dcl 914 in procedure "different_switches" ref 919 922 926 swapped_switches 3(01) based bit(1) level 3 in structure "cpd_2" packed unaligned dcl 915 in procedure "different_switches" ref 919 922 926 sys_info$all_valid_ips_mask 000040 external static bit(36) dcl 102 ref 1344 sys_info$comm_privilege 000042 external static bit(36) dcl 102 ref 831 831 sys_info$dir_privilege 000044 external static bit(36) dcl 102 ref 836 836 sys_info$ipc_privilege 000046 external static bit(36) dcl 102 ref 841 841 sys_info$rcp_privilege 000050 external static bit(36) dcl 102 ref 846 846 sys_info$ring1_privilege 000052 external static bit(36) dcl 102 ref 851 851 sys_info$seg_privilege 000054 external static bit(36) dcl 102 ref 856 856 sys_info$soos_privilege 000056 external static bit(36) dcl 102 ref 861 861 system_area based area(1024) dcl 67 ref 1308 1499 system_area_ptr 000104 automatic pointer dcl 68 set ref 183* 1065* 1308 1499 system_privilege_$comm_priv_off 000132 constant entry external dcl 146 ref 834 system_privilege_$comm_priv_on 000130 constant entry external dcl 146 ref 831 system_privilege_$dir_priv_off 000136 constant entry external dcl 146 ref 839 system_privilege_$dir_priv_on 000134 constant entry external dcl 146 ref 836 system_privilege_$ipc_priv_off 000142 constant entry external dcl 146 ref 844 system_privilege_$ipc_priv_on 000140 constant entry external dcl 146 ref 841 system_privilege_$rcp_priv_off 000146 constant entry external dcl 146 ref 849 system_privilege_$rcp_priv_on 000144 constant entry external dcl 146 ref 846 system_privilege_$ring1_priv_off 000152 constant entry external dcl 146 ref 854 system_privilege_$ring1_priv_on 000150 constant entry external dcl 146 ref 851 system_privilege_$seg_priv_off 000156 constant entry external dcl 146 ref 859 system_privilege_$seg_priv_on 000154 constant entry external dcl 146 ref 856 system_privilege_$soos_priv_off 000162 constant entry external dcl 146 ref 864 system_privilege_$soos_priv_on 000160 constant entry external dcl 146 ref 861 target_cpd_ptr 000116 automatic pointer dcl 81 set ref 514* 517 trace 72 based structure level 2 dcl 8-26 set ref 1374* trace_$transaction_begin 000222 constant entry external dcl 13-12 ref 472 1025 1363 trace_$transaction_end 000224 constant entry external dcl 13-14 ref 483 1037 1376 translator_id 37 based bit(18) level 2 packed unaligned dcl 9-36 set ref 1556* unique_bits 0(18) 000106 automatic bit(18) level 2 packed unaligned dcl 70 set ref 1321* unspec builtin function dcl 163 set ref 197 197 475* 1374* 1566* 1576* usage 4 parameter structure level 2 in structure "p_meters" dcl 1113 in procedure "update_meters" set ref 1129* 1129 usage 26 000206 external static structure level 3 in structure "cpm_data_$global_meters" dcl 2-54 in procedure "cpm_" set ref 1129 1132* usage 6 based structure level 3 in structure "control_point_meters_argument" dcl 4-32 in procedure "cpm_" user_cl_intermediary 30 based entry variable level 3 in structure "create_control_point_info" dcl 6-13 in procedure "cpm_" ref 1338 user_cl_intermediary 34 based entry variable level 2 in structure "control_point_data" dcl 3-17 in procedure "cpm_" set ref 388 406* 1338* 1340* user_cl_intermediary_given 35(03) based bit(1) level 4 packed unaligned dcl 6-13 ref 1338 user_input 2 based pointer level 2 dcl 64 set ref 880* 899* user_io based pointer level 2 dcl 64 set ref 879* 898* user_io_attach_desc_length 37 based fixed bin(21,0) level 3 dcl 6-13 ref 197 197 user_output 4 based pointer level 2 dcl 64 set ref 881* 900* userproc_arg_list 000110 automatic structure level 1 dcl 75 set ref 480 480 version based char(8) level 2 in structure "control_point_meters_argument" packed unaligned dcl 4-32 in procedure "cpm_" ref 672 704 version based char(8) level 3 in structure "create_control_point_info" packed unaligned dcl 6-13 in procedure "cpm_" ref 1303 watch_values 000150 automatic structure level 1 dcl 13-147 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 12-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 12-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 12-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 12-7 COMPENSATION_FROM_ENTRY_TO_ENTRY internal static fixed bin(17,0) initial dcl 13-175 COMPENSATION_FROM_ENTRY_TO_RETURN internal static fixed bin(17,0) initial dcl 13-175 COMPENSATION_FROM_RETURN_TO_ENTRY internal static fixed bin(17,0) initial dcl 13-175 COMPENSATION_FROM_RETURN_TO_RETURN internal static fixed bin(17,0) initial dcl 13-175 Envptr_supplied_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 10-54 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 10-54 RETURN_PTR_MASK internal static bit(72) initial unaligned dcl 9-19 TRANSLATOR_ID_PL1V1 internal static bit(18) initial unaligned dcl 9-26 TRANSLATOR_ID_PL1V2 internal static bit(18) initial unaligned dcl 9-24 TRANSLATOR_ID_SIGNALLER internal static bit(18) initial unaligned dcl 9-28 TRANSLATOR_ID_SIGNAL_CALLER internal static bit(18) initial unaligned dcl 9-27 arg_list_with_envptr based structure level 1 dcl 10-42 call_offset internal static fixed bin(17,0) initial dcl 8-78 ccpi_user_io_attach_desc_length automatic fixed bin(21,0) dcl 6-44 command_name_arglist based structure level 1 dcl 10-25 cpm_data_$saved_cl_intermediary external static entry variable dcl 2-30 cpm_ptr automatic pointer dcl 4-27 entry_offset internal static fixed bin(17,0) initial dcl 8-78 ioa_$rsnnl 000000 constant entry external dcl 138 iox_$attach_loud 000000 constant entry external dcl 11-8 iox_$attach_name 000000 constant entry external dcl 11-8 iox_$attach_ptr 000000 constant entry external dcl 11-8 iox_$close 000000 constant entry external dcl 11-8 iox_$close_file 000000 constant entry external dcl 11-8 iox_$control 000000 constant entry external dcl 11-8 iox_$delete_record 000000 constant entry external dcl 11-8 iox_$destroy_iocb 000000 constant entry external dcl 11-8 iox_$detach 000000 constant entry external dcl 11-8 iox_$detach_iocb 000000 constant entry external dcl 11-8 iox_$err_no_operation 000000 constant entry external dcl 11-8 iox_$err_not_attached 000000 constant entry external dcl 11-8 iox_$err_not_closed 000000 constant entry external dcl 11-8 iox_$err_not_open 000000 constant entry external dcl 11-8 iox_$find_iocb 000000 constant entry external dcl 11-8 iox_$find_iocb_n 000000 constant entry external dcl 11-8 iox_$get_chars 000000 constant entry external dcl 11-8 iox_$get_line 000000 constant entry external dcl 11-8 iox_$look_iocb 000000 constant entry external dcl 11-8 iox_$modes 000000 constant entry external dcl 11-8 iox_$open 000000 constant entry external dcl 11-8 iox_$open_file 000000 constant entry external dcl 11-8 iox_$position 000000 constant entry external dcl 11-8 iox_$propagate 000000 constant entry external dcl 11-8 iox_$put_chars 000000 constant entry external dcl 11-8 iox_$read_key 000000 constant entry external dcl 11-8 iox_$read_length 000000 constant entry external dcl 11-8 iox_$read_record 000000 constant entry external dcl 11-8 iox_$rewrite_record 000000 constant entry external dcl 11-8 iox_$seek_key 000000 constant entry external dcl 11-8 iox_$write_record 000000 constant entry external dcl 11-8 process_usage_pointer automatic pointer dcl 5-3 push_offset internal static fixed bin(17,0) initial dcl 8-78 return_no_pop_offset internal static fixed bin(17,0) initial dcl 8-78 return_offset internal static fixed bin(17,0) initial dcl 8-78 stack_frame_flags based structure level 1 dcl 9-64 stack_frame_min_length internal static fixed bin(17,0) initial dcl 9-33 stack_header_overlay based fixed bin(17,0) array dcl 8-94 trace_$add_specified_eps 000000 constant entry external dcl 13-20 trace_$add_specified_locs 000000 constant entry external dcl 13-21 trace_$alm 000000 constant entry external dcl 13-111 trace_$arguments 000000 constant entry external dcl 13-82 trace_$automatic 000000 constant entry external dcl 13-113 trace_$buffer 000000 constant entry external dcl 13-115 trace_$buffer_counts 000000 constant entry external dcl 13-74 trace_$buffer_event 000000 constant entry external dcl 13-75 trace_$buffer_event_header 000000 constant entry external dcl 13-76 trace_$buffer_event_string 000000 constant entry external dcl 13-77 trace_$buffer_ptr 000000 constant entry external dcl 13-78 trace_$calibrate 000000 constant entry external dcl 13-117 trace_$call 000000 constant entry external dcl 13-84 trace_$compensation 000000 constant entry external dcl 13-119 trace_$cv_bit_to_onoff 000000 constant entry external dcl 13-33 trace_$cv_bits_to_inout 000000 constant entry external dcl 13-30 trace_$cv_entry_name_to_spp 000000 constant entry external dcl 13-34 trace_$cv_file_path_to_osw 000000 constant entry external dcl 13-35 trace_$cv_inout_to_bits 000000 constant entry external dcl 13-29 trace_$cv_n_to_number 000000 constant entry external dcl 13-31 trace_$cv_onoff_to_bit 000000 constant entry external dcl 13-32 trace_$cv_stream_name_to_osw 000000 constant entry external dcl 13-36 trace_$enabled 000000 constant entry external dcl 13-121 trace_$entrypoint_counts 000000 constant entry external dcl 13-40 trace_$entrypoint_global_meters 000000 constant entry external dcl 13-41 trace_$entrypoint_index 000000 constant entry external dcl 13-49 trace_$entrypoint_local_meters 000000 constant entry external dcl 13-42 trace_$entrypoint_name 000000 constant entry external dcl 13-50 trace_$entrypoint_ptr 000000 constant entry external dcl 13-51 trace_$entrypoint_seg_path 000000 constant entry external dcl 13-52 trace_$entrypoint_status 000000 constant entry external dcl 13-53 trace_$every 000000 constant entry external dcl 13-86 trace_$first 000000 constant entry external dcl 13-88 trace_$function 000000 constant entry external dcl 13-54 trace_$global_parms_string 000000 constant entry external dcl 13-123 trace_$high 000000 constant entry external dcl 13-90 trace_$in_trace 000000 constant entry external dcl 13-143 trace_$last 000000 constant entry external dcl 13-92 trace_$location_ptr 000000 constant entry external dcl 13-63 trace_$location_seg_path 000000 constant entry external dcl 13-64 trace_$location_values 000000 constant entry external dcl 13-65 trace_$long 000000 constant entry external dcl 13-124 trace_$loud 000000 constant entry external dcl 13-138 trace_$low 000000 constant entry external dcl 13-94 trace_$me 000000 constant entry external dcl 13-7 trace_$meter 000000 constant entry external dcl 13-126 trace_$metered 000000 constant entry external dcl 13-43 trace_$new_high 000000 constant entry external dcl 13-96 trace_$num_entrypoints 000000 constant entry external dcl 13-55 trace_$num_locations 000000 constant entry external dcl 13-66 trace_$num_specified_entrypoints 000000 constant entry external dcl 13-56 trace_$num_specified_locations 000000 constant entry external dcl 13-67 trace_$output_switch 000000 constant entry external dcl 13-128 trace_$parms_specified 000000 constant entry external dcl 13-99 trace_$parms_string 000000 constant entry external dcl 13-98 trace_$remove_specified_eps 000000 constant entry external dcl 13-22 trace_$remove_specified_locs 000000 constant entry external dcl 13-23 trace_$removed 000000 constant entry external dcl 13-44 trace_$reset_meters 000000 constant entry external dcl 13-45 trace_$set_alm 000000 constant entry external dcl 13-112 trace_$set_arguments 000000 constant entry external dcl 13-83 trace_$set_automatic 000000 constant entry external dcl 13-114 trace_$set_buffer 000000 constant entry external dcl 13-116 trace_$set_calibrate 000000 constant entry external dcl 13-118 trace_$set_call 000000 constant entry external dcl 13-85 trace_$set_compensation 000000 constant entry external dcl 13-120 trace_$set_enabled 000000 constant entry external dcl 13-122 trace_$set_every 000000 constant entry external dcl 13-87 trace_$set_first 000000 constant entry external dcl 13-89 trace_$set_high 000000 constant entry external dcl 13-91 trace_$set_last 000000 constant entry external dcl 13-93 trace_$set_long 000000 constant entry external dcl 13-125 trace_$set_loud 000000 constant entry external dcl 13-139 trace_$set_low 000000 constant entry external dcl 13-95 trace_$set_meter 000000 constant entry external dcl 13-127 trace_$set_new_high 000000 constant entry external dcl 13-97 trace_$set_output_switch 000000 constant entry external dcl 13-129 trace_$set_signals 000000 constant entry external dcl 13-131 trace_$set_stop 000000 constant entry external dcl 13-101 trace_$set_stop_every 000000 constant entry external dcl 13-103 trace_$set_stop_low 000000 constant entry external dcl 13-105 trace_$set_stop_proc 000000 constant entry external dcl 13-133 trace_$set_stop_routine 000000 constant entry external dcl 13-135 trace_$set_trace 000000 constant entry external dcl 13-107 trace_$set_trace_routine 000000 constant entry external dcl 13-137 trace_$signals 000000 constant entry external dcl 13-130 trace_$specified_entrypoint_index 000000 constant entry external dcl 13-57 trace_$specified_location_index 000000 constant entry external dcl 13-68 trace_$specify_changed_locations 000000 constant entry external dcl 13-70 trace_$specify_entrypoints 000000 constant entry external dcl 13-58 trace_$specify_locations 000000 constant entry external dcl 13-69 trace_$stop 000000 constant entry external dcl 13-100 trace_$stop_every 000000 constant entry external dcl 13-102 trace_$stop_low 000000 constant entry external dcl 13-104 trace_$stop_proc 000000 constant entry external dcl 13-132 trace_$stop_routine 000000 constant entry external dcl 13-134 trace_$trace 000000 constant entry external dcl 13-106 trace_$trace_routine 000000 constant entry external dcl 13-136 trace_$transaction_begin_force 000000 constant entry external dcl 13-13 trace_$translator_id 000000 constant entry external dcl 13-59 trace_$turn_off_specified_eps 000000 constant entry external dcl 13-25 trace_$turn_on_specified_eps 000000 constant entry external dcl 13-24 trace_$update_default_parms 000000 constant entry external dcl 13-18 trace_$update_global_parms 000000 constant entry external dcl 13-19 trace_$version 000000 constant entry external dcl 13-8 tv_offset internal static fixed bin(17,0) initial dcl 8-72 NAMES DECLARED BY EXPLICIT CONTEXT. BEGIN_GENERATE_CALL 002002 constant label dcl 445 ref 428 435 442 ERROR_RETURN_FROM_CPM_ 000331 constant label dcl 26 ref 755 ERROR_RETURN_FROM_CPM_$CREATE 000550 constant label dcl 208 ref 1414 INSERT_INTO_THE_LIST 005314 constant label dcl 1259 ref 1248 1253 any_other_handler 003546 constant entry internal dcl 808 ref 186 259 277 306 327 346 369 451 569 608 640 681 1188 block 001251 constant entry external dcl 320 call_self_destruct 000700 constant entry external dcl 238 ref 228 228 check_initialization 003360 constant entry internal dcl 720 ref 219 272 296 323 341 366 384 402 445 546 559 589 637 669 701 cpm_ 000322 constant entry external dcl 23 create 000344 constant entry external dcl 172 create_control_point 005413 constant entry internal dcl 1298 ref 195 create_failure 006042 constant entry internal dcl 1408 ref 1303 1314 cv_entry_to_label_ 006052 constant entry internal dcl 1422 ref 1379 destroy 000575 constant entry external dcl 216 destroy_control_point 006074 constant entry internal dcl 1446 ref 191 208 1097 different_switches 004257 constant entry internal dcl 911 ref 468 486 1017 1043 find_control_point 003453 constant entry internal dcl 739 ref 221 274 298 343 386 404 448 561 593 678 gc_dead_control_points 004642 constant entry internal dcl 1062 ref 967 985 gc_worker 004667 constant entry internal dcl 1077 ref 1067 1093 generate_call 001721 constant entry external dcl 424 ref 228 generate_call_preferred 001742 constant entry external dcl 431 generate_call_when_ready 001764 constant entry external dcl 438 get_control_point_meters 003004 constant entry external dcl 666 get_preferred_control_point 002343 constant entry external dcl 543 get_scheduler_meters 003140 constant entry external dcl 698 get_user_cl_intermediary 001520 constant entry external dcl 381 insert_into_ready_queue 005260 constant entry internal dcl 1239 ref 1162 1210 1230 mask_ips_interrupts 003505 constant entry internal dcl 761 ref 462 573 613 645 777 1000 1124 1150 mask_ips_interrupts_caller 003225 constant entry external dcl 774 ref 1306 1361 1463 1550 nulle 001641 constant entry external dcl 416 ref 1340 pop_preferred_control_point 002702 constant entry external dcl 634 push_call_frame 006307 constant entry internal dcl 1524 ref 197 505 push_preferred_control_point 002531 constant entry external dcl 586 remove_from_ready_queue 005352 constant entry internal dcl 1279 ref 1157 1209 1229 restore_io_switches 004157 constant entry internal dcl 891 ref 486 1043 restore_privileges 003573 constant entry internal dcl 821 ref 491 1051 save_io_switches 004057 constant entry internal dcl 872 ref 468 1017 scheduler 001441 constant entry external dcl 363 scheduler 004335 constant entry internal dcl 936 in procedure "cpm_" scheduler$find_runnable 004337 constant entry internal dcl 944 ref 264 371 scheduler$run_specific_control_point 004433 constant entry internal dcl 978 ref 525 self_destruct 000762 constant entry external dcl 253 ref 243 1379 1379 set_preferred_control_point 002412 constant entry external dcl 556 ref 1154 set_user_cl_intermediary 001571 constant entry external dcl 399 start 001027 constant entry external dcl 269 stop 001130 constant entry external dcl 293 switch_control_points 004466 constant entry internal dcl 994 ref 956 965 983 switch_preferred_control_points 005226 constant entry internal dcl 1199 ref 574 620 656 unmask_ips_interrupts 003524 constant entry internal dcl 784 ref 494 575 624 659 801 1054 1134 1174 unmask_ips_interrupts_caller 003254 constant entry external dcl 798 ref 811 1311 1400 1484 1592 update_meters 004744 constant entry internal dcl 1110 ref 683 947 970 981 988 update_state 005123 constant entry internal dcl 1142 ref 261 281 310 329 350 516 530 1192 update_state_caller 003305 constant entry external dcl 1184 wakeup 001334 constant entry external dcl 338 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10426 10654 6627 10436 Length 11710 6627 226 1017 1576 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cpm_ 490 external procedure is an external procedure. on unit on line 186 64 on unit on unit on line 189 70 on unit on unit on line 259 64 on unit on unit on line 277 64 on unit on unit on line 306 64 on unit on unit on line 327 64 on unit on unit on line 346 64 on unit on unit on line 369 64 on unit on unit on line 451 64 on unit on unit on line 569 64 on unit on unit on line 608 64 on unit on unit on line 640 64 on unit on unit on line 681 64 on unit check_initialization internal procedure shares stack frame of external procedure cpm_. find_control_point internal procedure shares stack frame of external procedure cpm_. mask_ips_interrupts internal procedure shares stack frame of external procedure cpm_. unmask_ips_interrupts internal procedure shares stack frame of external procedure cpm_. any_other_handler 69 internal procedure is called by several nonquick procedures. restore_privileges internal procedure shares stack frame of external procedure cpm_. save_io_switches internal procedure shares stack frame of external procedure cpm_. restore_io_switches internal procedure shares stack frame of external procedure cpm_. different_switches internal procedure shares stack frame of external procedure cpm_. scheduler internal procedure shares stack frame of external procedure cpm_. switch_control_points internal procedure shares stack frame of external procedure cpm_. gc_dead_control_points internal procedure shares stack frame of external procedure cpm_. gc_worker 74 internal procedure calls itself recursively. update_meters internal procedure shares stack frame of external procedure cpm_. update_state internal procedure shares stack frame of external procedure cpm_. on unit on line 1188 64 on unit switch_preferred_control_points internal procedure shares stack frame of external procedure cpm_. insert_into_ready_queue internal procedure shares stack frame of external procedure cpm_. remove_from_ready_queue internal procedure shares stack frame of external procedure cpm_. create_control_point 105 internal procedure is declared options(non_quick). create_failure internal procedure shares stack frame of internal procedure create_control_point. cv_entry_to_label_ internal procedure shares stack frame of internal procedure create_control_point. destroy_control_point 86 internal procedure is called by several nonquick procedures. push_call_frame 74 internal procedure is called during a stack extension, and is declared options(non_quick). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cpm_ 000100 current_cpd_ptr cpm_ 000102 ios_ptr cpm_ 000104 system_area_ptr cpm_ 000106 decoded_control_point_id cpm_ 000110 userproc_arg_list cpm_ 000114 generate_call_flags cpm_ 000115 prior_state cpm_ 000116 target_cpd_ptr cpm_ 000120 stack_idx cpm_ 000121 mask cpm_ 000136 cpd_ptr cpm_ 000140 cpma_ptr cpm_ 000142 ccpi_ptr cpm_ 000144 sb cpm_ 000146 sp cpm_ 000150 watch_values cpm_ 000152 counts cpm_ 000156 meters cpm_ 000164 compensation cpm_ 000240 current_privileges restore_privileges 000314 local_usage update_meters 000332 local_real_time update_meters 000350 old_preferred_cpd_ptr switch_preferred_control_points 000360 prev_cpd_ptr insert_into_ready_queue 000362 next_cpd_ptr insert_into_ready_queue create_control_point 000100 code create_control_point 000116 a_label cv_entry_to_label_ gc_worker 000100 a_cpd_ptr gc_worker 000102 next_cpd_ptr gc_worker THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_bit_temp call_ext_in call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 tra_ext_2 mdfx1 signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. continue_to_signal_ cpm_alm_$call_generate_call cpm_alm_$call_overseer cpm_alm_$switch_stacks cpm_initialize_ cpm_overseer_$cl_intermediary cpm_overseer_$generate_call cu_$get_cl_intermediary cu_$set_cl_intermediary get_privileges_ get_system_free_area_ get_temp_segment_ hcs_$get_process_usage hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$set_stack_ptr iox_$move_attach ipc_$reassign_call_channels ipc_$wait_for_an_event release_temp_segment_ sub_err_ system_privilege_$comm_priv_off system_privilege_$comm_priv_on system_privilege_$dir_priv_off system_privilege_$dir_priv_on system_privilege_$ipc_priv_off system_privilege_$ipc_priv_on system_privilege_$rcp_priv_off system_privilege_$rcp_priv_on system_privilege_$ring1_priv_off system_privilege_$ring1_priv_on system_privilege_$seg_priv_off system_privilege_$seg_priv_on system_privilege_$soos_priv_off system_privilege_$soos_priv_on trace_$transaction_begin trace_$transaction_end THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cpm_data_$gc_control_points cpm_data_$global_meters cpm_data_$n_control_points cpm_data_$preferred_control_point cpm_data_$preferred_control_point_stack cpm_data_$previous_control_point cpm_data_$ready_queue cpm_data_$root_control_point_data cpm_data_$subsystem_name cpm_data_$valid_control_points cpm_et_$already_started cpm_et_$already_stopped cpm_et_$cant_destroy_root cpm_et_$cant_stop_root cpm_et_$cant_wakeup_when_stopped cpm_et_$control_point_not_found cpm_et_$preferred_cant_be_stopped cpm_et_$preferred_stack_overflow cpm_et_$wakeup_ignored error_table_$badcall error_table_$out_of_sequence error_table_$unimplemented_version iox_$error_output iox_$user_input iox_$user_io iox_$user_output sys_info$all_valid_ips_mask sys_info$comm_privilege sys_info$dir_privilege sys_info$ipc_privilege sys_info$rcp_privilege sys_info$ring1_privilege sys_info$seg_privilege sys_info$soos_privilege CONSTANTS 006462 aa 000002000000 006463 aa 000000000000 006464 aa 600000000041 006465 aa 000100000000 006466 aa 377777777777 006470 aa 000006000000 006471 aa 000000000000 006472 aa 600000000041 006473 aa 000100000000 006474 aa 600000000041 006475 aa 000136000000 006476 aa 600000000041 006477 aa 000670000000 006500 aa 000002000000 006501 aa 000002000000 006502 aa 600000000041 006503 aa 000402000000 006504 ta 000010000000 006505 aa 000000000000 006506 aa 000002000000 006507 aa 000002000000 006510 aa 600000000041 006511 aa 000402000000 006512 ta 000011000000 006513 aa 000000000000 006514 aa 000002000000 006515 aa 000002000000 006516 aa 600000000041 006517 aa 000402000000 006520 ta 000012000000 006521 aa 000000000000 006522 aa 000002000000 006523 aa 000000000000 006524 aa 600000000041 006525 aa 000115000000 006526 aa 000002000000 006527 aa 000000000000 006530 aa 600000000041 006531 aa 000121000000 006532 aa 000002000000 006533 aa 000002000000 006534 aa 600000000041 006535 aa 000402000000 006536 ta 000013000000 006537 aa 000000000000 006540 aa 000002000000 006541 aa 000002000000 006542 aa 600000000041 006543 aa 000402000000 006544 ta 000015000000 006545 aa 000000000000 006546 aa 000002000000 006547 aa 000002000000 006550 aa 600000000041 006551 aa 000374000000 006552 ta 000016000000 006553 aa 000000000000 006554 aa 000002000000 006555 aa 000002000000 006556 aa 600000000041 006557 aa 000374000000 006560 ta 000017000000 006561 aa 000000000000 006562 aa 000002000000 006563 aa 000000000000 006564 ta 000042000000 006565 aa 000000000000 006566 aa 000002000000 006567 aa 000000000000 006570 ta 000044000000 006571 aa 000000000000 006572 aa 000002000000 006573 aa 000002000000 006574 aa 600000000041 006575 aa 000374000000 006576 ta 000020000000 006577 aa 000000000000 006600 aa 000002000000 006601 aa 000000000000 006602 ta 000041000000 006603 aa 000000000000 006604 aa 000002000000 006605 aa 000002000000 006606 aa 600000000041 006607 aa 000374000000 006610 ta 000021000000 006611 aa 000000000000 006612 aa 000002000000 006613 aa 000000000000 006614 ta 000026000000 006615 aa 000000000000 006616 aa 000002000000 006617 aa 000002000000 006620 aa 600000000041 006621 aa 000374000000 006622 ta 000024000000 006623 aa 000000000000 006624 aa 077777000043 006625 aa 000001000000 000000 aa 143 143 160 151 ccpi 000001 aa 137 060 060 061 _001 000002 aa 143 160 155 141 cpma 000003 aa 137 060 060 061 _001 000004 aa 514077777777 000005 aa 474000000000 000006 aa 524000000075 000007 aa 526077777777 000010 aa 524000000031 006626 aa 000000000020 000011 aa 524000000041 000012 aa 524000000040 000013 aa 524000000022 000014 aa 524000000052 000015 aa 524000000035 000016 aa 524000000016 000017 aa 524000000013 000020 aa 524000000011 000021 aa 524000000012 000022 aa 400000000000 000023 aa 404000000005 000024 aa 524000000014 000025 aa 514000000000 000026 aa 000000000000 000027 aa 466000000000 000030 aa 530000000040 000031 aa 530000000400 000032 aa 530000000101 000033 aa 404000000042 000034 aa 524000000010 000035 aa 514000000002 000036 aa 526000000040 000037 aa 404000000021 000040 aa 514000000001 000041 aa 000000000003 000042 aa 000000000002 000043 aa 500000000000 000044 aa 000000000001 000045 aa 464000000000 000046 aa 404000000043 000047 aa 514000000044 000050 aa 000000000000 000051 aa 000000000000 000052 aa 000000000000 000053 aa 000000000001 000054 aa 077777000043 000055 aa 000001000000 000056 aa 143 154 145 141 clea 000057 aa 156 165 160 000 nup 000060 aa 143 160 155 137 cpm_ 000061 aa 044 167 141 153 $wak 000062 aa 145 165 160 000 eup 000063 aa 143 160 155 137 cpm_ 000064 aa 044 142 154 157 $blo 000065 aa 143 153 000 000 ck 000066 aa 143 160 155 137 cpm_ 000067 aa 044 163 164 157 $sto 000070 aa 160 000 000 000 p 000071 aa 143 160 155 137 cpm_ 000072 aa 044 163 164 141 $sta 000073 aa 162 164 000 000 rt 000074 aa 143 160 155 137 cpm_ 000075 aa 044 144 145 163 $des 000076 aa 164 162 157 171 troy 000077 aa 504000000002 000100 aa 410000000065 000101 aa 410000000065 000102 aa 504000000002 000103 aa 514000000044 000104 aa 514000000044 000105 aa 504000000002 000106 aa 500000000000 000107 aa 530000000400 000110 aa 141 156 171 137 any_ 000111 aa 157 164 150 145 othe 000112 aa 162 000 000 000 r 000113 aa 143 160 155 137 cpm_ 000114 aa 044 163 143 150 $sch 000115 aa 145 144 165 154 edul 000116 aa 145 162 000 000 er 000117 aa 504000000003 000120 aa 410000000065 000121 aa 410000000065 000122 aa 404000000042 000123 aa 504000000003 000124 aa 410000000065 000125 aa 404000000042 000126 aa 404000000042 000127 aa 504000000003 000130 aa 464000000000 000131 aa 530000000040 000132 aa 530000000400 000133 aa 143 160 155 137 cpm_ 000134 aa 044 147 145 156 $gen 000135 aa 145 162 141 164 erat 000136 aa 145 137 143 141 e_ca 000137 aa 154 154 000 000 ll 000140 aa 162 145 164 165 retu 000141 aa 162 156 137 143 rn_c 000142 aa 157 156 166 145 onve 000143 aa 162 163 151 157 rsio 000144 aa 156 137 145 162 n_er 000145 aa 162 157 162 000 ror 000146 aa 143 160 155 137 cpm_ 000147 aa 044 147 145 164 $get 000150 aa 137 163 143 150 _sch 000151 aa 145 144 165 154 edul 000152 aa 145 162 137 155 er_m 000153 aa 145 164 145 162 eter 000154 aa 163 000 000 000 s 000155 aa 143 160 155 137 cpm_ 000156 aa 044 147 145 164 $get 000157 aa 137 143 157 156 _con 000160 aa 164 162 157 154 trol 000161 aa 137 160 157 151 _poi 000162 aa 156 164 137 155 nt_m 000163 aa 145 164 145 162 eter 000164 aa 163 000 000 000 s 000165 aa 143 160 155 137 cpm_ 000166 aa 044 160 157 160 $pop 000167 aa 137 160 162 145 _pre 000170 aa 146 145 162 162 ferr 000171 aa 145 144 137 143 ed_c 000172 aa 157 156 164 162 ontr 000173 aa 157 154 137 160 ol_p 000174 aa 157 151 156 164 oint 000175 aa 143 160 155 137 cpm_ 000176 aa 044 163 145 164 $set 000177 aa 137 160 162 145 _pre 000200 aa 146 145 162 162 ferr 000201 aa 145 144 137 143 ed_c 000202 aa 157 156 164 162 ontr 000203 aa 157 154 137 160 ol_p 000204 aa 157 151 156 164 oint 000205 aa 143 160 155 137 cpm_ 000206 aa 044 147 145 164 $get 000207 aa 137 160 162 145 _pre 000210 aa 146 145 162 162 ferr 000211 aa 145 144 137 143 ed_c 000212 aa 157 156 164 162 ontr 000213 aa 157 154 137 160 ol_p 000214 aa 157 151 156 164 oint 000215 aa 143 160 155 137 cpm_ 000216 aa 044 163 145 164 $set 000217 aa 137 165 163 145 _use 000220 aa 162 137 143 154 r_cl 000221 aa 137 151 156 164 _int 000222 aa 145 162 155 145 erme 000223 aa 144 151 141 162 diar 000224 aa 171 000 000 000 y 000225 aa 143 160 155 137 cpm_ 000226 aa 044 147 145 164 $get 000227 aa 137 165 163 145 _use 000230 aa 162 137 143 154 r_cl 000231 aa 137 151 156 164 _int 000232 aa 145 162 155 145 erme 000233 aa 144 151 141 162 diar 000234 aa 171 000 000 000 y 000235 aa 143 160 155 137 cpm_ 000236 aa 044 160 165 163 $pus 000237 aa 150 137 160 162 h_pr 000240 aa 145 146 145 162 efer 000241 aa 162 145 144 137 red_ 000242 aa 143 157 156 164 cont 000243 aa 162 157 154 137 rol_ 000244 aa 160 157 151 156 poin 000245 aa 164 000 000 000 t 000246 aa 124 150 145 040 The 000247 aa 042 156 165 154 "nul 000250 aa 154 042 040 145 l" e 000251 aa 156 164 162 171 ntry 000252 aa 040 166 141 154 val 000253 aa 165 145 040 143 ue c 000254 aa 141 156 040 156 an n 000255 aa 157 164 040 142 ot b 000256 aa 145 040 151 156 e in 000257 aa 166 157 153 145 voke 000260 aa 144 056 000 000 d. 000261 aa 101 164 040 154 At l 000262 aa 145 141 163 164 east 000263 aa 040 157 156 145 one 000264 aa 040 143 141 154 cal 000265 aa 154 040 164 157 l to 000266 aa 040 143 160 155 cpm 000267 aa 137 044 143 162 _$cr 000270 aa 145 141 164 145 eate 000271 aa 040 155 165 163 mus 000272 aa 164 040 160 162 t pr 000273 aa 145 143 145 145 ecee 000274 aa 144 040 141 156 d an 000275 aa 171 040 143 141 y ca 000276 aa 154 154 040 164 ll t 000277 aa 157 040 136 141 o ^a 000300 aa 056 000 000 000 . 000301 aa 504000000004 000302 aa 404000000021 000303 aa 404000000021 000304 aa 410000000107 000305 aa 504000000013 000306 aa 404000000021 000307 aa 404000000021 000310 aa 410000000107 000311 aa 410000000107 000312 aa 404000000042 000313 aa 404000000042 000314 aa 410000000107 000315 aa 404000000042 000316 aa 404000000042 000317 aa 404000000042 000320 aa 404000000042 BEGIN PROCEDURE cpm_ ENTRY TO cpm_ STATEMENT 1 ON LINE 23 cpm_: procedure (); 000321 da 001077200000 000322 aa 000760 6270 00 eax7 496 000323 aa 7 00034 3521 20 epp2 pr7|28,* 000324 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000325 aa 000000000000 000326 aa 000000000000 000327 aa 000001 2360 07 ldq 1,dl 000330 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 26 ERROR_RETURN_FROM_CPM_: return; 000331 aa 6 00170 2361 00 ldq pr6|120 000332 aa 000005 6010 04 tnz 5,ic 000337 000333 aa 000027 7260 07 lxl6 23,dl 000334 aa 777604 3520 04 epp2 -124,ic 000140 = 162145164165 000335 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 000336 aa 0 00631 7101 00 tra pr0|409 return_mac 000337 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO create STATEMENT 1 ON LINE 172 create: entry (P_ccpi_ptr, P_control_point_id, P_code); 000340 at 000003000045 000341 tt 000047000046 000342 ta 000340000000 000343 da 001104300000 000344 aa 000760 6270 00 eax7 496 000345 aa 7 00034 3521 20 epp2 pr7|28,* 000346 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000347 aa 000006000000 000350 aa 000000000000 000351 aa 6 00032 3735 20 epp7 pr6|26,* 000352 aa 7 00004 3715 20 epp5 pr7|4,* 000353 aa 6 00172 6515 00 spri5 pr6|122 000354 aa 7 00006 3535 20 epp3 pr7|6,* 000355 aa 6 00174 2535 00 spri3 pr6|124 000356 aa 000001 2360 07 ldq 1,dl 000357 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 175 if stackbaseptr () -> stack_header.cpm_enabled = ""b then do; 000360 aa 6 00000 3525 00 epbp2 pr6|0 000361 aa 2 00013 2351 00 lda pr2|11 stack_header.cpm_enabled 000362 aa 777777 3150 07 cana 262143,dl 000363 aa 6 00372 2521 00 spri2 pr6|250 000364 aa 000011 6010 04 tnz 9,ic 000375 STATEMENT 1 ON LINE 177 call cpm_initialize_ (); 000365 aa 6 00056 6211 00 eax1 pr6|46 000366 aa 000000 4310 07 fld 0,dl 000367 aa 6 00044 3701 20 epp4 pr6|36,* 000370 la 4 00070 3521 20 epp2 pr4|56,* cpm_initialize_ 000371 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 178 current_cpd_ptr = stackbaseptr () -> stack_header.cpm_data_ptr; 000372 aa 6 00372 3735 20 epp7 pr6|250,* 000373 aa 7 00004 3735 20 epp7 pr7|4,* stack_header.cpm_data_ptr 000374 aa 6 00100 6535 00 spri7 pr6|64 current_cpd_ptr STATEMENT 1 ON LINE 179 end; STATEMENT 1 ON LINE 181 ccpi_ptr = P_ccpi_ptr; 000375 aa 6 00032 3735 20 epp7 pr6|26,* 000376 aa 7 00002 3715 20 epp5 pr7|2,* P_ccpi_ptr 000377 aa 5 00000 3715 20 epp5 pr5|0,* P_ccpi_ptr 000400 aa 6 00142 6515 00 spri5 pr6|98 ccpi_ptr STATEMENT 1 ON LINE 183 system_area_ptr = get_system_free_area_ (); 000401 aa 6 00104 3521 00 epp2 pr6|68 system_area_ptr 000402 aa 6 00376 2521 00 spri2 pr6|254 000403 aa 6 00374 6211 00 eax1 pr6|252 000404 aa 004000 4310 07 fld 2048,dl 000405 aa 6 00044 3701 20 epp4 pr6|36,* 000406 la 4 00104 3521 20 epp2 pr4|68,* get_system_free_area_ 000407 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 185 mask = ""b; 000410 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 186 on any_other call any_other_handler (); 000411 aa 000011 7260 07 lxl6 9,dl 000412 aa 777476 3520 04 epp2 -194,ic 000110 = 141156171137 000413 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 000414 aa 000004 7100 04 tra 4,ic 000420 000415 aa 000122000000 000416 aa 000015 7100 04 tra 13,ic 000433 BEGIN CONDITION any_other.1 ENTRY TO any_other.1 STATEMENT 1 ON LINE 186 on any_other call any_other_handler (); 000417 da 001112200000 000420 aa 000100 6270 00 eax7 64 000421 aa 7 00034 3521 20 epp2 pr7|28,* 000422 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000423 aa 000000000000 000424 aa 000000000000 000425 aa 000001 7270 07 lxl7 1,dl 000426 aa 6 00056 6211 00 eax1 pr6|46 000427 aa 000000 4310 07 fld 0,dl 000430 aa 003116 3520 04 epp2 1614,ic 003546 = 000120627000 000431 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 000432 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.1 STATEMENT 1 ON LINE 188 cpd_ptr = null (); 000433 aa 777421 2370 04 ldaq -239,ic 000054 = 077777000043 000001000000 000434 aa 6 00136 7571 00 staq pr6|94 cpd_ptr STATEMENT 1 ON LINE 189 on cleanup begin; 000435 aa 000007 7260 07 lxl6 7,dl 000436 aa 777420 3520 04 epp2 -240,ic 000056 = 143154145141 000437 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 000440 aa 000004 7100 04 tra 4,ic 000444 000441 aa 000130000000 000442 aa 000024 7100 04 tra 20,ic 000466 BEGIN CONDITION cleanup.2 ENTRY TO cleanup.2 STATEMENT 1 ON LINE 189 on cleanup begin; 000443 da 001120200000 000444 aa 000120 6270 00 eax7 80 000445 aa 7 00034 3521 20 epp2 pr7|28,* 000446 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000447 aa 000000000000 000450 aa 000000000000 STATEMENT 1 ON LINE 191 if cpd_ptr ^= null () then call destroy_control_point (cpd_ptr); 000451 aa 6 00040 3735 20 epp7 pr6|32,* 000452 aa 7 00136 2371 00 ldaq pr7|94 cpd_ptr 000453 aa 777401 6770 04 eraq -255,ic 000054 = 077777000043 000001000000 000454 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000455 aa 000010 6000 04 tze 8,ic 000465 000456 aa 7 00136 3521 00 epp2 pr7|94 cpd_ptr 000457 aa 6 00102 2521 00 spri2 pr6|66 000460 aa 000001 7270 07 lxl7 1,dl 000461 aa 6 00100 6211 00 eax1 pr6|64 000462 aa 004000 4310 07 fld 2048,dl 000463 aa 005411 3520 04 epp2 2825,ic 006074 = 000140627000 000464 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 193 end; 000465 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION cleanup.2 STATEMENT 1 ON LINE 195 call create_control_point (); 000466 aa 6 00056 6211 00 eax1 pr6|46 000467 aa 000000 4310 07 fld 0,dl 000470 aa 004723 3520 04 epp2 2515,ic 005413 = 000160627000 000471 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 197 call push_call_frame (cpm_alm_$call_overseer, unspec (create_control_point_info), create_control_point_info.initproc.entry, create_control_point_info.initproc.info_ptr); 000472 aa 6 00142 3735 20 epp7 pr6|98,* ccpi_ptr 000473 aa 7 00037 2361 00 ldq pr7|31 create_control_point_info.user_io_attach_desc_length 000474 aa 000200 0760 07 adq 128,dl 000475 aa 000011 4020 07 mpy 9,dl 000476 aa 6 00401 7561 00 stq pr6|257 000477 aa 514000 2760 03 orq 169984,du 000500 aa 6 00400 7561 00 stq pr6|256 000501 aa 6 00044 3701 20 epp4 pr6|36,* 000502 la 4 00062 3521 20 epp2 pr4|50,* cpm_alm_$call_overseer 000503 aa 6 00374 2521 00 spri2 pr6|252 cp.971 000504 aa 006120 2370 04 ldaq 3152,ic 006624 = 077777000043 000001000000 000505 aa 6 00376 7571 00 staq pr6|254 cp.971 000506 aa 6 00401 2361 00 ldq pr6|257 000507 aa 0 00552 7001 00 tsx0 pr0|362 alloc_bit_temp 000510 aa 6 00406 2521 00 spri2 pr6|262 000511 aa 003 140 060 540 csl (pr,rl),(pr,rl),fill(0),bool(move) 000512 aa 7 00000 00 0006 descb pr7|0,ql 000513 aa 2 00000 00 0006 descb pr2|0,ql 000514 aa 6 00374 3521 00 epp2 pr6|252 cp.971 000515 aa 6 00404 2521 00 spri2 pr6|260 000516 aa 7 00022 3521 00 epp2 pr7|18 create_control_point_info.entry 000517 aa 6 00410 2521 00 spri2 pr6|264 000520 aa 7 00026 3521 00 epp2 pr7|22 create_control_point_info.info_ptr 000521 aa 6 00412 2521 00 spri2 pr6|266 000522 aa 777321 3520 04 epp2 -303,ic 000043 = 500000000000 000523 aa 6 00416 2521 00 spri2 pr6|270 000524 aa 6 00422 2521 00 spri2 pr6|274 000525 aa 6 00400 3521 00 epp2 pr6|256 000526 aa 6 00420 2521 00 spri2 pr6|272 000527 aa 777316 3520 04 epp2 -306,ic 000045 = 464000000000 000530 aa 6 00424 2521 00 spri2 pr6|276 000531 aa 6 00402 6211 00 eax1 pr6|258 000532 aa 020000 4310 07 fld 8192,dl 000533 aa 005554 3520 04 epp2 2924,ic 006307 = 000120627000 000534 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 200 P_control_point_id = control_point_data.id; 000535 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 000536 aa 6 00136 2351 20 lda pr6|94,* control_point_data.id 000537 aa 6 00172 7551 20 sta pr6|122,* P_control_point_id STATEMENT 1 ON LINE 201 P_code = 0; 000540 aa 6 00174 4501 20 stz pr6|124,* P_code STATEMENT 1 ON LINE 203 return; 000541 aa 6 00170 2361 00 ldq pr6|120 000542 aa 000005 6010 04 tnz 5,ic 000547 000543 aa 000027 7260 07 lxl6 23,dl 000544 aa 777374 3520 04 epp2 -260,ic 000140 = 162145164165 000545 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 000546 aa 0 00631 7101 00 tra pr0|409 return_mac 000547 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 208 ERROR_RETURN_FROM_CPM_$CREATE: if cpd_ptr ^= null () then call destroy_control_point (cpd_ptr); 000550 aa 6 00136 2371 00 ldaq pr6|94 cpd_ptr 000551 aa 777303 6770 04 eraq -317,ic 000054 = 077777000043 000001000000 000552 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000553 aa 000007 6000 04 tze 7,ic 000562 000554 aa 6 00136 3521 00 epp2 pr6|94 cpd_ptr 000555 aa 6 00404 2521 00 spri2 pr6|260 000556 aa 6 00402 6211 00 eax1 pr6|258 000557 aa 004000 4310 07 fld 2048,dl 000560 aa 005314 3520 04 epp2 2764,ic 006074 = 000140627000 000561 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 211 return; 000562 aa 6 00170 2361 00 ldq pr6|120 000563 aa 000005 6010 04 tnz 5,ic 000570 000564 aa 000027 7260 07 lxl6 23,dl 000565 aa 777353 3520 04 epp2 -277,ic 000140 = 162145164165 000566 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 000567 aa 0 00631 7101 00 tra pr0|409 return_mac 000570 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO destroy STATEMENT 1 ON LINE 216 destroy: entry (P_control_point_id, P_code); 000571 at 000002000047 000572 ta 000046000000 000573 ta 000571000000 000574 da 001125300000 000575 aa 000760 6270 00 eax7 496 000576 aa 7 00034 3521 20 epp2 pr7|28,* 000577 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000600 aa 000004000000 000601 aa 000000000000 000602 aa 6 00032 3735 20 epp7 pr6|26,* 000603 aa 7 00002 3715 20 epp5 pr7|2,* 000604 aa 6 00172 6515 00 spri5 pr6|122 000605 aa 7 00004 3535 20 epp3 pr7|4,* 000606 aa 6 00174 2535 00 spri3 pr6|124 000607 aa 000001 2360 07 ldq 1,dl 000610 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 219 call check_initialization ("cpm_$destroy"); 000611 aa 777263 2370 04 ldaq -333,ic 000074 = 143160155137 044144145163 000612 aa 6 00374 7571 00 staq pr6|252 000613 aa 777263 2350 04 lda -333,ic 000076 = 164162157171 000614 aa 6 00376 7551 00 sta pr6|254 000615 aa 006001 3520 04 epp2 3073,ic 006616 = 000002000000 000616 aa 2 00000 2351 00 lda pr2|0 000617 aa 002541 6700 04 tsp4 1377,ic 003360 STATEMENT 1 ON LINE 221 call find_control_point (P_control_point_id); 000620 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 000621 aa 6 00404 2521 00 spri2 pr6|260 000622 aa 6 00402 3521 00 epp2 pr6|258 000623 aa 004000 4310 07 fld 2048,dl 000624 aa 2 00000 7571 00 staq pr2|0 000625 aa 002626 6700 04 tsp4 1430,ic 003453 STATEMENT 1 ON LINE 222 if cpd_ptr = addr (cpm_data_$root_control_point_data) then do; 000626 aa 6 00044 3701 20 epp4 pr6|36,* 000627 la 4 00170 3735 20 epp7 pr4|120,* cpm_data_$root_control_point_data 000630 aa 6 00372 6535 00 spri7 pr6|250 000631 aa 6 00372 2371 00 ldaq pr6|250 000632 aa 6 00136 6771 00 eraq pr6|94 cpd_ptr 000633 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000634 aa 000012 6010 04 tnz 10,ic 000646 STATEMENT 1 ON LINE 224 P_code = cpm_et_$cant_destroy_root; 000635 la 4 00014 2361 20 ldq pr4|12,* cpm_et_$cant_destroy_root 000636 aa 6 00174 7561 20 stq pr6|124,* P_code STATEMENT 1 ON LINE 225 return; 000637 aa 6 00170 2361 00 ldq pr6|120 000640 aa 000005 6010 04 tnz 5,ic 000645 000641 aa 000027 7260 07 lxl6 23,dl 000642 aa 777276 3520 04 epp2 -322,ic 000140 = 162145164165 000643 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 000644 aa 0 00631 7101 00 tra pr0|409 return_mac 000645 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 226 end; STATEMENT 1 ON LINE 228 call generate_call (P_control_point_id, call_self_destruct, null (), P_code); 000646 aa 000032 3520 04 epp2 26,ic 000700 = 000760627000 000647 aa 6 00374 2521 00 spri2 pr6|252 cp.971 000650 aa 005754 2370 04 ldaq 3052,ic 006624 = 077777000043 000001000000 000651 aa 6 00376 7571 00 staq pr6|254 cp.971 000652 aa 777202 3714 24 epp5 -382,ic* 000653 aa 6 00426 6515 00 spri5 pr6|278 000654 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 000655 aa 6 00404 2521 00 spri2 pr6|260 000656 aa 6 00374 3521 00 epp2 pr6|252 cp.971 000657 aa 6 00406 2521 00 spri2 pr6|262 000660 aa 6 00426 3521 00 epp2 pr6|278 000661 aa 6 00410 2521 00 spri2 pr6|264 000662 aa 6 00174 3521 20 epp2 pr6|124,* P_code 000663 aa 6 00412 2521 00 spri2 pr6|266 000664 aa 6 00402 6211 00 eax1 pr6|258 000665 aa 020000 4310 07 fld 8192,dl 000666 aa 001033 3520 04 epp2 539,ic 001721 = 000760627000 000667 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 230 return; 000670 aa 6 00170 2361 00 ldq pr6|120 000671 aa 000005 6010 04 tnz 5,ic 000676 000672 aa 000027 7260 07 lxl6 23,dl 000673 aa 777245 3520 04 epp2 -347,ic 000140 = 162145164165 000674 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 000675 aa 0 00631 7101 00 tra pr0|409 return_mac 000676 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO call_self_destruct STATEMENT 1 ON LINE 238 call_self_destruct: entry (); 000677 da 001135200000 000700 aa 000760 6270 00 eax7 496 000701 aa 7 00034 3521 20 epp2 pr7|28,* 000702 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000703 aa 000000000000 000704 aa 000000000000 000705 aa 000001 2360 07 ldq 1,dl 000706 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 241 cpd_ptr = stackbaseptr () -> stack_header.cpm_data_ptr; 000707 aa 6 00000 3525 00 epbp2 pr6|0 000710 aa 2 00004 3735 20 epp7 pr2|4,* stack_header.cpm_data_ptr 000711 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 243 if codeptr (control_point_data.destroy) = codeptr (self_destruct) then go to control_point_data.destroy; 000712 aa 000050 3520 04 epp2 40,ic 000762 = 000760627000 000713 aa 6 00426 2521 00 spri2 pr6|278 000714 aa 7 00012 3515 20 epp1 pr7|10,* control_point_data.destroy 000715 aa 6 00430 2515 00 spri1 pr6|280 000716 aa 6 00430 2371 00 ldaq pr6|280 000717 aa 6 00426 6771 00 eraq pr6|278 000720 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000721 aa 000003 6010 04 tnz 3,ic 000724 000722 aa 7 00012 3521 00 epp2 pr7|10 control_point_data.destroy 000723 aa 0 00660 7101 00 tra pr0|432 tra_ext_2 STATEMENT 1 ON LINE 245 else call sub_err_ (cpm_et_$cant_destroy_root, cpm_data_$subsystem_name, ACTION_CANT_RESTART, null (), 0); 000724 aa 777130 3714 24 epp5 -424,ic* 000725 aa 6 00432 6515 00 spri5 pr6|282 000726 aa 6 00400 4501 00 stz pr6|256 000727 aa 6 00044 3701 20 epp4 pr6|36,* 000730 la 4 00014 3521 20 epp2 pr4|12,* cpm_et_$cant_destroy_root 000731 aa 6 00436 2521 00 spri2 pr6|286 000732 la 4 00166 3521 20 epp2 pr4|118,* cpm_data_$subsystem_name 000733 aa 6 00440 2521 00 spri2 pr6|288 000734 aa 777066 3520 04 epp2 -458,ic 000022 = 400000000000 000735 aa 6 00442 2521 00 spri2 pr6|290 000736 aa 6 00432 3521 00 epp2 pr6|282 000737 aa 6 00444 2521 00 spri2 pr6|292 000740 aa 6 00400 3521 00 epp2 pr6|256 000741 aa 6 00446 2521 00 spri2 pr6|294 000742 aa 777104 3520 04 epp2 -444,ic 000046 = 404000000043 000743 aa 6 00450 2521 00 spri2 pr6|296 000744 aa 777072 3520 04 epp2 -454,ic 000036 = 526000000040 000745 aa 6 00452 2521 00 spri2 pr6|298 000746 aa 777101 3520 04 epp2 -447,ic 000047 = 514000000044 000747 aa 6 00454 2521 00 spri2 pr6|300 000750 aa 777075 3520 04 epp2 -451,ic 000045 = 464000000000 000751 aa 6 00456 2521 00 spri2 pr6|302 000752 aa 777051 3520 04 epp2 -471,ic 000023 = 404000000005 000753 aa 6 00460 2521 00 spri2 pr6|304 000754 aa 6 00434 6211 00 eax1 pr6|284 000755 aa 024000 4310 07 fld 10240,dl 000756 la 4 00126 3521 20 epp2 pr4|86,* sub_err_ 000757 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 253 self_destruct: entry (); 000760 aa 000011 7100 04 tra 9,ic 000771 ENTRY TO self_destruct STATEMENT 1 ON LINE 253 self_destruct: entry (); 000761 da 001144200000 000762 aa 000760 6270 00 eax7 496 000763 aa 7 00034 3521 20 epp2 pr7|28,* 000764 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000765 aa 000000000000 000766 aa 000000000000 000767 aa 000001 2360 07 ldq 1,dl 000770 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 256 current_cpd_ptr, cpd_ptr = stackbaseptr () -> stack_header.cpm_data_ptr; 000771 aa 6 00000 3525 00 epbp2 pr6|0 000772 aa 2 00004 3735 20 epp7 pr2|4,* stack_header.cpm_data_ptr 000773 aa 6 00100 6535 00 spri7 pr6|64 current_cpd_ptr 000774 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 258 mask = ""b; 000775 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 259 on any_other call any_other_handler (); 000776 aa 000011 7260 07 lxl6 9,dl 000777 aa 777111 3520 04 epp2 -439,ic 000110 = 141156171137 001000 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 001001 aa 000004 7100 04 tra 4,ic 001005 001002 aa 000122000000 001003 aa 000015 7100 04 tra 13,ic 001020 BEGIN CONDITION any_other.3 ENTRY TO any_other.3 STATEMENT 1 ON LINE 259 on any_other call any_other_handler (); 001004 da 001152200000 001005 aa 000100 6270 00 eax7 64 001006 aa 7 00034 3521 20 epp2 pr7|28,* 001007 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001010 aa 000000000000 001011 aa 000000000000 001012 aa 000001 7270 07 lxl7 1,dl 001013 aa 6 00056 6211 00 eax1 pr6|46 001014 aa 000000 4310 07 fld 0,dl 001015 aa 002531 3520 04 epp2 1369,ic 003546 = 000120627000 001016 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 001017 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.3 STATEMENT 1 ON LINE 261 call update_state (CPM_DESTROYED); 001020 aa 005572 3520 04 epp2 2938,ic 006612 = 000002000000 001021 aa 004102 6700 04 tsp4 2114,ic 005123 STATEMENT 1 ON LINE 263 do while ("1"b); STATEMENT 1 ON LINE 264 call scheduler$find_runnable (); 001022 aa 003315 6700 04 tsp4 1741,ic 004337 STATEMENT 1 ON LINE 265 end; 001023 aa 777777 7100 04 tra -1,ic 001022 STATEMENT 1 ON LINE 269 start: entry (P_control_point_id, P_code); 001024 aa 000017 7100 04 tra 15,ic 001043 ENTRY TO start STATEMENT 1 ON LINE 269 start: entry (P_control_point_id, P_code); 001025 ta 000571000000 001026 da 001157300000 001027 aa 000760 6270 00 eax7 496 001030 aa 7 00034 3521 20 epp2 pr7|28,* 001031 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001032 aa 000004000000 001033 aa 000000000000 001034 aa 6 00032 3735 20 epp7 pr6|26,* 001035 aa 7 00002 3715 20 epp5 pr7|2,* 001036 aa 6 00172 6515 00 spri5 pr6|122 001037 aa 7 00004 3535 20 epp3 pr7|4,* 001040 aa 6 00174 2535 00 spri3 pr6|124 001041 aa 000001 2360 07 ldq 1,dl 001042 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 272 call check_initialization ("cpm_$start"); 001043 aa 777026 2350 04 lda -490,ic 000071 = 143160155137 001044 aa 777026 2360 04 ldq -490,ic 000072 = 044163164141 001045 aa 6 00374 7571 00 staq pr6|252 001046 aa 162164 2350 03 lda 58484,du 001047 aa 6 00376 7551 00 sta pr6|254 001050 aa 005534 3520 04 epp2 2908,ic 006604 = 000002000000 001051 aa 2 00000 2351 00 lda pr2|0 001052 aa 002306 6700 04 tsp4 1222,ic 003360 STATEMENT 1 ON LINE 274 call find_control_point (P_control_point_id); 001053 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 001054 aa 6 00404 2521 00 spri2 pr6|260 001055 aa 6 00402 3521 00 epp2 pr6|258 001056 aa 004000 4310 07 fld 2048,dl 001057 aa 2 00000 7571 00 staq pr2|0 001060 aa 002373 6700 04 tsp4 1275,ic 003453 STATEMENT 1 ON LINE 276 mask = ""b; 001061 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 277 on any_other call any_other_handler (); 001062 aa 000011 7260 07 lxl6 9,dl 001063 aa 777025 3520 04 epp2 -491,ic 000110 = 141156171137 001064 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 001065 aa 000004 7100 04 tra 4,ic 001071 001066 aa 000122000000 001067 aa 000015 7100 04 tra 13,ic 001104 BEGIN CONDITION any_other.4 ENTRY TO any_other.4 STATEMENT 1 ON LINE 277 on any_other call any_other_handler (); 001070 da 001165200000 001071 aa 000100 6270 00 eax7 64 001072 aa 7 00034 3521 20 epp2 pr7|28,* 001073 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001074 aa 000000000000 001075 aa 000000000000 001076 aa 000001 7270 07 lxl7 1,dl 001077 aa 6 00056 6211 00 eax1 pr6|46 001100 aa 000000 4310 07 fld 0,dl 001101 aa 002445 3520 04 epp2 1317,ic 003546 = 000120627000 001102 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 001103 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.4 STATEMENT 1 ON LINE 279 if control_point_data.state = CPM_STOPPED then do; 001104 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 001105 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 001106 aa 000001 1160 07 cmpq 1,dl 001107 aa 000005 6010 04 tnz 5,ic 001114 STATEMENT 1 ON LINE 281 call update_state (CPM_READY); 001110 aa 005470 3520 04 epp2 2872,ic 006600 = 000002000000 001111 aa 004012 6700 04 tsp4 2058,ic 005123 STATEMENT 1 ON LINE 282 P_code = 0; 001112 aa 6 00174 4501 20 stz pr6|124,* P_code STATEMENT 1 ON LINE 283 end; 001113 aa 000004 7100 04 tra 4,ic 001117 STATEMENT 1 ON LINE 285 else P_code = cpm_et_$already_started; 001114 aa 6 00044 3701 20 epp4 pr6|36,* 001115 la 4 00010 2361 20 ldq pr4|8,* cpm_et_$already_started 001116 aa 6 00174 7561 20 stq pr6|124,* P_code STATEMENT 1 ON LINE 287 return; 001117 aa 6 00170 2361 00 ldq pr6|120 001120 aa 000005 6010 04 tnz 5,ic 001125 001121 aa 000027 7260 07 lxl6 23,dl 001122 aa 777016 3520 04 epp2 -498,ic 000140 = 162145164165 001123 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001124 aa 0 00631 7101 00 tra pr0|409 return_mac 001125 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO stop STATEMENT 1 ON LINE 293 stop: entry (P_control_point_id, P_code); 001126 ta 000571000000 001127 da 001172300000 001130 aa 000760 6270 00 eax7 496 001131 aa 7 00034 3521 20 epp2 pr7|28,* 001132 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001133 aa 000004000000 001134 aa 000000000000 001135 aa 6 00032 3735 20 epp7 pr6|26,* 001136 aa 7 00002 3715 20 epp5 pr7|2,* 001137 aa 6 00172 6515 00 spri5 pr6|122 001140 aa 7 00004 3535 20 epp3 pr7|4,* 001141 aa 6 00174 2535 00 spri3 pr6|124 001142 aa 000001 2360 07 ldq 1,dl 001143 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 296 call check_initialization ("cpm_$stop"); 001144 aa 776722 2370 04 ldaq -558,ic 000066 = 143160155137 044163164157 001145 aa 6 00374 7571 00 staq pr6|252 001146 aa 160000 2350 03 lda 57344,du 001147 aa 6 00376 7551 00 sta pr6|254 001150 aa 005422 3520 04 epp2 2834,ic 006572 = 000002000000 001151 aa 2 00000 2351 00 lda pr2|0 001152 aa 002206 6700 04 tsp4 1158,ic 003360 STATEMENT 1 ON LINE 298 call find_control_point (P_control_point_id); 001153 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 001154 aa 6 00404 2521 00 spri2 pr6|260 001155 aa 6 00402 3521 00 epp2 pr6|258 001156 aa 004000 4310 07 fld 2048,dl 001157 aa 2 00000 7571 00 staq pr2|0 001160 aa 002273 6700 04 tsp4 1211,ic 003453 STATEMENT 1 ON LINE 299 if cpd_ptr = addr (cpm_data_$root_control_point_data) then do; 001161 aa 6 00044 3701 20 epp4 pr6|36,* 001162 la 4 00170 3735 20 epp7 pr4|120,* cpm_data_$root_control_point_data 001163 aa 6 00432 6535 00 spri7 pr6|282 001164 aa 6 00432 2371 00 ldaq pr6|282 001165 aa 6 00136 6771 00 eraq pr6|94 cpd_ptr 001166 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001167 aa 000012 6010 04 tnz 10,ic 001201 STATEMENT 1 ON LINE 301 P_code = cpm_et_$cant_stop_root; 001170 la 4 00016 2361 20 ldq pr4|14,* cpm_et_$cant_stop_root 001171 aa 6 00174 7561 20 stq pr6|124,* P_code STATEMENT 1 ON LINE 302 return; 001172 aa 6 00170 2361 00 ldq pr6|120 001173 aa 000005 6010 04 tnz 5,ic 001200 001174 aa 000027 7260 07 lxl6 23,dl 001175 aa 776743 3520 04 epp2 -541,ic 000140 = 162145164165 001176 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001177 aa 0 00631 7101 00 tra pr0|409 return_mac 001200 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 303 end; STATEMENT 1 ON LINE 305 mask = ""b; 001201 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 306 on any_other call any_other_handler (); 001202 aa 000011 7260 07 lxl6 9,dl 001203 aa 776705 3520 04 epp2 -571,ic 000110 = 141156171137 001204 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 001205 aa 000004 7100 04 tra 4,ic 001211 001206 aa 000122000000 001207 aa 000015 7100 04 tra 13,ic 001224 BEGIN CONDITION any_other.5 ENTRY TO any_other.5 STATEMENT 1 ON LINE 306 on any_other call any_other_handler (); 001210 da 001200200000 001211 aa 000100 6270 00 eax7 64 001212 aa 7 00034 3521 20 epp2 pr7|28,* 001213 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001214 aa 000000000000 001215 aa 000000000000 001216 aa 000001 7270 07 lxl7 1,dl 001217 aa 6 00056 6211 00 eax1 pr6|46 001220 aa 000000 4310 07 fld 0,dl 001221 aa 002325 3520 04 epp2 1237,ic 003546 = 000120627000 001222 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 001223 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.5 STATEMENT 1 ON LINE 308 if (control_point_data.state = CPM_READY) | (control_point_data.state = CPM_BLOCKED) then do; 001224 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 001225 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 001226 aa 000003 1160 07 cmpq 3,dl 001227 aa 000003 6000 04 tze 3,ic 001232 001230 aa 000002 1160 07 cmpq 2,dl 001231 aa 000005 6010 04 tnz 5,ic 001236 STATEMENT 1 ON LINE 310 call update_state (CPM_STOPPED); 001232 aa 005334 3520 04 epp2 2780,ic 006566 = 000002000000 001233 aa 003670 6700 04 tsp4 1976,ic 005123 STATEMENT 1 ON LINE 311 P_code = 0; 001234 aa 6 00174 4501 20 stz pr6|124,* P_code STATEMENT 1 ON LINE 312 end; 001235 aa 000004 7100 04 tra 4,ic 001241 STATEMENT 1 ON LINE 314 else P_code = cpm_et_$already_stopped; 001236 aa 6 00044 3701 20 epp4 pr6|36,* 001237 la 4 00012 2361 20 ldq pr4|10,* cpm_et_$already_stopped 001240 aa 6 00174 7561 20 stq pr6|124,* P_code STATEMENT 1 ON LINE 316 return; 001241 aa 6 00170 2361 00 ldq pr6|120 001242 aa 000005 6010 04 tnz 5,ic 001247 001243 aa 000027 7260 07 lxl6 23,dl 001244 aa 776674 3520 04 epp2 -580,ic 000140 = 162145164165 001245 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001246 aa 0 00631 7101 00 tra pr0|409 return_mac 001247 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO block STATEMENT 1 ON LINE 320 block: entry (); 001250 da 001205200000 001251 aa 000760 6270 00 eax7 496 001252 aa 7 00034 3521 20 epp2 pr7|28,* 001253 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001254 aa 000000000000 001255 aa 000000000000 001256 aa 000001 2360 07 ldq 1,dl 001257 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 323 call check_initialization ("cpm_$block"); 001260 aa 776603 2350 04 lda -637,ic 000063 = 143160155137 001261 aa 776603 2360 04 ldq -637,ic 000064 = 044142154157 001262 aa 6 00374 7571 00 staq pr6|252 001263 aa 143153 2350 03 lda 50795,du 001264 aa 6 00376 7551 00 sta pr6|254 001265 aa 005317 3520 04 epp2 2767,ic 006604 = 000002000000 001266 aa 2 00000 2351 00 lda pr2|0 001267 aa 002071 6700 04 tsp4 1081,ic 003360 STATEMENT 1 ON LINE 324 cpd_ptr = current_cpd_ptr; 001270 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 001271 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 326 mask = ""b; 001272 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 327 on any_other call any_other_handler (); 001273 aa 000011 7260 07 lxl6 9,dl 001274 aa 776614 3520 04 epp2 -628,ic 000110 = 141156171137 001275 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 001276 aa 000004 7100 04 tra 4,ic 001302 001277 aa 000122000000 001300 aa 000015 7100 04 tra 13,ic 001315 BEGIN CONDITION any_other.6 ENTRY TO any_other.6 STATEMENT 1 ON LINE 327 on any_other call any_other_handler (); 001301 da 001213200000 001302 aa 000100 6270 00 eax7 64 001303 aa 7 00034 3521 20 epp2 pr7|28,* 001304 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001305 aa 000000000000 001306 aa 000000000000 001307 aa 000001 7270 07 lxl7 1,dl 001310 aa 6 00056 6211 00 eax1 pr6|46 001311 aa 000000 4310 07 fld 0,dl 001312 aa 002234 3520 04 epp2 1180,ic 003546 = 000120627000 001313 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 001314 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.6 STATEMENT 1 ON LINE 329 if control_point_data.state = CPM_READY then call update_state (CPM_BLOCKED); 001315 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 001316 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 001317 aa 000003 1160 07 cmpq 3,dl 001320 aa 000003 6010 04 tnz 3,ic 001323 001321 aa 005241 3520 04 epp2 2721,ic 006562 = 000002000000 001322 aa 003601 6700 04 tsp4 1921,ic 005123 STATEMENT 1 ON LINE 332 return; 001323 aa 6 00170 2361 00 ldq pr6|120 001324 aa 000005 6010 04 tnz 5,ic 001331 001325 aa 000027 7260 07 lxl6 23,dl 001326 aa 776612 3520 04 epp2 -630,ic 000140 = 162145164165 001327 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001330 aa 0 00631 7101 00 tra pr0|409 return_mac 001331 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO wakeup STATEMENT 1 ON LINE 338 wakeup: entry (P_control_point_id, P_code); 001332 ta 000571000000 001333 da 001220300000 001334 aa 000760 6270 00 eax7 496 001335 aa 7 00034 3521 20 epp2 pr7|28,* 001336 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001337 aa 000004000000 001340 aa 000000000000 001341 aa 6 00032 3735 20 epp7 pr6|26,* 001342 aa 7 00002 3715 20 epp5 pr7|2,* 001343 aa 6 00172 6515 00 spri5 pr6|122 001344 aa 7 00004 3535 20 epp3 pr7|4,* 001345 aa 6 00174 2535 00 spri3 pr6|124 001346 aa 000001 2360 07 ldq 1,dl 001347 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 341 call check_initialization ("cpm_$wakeup"); 001350 aa 776510 2370 04 ldaq -696,ic 000060 = 143160155137 044167141153 001351 aa 6 00374 7571 00 staq pr6|252 001352 aa 776510 2350 04 lda -696,ic 000062 = 145165160000 001353 aa 6 00376 7551 00 sta pr6|254 001354 aa 005200 3520 04 epp2 2688,ic 006554 = 000002000000 001355 aa 2 00000 2351 00 lda pr2|0 001356 aa 002002 6700 04 tsp4 1026,ic 003360 STATEMENT 1 ON LINE 343 call find_control_point (P_control_point_id); 001357 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 001360 aa 6 00404 2521 00 spri2 pr6|260 001361 aa 6 00402 3521 00 epp2 pr6|258 001362 aa 004000 4310 07 fld 2048,dl 001363 aa 2 00000 7571 00 staq pr2|0 001364 aa 002067 6700 04 tsp4 1079,ic 003453 STATEMENT 1 ON LINE 345 mask = ""b; 001365 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 346 on any_other call any_other_handler (); 001366 aa 000011 7260 07 lxl6 9,dl 001367 aa 776521 3520 04 epp2 -687,ic 000110 = 141156171137 001370 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 001371 aa 000004 7100 04 tra 4,ic 001375 001372 aa 000122000000 001373 aa 000015 7100 04 tra 13,ic 001410 BEGIN CONDITION any_other.7 ENTRY TO any_other.7 STATEMENT 1 ON LINE 346 on any_other call any_other_handler (); 001374 da 001226200000 001375 aa 000100 6270 00 eax7 64 001376 aa 7 00034 3521 20 epp2 pr7|28,* 001377 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001400 aa 000000000000 001401 aa 000000000000 001402 aa 000001 7270 07 lxl7 1,dl 001403 aa 6 00056 6211 00 eax1 pr6|46 001404 aa 000000 4310 07 fld 0,dl 001405 aa 002141 3520 04 epp2 1121,ic 003546 = 000120627000 001406 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 001407 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.7 STATEMENT 1 ON LINE 348 if control_point_data.state = CPM_BLOCKED then do; 001410 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 001411 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 001412 aa 000002 1160 07 cmpq 2,dl 001413 aa 000005 6010 04 tnz 5,ic 001420 STATEMENT 1 ON LINE 350 call update_state (CPM_READY); 001414 aa 005164 3520 04 epp2 2676,ic 006600 = 000002000000 001415 aa 003506 6700 04 tsp4 1862,ic 005123 STATEMENT 1 ON LINE 351 P_code = 0; 001416 aa 6 00174 4501 20 stz pr6|124,* P_code STATEMENT 1 ON LINE 352 end; 001417 aa 000012 7100 04 tra 10,ic 001431 STATEMENT 1 ON LINE 354 else if control_point_data.state = CPM_READY /* it's already awake */ then P_code = cpm_et_$wakeup_ignored; 001420 aa 000003 1160 07 cmpq 3,dl 001421 aa 000005 6010 04 tnz 5,ic 001426 001422 aa 6 00044 3701 20 epp4 pr6|36,* 001423 la 4 00030 2361 20 ldq pr4|24,* cpm_et_$wakeup_ignored 001424 aa 6 00174 7561 20 stq pr6|124,* P_code 001425 aa 000004 7100 04 tra 4,ic 001431 STATEMENT 1 ON LINE 357 else P_code = cpm_et_$cant_wakeup_when_stopped; 001426 aa 6 00044 3701 20 epp4 pr6|36,* 001427 la 4 00020 2361 20 ldq pr4|16,* cpm_et_$cant_wakeup_when_stopped 001430 aa 6 00174 7561 20 stq pr6|124,* P_code STATEMENT 1 ON LINE 359 return; 001431 aa 6 00170 2361 00 ldq pr6|120 001432 aa 000005 6010 04 tnz 5,ic 001437 001433 aa 000027 7260 07 lxl6 23,dl 001434 aa 776504 3520 04 epp2 -700,ic 000140 = 162145164165 001435 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001436 aa 0 00631 7101 00 tra pr0|409 return_mac 001437 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO scheduler STATEMENT 1 ON LINE 363 scheduler: entry (); 001440 da 001234200000 001441 aa 000760 6270 00 eax7 496 001442 aa 7 00034 3521 20 epp2 pr7|28,* 001443 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001444 aa 000000000000 001445 aa 000000000000 001446 aa 000001 2360 07 ldq 1,dl 001447 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 366 call check_initialization ("cpm_$scheduler"); 001450 aa 776443 2350 04 lda -733,ic 000113 = 143160155137 001451 aa 776443 2360 04 ldq -733,ic 000114 = 044163143150 001452 aa 6 00374 7571 00 staq pr6|252 001453 aa 776442 2350 04 lda -734,ic 000115 = 145144165154 001454 aa 145162 2360 03 ldq 51826,du 001455 aa 6 00376 7571 00 staq pr6|254 001456 aa 005070 3520 04 epp2 2616,ic 006546 = 000002000000 001457 aa 2 00000 2351 00 lda pr2|0 001460 aa 001700 6700 04 tsp4 960,ic 003360 STATEMENT 1 ON LINE 368 mask = ""b; 001461 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 369 on any_other call any_other_handler (); 001462 aa 000011 7260 07 lxl6 9,dl 001463 aa 776425 3520 04 epp2 -747,ic 000110 = 141156171137 001464 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 001465 aa 000004 7100 04 tra 4,ic 001471 001466 aa 000122000000 001467 aa 000015 7100 04 tra 13,ic 001504 BEGIN CONDITION any_other.8 ENTRY TO any_other.8 STATEMENT 1 ON LINE 369 on any_other call any_other_handler (); 001470 da 001242200000 001471 aa 000100 6270 00 eax7 64 001472 aa 7 00034 3521 20 epp2 pr7|28,* 001473 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 001474 aa 000000000000 001475 aa 000000000000 001476 aa 000001 7270 07 lxl7 1,dl 001477 aa 6 00056 6211 00 eax1 pr6|46 001500 aa 000000 4310 07 fld 0,dl 001501 aa 002045 3520 04 epp2 1061,ic 003546 = 000120627000 001502 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 001503 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.8 STATEMENT 1 ON LINE 371 call scheduler$find_runnable (); 001504 aa 002633 6700 04 tsp4 1435,ic 004337 STATEMENT 1 ON LINE 373 return; 001505 aa 6 00170 2361 00 ldq pr6|120 001506 aa 000005 6010 04 tnz 5,ic 001513 001507 aa 000027 7260 07 lxl6 23,dl 001510 aa 776430 3520 04 epp2 -744,ic 000140 = 162145164165 001511 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001512 aa 0 00631 7101 00 tra pr0|409 return_mac 001513 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO get_user_cl_intermediary STATEMENT 1 ON LINE 381 get_user_cl_intermediary: entry (P_control_point_id, P_user_cl_intermediary, P_code); 001514 at 000003000047 001515 tt 000043000046 001516 ta 001514000000 001517 da 001254300000 001520 aa 000760 6270 00 eax7 496 001521 aa 7 00034 3521 20 epp2 pr7|28,* 001522 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001523 aa 000006000000 001524 aa 000000000000 001525 aa 6 00032 3735 20 epp7 pr6|26,* 001526 aa 7 00002 3715 20 epp5 pr7|2,* 001527 aa 6 00172 6515 00 spri5 pr6|122 001530 aa 7 00006 3535 20 epp3 pr7|6,* 001531 aa 6 00174 2535 00 spri3 pr6|124 001532 aa 000001 2360 07 ldq 1,dl 001533 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 384 call check_initialization ("cpm_$get_user_cl_intermediary"); 001534 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001535 aa 776471 00 0040 desc9a -711,32 000225 = 143160155137 001536 aa 6 00402 00 0040 desc9a pr6|258,32 001537 aa 005001 3520 04 epp2 2561,ic 006540 = 000002000000 001540 aa 2 00000 2351 00 lda pr2|0 001541 aa 001617 6700 04 tsp4 911,ic 003360 STATEMENT 1 ON LINE 386 call find_control_point (P_control_point_id); 001542 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 001543 aa 6 00404 2521 00 spri2 pr6|260 001544 aa 6 00402 3521 00 epp2 pr6|258 001545 aa 004000 4310 07 fld 2048,dl 001546 aa 2 00000 7571 00 staq pr2|0 001547 aa 001704 6700 04 tsp4 964,ic 003453 STATEMENT 1 ON LINE 388 P_user_cl_intermediary = control_point_data.user_cl_intermediary; 001550 aa 6 00032 3735 20 epp7 pr6|26,* 001551 aa 7 00004 3715 20 epp5 pr7|4,* 001552 aa 6 00136 3535 20 epp3 pr6|94,* cpd_ptr 001553 aa 3 00034 3521 20 epp2 pr3|28,* control_point_data.user_cl_intermediary 001554 aa 5 00000 2521 00 spri2 pr5|0 P_user_cl_intermediary 001555 aa 3 00036 3521 20 epp2 pr3|30,* control_point_data.user_cl_intermediary 001556 aa 5 00002 2521 00 spri2 pr5|2 P_user_cl_intermediary STATEMENT 1 ON LINE 390 P_code = 0; 001557 aa 6 00174 4501 20 stz pr6|124,* P_code STATEMENT 1 ON LINE 392 return; 001560 aa 6 00170 2361 00 ldq pr6|120 001561 aa 000005 6010 04 tnz 5,ic 001566 001562 aa 000027 7260 07 lxl6 23,dl 001563 aa 776355 3520 04 epp2 -787,ic 000140 = 162145164165 001564 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001565 aa 0 00631 7101 00 tra pr0|409 return_mac 001566 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO set_user_cl_intermediary STATEMENT 1 ON LINE 399 set_user_cl_intermediary: entry (P_control_point_id, P_user_cl_intermediary, P_code); 001567 ta 001514000000 001570 da 001266300000 001571 aa 000760 6270 00 eax7 496 001572 aa 7 00034 3521 20 epp2 pr7|28,* 001573 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001574 aa 000006000000 001575 aa 000000000000 001576 aa 6 00032 3735 20 epp7 pr6|26,* 001577 aa 7 00002 3715 20 epp5 pr7|2,* 001600 aa 6 00172 6515 00 spri5 pr6|122 001601 aa 7 00006 3535 20 epp3 pr7|6,* 001602 aa 6 00174 2535 00 spri3 pr6|124 001603 aa 000001 2360 07 ldq 1,dl 001604 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 402 call check_initialization ("cpm_$set_user_cl_intermediary"); 001605 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001606 aa 776410 00 0040 desc9a -760,32 000215 = 143160155137 001607 aa 6 00402 00 0040 desc9a pr6|258,32 001610 aa 004730 3520 04 epp2 2520,ic 006540 = 000002000000 001611 aa 2 00000 2351 00 lda pr2|0 001612 aa 001546 6700 04 tsp4 870,ic 003360 STATEMENT 1 ON LINE 404 call find_control_point (P_control_point_id); 001613 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 001614 aa 6 00404 2521 00 spri2 pr6|260 001615 aa 6 00402 3521 00 epp2 pr6|258 001616 aa 004000 4310 07 fld 2048,dl 001617 aa 2 00000 7571 00 staq pr2|0 001620 aa 001633 6700 04 tsp4 923,ic 003453 STATEMENT 1 ON LINE 406 control_point_data.user_cl_intermediary = P_user_cl_intermediary; 001621 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 001622 aa 6 00032 3715 20 epp5 pr6|26,* 001623 aa 5 00004 3535 20 epp3 pr5|4,* 001624 aa 3 00000 3521 20 epp2 pr3|0,* P_user_cl_intermediary 001625 aa 7 00034 2521 00 spri2 pr7|28 control_point_data.user_cl_intermediary 001626 aa 3 00002 3521 20 epp2 pr3|2,* P_user_cl_intermediary 001627 aa 7 00036 2521 00 spri2 pr7|30 control_point_data.user_cl_intermediary STATEMENT 1 ON LINE 408 P_code = 0; 001630 aa 6 00174 4501 20 stz pr6|124,* P_code STATEMENT 1 ON LINE 410 return; 001631 aa 6 00170 2361 00 ldq pr6|120 001632 aa 000005 6010 04 tnz 5,ic 001637 001633 aa 000027 7260 07 lxl6 23,dl 001634 aa 776304 3520 04 epp2 -828,ic 000140 = 162145164165 001635 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 001636 aa 0 00631 7101 00 tra pr0|409 return_mac 001637 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO nulle STATEMENT 1 ON LINE 416 nulle: entry () options (variable); 001640 da 001273240000 001641 aa 000760 6270 00 eax7 496 001642 aa 7 00034 3521 20 epp2 pr7|28,* 001643 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001644 aa 000000000000 001645 aa 000000000000 001646 aa 000001 2360 07 ldq 1,dl 001647 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 419 call sub_err_ (error_table_$badcall, cpm_data_$subsystem_name, ACTION_CANT_RESTART, null (), 0, "The ""null"" entry value can not be invoked."); 001650 aa 776204 3734 24 epp7 -892,ic* 001651 aa 6 00462 6535 00 spri7 pr6|306 001652 aa 6 00400 4501 00 stz pr6|256 001653 aa 000 100 100 404 mlr (ic),(pr),fill(000) 001654 aa 776373 00 0054 desc9a -773,44 000246 = 124150145040 001655 aa 6 00402 00 0054 desc9a pr6|258,44 001656 aa 6 00044 3701 20 epp4 pr6|36,* 001657 la 4 00032 3521 20 epp2 pr4|26,* error_table_$badcall 001660 aa 6 00466 2521 00 spri2 pr6|310 001661 la 4 00166 3521 20 epp2 pr4|118,* cpm_data_$subsystem_name 001662 aa 6 00470 2521 00 spri2 pr6|312 001663 aa 776137 3520 04 epp2 -929,ic 000022 = 400000000000 001664 aa 6 00472 2521 00 spri2 pr6|314 001665 aa 6 00462 3521 00 epp2 pr6|306 001666 aa 6 00474 2521 00 spri2 pr6|316 001667 aa 6 00400 3521 00 epp2 pr6|256 001670 aa 6 00476 2521 00 spri2 pr6|318 001671 aa 6 00402 3521 00 epp2 pr6|258 001672 aa 6 00500 2521 00 spri2 pr6|320 001673 aa 776153 3520 04 epp2 -917,ic 000046 = 404000000043 001674 aa 6 00502 2521 00 spri2 pr6|322 001675 aa 776141 3520 04 epp2 -927,ic 000036 = 526000000040 001676 aa 6 00504 2521 00 spri2 pr6|324 001677 aa 776150 3520 04 epp2 -920,ic 000047 = 514000000044 001700 aa 6 00506 2521 00 spri2 pr6|326 001701 aa 776144 3520 04 epp2 -924,ic 000045 = 464000000000 001702 aa 6 00510 2521 00 spri2 pr6|328 001703 aa 776120 3520 04 epp2 -944,ic 000023 = 404000000005 001704 aa 6 00512 2521 00 spri2 pr6|330 001705 aa 776107 3520 04 epp2 -953,ic 000014 = 524000000052 001706 aa 6 00514 2521 00 spri2 pr6|332 001707 aa 6 00464 6211 00 eax1 pr6|308 001710 aa 030000 4310 07 fld 12288,dl 001711 la 4 00126 3521 20 epp2 pr4|86,* sub_err_ 001712 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 424 generate_call: /* ... run it immediately */ entry (P_control_point_id, P_userproc, P_userproc_info_ptr, P_code); 001713 aa 000022 7100 04 tra 18,ic 001735 ENTRY TO generate_call STATEMENT 1 ON LINE 424 generate_call: /* ... run it immediately */ entry (P_control_point_id, P_userproc, P_userproc_info_ptr, P_code); 001714 at 000004000047 001715 tt 000043000045 001716 ta 000046000000 001717 ta 001714000000 001720 da 001276300000 001721 aa 000760 6270 00 eax7 496 001722 aa 7 00034 3521 20 epp2 pr7|28,* 001723 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001724 aa 000010000000 001725 aa 000000000000 001726 aa 6 00032 3735 20 epp7 pr6|26,* 001727 aa 7 00002 3715 20 epp5 pr7|2,* 001730 aa 6 00172 6515 00 spri5 pr6|122 001731 aa 7 00010 3535 20 epp3 pr7|8,* 001732 aa 6 00174 2535 00 spri3 pr6|124 001733 aa 000001 2360 07 ldq 1,dl 001734 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 427 generate_call_flags = CPM_GC_FORCE_READY; 001735 aa 400000 2350 03 lda 131072,du 001736 aa 6 00114 7551 00 sta pr6|76 generate_call_flags STATEMENT 1 ON LINE 428 go to BEGIN_GENERATE_CALL; 001737 aa 000043 7100 04 tra 35,ic 002002 ENTRY TO generate_call_preferred STATEMENT 1 ON LINE 431 generate_call_preferred: /* ... run it immediately as the preferred control point */ entry (P_control_point_id, P_userproc, P_userproc_info_ptr, P_code); 001740 ta 001714000000 001741 da 001307300000 001742 aa 000760 6270 00 eax7 496 001743 aa 7 00034 3521 20 epp2 pr7|28,* 001744 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001745 aa 000010000000 001746 aa 000000000000 001747 aa 6 00032 3735 20 epp7 pr6|26,* 001750 aa 7 00002 3715 20 epp5 pr7|2,* 001751 aa 6 00172 6515 00 spri5 pr6|122 001752 aa 7 00010 3535 20 epp3 pr7|8,* 001753 aa 6 00174 2535 00 spri3 pr6|124 001754 aa 000001 2360 07 ldq 1,dl 001755 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 434 generate_call_flags = CPM_GC_FORCE_READY | CPM_GC_PUSH_PREFERRED; 001756 aa 400000 2350 03 lda 131072,du 001757 aa 200000 2750 03 ora 65536,du 001760 aa 6 00114 7551 00 sta pr6|76 generate_call_flags STATEMENT 1 ON LINE 435 go to BEGIN_GENERATE_CALL; 001761 aa 000021 7100 04 tra 17,ic 002002 ENTRY TO generate_call_when_ready STATEMENT 1 ON LINE 438 generate_call_when_ready: /* ... run it when it next becomes READY */ entry (P_control_point_id, P_userproc, P_userproc_info_ptr, P_code); 001762 ta 001714000000 001763 da 001321300000 001764 aa 000760 6270 00 eax7 496 001765 aa 7 00034 3521 20 epp2 pr7|28,* 001766 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001767 aa 000010000000 001770 aa 000000000000 001771 aa 6 00032 3735 20 epp7 pr6|26,* 001772 aa 7 00002 3715 20 epp5 pr7|2,* 001773 aa 6 00172 6515 00 spri5 pr6|122 001774 aa 7 00010 3535 20 epp3 pr7|8,* 001775 aa 6 00174 2535 00 spri3 pr6|124 001776 aa 000001 2360 07 ldq 1,dl 001777 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 441 generate_call_flags = ""b; 002000 aa 6 00114 4501 00 stz pr6|76 generate_call_flags STATEMENT 1 ON LINE 442 go to BEGIN_GENERATE_CALL; 002001 aa 000001 7100 04 tra 1,ic 002002 STATEMENT 1 ON LINE 445 BEGIN_GENERATE_CALL: call check_initialization ("cpm_$generate_call"); 002002 aa 000 100 100 404 mlr (ic),(pr),fill(000) 002003 aa 776131 00 0024 desc9a -935,20 000133 = 143160155137 002004 aa 6 00402 00 0024 desc9a pr6|258,20 002005 aa 004525 3520 04 epp2 2389,ic 006532 = 000002000000 002006 aa 2 00000 2351 00 lda pr2|0 002007 aa 001351 6700 04 tsp4 745,ic 003360 STATEMENT 1 ON LINE 448 call find_control_point (P_control_point_id); 002010 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 002011 aa 6 00404 2521 00 spri2 pr6|260 002012 aa 6 00402 3521 00 epp2 pr6|258 002013 aa 004000 4310 07 fld 2048,dl 002014 aa 2 00000 7571 00 staq pr2|0 002015 aa 001436 6700 04 tsp4 798,ic 003453 STATEMENT 1 ON LINE 450 mask = ""b; 002016 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 451 on any_other call any_other_handler (); 002017 aa 000011 7260 07 lxl6 9,dl 002020 aa 776070 3520 04 epp2 -968,ic 000110 = 141156171137 002021 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 002022 aa 000004 7100 04 tra 4,ic 002026 002023 aa 000122000000 002024 aa 000015 7100 04 tra 13,ic 002041 BEGIN CONDITION any_other.9 ENTRY TO any_other.9 STATEMENT 1 ON LINE 451 on any_other call any_other_handler (); 002025 da 001327200000 002026 aa 000100 6270 00 eax7 64 002027 aa 7 00034 3521 20 epp2 pr7|28,* 002030 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 002031 aa 000000000000 002032 aa 000000000000 002033 aa 000001 7270 07 lxl7 1,dl 002034 aa 6 00056 6211 00 eax1 pr6|46 002035 aa 000000 4310 07 fld 0,dl 002036 aa 001510 3520 04 epp2 840,ic 003546 = 000120627000 002037 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 002040 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION any_other.9 STATEMENT 1 ON LINE 454 if current_cpd_ptr = cpd_ptr then do; 002041 aa 6 00100 2371 00 ldaq pr6|64 current_cpd_ptr 002042 aa 6 00136 6771 00 eraq pr6|94 cpd_ptr 002043 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002044 aa 000204 6010 04 tnz 132,ic 002250 STATEMENT 1 ON LINE 462 call mask_ips_interrupts (mask); 002045 aa 004461 3520 04 epp2 2353,ic 006526 = 000002000000 002046 aa 001437 6700 04 tsp4 799,ic 003505 STATEMENT 1 ON LINE 463 current_control_point_data.ips_mask = mask; 002047 aa 6 00121 2351 00 lda pr6|81 mask 002050 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002051 aa 7 00060 7551 00 sta pr7|48 current_control_point_data.ips_mask STATEMENT 1 ON LINE 465 current_control_point_data.privileges = get_privileges_ (); 002052 aa 7 00061 3521 00 epp2 pr7|49 current_control_point_data.privileges 002053 aa 6 00376 2521 00 spri2 pr6|254 002054 aa 6 00374 6211 00 eax1 pr6|252 002055 aa 004000 4310 07 fld 2048,dl 002056 aa 6 00044 3701 20 epp4 pr6|36,* 002057 la 4 00102 3521 20 epp2 pr4|66,* get_privileges_ 002060 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 466 call cu_$get_cl_intermediary (current_control_point_data.cl_intermediary); 002061 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002062 aa 7 00062 3521 00 epp2 pr7|50 current_control_point_data.cl_intermediary 002063 aa 6 00376 2521 00 spri2 pr6|254 002064 aa 6 00374 6211 00 eax1 pr6|252 002065 aa 004000 4310 07 fld 2048,dl 002066 aa 6 00044 3701 20 epp4 pr6|36,* 002067 la 4 00076 3521 20 epp2 pr4|62,* cu_$get_cl_intermediary 002070 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 468 if current_control_point_data.swapped_switches | different_switches (current_cpd_ptr, cpm_data_$previous_control_point) then call save_io_switches (); 002071 aa 6 00100 3521 00 epp2 pr6|64 current_cpd_ptr 002072 aa 6 00404 2521 00 spri2 pr6|260 002073 aa 6 00044 3701 20 epp4 pr6|36,* 002074 la 4 00202 3521 20 epp2 pr4|130,* cpm_data_$previous_control_point 002075 aa 6 00406 2521 00 spri2 pr6|262 002076 aa 6 00400 3521 00 epp2 pr6|256 002077 aa 6 00410 2521 00 spri2 pr6|264 002100 aa 6 00402 3521 00 epp2 pr6|258 002101 aa 014000 4310 07 fld 6144,dl 002102 aa 2 00000 7571 00 staq pr2|0 002103 aa 002154 6700 04 tsp4 1132,ic 004257 002104 aa 6 00400 2351 00 lda pr6|256 002105 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 002106 aa 6 00400 7551 00 sta pr6|256 002107 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002110 aa 7 00003 2351 00 lda pr7|3 current_control_point_data.swapped_switches 002111 aa 000001 7350 00 als 1 002112 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 002113 aa 6 00400 2751 00 ora pr6|256 002114 aa 000002 6000 04 tze 2,ic 002116 002115 aa 001742 6700 04 tsp4 994,ic 004057 STATEMENT 1 ON LINE 472 if trace_$transaction_begin (1) /* disable tracing temporarily */ then ; 002116 aa 775734 2370 04 ldaq -1060,ic 000052 = 000000000000 000000000001 002117 aa 6 00462 7571 00 staq pr6|306 002120 aa 6 00462 3521 00 epp2 pr6|306 002121 aa 6 00404 2521 00 spri2 pr6|260 002122 aa 6 00400 3521 00 epp2 pr6|256 002123 aa 6 00406 2521 00 spri2 pr6|262 002124 aa 6 00402 6211 00 eax1 pr6|258 002125 aa 010000 4310 07 fld 4096,dl 002126 aa 6 00044 3701 20 epp4 pr6|36,* 002127 la 4 00222 3521 20 epp2 pr4|146,* trace_$transaction_begin 002130 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 002131 aa 6 00400 2351 00 lda pr6|256 002132 aa 400000 3150 03 cana 131072,du 002133 aa 000001 6000 04 tze 1,ic 002134 STATEMENT 1 ON LINE 475 unspec (userproc_arg_list.header) = ""b; 002134 aa 775714 2370 04 ldaq -1076,ic 000050 = 000000000000 000000000000 002135 aa 6 00110 7571 00 staq pr6|72 STATEMENT 1 ON LINE 476 userproc_arg_list.header.call_type = Interseg_call_type; 002136 aa 000004 2350 07 lda 4,dl 002137 aa 6 00110 5511 14 stba pr6|72,14 userproc_arg_list.call_type STATEMENT 1 ON LINE 477 userproc_arg_list.header.arg_count = 1; 002140 aa 000002 2350 03 lda 2,du 002141 aa 6 00110 6751 00 era pr6|72 userproc_arg_list.arg_count 002142 aa 0 00042 3751 00 ana pr0|34 = 777776000000 002143 aa 6 00110 6551 00 ersa pr6|72 userproc_arg_list.arg_count STATEMENT 1 ON LINE 478 userproc_arg_list.arg_ptrs (1) = addr (P_userproc_info_ptr); 002144 aa 6 00032 3735 20 epp7 pr6|26,* 002145 aa 7 00006 3715 20 epp5 pr7|6,* P_userproc_info_ptr 002146 aa 6 00112 6515 00 spri5 pr6|74 userproc_arg_list.arg_ptrs STATEMENT 1 ON LINE 480 call cpm_overseer_$generate_call (addr (generate_call_flags), P_userproc, addr (userproc_arg_list)); 002147 aa 6 00114 3535 00 epp3 pr6|76 generate_call_flags 002150 aa 6 00462 2535 00 spri3 pr6|306 002151 aa 6 00110 3515 00 epp1 pr6|72 userproc_arg_list 002152 aa 6 00516 2515 00 spri1 pr6|334 002153 aa 6 00462 3521 00 epp2 pr6|306 002154 aa 6 00404 2521 00 spri2 pr6|260 002155 aa 7 00004 3521 20 epp2 pr7|4,* P_userproc 002156 aa 6 00406 2521 00 spri2 pr6|262 002157 aa 6 00516 3521 00 epp2 pr6|334 002160 aa 6 00410 2521 00 spri2 pr6|264 002161 aa 6 00402 6211 00 eax1 pr6|258 002162 aa 014000 4310 07 fld 6144,dl 002163 aa 6 00044 3701 20 epp4 pr6|36,* 002164 la 4 00074 3521 20 epp2 pr4|60,* cpm_overseer_$generate_call 002165 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 483 if trace_$transaction_end (1) /* turn tracing back on */ then ; 002166 aa 775664 2370 04 ldaq -1100,ic 000052 = 000000000000 000000000001 002167 aa 6 00516 7571 00 staq pr6|334 002170 aa 6 00516 3521 00 epp2 pr6|334 002171 aa 6 00404 2521 00 spri2 pr6|260 002172 aa 6 00400 3521 00 epp2 pr6|256 002173 aa 6 00406 2521 00 spri2 pr6|262 002174 aa 6 00402 6211 00 eax1 pr6|258 002175 aa 010000 4310 07 fld 4096,dl 002176 aa 6 00044 3701 20 epp4 pr6|36,* 002177 la 4 00224 3521 20 epp2 pr4|148,* trace_$transaction_end 002200 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 002201 aa 6 00400 2351 00 lda pr6|256 002202 aa 400000 3150 03 cana 131072,du 002203 aa 000001 6000 04 tze 1,ic 002204 STATEMENT 1 ON LINE 486 if current_control_point_data.swapped_switches | different_switches (current_cpd_ptr, cpm_data_$previous_control_point) then call restore_io_switches (); 002204 aa 6 00100 3521 00 epp2 pr6|64 current_cpd_ptr 002205 aa 6 00404 2521 00 spri2 pr6|260 002206 aa 6 00044 3701 20 epp4 pr6|36,* 002207 la 4 00202 3521 20 epp2 pr4|130,* cpm_data_$previous_control_point 002210 aa 6 00406 2521 00 spri2 pr6|262 002211 aa 6 00400 3521 00 epp2 pr6|256 002212 aa 6 00410 2521 00 spri2 pr6|264 002213 aa 6 00402 3521 00 epp2 pr6|258 002214 aa 014000 4310 07 fld 6144,dl 002215 aa 2 00000 7571 00 staq pr2|0 002216 aa 002041 6700 04 tsp4 1057,ic 004257 002217 aa 6 00400 2351 00 lda pr6|256 002220 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 002221 aa 6 00400 7551 00 sta pr6|256 002222 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002223 aa 7 00003 2351 00 lda pr7|3 current_control_point_data.swapped_switches 002224 aa 000001 7350 00 als 1 002225 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 002226 aa 6 00400 2751 00 ora pr6|256 002227 aa 000002 6000 04 tze 2,ic 002231 002230 aa 001727 6700 04 tsp4 983,ic 004157 STATEMENT 1 ON LINE 490 call cu_$set_cl_intermediary (current_control_point_data.cl_intermediary); 002231 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002232 aa 7 00062 3521 00 epp2 pr7|50 current_control_point_data.cl_intermediary 002233 aa 6 00376 2521 00 spri2 pr6|254 002234 aa 6 00374 6211 00 eax1 pr6|252 002235 aa 004000 4310 07 fld 2048,dl 002236 aa 6 00044 3701 20 epp4 pr6|36,* 002237 la 4 00100 3521 20 epp2 pr4|64,* cu_$set_cl_intermediary 002240 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 491 call restore_privileges (); 002241 aa 001332 6700 04 tsp4 730,ic 003573 STATEMENT 1 ON LINE 493 mask = current_control_point_data.ips_mask; 002242 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002243 aa 7 00060 2351 00 lda pr7|48 current_control_point_data.ips_mask 002244 aa 6 00121 7551 00 sta pr6|81 mask STATEMENT 1 ON LINE 494 call unmask_ips_interrupts (mask); 002245 aa 004261 3520 04 epp2 2225,ic 006526 = 000002000000 002246 aa 001256 6700 04 tsp4 686,ic 003524 STATEMENT 1 ON LINE 495 end; 002247 aa 000061 7100 04 tra 49,ic 002330 STATEMENT 1 ON LINE 498 else do; STATEMENT 1 ON LINE 505 call push_call_frame (cpm_alm_$call_generate_call, generate_call_flags, P_userproc, P_userproc_info_ptr); 002250 aa 6 00044 3701 20 epp4 pr6|36,* 002251 la 4 00064 3521 20 epp2 pr4|52,* cpm_alm_$call_generate_call 002252 aa 6 00374 2521 00 spri2 pr6|252 cp.971 002253 aa 004351 2370 04 ldaq 2281,ic 006624 = 077777000043 000001000000 002254 aa 6 00376 7571 00 staq pr6|254 cp.971 002255 aa 6 00374 3521 00 epp2 pr6|252 cp.971 002256 aa 6 00404 2521 00 spri2 pr6|260 002257 aa 6 00114 3521 00 epp2 pr6|76 generate_call_flags 002260 aa 6 00406 2521 00 spri2 pr6|262 002261 aa 6 00032 3735 20 epp7 pr6|26,* 002262 aa 7 00004 3521 20 epp2 pr7|4,* P_userproc 002263 aa 6 00410 2521 00 spri2 pr6|264 002264 aa 7 00006 3521 20 epp2 pr7|6,* P_userproc_info_ptr 002265 aa 6 00412 2521 00 spri2 pr6|266 002266 aa 775555 3520 04 epp2 -1171,ic 000043 = 500000000000 002267 aa 6 00416 2521 00 spri2 pr6|270 002270 aa 6 00422 2521 00 spri2 pr6|274 002271 aa 775556 3520 04 epp2 -1170,ic 000047 = 514000000044 002272 aa 6 00420 2521 00 spri2 pr6|272 002273 aa 775552 3520 04 epp2 -1174,ic 000045 = 464000000000 002274 aa 6 00424 2521 00 spri2 pr6|276 002275 aa 6 00402 6211 00 eax1 pr6|258 002276 aa 020000 4310 07 fld 8192,dl 002277 aa 004010 3520 04 epp2 2056,ic 006307 = 000120627000 002300 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 508 if generate_call_flags & CPM_GC_FORCE_READY then do; 002301 aa 6 00114 2351 00 lda pr6|76 generate_call_flags 002302 aa 400000 3150 03 cana 131072,du 002303 aa 000025 6000 04 tze 21,ic 002330 STATEMENT 1 ON LINE 510 prior_state = current_control_point_data.state; 002304 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002305 aa 7 00002 2361 00 ldq pr7|2 current_control_point_data.state 002306 aa 6 00115 7561 00 stq pr6|77 prior_state STATEMENT 1 ON LINE 512 if current_control_point_data.state ^= CPM_READY then do; 002307 aa 000003 1160 07 cmpq 3,dl 002310 aa 000010 6000 04 tze 8,ic 002320 STATEMENT 1 ON LINE 514 target_cpd_ptr = cpd_ptr; 002311 aa 6 00136 3715 20 epp5 pr6|94,* cpd_ptr 002312 aa 6 00116 6515 00 spri5 pr6|78 target_cpd_ptr STATEMENT 1 ON LINE 515 cpd_ptr = current_cpd_ptr; 002313 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 516 call update_state (CPM_READY); 002314 aa 004264 3520 04 epp2 2228,ic 006600 = 000002000000 002315 aa 002606 6700 04 tsp4 1414,ic 005123 STATEMENT 1 ON LINE 517 cpd_ptr = target_cpd_ptr; 002316 aa 6 00116 3735 20 epp7 pr6|78,* target_cpd_ptr 002317 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 518 end; STATEMENT 1 ON LINE 525 call scheduler$run_specific_control_point (); 002320 aa 002113 6700 04 tsp4 1099,ic 004433 STATEMENT 1 ON LINE 527 if prior_state ^= CPM_READY then do; 002321 aa 6 00115 2361 00 ldq pr6|77 prior_state 002322 aa 000003 1160 07 cmpq 3,dl 002323 aa 000005 6000 04 tze 5,ic 002330 STATEMENT 1 ON LINE 529 cpd_ptr = current_cpd_ptr; 002324 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 002325 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 530 call update_state (prior_state); 002326 aa 004174 3520 04 epp2 2172,ic 006522 = 000002000000 002327 aa 002574 6700 04 tsp4 1404,ic 005123 STATEMENT 1 ON LINE 531 end; STATEMENT 1 ON LINE 532 end; STATEMENT 1 ON LINE 533 end; STATEMENT 1 ON LINE 535 P_code = 0; 002330 aa 6 00174 4501 20 stz pr6|124,* P_code STATEMENT 1 ON LINE 537 return; 002331 aa 6 00170 2361 00 ldq pr6|120 002332 aa 000005 6010 04 tnz 5,ic 002337 002333 aa 000027 7260 07 lxl6 23,dl 002334 aa 775604 3520 04 epp2 -1148,ic 000140 = 162145164165 002335 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 002336 aa 0 00631 7101 00 tra pr0|409 return_mac 002337 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO get_preferred_control_point STATEMENT 1 ON LINE 543 get_preferred_control_point: entry () returns (bit (36) aligned); 002340 at 000001000047 002341 ta 002340000000 002342 da 001341320000 002343 aa 000760 6270 00 eax7 496 002344 aa 7 00034 3521 20 epp2 pr7|28,* 002345 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002346 aa 000002000000 002347 aa 000000000000 002350 aa 6 00170 4501 00 stz pr6|120 STATEMENT 1 ON LINE 546 call check_initialization ("cpm_$get_preferred_control_point"); 002351 aa 000 100 100 404 mlr (ic),(pr),fill(000) 002352 aa 775634 00 0040 desc9a -1124,32 000205 = 143160155137 002353 aa 6 00402 00 0040 desc9a pr6|258,32 002354 aa 004140 3520 04 epp2 2144,ic 006514 = 000002000000 002355 aa 2 00000 2351 00 lda pr2|0 002356 aa 001002 6700 04 tsp4 514,ic 003360 STATEMENT 1 ON LINE 548 if cpm_data_$preferred_control_point ^= null () then return (cpm_data_$preferred_control_point -> control_point_data.id); 002357 aa 6 00044 3701 20 epp4 pr6|36,* 002360 la 4 00174 2371 20 ldaq pr4|124,* cpm_data_$preferred_control_point 002361 aa 775473 6770 04 eraq -1221,ic 000054 = 077777000043 000001000000 002362 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002363 aa 000014 6000 04 tze 12,ic 002377 002364 aa 6 00170 2361 00 ldq pr6|120 002365 aa 000006 6010 04 tnz 6,ic 002373 002366 la 4 00174 3735 20 epp7 pr4|124,* cpm_data_$preferred_control_point 002367 aa 7 00000 2351 20 lda pr7|0,* control_point_data.id 002370 aa 6 00032 3715 20 epp5 pr6|26,* 002371 aa 5 00002 7551 20 sta pr5|2,* 002372 aa 0 00631 7101 00 tra pr0|409 return_mac 002373 aa 000027 7260 07 lxl6 23,dl 002374 aa 775544 3520 04 epp2 -1180,ic 000140 = 162145164165 002375 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 002376 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 550 else return ((36)"0"b); 002377 aa 6 00170 2361 00 ldq pr6|120 002400 aa 000004 6010 04 tnz 4,ic 002404 002401 aa 6 00032 3735 20 epp7 pr6|26,* 002402 aa 7 00002 4501 20 stz pr7|2,* 002403 aa 0 00631 7101 00 tra pr0|409 return_mac 002404 aa 000027 7260 07 lxl6 23,dl 002405 aa 775533 3520 04 epp2 -1189,ic 000140 = 162145164165 002406 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 002407 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO set_preferred_control_point STATEMENT 1 ON LINE 556 set_preferred_control_point: entry (P_control_point_id, P_code); 002410 ta 000571000000 002411 da 001353300000 002412 aa 000760 6270 00 eax7 496 002413 aa 7 00034 3521 20 epp2 pr7|28,* 002414 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002415 aa 000004000000 002416 aa 000000000000 002417 aa 6 00032 3735 20 epp7 pr6|26,* 002420 aa 7 00002 3715 20 epp5 pr7|2,* 002421 aa 6 00172 6515 00 spri5 pr6|122 002422 aa 7 00004 3535 20 epp3 pr7|4,* 002423 aa 6 00174 2535 00 spri3 pr6|124 002424 aa 000001 2360 07 ldq 1,dl 002425 aa 6 00170 7561 00 stq pr6|120 STATEMENT 1 ON LINE 559 call check_initialization ("cpm_$set_preferred_control_point"); 002426 aa 000 100 100 404 mlr (ic),(pr),fill(000) 002427 aa 775547 00 0040 desc9a -1177,32 000175 = 143160155137 002430 aa 6 00402 00 0040 desc9a pr6|258,32 002431 aa 004063 3520 04 epp2 2099,ic 006514 = 000002000000 002432 aa 2 00000 2351 00 lda pr2|0 002433 aa 000725 6700 04 tsp4 469,ic 003360 STATEMENT 1 ON LINE 561 call find_control_point (P_control_point_id); 002434 aa 6 00172 3521 20 epp2 pr6|122,* P_control_point_id 002435 aa 6 00404 2521 00 spri2 pr6|260 002436 aa 6 00402 3521 00 epp2 pr6|258 002437 aa 004000 4310 07 fld 2048,dl 002440 aa 2 00000 7571 00 staq pr2|0 002441 aa 001012 6700 04 tsp4 522,ic 003453 STATEMENT 1 ON LINE 562 if control_point_data.state = CPM_STOPPED then do; 002442 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 002443 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 002444 aa 000001 1160 07 cmpq 1,dl 002445 aa 000013 6010 04 tnz 11,ic 002460 STATEMENT 1 ON LINE 564 P_code = cpm_et_$preferred_cant_be_stopped; 002446 aa 6 00044 3701 20 epp4 pr6|36,* 002447 la 4 00024 2361 20 ldq pr4|20,* cpm_et_$preferred_cant_be_stopped 002450 aa 6 00174 7561 20 stq pr6|124,* P_code STATEMENT 1 ON LINE 565 return; 002451 aa 6 00170 2361 00 ldq pr6|120 002452 aa 000005 6010 04 tnz 5,ic 002457 002453 aa 000027 7260 07 lxl6 23,dl 002454 aa 775464 3520 04 epp2 -1228,ic 000140 = 162145164165 002455 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 002456 aa 0 00631 7101 00 tra pr0|409 return_mac 002457 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 566 end; STATEMENT 1 ON LINE 568 mask = ""b; 002460 aa 6 00121 4501 00 stz pr6|81 mask STATEMENT 1 ON LINE 569 on any_other call any_other_handler (); 002461 aa 000011 7260 07 lxl6 9,dl 002462 aa 775426 3520 04 epp2 -1258,ic 000110 = 141156171137 002463 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 002464 aa 000004 7100 04 tra 4,ic 002470 002465 aa 000122000000 002466 aa 000 O? nd check_initialization; END PROCEDURE check_initialization BEGIN PROCEDURE find_control_point ENTRY TO find_control_point STATEMENT 1 ON LINE 739 find_control_point: procedure (p_control_point_id); 003453 aa 6 00210 6501 00 spri4 pr6|136 003454 aa 6 00212 2521 00 spri2 pr6|138 STATEMENT 1 ON LINE 744 string (decoded_control_point_id) = p_control_point_id; 003455 aa 2 00002 2351 20 lda pr2|2,* p_control_point_id 003456 aa 6 00106 7551 00 sta pr6|70 STATEMENT 1 ON LINE 746 if cpm_data_$valid_control_points.map (binary (decoded_control_point_id.stack_segno, 18, 0)) then do; 003457 aa 6 00106 2351 00 lda pr6|70 decoded_control_point_id.stack_segno 003460 aa 0 00044 3771 00 anaq pr0|36 = 777777000000 000000000000 003461 aa 6 00602 7551 00 sta pr6|386 decoded_control_point_id.stack_segno 003462 aa 000066 7730 00 lrl 54 003463 aa 6 00044 3701 20 epp4 pr6|36,* 003464 la 4 00204 3735 20 epp7 pr4|132,* 003465 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 003466 aa 7 00000 00 0001 descb pr7|0,1 cpm_data_$valid_control_points.map 003467 aa 000000 00 0000 descb 0,0 003470 aa 000012 6000 04 tze 10,ic 003502 STATEMENT 1 ON LINE 748 cpd_ptr = baseptr (decoded_control_point_id.stack_segno) -> stack_header.cpm_data_ptr; 003471 aa 6 00602 2351 00 lda pr6|386 decoded_control_point_id.stack_segno 003472 aa 6 00000 3511 00 epbp1 pr6|0 003473 aa 000000 3104 01 easp1 0,au 003474 aa 1 00004 3715 20 epp5 pr1|4,* stack_header.cpm_data_ptr 003475 aa 6 00136 6515 00 spri5 pr6|94 cpd_ptr STATEMENT 1 ON LINE 749 if control_point_data.id = p_control_point_id then return; 003476 aa 5 00000 2351 00 lda pr5|0 control_point_data.id 003477 aa 2 00002 1151 20 cmpa pr2|2,* p_control_point_id 003500 aa 000002 6010 04 tnz 2,ic 003502 003501 aa 6 00210 6101 00 rtcd pr6|136 STATEMENT 1 ON LINE 751 end; STATEMENT 1 ON LINE 754 P_code = cpm_et_$control_point_not_found; 003502 la 4 00022 2361 20 ldq pr4|18,* cpm_et_$control_point_not_found 003503 aa 6 00174 7561 20 stq pr6|124,* P_code STATEMENT 1 ON LINE 755 go to ERROR_RETURN_FROM_CPM_; 003504 aa 774625 7100 04 tra -1643,ic 000331 STATEMENT 1 ON LINE 757 end find_control_point; END PROCEDURE find_control_point BEGIN PROCEDURE mask_ips_interrupts ENTRY TO mask_ips_interrupts STATEMENT 1 ON LINE 761 mask_ips_interrupts: procedure (p_mask); 003505 aa 6 00216 6501 00 spri4 pr6|142 003506 aa 6 00220 2521 00 spri2 pr6|144 STATEMENT 1 ON LINE 766 call hcs_$set_ips_mask (""b, p_mask); 003507 aa 000000 2350 07 lda 0,dl 003510 aa 6 00604 7551 00 sta pr6|388 003511 aa 6 00604 3521 00 epp2 pr6|388 003512 aa 6 00610 2521 00 spri2 pr6|392 003513 aa 6 00220 3735 20 epp7 pr6|144,* 003514 aa 7 00002 3521 20 epp2 pr7|2,* p_mask 003515 aa 6 00612 2521 00 spri2 pr6|394 003516 aa 6 00606 6211 00 eax1 pr6|390 003517 aa 010000 4310 07 fld 4096,dl 003520 aa 6 00044 3701 20 epp4 pr6|36,* 003521 la 4 00114 3521 20 epp2 pr4|76,* hcs_$set_ips_mask 003522 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 768 end mask_ips_interrupts; 003523 aa 6 00216 6101 00 rtcd pr6|142 END PROCEDURE mask_ips_interrupts BEGIN PROCEDURE unmask_ips_interrupts ENTRY TO unmask_ips_interrupts STATEMENT 1 ON LINE 784 unmask_ips_interrupts: procedure (p_mask); 003524 aa 6 00224 6501 00 spri4 pr6|148 003525 aa 6 00226 2521 00 spri2 pr6|150 STATEMENT 1 ON LINE 789 if substr (p_mask, 36, 1) = "1"b then call hcs_$reset_ips_mask (p_mask, p_mask); 003526 aa 2 00002 2351 20 lda pr2|2,* p_mask 003527 aa 000043 7350 00 als 35 003530 aa 400000 1150 03 cmpa 131072,du 003531 aa 000013 6010 04 tnz 11,ic 003544 003532 aa 2 00002 3521 20 epp2 pr2|2,* p_mask 003533 aa 6 00616 2521 00 spri2 pr6|398 003534 aa 6 00226 3735 20 epp7 pr6|150,* 003535 aa 7 00002 3521 20 Rosin.SysAdmin.a S7BPDT >user_dir_dir>EngAdmin EngAdmin >user_dir_dir>EngAdmin EngAdmin EngAdmin project at ABB Process Automation Lentz ABB Process Automation Qa?Q:a0EngAdmin Qa?Q: ϟx:XPW.LRosin.SysAdmin Fudge.SysAdmin Lentz.EngAdmin Peplow.EngAdmin  Other @ QdT FBrown ~project_start_up_ >user_dir_dir>EngAdmin>FBrown @ QaACQ@fnonebQ@jT>F=Xɦ @ @Frankepolz ~project_start_up_ >user_dir_dir>EngAdmin>Frankepolz @ QaACQoOnonebQoeMT>~KXɦ @ @Franz ~project_start_up_ >user_dir_dir>EngAdmin>Franz @ QaACQ>enonebQT>ڌXɦ @ @ 00 spri2 pr6|404 003632 aa 6 00622 6211 00 eax1 pr6|402 003633 aa 004000 4310 07 fld 2048,dl 003634 la 4 00132 3521 20 epp2 pr4|90,* system_privilege_$comm_priv_off 003635 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 836 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$dir_privilege then if current_control_point_data.privileges & sys_info$dir_privilege then call system_privilege_$dir_priv_on ((0)); 003636 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 003637 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003640 aa 6 00240 6751 00 era pr6|160 current_privileges 003641 aa 6 00044 3701 20 epp4 pr6|36,* 003642 la 4 00044 3151 20 cana pr4|36,* sys_info$dir_privilege 003643 aa 000023 6000 04 tze 19,ic 003666 003644 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003645 la 4 00044 3151 20 cana pr4|36,* sys_info$dir_privilege 003646 aa 000011 6000 04 tze 9,ic 003657 003647 aa 6 00626 4501 00 stz pr6|406 003650 aa 6 00626 3521 00 epp2 pr6|406 003651 aa 6 00624 2521 00 spri2 pr6|404 003652 aa 6 00622 6211 00 eax1 pr6|402 003653 aa 004000 4310 07 fld 2048,dl 003654 la 4 00134 3521 20 epp2 pr4|92,* system_privilege_$dir_priv_on 003655 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 003656 aa 000010 7100 04 tra 8,ic 003666 STATEMENT 1 ON LINE 839 else call system_privilege_$dir_priv_off ((0)); 003657 aa 6 00626 4501 00 stz pr6|406 003660 aa 6 00626 3521 00 epp2 pr6|406 003661 aa 6 00624 2521 00 spri2 pr6|404 003662 aa 6 00622 6211 00 eax1 pr6|402 003663 aa 004000 4310 07 fld 2048,dl 003664 la 4 00136 3521 20 epp2 pr4|94,* system_privilege_$dir_priv_off 003665 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 841 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$ipc_privilege then if current_control_point_data.privileges & sys_info$ipc_privilege then call system_privilege_$ipc_priv_on ((0)); 003666 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 003667 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003670 aa 6 00240 6751 00 era pr6|160 current_privileges 003671 aa 6 00044 3701 20 epp4 pr6|36,* 003672 la 4 00046 3151 20 cana pr4|38,* sys_info$ipc_privilege 003673 aa 000023 6000 04 tze 19,ic 003716 003674 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003675 la 4 00046 3151 20 cana pr4|38,* sys_info$ipc_privilege 003676 aa 000011 6000 04 tze 9,ic 003707 003677 aa 6 00626 4501 00 stz pr6|406 003700 aa 6 00626 3521 00 epp2 pr6|406 003701 aa 6 00624 2521 00 spri2 pr6|404 003702 aa 6 00622 6211 00 eax1 pr6|402 003703 aa 004000 4310 07 fld 2048,dl 003704 la 4 00140 3521 20 epp2 pr4|96,* system_privilege_$ipc_priv_on 003705 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 003706 aa 000010 7100 04 tra 8,ic 003716 STATEMENT 1 ON LINE 844 else call system_privilege_$ipc_priv_off ((0)); 003707 aa 6 00626 4501 00 stz pr6|406 003710 aa 6 00626 3521 00 epp2 pr6|406 003711 aa 6 00624 2521 00 spri2 pr6|404 003712 aa 6 00622 6211 00 eax1 pr6|402 003713 aa 004000 4310 07 fld 2048,dl 003714 la 4 00142 3521 20 epp2 pr4|98,* system_privilege_$ipc_priv_off 003715 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 846 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$rcp_privilege then if current_control_point_data.privileges & sys_info$rcp_privilege then call system_privilege_$rcp_priv_on ((0)); 003716 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 003717 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003720 aa 6 00240 6751 00 era pr6|160 current_privileges 003721 aa 6 00044 3701 20 epp4 pr6|36,* 003722 la 4 00050 3151 20 cana pr4|40,* sys_info$rcp_privilege 003723 aa 000023 6000 04 tze 19,ic 003746 003724 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003725 la 4 00050 3151 20 cana pr4|40,* sys_info$rcp_privilege 003726 aa 000011 6000 04 tze 9,ic 003737 003727 aa 6 00626 4501 00 stz pr6|406 003730 aa 6 00626 3521 00 epp2 pr6|406 003731 aa 6 00624 2521 00 spri2 pr6|404 003732 aa 6 00622 6211 00 eax1 pr6|402 003733 aa 004000 4310 07 fld 2048,dl 003734 la 4 00144 3521 20 epp2 pr4|100,* system_privilege_$rcp_priv_on 003735 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 003736 aa 000010 7100 04 tra 8,ic 003746 STATEMENT 1 ON LINE 849 else call system_privilege_$rcp_priv_off ((0)); 003737 aa 6 00626 4501 00 stz pr6|406 003740 aa 6 00626 3521 00 epp2 pr6|406 003741 aa 6 00624 2521 00 spri2 pr6|404 003742 aa 6 00622 6211 00 eax1 pr6|402 003743 aa 004000 4310 07 fld 2048,dl 003744 la 4 00146 3521 20 epp2 pr4|102,* system_privilege_$rcp_priv_off 003745 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 851 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$ring1_privilege then if current_control_point_data.privileges & sys_info$ring1_privilege then call system_privilege_$ring1_priv_on ((0)); 003746 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 003747 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003750 aa 6 00240 6751 00 era pr6|160 current_privileges 003751 aa 6 00044 3701 20 epp4 pr6|36,* 003752 la 4 00052 3151 20 cana pr4|42,* sys_info$ring1_privilege 003753 aa 000023 6000 04 tze 19,ic 003776 003754 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 003755 la 4 00052 3151 20 cana pr4|42,* sys_info$ring1_privilege 003756 aa 000011 6000 04 tze 9,ic 003767 003757 aa 6 00626 4501 00 stz pr6|406 003760 aa 6 00626 3521 00 epp2 pr6|406 003761 aa 6 00624 2521 00 spri2 pr6|404 003762 aa 6 00622 6211 00 eax1 pr6|402 003763 aa 004000 4310 07 fld 2048,dl 003764 la 4 00150 3521 20 epp2 pr4|104,* system_privilege_$ring1_priv_on 003765 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 003766 aa 000010 7100 04 tra 8,ic 003776 STATEMENT 1 ON LINE 854 else call system_privilege_$ring1_priv_off ((0)); 003767 aa 6 00626 4501 00 stz pr6|406 003770 aa 6 00626 3521 00 epp2 pr6|406 003771 aa 6 00624 2521 00 spri2 pr6|404 003772 aa 6 00622 6211 00 eax1 pr6|402 003773 aa 004000 4310 07 fld 2048,dl 003774 la 4 00152 3521 20 epp2 pr4|106,* system_privilege_$ring1_priv_off 003775 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 856 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$seg_privilege then if current_control_point_data.privileges & sys_info$seg_privilege then call system_privilege_$seg_priv_on ((0)); 003776 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 003777 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 004000 aa 6 00240 6751 00 era pr6|160 current_privileges 004001 aa 6 00044 3701 20 epp4 pr6|36,* 004002 la 4 00054 3151 20 cana pr4|44,* sys_info$seg_privilege 004003 aa 000023 6000 04 tze 19,ic 004026 004004 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 004005 la 4 00054 3151 20 cana pr4|44,* sys_info$seg_privilege 004006 aa 000011 6000 04 tze 9,ic 004017 004007 aa 6 00626 4501 00 stz pr6|406 004010 aa 6 00626 3521 00 epp2 pr6|406 004011 aa 6 00624 2521 00 spri2 pr6|404 004012 aa 6 00622 6211 00 eax1 pr6|402 004013 aa 004000 4310 07 fld 2048,dl 004014 la 4 00154 3521 20 epp2 pr4|108,* system_privilege_$seg_priv_on 004015 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 004016 aa 000010 7100 04 tra 8,ic 004026 STATEMENT 1 ON LINE 859 else call system_privilege_$seg_priv_off ((0)); 004017 aa 6 00626 4501 00 stz pr6|406 004020 aa 6 00626 3521 00 epp2 pr6|406 004021 aa 6 00624 2521 00 spri2 pr6|404 004022 aa 6 00622 6211 00 eax1 pr6|402 004023 aa 004000 4310 07 fld 2048,dl 004024 la 4 00156 3521 20 epp2 pr4|110,* system_privilege_$seg_priv_off 004025 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 861 if bool (current_control_point_data.privileges, current_privileges, "0110"b) & sys_info$soos_privilege then if current_control_point_data.privileges & sys_info$soos_privilege then call system_privilege_$soos_priv_on ((0)); 004026 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 004027 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 004030 aa 6 00240 6751 00 era pr6|160 current_privileges 004031 aa 6 00044 3701 20 epp4 pr6|36,* 004032 la 4 00056 3151 20 cana pr4|46,* sys_info$soos_privilege 004033 aa 000023 6000 04 tze 19,ic 004056 004034 aa 7 00061 2351 00 lda pr7|49 current_control_point_data.privileges 004035 la 4 00056 3151 20 cana pr4|46,* sys_info$soos_privilege 004036 aa 000011 6000 04 tze 9,ic 004047 004037 aa 6 00626 4501 00 stz pr6|406 004040 aa 6 00626 3521 00 epp2 pr6|406 004041 aa 6 00624 2521 00 spri2 pr6|404 004042 aa 6 00622 6211 00 eax1 pr6|402 004043 aa 004000 4310 07 fld 2048,dl 004044 la 4 00160 3521 20 epp2 pr4|112,* system_privilege_$soos_priv_on 004045 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 004046 aa 000010 7100 04 tra 8,ic 004056 STATEMENT 1 ON LINE 864 else call system_privilege_$soos_priv_off ((0)); 004047 aa 6 00626 4501 00 stz pr6|406 004050 aa 6 00626 3521 00 epp2 pr6|406 004051 aa 6 00624 2521 00 spri2 pr6|404 004052 aa 6 00622 6211 00 eax1 pr6|402 004053 aa 004000 4310 07 fld 2048,dl 004054 la 4 00162 3521 20 epp2 pr4|114,* system_privilege_$soos_priv_off 004055 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 866 return; 004056 aa 6 00232 6101 00 rtcd pr6|154 STATEMENT 1 ON LINE 868 end restore_privileges; END PROCEDURE restore_privileges BEGIN PROCEDURE save_io_switches ENTRY TO save_io_switches STATEMENT 1 ON LINE 872 save_io_switches: procedure (); 004057 aa 6 00242 6501 00 spri4 pr6|162 STATEMENT 1 ON LINE 875 if current_control_point_data.swapped_switches then ios_ptr = addr (cpm_data_$root_control_point_data.io_switches); 004060 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 004061 aa 7 00003 2351 00 lda pr7|3 current_control_point_data.swapped_switches 004062 aa 200000 3150 03 cana 65536,du 004063 aa 000006 6000 04 tze 6,ic 004071 004064 aa 6 00044 3701 20 epp4 pr6|36,* 004065 la 4 00170 3715 20 epp5 pr4|120,* 004066 aa 5 00066 3715 00 epp5 pr5|54 cpm_data_$root_control_point_data.io_switches 004067 aa 6 00102 6515 00 spri5 pr6|66 ios_ptr 004070 aa 000003 7100 04 tra 3,ic 004073 STATEMENT 1 ON LINE 877 else ios_ptr = addr (current_control_point_data.io_switches); 004071 aa 7 00066 3715 00 epp5 pr7|54 current_control_point_data.io_switches 004072 aa 6 00102 6515 00 spri5 pr6|66 ios_ptr STATEMENT 1 ON LINE 879 call iox_$move_attach (iox_$user_io, io_switches.user_io, (0)); 004073 aa 6 00627 4501 00 stz pr6|407 004074 aa 6 00044 3701 20 epp4 pr6|36,* 004075 la 4 00216 3521 20 epp2 pr4|142,* iox_$user_io 004076 aa 6 00632 2521 00 spri2 pr6|410 004077 aa 5 00000 3521 00 epp2 pr5|0 io_switches.user_io 004100 aa 6 00634 2521 00 spri2 pr6|412 004101 aa 6 00627 3521 00 epp2 pr6|407 004102 aa 6 00636 2521 00 spri2 pr6|414 004103 aa 6 00630 6211 00 eax1 pr6|408 004104 aa 014000 4310 07 fld 6144,dl 004105 la 4 00210 3521 20 epp2 pr4|136,* iox_$move_attach 004106 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 880 call iox_$move_attach (iox_$user_input, io_switches.user_input, (0)); 004107 aa 6 00627 4501 00 stz pr6|407 004110 aa 6 00044 3701 20 epp4 pr6|36,* 004111 la 4 00214 3521 20 epp2 pr4|140,* iox_$user_input 004112 aa 6 00632 2521 00 spri2 pr6|410 004113 aa 6 00102 3735 20 epp7 pr6|66,* ios_ptrPerret ~process_overseer_ >user_dir_dir>DEVM>Perret < QjC6 T>Xɦ @ @James ~process_overseer_ >user_dir_dir>DEVM>James < QjC6S~O`nonebS~OAwT>V Xɦ @ @Bowdle ~process_overseer_ >user_dir_dir>DEVM>Bowdle < QjC6Q#LlnonebQ#ET>Xɦ @ @Devers ~process_overseer_ >user_dir_dir>DEVM>Devers < QjC6Ra bnonebRa ,IT>L_Xɦ @ @Gaunt ~process_overseer_ >user_dir_dir>DEVM>Gaunt < QjC6QhXɦ @ @George ~process_overseer_ >user_dir_dir>DEVM>George < QjC6QnonebQT>'QXɦ @ @Lehmkuhl ~process_overseer_ >user_dir_dir>DEVM>Lehmkuhl < QjC6QZ+jnonebQZqT>TXɦ @ @Leonhard ~process_overseer_ >user_dir_dir>DEVM>Leonhard < QjC6Rn^nonebRo 7-T>AXɦ @ @witches & (cpd_2.group_id = cpm_data_$root_control_point_data.group_id)) | (cpd_2.swapped_switches & (cpd_1.group_id = cpm_data_$root_control_point_data.group_id)) then return ("0"b); 004312 aa 6 00652 2351 00 lda pr6|426 cpd_1.swapped_switches 004313 aa 000006 6000 04 tze 6,ic 004321 004314 aa 5 00001 2351 00 lda pr5|1 cpd_2.group_id 004315 aa 6 00044 3701 20 epp4 pr6|36,* 004316 la 4 00170 3535 20 epp3 pr4|120,* 004317 aa 3 00001 1151 00 cmpa pr3|1 cpm_data_$root_control_point_data.group_id 004320 aa 000010 6000 04 tze 8,ic 004330 004321 aa 6 00653 2351 00 lda pr6|427 cpd_2.swapped_switches 004322 aa 000010 6000 04 tze 8,ic 004332 004323 aa 7 00001 2351 00 lda pr7|1 cpd_1.group_id 004324 aa 6 00044 3701 20 epp4 pr6|36,* 004325 la 4 00170 3535 20 epp3 pr4|120,* 004326 aa 3 00001 1151 00 cmpa pr3|1 cpm_data_$root_control_point_data.group_id 004327 aa 000003 6010 04 tnz 3,ic 004332 004330 aa 2 00006 4501 20 stz pr2|6,* 004331 aa 6 00256 6101 00 rtcd pr6|174 STATEMENT 1 ON LINE 930 else return ("1"b); 004332 aa 400000 2350 03 lda 131072,du 004333 aa 2 00006 7551 20 sta pr2|6,* 004334 aa 6 00256 6101 00 rtcd pr6|174 STATEMENT 1 ON LINE 932 end different_switches; END PROCEDURE different_switches BEGIN PROCEDURE scheduler ENTRY TO scheduler STATEMENT 1 ON LINE 936 scheduler: procedure (); 004335 aa 6 00264 6501 00 spri4 pr6|180 STATEMENT 1 ON LINE 938 return; 004336 aa 6 00264 6101 00 rtcd pr6|180 ENTRY TO scheduler$find_runnable STATEMENT 1 ON LINE 944 scheduler$find_runnable: entry (); 004337 aa 6 00264 6501 00 spri4 pr6|180 STATEMENT 1 ON LINE 947 call update_meters (current_control_point_data.meters, cpm_data_$global_meters.overhead.n_schedules); 004340 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 004341 aa 7 00076 3521 00 epp2 pr7|62 current_control_point_data.meters 004342 aa 6 00656 2521 00 spri2 pr6|430 004343 aa 6 00044 3701 20 epp4 pr6|36,* 004344 la 4 00206 3521 20 epp2 pr4|134,* cpm_data_$global_meters.n_schedules 004345 aa 6 00660 2521 00 spri2 pr6|432 004346 aa 6 00654 3521 00 epp2 pr6|428 004347 aa 010000 4310 07 fld 4096,dl 004350 aa 2 00000 7571 00 staq pr2|0 004351 aa 000373 6700 04 tsp4 251,ic 004744 STATEMENT 1 ON LINE 949 if cpm_data_$ready_queue.first = null () then do; 004352 aa 6 00044 3701 20 epp4 pr6|36,* 004353 la 4 00200 2371 20 ldaq pr4|128,* cpm_data_$ready_queue.first 004354 aa 773500 6770 04 eraq -2240,ic 000054 = 077777000043 000001000000 004355 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004356 aa 000032 6010 04 tnz 26,ic 004410 STATEMENT 1 ON LINE 951 if (current_cpd_ptr ^= cpm_data_$preferred_control_point) & (cpm_data_$preferred_control_point ^= null ()) then if cpm_data_$preferred_control_point -> control_point_data.state = CPM_BLOCKED then do; 004357 aa 6 00100 2371 00 ldaq pr6|64 current_cpd_ptr 004360 la 4 00174 6771 20 eraq pr4|124,* cpm_data_$preferred_control_point 004361 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004362 aa 000014 6000 04 tze 12,ic 004376 004363 la 4 00174 2371 20 ldaq pr4|124,* cpm_data_$preferred_control_point 004364 aa 773470 6770 04 eraq -2248,ic 000054 = 077777000043 000001000000 004365 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004366 aa 000010 6000 04 tze 8,ic 004376 004367 la 4 00174 3735 20 epp7 pr4|124,* cpm_data_$preferred_control_point 004370 aa 7 00000 3735 20 epp7 pr7|0,* cpm_data_$preferred_control_point 004371 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 004372 aa 000002 1160 07 cmpq 2,dl 004373 aa 000003 6010 04 tnz 3,ic 004376 STATEMENT 1 ON LINE 955 cpd_ptr = cpm_data_$preferred_control_point; 004374 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 956 call switch_control_points (); 004375 aa 000071 6700 04 tsp4 57,ic 004466 STATEMENT 1 ON LINE 957 end; STATEMENT 1 ON LINE 958 do while (cpm_data_$ready_queue.first = null ()); 004376 aa 6 00044 3701 20 epp4 pr6|36,* 004377 la 4 00200 2371 20 ldaq pr4|128,* cpm_data_$ready_queue.first 004400 aa 773454 6770 04 eraq -2260,ic 000054 = 077777000043 000001000000 004401 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004402 aa 000006 6010 04 tnz 6,ic 004410 STATEMENT 1 ON LINE 959 call ipc_$wait_for_an_event (); 004403 aa 6 00056 6211 00 eax1 pr6|46 004404 aa 000000 4310 07 fld 0,dl 004405 la 4 00122 3521 20 epp2 pr4|82,* ipc_$wait_for_an_event 004406 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 960 end; 004407 aa 777767 7100 04 tra -9,ic 004376 STATEMENT 1 ON LINE 961 end; STATEMENT 1 ON LINE 963 cpd_ptr = cpm_data_$ready_queue.first; 004410 la 4 00200 3735 20 epp7 pr4|128,* cpm_data_$ready_queue.first 004411 aa 7 00000 3735 20 epp7 pr7|0,* cpm_data_$ready_queue.first 004412 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 965 call switch_control_points (); 004413 aa 000053 6700 04 tsp4 43,ic 004466 STATEMENT 1 ON LINE 967 if cpm_data_$gc_control_points /* there are control points we can eliminate */ then call gc_dead_control_points (); 004414 aa 6 00044 3701 20 epp4 pr6|36,* 004415 la 4 00172 2351 20 lda pr4|122,* cpm_data_$gc_control_points 004416 aa 000002 6000 04 tze 2,ic 004420 004417 aa 000223 6700 04 tsp4 147,ic 004642 STATEMENT 1 ON LINE 970 call update_meters (cpm_data_$global_meters.overhead, current_control_point_data.meters.n_schedules); 004420 aa 6 00044 3701 20 epp4 pr6|36,* 004421 la 4 00206 3521 20 epp2 pr4|134,* cpm_data_$global_meters.overhead 004422 aa 6 00656 2521 00 spri2 pr6|430 004423 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 004424 aa 7 00076 3521 00 epp2 pr7|62 current_control_point_data.n_schedules 004425 aa 6 00660 2521 00 spri2 pr6|432 004426 aa 6 00654 3521 00 epp2 pr6|428 004427 aa 010000 4310 07 fld 4096,dl 004430 aa 2 00000 7571 00 staq pr2|0 004431 aa 000313 6700 04 tsp4 203,ic 004744 STATEMENT 1 ON LINE 972 return; 004432 aa 6 00264 6101 00 rtcd pr6|180 ENTRY TO scheduler$run_specific_control_p STATEMENT 1 ON LINE 978 scheduler$run_specific_control_point: entry (); 004433 aa 6 00264 6501 00 spri4 pr6|180 STATEMENT 1 ON LINE 981 call update_meters (current_control_point_data.meters, cpm_data_$global_meters.overhead.n_schedules); 004434 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 004435 aa 7 00076 3521 00 epp2 pr7|62 current_control_point_data.meters 004436 aa 6 00656 2521 00 spri2 pr6|430 004437 aa 6 00044 3701 20 epp4 pr6|36,* 004440 la 4 00206 3521 20 epp2 pr4|134,* cpm_data_$global_meters.n_schedules 004441 aa 6 00660 2521 00 spri2 pr6|432 004442 aa 6 00654 3521 00 epp2 pr6|428 004443 aa 010000 4310 07 fld 4096,dl 004444 aa 2 00000 7571 00 staq pr2|0 004445 aa 000277 6700 04 tsp4 191,ic 004744 STATEMENT 1 ON LINE 983 call switch_control_points (); 004446 aa 000020 6700 04 tsp4 16,ic 004466 STATEMENT 1 ON LINE 985 if cpm_data_$gc_control_points /* there are control points we can eliminate */ then call gc_dead_control_points (); 004447 aa 6 00044 3701 20 epp4 pr6|36,* 004450 la 4 00172 2351 20 lda pr4|122,* cpm_data_$gc_control_points 004451 aa 000002 6000 04 tze 2,ic 004453 004452 aa 000170 6700 04 tsp4 120,ic 004642 STATEMENT 1 ON LINE 988 call update_meters (cpm_data_$global_meters.overhead, current_control_point_data.meters.n_schedules); 004453 aa 6 00044 3701 20 epp4 pr6|36,* 004454 la 4 00206 3521 20 epp2 pr4|134,* cpm_data_$global_meters.overhead 004455 aa 6 00656 2521 00 spri2 pr6|430 004456 aa 6 00100 3735 20 epp7 pr6|64,* current_cpd_ptr 004457 aa 7 00076 3521 00 epp2 pr7|62 current_control_point_data.n_schedAlleman ~process_overseer_ >user_dir_dir>DEVM>Alleman < Qy+ T>Xɦ @ @Gupta ~process_overseer_ >user_dir_dir>DEVM>Gupta < Qy+ T>Xɦ @ @Knisley ~process_overseer_ >user_dir_dir>DEVM>Knisley < Qy+Q.vanonebQ.kT>mXɦ @ @Spalding ~process_overseer_ >user_dir_dir>DEVM>Spalding < Qy+ T>Xɦ @ @Fudge.SysAdmin.a Qy- APDT >user_dir_dir>MSGD MSGD >user_dir_dir>MSGD MSGD ABB NSGD Project Qjv(l5@$MSGD Qjv_ vbP X|_Lentz.EngAdmin Rosin.SysAdmin Fudge.SysAdmin Peplow.EngAdmin  Other @ dT $Heimrich ~process_overseer_ >user_dir_dir>MSGD>Heimrich  Qjb T>Xɦ @ @@ bY z@r=Lфф8(&H &z*@6Walker r*@ZElfrink *@DEVM *@LNMLPROD *@STI z*@*@*@*@*@&P5"Za5work  xZabYx*@zZPeplow phz*@EngAdmn 6Francis D*@D*@.*@L*@.*@6*@SysDaemon *@Capsel hZ*@LEngAdmin p*@QtZa941427.save jZabY*j0z*@j*@j*@j*@j *@jZ*jbH&MQ  raAGP120_0 MŸz] ZrabY@ *@M8@*@M Z0*@M0(r*@M&g`QPnranH 012227_1 g`2M brabYPHPP_ENGLISH g` *@g`*@g` b*@g`|r*@g`H&gQraPP_GREEK g2  jrabY  *@g*@g j*@gr*@g(&gQratPP_RUSSIAN g   rrabY  *@g *@g r*@gr*@g&RWP5%00ra(MASTER.value RWbq$ NraV *@RW^Nr*@RWf^*RW~^*@RWv~*@RWn*@RWnf*@RW(&RWP5&raMASTER.sts.archive RW .$raIdfr*@RWf*RW *@RW &RYQraq012223_1 RYŸz5  zrabY  *@RY*@RY z*@RYr*@RY&RiQ0ra0 MASTER_1 Ri2  rabY tDELTA_COMM.9600 RiN r*@Ri N*@RiF>*@RiDQraVAOP204_1 j@rabY*@j 4r*@jP5BrmMAOP204_1.dll l$rm.*lTr*l &7P5(raAMASTER_1.dll 7!i$ra7n*7nr*7.&>P5)raBMASTER_1.dll >bp̠ $&raHv*>vr*>d&?P5*66ra./GMASTER_1.dll ? .$\ra-~*?~r*?.&)P5+llradMMASTER_1.map )bY+$raP*)r*)d&UKP5,ra224444.sts.archive UK!il$ra5L*UKr*@UK&UNQraE^224444_2 UNŸz $ rabY $r*@UN r*j*j *@j*@j**@j*@jP5;ra2nAOP204.sts j9$raS*jr*j .P5Grah949999.value ;v$rm**@;N*;P5;radAOP204.absout jr$rm*jlr*jpQrmG100200CL.crc.dll p" 8$rm$*@;*h_VP58ra dll.cpa h_I$raJ@*@; Tr*@;*@;VQ raH949999_1 ;0rabYV"*@; <r*@;hP5Gra~M949999.sts.archive ;$raR@|r*@;V*;~P5Ira949999.sts ;$raMr*@;^*;P5Ira949999.ec ;$rar*@;f*;P5Jrm 949999.absout W\$rmN*@;v*@;F0*@;^V*RW*RW*7&*>T\*?*)*UK4<*Wmrj*%u*%M*(R*(= *(\BJ*(cx*(I*(`*h_*j*j`*j*j<*j2*l*l>*lN*l*l~*@6`*@pr*l8*;*;*;*;v*W\,r*@W\ zP5Krm~D949999_1.dll Xo$rm*Xo r*Xo~P5LrmCP949999_1.dll Xl$rm*Xlr*XlP5MrmKR949999_1.dll Xq.state 005130 aa 000002 6010 04 tnz 2,ic 005132 005131 aa 6 00334 6101 00 rtcd pr6|220 STATEMENT 1 ON LINE 1150 call mask_ips_interrupts (mask); 005132 aa 001374 3520 04 epp2 764,ic 006526 = 000002000000 005133 aa 776352 6700 04 tsp4 -790,ic 003505 STATEMENT 1 ON LINE 1152 if control_point_data.preferred & ((p_new_state = CPM_DESTROYED) | (p_new_state = CPM_STOPPED)) then do; 005134 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 005135 aa 7 00003 2351 00 lda pr7|3 control_point_data.preferred 005136 aa 400000 3150 03 cana 131072,du 005137 aa 000020 6000 04 tze 16,ic 005157 005140 aa 6 00336 3715 20 epp5 pr6|222,* 005141 aa 5 00002 2361 20 ldq pr5|2,* p_new_state 005142 aa 000003 6000 04 tze 3,ic 005145 005143 aa 000001 1160 07 cmpq 1,dl 005144 aa 000013 6010 04 tnz 11,ic 005157 STATEMENT 1 ON LINE 1154 call set_preferred_control_point (cpm_data_$root_control_point_data.id, (0)); 005145 aa 6 00742 4501 00 stz pr6|482 005146 aa 6 00044 3701 20 epp4 pr6|36,* 005147 la 4 00170 3521 20 epp2 pr4|120,* cpm_data_$root_control_point_data.id 005150 aa 6 00746 2521 00 spri2 pr6|486 005151 aa 6 00742 3521 00 epp2 pr6|482 005152 aa 6 00750 2521 00 spri2 pr6|488 005153 aa 6 00744 6211 00 eax1 pr6|484 005154 aa 010000 4310 07 fld 4096,dl 005155 aa 775235 3520 04 epp2 -1379,ic 002412 = 000760627000 005156 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1155 end; STATEMENT 1 ON LINE 1157 if control_point_data.state = CPM_READY /* it's about to become not ready: remove it from the queue */ then call remove_from_ready_queue (); 005157 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 005160 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 005161 aa 000003 1160 07 cmpq 3,dl 005162 aa 000002 6010 04 tnz 2,ic 005164 005163 aa 000167 6700 04 tsp4 119,ic 005352 STATEMENT 1 ON LINE 1160 control_point_data.state = p_new_state; 005164 aa 6 00336 3735 20 epp7 pr6|222,* 005165 aa 7 00002 2361 20 ldq pr7|2,* p_new_state 005166 aa 6 00136 3715 20 epp5 pr6|94,* cpd_ptr 005167 aa 5 00002 7561 00 stq pr5|2 control_point_data.state STATEMENT 1 ON LINE 1162 if control_point_data.state = CPM_READY /* it's been made ready: stick it into the ready queue */ then call insert_into_ready_queue (); 005170 aa 000003 1160 07 cmpq 3,dl 005171 aa 000003 6010 04 tnz 3,ic 005174 005172 aa 000066 6700 04 tsp4 54,ic 005260 005173 aa 000030 7100 04 tra 24,ic 005223 STATEMENT 1 ON LINE 1165 else if control_point_data.state = CPM_DESTROYED /* it's been killed */ then do; 005174 aa 5 00002 2361 00 ldq pr5|2 control_point_data.state 005175 aa 000026 6010 04 tnz 22,ic 005223 STATEMENT 1 ON LINE 1167 call ipc_$reassign_call_channels (control_point_data.id, parent_control_point_data.id); 005176 aa 5 00000 3521 00 epp2 pr5|0 control_point_data.id 005177 aa 6 00746 2521 00 spri2 pr6|486 005200 aa 5 00016 3521 20 epp2 pr5|14,* parent_control_point_data.id 005201 aa 6 00750 2521 00 spri2 pr6|488 005202 aa 6 00744 6211 00 eax1 pr6|484 005203 aa 010000 4310 07 fld 4096,dl 005204 aa 6 00044 3701 20 epp4 pr6|36,* 005205 la 4 00120 3521 20 epp2 pr4|80,* ipc_$reassign_call_channels 005206 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1168 string (decoded_control_point_id) = control_point_data.id; 005207 aa 6 00136 2351 20 lda pr6|94,* control_point_data.id 005210 aa 6 00106 7551 00 sta pr6|70 STATEMENT 1 ON LINE 1169 cpm_data_$valid_control_points.map (binary (decoded_control_point_id.stack_segno, 18, 0)) = "0"b; 005211 aa 6 00106 2271 00 ldx7 pr6|70 decoded_control_point_id.stack_segno 005212 aa 6 00044 3701 20 epp4 pr6|36,* 005213 la 4 00204 3735 20 epp7 pr4|132,* 005214 aa 003 117 060 400 csl (),(pr,x7),fill(0),bool(move) 005215 aa 000000 00 0000 descb 0,0 005216 aa 7 00000 00 0001 descb pr7|0,1 cpm_data_$valid_control_points.map STATEMENT 1 ON LINE 1170 cpm_data_$gc_control_points = "1"b; 005217 aa 400000 2350 03 lda 131072,du 005220 la 4 00172 7551 20 sta pr4|122,* cpm_data_$gc_control_points STATEMENT 1 ON LINE 1171 cpm_data_$n_control_points = cpm_data_$n_control_points - 1; 005221 aa 000001 3360 07 lcq 1,dl 005222 la 4 00164 0561 20 asq pr4|116,* cpm_data_$n_control_points STATEMENT 1 ON LINE 1172 end; STATEMENT 1 ON LINE 1174 call unmask_ips_interrupts (mask); 005223 aa 001303 3520 04 epp2 707,ic 006526 = 000002000000 005224 aa 776300 6700 04 tsp4 -832,ic 003524 STATEMENT 1 ON LINE 1176 return; 005225 aa 6 00334 6101 00 rtcd pr6|220 STATEMENT 1 ON LINE 1178 end update_state; END PROCEDURE update_state BEGIN PROCEDURE switch_preferred_control_points ENTRY TO switch_preferred_control_points STATEMENT 1 ON LINE 1199 switch_preferred_control_points: procedure (); 005226 aa 6 00342 6501 00 spri4 pr6|226 STATEMENT 1 ON LINE 1205 control_point_data.preferred = "1"b; 005227 aa 400000 2350 03 lda 131072,du 005230 aa 6 00136 3735 20 epp7 pr6|94,* cpd_ptr 005231 aa 7 00003 2551 00 orsa pr7|3 control_point_data.preferred STATEMENT 1 ON LINE 1207 if control_point_data.state = CPM_READY then do; 005232 aa 7 00002 2361 00 ldq pr7|2 control_point_data.state 005233 aa 000003 1160 07 cmpq 3,dl 005234 aa 000003 6010 04 tnz 3,ic 005237 STATEMENT 1 ON LINE 1209 call remove_from_ready_queue (); 005235 aa 000115 6700 04 tsp4 77,ic 005352 STATEMENT 1 ON LINE 1210 call insert_into_ready_queue (); 005236 aa 000022 6700 04 tsp4 18,ic 005260 STATEMENT 1 ON LINE 1211 end; STATEMENT 1 ON LINE 1216 old_preferred_cpd_ptr = cpm_data_$preferred_control_point; 005237 aa 6 00044 3701 20 epp4 pr6|36,* 005240 la 4 00174 3735 20 epp7 pr4|124,* cpm_data_$preferred_control_point 005241 aa 7 00000 3735 20 epp7 pr7|0,* cpm_data_$preferred_control_point 005242 aa 6 00350 6535 00 spri7 pr6|232 old_preferred_cpd_ptr STATEMENT 1 ON LINE 1218 cpm_data_$preferred_control_point = cpd_ptr; 005243 aa 6 00136 3715 20 epp5 pr6|94,* cpd_ptr 005244 la 4 00174 6515 20 spri5 pr4|124,* cpm_data_$preferred_control_point STATEMENT 1 ON LINE 1220 cpd_ptr = old_preferred_cpd_ptr; 005245 aa 6 00350 3735 20 epp7 pr6|232,* old_preferred_cpd_ptr 005246 aa 6 00136 6535 00 spri7 pr6|94 cpd_ptr STATEMENT 1 ON LINE 1225 control_point_data.preferred = "0"b; 005247 aa 001217 2350 04 lda 655,ic 006466 = 377777777777 005250 aa 6 00136 3715 20 epp5 pr6|94,* cpd_ptr 005251 aa 5 00003 3551 00 ansa pr5|3 control_point_data.preferred STATEMENT 1 ON LINE 1227 if control_point_data.state = CPM_READY then do; 005252 aa 5 00002 2361 00 ldq pr5|2 control_point_data.state 005253 aa 000003 1160 07 cmpq 3,dl 005254 aa 000003 6010 04 tnz 3,ic 005257 STATEMENT 1 ON LINE 1229 call remove_from_ready_queue (); 005255 aa 000075 6700 04 tsp4 61,ic 005352 STATEMENT 1 ON LINE 1230 call insert_into_ready_queue (); 005256 aa 000002 6700 04 tsp4 2,ic 005260 STATEMENT 1 ON LINE 1231 end; STATEMENT 1 ON LINE 1233 return; 005257 aa 6 00342 6101 00 rtcd pr6|226 STATEMENT 1 ON LINE 1235 end switch_preferred_control_points; END PROCEDURE switch_preferred_control_points BEGIN PROCEDURE insert_into_ready_queue ENTRY TO insert_into_ready_queue STATEMENT 1 ON LINE 1239 insert_into_ready_queue: procedure (); 005260 aa 6 00352 6501 00 spri4 pr6|234 STATEMENT 1 ON LINE 1245 prev_cpd_ptr = null (); 005261 aa 772573 2370 04 ldaq -2693,ic 000054 = 077777000043 000001000000 005262 aa 6 00360 7571 00 staq pr6|240 prev_cpd_ptr STATEMENT 1 ON LINE 1246 next_cpd_ptr = cpm_data_$ready_queue.first; 005263 aa 6 00044 3701 20 epp4 pr6|36,* 005264 la 4 00200 3735 20 epp7 pr4|128,* cpm_data_$ready_queue.first 005265 aa 7 00000 3735 20 epp@S2 ~2r$|6rn(s@ V=LP$4SwXS^&H & dJD>,jfFS2 DEVM S2rDPS-E S2 EngAdmin S2Fortran S2 MSGD S2Multics S2 NMLPROD S2 PLASTICS S2 STDSPPT S2SiteSA S2 SysAdmin S2SysDaemon S2(  TOBSWE S2Tolts S2DDickson S2R6Fudge S2`D,Hoover S2nRMabey S2`Oke S2&T GomRa|editor T P  Ra~2rS2R*@T R*@T n*@T *@T *@T *@T r*@T *@T *@T *@T  *@T *@T |&TCGo|  RaHoover TCR):  (Ra~2rS20Dm@TC8(`*@TC@0R*@TCH8R*@TCP@n*@TCXH*@TC`P*@TChX*@TCp`r*@TCxh*@TCp*@TCx*@TC *@TC$&W[uHbRa.tools W[uOv Ra~2rS2!t W[uR*@W[uR*@W[un*@W[u*@W[u*@W[u*@W[ur*@W[u*@W[u *@W[u*@W[u  *@W[u*@W[u&b5@Go,JRaJ$.meetings b5@P A XRa~2rS2,$(mtgs b5@`R*@b5@hXR*@b5@p`n*@b5@xh*@b5@p*@b5@x*@b5@r*@b5@*@b5@*@b5@*@b5@ *@b5@>$&xrGoRa;mortgages xrH2 6Ra~2rS2R*@xrR*@xrn*@xr*@xr*@xraug.sum EPSGL $RaS2&R*@E.6*E6&R*E>. *@EF6*EN>(*EVF*E^N*EfV*En^*Evfr*E~n*Ev*E~*E6*S2R*S2*S2(*S2*S2*S2*S2*S2r*S2*S2*S2*S26*@S2R*@S2n*@S2*@S2(*@S2*@S2&*@S2.*@S26&*@S2>.r*@S2F6*@S2N>*@S2VF*@S2N*@S24&q5Ӎ&a&~HRX_VS3.forum q@>udd>hrx>meetings>HRX_VS3.forumj Uhv.forum qh&q{5<ZaZ4vs3_assembler.forum q{@$>udd>Multics>Oke>vs3_assembler.forumj <4vs3a.forum q{4&q5Hwppahgames.forum q@>udd>m>cgr>mtgs>games.forumj hHq6SaeEverybodys_Meeting.forum q@5>udd>Multics>Flegel>meetings>Everybodys_Meeting.forumj em.forum q"&q54EaZPolischuk.mbx qRyGwI aj *@q *@(q*@(qX&qRu**a"2Polischuk.value qRy5G2$HPa`j P*@qH*@q"&Ho`~a~Xdd K ua~2rj `Xdelete_dir **&CDKaMay.93.sum CDKlGL.$$aj *@O*@O^X&] A7Oa~ftf_ab.ec ] A7pG`H $a%j *] *@] (&K4a?sum KCG`Ht$6.a7j >*@>*@.6**@*@}~P*@}~P&~,Affa^.start_up.emacs.mike ~,A2GQ $avRj *~,*@~,^&(BjnaSystem-M.imft.acs (Bj~6G $aj *(*(*(*@(&}~PJ<aQcp6 }~PK@ Na~2rj NV*@}~PV*@}~P(&ĺ3BdaKIPPER_SI61 ĺ3BfNGQZ$6>aZQj >*@ĺ36*@ĺ3&6LONNaF42232_again.mail 6L*G`H $aJj *@֯*@6&YRZa|Rend YRoG2$a0Gj *@Y*@Y&RZabegin RoG$a:j *@*@FT&yL5aJul.93.sum yLj  *@M*@MJ&NXa4Mar.94.sum NX<G$B:a\j B*@:*@&xNRRaJ^Apr.94.sum xNqG$xaNj V**@xx*@xJ&]N#aDex57 ]N}G2Y$a,j *@]*@]&8ObazMay.94.sum 8OcG$a=Bj *@8*@8L&kO^aJun.94.sum kOyGw$"aZj "*@k*@k L:F<Zff*|&&R,0pd`\jZ~pNzT.j *@3*@3L&QOajmail_list.mls QOG$aDj *@Q*QSysAdmin j *@Q>&UP;a4Aug.94.sum UP@G $6.acj 6*@U.*@Ut&7>PZ4FFa> Oct.94.sum 7>Pi5BGQ x$ldaV[j l*@7>d*@7>>&7>Pk||at6Sep.94.sum 7>P?GQ $aU^j *@7>*@7>t&?cPIaNov.94.sum ?cP;G$aSj *@?c*@?c$&zQ>aWDec.94.sum zQwG$N4aj pF*@J*@(3Gray j R&(3Q%g,,a$|Jan.95.sum (3Q3GQc$Ja-j *@(3$&(4@Q%4VZZaRPolischuk.activities.1994 (4@Q3Gr$xayj *@(4@x*(4@R&>QζaFeb.95.sum >Q&GQ$a2j *@>*@>&`MYRZaMar.95.sum `MYRoGLI$aj *@`MY*@`MY&`RvXaCP6_Status_Apr11_95 `RyG`HP$"aA8j "*@`*@` pr6|82 005664 aa 004000 4310 07 fld 2048,dl 005665 aa 775340 3520 04 epp2 -1312,ic 003225 = 000760627000 005666 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1363 if trace_$transaction_begin (1) then ; 005667 aa 772163 2370 04 ldaq -2957,ic 000052 = 000000000000 000000000001 005670 aa 6 00130 7571 00 staq pr6|88 005671 aa 6 00130 3521 00 epp2 pr6|88 005672 aa 6 00124 2521 00 spri2 pr6|84 005673 aa 6 00150 3521 00 epp2 pr6|104 005674 aa 6 00126 2521 00 spri2 pr6|86 005675 aa 6 00122 6211 00 eax1 pr6|82 005676 aa 010000 4310 07 fld 4096,dl 005677 aa 6 00044 3701 20 epp4 pr6|36,* 005700 la 4 00222 3521 20 epp2 pr4|146,* trace_$transaction_begin 005701 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 005702 aa 6 00150 2351 00 lda pr6|104 005703 aa 400000 3150 03 cana 131072,du 005704 aa 000001 6000 04 tze 1,ic 005705 STATEMENT 1 ON LINE 1366 control_point_data.stack_ptr -> stack_header = parent_control_point_data.stack_ptr -> stack_header; 005705 aa 6 00040 3735 20 epp7 pr6|32,* 005706 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 005707 aa 5 00006 3535 20 epp3 pr5|6,* control_point_data.stack_ptr 005710 aa 5 00016 3515 20 epp1 pr5|14,* control_point_data.parent 005711 aa 1 00006 3715 20 epp5 pr1|6,* parent_control_point_data.stack_ptr 005712 aa 000 100 100 500 mlr (pr),(pr),fill(000) 005713 aa 5 00000 00 0400 desc9a pr5|0,256 stack_header 005714 aa 3 00000 00 0400 desc9a pr3|0,256 stack_header STATEMENT 1 ON LINE 1367 control_point_data.stack_ptr -> stack_header.stack_begin_ptr, control_point_data.stack_ptr -> stack_header.stack_end_ptr = addwordno (control_point_data.stack_ptr, currentsize (control_point_data.stack_ptr -> stack_header)); 005715 aa 3 00000 3521 00 epp2 pr3|0 005716 aa 000100 0520 03 adwp2 64,du 005717 aa 6 00130 2521 00 spri2 pr6|88 005720 aa 3 00022 2521 00 spri2 pr3|18 stack_header.stack_begin_ptr 005721 aa 7 00136 3515 20 epp1 pr7|94,* cpd_ptr 005722 aa 1 00006 3535 20 epp3 pr1|6,* control_point_data.stack_ptr 005723 aa 3 00024 2521 00 spri2 pr3|20 stack_header.stack_end_ptr STATEMENT 1 ON LINE 1371 control_point_data.stack_ptr -> stack_header.cpm_data_ptr = cpd_ptr; 005724 aa 7 00136 3515 20 epp1 pr7|94,* cpd_ptr 005725 aa 1 00006 3535 20 epp3 pr1|6,* control_point_data.stack_ptr 005726 aa 3 00004 2515 00 spri1 pr3|4 stack_header.cpm_data_ptr STATEMENT 1 ON LINE 1372 control_point_data.stack_ptr -> stack_header.cpm_enabled = substr(control_point_data.id,1,length(stack_header.cpm_enabled)); 005727 aa 7 00136 2351 20 lda pr7|94,* control_point_data.id 005730 aa 000022 7710 00 arl 18 005731 aa 7 00136 3515 20 epp1 pr7|94,* cpd_ptr 005732 aa 1 00006 3535 20 epp3 pr1|6,* control_point_data.stack_ptr 005733 aa 3 00013 5511 14 stba pr3|11,14 stack_header.cpm_enabled STATEMENT 1 ON LINE 1374 unspec (control_point_data.stack_ptr -> stack_header.trace) = ""b; 005734 aa 000 100 100 400 mlr (),(pr),fill(000) 005735 aa 000000 00 0000 desc9a 0,0 005736 aa 3 00072 00 0014 desc9a pr3|58,12 STATEMENT 1 ON LINE 1376 if trace_$transaction_end (1) then ; 005737 aa 772113 2370 04 ldaq -2997,ic 000052 = 000000000000 000000000001 005740 aa 6 00130 7571 00 staq pr6|88 005741 aa 6 00130 3521 00 epp2 pr6|88 005742 aa 6 00124 2521 00 spri2 pr6|84 005743 aa 6 00150 3521 00 epp2 pr6|104 005744 aa 6 00126 2521 00 spri2 pr6|86 005745 aa 6 00122 6211 00 eax1 pr6|82 005746 aa 010000 4310 07 fld 4096,dl 005747 aa 6 00044 3701 20 epp4 pr6|36,* 005750 la 4 00224 3521 20 epp2 pr4|148,* trace_$transaction_end 005751 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 005752 aa 6 00150 2351 00 lda pr6|104 005753 aa 400000 3150 03 cana 131072,du 005754 aa 000001 6000 04 tze 1,ic 005755 STATEMENT 1 ON LINE 1379 control_point_data.destroy = cv_entry_to_label_ (self_destruct); 005755 aa 773005 3520 04 epp2 -2555,ic 000762 = 000760627000 005756 aa 6 00122 2521 00 spri2 pr6|82 cp.971 005757 aa 000645 2370 04 ldaq 421,ic 006624 = 077777000043 000001000000 005760 aa 6 00124 7571 00 staq pr6|84 cp.971 005761 aa 6 00122 3521 00 epp2 pr6|82 cp.971 005762 aa 6 00134 2521 00 spri2 pr6|92 005763 aa 6 00040 3735 20 epp7 pr6|32,* 005764 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 005765 aa 5 00012 3521 00 epp2 pr5|10 control_point_data.destroy 005766 aa 6 00136 2521 00 spri2 pr6|94 005767 aa 6 00132 3521 00 epp2 pr6|90 005770 aa 010000 4310 07 fld 4096,dl 005771 aa 2 00000 7571 00 staq pr2|0 005772 aa 000060 6700 04 tsp4 48,ic 006052 STATEMENT 1 ON LINE 1384 if parent_control_point_data.first_child = null () then do; 005773 aa 6 00040 3735 20 epp7 pr6|32,* 005774 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 005775 aa 5 00016 3535 20 epp3 pr5|14,* control_point_data.parent 005776 aa 3 00024 2371 00 ldaq pr3|20 parent_control_point_data.first_child 005777 aa 772055 6770 04 eraq -3027,ic 000054 = 077777000043 000001000000 006000 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006001 aa 000006 6010 04 tnz 6,ic 006007 STATEMENT 1 ON LINE 1386 parent_control_point_data.first_child = cpd_ptr; 006002 aa 3 00024 6515 00 spri5 pr3|20 parent_control_point_data.first_child STATEMENT 1 ON LINE 1387 control_point_data.prev_peer = null (); 006003 aa 772051 2370 04 ldaq -3031,ic 000054 = 077777000043 000001000000 006004 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 006005 aa 5 00020 7571 00 staq pr5|16 control_point_data.prev_peer STATEMENT 1 ON LINE 1388 end; 006006 aa 000010 7100 04 tra 8,ic 006016 STATEMENT 1 ON LINE 1389 else do; STATEMENT 1 ON LINE 1390 parent_control_point_data.last_child -> control_point_data.next_peer = cpd_ptr; 006007 aa 3 00026 3515 20 epp1 pr3|22,* parent_control_point_data.last_child 006010 aa 1 00022 6515 00 spri5 pr1|18 control_point_data.next_peer STATEMENT 1 ON LINE 1391 control_point_data.prev_peer = parent_control_point_data.last_child; 006011 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 006012 aa 5 00016 3515 20 epp1 pr5|14,* control_point_data.parent 006013 aa 1 00026 3715 20 epp5 pr1|22,* parent_control_point_data.last_child 006014 aa 7 00136 3535 20 epp3 pr7|94,* cpd_ptr 006015 aa 3 00020 6515 00 spri5 pr3|16 control_point_data.prev_peer STATEMENT 1 ON LINE 1392 end; STATEMENT 1 ON LINE 1394 control_point_data.next_peer = null (); 006016 aa 772036 2370 04 ldaq -3042,ic 000054 = 077777000043 000001000000 006017 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 006020 aa 5 00022 7571 00 staq pr5|18 control_point_data.next_peer STATEMENT 1 ON LINE 1395 parent_control_point_data.last_child = cpd_ptr; 006021 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 006022 aa 5 00016 3535 20 epp3 pr5|14,* control_point_data.parent 006023 aa 3 00026 6515 00 spri5 pr3|22 parent_control_point_data.last_child STATEMENT 1 ON LINE 1397 cpm_data_$valid_control_points.map (binary (decoded_control_point_id.stack_segno, 18, 0)) = "1"b; 006024 aa 7 00106 2271 00 ldx7 pr7|70 decoded_control_point_id.stack_segno 006025 aa 6 00044 3701 20 epp4 pr6|36,* 006026 la 4 00204 3715 20 epp5 pr4|132,* 006027 aa 403 117 060 400 csl (),(pr,x7),fill(1),bool(move) 006030 aa 000000 00 0000 descb 0,0 006031 aa 5 00000 00 0001 descb pr5|0,1 cpm_data_$valid_control_points.map STATEMENT 1 ON LINE 1398 cpm_data_$n_control_points = cpm_data_$n_control_points + 1; 006032 la 4 00164 0541 20 aos pr4|116,* cpm_data_$n_control_points STATEMENT 1 ON LINE 1400 call unmask_ips_interrupts_caller (mask); 006033 aa 7 00121 3521 00 epp2 pr7|81 mask 006034 aa 6 00124 2521 00 spri2 pr6|84 006035 aa 6 00122 6211 00 eax1 pr6|82 006036 aa 004000 4310 07 fld 2048,dl 006037 aa 775215 3520 04 epp2 -1395,ic 003254 = 000760627000 006040 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1402 return; 006041 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1440 end create_control_point; BEGIN PROCEDURE create_failure ENTRY TO create_failure STATEMENT 1 ON LINE 1408 create_failure: procedure (p_code); 006042 aa 6 00102 6501 00 spri4 pr6|66 006043 aa 6 00104 2521 00 spri2 pr6|68 STATEMENT 1 ON LINE 1413 P_code = p_code; 006044 aa 2 00002 2361 20 ldq pr2|2,* p_code 006045 aa 6 00040 3735 20 epp7 pr6|32,* 006046 aa 7 00174 7561 20 stq pr7|124,* P_code STATEMENT 1 ON LINE 1414 go to ERROR_RETURN_FROM_CPM_$CREATE; 006047 aa 772501 3520 04 epp2 -2751,ic 000550 = 600136237100 006050 aa 000001 7270 07 lxl7 1,dl 006051 aa 0 00657 7101 00 tra pr0|431 tra_ext_1 STATEMENT 1 ON LINE 1416 end create_failure; END PROCEDURE create_failure BEGIN PROCEDURE cv_entry_to_label_ ENTRY TO cv_entry_to_label_ STATEMENT 1 ON LINE 1422 cv_entry_to_label_: procedure (p_entry) returns (label variable); 006052 aa 6 00110 6501 00 spri4 pr6|72 006053 aa 6 00112 2521 00 spri2 pr6|74 STATEMENT 1 ON LINE 1432 a_label_decoded.code_ptr = codeptr (p_entry); 006054 aa 2 00002 3515 20 epp1 pr2|2,* p_entry 006055 aa 1 00000 3515 20 epp1 pr1|0,* p_entry 006056 aa 6 00116 2515 00 spri1 pr6|78 a_label_decoded.code_ptr STATEMENT 1 ON LINE 1433 a_label_decoded.environment_ptr = control_point_data.stack_ptr -> stack_header.stack_begin_ptr; 006057 aa 6 00040 3735 20 epp7 pr6|32,* 006060 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 006061 aa 5 00006 3535 20 epp3 pr5|6,* control_point_data.stack_ptr 006062 aa 3 00022 3735 20 epp7 pr3|18,* stack_header.stack_begin_ptr 006063 aa 6 00120 6535 00 spri7 pr6|80 a_label_decoded.environment_ptr STATEMENT 1 ON LINE 1436 return (a_label); 006064 aa 6 00112 3715 20 epp5 pr6|74,* 006065 aa 5 00004 3735 20 epp7 pr5|4,* 006066 aa 6 00116 3521 20 epp2 pr6|78,* a_label 006067 aa 7 00000 2521 00 spri2 pr7|0 006070 aa 6 00120 3521 20 epp2 pr6|80,* a_label 006071 aa 7 00002 2521 00 spri2 pr7|2 006072 aa 6 00110 6101 00 rtcd pr6|72 STATEMENT 1 ON LINE 1438 end cv_entry_to_label_; END PROCEDURE cv_entry_to_label_ END PROCEDURE create_control_point BEGIN PROCEDURE destroy_control_point ENTRY TO destroy_control_point STATEMENT 1 ON LINE 1446 destroy_control_point: procedure (p_cpd_ptr); 006073 da 001563200000 006074 aa 000140 6270 00 eax7 96 006075 aa 7 00034 3521 20 epp2 pr7|28,* 006076 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 006077 aa 000002000000 006100 aa 000000000000 STATEMENT 1 ON LINE 1459 if p_control_point_data.parent ^= null () then do; 006101 aa 6 00032 3735 20 epp7 pr6|26,* 006102 aa 7 00002 3715 20 epp5 pr7|2,* p_cpd_ptr 006103 aa 5 00000 3715 20 epp5 pr5|0,* p_cpd_ptr 006104 aa 5 00016 2371 00 ldaq pr5|14 p_control_point_data.parent 006105 aa 771747 6770 04 eraq -3097,ic 000054 = 077777000043 000001000000 006106 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006107 aa 000133 6000 04 tze 91,ic 006242 STATEMENT 1 ON LINE 1461 p_parent_control_point_data.meters = p_parent_control_point_data.meters + p_control_point_data.meters; 006110 aa 5 00076 2361 00 ldq pr5|62 p_control_point_data.n_schedules 006111 aa 5 00016 3535 20 epp3 pr5|14,* p_control_point_data.parent 006112 aa 3 00076 0561 00 asq pr3|62 p_parent_control_point_data.n_schedules 006113 aa 5 00077 2361 00 ldq pr5|63 p_control_point_data.pad 006114 aa 3 00077 0561 00 asq pr3|63 p_parent_control_point_data.pad 006115 aa 3 00100 2371 00 ldaq pr3|64 p_parent_control_point_data.real_time 006116 aa 5 00100 0771 00 adaq pr5|64 p_control_point_data.real_time 006117 aa 3 00100 7571 00 staq pr3|64 p_parent_control_point_data.real_time 006120 aa 5 00102 2361 00 ldq pr5|66 p_control_point_data.number_wanted 006121 aa 3 00102 0561 00 asq pr3|66 p_parent_control_point_data.number_wanted 006122 aa 5 00103 2361 00 ldq pr5|67 p_control_point_data.number_can_return 006123 aa 3 00103 0561 00 asq pr3|67 p_parent_control_point_data.number_can_return 006124 aa 3 00104 2371 00 ldaq pr3|68 p_parent_control_point_data.cpu_time 006125 aa 5 00104 0771 00 adaq pr5|68 p_control_point_data.cpu_time 006126 aa 3 00104 7571 00 staq pr3|68 p_parent_control_point_data.cpu_time 006127 aa 3 00106 2371 00 ldaq pr3|70 p_parent_control_point_data.paging_measure 006130 aa 5 00106 0771 00 adaq pr5|70 p_control_point_data.paging_measure 006131 aa 3 00106 7571 00 staq pr3|70 p_parent_control_point_data.paging_measure 006132 aa 5 00110 2361 00 ldq pr5|72 p_control_point_data.page_faults 006133 aa 3 00110 0561 00 asq pr3|72 p_parent_control_point_data.page_faults 006134 aa 5 00111 2361 00 ldq pr5|73 p_control_point_data.pd_faults 006135 aa 3 00111 0561 00 asq pr3|73 p_parent_control_point_data.pd_faults 006136 aa 3 00112 2371 00 ldaq pr3|74 p_parent_control_point_data.virtual_cpu_time 006137 aa 5 00112 0771 00 adaq pr5|74 p_control_point_data.virtual_cpu_time 006140 aa 3 00112 7571 00 staq pr3|74 p_parent_control_point_data.virtual_cpu_time 006141 aa 5 00114 2361 00 ldq pr5|76 p_control_point_data.segment_faults 006142 aa 3 00114 0561 00 asq pr3|76 p_parent_control_point_data.segment_faults 006143 aa 5 00115 2361 00 ldq pr5|77 p_control_point_data.bounds_faults 006144 aa 3 00115 0561 00 asq pr3|77 p_parent_control_point_data.bounds_faults 006145 aa 5 00116 2361 00 ldq pr5|78 p_control_point_data.vtoc_reads 006146 aa 3 00116 0561 00 asq pr3|78 p_parent_control_point_data.vtoc_reads 006147 aa 5 00117 2361 00 ldq pr5|79 p_control_point_data.vtoc_writes 006150 aa 3 00117 0561 00 asq pr3|79 p_parent_control_point_data.vtoc_writes STATEMENT 1 ON LINE 1463 call mask_ips_interrupts_caller (mask); 006151 aa 6 00040 3515 20 epp1 pr6|32,* 006152 aa 1 00121 3521 00 epp2 pr1|81 mask 006153 aa 6 00102 2521 00 spri2 pr6|66 006154 aa 6 00100 6211 00 eax1 pr6|64 006155 aa 004000 4310 07 fld 2048,dl 006156 aa 775047 3520 04 epp2 -1497,ic 003225 = 000760627000 006157 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1469 if p_control_point_data.prev_peer = null () then do; 006160 aa 6 00032 3735 20 epp7 pr6|26,* 006161 aa 7 00002 3715 20 epp5 pr7|2,* p_cpd_ptr 006162 aa 5 00000 3715 20 epp5 pr5|0,* p_cpd_ptr 006163 aa 5 00020 2371 00 ldaq pr5|16 p_control_point_data.prev_peer 006164 aa 771670 6770 04 eraq -3144,ic 000054 = 077777000043 000001000000 006165 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006166 aa 000011 6010 04 tnz 9,ic 006177 STATEMENT 1 ON LINE 1471 if p_parent_control_point_data.first_child = p_cpd_ptr then p_parent_control_point_data.first_child = p_control_point_data.next_peer; 006167 aa 5 00016 3535 20 epp3 pr5|14,* p_control_point_data.parent 006170 aa 3 00024 2371 00 ldaq pr3|20 p_parent_control_point_data.first_child 006171 aa 7 00002 6771 20 eraq pr7|2,* p_cpd_ptr 006172 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006173 aa 000007 6010 04 tnz 7,ic 006202 006174 aa 5 00022 3515 20 epp1 pr5|18,* p_control_point_data.next_peer 006175 aa 3 00024 2515 00 spri1 pr3|20 p_parent_control_point_data.first_child STATEMENT 1 ON LINE 1473 end; 006176 aa 000004 7100 04 tra 4,ic 006202 STATEMENT 1 ON LINE 1474 else p_control_point_data.prev_peer -> control_point_data.next_peer = p_control_point_data.next_peer; 006177 aa 5 00022 3535 20 epp3 pr5|18,* p_control_point_data.next_peer 006200 aa 5 00020 3515 20 epp1 pr5|16,* p_control_point_data.prev_peer 006201 aa 1 00022 2535 00 spri3 pr1|18 control_point_data.next_peer STATEMENT 1 ON LINE 1476 if p_control_point_data.next_peer = null () then do; 006202 aa 7 00002 3535 20 epp3 pr7|2,* p_cpd_ptr 006203 aa 3 00000 3535 20 epp3 pr3|0,* p_cpd_ptr 006204 aa 3 00022 2371 00 ldaq pr3|18 p_control_point_data.next_peer 006205 aa 771647 6770 04 eraq -3161,ic 000054 = 077777000043 000001000000 006206 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006207 aa 000011 6010 04 tnz 9,ic 006220 STATEMENT 1 ON LINE 1478 if p_parent_control_point_data.last_child = p_cpd_ptr then p_parent_control_point_data.last_child = p_control_point_data.prev_peer; 006210 aa 3 00016 3515 20 epp1 pr3|14,* p_control_point_data.parent 006211 aa 1 00026 2371 00 ldaq pr1|22 p_parent_control_point_data.last_child 006212 aa 7 00002 6771 20 eraq pr7|2,* p_cpd_ptr 006213 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006214 aa 000007 6010 04 tnz 7,ic 006223 006215 aa 3 00020 3715 20 epp5 pr3|16,* p_control_point_data.prev_peer 006216 aa 1 00026 6515 00 spri5 pr1|22 p_parent_control_point_data.last_child STATEMENT 1 ON LINE 1480 end; 006217 aa 000004 7100 04 tra 4,ic 006223 STATEMENT 1 ON LINE 1481 else p_control_point_data.next_peer -> control_point_data.prev_peer = p_control_point_data.prev_peer; 006220 aa 3 00020 3515 20 epp1 pr3|16,* p_control_point_data.prev_peer 006221 aa 3 00022 3715 20 epp5 pr3|18,* p_control_point_data.next_peer 006222 aa 5 00020 2515 00 spri1 pr5|16 control_point_data.prev_peer STATEMENT 1 ON LINE 1483 p_control_point_data.parent, p_control_point_data.peers = null (); 006223 aa 771631 3714 24 epp5 -3175,ic* 006224 aa 7 00002 3515 20 epp1 pr7|2,* p_cpd_ptr 006225 aa 1 00000 3515 20 epp1 pr1|0,* p_cpd_ptr 006226 aa 1 00016 6515 00 spri5 pr1|14 p_control_point_data.parent 006227 aa 7 00002 3535 20 epp3 pr7|2,* p_cpd_ptr 006230 aa 3 00000 3535 20 epp3 pr3|0,* p_cpd_ptr 006231 aa 3 00020 6515 00 spri5 pr3|16 p_control_point_data.prev_peer 006232 aa 3 00022 6515 00 spri5 pr3|18 p_control_point_data.next_peer STATEMENT 1 ON LINE 1484 call unmask_ips_interrupts_caller (mask); 006233 aa 6 00040 3515 20 epp1 pr6|32,* 006234 aa 1 00121 3521 00 epp2 pr1|81 mask 006235 aa 6 00102 2521 00 spri2 pr6|66 006236 aa 6 00100 6211 00 eax1 pr6|64 006237 aa 004000 4310 07 fld 2048,dl 006240 aa 775014 3520 04 epp2 -1524,ic 003254 = 000760627000 006241 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1485 end; STATEMENT 1 ON LINE 1490 if p_control_point_data.stack_ptr ^= null () then do; 006242 aa 6 00032 3735 20 epp7 pr6|26,* 006243 aa 7 00002 3715 20 epp5 pr7|2,* p_cpd_ptr 006244 aa 5 00000 3715 20 epp5 pr5|0,* p_cpd_ptr 006245 aa 5 00006 2371 00 ldaq pr5|6 p_control_point_data.stack_ptr 006246 aa 771606 6770 04 eraq -3194,ic 000054 = 077777000043 000001000000 006247 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006250 aa 000030 6000 04 tze 24,ic 006300 STATEMENT 1 ON LINE 1492 call release_temp_segment_ (cpm_data_$subsystem_name, p_control_point_data.stack_ptr, (0)); 006251 aa 6 00106 4501 00 stz pr6|70 006252 aa 6 00044 3701 20 epp4 pr6|36,* 006253 la 4 00166 3521 20 epp2 pr4|118,* cpm_data_$subsystem_name 006254 aa 6 00112 2521 00 spri2 pr6|74 006255 aa 5 00006 3521 00 epp2 pr5|6 p_control_point_data.stack_ptr 006256 aa 6 00114 2521 00 spri2 pr6|76 006257 aa 6 00106 3521 00 epp2 pr6|70 006260 aa 6 00116 2521 00 spri2 pr6|78 006261 aa 771555 3520 04 epp2 -3219,ic 000036 = 526000000040 006262 aa 6 00120 2521 00 spri2 pr6|80 006263 aa 771562 3520 04 epp2 -3214,ic 000045 = 464000000000 006264 aa 6 00122 2521 00 spri2 pr6|82 006265 aa 771561 3520 04 epp2 -3215,ic 000046 = 404000000043 006266 aa 6 00124 2521 00 spri2 pr6|84 006267 aa 6 00110 6211 00 eax1 pr6|72 006270 aa 014000 4310 07 fld 6144,dl 006271 la 4 00124 3521 20 epp2 pr4|84,* release_temp_segment_ 006272 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1493 p_control_point_data.stack_ptr = null (); 006273 aa 771561 2370 04 ldaq -3215,ic 000054 = 077777000043 000001000000 006274 aa 6 00032 3735 20 epp7 pr6|26,* 006275 aa 7 00002 3715 20 epp5 pr7|2,* p_cpd_ptr 006276 aa 5 00000 3715 20 epp5 pr5|0,* p_cpd_ptr 006277 aa 5 00006 7571 00 staq pr5|6 p_control_point_data.stack_ptr STATEMENT 1 ON LINE 1494 end; STATEMENT 1 ON LINE 1499 free p_control_point_data in (system_area); 006300 aa 7 00002 3715 20 epp5 pr7|2,* p_cpd_ptr 006301 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1500 p_cpd_ptr = null (); 006302 aa 771552 2370 04 ldaq -3222,ic 000054 = 077777000043 000001000000 006303 aa 6 00032 3735 20 epp7 pr6|26,* 006304 aa 7 00002 7571 20 staq pr7|2,* p_cpd_ptr STATEMENT 1 ON LINE 1502 return; 006305 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1504 end destroy_control_point; END PROCEDURE destroy_control_point BEGIN PROCEDURE push_call_frame ENTRY TO push_call_frame STATEMENT 1 ON LINE 1524 push_call_frame: procedure (p_caller, p_caller_info, p_callee, p_callee_info_ptr) options (non_quick); 006306 da 001572200000 006307 aa 000120 6270 00 eax7 80 006310 aa 7 00034 3521 20 epp2 pr7|28,* 006311 aa 2 01050 2721 00 tsp2 pr2|552 int_entry_desc 006312 aa 000010000000 006313 aa 000000000000 006314 aa 6 00042 3735 20 epp7 pr6|34,* 006315 aa 7 00002 2361 20 ldq pr7|2,* 006316 aa 000002 6040 04 tmi 2,ic 006320 006317 aa 777777 3760 07 anq 262143,dl 006320 aa 0 00250 3761 00 anq pr0|168 = 000077777777 006321 aa 6 00100 7561 00 stq pr6|64 STATEMENT 1 ON LINE 1550 call mask_ips_interrupts_caller (mask); 006322 aa 6 00040 3715 20 epp5 pr6|32,* 006323 aa 5 00121 3521 00 epp2 pr5|81 mask 006324 aa 6 00104 2521 00 spri2 pr6|68 006325 aa 6 00102 6211 00 eax1 pr6|66 006326 aa 004000 4310 07 fld 2048,dl 006327 aa 774676 3520 04 epp2 -1602,ic 003225 = 000760627000 006330 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1552 sb = control_point_data.stack_ptr; 006331 aa 6 00040 3735 20 epp7 pr6|32,* 006332 aa 7 00136 3715 20 epp5 pr7|94,* cpd_ptr 006333 aa 5 00006 3735 20 epp7 pr5|6,* control_point_data.stack_ptr 006334 aa 6 00040 3535 20 epp3 pr6|32,* 006335 aa 3 00144 6535 00 spri7 pr3|100 sb STATEMENT 1 ON LINE 1553 sp = stack_header.stack_end_ptr; 006336 aa 7 00024 3515 20 epp1 pr7|20,* stack_header.stack_end_ptr 006337 aa 3 00146 2515 00 spri1 pr3|102 sp STATEMENT 1 ON LINE 1555 stack_frame.return_ptr = codeptr (p_caller); 006340 aa 6 00032 3715 20 epp5 pr6|26,* 006341 aa 5 00002 3521 20 epp2 pr5|2,* p_caller 006342 aa 2 00000 3521 20 epp2 pr2|0,* p_caller 006343 aa 1 00024 2521 00 spri2 pr1|20 stack_frame.return_ptr STATEMENT 1 ON LINE 1556 stack_frame.translator_id = TRANSLATOR_ID_ALM; 006344 aa 000001 2350 03 lda 1,du 006345 aa 1 00037 5511 60 stba pr1|31,60 stack_frame.translator_id STATEMENT 1 ON LINE 1558 call_frame.caller_info = p_caller_info; 006346 aa 5 00004 3735 20 epp7 pr5|4,* 006347 aa 6 00100 2361 00 ldq pr6|64 006350 aa 003 140 060 540 csl (pr,rl),(pr,rl),fill(0),bool(move) 006351 aa 7 00000 00 0006 descb pr7|0,ql p_caller_info 006352 aa 1 00076 00 0006 descb pr1|62,ql call_frame.caller_info STATEMENT 1 ON LINE 1559 call_frame.caller_info_ptr = addr (call_frame.caller_info); 006353 aa 1 00076 3735 00 epp7 pr1|62 call_frame.caller_info 006354 aa 1 00050 6535 00 spri7 pr1|40 call_frame.caller_info_ptr STATEMENT 1 ON LINE 1560 call_frame.callee = p_callee; 006355 aa 5 00006 3735 20 epp7 pr5|6,* 006356 aa 7 00000 3521 20 epp2 pr7|0,* p_callee 006357 aa 1 00052 2521 00 spri2 pr1|42 call_frame.callee 006360 aa 7 00002 3521 20 epp2 pr7|2,* p_callee 006361 aa 1 00054 2521 00 spri2 pr1|44 call_frame.callee STATEMENT 1 ON LINE 1561 call_frame.callee_info_ptr = p_callee_info_ptr; 006362 aa 5 00010 3515 20 epp1 pr5|8,* p_callee_info_ptr 006363 aa 1 00000 3515 20 epp1 pr1|0,* p_callee_info_ptr 006364 aa 3 00146 3735 20 epp7 pr3|102,* sp 006365 aa 7 00060 2515 00 spri1 pr7|48 call_frame.callee_info_ptr STATEMENT 1 ON LINE 1563 stack_frame.arg_ptr = addr (call_frame.caller_arg_list); 006366 aa 7 00062 3515 00 epp1 pr7|50 call_frame.caller_arg_list 006367 aa 7 00032 2515 00 spri1 pr7|26 stack_frame.arg_ptr STATEMENT 1 ON LINE 1566 unspec (call_frame.caller_arg_list.header) = ""b; 006370 aa 771460 2370 04 ldaq -3280,ic 000050 = 000000000000 000000000000 006371 aa 7 00062 7551 00 sta pr7|50 006372 aa 7 00063 7561 00 stq pr7|51 STATEMENT 1 ON LINE 1567 call_frame.caller_arg_list.header.call_type = Interseg_call_type; 006373 aa 000004 2350 07 lda 4,dl 006374 aa 7 00062 5511 14 stba pr7|50,14 call_frame.call_type STATEMENT 1 ON LINE 1568 call_frame.caller_arg_list.header.arg_count = 3; 006375 aa 000006 2350 03 lda 6,du 006376 aa 7 00062 6751 00 era pr7|50 call_frame.arg_count 006377 aa 0 00042 3751 00 ana pr0|34 = 777776000000 006400 aa 7 00062 6551 00 ersa pr7|50 call_frame.arg_count STATEMENT 1 ON LINE 1569 call_frame.caller_arg_list.arg_ptrs (1) = addr (call_frame.caller_info_ptr); 006401 aa 7 00050 3515 00 epp1 pr7|40 call_frame.caller_info_ptr 006402 aa 7 00064 2515 00 spri1 pr7|52 call_frame.arg_ptrs STATEMENT 1 ON LINE 1570 call_frame.caller_arg_list.arg_ptrs (2) = addr (call_frame.callee); 006403 aa 7 00052 3515 00 epp1 pr7|42 call_frame.callee 006404 aa 7 00066 2515 00 spri1 pr7|54 call_frame.arg_ptrs STATEMENT 1 ON LINE 1571 call_frame.caller_arg_list.arg_ptrs (3) = addr (call_frame.callee_arg_list_ptr); 006405 aa 7 00056 3515 00 epp1 pr7|46 call_frame.callee_arg_list_ptr 006406 aa 7 00070 2515 00 spri1 pr7|56 call_frame.arg_ptrs STATEMENT 1 ON LINE 1573 call_frame.callee_arg_list_ptr = addr (call_frame.callee_arg_list); 006407 aa 7 00072 3515 00 epp1 pr7|58 call_frame.callee_arg_list 006410 aa 7 00056 2515 00 spri1 pr7|46 call_frame.callee_arg_list_ptr STATEMENT 1 ON LINE 1576 unspec (call_frame.callee_arg_list.header) = ""b; 006411 aa 771437 2370 04 ldaq -3297,ic 000050 = 000000000000 000000000000 006412 aa 7 00072 7551 00 sta pr7|58 006413 aa 7 00073 7561 00 stq pr7|59 STATEMENT 1 ON LINE 1577 call_frame.callee_arg_list.header.call_type = Interseg_call_type; 006414 aa 000004 2350 07 lda 4,dl 006415 aa 7 00072 5511 14 stba pr7|58,14 call_frame.call_type STATEMENT 1 ON LINE 1578 call_frame.callee_arg_list.header.arg_count = 1; 006416 aa 000002 2350 03 lda 2,du 006417 aa 7 00072 6751 00 era pr7|58 call_frame.arg_count 006420 aa 0 00042 3751 00 ana pr0|34 = 777776000000 006421 aa 7 00072 6551 00 ersa pr7|58 call_frame.arg_count STATEMENT 1 ON LINE 1579 call_frame.callee_arg_list.arg_ptrs (1) = addr (call_frame.callee_info_ptr); 006422 aa 7 00060 3515 00 epp1 pr7|48 call_frame.callee_info_ptr 006423 aa 7 00074 2515 00 spri1 pr7|60 call_frame.arg_ptrs STATEMENT 1 ON LINE 1581 stack_frame.prev_sp = control_point_data.last_frame_ptr; 006424 aa 3 00136 3515 20 epp1 pr3|94,* cpd_ptr 006425 aa 1 00010 3515 20 epp1 pr1|8,* control_point_data.last_frame_ptr 006426 aa 7 00020 2515 00 spri1 pr7|16 stack_frame.prev_sp STATEMENT 1 ON LINE 1584 control_point_data.last_frame_ptr = sp; 006427 aa 3 00136 3515 20 epp1 pr3|94,* cpd_ptr 006430 aa 1 00010 6535 00 spri7 pr1|8 control_point_data.last_frame_ptr STATEMENT 1 ON LINE 1586 stack_frame.next_sp, /* "push" the frame into existence */ /* Note that we guarantee that the next stack frame */ /* goes on a mod 16-word boundary. */ stack_header.stack_end_ptr = addwordno (sp, (currentsize (call_frame) + 16 - mod (currentsize (call_frame), 16))); 006431 aa 6 00100 2361 00 ldq pr6|64 006432 aa 000043 0760 07 adq 35,dl 006433 aa 000044 5060 07 div 36,dl 006434 aa 000076 0760 07 adq 62,dl 006435 aa 6 00101 7561 00 stq pr6|65 006436 aa 000170 3520 04 epp2 120,ic 006626 = 000000000020 0uA9 (1\)!&/9 BFLV_\Rir~|trJtP,Țr>yqi~azY$LQ!8.I+VA4r9>1G)Q![d eJn( xl:hjX4V^fvz$yq#4i+a4D"Y=QFTINAWj9`1izN)r!z2| "2nHXhxV (8#,Hy ----------------------------------------------------------- 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