COMPILATION LISTING OF SEGMENT ocdcm_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0944.3 mst Sat Options: optimize list 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 8* * * 9* *********************************************************** */ 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(85-09-30,Farley), approve(85-11-14,MCR6979), 14* audit(85-11-14,Fawcett), install(86-03-21,MR12.0-1033): 15* To support IMU. 16* 2) change(85-12-03,Farley), approve(85-12-03,MCR7306), 17* audit(86-03-03,Fawcett), install(86-03-21,MR12.0-1033): 18* Fix bugs found while doing Dipper changes. 19* 3) change(85-12-03,Farley), approve(85-12-03,MCR7312), 20* audit(86-03-03,Fawcett), install(86-03-21,MR12.0-1033): 21* Add BCE MCA lock and unlock. 22* 4) change(86-03-12,Fawcett), approve(86-03-12,MCR7359), 23* audit(86-09-05,Lippard), install(86-09-16,MR12.0-1159): 24* Enable the locking and unlocking of MCA after system is booted. If system 25* is not at BCE then enter audit trail. 26* 5) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 27* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1056): 28* Correct error message documentation. 29* 6) change(86-07-01,Farley), approve(86-09-02,MCR7523), 30* audit(86-10-03,Fawcett), install(86-10-09,MR12.0-1181): 31* Add the BAIL_OUT label, as a place for process_io to goto when it finds 32* that there is no functional console. Also some other fixes suggested by 33* John Ata in TR phx19534. 34* 7) change(86-08-07,Farley), approve(86-09-02,MCR7523), 35* audit(86-10-03,Fawcett), install(86-10-09,MR12.0-1181): 36* Increased all timeouts for IMU consoles to 2 min 30 sec. This is needed 37* because the console adapter firmware waits 2 min before returning "Device 38* Busy" (01/00) when someone is inputing something on the multi-drop. 39* Also removed the timeout_factor code, as it is nolonger needed. 40* 8) change(86-12-18,Farley), approve(87-01-05,MECR0007), 41* audit(86-12-18,Fawcett), install(87-01-05,MR12.0-1253): 42* Reset oc_data.write_q_full after get_mc_output entry picks up a message 43* and after freeing all the write queues in the esd_reset entry and 44* reset_console/retry_io procedures. 45* 46* Changed to call process_io as part of the duties of the poll_for_timeout 47* entry. This will allow queued IO to be started. 48* 9) change(87-01-14,Farley), approve(87-01-14,MCR7603), 49* audit(87-01-14,Fawcett), install(87-01-14,MR12.0-1279): 50* Offical installation of above corrections (closes MECR0007). 51* 10) change(87-07-15,Farley), approve(87-07-17,MCR7735), 52* audit(87-07-20,Fawcett), install(87-07-22,MR12.1-1044): 53* Changed queue_io entry to set oc_entry_ptr before checking if MC I/O 54* is enabled, as this code will eventually want to use it.. 55* 56* Changed queue_console_io to check for a write_queue_full condition 57* after adding an entry. This corrects the age old problem of 58* out-of-sequence I/O.. 59* 60* Added a wire_and_mask flag and moved the wiring/masking and 61* unwiring/unmasking to internal procs to allow it to only occur when 62* required. 63* 64* Changed several sections of the code to check for a null oc_entry_ptr 65* before attempting to reference data in the oc_entry structure. Also 66* turn off the in_service flag in most cases. 67* 68* Removed extra new_line (NL) from error_msg. 69* 70* Changed all CRASH severities to PANIC, so that report_error will 71* properly crash the system. 72* 73* Changed init_all_consoles to first find all available consoles then 74* try to assign the bootload. If attempt fails then it will now 75* attempt error recovery. 76* 77* Changed reconfigure (MAKE_BOOTLOAD_CONSOLE) to reassign previous 78* (old) console if new console assignment fails. 79* 11) change(89-08-28,Farley), approve(89-09-18,MCR8132), 80* audit(89-10-10,WAAnderson), install(89-10-11,MR12.3-1091): 81* Added checks in the reconfigure MAKE_IO_DEVICE and MAKE_INOP_DEVICE code 82* after unassigning the bootload console for a NULL oc_entry_ptr. If it is 83* null then attempt to find the console again and if unsuccessful return an 84* error code to the caller. 85* 86* Changed console_recovery to call change_console_state to insure that the 87* config_deck gets properly modified. 88* 89* Changed fill_oc_entry to insure that only ONE console has a state of "ON", 90* changing all others to "ALT". 91* 92* Increased the size of the error_msg and error_buffer to be consistent with 93* oc_trans_output_. 94* 95* Added a temporary holding area for oc_entry.line_leng in report_error. 96* This is required when reporting a multi-line error message and the console 97* goes inoperative prior to completing the sequence. 98* 99* Changed "I/O error" log message to optionally include a timeout indication 100* ("I/O timeout error") and also include the OPC name in the ascii text. 101* END HISTORY COMMENTS */ 102 /* format: off */ 103 104 ocdcm_: 105 proc (); 106 107 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 108 /* */ 109 /* Purpose: */ 110 /* */ 111 /* This is the operator console DIM. It has the following responsibilities: */ 112 /* */ 113 /* 1.) Initialize and maintain the ring 0 oc_data database. */ 114 /* */ 115 /* 2.) Establish and maintain communications with the bootload console. */ 116 /* */ 117 /* 3.) Detect console faults and handle these faults through one of the following */ 118 /* recovery strategies: */ 119 /* */ 120 /* a.) Utilize an alternate console as the bootload console device. */ 121 /* b.) Forward all console traffic to the message coordinator. */ 122 /* */ 123 /* 4.) Provide an orderly means explicitly reconfiguring all configured console */ 124 /* devices. */ 125 /* */ 126 /* Note: This code was redesigned and rewritten from the original ocdcm_ to add support of */ 127 /* multiple consoles and to provide a better automated recovery strategy. */ 128 /* */ 129 /* */ 130 /* Written: 07/20/73 */ 131 /* */ 132 /* Author: Bill Silver (Silver.Multics) */ 133 /* */ 134 /* Rewritten: 05/01/83 */ 135 /* */ 136 /* Author: E. A. Ranzenbach (Ranzenbach.Multics@M) */ 137 /* Location: System-M. */ 138 /* Release: MR10.2 */ 139 /* */ 140 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 141 /* */ 142 /* Modifications: */ 143 /* */ 144 /* Date Author Reason */ 145 /* */ 146 /* 831207 Edward A. Ranzenbach Set the wired_hardcore_data$abort_request bit for bce. */ 147 /* Also, list consoles only at appropriate times. */ 148 /* */ 149 /* 840320 Edward A. Ranzenbach Critical Fix for MR10.2. Corrected reconfiguration crashes */ 150 /* caused by inadvertantly leaving oc_data locked. */ 151 /* */ 152 /* 840410 Edward A. Ranzenbach Fixed yet another reconfiguration problem which produces */ 153 /* a "Lock not Mine" condition. Added set_prompt entrypoint */ 154 /* for B2. Cut size of I/Os to 132 bytes. Changed bootload */ 155 /* consoles reconfigured implicitly by a new bootload console */ 156 /* to have a state of ALT, thus making them immediately */ 157 /* available to console recovery. Changed console recovery */ 158 /* strategy during crash to search for a good console until it */ 159 /* can find one. */ 160 /* */ 161 /* 840417 E. A. Ranzenbach Better error reporting stragegy which prevents syserr race */ 162 /* conditions. */ 163 /* 840502 E. A. Ranzenbach Changed certain reconfiguration options to not wire and */ 164 /* mask. */ 165 /* */ 166 /* 840517 E. A. Ranzenbach Update the wired config deck dynamically. */ 167 /* */ 168 /* 840605 E. A. Ranzenbach Fix garbled I/O problems and attempts to unlock oc_data */ 169 /* multiple times. */ 170 /* 840712 E. A. Ranzenbach Fixed problem that stored uninitialized pointer in the */ 171 /* event queue. */ 172 /* */ 173 /* 840724 E. A. Ranzenbach To change timeouts to look for good status before retrying */ 174 /* the I/O. Necessary for bce breakpoints. */ 175 /* */ 176 /* 841105 E. A. Ranzenbach Implemented printer_(on off) control order and fixed one */ 177 /* more reconfiguration locking strategy problem. */ 178 /* */ 179 /* 841115 E. A. Ranzenbach Change for Olin to send wakeup when taking back */ 180 /* responsibility for I/O from theMC. */ 181 /* */ 182 /* 841115 E. A. Ranzenbach Simulate a pending READ during initialization. */ 183 /* */ 184 /* 850111 E. A. Ranzenbach Added lost special interrupt protection so that EMC's */ 185 /* won't lose during heavey traffic. */ 186 /* 850329 E. A. Ranzenbach Cut the size of I/O's to 132 chars, improved error */ 187 /* reporting. TR19223. */ 188 /* 850405 E. A. Ranzenbach Fixed console_io.io_in_progress not being reset during */ 189 /* console recovery. TR19225. */ 190 /* */ 191 /* 850620 Paul K Farley To wait five milliseconds after status arrives, if doing */ 192 /* priority_io. This will allow the IMU console time to send */ 193 /* the interrupt and get ready for the next IO. */ 194 /* */ 195 /* Add code to check if PCW gets executed by console. Only */ 196 /* IOM consoles use it, and if on an IMU we need to know. */ 197 /* */ 198 /* Add a flag to know that the program was called at */ 199 /* $interrupt_handler. Change the status pause check to */ 200 /* check this flag, instead of checking for priority io in */ 201 /* progress. This is because there could be an IO */ 202 /* outstanding that will not terminate properly if not given */ 203 /* the extra time. */ 204 /* */ 205 /* Added code to LOCK(disable) or UNLOCK(enable) the console */ 206 /* input to the MCA (in the IMU). */ 207 /* */ 208 /* 850827 Paul K Farley To change report_error to locate the bootload console */ 209 /* before outputting error message. Also added more info */ 210 /* to the oc_data event trace. */ 211 /* */ 212 /* 850911 Paul K Farley To reset alerted switch in priority_io entry. */ 213 /* */ 214 /* 850913 Paul K Farley To add a timeout_factor to oc_entry for increasing the */ 215 /* IO timeout under special conditions. */ 216 /* */ 217 /* 850925 Paul K Farley To allow for times when NO cpu cards are present and */ 218 /* to properly find the entrypoint_name in report_error. */ 219 /* */ 220 /* 850930 Paul K Farley To add the process_group_id to the new MCA messages. */ 221 /* */ 222 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 223 224 console_free: 225 entry (console_to_check_parm, console_is_free_parm); 226 227 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 228 /* */ 229 /* Entry to check if the specified console is available to RCP. If the console is not assigned as */ 230 /* a bootload or alternate then console_is_free is returned true. If no such console is configured */ 231 /* or the console is assigned as a bootload or alternate console then console_is_free is returned */ 232 /* false. */ 233 /* */ 234 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 235 236 /* parameters... (I) = Input, (O) = Output */ 237 238 dcl console_to_check_parm char (4) parameter; /* name of the console to check... (I) */ 239 dcl console_is_free_parm bit (1) parameter; /* ON => console is free... (O) */ 240 241 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 242 243 244 console_to_check = console_to_check_parm; /* copy args before we wire and mask... */ 245 246 call lock_oc_data (); /* get the lock, wire and mask... */ 247 248 oc_entry_ptr = find_oc_entry (console_to_check); /* locate the console... */ 249 if oc_entry_ptr = null then do; /* no such animal... */ 250 call unlock_oc_data (); /* release lock, unwire, unmask... */ 251 console_is_free_parm = false; /* set parameter value... */ 252 return; 253 end; 254 255 console_is_free = (^oc_entry.bootload_console & ^oc_entry.alternate); /* setup internal parm value... */ 256 257 call unlock_oc_data (); /* release lock, unwire, unmask... */ 258 259 console_is_free_parm = console_is_free; /* copy to caller's stack... */ 260 261 return; /* done... */ 262 263 console_info: 264 entry (oc_name, oc_flags, oc_channel, oc_device_idx, oc_line_leng, code); 265 266 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 267 /* */ 268 /* Entry to return information about the requested console. If oc_name = "" then information about */ 269 /* the bootload console is returned. */ 270 /* */ 271 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 272 273 /* parameters... (I) = Input, (O) = Output */ 274 275 dcl oc_name char (4) aligned /* console info is requested for..(I/O) */ 276 parameter; 277 dcl oc_flags bit (36) parameter; /* oc_entry.flags... (O) */ 278 dcl oc_channel char (8) parameter; /* console's IOM channel... (O) */ 279 dcl oc_device_idx fixed bin (17) parameter; /* console's assigned device index..(O) */ 280 dcl oc_line_leng fixed bin (17) parameter; /* console's line length... (O) */ 281 /* dcl code fixed bin (35) parameter; standard Multics error code... (O) */ 282 283 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 284 285 oc_entry_ptr = find_oc_entry (oc_name); /* locate the requested console... */ 286 287 if oc_entry_ptr = null then do; /* no such console... */ 288 code = error_table_$device_not_active; 289 return; 290 end; 291 292 oc_flags = unspec (oc_entry.flags); /* copy the info... */ 293 oc_channel = oc_entry.channel; 294 oc_device_idx = oc_entry.device_idx; 295 oc_line_leng = oc_entry.line_leng; 296 297 code = 0; /* indicate successful completion... */ 298 299 return; 300 301 drain_io: 302 entry (); 303 304 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 305 /* */ 306 /* Entry to quies the console. This is done by locking oc_data, thus preventing I/O queueing, then */ 307 /* completing any I/O in progress and then attempting to complete any I/O in the queue. */ 308 /* */ 309 /* Note: This entry leaves oc_entry.io_in_progress set to prevent further attempts at I/O... */ 310 /* */ 311 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 312 313 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 314 315 if ^oc_data.in_service | oc_data.mc_io_enabled then return; /* console is not configured... */ 316 317 oc_entry_ptr = find_oc_entry (""); /* find the bootload console... */ 318 if oc_entry_ptr = null then return; /* no console, no need to drain... */ 319 320 do while (^done); /* quies the console... */ 321 call lock_oc_data (); /* get the lock, wire and mask... */ 322 do while (oc_entry.io_in_progress); /* finish I/O that is in progress... */ 323 call process_io_status (); /* process received statuses... */ 324 end; 325 if next_console_io () = null then done = true; 326 else call process_io (); /* and outstanding I/O... */ 327 call unlock_oc_data (); /* release lock, unwire and unmask... */ 328 end; 329 330 oc_entry.io_in_progress = true; /* only my hairdresser knows for sure...*/ 331 332 return; /* pending I/O completed... */ 333 334 err_event_chan: 335 entry (event_chan); 336 337 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 338 /* */ 339 /* Entry which when called will install the event channel specified by the caller into */ 340 /* oc_data.err_event_cid. This event channel will be utilizied to wakeup the caller any time a */ 341 /* condition exists where I/O cannot be handled by any of the configured consoles. */ 342 /* */ 343 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 344 345 /* parameters... (I) = Input, (O) = Output */ 346 347 dcl event_chan fixed bin (71) parameter; /* event channel to send wakeup on..(I) */ 348 349 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 350 351 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 352 353 oc_data.err_event_cid = event_chan; /* install the channel... */ 354 oc_data.err_event_pid = pds$process_id; /* and the process ID of the caller... */ 355 356 return; /* done... */ 357 358 esd_reset: 359 entry (); 360 361 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 362 /* */ 363 /* Entry called by ESD to ensure that it has a usable console. */ 364 /* */ 365 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 366 367 entrypoint = "esd_reset"; /* set entrypoint name... */ 368 369 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 370 oc_data.lock = ""b; /* reset lock... */ 371 372 if ^oc_data.in_service then do; /* no good consoles to run on... */ 373 return; /* all that is necessary... */ 374 end; 375 376 oc_data.mc_io_enabled = false; /* MC will not be operative... */ 377 378 oc_data.crash_on_crf = false; /* give ESD a fair shake at recovery... */ 379 380 unspec (oc_data.priority_io) = ""b; /* erase any residue... */ 381 oc_data.priority_io.completed = true; /* mark the slot free... */ 382 383 do idx = 1 to WRITE_QUEUE_SIZE; /* free all WRITES... */ 384 unspec (oc_data.write_queue (idx)) = ""b; /* erase any residue... */ 385 oc_data.write_queue (idx).completed = true; /* mark the slot free... */ 386 end; 387 oc_data.write_q_full = false; /* reset the full flag... */ 388 389 oc_data.stacked_read_cnt = 1; /* free all READs, leave one pending... */ 390 unspec (oc_data.read_io) = ""b; /* erase any residue... */ 391 oc_data.read_io.completed = true; /* mark the slot free... */ 392 393 call unassign_bootload_console (); /* unassign the bootload console... */ 394 395 if oc_entry_ptr = null then do; /* no bootload console found... */ 396 oc_data.in_service = false; /* best we can do... */ 397 return; 398 end; 399 400 oc_entry.io_in_progress = false; /* reset certain flags... */ 401 oc_entry.discard = false; 402 oc_entry.discarded = false; 403 oc_entry.got_special_int = false; 404 oc_entry.oper_request = false; 405 oc_entry.retry_cnt = 0; 406 oc_entry.io_time = 0; 407 408 call assign_bootload_console (oc_entry.name, err_code); /* and now re-assign it... */ 409 410 call reset_channel (); /* reset the console channel... */ 411 412 return; 413 414 get_input: 415 entry (input_text, input_length, code); 416 417 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 418 /* */ 419 /* Entry to pickup operator input. Although there is only one physical READ I/O additional READs */ 420 /* may be queued before this one completes. This is accomplished by stacking the READ requests. As */ 421 /* a READ is picked up a check is made and the READ is reset if any READs have been stacked. */ 422 /* */ 423 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 424 425 /* parameters... (I) = Input, (O) = Output */ 426 427 dcl input_text char (256) parameter; /* text of the input line... (O) */ 428 dcl input_length fixed bin (17) parameter; /* length of the input line... (O) */ 429 /* dcl code fixed bin (35) parameter; standard Multics error code... (O) */ 430 431 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 432 433 input_text = ""; /* initialize... */ 434 input_length = 0; 435 code = 0; 436 437 oc_entry_ptr = find_oc_entry (""); /* find the bootload console... */ 438 if oc_entry_ptr = null then return; /* no console, no data... */ 439 440 call lock_oc_data (); /* get the lock, wire and mask... */ 441 442 local_io = oc_data.read_io; /* copy to local storage... */ 443 call reset_read (); /* reset the READ I/O... */ 444 oc_data.stacked_read_cnt = oc_data.stacked_read_cnt - 1; /* decrement the read stack... */ 445 if oc_data.stacked_read_cnt > 0 then do; /* if we have stacked reads... */ 446 call log_console_event (POPPED_READ, addr (oc_data.read_io)); /* log the POP... */ 447 end; 448 call unlock_oc_data (); /* release lock, unwire and unmask... */ 449 input_text = local_io.text; /* copy the input text... */ 450 input_length = local_io.leng; /* and the input text length... */ 451 call log_console_event (READ_PICKUP, addr (oc_data.read_io)); /* log the event... */ 452 453 return; 454 455 get_mc_output: 456 entry (mc_io_uid , output_length, output_text); 457 458 459 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 460 /* */ 461 /* Entry called be the Message Coordinator to pickup the text of a non-syserr message. The */ 462 /* mc_io_uid contains the negated time that the message was queued. This was passed to the Message */ 463 /* Coordinator when we told it there was someting to do. This message UID is used to search the */ 464 /* message queue and retrieve the right message. */ 465 /* */ 466 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 467 468 /* parameters... (I) = Input, (O) = Output */ 469 470 dcl mc_io_uid fixed bin (71) parameter; /* negated time queued of output... (I) */ 471 dcl output_length fixed bin (17) parameter; /* (O) */ 472 dcl output_text char (256) parameter; /* (O) */ 473 474 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 475 476 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 477 oc_entry_ptr = null; 478 479 do idx = 1 to WRITE_QUEUE_SIZE; /* search the WRITE queue... */ 480 if -oc_data.write_queue (idx).time_queued = mc_io_uid then do; /* found it... */ 481 console_io_ptr = addr (oc_data.write_queue (idx)); /* overlay the WRITE... */ 482 output_length = multiply (console_io.leng, 4, 17); /* setup return parameters... */ 483 output_text = console_io.text; 484 console_io.completed = true; /* free the I/O slot... */ 485 oc_data.write_q_full = false; /* reset the full flag... */ 486 call log_console_event (MC_IO_PICKUP, console_io_ptr); 487 return; 488 end; 489 end; 490 491 output_length = 0; /* requested output not found... */ 492 output_text = ""; 493 494 call log_console_event (MC_IO_FAILURE, null); 495 496 return; /* done... */ 497 498 init_all_consoles: 499 entry (); 500 501 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 502 /* */ 503 /* This entry is called by real_initializer during initialization to configure all consoles */ 504 /* described in the config file. */ 505 /* */ 506 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 507 508 entrypoint = "init_all_consoles"; /* set entrypoint name... */ 509 510 oc_data_ptr = addr (oc_data$); /* find oc_data... */ 511 oc_entry_ptr = null; 512 513 unspec (oc_data) = ""b; /* zero the database... */ 514 515 sd_ptr = addr (syserr_data$syserr_area); /* find syserr data... */ 516 sd.char_type_flag = true; /* ASCII console... */ 517 sd.ocdcm_init_flag = false; /* specify no active console yet... */ 518 519 oc_data.version = oc_data_version; /* set the version... */ 520 oc_data.flags.printer_on = true; /* start with echoing input... */ 521 522 oc_data.last_read_queued = -1; /* initialize some times... */ 523 oc_data.last_write_queued = -1; 524 oc_data.last_poll_time = -1; 525 oc_data.max_computed_io_time = MAX_MAX_IO_TIME * 1e06; /* for now... */ 526 527 oc_data.next_free_write = 1; /* initialize indices... */ 528 oc_data.next_event = 1; 529 530 oc_data.read_io.completed = true; /* free the read slot... */ 531 oc_data.priority_io.completed = true; /* and mark priority as empty... */ 532 533 do idx = 1 to WRITE_QUEUE_SIZE; /* mark all WRITE slots as free... */ 534 oc_data.write_queue (idx).completed = true; 535 end; 536 537 oc_data.abs_addr = absadr (oc_data_ptr, err_code); /* find absolute address of oc_data... */ 538 if err_code ^= 0 then call report_error (PANIC, entrypoint, 539 "Unable to determine absolute memory address of oc_data."); 540 541 oc_data.prompt = "M-> " || copy (byte (binary ("177"b3)), 4); /* setup prompt string & pad... */ 542 oc_data.write_return = "177177012015"b3; /* string to write = PAD PAD CR LF... */ 543 oc_data.discard_notice = byte (10) || byte (13) || "(output discarded)" || /* initialize the discard notice... */ 544 byte (10) || byte (13) || copy (byte (binary ("177"b3)), 2); 545 546 prph_opc_cardp = null; /* initialize for card search... */ 547 548 call config_$find_parm ("ccrf", parm_ptr); /* find the CCRF parm... */ 549 if parm_ptr ^= null then oc_data.crash_on_crf = true; /* found it... */ 550 551 call config_$find_parm ("clst", parm_ptr); /* find the CLST parm... */ 552 if parm_ptr ^= null then oc_data.list_consoles = true; /* found it... */ 553 554 do while (^done); /* process all "opc" "prph" cards... */ 555 call config_$find ("prph", prph_opc_cardp); /* find a "prph" card... */ 556 if prph_opc_cardp = null then done = true; /* no more prph cards... */ 557 else do; 558 if substr (prph_opc_card.name, 1, 3) = "opc" then do; /* found an "opc" card... */ 559 if oc_data.console_cnt = MAX_OPC_CNT then do; /* don't reference beyond oc_data... */ 560 done = true; /* signal end of initialization loop... */ 561 call report_error (BEEP, entrypoint, "Maximum console count exceeded."); 562 call report_error (ANNOUNCE, entrypoint, "Additional consoles will not be configured."); 563 end; 564 else do; 565 call fill_oc_entry (oc_data_ptr, /* build DCW list, etc... */ 566 oc_data.console_cnt + 1, prph_opc_cardp, oc_entry_ptr); 567 if oc_entry.active then /* if we succeeded... */ 568 oc_data.console_cnt = oc_data.console_cnt + 1; 569 end; 570 end; 571 end; 572 end; 573 574 if oc_data.console_cnt < 1 then do; /* must be at least one opc card... */ 575 call report_error (PANIC, entrypoint, "Missing prph opc card."); 576 end; 577 578 do idx = 1 to oc_data.console_cnt; /* locate the console... */ 579 oc_entry_ptr = addr (oc_data.opc (idx)); 580 if oc_entry.bootload_console then do; /* found bootload console, turn it on...*/ 581 call assign_bootload_console (oc_entry.name, err_code); 582 if err_code ^= 0 then call console_recovery (); 583 if oc_data.bootload_console_idx < 1 then 584 call report_error (PANIC, entrypoint, "Console channel assignment failed."); 585 sd.ocdcm_init_flag = true; /* enable syserr traffic... */ 586 end; 587 end; 588 589 if oc_data.bootload_console_idx < 1 then do; /* must have an active console... */ 590 call console_recovery (); 591 if oc_data.bootload_console_idx < 1 then 592 call report_error (PANIC, entrypoint, "No active console configured."); 593 end; 594 595 prph_opc_cardp = null; /* might as well use this ptr... */ 596 cpu_cnt = 0; /* initialize the counter... */ 597 done = false; /* initialize loop terminator... */ 598 599 do while (^done); /* count the number of CPUs... */ 600 call config_$find ("cpu", prph_opc_cardp); 601 if prph_opc_cardp ^= null then cpu_cnt = cpu_cnt + 1; 602 else done = true; 603 end; 604 /* maximum time we will wait for lock...*/ 605 oc_data.max_computed_io_time = oc_data.max_computed_io_time * max (1, cpu_cnt); 606 607 if oc_data.list_consoles & 608 (sys_info$collection_1_phase = BOOT_INITIALIZATION 609 | sys_info$collection_1_phase = SERVICE_INITIALIZATION) then 610 do idx = 1 to oc_data.console_cnt; /* list the assignments... */ 611 oc_entry_ptr = addr (oc_data.opc (idx)); 612 device_type = "uninitialized"; 613 if oc_entry.bootload_console then device_type = "bootload"; 614 else if oc_entry.alternate then device_type = "alternate"; 615 else if oc_entry.io_device then device_type = "I/O"; 616 else if oc_entry.inop_device then device_type = "inoperative"; 617 else if oc_entry.no_device then device_type = "off"; 618 call report_error (ANNOUNCE, entrypoint, "Assigned console ^a as ^a device.", 619 oc_entry.name, device_type); 620 end; 621 622 if sys_info$collection_1_phase < SERVICE_INITIALIZATION then do; /* simulate a waiting READ... */ 623 oc_data.opc (oc_data.bootload_console_idx).oper_request = true; /* prime the RE(TURN QUEST) key... */ 624 end; 625 626 call log_console_event (INIT_OC_DATA, oc_data.io_ptr); 627 628 return; /* done... */ 629 630 interrupt_handler: 631 entry (assigned_idx, interrupt_level, fault_status); 632 633 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 634 /* */ 635 /* Entry called to field an interrupt for the console channel. It should be noted that any Multics */ 636 /* process on the CPU when the interrupt arrives will execute this code. If we are unable to get */ 637 /* the lock and we have a special interrupt (level 7) then we will post it in a special area of */ 638 /* oc_data that can be modified without protection of the lock. It is the responsibility of anyone */ 639 /* unlocking oc_data to process any pending specials. */ 640 /* */ 641 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 642 643 /* parameters... (I) = Input, (O) = Output */ 644 645 dcl assigned_idx fixed bin (35) parameter; /* index of console causing interrupt. (I) */ 646 dcl interrupt_level fixed bin (3) parameter; /* should be 1, 3, or 7... (I) */ 647 dcl fault_status bit (36) parameter; /* system fault status, IGNORED... (I) */ 648 649 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 650 651 entrypoint = "interrupt_handler"; /* set entrypoint name... */ 652 653 654 entered_via_interrupt = true; /* show which way we came in.. */ 655 656 if interrupt_level = 1 then do; /* IOM overhead fault... */ 657 call report_error (JUST_LOG, entrypoint, "System Fault."); /* log it... */ 658 return; /* and ignore it... */ 659 end; 660 661 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 662 663 oc_entry_ptr = find_oc_entry (""); /* locate the bootload console... */ 664 if oc_entry_ptr = null then return; /* no bootload console... */ 665 if assigned_idx > 0 & assigned_idx ^= oc_entry.device_idx then do; /* interrupt not from bootload console. */ 666 if interrupt_level = 7 then return; /* no specials, please... */ 667 do idx = 1 to oc_data.console_cnt; /* locate the console... */ 668 if oc_data.opc (idx).device_idx = assigned_idx then /* found it... */ 669 oc_entry_ptr = (addr (oc_data.opc (idx))); 670 end; 671 if assigned_idx ^= oc_entry.device_idx then return; /* could not locate console... */ 672 if ^oc_entry.assigned then return; /* console no longer assigned... */ 673 end; 674 675 if stac (addr (oc_data.lock), pds$process_id) then do; /* only field terminates if we get lock.*/ 676 call wire_and_mask; /* so unlock can unwire... */ 677 if interrupt_level = 7 then oc_entry.got_special_int = true; /* operator pushed RE(TURN QUEST) ... */ 678 679 call process_io_status (); /* process any associated I/O status... */ 680 681 call process_io (); /* process any waiting output... */ 682 683 call unlock_oc_data (); /* release lock, unwire and unmask... */ 684 end; 685 else if interrupt_level = 7 then do; 686 oc_data.no_lock_flags.got_special_int = true; 687 oc_data.meters.queued_special_int_count = oc_data.meters.queued_special_int_count +1; 688 end; 689 690 return; 691 692 poll_for_timeout: 693 entry (); 694 695 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 696 /* */ 697 /* Entry called by traffic control to check for I/O timeouts on the console. */ 698 /* */ 699 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 700 701 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 702 703 if ^oc_data.in_service | oc_data.mc_io_enabled then return; /* no console service, no timeouts... */ 704 705 if oc_data.lock = pds$process_id then do; /* MYLOCK error... */ 706 call report_error (PANIC, "lock_oc_data", "Mylock error."); /* crash system, store flagbox message..*/ 707 end; 708 709 if ^stac (addr (oc_data.lock), pds$process_id) then return; /* if I can't get the lock return... */ 710 711 oc_data.last_poll_time = clock (); /* note last time polling occured... */ 712 713 oc_entry_ptr = find_oc_entry (""); /* find the bootload console entry... */ 714 715 if oc_entry_ptr ^= null then do; /* only do if console available... */ 716 call process_io_status (); /* timeout check done there.. */ 717 718 call process_io (); /* process any waiting output... */ 719 end; 720 else if ^oc_data.mc_io_enabled then 721 oc_data.in_service = false; 722 723 if ^stacq (oc_data.lock, ""b, pds$process_id) then do; /* clear lock... */ 724 if oc_data.lock ^= ""b then /* if not free crash... */ 725 call report_error (PANIC, "unlock_oc_data", "Lock not mine."); 726 end; 727 728 return; /* done... */ 729 730 printer_off: 731 entry (); 732 733 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 734 /* */ 735 /* Entry which implements "printer_off" control order. Once this entry has been called all input */ 736 /* from the console will be in the blind until the "printer_on" entry is called. */ 737 /* */ 738 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 739 740 oc_data_ptr = addr (oc_data$); /* no need to lock and wire for this... */ 741 oc_data.flags.printer_on = false; /* turn off read echoing... */ 742 return; /* all there is to it... */ 743 744 printer_on: 745 entry (); 746 747 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 748 /* */ 749 /* Re-enables echoing of input from the console... */ 750 /* */ 751 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 752 753 oc_data_ptr = addr (oc_data$); /* no need to lock and wire for this... */ 754 oc_data.flags.printer_on = true; /* turn it back on... */ 755 return; /* all there is to it... */ 756 757 priority_io: 758 entry (priority_io_ptr); 759 760 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 761 /* */ 762 /* This entry provides a means of performing priority I/O to the operator's console. The I/O is */ 763 /* placed into a special buffer in oc_data. The caller then calls the appropriate internal */ 764 /* procedures to cause the I/O to be immediately executed. */ 765 /* */ 766 /* * * * W A R N I N G * * * */ 767 /* */ 768 /* The use of this entrypoint causes the caller to loop in ocdcm_ awaiting the successful */ 769 /* completion of the I/O. This looping is done on a wired stack in a masked interrupt environment */ 770 /* and can cause the processor of execution to loop for as long as it takes to complete the I/O. */ 771 /* For READs this can take longer than thirty (30) seconds. */ 772 /* */ 773 /* Noting the effects that this can have on performance it is imperative that this entrypoint be */ 774 /* utilized judiciously. */ 775 /* */ 776 /* Note: An additional side effect of this entrypoint is that I/O performed by it will not be in */ 777 /* chronological order with I/O performed through the queue_io entrypoint. */ 778 /* */ 779 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 780 781 /* parameters... (I) = Input, (O) = Output */ 782 783 dcl priority_io_ptr ptr parameter; /* -> console_io structure... (I) */ 784 785 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 786 787 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 788 789 if ^oc_data.in_service then return; /* no tickee, no washee... */ 790 791 local_io = priority_io_ptr -> console_io; /* copy the I/O to our stack... */ 792 793 call lock_oc_data (); /* get the lock, wire and mask... */ 794 795 oc_data.priority_io = local_io; /* copy the priority I/O... */ 796 797 oc_data.priority_io.time_queued = clock (); /* next_console_io needs this... */ 798 oc_data.priority_io.process_id = pds$process_id; /* store our process_id... */ 799 oc_data.priority_io.event_chan = 0; /* caller will loop on completion... */ 800 oc_data.priority_io.completed = false; /* start off on the right foot.. */ 801 oc_data.priority_io.in_progress = false; 802 oc_data.priority_io.alerted = false; 803 804 if oc_data.priority_io.read then do; /* reset READ stuff... */ 805 oc_data.priority_io.sequence_no = 0; /* READs don't have syserr numbers... */ 806 oc_data.priority_io.prompted = false; 807 oc_data.priority_io.leng = 0; 808 oc_data.priority_io.text = ""; 809 end; 810 811 oc_entry_ptr = find_oc_entry (""); /* locate the bootload console... */ 812 813 if oc_entry_ptr ^= null then 814 do while (oc_entry.io_in_progress); /* quies the console... */ 815 call process_io_status (); 816 end; 817 818 if oc_data.mc_io_enabled then do; /* Message Coordinator is handling I/O..*/ 819 if ^oc_data.priority_io.read then do; /* only pass on WRITEs... */ 820 call bump_io_to_mc ((oc_data.priority_io.sequence_no)); 821 oc_data.priority_io.completed = true; /* free the space... */ 822 end; 823 call unlock_oc_data (); /* release lock, unwire, unmask... */ 824 return; /* all we can do... */ 825 end; 826 827 828 do while (^oc_data.priority_io.completed); /* LOOP IN RING ZERO TILL I/O COMPLETE..*/ 829 call process_io (); /* process the I/O... */ 830 if oc_data.priority_io.read & ^oc_data.priority_io.in_progress then do; 831 call unlock_oc_data (); /* let Special interrupts through... */ 832 call lock_oc_data (); /* and wire and mask again... */ 833 end; 834 call process_io_status (); /* process the status... */ 835 end; 836 837 local_io = oc_data.priority_io; /* copy results to local storage... */ 838 oc_data.priority_io.read = false; /* prevent priority READ resets... */ 839 840 call unlock_oc_data (); /* release lock, unwire and unmask... */ 841 842 if local_io.read then do; /* copy results for the caller... */ 843 priority_io_ptr -> console_io = local_io; 844 end; 845 846 return; /* I/O complete... */ 847 848 queue_io: 849 entry (user_io_ptr, io_queue_time); 850 851 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 852 /* */ 853 /* Entry to queue an I/O. This entry first copies the I/O onto our stack before we wire it with a */ 854 /* call to lock_oc_data. This is necessary because we would are not allowed to page fault on the */ 855 /* callers data after we wire ourselves. The entry the makes some preliminary decisions about the */ 856 /* I/O and the console state and calls the queue_console_io routine to do the actual queueing. For */ 857 /* WRITEs the caller is returned the time that the I/O is queued. If that time is 0 then the queue */ 858 /* is full and the caller will have to try again later. A time of 0 is always returned for */ 859 /* READs since the caller always goes blocked awaiting READ completion. */ 860 /* */ 861 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 862 863 /* parameters... (I) = Input, (O) = Output */ 864 865 dcl user_io_ptr ptr parameter; /* -> console_io structure... (I) */ 866 dcl io_queue_time fixed bin (71) parameter; /* UID of this I/O request... (O) */ 867 868 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 869 870 oc_data_ptr = addr (oc_data$); /* find oc_data... */ 871 872 if ^oc_data.in_service then do; /* pass it to the log... */ 873 call syserr (JUST_LOG, substr (user_io_ptr -> console_io.text, 1, 874 multiply (user_io_ptr -> console_io.leng, 4, 17))); 875 io_queue_time = clock (); /* make it look as if successful... */ 876 return; 877 end; 878 879 local_io = user_io_ptr -> console_io; /* copy the I/O to our stack... */ 880 881 if oc_data.write_q_full & ^local_io.read then do; /* no room at the Inn... */ 882 oc_data.meters.write_q_full_cnt = oc_data.meters.write_q_full_cnt + 1; 883 io_queue_time = 0; /* make them try again... */ 884 return; 885 end; 886 887 call lock_oc_data (); /* get the lock, wire and mask... */ 888 889 oc_entry_ptr = find_oc_entry (""); /* locate the bootload console... */ 890 891 if oc_data.mc_io_enabled then do; /* Message Coordinator is handling I/O..*/ 892 local_time = 0; 893 if ^local_io.read then do; /* only pass on WRITEs... */ 894 local_time = queue_console_io (); /* attempt to queue the I/O... */ 895 if local_time ^= 0 then do; /* if we were successful then do... */ 896 call bump_io_to_mc ((-local_time)); /* send I/O to the MC... */ 897 end; 898 end; 899 else local_time = clock (); /* simulate successful queuing of READ..*/ 900 call unlock_oc_data (); /* release lock, unwire, unmask... */ 901 io_queue_time = local_time; /* copy argument... */ 902 return; /* all we can do... */ 903 end; 904 905 if oc_entry_ptr = null then do; /* no bootload console... */ 906 call syserr (JUST_LOG, substr (user_io_ptr -> console_io.text, 1, 907 multiply (user_io_ptr -> console_io.leng, 4, 17))); 908 io_queue_time = clock (); /* make it look as if successful... */ 909 oc_data.in_service = false; 910 return; 911 end; 912 913 if oc_entry.discard & ^local_io.read then do; /* if DISCARD condition and not a READ..*/ 914 if ^oc_entry.discarded then do; /* haven't informed them yet... */ 915 oc_entry.discarded = true; /* note that we're informing them... */ 916 call log_console_event (DISCARDED_OUTPUT, oc_data.io_ptr); /* log it... */ 917 end; 918 call unlock_oc_data (); /* release lock, unwire and unmask... */ 919 io_queue_time = -1; /* let caller know... */ 920 return; /* flush the output... */ 921 end; 922 923 call process_io_status (); /* process any pending I/O status... */ 924 call process_io (); /* process any pending I/O... */ 925 local_time = queue_console_io (); /* attempt to queue the I/O... */ 926 927 call process_io (); /* attempt to start the I/O... */ 928 929 call unlock_oc_data (); /* release lock, unwire and unmask... */ 930 931 io_queue_time = local_time; /* copy argument... */ 932 933 return; 934 935 reconfigure: 936 entry (console_name_parm, reconfig_option_parm, code); 937 938 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 939 /* */ 940 /* This entry is called to explicitly reconfigure any configured console. The respective actions */ 941 /* taken are controlled via the reconfig_option parameter and are described in */ 942 /* opc_reconfig_options.incl.pl1 */ 943 /* */ 944 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 945 946 /* parameters... (I) = Input, (O) = Output */ 947 948 dcl console_name_parm char (4) parameter; /* console being reconfigured or MCA */ 949 /* number to unlock "M_xx"... (I) */ 950 dcl reconfig_option_parm fixed bin (17) parameter; /* see opc_reconfig_options... (I) */ 951 /* dcl code fixed bin (35) parameter; standard Multics error code... (O) */ 952 953 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 954 955 entrypoint = "reconfigure"; /* set entrypoint name... */ 956 audit_flag = "0"b; 957 code = 0; /* initialize it... */ 958 console_name = console_name_parm; /* copy arguments into our stack... */ 959 reconfig_option = reconfig_option_parm; 960 961 oc_data_ptr = addr (oc_data$); /* for unwired operations... */ 962 963 if reconfig_option = NOP then do; /* just return an error code... */ 964 code = error_table_$no_operation; 965 end; 966 967 if reconfig_option = SUSPEND_CONSOLE_SERVICE then do; /* indicate no console service... */ 968 oc_data.in_service = false; /* and normal I/O... */ 969 return; 970 end; 971 972 if reconfig_option = ENABLE_CONSOLE_SERVICE then do; /* indicate no console service... */ 973 oc_data.in_service = true; /* and normal I/O... */ 974 return; 975 end; 976 977 if reconfig_option = SEND_MC_IO then do; /* send I/O to MC... */ 978 oc_data.mc_io_enabled = true; 979 return; 980 end; 981 982 if reconfig_option = CRASH_ON_CRF then do; /* set the right flags... */ 983 oc_data.crash_on_crf = true; 984 return; 985 end; 986 987 if reconfig_option = RUN_ON_CRF then do; /* set the right flags... */ 988 oc_data.crash_on_crf = false; 989 return; 990 end; 991 992 if reconfig_option = UNLOCK_MCA_INPUT then do; /* save mca# & reset console_name... */ 993 mca_to_unlock = cv_dec_check_ (substr (console_name, 3, 2), err_code); 994 if substr (console_name, 1, 2) ^= "M_" | err_code ^= 0 | mca_to_unlock < MIN_MCA | mca_to_unlock > MAX_MCA then do; 995 code = error_table_$bad_arg; 996 return; 997 end; 998 console_name = ""; 999 end; 1000 1001 call lock_oc_data (); /* get lock, wire and mask... */ 1002 1003 oc_entry_ptr = find_oc_entry (console_name); 1004 if oc_entry_ptr = null then do; /* it is not... */ 1005 null_ocep: 1006 call unlock_oc_data (); /* release lock, unwire, unmask... */ 1007 code = error_table_$dev_nt_assnd; 1008 return; 1009 end; 1010 1011 if reconfig_option = RESET_CONSOLE then do; 1012 call reset_console (); /* simple enough... */ 1013 call unlock_oc_data (); /* release lock, unwire, unmask... */ 1014 return; 1015 end; 1016 1017 if reconfig_option = MAKE_BOOTLOAD_CONSOLE then do; /* make specified console the bootload..*/ 1018 call unassign_bootload_console (); /* unassign the current bootload console*/ 1019 if oc_entry_ptr ^= null then do; 1020 oc_entry.alternate = true; /* make available to console recovery...*/ 1021 oc_entry.io_device = false; 1022 call change_console_state (); 1023 end; 1024 call assign_bootload_console (console_name, err_code); /* attach the console... */ 1025 if err_code ^= 0 then do; 1026 if old_console_name ^= "" then 1027 call assign_bootload_console (old_console_name, (0)); /* reattach the old console... */ 1028 call unlock_oc_data (); /* release lock, unwire, unmask... */ 1029 code = err_code; /* OK for page / seg faults... */ 1030 return; /* all we can do... */ 1031 end; 1032 call report_error (BEEP, entrypoint, "Assigned ^a as the bootload console for ^a.", oc_entry.name, pds$process_group_id); 1033 call unlock_oc_data (); 1034 return; 1035 end; 1036 1037 if reconfig_option = MAKE_ALTERNATE_CONSOLE then do; /* make specified console an alternate..*/ 1038 if oc_entry.bootload_console then do; /* not a good move... */ 1039 call unlock_oc_data (); /* release lock, unwire, unmask... */ 1040 code = error_table_$device_busy; /* device is not available... */ 1041 return; 1042 end; 1043 oc_entry.alternate = true; /* set the proper flags... */ 1044 oc_entry.io_device = false; 1045 oc_entry.inop_device = false; 1046 oc_entry.no_device = false; 1047 oc_entry.config_change = true; /* note config change has occurred... */ 1048 call change_console_state (); 1049 call report_error (BEEP, entrypoint, "Assigned ^a as an alternate console for ^a.", 1050 oc_entry.name, pds$process_group_id); 1051 call unlock_oc_data (); 1052 return; 1053 end; 1054 1055 if reconfig_option = MAKE_IO_DEVICE then do; /* make specified console an I/O device.*/ 1056 if oc_entry.bootload_console then do; /* not a good move... */ 1057 if oc_data.err_event_cid ^= 0 then oc_data.mc_io_enabled = true; /* use Message Coordinator if we can... */ 1058 else do; 1059 if oc_data.crash_on_crf then call report_error (PANIC, /* that was a dumb move... */ 1060 entrypoint, "Bootload console deconfigured with CCRF set."); 1061 else oc_data.in_service = false; /* just send it to the log... */ 1062 end; 1063 call unassign_bootload_console (); 1064 if oc_entry_ptr = null then do; /* lost console, try to relocate... */ 1065 oc_entry_ptr = find_oc_entry (console_name); 1066 if oc_entry_ptr = null then goto null_ocep; /* can't locate. Report error to caller */ 1067 end; 1068 end; 1069 oc_entry.io_device = true; /* set the proper flags... */ 1070 oc_entry.alternate = false; 1071 oc_entry.inop_device = false; 1072 oc_entry.no_device = false; 1073 oc_entry.config_change = true; /* note config change has occurred... */ 1074 call change_console_state (); 1075 call report_error (BEEP, entrypoint, "Consigned ^a as an I/O device for ^a.", 1076 oc_entry.name, pds$process_group_id); 1077 call unlock_oc_data (); 1078 return; 1079 end; 1080 1081 if reconfig_option = MAKE_INOP_DEVICE then do; /* make specified console an I/O device.*/ 1082 if oc_entry.bootload_console then do; /* not a good move... */ 1083 if oc_data.err_event_cid ^= 0 then oc_data.mc_io_enabled = true; /* use Message Coordinator if we can... */ 1084 else do; 1085 if oc_data.crash_on_crf then call report_error (PANIC, /* that was a dumb move... */ 1086 entrypoint, "Bootload console deconfigured with CCRF set."); 1087 else oc_data.in_service = false; /* just send it to the log... */ 1088 end; 1089 call unassign_bootload_console (); 1090 if oc_entry_ptr = null then do; /* lost console, try to relocate... */ 1091 oc_entry_ptr = find_oc_entry (console_name); 1092 if oc_entry_ptr = null then goto null_ocep; /* can't locate. Report error to caller */ 1093 end; 1094 end; 1095 oc_entry.inop_device = true; /* set the proper flags... */ 1096 oc_entry.io_device = false; 1097 oc_entry.alternate = false; 1098 oc_entry.no_device = false; 1099 oc_entry.config_change = true; /* note config change has occurred... */ 1100 call change_console_state (); 1101 call report_error (BEEP, entrypoint, "Marked ^a as an inoperative device for ^a.", 1102 oc_entry.name, pds$process_group_id); 1103 call unlock_oc_data (); 1104 return; 1105 end; 1106 1107 if reconfig_option = MAKE_UNAVAILABLE then do; /* delete console from configuration... */ 1108 if oc_entry.bootload_console then do; /* can't go directly from "on" to "off".*/ 1109 call unlock_oc_data (); /* relinquish lock, unwire, unmask... */ 1110 code = error_table_$resource_not_free; 1111 return; 1112 end; 1113 else do; 1114 oc_entry.inop_device = false; /* set the proper flags... */ 1115 oc_entry.io_device = false; 1116 oc_entry.alternate = false; 1117 oc_entry.no_device = true; 1118 oc_entry.config_change = true; /* note config change has occurred... */ 1119 call change_console_state (); 1120 call unlock_oc_data (); 1121 return; 1122 end; 1123 end; 1124 1125 if reconfig_option = LOCK_MCA_INPUT | 1126 reconfig_option = UNLOCK_MCA_INPUT then do; 1127 audit_flag = (sys_info$collection_1_phase = SERVICE_INITIALIZATION); 1128 call lock_unlock_mca (); /* do the lock or unlock... */ 1129 if ^mca_lock_unlock_success then code = error_table_$action_not_performed; 1130 call unlock_oc_data (); /* release lock, unwire, unmask... */ 1131 return; 1132 end; 1133 1134 call unlock_oc_data (); /* should never really get here... */ 1135 1136 return; 1137 1138 1139 set_prompt: 1140 entry (new_prompt_parm); 1141 1142 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1143 /* */ 1144 /* Entry to set the prompt. The prompt can be set to any 6 character string. If the prompt */ 1145 /* specified is "" then the default of "M->" will be set. */ 1146 /* */ 1147 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1148 1149 /* parameters... (all input) */ 1150 1151 dcl new_prompt_parm char (8) parameter; /* new prompt string... (I) */ 1152 1153 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1154 1155 new_prompt = new_prompt_parm; /* copy arguments... */ 1156 1157 call lock_oc_data (); /* get lock, wire and mask... */ 1158 1159 if rtrim (new_prompt) = "" then new_prompt = "M->"; /* default case... */ 1160 else new_prompt = rtrim (substr (new_prompt, 1, 6)) || "->"; /* format the prompt... */ 1161 1162 oc_data.prompt = new_prompt; /* install it... */ 1163 1164 call unlock_oc_data (); /* relinquish lock, unwire, unmask... */ 1165 1166 return; 1167 1168 BAIL_OUT: 1169 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1170 /* */ 1171 /* BAIL_OUT is used as a non-local goto from process_io when it is found that there is */ 1172 /* no current console. */ 1173 /* */ 1174 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1175 1176 if ^stacq (oc_data.lock, ""b, pds$process_id) then do; /* clear lock if it is ours... */ 1177 if oc_data.lock ^= ""b then /* not ours, if not free crash... */ 1178 call report_error (PANIC, "unlock_oc_data", "Lock not mine."); 1179 end; 1180 1181 call unwire_and_unmask; /* unwire stack, accept interrupts... */ 1182 1183 return; 1184 1185 1186 assign_bootload_console: 1187 proc (name, error_code); 1188 1189 1190 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1191 /* */ 1192 /* Internal procedure to assign the specified console as the bootload console. When this procedure */ 1193 /* returns all oc_entry flags for the assigned console are correctly set, the bootload console */ 1194 /* entry index oc_data.bootload_console_idx is correctly set and the oc_data.in_service flag is */ 1195 /* set. */ 1196 /* */ 1197 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1198 1199 1200 /* parameters... (I) = Input, (O) = Output */ 1201 1202 dcl name char (4) aligned /* of the console to activate... (I) */ 1203 parameter; 1204 dcl error_code fixed bin (35) parameter; /* standard Multics error code... (O) */ 1205 1206 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1207 1208 oc_entry_ptr = find_oc_entry (name); /* check to see if console active... */ 1209 if oc_entry_ptr = null then do; /* specified console not active... */ 1210 error_code = error_table_$device_not_active; 1211 return; 1212 end; 1213 1214 call io_manager$assign (oc_entry.device_idx, oc_entry.channel, /* attach this console... */ 1215 ocdcm_$interrupt_handler, (0), oc_data.status_ptr, error_code); 1216 if error_code ^= 0 then return; 1217 1218 oc_entry.assigned = true; 1219 oc_data.bootload_console_idx = oc_entry.opc_idx; /* note this is the bootload console... */ 1220 oc_entry.bootload_console = true; /* and flag it... */ 1221 oc_entry.alternate = false; /* make sure things are consistent... */ 1222 oc_entry.io_device = false; 1223 oc_entry.inop_device = false; 1224 oc_entry.no_device = false; 1225 oc_entry.retry_cnt = 0; /* reset the I/O retry count... */ 1226 oc_entry.config_change = true; /* note config change has occurred... */ 1227 call change_console_state (); 1228 1229 oc_data.in_service = true; /* we can start processing I/O... */ 1230 if oc_data.mc_io_enabled then do; /* tell MC that we are taking over... */ 1231 call pxss$ring_0_wakeup (oc_data.err_event_pid, oc_data.err_event_cid, 0, (0)); 1232 oc_data.mc_io_enabled = false; /* suspend MC I/O... */ 1233 end; 1234 1235 return; 1236 1237 end assign_bootload_console; 1238 1239 bump_io_to_mc: 1240 proc (io_uid); 1241 1242 1243 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1244 /* */ 1245 /* Internal procedure to inform the Message Coordinator that there is a message that it should */ 1246 /* handle. The Message Coordinator will be sent a message containing the UID of the message to be */ 1247 /* processed by it. This io_uid is a syserr sequence number for syserr messages or the negated */ 1248 /* time that the I/O was queued for non-syserr traffic. */ 1249 /* */ 1250 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1251 1252 /* parameters... (I) = Input, (O) = Output */ 1253 1254 dcl io_uid fixed bin (71) parameter; /* used by the MC to get this I/O...(I) */ 1255 1256 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1257 1258 if oc_data.err_event_cid ^= 0 then do; /* if MC has placed process ID here... */ 1259 call pxss$ring_0_wakeup (oc_data.err_event_pid, oc_data.err_event_cid,/* tell MC about the I/O... */ 1260 io_uid, (0)); 1261 if io_uid > 0 then call log_console_event (SENT_MC_PRIORITY_IO, addr (oc_data.priority_io)); 1262 else call log_console_event (SENT_MC_IO, console_io_ptr); 1263 return; 1264 end; 1265 else do; /* Message Coordinator disappeared... */ 1266 if oc_data.crash_on_crf | sys_info$collection_1_phase < SERVICE_INITIALIZATION then 1267 /* sorry, MUST crash... */ 1268 call unlock_oc_data (); /* relinquish lock, unwire, unmask... */ 1269 call syserr_real$panic ("ocdcm_ (bump_io_to_mc): Console recovery failure."); 1270 oc_data.mc_io_enabled = false; 1271 oc_data.in_service = false; 1272 call report_error (JUST_LOG, "bump_io_to_mc", "Message Coordinator failure."); 1273 return; 1274 end; 1275 1276 end bump_io_to_mc; 1277 1278 change_console_state: 1279 proc (); 1280 1281 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1282 /* */ 1283 /* Internal entry to change the state of a console as listed in the config file. The config file */ 1284 /* is wired so but the conf partition must be paged. In order to write the partition we will have */ 1285 /* to call config_$update when were unwired and unmasked. This is not yet implemented. */ 1286 /* */ 1287 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1288 1289 do idx = 1 to MAX_OPC_CNT; /* check all consoles for changes... */ 1290 if oc_data.opc (idx).active then do; /* only check active entries... */ 1291 if oc_data.opc (idx).config_change then do; /* found a config change... */ 1292 oc_data.opc (idx).config_change = false; /* reset change indicator... */ 1293 if oc_data.opc (idx).bootload_console then new_state = "on"; 1294 else if oc_data.opc (idx).alternate then new_state = "alt"; 1295 else if oc_data.opc (idx).io_device then new_state = "io"; 1296 else if oc_data.opc (idx).inop_device then new_state = "inop"; 1297 else if oc_data.opc (idx).no_device then new_state = "off"; 1298 prph_opc_cardp = null; /* start ath the beginning of the file..*/ 1299 console_found = false; /* reset loop terminator... */ 1300 do while (^console_found); /* process all "opc" "prph" cards... */ 1301 call config_$find ("prph", prph_opc_cardp); /* find a "prph" card... */ 1302 if prph_opc_cardp = null then console_found = true; /* no more prph cards... */ 1303 else do; 1304 if prph_opc_card.name = oc_data (idx).name then do; /* found it... */ 1305 prph_opc_card.state = new_state; /* update the new state... */ 1306 console_found = true; /* signal end of loop... */ 1307 end; 1308 end; 1309 end; 1310 end; 1311 end; 1312 end; 1313 1314 return; /* done... */ 1315 1316 end change_console_state; 1317 1318 console_recovery: 1319 proc (); 1320 1321 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1322 /* */ 1323 /* Internal procedure to attempt console failure recovery. This procedure takes the following */ 1324 /* actions: */ 1325 /* */ 1326 /* 1.) Attempt to find an alternate console making it the bootload if one is found. */ 1327 /* */ 1328 /* 2.) If no alternates exist attempt to set up switches so that all I/O is bumped to the */ 1329 /* Message Coordinator if one exists. */ 1330 /* */ 1331 /* 3.) If no Message Coordinator exists then take the following actions with regards to the */ 1332 /* CCRF parm specified in the config file: */ 1333 /* */ 1334 /* a.) If CCRF was specified then crash. */ 1335 /* b.) If CCRF was not specified setup switches so that all I/O is bumped to the */ 1336 /* syserr_log. */ 1337 /* */ 1338 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1339 1340 entrypoint = "console_recovery"; /* set entrypoint name... */ 1341 1342 if oc_data.must_have_console then do; /* ensure we have a real console... */ 1343 call poll_for_console (); /* it will find one... */ 1344 oc_data.must_have_console = false; /* reset flag... */ 1345 return; /* done all that was required... */ 1346 end; 1347 1348 error_msg = ""; /* clear error message... */ 1349 1350 call unassign_bootload_console (); /* unassign the bootload console... */ 1351 1352 if oc_entry_ptr ^= null then do; /* if unassign_bootload_console found it*/ 1353 oc_entry.io_device = false; /* this was set by unassign_bootload... */ 1354 oc_entry.inop_device = true; /* mark it inoperative... */ 1355 oc_entry.config_change = true; /* note config change occurred... */ 1356 end; 1357 1358 found = false; /* initialize loop terminator... */ 1359 1360 do idx = 1 to oc_data.console_cnt while (^found); /* locate an alternate console... */ 1361 oc_entry_ptr = addr (oc_data.opc (idx)); /* find the console entry... */ 1362 if oc_entry.alternate then do; /* found one... */ 1363 found = true; /* signal loop termination... */ 1364 call assign_bootload_console (oc_entry.name, err_code); /* assign it... */ 1365 if err_code = 0 then do; /* assignment successful... */ 1366 call ioa_$rsnnl ("Console inoperative, alternate ^a assigned.", 1367 error_msg, 0, oc_entry.name); 1368 end; 1369 else do; /* assignment failed... */ 1370 call ioa_$rsnnl ("Console failed, assignment of alternate ^a failed.", 1371 error_msg, 0, oc_entry.name); 1372 oc_entry.inop_device = true; /* change its state... */ 1373 oc_entry.alternate = false; 1374 oc_entry.config_change = true; /* note config change occurred... */ 1375 found = false; /* continue search... */ 1376 end; 1377 end; 1378 end; 1379 1380 if ^found then do; /* no alternates, MC or CRASH?... */ 1381 if oc_data.err_event_cid = 0 then do; /* no Message Coordinator... */ 1382 if oc_data.crash_on_crf | sys_info$collection_1_phase < SERVICE_INITIALIZATION then do; 1383 /* no choice but to crash... */ 1384 call report_error (PANIC, entrypoint, "Console recovery failure."); 1385 end; 1386 oc_data.in_service = false; /* next time we'll know... */ 1387 oc_data.mc_io_enabled = false; /* ditto... */ 1388 end; 1389 else oc_data.mc_io_enabled = true; /* flag MC is in control... */ 1390 1391 if oc_data.mc_io_enabled then do; 1392 error_msg = "Console inoperative, no alternates available."; /* let 'em know... */ 1393 end; 1394 else do; 1395 error_msg = "Console inoperative, no alternates, no MC."; 1396 console_io_ptr = oc_data.io_ptr; 1397 console_io.in_progress = false; /* reset failed I/O to prevent MYLOCK...*/ 1398 oc_data.priority_io.completed = true; /* mark this so priority_io will not loop on it forever. */ 1399 end; 1400 end; 1401 1402 call change_console_state (); /* show any changes that may have occured */ 1403 1404 if error_msg ^= "" then call report_error (JUST_LOG, entrypoint, error_msg); 1405 1406 return; /* done... */ 1407 1408 end console_recovery; 1409 1410 console_responds_to_bell: 1411 proc (console_idx) returns (bit (1)); 1412 1413 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1414 /* */ 1415 /* Internal procedure that sends a bell to the the specified console and returns true if the I/O */ 1416 /* succeeds. */ 1417 /* */ 1418 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1419 1420 /* parameters... (all input) */ 1421 1422 dcl console_idx fixed bin (17) parameter; /* index of the console to test... */ 1423 1424 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1425 1426 1427 oc_entry_ptr = addr (oc_data.opc (console_idx)); /* overlay it... */ 1428 oc_entry.dcw_list_idx = ALERT_DCW; /* we'll test by sending a bell... */ 1429 call initiate_io (); /* send it... */ 1430 do while (^io_status.t); /* wait for termination... */ 1431 end; 1432 1433 if io_status_overlay.major = "00"b3 then return (true); 1434 else return (false); 1435 1436 end console_responds_to_bell; 1437 1438 console_in_imu: 1439 proc () returns (bit (1)); 1440 1441 1442 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1443 /* */ 1444 /* Internal function that returns true if the specified console is located in an IMU style IOM. */ 1445 /* */ 1446 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1447 1448 iom_cardp = null; 1449 call config_$find ("iom", iom_cardp); 1450 do while (iom_cardp ^= null); 1451 if iom_card.model = "imu" | iom_card.model = "iioc" then do; /* found an IMU... */ 1452 if iom_card.tag = prph_opc_card.iom then return (true); /* console in this IMU... */ 1453 end; 1454 call config_$find ("iom", iom_cardp); /* find next iom card... */ 1455 end; 1456 return (false); /* console not in an IMU... */ 1457 end console_in_imu; 1458 1459 fill_oc_entry: 1460 proc (oc_data_struct_ptr, console_entry_idx, opc_card_ptr, oc_entry_ptr_arg); 1461 1462 1463 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1464 /* */ 1465 /* Internal procedure that fills in an opc entry describing a configured operator's console. This */ 1466 /* procedure builds the DCW list for the device. This list is composed IDCWs describing a device */ 1467 /* instruction and optionally a DCW describing a data transfer. */ 1468 /* */ 1469 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1470 1471 /* parameters... (I) = Input, (O) = Output */ 1472 1473 dcl oc_data_struct_ptr ptr parameter; /* -> oc_data... (I) */ 1474 dcl console_entry_idx fixed bin (17) unaligned 1475 parameter, /* index into the opc console array.(I) */ 1476 opc_card_ptr ptr parameter, /* -> "opcx" "prph" card... (I) */ 1477 oc_entry_ptr_arg ptr parameter; /* -> oc_entry... (O) */ 1478 1479 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1480 1481 oc_data_ptr = oc_data_struct_ptr; /* copy arguments... */ 1482 prph_opc_cardp = opc_card_ptr; 1483 1484 oc_entry_ptr = addr (oc_data.opc (console_entry_idx)); /* entry to fill... */ 1485 oc_entry_ptr_arg = oc_entry_ptr; /* returned to caller... */ 1486 1487 unspec (oc_entry) = ""b; /* just to be safe... */ 1488 1489 if prph_opc_card.name < "opca" | prph_opc_card.name > "opcz" then do; 1490 call report_error (BEEP, "Illegal console name (^a) specified. It will be ignored.", prph_opc_card.name); 1491 return; 1492 end; 1493 1494 oc_entry.active = true; /* mark the console as active... */ 1495 1496 if substr (prph_opc_card.mask, 1, 4) = "mask" then oc_entry.flags.read_unechoed_option = false; 1497 else oc_entry.flags.read_unechoed_option = true; 1498 1499 oc_entry.name = prph_opc_card.name; /* so we can find it later... */ 1500 oc_entry.opc_idx = console_entry_idx; /* note our opc array index... */ 1501 oc_entry.imu = console_in_imu (); /* is console located in an IMU?? */ 1502 1503 if substr (prph_opc_card.state, 1, 2) = "on" then do; 1504 do idx = 1 to oc_data.console_cnt while (oc_data.opc (idx).bootload_console = false); 1505 end; 1506 if idx > oc_data.console_cnt then do; /* if no previous bootload console... */ 1507 oc_entry.bootload_console = true; /* mark console as bootload... */ 1508 end; 1509 else do; /* no multiple bootload consoles... */ 1510 call report_error (BEEP, entrypoint, "Changing state of ^a to alt.", oc_entry.name); 1511 prph_opc_card.state = "alt"; /* change the consoles status... */ 1512 oc_entry.alternate = true; 1513 end; 1514 end; 1515 1516 else if substr (prph_opc_card.state, 1, 3) = "alt" then do; /* flag this as an alternate console... */ 1517 oc_entry.alternate = true; 1518 end; 1519 1520 else if prph_opc_card.state = "inop" then do; /* this console is inoperative... */ 1521 oc_entry.inop_device = true; 1522 end; 1523 1524 else if substr (prph_opc_card.state, 1, 2) = "io" then do; /* this console is not to be used... */ 1525 oc_entry.io_device = true; 1526 end; 1527 1528 else if substr (prph_opc_card.state, 1, 3) = "off" then do; /* this console deconfigured... */ 1529 oc_entry.no_device = true; 1530 end; 1531 1532 else do; /* unknown state... */ 1533 call report_error (BEEP, entrypoint, "Invalid state of ^a for console ^a.", 1534 prph_opc_card.state, prph_opc_card.name); 1535 call report_error (ANNOUNCE, entrypoint, "This console will not be configured."); 1536 unspec (oc_entry) = ""b; /* undo what we have done... */ 1537 return; 1538 end; 1539 1540 oc_entry.line_leng = prph_opc_card.line_leng; /* set console line length... */ 1541 1542 console_data_ptr = addr (config_data_$console_model_names); /* get console data for verification... */ 1543 1544 found = false; /* initialize it... */ 1545 1546 do idx = 1 to console_data.count while (^found); /* find our console... */ 1547 if console_data.model (idx) = prph_opc_card.model then do; 1548 found = true; 1549 oc_entry.model = prph_opc_card.model; 1550 if substr (console_data.io_type (idx), 1, 3) = "pcw" then do; 1551 oc_entry.pcw_io = true; 1552 oc_entry.flags.read_unechoed_option = false; /* CSU6001 does not have this option... */ 1553 end; 1554 end; 1555 end; 1556 1557 if ^found then do; 1558 call report_error (BEEP, entrypoint, "Unknown model, ^i, specified for ^a. It will not be configured.", 1559 prph_opc_card.model, oc_entry.name); 1560 unspec (oc_entry) = ""b; /* undo what we've done... */ 1561 return; /* best we can do... */ 1562 end; 1563 1564 call io_chnl_util$iom_to_name ((prph_opc_card.iom), (prph_opc_card.chan), /* get this console's channel ID... */ 1565 oc_entry.channel, err_code); 1566 1567 if err_code ^= 0 then do; 1568 call report_error (PANIC, entrypoint, "Invalid channel specified for ^a.", oc_entry.name); 1569 end; 1570 idcwp = addr (oc_entry.dcw_list (WRITE_DCW)); /* WRITE IDCW... */ 1571 idcw.command = "33"b3; /* write ASCII command... */ 1572 idcw.code = "111"b; /* indicates a PCW... */ 1573 1574 idcwp = addr (oc_entry.dcw_list (READ_DCW)); /* READ IDCW... */ 1575 idcw.command = "23"b3; /* read ASCII command... */ 1576 idcw.code = "111"b; /* indicates a PCW... */ 1577 dcwp = addr (oc_entry.dcw_list (READ_DCW + 1)); /* get data word... */ 1578 dcw.tally = bit (binary (divide (MAX_IO_LENGTH, 4, 17), 12)); /* maximum for READ ops... */ 1579 1580 idcwp = addr (oc_entry.dcw_list (READ_UNECHOED_DCW)); /* READ_UNECHOED IDCW... */ 1581 idcw.command = "43"b3; /* read unechoed ASCII command... */ 1582 idcw.code = "111"b; /* indicates a PCW... */ 1583 dcwp = addr (oc_entry.dcw_list (READ_UNECHOED_DCW + 1)); /* get data word... */ 1584 dcw.tally = bit (binary (divide (MAX_IO_LENGTH, 4, 17), 12)); /* maximum for READ ops... */ 1585 1586 idcwp = addr (oc_entry.dcw_list (RESET_DCW)); /* READ_ID IDCW... */ 1587 idcw.command = "57"b3; /* so I lied... */ 1588 idcw.code = "111"b; /* indicates PCW... */ 1589 idcw.chan_cmd = "02"b3; /* indicate "non-data" type transfer... */ 1590 idcw.count = "01"b3; /* issue only once... */ 1591 1592 idcwp = addr (oc_entry.dcw_list (ALERT_DCW)); /* WRITE_ALERT IDCW... */ 1593 idcw.command = "51"b3; /* write_alert command... */ 1594 idcw.code = "111"b; /* indicates PCW... */ 1595 idcw.chan_cmd = "02"b3; /* indicate "non-data" type transfer... */ 1596 idcw.count = "01"b3; /* issue only once... */ 1597 1598 oc_entry.dcw_list (NEWLINE_DCW) = oc_entry.dcw_list (WRITE_DCW); /* put IOM in WRITE mode... */ 1599 dcwp = addr (oc_entry.dcw_list (NEWLINE_DCW + 1)); /* next in list describes what to write.*/ 1600 dcw.address = bit (binary (wordno (addr (oc_data.write_return)) /* -> string to write... */ 1601 + oc_data.abs_addr, 18)); 1602 dcw.tally = "0001"b3; /* tally = number of words to transfer..*/ 1603 1604 oc_entry.dcw_list (PROMPT_DCW) = oc_entry.dcw_list (WRITE_DCW); /* put IOM in write mode... */ 1605 dcwp = addr (oc_entry.dcw_list (PROMPT_DCW + 1)); /* next in list describes what to write.*/ 1606 dcw.address = bit (binary (wordno (addr (oc_data.prompt)) /* -> string to write... */ 1607 + oc_data.abs_addr, 18)); 1608 dcw.tally = "0002"b3; /* tally = number of words to transfer..*/ 1609 1610 oc_entry.dcw_list (DISCARD_DCW) = oc_entry.dcw_list (WRITE_DCW); /* put IOM in WRITE mode... */ 1611 dcwp = addr (oc_entry.dcw_list (DISCARD_DCW + 1)); /* next in list describes what to write.*/ 1612 dcw.address = bit (binary (wordno (addr (oc_data.discard_notice)) /* -> string to write... */ 1613 + oc_data.abs_addr, 18)); 1614 dcw.tally = "0006"b3; /* tally = number of words to transfer..*/ 1615 1616 idcwp = addr (oc_entry.dcw_list (LOCK_MCA_DCW)); /* LOCK MCA IDCW... */ 1617 idcw.command = "60"b3; /* lock command... */ 1618 idcw.code = "111"b; /* indicates IDCW... */ 1619 idcw.chan_cmd = "02"b3; /* indicate "non-data" type transfer... */ 1620 idcw.count = "00"b3; /* Not examined by console... */ 1621 1622 idcwp = addr (oc_entry.dcw_list (UNLOCK_MCA_DCW)); /* UNLOCK MCA IDCW... */ 1623 idcw.command = "63"b3; /* unlock command... */ 1624 idcw.code = "111"b; /* indicates IDCW... */ 1625 idcw.chan_cmd = "02"b3; /* indicate "non-data" type transfer... */ 1626 idcw.count = "00"b3; /* Set MCA# to 00... */ 1627 1628 oc_entry.prompt = true; /* turn on prompting for all consoles...*/ 1629 1630 return; /* all done... */ 1631 1632 end fill_oc_entry; 1633 1634 find_oc_entry: 1635 proc (opc_name) returns (ptr); 1636 1637 1638 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1639 /* */ 1640 /* Internal function that returns a pointer to the specified console. If the opc_name is "" then a */ 1641 /* pointer to the bootload console is returned. If the specified console is not configured a null */ 1642 /* pointer is returned. */ 1643 /* */ 1644 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1645 1646 /* parameters... (I) = Input, (O) = Output */ 1647 1648 dcl opc_name char (4) aligned /* name of the console... (I) */ 1649 parameter; 1650 1651 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1652 1653 oc_data_ptr = addr (oc_data$); /* just in case we don't know... */ 1654 1655 if opc_name = "" then do; /* find the bootload console... */ 1656 if oc_data.bootload_console_idx = 0 then return (null); /* no bootload console assigned... */ 1657 return (addr (oc_data.opc (oc_data.bootload_console_idx))); /* return the requested pointer... */ 1658 end; 1659 1660 do idx = 1 to oc_data.console_cnt; /* locate the console... */ 1661 if oc_data.opc (idx).name = opc_name then do; /* found it... */ 1662 return (addr (oc_data.opc (idx))); 1663 end; 1664 end; 1665 1666 return (null); /* console not configured... */ 1667 1668 end find_oc_entry; 1669 1670 initiate_io: 1671 proc (); 1672 1673 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1674 /* */ 1675 /* Internal procedure to initiate the I/O indicated by the DCW list index in the oc_entry. */ 1676 /* */ 1677 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1678 1679 oc_entry.io_time = clock (); /* save the time we started the I/O... */ 1680 oc_entry.io_in_progress = true; /* indicate console is busy... */ 1681 1682 if oc_entry.dcw_list_idx = READ_DCW | /* if we're doing a READ or... */ 1683 oc_entry.dcw_list_idx = READ_UNECHOED_DCW | /* or a READ_UNECHOED... */ 1684 oc_entry.dcw_list_idx = WRITE_DCW | /* a WRITE */ 1685 oc_entry.dcw_list_idx = PROMPT_DCW | /* or a PROMPT */ 1686 oc_entry.dcw_list_idx = ALERT_DCW then do; /* or an ALERT then do... */ 1687 oc_data.io_ptr = console_io_ptr; /* save a pointer to the I/O... */ 1688 console_io.console = oc_data.opc (oc_data.bootload_console_idx).name; /* note what console the I/O went to... */ 1689 end; 1690 1691 iom_args.chx = oc_entry.device_idx; /* setup I/O manager args... */ 1692 1693 if oc_entry.pcw_io then do; /* for EMC style consoles... */ 1694 iom_args.pcw = oc_entry.dcw_list (oc_entry.dcw_list_idx); 1695 iom_args.listp = addr (oc_entry.dcw_list (oc_entry.dcw_list_idx + 1)); 1696 end; 1697 1698 else do; /* for new style consoles... */ 1699 iom_args.pcw = false; 1700 iom_args.listp = addr (oc_entry.dcw_list (oc_entry.dcw_list_idx)); 1701 end; 1702 1703 iom_args.ptp = null; /* unused... */ 1704 1705 call io_manager$connect_abs (iom_args); /* initiate the I/O... */ 1706 1707 return; 1708 1709 end initiate_io; 1710 1711 lock_oc_data: 1712 proc (); 1713 1714 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1715 /* */ 1716 /* Internal procedure to wire our stack, mask interrupts and then lock oc_data. There are two */ 1717 /* possible errors during this process. The first is that the value of the lock is already set to */ 1718 /* our process_id. This is the MYLOCK error and will result in a system crash. The second possible */ 1719 /* error is that the lock cannot be had within a reasonable amount of time. In this case we will */ 1720 /* also crash the system. */ 1721 /* */ 1722 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1723 1724 oc_data_ptr = addr (oc_data$); /* locate oc_data... */ 1725 1726 if oc_data.lock = pds$process_id then do; /* MYLOCK error... */ 1727 call report_error (PANIC, "lock_oc_data", "Mylock error."); /* crash system, store flagbox message..*/ 1728 end; 1729 1730 call wire_and_mask; /* wire our stack and mask interrupts...*/ 1731 1732 time_lock_expires = clock () + oc_data.max_computed_io_time; /* setup spin lock timeout... */ 1733 1734 do while (clock () < time_lock_expires); /* loop on the lock... */ 1735 if stac (addr (oc_data.lock), pds$process_id) then return; /* if got lock then return... */ 1736 end; 1737 1738 call report_error (PANIC, "lock_oc_data", "Lock wait timer expired."); /* timer expired, crash the system... */ 1739 1740 end lock_oc_data; 1741 1742 lock_unlock_mca: 1743 proc (); 1744 1745 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1746 /* */ 1747 /* Internal procedure to either lock (disable) or unlock (enable) communication through the console */ 1748 /* to the MCA (Maintenace Channel Adapter), located in an IMU. In order to lock or unlock the */ 1749 /* input an I/O must be sent to the "Master" MCA console, but since we have no sure way of knowing */ 1750 /* which console in the "Master" we issue an I/O to every configured console. This way we make sure */ 1751 /* that the interface to the MCA will be locked or unlocked. However if a site does not configure */ 1752 /* the console that is running as the master, then there is nothing we can do. */ 1753 /* */ 1754 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1755 1756 bootload_console_name = oc_entry.name; /* need for setting later... */ 1757 save_status_ptr = oc_data.status_ptr; /* ditto... */ 1758 ad_code = 0; 1759 mca_lock_unlock_success = false; 1760 1761 do while (oc_entry.io_in_progress); /* quies the console... */ 1762 call process_io_status (); 1763 end; 1764 1765 do idx = 1 to oc_data.console_cnt; /* scan through all consoles... */ 1766 if oc_data.opc (idx).imu & /* is console on an IMU */ 1767 ^oc_data.opc (idx).inop_device & /* and not broken */ 1768 ^oc_data.opc (idx).no_device & /* and not off */ 1769 ^oc_data.opc (idx).io_device then do; /* and not being used as an IO device. */ 1770 oc_entry_ptr = addr (oc_data.opc (idx)); 1771 must_unassign = false; 1772 if ^oc_entry.assigned then do; /* non-bootload console */ 1773 call io_manager$assign (oc_entry.device_idx, oc_entry.channel, 1774 ocdcm_$interrupt_handler, (0), oc_data.status_ptr, err_code); 1775 if err_code ^= 0 then do; 1776 ad_code, code = err_code; 1777 goto locate_bootload; 1778 end; 1779 oc_entry.assigned = true; 1780 oc_entry.io_in_progress = false; 1781 must_unassign = true; 1782 end; 1783 else oc_data.status_ptr = save_status_ptr; /* bootload console needs its ptr... */ 1784 1785 if reconfig_option = LOCK_MCA_INPUT then do; 1786 oc_entry.dcw_list_idx = LOCK_MCA_DCW; 1787 call log_console_event (LOCK_MCA_IO, null); 1788 end; 1789 else do; 1790 idcwp = addr (oc_entry.dcw_list (UNLOCK_MCA_DCW)); 1791 idcw.count = bit (binary (mca_to_unlock, 6)); 1792 oc_entry.dcw_list_idx = UNLOCK_MCA_DCW; 1793 call log_console_event (UNLOCK_MCA_IO, null); 1794 end; 1795 call initiate_io (); 1796 1797 do while (oc_entry.io_in_progress); /* wait for I/O to finish... */ 1798 call process_io_status (); 1799 if console_io_timeout then do; 1800 ad_code = error_table_$timeout; 1801 call report_error (JUST_LOG, entrypoint, "Timeout executing MCA^[(^2.3b)^;^s^] ^[LOCK^;UNLOCK^] on ^a for ^a.", 1802 (reconfig_option = UNLOCK_MCA_INPUT), bit (binary (mca_to_unlock, 6)), 1803 (reconfig_option = LOCK_MCA_INPUT), oc_entry.name, pds$process_group_id); 1804 end; 1805 oc_entry_ptr = addr (oc_data.opc (idx)); /* make sure we stay with right one... */ 1806 end; 1807 1808 if oc_entry.status_word = "400002000000"b3 then do; 1809 call report_error (JUST_LOG, entrypoint, "MCA^[(^2.3b)^;^s^] input through ^a, ^[dis^;en^]abled by ^a.", 1810 (reconfig_option = UNLOCK_MCA_INPUT), bit (binary (mca_to_unlock, 6)), 1811 oc_entry.name, (reconfig_option = LOCK_MCA_INPUT), pds$process_group_id); 1812 oc_entry_ptr = addr (oc_data.opc (idx)); /* switch back to proper console... */ 1813 mca_lock_unlock_success = true; 1814 end; 1815 1816 if must_unassign then do; 1817 call io_manager$unassign (oc_entry.device_idx, (0)); 1818 oc_entry.assigned = false; 1819 oc_entry.io_in_progress = false; 1820 oc_entry_ptr = null; 1821 end; 1822 end; 1823 end; 1824 1825 locate_bootload: 1826 if audit_flag then do; /* Not at BCE so audit event */ 1827 if mca_lock_unlock_success then ad_code = 0; 1828 audit_eventflags = "0"b; 1829 addr (audit_eventflags) -> audit_event_flags.priv_op = "1"b; 1830 addr (audit_eventflags) -> audit_event_flags.grant = "1"b; 1831 if reconfig_option = LOCK_MCA_INPUT then 1832 call access_audit_$log_general ("ocdcm_$reconfigure", level$get (), audit_eventflags, 1833 access_operations_$lock_mca, "", ad_code, null (), 0, ""); 1834 else call access_audit_$log_general ("ocdcm_$reconfigure", level$get (), audit_eventflags, 1835 access_operations_$unlock_mca, "", ad_code, null (), 0, "MCA ^d", mca_to_unlock); 1836 end; 1837 oc_entry_ptr = find_oc_entry (bootload_console_name); /* locate the bootload console... */ 1838 oc_data.status_ptr = save_status_ptr; /* reset the status pointer back... */ 1839 return; 1840 end lock_unlock_mca; 1841 1842 log_console_error: 1843 proc (); 1844 1845 1846 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1847 /* */ 1848 /* Internal procedure to enter a note that a console error has occurred into the system log. */ 1849 /* */ 1850 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1851 1852 call io_manager$get_status (oc_entry.device_idx, addr (oc_status)); /* get IOM status... */ 1853 1854 unspec (log_message) = ""b; /* clear any previous message residue.. */ 1855 1856 log_message.level = "3"b3; /* terminate... */ 1857 log_message.channel = oc_entry.channel; 1858 log_message.device = "00"b; 1859 log_message.time_out = console_io_timeout; /* if that is why were here... */ 1860 log_message.type = oc_status.action_code; 1861 log_message.command = addr (oc_entry.dcw_list (oc_entry.dcw_list_idx)) -> idcw.command; 1862 log_message.status = oc_entry.status_word; 1863 log_message.devname = oc_entry.name; 1864 1865 call ioa_$rsnnl ("^[in_service^1x^]^[crash_on_crf^1x^]^[mc_io_enabled^1x^]^[list_consoles^1x^]^[printer_on^1x^]^[write_q_full^]", 1866 oc_data_flags, 0, 1867 oc_data.in_service, oc_data.crash_on_crf, oc_data.mc_io_enabled, 1868 oc_data.list_consoles, oc_data.printer_on, oc_data.write_q_full); 1869 1870 call ioa_$rsnnl ("^[io_in_progress^1x^]^[prompt^1x^]^[got_special_int^1x^]^[oper_request^1x^]^[discard^1x^]^[discarded^]", 1871 oc_entry_flags, 0, 1872 oc_entry.io_in_progress, oc_entry.prompt, oc_entry.got_special_int, 1873 oc_entry.oper_request, oc_entry.discard, oc_entry.discarded); 1874 1875 call ioa_$rsnnl ("^[alert^1x^]^[alerted^1x^]^[read^1x^]^[prompted^1x^]^[in_progress^1x^]^[completed^1x^]^[retry_reset^1x^]", 1876 console_io_flags, 0, 1877 console_io.alert, console_io.alerted, console_io.read, 1878 console_io.prompted, console_io.in_progress, 1879 console_io.completed, console_io.retry_reset); 1880 1881 call syserr$binary (JUST_LOG, addr (log_message), SB_ocdcm_err, SBL_ocdcm_err, 1882 "ocdcm_ (log_console_error): I/O ^[timeout ^]error on ^a; status = ^.3b^/oc_data flags: ^a^/oc_entry flags: ^a^/console_io flags: ^a", 1883 console_io_timeout, oc_entry.name, 1884 substr (string (log_message.status), 1, 36), oc_data_flags, 1885 oc_entry_flags, console_io_flags); 1886 1887 call log_console_event (LOGGED_ERROR, oc_data.io_ptr); 1888 1889 return; 1890 1891 end log_console_error; 1892 1893 log_console_event: 1894 proc (event_no, event_io_ptr_parm); 1895 1896 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1897 /* */ 1898 /* Internal procedure to log console events... */ 1899 /* */ 1900 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1901 1902 /* parameters... (I) = Input, (O) = Output */ 1903 1904 dcl event_no fixed bin (35) parameter; /* event to log... (I) */ 1905 dcl event_io_ptr_parm ptr parameter; /* -> I/O being affected by the event...*/ 1906 1907 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1908 1909 1910 oc_data.event (oc_data.next_event).time = clock (); /* note the time... */ 1911 oc_data.event (oc_data.next_event).process_id = pds$process_id; /* and logger's process ID... */ 1912 oc_data.event (oc_data.next_event).event_number = event_no; /* log the event... */ 1913 oc_data.event (oc_data.next_event).event_io_ptr = event_io_ptr_parm; /* note current I/O... */ 1914 if oc_entry_ptr ^= null then do; 1915 oc_data.event (oc_data.next_event).opc_name = oc_entry.name; /* note console name... */ 1916 oc_data.event (oc_data.next_event).opc_flags = oc_entry.flags; /* and console flags... */ 1917 end; 1918 else do; /* currently no bootload console... */ 1919 oc_data.event (oc_data.next_event).opc_name = ""; 1920 oc_data.event (oc_data.next_event).opc_flags = ""b; 1921 end; 1922 1923 oc_data.next_event = oc_data.next_event + 1; /* bump the index... */ 1924 if oc_data.next_event > EVENT_QUEUE_SIZE then oc_data.next_event = 1; /* and ensure it stays in bounds... */ 1925 1926 return; /* done... */ 1927 1928 end log_console_event; 1929 1930 next_console_io: 1931 proc () returns (ptr); 1932 1933 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1934 /* */ 1935 /* Internal procedure to return a pointer to the next console I/O to be performed. If there are no */ 1936 /* outstanding I/Os then a null pointer is returned. */ 1937 /* */ 1938 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1939 1940 1941 if oc_data.read_io.in_progress then return (addr (oc_data.read_io)); /* complete READs without interruption..*/ 1942 1943 if ^oc_data.priority_io.completed then do; /* found a priority I/O... */ 1944 if oc_data.priority_io.read then do; /* is it a READ?... */ 1945 if ^oc_entry.oper_request then return (null); /* yes, but no RE(QUEST TURN) key... */ 1946 end; 1947 return (addr (oc_data.priority_io)); 1948 end; 1949 1950 if oc_data.write_q_full then do; /* if the write queue is full... */ 1951 return (addr (oc_data.write_queue (oc_data.next_free_write))); /* next free write is the oldest I/O... */ 1952 end; 1953 1954 first_search_pass = true; 1955 first_io_slot = oc_data.next_free_write + 1; /* else next free + 1 is the oldest... */ 1956 if first_io_slot > WRITE_QUEUE_SIZE then first_io_slot = 1; 1957 last_io_slot = WRITE_QUEUE_SIZE; /* search to end of queue... */ 1958 1959 SEARCH_WRITE_QUEUE: 1960 1961 do idx = first_io_slot to last_io_slot; /* search for the next pending write... */ 1962 console_io_ptr = addr (oc_data.write_queue (idx)); /* overlay the write... */ 1963 if ^console_io.completed then return (console_io_ptr); /* return pending WRITE to caller... */ 1964 end; 1965 if first_search_pass then do; /* first try failed... */ 1966 first_search_pass = false; 1967 first_io_slot = 1; /* start at top of the queue... */ 1968 last_io_slot = oc_data.next_free_write; 1969 go to SEARCH_WRITE_QUEUE; /* and start again... */ 1970 end; 1971 1972 if oc_entry.discarded then do; /* discarded output but noone knows... */ 1973 oc_entry.dcw_list_idx = DISCARD_DCW; /* get the DISCARD DCW list... */ 1974 call initiate_io (); /* and let them know... */ 1975 return (null); /* fake it this time around... */ 1976 end; 1977 1978 if oc_entry.oper_request then do; /* only done if RE(TURN QUEST) pushed...*/ 1979 if oc_data.stacked_read_cnt > 0 then do; /* if any READs are queued then do... */ 1980 if ^oc_data.read_io.in_progress & oc_data.read_io.completed /* if not in progress & last completed..*/ 1981 then return (addr (oc_data.read_io)); /* return pending READ to caller... */ 1982 end; 1983 end; 1984 1985 return (null); /* nothing to do... */ 1986 1987 end next_console_io; 1988 1989 poll_for_console: 1990 proc (); 1991 1992 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1993 /* */ 1994 /* Internal procedure that will poll for a working console and will not return until one is found. */ 1995 /* */ 1996 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1997 1998 if oc_data.bootload_console_idx ^= 0 then do; /* appears to be a working console... */ 1999 if console_responds_to_bell ((oc_data.bootload_console_idx)) then return; 2000 end; 2001 2002 call unassign_bootload_console (); /* quash pretender to the throne... */ 2003 2004 do while (true); 2005 poll_idx = poll_idx + 1; /* get next console... */ 2006 if poll_idx > oc_data.console_cnt then poll_idx = 1; /* make sure we stay in bounds... */ 2007 if ^oc_data.opc (poll_idx).no_device then do; /* don't poll deconfigured consoles... */ 2008 if console_responds_to_bell (poll_idx) then do; /* found one that works... */ 2009 call assign_bootload_console (oc_data.opc (poll_idx).name, code); 2010 if code = 0 then return; 2011 end; 2012 end; 2013 end; 2014 2015 end poll_for_console; 2016 2017 process_io: 2018 proc (); 2019 2020 2021 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2022 /* */ 2023 /* Internal procedure to perform a pending I/O. If there is no I/O pending the return argument */ 2024 /* will be set to true. */ 2025 /* */ 2026 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2027 2028 if oc_entry_ptr = null () then goto BAIL_OUT; /* Console went inoperable! Bail out... */ 2029 2030 if oc_entry.io_in_progress then return; /* console is already in use... */ 2031 2032 console_io_ptr = next_console_io (); /* find I/O to process... */ 2033 if console_io_ptr = null then return; /* nothing to do... */ 2034 2035 if console_io.read then do; /* process pending read... */ 2036 oc_entry.discard = false; /* end any DISCARD condition... */ 2037 wired_hardcore_data$abort_request = false; /* and any abort condition... */ 2038 console_io.in_progress = true; /* indicate that the I/O is in progress.*/ 2039 console_io.completed = false; /* and has not yet completed... */ 2040 if oc_entry.prompt & ^console_io.prompted then do; /* prompt first... */ 2041 oc_entry.dcw_list_idx = PROMPT_DCW; /* setup the prompt DCW list... */ 2042 console_io.prompted = true; 2043 call log_console_event (SENT_PROMPT, console_io_ptr); 2044 end; 2045 else do; /* perform the read... */ 2046 if oc_data.flags.printer_on | ^oc_entry.read_unechoed_option then do; 2047 oc_entry.dcw_list_idx = READ_DCW; /* perform the read... */ 2048 dcwp = addr (oc_entry.dcw_list (READ_DCW + 1)); /* READ DCW... */ 2049 call log_console_event (STARTED_READ, console_io_ptr); 2050 end; 2051 else do; /* attempt unechoed READ... */ 2052 oc_entry.dcw_list_idx = READ_UNECHOED_DCW; /* perform the read... */ 2053 dcwp = addr (oc_entry.dcw_list (READ_UNECHOED_DCW + 1)); /* READ_UNECHOED DCW... */ 2054 call log_console_event (STARTED_UNECHOED_READ, console_io_ptr); 2055 end; 2056 dcw.address = bit (binary (oc_data.abs_addr + /* get absolute address of read buffer..*/ 2057 wordno (addr (console_io.text)), 18)); 2058 end; 2059 call initiate_io (); /* start the I/O... */ 2060 return; 2061 end; 2062 2063 else do; /* if not a READ then it is a WRITE.. */ 2064 if console_io.alert & ^console_io.alerted then do; /* send WRITE_ALERT if wanted... */ 2065 oc_entry.dcw_list_idx = ALERT_DCW; /* get WRITE_ALERT DCW... */ 2066 console_io.alerted = true; 2067 call log_console_event (SENT_ALERT, console_io_ptr); 2068 end; 2069 else do; /* send the message... */ 2070 console_io.in_progress = true; /* indicate that the I/O is in progress.*/ 2071 dcwp = addr (oc_entry.dcw_list (WRITE_DCW + 1)); /* setup DCW list... */ 2072 dcw.tally = bit (binary (console_io.leng, 12), 12); /* tally = length of message in words...*/ 2073 dcw.address = bit (binary (oc_data.abs_addr + /* get absolute address of write buffer.*/ 2074 wordno (addr (console_io.text)), 18)); 2075 oc_entry.dcw_list_idx = WRITE_DCW; /* we will write... */ 2076 if console_io_ptr = addr (oc_data.priority_io) then 2077 call log_console_event (PRIORITY_OUTPUT, console_io_ptr); 2078 else call log_console_event (STARTED_WRITE, console_io_ptr); 2079 end; 2080 call initiate_io (); /* start the I/O... */ 2081 return; 2082 end; 2083 2084 end process_io; 2085 2086 process_io_status: 2087 proc (); 2088 2089 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2090 /* */ 2091 /* Internal procedure to process statuses returned by io_manager. */ 2092 /* */ 2093 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2094 2095 if oc_entry.got_special_int then do; /* operator wants to input... */ 2096 call log_console_event (GOT_SPECIAL_INT, oc_data.io_ptr); /* log the event... */ 2097 oc_entry.got_special_int = false; /* and reset the switch... */ 2098 if oc_entry.oper_request then do; /* if already in INPUT mode... */ 2099 if ^oc_entry.discard then do; /* and not in DISCARD state... */ 2100 oc_entry.discard = true; /* enter same... */ 2101 oc_entry.discarded = false; /* have not announced it yet... */ 2102 wired_hardcore_data$abort_request = true; /* he who notices shall abort... */ 2103 end; 2104 return; 2105 end; 2106 else oc_entry.oper_request = true; /* else note oper hit RE(TURN QUEST) key*/ 2107 return; 2108 end; 2109 2110 if ^oc_entry.io_in_progress then return; /* no outstanding I/O, no status... */ 2111 2112 if timeout () & ^io_status.t then do; /* the last I/O has exceeded its time...*/ 2113 call io_manager$mask (oc_entry.device_idx); /* abort the I/O... */ 2114 call retry_io (); /* retry the I/O... */ 2115 return; /* that's all for now... */ 2116 end; 2117 2118 if ^io_status.t then return; /* no valid status to process... */ 2119 2120 oc_entry.status_word = unspec (io_status); /* save the status for debugging... */ 2121 io_status.t = false; /* indicate that we've processed it... */ 2122 2123 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2124 /* */ 2125 /* If ocdcm_ was invoked anywhere other than to handle an interrupt, then we need to pause 5 */ 2126 /* milliseconds after the status for the interrupt to be sent by the console. This is due to the */ 2127 /* fact that we are not waiting for the interrupt, but only seeing if status has been stored. The */ 2128 /* IMU console takes a long time between the status store and terminate interrupt and if time is */ 2129 /* not given then a second connect could be sent before the interrupt has been sent, causing a */ 2130 /* console fault. */ 2131 /* */ 2132 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2133 2134 if ^entered_via_interrupt then do; 2135 if io_status.initiate & ^oc_entry.pcw_io & ^oc_entry.imu then return; /* ignore initiate & no major status, if... */ 2136 wait_timer = clock () + 5000; /* set wait timer */ 2137 do while (clock () < wait_timer); /* loop for a while */ 2138 end; 2139 end; 2140 2141 if io_status.power | io_status.channel_stat | io_status.central_stat then do; 2142 call io_manager$mask (oc_entry.device_idx); /* abort the I/O... */ 2143 call retry_io (); /* retry the I/O operation... */ 2144 return; /* that's all for now... */ 2145 end; 2146 2147 if io_status_overlay.major = "00"b3 then do; 2148 if io_status.initiate & ^oc_entry.pcw_io & ^oc_entry.imu then return; /* ignore initiate & no major status, if... */ 2149 call terminate_io (); /* normal termination... */ 2150 return; 2151 end; 2152 2153 if io_status_overlay.major = "01"b3 then do; /* if DEVICE_BUSY.. */ 2154 call retry_io (); /* give it another try... */ 2155 return; 2156 end; 2157 2158 if io_status_overlay.major = "02"b3 & /* if DEVICE_ATTENTION.. */ 2159 (oc_entry.dcw_list_idx = LOCK_MCA_DCW | 2160 oc_entry.dcw_list_idx = UNLOCK_MCA_DCW) then do; /* and doing MCA type I/O, then its ok...*/ 2161 call terminate_io (); /* normal termination... */ 2162 return; 2163 end; 2164 2165 if io_status_overlay.major ^= "03"b3 | /* if ^DATA_ALERT... */ 2166 (oc_entry.dcw_list_idx ^= READ_DCW & 2167 oc_entry.dcw_list_idx ^= READ_UNECHOED_DCW) then do; /* or not a READ I/O then retry... */ 2168 call io_manager$mask (oc_entry.device_idx); /* abort the I/O... */ 2169 call retry_io (); 2170 return; 2171 end; 2172 2173 console_io_ptr = oc_data.io_ptr; /* locate I/O in progress... */ 2174 2175 if io_status_overlay.sub = "10"b3 then do; /* OPERATOR DISTRACTED... */ 2176 oc_entry.oper_request = false; /* wait for oper to hit RE(TURN QUEST)..*/ 2177 oc_entry.discard = false; /* end the DISCARD condition... */ 2178 oc_entry.discarded = false; 2179 call reset_read (); /* reset the READ I/O... */ 2180 call send_newline (); /* start next I/O on a fresh line... */ 2181 return; 2182 end; 2183 2184 if io_status_overlay.sub = "04"b3 | /* if OPERATOR INPUT ERROR or... */ 2185 io_status_overlay.sub = "40"b3 then do; /* MESSAGE LENGTH ALERT... */ 2186 call reset_read (); /* reset the READ... */ 2187 call send_newline (); /* start on a fresh line... */ 2188 return; 2189 end; 2190 2191 call io_manager$mask (oc_entry.device_idx); /* abort the I/O... */ 2192 call retry_io (); /* retry all others... */ 2193 2194 return; /* done... */ 2195 2196 end process_io_status; 2197 2198 queue_console_io: 2199 proc () returns (fixed bin (71)); 2200 2201 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2202 /* */ 2203 /* Internal procedure that copies the user's I/O out of our local copy and into the appropriate */ 2204 /* I/O queue. If there is room for the I/O we return the time that the I/O is queued to our caller. */ 2205 /* If we find that there is no room to queue the I/O we return a zero to our caller. */ 2206 /* */ 2207 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2208 2209 local_io.in_progress = false; /* reset action switches... */ 2210 local_io.completed = false; 2211 local_io.alerted = false; 2212 local_io.prompted = false; 2213 local_io.retry_reset = false; 2214 local_io.console = ""; /* reset console assigned indicator... */ 2215 2216 if local_io.read then do; 2217 if oc_data.last_read_queued = -1 then do; /* if this is the first ever read... */ 2218 oc_data.reader_process_id = pds$process_id; /* then we get the prize... */ 2219 end; 2220 oc_data.stacked_read_cnt = oc_data.stacked_read_cnt + 1; /* push the read onto the stack... */ 2221 if oc_data.stacked_read_cnt > 1 then do; /* if we have more then one read... */ 2222 call log_console_event (PUSHED_READ, addr (oc_data.read_io)); /* log the PUSH... */ 2223 oc_data.meters.pushed_read_cnt = oc_data.meters.pushed_read_cnt + 1; 2224 return (0); /* nothing else to do... */ 2225 end; 2226 local_io.completed = true; /* READs always start off as completed..*/ 2227 local_io.leng = 0; /* make sure read goes smoothly... */ 2228 local_io.text = ""; 2229 local_io.sequence_no = 0; 2230 local_io.time_queued = clock (); 2231 local_io.process_id = pds$process_id; /* for debugging purposes... */ 2232 oc_data.read_io = local_io; /* copy the read... */ 2233 oc_data.last_read_queued = local_io.time_queued; /* update stats... */ 2234 call log_console_event (QUEUED_READ, addr (oc_data.read_io)); /* log the event... */ 2235 return (local_io.time_queued); /* and return the time we queued it... */ 2236 end; 2237 else do; /* I/O is a WRITE... */ 2238 if ^oc_data.write_queue (oc_data.next_free_write).completed then do; /* no room to queue a write... */ 2239 oc_data.meters.write_q_full_cnt = oc_data.meters.write_q_full_cnt + 1; 2240 oc_data.write_q_full = true; /* let next_console_io know... */ 2241 return (0); /* DIM will try again later... */ 2242 end; 2243 else do; /* we have room to queue the WRITE... */ 2244 local_io.time_queued = clock (); 2245 local_io.process_id = pds$process_id; /* get the writers process ID... */ 2246 console_io_ptr = addr (oc_data.write_queue (oc_data.next_free_write)); 2247 console_io = local_io; 2248 oc_data.last_write_queued = local_io.time_queued; /* update stats... */ 2249 call log_console_event (QUEUED_WRITE, console_io_ptr); 2250 oc_data.next_free_write = oc_data.next_free_write + 1; /* update the next free slot number... */ 2251 if oc_data.next_free_write > WRITE_QUEUE_SIZE then /* if past the end of the queue then... */ 2252 oc_data.next_free_write = 1; /* wrap around... */ 2253 if ^oc_data.write_queue (oc_data.next_free_write).completed then do;/* no room to queue any more writes...*/ 2254 oc_data.meters.write_q_full_cnt = oc_data.meters.write_q_full_cnt + 1; 2255 oc_data.write_q_full = true; /* let next_console_io know... */ 2256 end; 2257 return (local_io.time_queued); /* return the time we queued it... */ 2258 end; 2259 end; 2260 2261 end queue_console_io; 2262 2263 report_error: 2264 proc options (variable); 2265 2266 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2267 /* */ 2268 /* Internal procedure to report errors to the operator. Depending upon the severity of the error */ 2269 /* we will either return or crash. */ 2270 /* */ 2271 /* Calling sequence: */ 2272 /* */ 2273 /* call report_error (SEVERITY, entrypoint_name, control_string, arg_1,... arg_n); */ 2274 /* */ 2275 /* Note: This procedure does not validate its arguments. */ 2276 /* */ 2277 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2278 2279 dcl arg_list_ptr ptr; /* -> arg_list... */ 2280 dcl based_epname char (32) based; /* entrypoint name overlay... */ 2281 dcl based_severity fixed bin (17) based; /* severity overlay... */ 2282 dcl entrypoint_name char (32); /* name of our caller... */ 2283 dcl error_msg char (256); /* filled by formline_... */ 2284 dcl error_buffer char (256); /* filled by oc_trans_output_... */ 2285 dcl severity fixed bin (17); /* severity of the error... */ 2286 2287 dcl 1 saved_priority_io aligned /* copy of a priority I/O... */ 2288 like priority_io; 2289 2290 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2291 2292 2293 arg_list_ptr = arg_list_ptr_ (); /* -> argument list... */ 2294 2295 severity = arg_list_ptr -> arg_list.arg_ptrs (1) -> based_severity; /* first arg is the severity... */ 2296 if arg_list_ptr -> arg_list.call_type = Envptr_supplied_call_type then 2297 entrypoint_name = substr (arg_list_ptr -> arg_list_with_envptr.arg_ptrs (2) -> based_epname, 1, 2298 arg_list_ptr -> arg_list_with_envptr.desc_ptrs (2) -> arg_descriptor.size); 2299 else entrypoint_name = substr (arg_list_ptr -> arg_list.arg_ptrs (2) -> based_epname, 1, arg_list_ptr -> arg_list.desc_ptrs (2) -> arg_descriptor.size); 2300 2301 error_msg = ""; /* start with a clean slate... */ 2302 2303 call formline_ (3, 4, addr (error_msg), length (error_msg), 1, arg_list_ptr); 2304 2305 error_msg = "ocdcm_ (" || rtrim (entrypoint_name) || "): " || rtrim (error_msg); 2306 2307 oc_entry_ptr = find_oc_entry (""); /* locate the bootload console... */ 2308 2309 if severity = PANIC then do; /* must crash Multics... */ 2310 call unlock_oc_data (); /* relinquish lock, unwire, unmask... */ 2311 call syserr_real$panic (error_msg); /* the point of no return... */ 2312 end; 2313 2314 call syserr (JUST_LOG, error_msg); /* log the error... */ 2315 2316 if severity = JUST_LOG then return; /* all that is necessary... */ 2317 2318 if ^oc_data.in_service then do; 2319 if sys_info$collection_1_phase > SERVICE_INITIALIZATION then do; /* if crashing then must have console...*/ 2320 oc_data.must_have_console = true; /* set the appropriate flag... */ 2321 call console_recovery (); /* console recovery knows what to do... */ 2322 end; 2323 else if oc_data.crash_on_crf | sys_info$collection_1_phase < SERVICE_INITIALIZATION then do; 2324 call unlock_oc_data (); /* relinquish lock, unwire, unmask... */ 2325 call syserr_real$panic (error_msg); /* oh well... */ 2326 end; 2327 else return; /* can't go any further... */ 2328 end; 2329 2330 if ^oc_data.priority_io.completed then do; /* must save that message... */ 2331 i_saved_priority_io = true; 2332 if ^saved_priority_io.completed then do; /* LOST CONSOLE I/O... */ 2333 call syserr (JUST_LOG, "ocdcm_ (report_error): LOST CONSOLE I/O. I/O follows..."); 2334 call syserr (JUST_LOG, saved_priority_io.text); /* pass it to the log... */ 2335 end; 2336 saved_priority_io = oc_data.priority_io; /* copy it... */ 2337 end; 2338 2339 oc_data.priority_io.time_queued = clock (); 2340 oc_data.priority_io.process_id = pds$process_id; 2341 oc_data.priority_io.event_chan = 0; 2342 oc_data.priority_io.in_progress = false; 2343 oc_data.priority_io.alert = (severity <= BEEP); 2344 2345 if oc_data.mc_io_enabled then do; /* Message Coordinator is handling I/O..*/ 2346 call bump_io_to_mc ((oc_data.priority_io.sequence_no)); 2347 oc_data.priority_io.completed = true; /* free the space... */ 2348 return; /* all we can do... */ 2349 end; 2350 2351 if oc_entry_ptr = null then return; /* no need to continue... */ 2352 to_write_ptr = addr (error_msg); 2353 to_write_length = length (rtrim (error_msg)); 2354 continue_flag = false; 2355 this_part_length = 0; 2356 console_line_length = oc_entry.line_leng; /* in case the console gets lost... */ 2357 2358 do while (to_write_length > 0); 2359 oc_data.priority_io.completed = false; 2360 oc_data.priority_io.in_progress = false; 2361 error_buffer = ""; 2362 call oc_trans_output_ (to_write_ptr, to_write_length, this_part_length, addr (error_buffer), 2363 word_length, console_line_length, continue_flag); 2364 oc_data.priority_io.leng = word_length; 2365 oc_data.priority_io.text = substr (error_buffer, 1, multiply (word_length, 4, 17)); 2366 2367 oc_data.priority_io.completed = false; /* lest it not be performed... */ 2368 2369 do while (^oc_data.priority_io.completed & oc_data.in_service); /* LOOP IN RING ZERO TILL I/O COMPLETE..*/ 2370 call process_io (); /* process the I/O... */ 2371 call process_io_status (); /* process the status... */ 2372 end; 2373 to_write_ptr = addcharno (to_write_ptr, (this_part_length)); 2374 to_write_length = to_write_length - this_part_length; 2375 end; 2376 2377 if i_saved_priority_io then priority_io = saved_priority_io; /* restore priority I/O if necessary... */ 2378 saved_priority_io.completed = true; 2379 2380 end report_error; 2381 2382 reset_channel: 2383 proc (); 2384 2385 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2386 /* */ 2387 /* Internal procedure to reset the console channel by sending a READ_ID DCW to the channel. */ 2388 /* */ 2389 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2390 2391 2392 if true then return; /* UNTIL I FIGURE OUT RESETS... */ 2393 2394 oc_entry.dcw_list_idx = RESET_DCW; 2395 2396 call log_console_event (RESET_CHANNEL, oc_data.io_ptr); /* log the event... */ 2397 2398 call initiate_io (); /* and do it... */ 2399 2400 return; /* done... */ 2401 2402 end reset_channel; 2403 2404 reset_console: 2405 proc (); 2406 2407 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2408 /* */ 2409 /* Internal procedure to reset the console. */ 2410 /* */ 2411 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2412 2413 entrypoint = "reset_console"; /* set entrypoint name... */ 2414 2415 oc_data.in_service = true; /* attempt to put us back in service... */ 2416 oc_data.mc_io_enabled = false; 2417 2418 do idx = 1 to WRITE_QUEUE_SIZE; /* mark all WRITE slots as free... */ 2419 oc_data.write_queue (idx).completed = true; 2420 end; 2421 oc_data.write_q_full = false; /* reset the full flag... */ 2422 2423 oc_data.stacked_read_cnt = 1; /* free all READs, leave one pending... */ 2424 call reset_read (); /* and simulate one pending... */ 2425 2426 call unassign_bootload_console (); /* first unassign it... */ 2427 2428 if oc_entry_ptr = null then do; /* no active console... */ 2429 call console_recovery (); /* try another... */ 2430 return; /* best we can do... */ 2431 end; 2432 2433 oc_entry.io_in_progress = false; /* reset certain flags... */ 2434 oc_entry.discard = false; 2435 oc_entry.discarded = false; 2436 oc_entry.got_special_int = false; 2437 oc_entry.oper_request = false; 2438 oc_entry.retry_cnt = 0; 2439 oc_entry.io_time = 0; 2440 2441 call assign_bootload_console (oc_entry.name, err_code); /* then re-assign it... */ 2442 if err_code ^= 0 then do; 2443 call console_recovery (); /* failed, try another console... */ 2444 return; /* done... */ 2445 end; 2446 2447 call reset_channel (); /* reset console channel... */ 2448 2449 call report_error (BEEP, entrypoint, "Reset bootload console for ^a.", pds$process_group_id); 2450 2451 return; 2452 2453 end reset_console; 2454 2455 reset_read: 2456 proc (); 2457 2458 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2459 /* */ 2460 /* Internal procedure to reset a READ so that it will be done again. */ 2461 /* */ 2462 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2463 2464 if oc_data.priority_io.read then read_io_ptr = addr (oc_data.priority_io); /* if we were doing a priority READ... */ 2465 else read_io_ptr = addr (oc_data.read_io); 2466 2467 unspec (read_io_ptr -> console_io.flags) = ""b; /* reset all flags... */ 2468 read_io_ptr -> console_io.read = true; /* and not that it is a READ... */ 2469 read_io_ptr -> console_io.completed = true; /* so that it will be executed... */ 2470 read_io_ptr -> console_io.console = ""; /* reset assigned console... */ 2471 read_io_ptr -> console_io.leng = 0; /* clear text length... */ 2472 read_io_ptr -> console_io.text = ""; /* and text... */ 2473 2474 return; /* done... */ 2475 2476 end reset_read; 2477 2478 retry_io: 2479 proc (); 2480 2481 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2482 /* */ 2483 /* Internal procedure that will attempt to retry the last I/O operation initiated. If the console */ 2484 /* has already been flagged as inoperative then we will pass control to console_recovery who will */ 2485 /* handle the problem. */ 2486 /* */ 2487 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2488 2489 console_io_ptr = oc_data.io_ptr; /* find I/O we were processing... */ 2490 2491 if oc_entry.retry_cnt = 0 then call log_console_error (); /* log the error on the first retry... */ 2492 2493 call log_console_event (RETRY_IO, oc_data.io_ptr); /* log the retry event... */ 2494 2495 if oc_entry.retry_cnt = MAX_RETRIES then do; /* sorry... */ 2496 call console_recovery (); /* get a new console... */ 2497 if ^oc_data.in_service then do; /* console recovery failed... */ 2498 console_io.completed = true; /* free up the I/O... */ 2499 return; /* I/O was at least logged... */ 2500 end; 2501 else if oc_data.mc_io_enabled then do; /* no real consoles left... */ 2502 local_io = console_io; /* copy the I/O to local_io structure...*/ 2503 if local_io.sequence_no > 0 then do; /* if a syserr message then... */ 2504 call bump_io_to_mc ((local_io.sequence_no)); /* pass it to the MC... */ 2505 console_io.completed = true; /* signal priority I/O completion... */ 2506 end; 2507 else call bump_io_to_mc (-(local_io.time_queued)); /* for normal messages... */ 2508 return; /* done... */ 2509 end; 2510 end; 2511 2512 else do; /* give 'em another chance... */ 2513 oc_entry.retry_cnt = oc_entry.retry_cnt + 1; /* bump the retry count... */ 2514 if console_io.read then do; /* READs are special... */ 2515 oc_entry.oper_request = false; /* make 'em hit RE(TURN QUEST) again... */ 2516 oc_entry.discard = false; /* reset any DISCARD condition... */ 2517 oc_entry.discarded = false; 2518 oc_entry.io_in_progress = false; /* no I/O in progress... */ 2519 call reset_read (); /* reset the READ... */ 2520 call send_newline (); /* start on a fresh line... */ 2521 return; /* don't try again... */ 2522 end; 2523 call reset_channel (); /* reset the console channel... */ 2524 call initiate_io (); /* retry the I/O... */ 2525 return; 2526 end; 2527 2528 return; 2529 2530 end retry_io; 2531 2532 send_newline: 2533 proc (); 2534 2535 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2536 /* */ 2537 /* Internal procedure that sends a newline to the console. */ 2538 /* */ 2539 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2540 2541 oc_entry.dcw_list_idx = NEWLINE_DCW; /* get newline DCW... */ 2542 2543 call log_console_event (SENT_NEWLINE, oc_data.io_ptr); 2544 2545 call initiate_io (); /* send it... */ 2546 2547 return; 2548 2549 end send_newline; 2550 2551 terminate_io: 2552 proc (); 2553 2554 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2555 /* */ 2556 /* Internal procedure to terminate a successful I/O operation. */ 2557 /* */ 2558 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2559 2560 oc_entry.io_in_progress = false; /* signal end of I/O operation... */ 2561 oc_entry.retry_cnt = 0; /* reset for successful termination... */ 2562 2563 if oc_entry.dcw_list_idx = NEWLINE_DCW then do; 2564 call log_console_event (TERMINATED_NEWLINE, oc_data.io_ptr); 2565 return; /* nothing else to do... */ 2566 end; 2567 2568 if oc_entry.dcw_list_idx = LOCK_MCA_DCW then do; 2569 call log_console_event (TERMINATED_MCA_LOCK, null); 2570 return; /* nothing else to do... */ 2571 end; 2572 2573 if oc_entry.dcw_list_idx = UNLOCK_MCA_DCW then do; 2574 call log_console_event (TERMINATED_MCA_UNLOCK, null); 2575 return; /* nothing else to do... */ 2576 end; 2577 2578 if oc_entry.dcw_list_idx = DISCARD_DCW then do; 2579 oc_entry.discard = false; /* reset the DISCARD condition... */ 2580 oc_entry.discarded = false; 2581 return; /* nothing else to do... */ 2582 end; 2583 2584 console_io_ptr = oc_data.io_ptr; /* find the I/O to terminate... */ 2585 2586 if oc_entry.dcw_list_idx = RESET_DCW then do; 2587 call log_console_event (TERMINATED_RESET, oc_data.io_ptr); 2588 return; /* nothing more to do... */ 2589 end; 2590 2591 if oc_entry.dcw_list_idx = ALERT_DCW then do; 2592 call log_console_event (TERMINATED_ALERT, oc_data.io_ptr); 2593 return; /* nothing more to do... */ 2594 end; 2595 2596 if oc_entry.dcw_list_idx = PROMPT_DCW then do; /* note that prompt succeeded... */ 2597 call log_console_event (TERMINATED_PROMPT, oc_data.io_ptr); 2598 return; /* nothing else to do... */ 2599 end; 2600 2601 if oc_entry.dcw_list_idx = WRITE_DCW then do; 2602 oc_data.write_q_full = false; /* reset the full flag... */ 2603 console_io.completed = true; /* free the I/O slot... */ 2604 console_io.in_progress = false; /* terminate the I/O... */ 2605 call log_console_event (TERMINATED_WRITE, oc_data.io_ptr); 2606 return; 2607 end; 2608 2609 if (oc_entry.dcw_list_idx = READ_DCW | /* READ termination... */ 2610 oc_entry.dcw_list_idx = READ_UNECHOED_DCW) then do; /* READ_UNECHOED termination... */ 2611 console_io.in_progress = false; /* READ operation completed... */ 2612 call io_manager$get_status (oc_entry.device_idx, addr (oc_status)); /* get number of characters read... */ 2613 console_io.leng = 2614 multiply ((divide (MAX_IO_LENGTH, 4, 17) - oc_status.tally_residue), 4, 17); /* calculate number of characters read..*/ 2615 if oc_status.character_position > 0 then 2616 console_io.leng = console_io.leng + oc_status.character_position - 4; 2617 call log_console_event (TERMINATED_READ, oc_data.io_ptr); 2618 call send_newline (); /* our way of acknowledging the I/O... */ 2619 if console_io.leng = 0 then do; 2620 oc_entry.oper_request = false; /* null input line terminates INPUT mode*/ 2621 call reset_read (); /* reset the READ I/O... */ 2622 return; 2623 end; 2624 if console_io_ptr = addr (oc_data.priority_io) then do; /* if the READ was a priority I/O... */ 2625 console_io.completed = true; /* priority READ is finished... */ 2626 return; /* no wakeup necessary... */ 2627 end; 2628 call pxss$ring_0_wakeup (oc_data.reader_process_id, /* tell reader to come get his mail... */ 2629 console_io.event_chan, console_io.time_queued, (0)); 2630 call log_console_event (SENT_WAKEUP, oc_data.io_ptr); /* log the event... */ 2631 end; 2632 2633 return; 2634 2635 end terminate_io; 2636 2637 timeout: 2638 proc () returns (bit (1)); 2639 2640 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2641 /* */ 2642 /* Internal function that returns true if the I/O operation being performed has timed out. */ 2643 /* */ 2644 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2645 2646 console_io_timeout = false; 2647 if oc_entry.imu then 2648 if (clock () > (oc_entry.io_time + 1e06 * MAX_IMU_IO_TIME)) then 2649 goto console_timed_out; 2650 else return (false); 2651 else if (clock () > (oc_entry.io_time + 1e06 * MAX_IO_TIME (oc_entry.dcw_list_idx))) then do; 2652 console_timed_out: 2653 console_io_timeout = true; 2654 call log_console_event (IO_TIMEOUT, oc_data.io_ptr); 2655 return (true); 2656 end; 2657 2658 return (false); 2659 2660 end timeout; 2661 2662 unassign_bootload_console: 2663 proc (); 2664 2665 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2666 /* */ 2667 /* Internal procedure to unassign the bootload console. At the conclusion of this procedure */ 2668 /* oc_data.bootload_console_idx = 0. */ 2669 /* */ 2670 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2671 2672 2673 oc_entry_ptr = null; /* initialize it to start... */ 2674 2675 if oc_data.bootload_console_idx = 0 then do; /* can't unassign if no bootload console*/ 2676 old_console_name = ""; 2677 return; 2678 end; 2679 2680 oc_entry_ptr = addr (oc_data.opc (oc_data.bootload_console_idx)); /* overlay the bootload console entry...*/ 2681 old_console_name = oc_entry.name; /* in case reassignment is needed... */ 2682 oc_entry.io_in_progress = false; /* prevent MYLOCK race conditions... */ 2683 2684 call io_manager$unassign (oc_entry.device_idx, (0)); /* unassign it... */ 2685 oc_entry.assigned = false; 2686 oc_data.bootload_console_idx = 0; /* indicate no bootload console assigned*/ 2687 oc_entry.bootload_console = false; /* bookeeping... */ 2688 oc_entry.io_device = true; /* let them have it... */ 2689 oc_entry.config_change = true; /* note config change occurred... */ 2690 2691 return; 2692 2693 end unassign_bootload_console; 2694 2695 unlock_oc_data: 2696 proc (); 2697 2698 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2699 /* */ 2700 /* Internal procedure to unlock the oc_data database. This procedure will also unwire our stack */ 2701 /* and unmask interrupts. The only possible error here will be that the lock does not belong to */ 2702 /* us. This situation should not happen and will result in a system crash. */ 2703 /* */ 2704 /* Before unlocking we will check to see if any specials have occurred while we were busy. If so */ 2705 /* we will process them. */ 2706 /* */ 2707 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2708 2709 2710 do while (oc_data.no_lock_flags.got_special_int); /* special occurred while we held lock..*/ 2711 oc_data.no_lock_flags.got_special_int = false; /* reset the flag... */ 2712 oc_entry_ptr = find_oc_entry (""); /* find the bootload console... */ 2713 if oc_entry_ptr ^= null then do; /* only do if console available... */ 2714 oc_entry.got_special_int = true; /* say it came from there... */ 2715 call process_io_status (); /* process any pending status... */ 2716 call process_io (); /* attempt to start the I/O... */ 2717 end; 2718 else if ^oc_data.mc_io_enabled then 2719 oc_data.in_service = false; 2720 end; 2721 2722 if ^stacq (oc_data.lock, ""b, pds$process_id) then do; /* clear lock if it is ours... */ 2723 if oc_data.lock ^= ""b then /* not ours, if not free crash... */ 2724 call report_error (PANIC, "unlock_oc_data", "Lock not mine."); 2725 end; 2726 2727 call unwire_and_unmask; /* unwire stack, accept interrupts... */ 2728 2729 return; 2730 2731 end unlock_oc_data; 2732 2733 wire_and_mask: 2734 proc (); 2735 2736 call privileged_mode_ut$wire_and_mask (wire_mask, wire_ptw_ptr); /* wire our stack and mask interrupts...*/ 2737 wired_and_masked = true; 2738 return; 2739 2740 unwire_and_unmask: 2741 entry; 2742 if wired_and_masked then do; 2743 call privileged_mode_ut$unwire_unmask (wire_mask, wire_ptw_ptr); /* unwire stack, accept interrupts... */ 2744 wired_and_masked = false; 2745 end; 2746 return; 2747 2748 end wire_and_mask; 2749 2750 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2751 /* */ 2752 /* Declarations... */ 2753 /* format: off */ 2754 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2755 2756 2757 /* global parameters... (I) = Input, (O) = Output */ 2758 2759 dcl code fixed bin (35) parameter; 2760 /* standard Multics error code... (O) */ 2761 2762 /* entries... */ 2763 2764 dcl absadr entry (ptr, fixed bin (35)) returns (fixed bin (26)); 2765 dcl access_audit_$log_general entry options (variable); 2766 dcl arg_list_ptr_ entry () returns (ptr); 2767 dcl config_$find entry (char(4) aligned, ptr); 2768 dcl config_$find_parm entry (char(4) aligned, ptr); 2769 dcl cv_dec_check_ entry (char(*), fixed bin(35)) returns(fixed bin(35)); 2770 dcl formline_ entry options(variable); 2771 dcl ioa_$rsnnl entry() options(variable); 2772 /* dcl io_chnl_util$iom_to_name; declared in io_chnl_util_dcls include.. */ 2773 /* dcl io_manager$assign; declared in io_manager_dcls include... */ 2774 /* dcl io_manager$connect_abs; declared in io_manager_dcls include... */ 2775 /* dcl io_manager$get_status; declared in io_manager_dcls include... */ 2776 /* dcl io_manager$mask; declared in io_manager_dcls include... */ 2777 /* dcl io_manager$unassign; declared in io_manager_dcls include... */ 2778 dcl level$get entry () returns (fixed bin); 2779 dcl ocdcm_$interrupt_handler entry (fixed bin (35), fixed bin (3), bit (36) aligned); 2780 dcl oc_trans_output_ entry (ptr, fixed bin(21), fixed bin(21), ptr, fixed bin(19), fixed bin, bit(1) aligned); 2781 dcl privileged_mode_ut$wire_and_mask entry (fixed bin (71), ptr); 2782 dcl privileged_mode_ut$unwire_unmask entry (fixed bin (71), ptr); 2783 dcl pxss$ring_0_wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 2784 dcl syserr entry options (variable); 2785 dcl syserr$binary entry options (variable); 2786 dcl syserr_real$panic entry options (variable); 2787 2788 /* builtins... */ 2789 2790 dcl addr builtin; 2791 dcl addcharno builtin; 2792 dcl binary builtin; 2793 dcl bit builtin; 2794 dcl byte builtin; 2795 dcl clock builtin; 2796 dcl copy builtin; 2797 dcl divide builtin; 2798 dcl length builtin; 2799 dcl max builtin; 2800 dcl multiply builtin; 2801 dcl null builtin; 2802 dcl rtrim builtin; 2803 dcl stac builtin; 2804 dcl stacq builtin; 2805 dcl string builtin; 2806 dcl substr builtin; 2807 dcl unspec builtin; 2808 dcl wordno builtin; 2809 2810 /* pointers... */ 2811 2812 dcl console_data_ptr ptr; /* -> console_data structure... */ 2813 dcl read_io_ptr ptr; /* -> the READ I/O to reset... */ 2814 dcl to_write_ptr ptr; /* -> string to be written... */ 2815 dcl wire_ptw_ptr ptr; /* gotten and returned w/o changes... */ 2816 dcl save_status_ptr ptr; /* used to save oc_data.status_ptr... */ 2817 2818 /* switches... */ 2819 2820 dcl audit_flag bit (1); 2821 dcl true bit (1) init ("1"b) 2822 internal static options (constant); 2823 2824 dcl false bit (1) init ("0"b) 2825 internal static options (constant); 2826 2827 dcl console_found bit (1) init ("0"b); /* used for loop termination... */ 2828 dcl console_is_free bit (1); /* ON => OK for RCP attachment... */ 2829 dcl continue_flag bit (1) init ("0"b) /* line being written gets "\c" chars...*/ 2830 aligned; 2831 dcl done bit (1) init ("0"b); /* used for loop termination... */ 2832 dcl first_search_pass bit (1) init ("0"b); /* ON => first pass to find an I/O... */ 2833 dcl found bit (1) init ("0"b); /* used for loop termination... */ 2834 dcl i_saved_priority_io bit (1) init ("0"b); /* ON => I saved a priority I/O... */ 2835 dcl entered_via_interrupt bit (1) init ("0"b) /* used to see if need to pause during status processing...*/ 2836 aligned; 2837 dcl mca_lock_unlock_success bit (1); /* used during lock/unlock mca operations...*/ 2838 dcl must_unassign bit (1); /* used during lock/unlock mca operations...*/ 2839 dcl console_io_timeout bit (1); /* ON => Had io timeout... */ 2840 dcl wired_and_masked bit (1) init ("0"b) /* used to control when unwiring and unmasking is needed...*/ 2841 aligned; 2842 dcl wired_hardcore_data$abort_request 2843 bit (1) aligned 2844 external static; 2845 2846 /* error_table_... */ 2847 2848 dcl error_table_$action_not_performed 2849 fixed bin (35) external static; 2850 dcl error_table_$bad_arg fixed bin (35) external static; 2851 dcl error_table_$device_busy fixed bin (35) external static; 2852 dcl error_table_$device_not_active 2853 fixed bin (35) external static; 2854 dcl error_table_$dev_nt_assnd fixed bin (35) external static; 2855 dcl error_table_$no_operation fixed bin (35) external static; 2856 dcl error_table_$resource_not_free 2857 fixed bin (35) external static; 2858 dcl error_table_$timeout fixed bin (35) external static; 2859 2860 /* access ops */ 2861 2862 dcl access_operations_$lock_mca bit (36) aligned external static; 2863 dcl access_operations_$unlock_mca bit (36) aligned external static; 2864 2865 /* structures... */ 2866 2867 dcl 1 console_data aligned like config_data_$console_model_names 2868 based (console_data_ptr); 2869 dcl 1 io_status aligned like io_status_word 2870 based (oc_data.status_ptr); 2871 dcl 1 iom_args aligned like io_manager_arg; 2872 dcl 1 local_io aligned like console_io; 2873 dcl 1 log_message aligned like io_msg; 2874 dcl 1 oc_status aligned like io_status_entry; 2875 2876 /* status_word overlay... */ 2877 2878 dcl 1 io_status_overlay based (oc_data.status_ptr), /* to pick up statuses easily... */ 2879 2 major bit (6), /* major status... */ 2880 2 sub bit (6); /* sub status... */ 2881 2882 /* miscellaneous... */ 2883 2884 dcl MAX_MCA fixed bin (17) init (31) 2885 internal static options (constant); 2886 dcl MIN_MCA fixed bin (17) init (0) 2887 internal static options (constant); 2888 dcl PANIC fixed bin (17) init (6) /* call syserr_real$panic... */ 2889 internal static options (constant); 2890 dcl ad_code fixed bin (35); 2891 dcl audit_eventflags bit (36) aligned; /* access audit flags... */ 2892 dcl bootload_console_name char (4) aligned; 2893 dcl console_name char (4) aligned; 2894 dcl console_to_check char (4) aligned; /* for RCP availability... */ 2895 dcl console_io_flags char (80); /* string representation of flags... */ 2896 dcl console_line_length fixed bin (17); /* temp holding space... */ 2897 dcl cpu_cnt fixed bin (17); /* number of CPUs in the config file... */ 2898 dcl device_type char (16); /* alternate, inoperative, I/O... */ 2899 dcl entrypoint char (32); /* name of where we are in the code... */ 2900 dcl err_code fixed bin (35); /* internal standard error code... */ 2901 dcl error_msg char (80); /* error message for reporting... */ 2902 dcl first_io_slot fixed bin (17); /* to check for pending I/O... */ 2903 dcl idx fixed bin (17); /* miscellaneous working index... */ 2904 dcl last_io_slot fixed bin (17); /* to check for pending I/O... */ 2905 dcl local_time fixed bin (71); /* miscellaneous time value... */ 2906 dcl mca_to_unlock fixed bin (35); /* MCA number to be unlocked... */ 2907 dcl new_prompt char (8); /* new prompt string... */ 2908 dcl new_state char (4); /* changed state of a console... */ 2909 dcl oc_data_flags char (80); /* string representation of flags... */ 2910 dcl oc_entry_flags char (80); /* string representation of flags... */ 2911 dcl old_console_name char (4) aligned; 2912 dcl word_length fixed bin (19); /* length of I/O in words... */ 2913 dcl pds$process_id bit (36) external static; 2914 dcl pds$process_group_id char (32) external static; 2915 dcl poll_idx fixed bin (17); /* index for polling consoles... */ 2916 dcl reconfig_option fixed bin (17); /* reconfiguration action to take... */ 2917 dcl time_lock_expires fixed bin (71); /* holder should relinquish by then... */ 2918 dcl wait_timer fixed bin (71); /* priority IO wait timer */ 2919 dcl this_part_length fixed bin (21); /* ASCII char count of part of the write*/ 2920 dcl to_write_length fixed bin (21); /* length of string to write... */ 2921 dcl wire_mask fixed bin (71); /* gotten and returned w/o changes... */ 2922 2923 /* includes... */ 2924 1 1 /* begin include file - access_audit_eventflags.incl.pl1 */ 1 2 /* NOTE: This include file has an ALM counterpart made with cif. 1 3*Keep it up to date. */ 1 4 1 5 dcl 1 audit_event_flags based aligned, 1 6 2 special_op bit (1) unal, /* special sys operation */ 1 7 2 grant bit (1) unal, /* operation was successful */ 1 8 2 admin_op bit (1) unal, /* administrative operation */ 1 9 2 priv_op bit (1) unal, /* privileged operation */ 1 10 2 cc_1_10 bit (1) unal, /* small covert channel */ 1 11 2 cc_10_100 bit (1) unal, /* moderate covert channel */ 1 12 2 receiver bit (1) unal, /* on receiving end of channel */ 1 13 2 pad bit (29) unal; 1 14 1 15 /* end include file - access_audit_eventflags.incl.pl1 */ 2925 2926 2 1 /* BEGIN INCLUDE FILE ... arg_descriptor.incl.pl1 2 2* 2 3* James R. Davis 1 Mar 79 */ 2 4 /* Modified June 83 JMAthane for extended arg descriptor format */ 2 5 2 6 dcl 1 arg_descriptor based (arg_descriptor_ptr) aligned, 2 7 2 flag bit (1) unal, 2 8 2 type fixed bin (6) unsigned unal, 2 9 2 packed bit (1) unal, 2 10 2 number_dims fixed bin (4) unsigned unal, 2 11 2 size fixed bin (24) unsigned unal; 2 12 2 13 dcl 1 fixed_arg_descriptor based (arg_descriptor_ptr) aligned, 2 14 2 flag bit (1) unal, 2 15 2 type fixed bin (6) unsigned unal, 2 16 2 packed bit (1) unal, 2 17 2 number_dims fixed bin (4) unsigned unal, 2 18 2 scale fixed bin (11) unal, 2 19 2 precision fixed bin (12) unsigned unal; 2 20 2 21 dcl 1 extended_arg_descriptor based (arg_descriptor_ptr) aligned, 2 22 2 flag bit (1) unal, /* = "1"b */ 2 23 2 type fixed bin (6) unsigned unal, /* = 58 */ 2 24 2 packed bit (1) unal, /* significant if number_dims ^= 0 */ 2 25 2 number_dims fixed (4) unsigned unal,/* number of variable dimensions */ 2 26 2 size bit (24) unal, 2 27 2 dims (0 refer (extended_arg_descriptor.number_dims)), /* part referenced by called generated code */ 2 28 3 low fixed bin (35), 2 29 3 high fixed bin (35), 2 30 3 multiplier fixed bin (35), /* in bits if packed, in words if not */ 2 31 2 real_type fixed bin (18) unsigned unal, 2 32 2 type_offset fixed bin (18) unsigned unal; /* offset rel to symbol tree to symbol node for type, if any */ 2 33 2 34 dcl arg_descriptor_ptr ptr; 2 35 2 36 dcl extended_arg_type fixed bin init (58); 2 37 2 38 /* END INCLUDE file .... arg_descriptor.incl.pl1 */ 2927 2928 3 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 3 2* 3 3* James R. Davis 10 May 79 */ 3 4 3 5 3 6 3 7 /****^ HISTORY COMMENTS: 3 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 3 9* audit(86-07-15,Schroth): 3 10* added command_name_arglist declaration to allow the storage of the 3 11* command name given to the command processor 3 12* END HISTORY COMMENTS */ 3 13 3 14 dcl 1 arg_list aligned based, 3 15 2 header, 3 16 3 arg_count fixed bin (17) unsigned unal, 3 17 3 pad1 bit (1) unal, 3 18 3 call_type fixed bin (18) unsigned unal, 3 19 3 desc_count fixed bin (17) unsigned unal, 3 20 3 pad2 bit (19) unal, 3 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 3 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 3 23 3 24 3 25 dcl 1 command_name_arglist aligned based, 3 26 2 header, 3 27 3 arg_count fixed bin (17) unsigned unal, 3 28 3 pad1 bit (1) unal, 3 29 3 call_type fixed bin (18) unsigned unal, 3 30 3 desc_count fixed bin (17) unsigned unal, 3 31 3 mbz bit(1) unal, 3 32 3 has_command_name bit(1) unal, 3 33 3 pad2 bit (17) unal, 3 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 3 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 3 36 2 name, 3 37 3 command_name_ptr pointer, 3 38 3 command_name_length fixed bin (21); 3 39 3 40 3 41 3 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 3 43 2 header, 3 44 3 arg_count fixed bin (17) unsigned unal, 3 45 3 pad1 bit (1) unal, 3 46 3 call_type fixed bin (18) unsigned unal, 3 47 3 desc_count fixed bin (17) unsigned unal, 3 48 3 pad2 bit (19) unal, 3 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 3 50 2 envptr ptr, 3 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 3 52 3 53 3 54 dcl ( 3 55 Quick_call_type init (0), 3 56 Interseg_call_type init (4), 3 57 Envptr_supplied_call_type 3 58 init (8) 3 59 ) fixed bin (18) unsigned unal int static options (constant); 3 60 3 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 3 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 3 63* an argument list of the proper size in the user's stack 3 64* 3 65**/ 3 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 2929 2930 4 1 /* BEGIN include file collection_1_phases.incl.pl1 */ 4 2 4 3 /* Symbolic names for the various collection1 phases. 4 4*Keith Loepere, October 1983. */ 4 5 4 6 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 4 7 4 8 dcl sys_info$collection_1_phase fixed bin external static; 4 9 4 10 dcl EARLY_INITIALIZATION fixed bin init (1) static options (constant); /* phase to find the config deck */ 4 11 dcl BOOT_INITIALIZATION fixed bin init (2) static options (constant); /* phase to setup up crash handler, bce */ 4 12 dcl SERVICE_INITIALIZATION fixed bin init (3) static options (constant); /* phase to set up for service */ 4 13 4 14 /* These first 3 (EARLY, BOOT and SERVICE) must be 1, 2, 3 in that order so 4 15*programs can simply tell apart the booting phases from all others (crash or 4 16*recovery type phases). */ 4 17 4 18 dcl CRASH_INITIALIZATION fixed bin init (4) static options (constant); /* phase to set up bce after crash/shut down */ 4 19 dcl RE_EARLY_INITIALIZATION fixed bin init (5) static options (constant); /* retry boot initialization given safe config to a new early level */ 4 20 dcl BCE_CRASH_INITIALIZATION fixed bin init (6) static options (constant); /* retry boot initialization to give a new boot level given a crash of bce */ 4 21 dcl SHUT_INITIALIZATION fixed bin init (7) static options (constant); /* same as boot but don't load new disk mpcs */ 4 22 4 23 dcl COLLECTION_1_PHASE_NAMES (7) char (16) unal static options (constant) init 4 24 ("early", "boot", "service", "crash", "re_early", "bce_crash", "shut"); 4 25 4 26 /* END include file collection_1_phases.incl.pl1 */ 2931 2932 5 1 /* Begin include file config_data_dcls.incl.pl1 BIM 9/82 */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 5 5* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 5 6* Add changes made to 5 7* config_data_.cds. 5 8* 2) change(86-10-21,Fawcett), approve(86-10-21,PBF7381), 5 9* audit(86-10-23,Farley), install(86-10-28,MR12.0-1200): 5 10* Corrected the number of tape drive models supported. 5 11* END HISTORY COMMENTS */ 5 12 5 13 /* format: style3 */ 5 14 /* Modified 830523 to add console io_type and line_leng fields for different 5 15* operator's consoles and to fix a size bug... -E. A. Ranzenbach */ 5 16 /* Modified 841101 by Paul Farley to add changes made to config_data_.cds */ 5 17 5 18 /* WARNING WARNING */ 5 19 5 20 /* Due to the awful PL/I restriction that prohibits any expressions */ 5 21 /* in external variable extents, the arrays here have integers for */ 5 22 /* extents. Changes to config_data_.cds should be reflected here, */ 5 23 /* Because the declares in config_data_.cds use the "like" attribute. */ 5 24 /* Just in case, though, do NOT use hbound. Use the .count fields */ 5 25 /* in the structures instead. */ 5 26 5 27 declare config_data_$chnl_cardx 5 28 fixed binary external static; 5 29 declare config_data_$clok_cardx 5 30 fixed binary external static; 5 31 declare config_data_$cpu_cardx 5 32 fixed binary external static; 5 33 declare config_data_$fnp_cardx 5 34 fixed binary external static; 5 35 declare config_data_$intk_cardx 5 36 fixed binary external static; 5 37 declare config_data_$iom_cardx 5 38 fixed binary external static; 5 39 declare config_data_$mem_cardx 5 40 fixed binary external static; 5 41 declare config_data_$mpc_msp_cardx 5 42 fixed binary external static; 5 43 declare config_data_$mpc_mtp_cardx 5 44 fixed binary external static; 5 45 declare config_data_$ipc_fips_cardx 5 46 fixed binary external static; 5 47 declare config_data_$mpc_urp_cardx 5 48 fixed binary external static; 5 49 declare config_data_$mpc_cardx 5 50 fixed binary external static; 5 51 declare config_data_$mpcs_msp_cardx 5 52 fixed binary external static; 5 53 declare config_data_$mpcs_mtp_cardx 5 54 fixed binary external static; 5 55 declare config_data_$mpcs_urp_cardx 5 56 fixed binary external static; 5 57 declare config_data_$mpcs_cardx 5 58 fixed binary external static; 5 59 declare config_data_$parm_cardx 5 60 fixed binary external static; 5 61 declare config_data_$part_cardx 5 62 fixed binary external static; 5 63 declare config_data_$prph_dsk_cardx 5 64 fixed binary external static; 5 65 declare config_data_$prph_prt_cardx 5 66 fixed binary external static; 5 67 declare config_data_$prph_rdr_cardx 5 68 fixed binary external static; 5 69 declare config_data_$prph_pun_cardx 5 70 fixed binary external static; 5 71 declare config_data_$prph_ccu_cardx 5 72 fixed binary external static; 5 73 declare config_data_$prph_tap_cardx 5 74 fixed binary external static; 5 75 declare config_data_$prph_opc_cardx 5 76 fixed binary external static; 5 77 declare config_data_$prph_cardx 5 78 fixed binary external static; 5 79 declare config_data_$root_cardx 5 80 fixed binary external static; 5 81 declare config_data_$salv_cardx 5 82 fixed binary external static; 5 83 declare config_data_$schd_cardx 5 84 fixed binary external static; 5 85 declare config_data_$sst_cardx 5 86 fixed binary external static; 5 87 declare config_data_$stok_cardx 5 88 fixed binary external static; 5 89 declare config_data_$tbls_cardx 5 90 fixed binary external static; 5 91 declare config_data_$udsk_cardx 5 92 fixed binary external static; 5 93 5 94 declare 1 config_data_$config_cards 5 95 aligned external static, 5 96 2 count fixed binary, 5 97 2 per_card (32) aligned, 5 98 3 name char (4) aligned, 5 99 3 second_field char (4) aligned, 5 100 3 flags aligned, 5 101 4 match_second bit (1) unaligned, /* PRPH FOO */ 5 102 4 match_only_3 bit (1) unaligned; /* XXXn type */ 5 103 5 104 declare 1 config_data_$mpc_msp_model_names 5 105 aligned external static, 5 106 2 count fixed binary, 5 107 2 names (9) aligned, 5 108 3 model fixed binary, 5 109 3 name character (8), 5 110 3 fw_tag character (16), 5 111 3 valid_drives (16) fixed binary unaligned; 5 112 5 113 declare 1 config_data_$mpc_mtp_model_names 5 114 aligned external static, 5 115 2 count fixed binary, 5 116 2 names (7) aligned, 5 117 3 model fixed binary, 5 118 3 name character (8), 5 119 3 fw_tag character (16), 5 120 3 valid_drives (16) fixed binary unaligned; 5 121 5 122 declare 1 config_data_$mpc_urp_model_names 5 123 aligned external static, 5 124 2 count fixed binary, 5 125 2 names (6) aligned, 5 126 3 model fixed binary, 5 127 3 name character (8), 5 128 3 fw_tag character (16); /* "EURC" for EURC */ 5 129 5 130 declare 1 config_data_$ipc_msp_model_names 5 131 aligned external static, 5 132 2 count fixed binary, 5 133 2 names (1) aligned, 5 134 3 model fixed binary, 5 135 3 name character (8), 5 136 3 fw_tag character (16), 5 137 3 valid_drives (16) fixed binary unaligned; 5 138 5 139 declare 1 config_data_$ipc_mtp_model_names 5 140 aligned external static, 5 141 2 count fixed binary, 5 142 2 names (1) aligned, 5 143 3 model fixed binary, 5 144 3 name character (8), 5 145 3 fw_tag character (16), 5 146 3 valid_drives (16) fixed binary unaligned; 5 147 5 148 declare 1 config_data_$disk_drive_model_names 5 149 aligned external static, 5 150 2 count fixed binary, 5 151 2 names (5) aligned, 5 152 3 model fixed binary, 5 153 3 name character (8), 5 154 3 device_0_valid bit (1); 5 155 5 156 declare 1 config_data_$tape_drive_model_names 5 157 aligned external static, 5 158 2 count fixed binary, 5 159 2 names (9) aligned, 5 160 3 model fixed binary, 5 161 3 name character (8), 5 162 3 device_0_valid bit (1); 5 163 5 164 declare 1 config_data_$printer_model_names 5 165 aligned external static, 5 166 2 count fixed binary, 5 167 2 names (5) aligned, 5 168 3 model fixed binary, 5 169 3 name character (8); 5 170 5 171 declare 1 config_data_$reader_model_names 5 172 aligned external static, 5 173 2 count fixed binary, 5 174 2 names (4) aligned, 5 175 3 model fixed binary, 5 176 3 name character (8); 5 177 5 178 declare 1 config_data_$ccu_model_names 5 179 aligned external static, 5 180 2 count fixed binary, 5 181 2 names (1) aligned, 5 182 3 model fixed binary, 5 183 3 name character (8); 5 184 5 185 declare 1 config_data_$punch_model_names 5 186 aligned external static, 5 187 2 count fixed binary, 5 188 2 names (3) aligned, 5 189 3 model fixed binary, 5 190 3 name character (8); 5 191 5 192 declare 1 config_data_$console_model_names 5 193 aligned external static, 5 194 2 count fixed binary, 5 195 2 names (3) aligned, 5 196 3 model fixed binary, 5 197 3 name character (8), 5 198 3 line_leng fixed bin (17), 5 199 3 io_type character (4); 5 200 5 201 /* End include file config_data_dcls.incl.pl1 */ 2933 2934 6 1 /* BEGIN INCLUDE FILE ... config_parm_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 6 2 6 3 dcl parm_cardp pointer; /* pointer to PARM card */ 6 4 6 5 dcl 1 parm_card aligned based (parm_cardp), /* PARM card declaration */ 6 6 2 word char (4), /* "parm" */ 6 7 2 options (14) char (4), /* Parameters and their values */ 6 8 6 9 2 type_word aligned, 6 10 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 6 11 3 pad1 bit (4) unaligned, 6 12 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 6 13 6 14 dcl 1 parm_card_array based (parm_cardp), /* Overlay for counting options */ 6 15 2 pad bit (36) aligned, 6 16 2 options (parm_card.n_fields) bit (36) aligned; 6 17 6 18 6 19 dcl parm_ptr pointer; /* For use with config$find_parm */ 6 20 6 21 dcl 1 numeric_parm aligned based (parm_ptr), /* Overlay into middle of card for looking */ 6 22 2 name char (4), /* at a parameter found by config$find_parm */ 6 23 2 value fixed bin (35); 6 24 6 25 dcl 1 string_parm aligned based (parm_ptr), 6 26 2 name char (4), 6 27 2 value char (4); 6 28 6 29 dcl PARM_CARD_WORD char (4) aligned internal static options (constant) init ("parm"); 6 30 6 31 /* END INCLUDE FILE ... config_parm_card.incl.pl1 */ 2935 2936 7 1 /* BEGIN INCLUDE FILE ... config_prph_opc_card.incl.pl1 ... 11/27/80, W. Olin Sibert */ 7 2 7 3 /* Modified 830613 to add state and line_leng fields to card... -E. A. Ranzenbach */ 7 4 /* Modified 841205 to add mask field... -E. A. Ranzenbach */ 7 5 7 6 dcl prph_opc_cardp ptr; /* pointer to PRPH OPC card */ 7 7 7 8 dcl 1 prph_opc_card based (prph_opc_cardp) aligned, /* PRPH OPC card declaration */ 7 9 2 word char (4), /* "prph" */ 7 10 2 name char (4), /* "opc" */ 7 11 2 iom fixed bin (3), /* IOM number */ 7 12 2 chan fixed bin (8), /* channel number */ 7 13 2 model fixed bin, /* console model number */ 7 14 2 line_leng fixed bin, /* line length of the console... */ 7 15 2 state char (4), /* "io", "on", "alt", "off" or "inop"... */ 7 16 2 mask char (4), /* "mask" means read_unechoed option is not installed... */ 7 17 2 pad (7) bit (36) aligned, /* pad to 15 fields */ 7 18 7 19 2 type_word aligned, 7 20 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 7 21 3 pad1 bit (4) unaligned, 7 22 3 n_fields fixed bin (5) unsigned unaligned; /* number of fields used on card */ 7 23 7 24 /* END INCLUDE FILE ... config_prph_opc_card.incl.pl1 */ 2937 2938 8 1 /* BEGIN INCLUDE FILE ... config_iom_card.incl.pl1 ... 11/37/80 W. Olin Sibert */ 8 2 8 3 dcl iom_cardp pointer; /* pointer to IOM card */ 8 4 8 5 dcl 1 iom_card aligned based (iom_cardp), /* IOM card declaration */ 8 6 2 word char (4), /* "iom" */ 8 7 2 tag fixed bin (3), /* One more than IOM tag set in maintenance panel switches */ 8 8 2 port fixed bin (3), /* Controller port to which IOM is connected */ 8 9 2 model char (4), /* IOM model number: "iomb", "nsa", "iioc" */ 8 10 2 state char (4), /* State: "on" or "off" */ 8 11 8 12 2 pad (10) bit (36) aligned, /* Pad to 15 fields */ 8 13 8 14 2 type_word aligned, 8 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 8 16 3 pad1 bit (4) unaligned, 8 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 8 18 8 19 dcl IOM_CARD_WORD char (4) aligned internal static options (constant) init ("iom"); 8 20 8 21 /* END INCLUDE FILE ... config_iom_card.incl.pl1 */ 2939 2940 9 1 /* START OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 9 2 9 3 /* Written by Charles Hornig, 1st quarter 1981 */ 9 4 /* Canonicalization entry added by Chris Jones, January 1984 */ 9 5 9 6 /* chanid = canonicalize_chanid (chanid); */ 9 7 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 9 8 dcl io_chnl_util$canonicalize_chanid 9 9 entry (char (8) aligned) returns (char (8) aligned); 9 10 9 11 /* call iom_to_name (iomno, channo, name, code); */ 9 12 dcl io_chnl_util$iom_to_name 9 13 entry (fixed bin (3), fixed bin (7), char (8) aligned, fixed bin (35)); 9 14 9 15 /* call name_to_iom (name, iomno, channo, code); */ 9 16 dcl io_chnl_util$name_to_iom 9 17 entry (char (8) aligned, fixed bin (3), fixed bin (7), fixed bin (35)); 9 18 9 19 /* END OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 2941 2942 10 1 /* Begin include file io_manager_dcls.incl.pl1 */ 10 2 10 3 /* Written by Charles Hornig, late 1980 and early 1981 */ 10 4 /* Modified for MR10 interface, February 1982 */ 10 5 /* Channel reconfiguration entries added by Chris Jones, January 1984 */ 10 6 10 7 /* These entries are callable on unwired stacks. */ 10 8 10 9 /* call io_manager$assign (Chx, Channel, Handler, Index, Statusp, Code); */ 10 10 dcl io_manager$assign 10 11 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 10 12 fixed bin (35), ptr, fixed bin (35)); 10 13 10 14 /* call io_manager$assign_add (Chx, Channel, Handler, Index, Statusp, Code); */ 10 15 dcl io_manager$assign_add 10 16 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 10 17 fixed bin (35), ptr, fixed bin (35)); 10 18 10 19 /* call io_manager$unassign (Chx, Code); */ 10 20 dcl io_manager$unassign entry (fixed bin (35), fixed bin (35)); 10 21 10 22 /* call io_manager$unassign_delete (Chx, Code); */ 10 23 dcl io_manager$unassign_delete entry (fixed bin (35), fixed bin (35)); 10 24 10 25 /* call io_manager$connect (Io_manager_arg); */ 10 26 dcl io_manager$connect entry (1 aligned like io_manager_arg); 10 27 10 28 /* call io_manager$connect_abs (Io_manager_arg); */ 10 29 dcl io_manager$connect_abs entry (1 aligned like io_manager_arg); 10 30 10 31 /* call io_manager$connect_direct (Io_manager_arg); */ 10 32 dcl io_manager$connect_direct entry (1 aligned like io_manager_arg); 10 33 10 34 /* call io_manager$get_status (Chx, Io_status_entry_ptr); */ 10 35 dcl io_manager$get_status entry (fixed bin (35), ptr); 10 36 10 37 /* call io_manager$mask (Chx); */ 10 38 dcl io_manager$mask entry (fixed bin (35)); 10 39 10 40 /* call io_manager$ignore_interrupt (); */ 10 41 dcl io_manager$ignore_interrupt entry (fixed bin (35), fixed bin (3), bit (36) aligned); 10 42 10 43 /* call io_manager$data_tdcw (Io_manager_arg); 10 44* dcl io_manager$data_tdcw entry (1 aligned like io_manager_arg); 10 45* 10 46* /* call io_manager$workspace_tdcw (Io_manager_arg); */ 10 47 dcl io_manager$workspace_tdcw entry (1 aligned like io_manager_arg); 10 48 10 49 dcl io_manager_arg_ptr ptr; 10 50 dcl 1 io_manager_arg aligned based (io_manager_arg_ptr), 10 51 2 chx fixed bin (35), /* channel index from io_manager$assign */ 10 52 2 bound fixed bin (19), /* workspace size */ 10 53 2 pcw bit (36) aligned, /* or IDCW */ 10 54 2 listx fixed bin (18), /* DCW list offset */ 10 55 2 ptp ptr, /* page table pointer */ 10 56 2 listp ptr, /* DCW list pointer */ 10 57 2 dcw_pair_ptr ptr; /* DCW pair pointer */ 10 58 10 59 /* End include file io_manager_dcls.incl.pl1 */ 2943 2944 11 1 /* Begin include file io_status_entry.incl.pl1 */ 11 2 /* Written by C. Hornig sometime late in 1980. */ 11 3 /* Modified January 1983 by Chris Jones to show detailed status. */ 11 4 11 5 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 11 6 dcl io_status_entry_ptr ptr; 11 7 dcl 1 io_status_entry aligned based (io_status_entry_ptr), 11 8 2 word1 like io_status_word, /* major status word */ 11 9 2 word2, 11 10 3 next_lpw_offset bit (18) unaligned, 11 11 3 rfu1 bit (5) unaligned, 11 12 3 workspace bit (1) unaligned, /* DCW is in the workspace */ 11 13 3 rfu2 bit (12) unaligned, 11 14 2 word3 bit (36), 11 15 2 word4, 11 16 3 next_dcw_offset bit (18) unaligned, /* 1 + offset of last data word */ 11 17 3 character_position 11 18 uns fixed bin (3) unaligned, 11 19 3 write bit (1) unaligned, 11 20 3 action_code bit (2) unaligned, 11 21 3 tally_residue uns fixed bin (12) unaligned, 11 22 /* residue of last DCW tally */ 11 23 2 word5, 11 24 3 data_count uns fixed bin (26) unaligned, 11 25 /* total words transferred (on IIOC & IOX) */ 11 26 3 rfu bit (10) unaligned, 11 27 2 words (6:8) bit (36), 11 28 2 detailed_status (8) bit (36); /* detailed status (IIOC and IOX) */ 11 29 12 1 /* Begin include file io_status_word.incl.pl1 */ 12 2 /* Made from iom_stat.incl.pl1 by C. Hornig */ 12 3 12 4 dcl io_status_word_ptr ptr; 12 5 dcl 1 io_status_word based (io_status_word_ptr) aligned, /* I/O status information */ 12 6 ( 12 7 2 t bit (1), /* set to "1"b by IOM */ 12 8 2 power bit (1), /* non-zero if peripheral absent or power off */ 12 9 2 major bit (4), /* major status */ 12 10 2 sub bit (6), /* substatus */ 12 11 2 eo bit (1), /* even/odd bit */ 12 12 2 marker bit (1), /* non-zero if marker status */ 12 13 2 soft bit (2), /* software status */ 12 14 2 initiate bit (1), /* initiate bit */ 12 15 2 abort bit (1), /* software abort bit */ 12 16 2 channel_stat bit (3), /* IOM channel status */ 12 17 2 central_stat bit (3), /* IOM central status */ 12 18 2 mbz bit (6), 12 19 2 rcount bit (6) 12 20 ) unaligned; /* record count residue */ 12 21 12 22 /* End include file io_status_word.incl.pl1 */ 11 30 11 31 11 32 /* End include file io_status_entry.incl.pl1 */ 2945 2946 13 1 /* Begin include file ..... io_syserr_msg.incl.pl1 */ 13 2 13 3 /* Created October 1975 by Larry Johnson */ 13 4 /* Modified 11/11/76 by Noel I. Morris */ 13 5 /* Modified November 1979 by Larry Johnson for detailed status */ 13 6 /* Modified February 1981 by Chris Jones to use channel names */ 13 7 13 8 /* This include file defines the format of the syserr message generated for I/O errors. */ 13 9 /* This message is also defined (size and type) by the "io_msg" and "io_msg_detail" 13 10* constants in syserr_binary_def.incl.pl1 */ 13 11 13 12 dcl io_msgp ptr; /* Pointer to syserr message structure */ 13 13 13 14 dcl 1 io_msg aligned based (io_msgp), 13 15 ( 13 16 2 level bit (3), /* Level of interrupt being logged */ 13 17 2 fill1 bit (9), 13 18 2 device bit (6), /* Device which caused error */ 13 19 2 time_out bit (1), /* Set if error caused by channel timeout */ 13 20 2 type bit (2), /* Type of last DCW */ 13 21 2 command bit (6), /* Command being executed by device */ 13 22 2 fill2 bit (3), 13 23 2 count bit (6) 13 24 ) unal, /* Count of message repetitions */ 13 25 2 channel char (8), /* Channel over which interrupt came */ 13 26 2 status bit (36), /* First word of IOM status */ 13 27 2 devname char (4), /* Device name */ 13 28 2 detailed_status bit (216) unaligned; /* Optional detailed device status */ 13 29 13 30 /* End include file ..... io_syserr_msg.incl.pl1 */ 2947 2948 14 1 14 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 14 3 14 4 dcl dcwp ptr, /* pointer to DCW */ 14 5 tdcwp ptr; /* pointer to TDCW */ 14 6 14 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 14 8 (2 address bit (18), /* address for data transfer */ 14 9 2 char_pos bit (3), /* character position */ 14 10 2 m64 bit (1), /* non-zero for mod 64 address */ 14 11 2 type bit (2), /* DCW type */ 14 12 2 tally bit (12)) unal; /* tally for data transfer */ 14 13 14 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 14 15 (2 address bit (18), /* address to transfer to */ 14 16 2 mbz1 bit (4), 14 17 2 type bit (2), /* should be "10"b for TDCW */ 14 18 2 mbz2 bit (9), 14 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 14 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 14 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 14 22 14 23 /* End of include file ...... iom_dcw.incl.pl1 */ 14 24 2949 2950 15 1 15 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 15 3 15 4 dcl pcwp ptr; /* pointer to PCW */ 15 5 15 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 15 7 (2 command bit (6), /* device command */ 15 8 2 device bit (6), /* device code */ 15 9 2 ext bit (6), /* address extension */ 15 10 2 code bit (3), /* should be "111"b for PCW */ 15 11 2 mask bit (1), /* channel mask bit */ 15 12 2 control bit (2), /* terminate/proceed and marker control bits */ 15 13 2 chan_cmd bit (6), /* type of I/O operation */ 15 14 2 count bit (6), /* record count or control character */ 15 15 2 mbz1 bit (3), 15 16 2 channel bit (6), /* channel number */ 15 17 2 mbz2 bit (27)) unal; 15 18 15 19 dcl idcwp ptr; /* pointer to IDCW */ 15 20 15 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 15 22 (2 command bit (6), /* device command */ 15 23 2 device bit (6), /* device code */ 15 24 2 ext bit (6), /* address extension */ 15 25 2 code bit (3), /* should be "111"b for PCW */ 15 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 15 27 2 control bit (2), /* terminate/proceed and marker control bits */ 15 28 2 chan_cmd bit (6), /* type of I/O operation */ 15 29 2 count bit (6)) unal; /* record count or control character */ 15 30 15 31 /* End include file ...... iom_pcw.incl.pl1 */ 15 32 2951 2952 16 1 /* START OF: oc_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 16 2 16 3 16 4 /****^ HISTORY COMMENTS: 16 5* 1) change(85-11-14,Farley), approve(85-11-14,MCR6979), 16 6* audit(85-11-14,Fawcett), install(86-03-21,MR12.0-1033): 16 7* Add support for MCA 16 8* and IMU. 16 9* 2) change(85-12-03,Farley), approve(85-12-03,MCR7306), 16 10* audit(85-12-03,Fawcett), install(86-03-21,MR12.0-1033): 16 11* Fix bugs found while doing Dipper changes. 16 12* 3) change(85-12-03,Farley), approve(85-12-03,MCR7312), 16 13* audit(85-12-03,Fawcett), install(86-03-21,MR12.0-1033): 16 14* Add BCE MCA lock and unlock. 16 15* 4) change(86-08-07,Farley), approve(86-10-07,MCR7523), 16 16* audit(86-10-03,Fawcett), install(86-10-09,MR12.0-1181): 16 17* Removed timeout_factor, as it is nolonger needed. 16 18* 5) change(89-08-28,Farley), approve(89-09-18,MCR8132), 16 19* audit(89-10-10,WAAnderson), install(89-10-11,MR12.3-1091): 16 20* Increased MAX_IO_LENGTH from 132 to 256 to be consistent with 16 21* oc_trans_output_. This also affects the size of oc_data structures. Trace 16 22* entries have been reduced from 168 to 130. 16 23* END HISTORY COMMENTS */ 16 24 16 25 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 26 /* */ 16 27 /* Purpose: */ 16 28 /* */ 16 29 /* This include file describes the contents of the oc_data segment as well various other */ 16 30 /* static values utilized to interface operator's consoles. Changes to this structure that */ 16 31 /* would affect the size of the oc_data segment will require a change in the size of oc_data */ 16 32 /* as specified in the MST header. This is true because the segment is fabricated at boot */ 16 33 /* time and the size must be known prior to fabrication. */ 16 34 /* */ 16 35 /* This include file was recoded from its original version to add support for multiple */ 16 36 /* consoles. */ 16 37 /* */ 16 38 /* Re-written: 05/01/83 */ 16 39 /* */ 16 40 /* Author: E. A. Ranzenbach (Ranzenbach.Multics@M) */ 16 41 /* Location: System-M. */ 16 42 /* Release: MR10.2 */ 16 43 /* */ 16 44 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 45 /* */ 16 46 /* Modifications: */ 16 47 /* */ 16 48 /* Date Author Reason */ 16 49 /* */ 16 50 /* 840410 Edward A. Ranzenbach Cut size of I/O's to 132 chars... */ 16 51 /* 840427 Edward A. Ranzenbach Added "off" console state..." */ 16 52 /* 850111 Edward A. Ranzenbach Added lost special interrupt protection. */ 16 53 /* 850215 Paul K Farley Add pcw_ignored flag in oc_entry. */ 16 54 /* 850522 Paul K Farley Add MCA lock/unlock info. */ 16 55 /* 850827 Paul K Farley Add more info to event trace. */ 16 56 /* 850913 Paul K Farley Add timeout_factor variable to oc_entry. */ 16 57 /* 851114 Paul K Farley Remove pcw_ignored flag, imu flag will do. */ 16 58 /* */ 16 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 60 16 61 /* format: off */ 16 62 16 63 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 64 /* */ 16 65 /* The DCW list consists of an array of sixteen single word Device Control Words that are used to */ 16 66 /* drive the console devices. These DCWs are listed in their stored order followed by the effects */ 16 67 /* that they produce: */ 16 68 /* */ 16 69 /* 1 = reset status IDCW -> Reset the console channel... */ 16 70 /* 2 = write alert IDCW -> Output a bell character to the console... */ 16 71 /* 3 = write IDCW -> Put console in output mode... */ 16 72 /* 4 = write DCW -> Describes intended outgoing data transfer... */ 16 73 /* 5 = write IDCW - newline -> Put console in output mode... */ 16 74 /* 6 = write DCW - newline -> Describes newline transfer... */ 16 75 /* 7 = read IDCW -> Put the console in input mode... */ 16 76 /* 8 = read DCW -> Describes intended data transfer... */ 16 77 /* 9 = read_unechoed IDCW -> Put the console in unechoed input mode... */ 16 78 /* 10 = read_unechoed DCW -> Describes intended data transfer... */ 16 79 /* 11 = write IDCW - prompt */ 16 80 /* 12 = write DCW - prompt */ 16 81 /* 13 = write IDCW - discard -> Put console in output mode... */ 16 82 /* 14 = write DCW - discard -> Describes discard notice... */ 16 83 /* 15 = lock MCA IDCW -> Disable MCA input from console... */ 16 84 /* 16 = unlock MCA IDCW -> Enable MCA input from console... */ 16 85 /* */ 16 86 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 87 16 88 dcl oc_data$ external; /* so we can find it... */ 16 89 16 90 dcl 1 oc_data aligned based (oc_data_ptr), 16 91 2 lock bit (36), /* global lock for all of oc_data... */ 16 92 2 version char (4), /* should equal oc_data_version... */ 16 93 2 console_cnt fixed bin (17) unaligned, /* number of configured consoles... */ 16 94 2 bootload_console_idx fixed bin (17) unaligned, /* index into opc of bootload console...*/ 16 95 2 flags, 16 96 3 in_service bit (1) unaligned, /* ON => at least one usable console... */ 16 97 3 crash_on_crf bit (1) unaligned, /* ON => crash on recovery failure... */ 16 98 3 mc_io_enabled bit (1) unaligned, /* ON => MC is handling I/O... */ 16 99 3 list_consoles bit (1) unaligned, /* ON => list the console assignments...*/ 16 100 3 printer_on bit (1) unaligned, /* ON => echo read characters... */ 16 101 3 write_q_full bit (1) unaligned, /* ON => the write queue is full... */ 16 102 3 must_have_console bit (1) unaligned, /* ON => we must have a real console... */ 16 103 3 pad_oc_data_flags bit (29) unaligned, /* pad to word boundry... */ 16 104 2 no_lock_flags, /* these flags can be modified without */ 16 105 /* lock protection... */ 16 106 3 got_special_int bit (1) unaligned, /* we could not process this special... */ 16 107 3 pad_no_lock_flags bit (35) unaligned, 16 108 2 pad_misc fixed bin (35), /* to preserve even word alignment... */ 16 109 2 prompt char (8), /* string used to prompt for input... */ 16 110 2 discard_notice char (24), /* displayed at BREAK condition... */ 16 111 2 write_return bit (36), /* newline string = PAD PAD CR NL... */ 16 112 2 abs_addr fixed bin (26), /* absolute address of oc_data$... */ 16 113 2 status_ptr ptr, /* points to IOM status word... */ 16 114 2 io_ptr ptr, /* -> I/O being processed... */ 16 115 2 last_read_queued fixed bin (71), /* last time a READ was queued... */ 16 116 2 last_write_queued fixed bin (71), /* last time a WRITE was queued... */ 16 117 2 last_poll_time fixed bin (71), /* last time of timeout poll by pxss... */ 16 118 2 max_computed_io_time fixed bin (71), /* maximum time an I/O could take... */ 16 119 2 err_event_cid fixed bin (71), /* channel used to signal inop state... */ 16 120 2 err_event_pid bit (36), /* ID of process handling inop states...*/ 16 121 2 reader_process_id bit (36), /* only process allowed to read... */ 16 122 2 next_free_write fixed bin (17) unaligned, /* index of the next free WRITE slot... */ 16 123 2 next_event fixed bin (17) unaligned, /* next event index... */ 16 124 2 stacked_read_cnt fixed bin (17) unaligned, /* READ stack... */ 16 125 2 pad_oc_data bit (18) unaligned, 16 126 2 priority_io like console_io, /* oc_data|42(8)... */ 16 127 2 read_io like console_io, /* oc_data|154(8)... */ 16 128 2 write_queue (WRITE_QUEUE_SIZE) /* oc_data|266(8)... */ 16 129 like console_io, 16 130 2 meters, /* metering cell at oc_data|1406... */ 16 131 3 pushed_read_cnt fixed bin (35), /* count of times read stack was used...*/ 16 132 3 write_q_full_cnt fixed bin (35), /* count of WRITE fails for no room... */ 16 133 3 queued_special_int_count 16 134 fixed bin (35), 16 135 3 pad_meters(7) fixed bin (35), /* for future use... */ 16 136 2 opc (MAX_OPC_CNT) /* oc_data|1420, 1454, 1510, 1544, 1600...*/ 16 137 like oc_entry, /* 1634, 1670, 1724... */ 16 138 2 event (EVENT_QUEUE_SIZE) /* oc_data|1760 thru oc_data|3777... */ 16 139 like oc_event; 16 140 16 141 16 142 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 143 /* */ 16 144 /* The following structure describes a configured console. */ 16 145 /* */ 16 146 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 147 16 148 16 149 dcl 1 oc_entry aligned based (oc_entry_ptr), /* one for each console 34(8) words... */ 16 150 2 name char (4), /* name of this console, i.e. "opca"... */ 16 151 2 opc_idx fixed bin (17) unaligned, /* index of this entry in opc array... */ 16 152 2 model fixed bin (17) unaligned, /* model of the console... */ 16 153 2 flags, 16 154 3 active bit (1) unaligned, /* ON => this entry is in use... */ 16 155 3 assigned bit (1) unaligned, /* ON => io_manager knows device... */ 16 156 3 bootload_console bit (1) unaligned, /* ON => this is the bootload console...*/ 16 157 3 alternate bit (1) unaligned, /* ON => console used if active fails...*/ 16 158 3 inop_device bit (1) unaligned, /* ON => console is inoperative... */ 16 159 3 io_device bit (1) unaligned, /* ON => console is not available to us.*/ 16 160 3 no_device bit (1) unaligned, /* ON => console has been deleted... */ 16 161 3 config_change bit (1) unaligned, /* ON => config change has occurred... */ 16 162 3 prompt bit (1) unaligned, /* ON => prompt for input... */ 16 163 3 pcw_io bit (1) unaligned, /* ON => use PCW's instead of IDCW's... */ 16 164 3 io_in_progress bit (1) unaligned, /* ON => I/O op is in progress... */ 16 165 3 got_special_int bit (1) unaligned, /* ON => RE(TURN QUEST) key was hit... */ 16 166 3 oper_request bit (1) unaligned, /* ON => operator has hit request key...*/ 16 167 3 discard bit (1) unaligned, /* ON => discard output... */ 16 168 3 discarded bit (1) unaligned, /* ON => (output discarded) printed... */ 16 169 3 read_unechoed_option /* ON => read_unechoed option installed.*/ 16 170 bit (1) unaligned, /* option must not be installed... */ 16 171 3 imu bit (1) unaligned, /* ON => console located in an IMU... */ 16 172 3 pad_flag bit (19) unaligned, /* pad to word boundry... */ 16 173 2 channel char (8), /* name of this console's channel... */ 16 174 2 device_idx fixed bin (35), /* operator's console device id... */ 16 175 2 line_leng fixed bin (17) unaligned, /* line length of the console... */ 16 176 2 dcw_list_idx fixed bin (17) unaligned, /* DCW list in progess... */ 16 177 2 retry_cnt fixed bin (17) unaligned, /* times I/O op has been retried... */ 16 178 2 RESERVED_PAD fixed bin (17) unaligned, /* pad to oc_entry + 10(8)... */ 16 179 2 io_time fixed bin (71), /* time last I/O began... */ 16 180 2 status_word bit (36), /* last valid status word received... */ 16 181 2 dcw_list (16) bit (36), /* DCWs used to drive the console... */ 16 182 2 pad_oc_entry_end bit (36); /* pad to 34(8) words... */ 16 183 16 184 16 185 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 186 /* */ 16 187 /* This is the format of a console I/O. A pointer to this structure is passed to us by the process */ 16 188 /* wishing to perform a console I/O. The caller will fill in the following things for a read I/O: */ 16 189 /* */ 16 190 /* console_io.event_chan - Will be an event channel to wake the user on when the */ 16 191 /* I/O completes. */ 16 192 /* */ 16 193 /* console_io.read - Set to "1"b indicating a read. */ 16 194 /* */ 16 195 /* For a write the following information is supplied: */ 16 196 /* */ 16 197 /* console_io.alert - Set to "1"b if the console alarm is to be on for the */ 16 198 /* write. */ 16 199 /* */ 16 200 /* console_io.read - Set to "0"b. */ 16 201 /* */ 16 202 /* console_io.sequence_no - Set to the syserr sequence number for syserr calls. */ 16 203 /* */ 16 204 /* console_io.leng - Set to the word length of the message to be written. */ 16 205 /* */ 16 206 /* console_io.text - Set to the text of the message. */ 16 207 /* */ 16 208 /* In all cases ocdcm_ will properly reset those items not necessary to the type of I/O being */ 16 209 /* performed. */ 16 210 /* */ 16 211 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 212 16 213 dcl 1 console_io aligned based (console_io_ptr), /* format of a I/O, 112(8) words... */ 16 214 2 time_queued fixed bin (71), /* 0 indicates a free entry... */ 16 215 2 event_chan fixed bin (71), /* to send wakeup to when I/O completes.*/ 16 216 2 process_id bit (36), /* of the caller... */ 16 217 2 console char (4), /* name of the console the I/O went to..*/ 16 218 2 flags, /* start at console_io + 6(8)... */ 16 219 3 alert bit (1) unaligned, /* ON => ring bell first... */ 16 220 3 read bit (1) unaligned, /* ON => this is a read request... */ 16 221 3 alerted bit (1) unaligned, /* ON => we have successfully alerted...*/ 16 222 3 prompted bit (1) unaligned, /* ON => we have successfully prompted..*/ 16 223 3 in_progress bit (1) unaligned, /* ON => I/O has been started... */ 16 224 3 completed bit (1) unaligned, /* ON => the I/O has completed... */ 16 225 3 retry_reset bit (1) unaligned, /* ON => I/O was reset by retry_io... */ 16 226 3 pad_flag bit (29) unaligned, /* pad to word boundry... */ 16 227 2 sequence_no fixed bin (35), /* syserr sequence number... */ 16 228 2 leng fixed bin (17) unaligned, /* in words of the I/O... */ 16 229 2 MBZ fixed bin (17) unaligned, /* reserved for future use... */ 16 230 2 pad_text fixed bin (35), /* I/O must start on even word boundry..*/ 16 231 2 text char (MAX_IO_LENGTH); /* the actual I/O... */ 16 232 16 233 16 234 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 235 /* */ 16 236 /* The following structure is used to log an event occurring in in the console software. */ 16 237 /* */ 16 238 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 239 16 240 16 241 dcl 1 oc_event aligned based (oc_event_ptr), /* each event is 10(8) words long... */ 16 242 2 time fixed bin (71), /* time event took place... */ 16 243 2 opc_name char (4), /* bootload console at time of event... */ 16 244 2 opc_flags like oc_entry.flags, /* bootload console flags... */ 16 245 2 process_id bit (36), /* process logging the event... */ 16 246 2 event_number fixed bin (35), /* number of the event being logged... */ 16 247 2 event_io_ptr ptr; /* ptr to I/O in progress during event..*/ 16 248 16 249 dcl ( /* indices for ease of use... */ 16 250 RESET_DCW init (1), 16 251 ALERT_DCW init (2), 16 252 WRITE_DCW init (3), 16 253 NEWLINE_DCW init (5), 16 254 READ_DCW init (7), 16 255 READ_UNECHOED_DCW init (9), 16 256 PROMPT_DCW init (11), 16 257 DISCARD_DCW init (13), 16 258 LOCK_MCA_DCW init (15), 16 259 UNLOCK_MCA_DCW init (16) 16 260 ) fixed bin (17) 16 261 internal static options (constant); 16 262 dcl ( /* list of event numbers... */ 16 263 INIT_OC_DATA init (1), 16 264 GOT_SPECIAL_INT init (2), 16 265 PRIORITY_OUTPUT init (3), 16 266 QUEUED_READ init (4), 16 267 QUEUED_WRITE init (5), 16 268 STARTED_READ init (6), 16 269 STARTED_UNECHOED_READ init (7), 16 270 STARTED_WRITE init (8), 16 271 RESET_CHANNEL init (9), 16 272 SENT_ALERT init (10), 16 273 SENT_NEWLINE init (11), 16 274 SENT_PROMPT init (12), 16 275 TERMINATED_RESET init (13), 16 276 TERMINATED_ALERT init (14), 16 277 TERMINATED_NEWLINE init (15), 16 278 TERMINATED_PROMPT init (16), 16 279 TERMINATED_READ init (17), 16 280 TERMINATED_WRITE init (18), 16 281 SENT_WAKEUP init (19), 16 282 READ_PICKUP init (20), 16 283 PUSHED_READ init (21), 16 284 POPPED_READ init (22), 16 285 READ_NOT_IN_PROGRESS init (23), 16 286 LOGGED_ERROR init (24), 16 287 IO_TIMEOUT init (25), 16 288 RETRY_IO init (26), 16 289 GOT_LOCK init (27), 16 290 FREED_LOCK init (28), 16 291 DISCARDED_OUTPUT init (29), 16 292 SENT_MC_IO init (30), 16 293 SENT_MC_PRIORITY_IO init (31), 16 294 MC_IO_PICKUP init (32), 16 295 MC_IO_FAILURE init (33), 16 296 LOCK_MCA_IO init (34), 16 297 UNLOCK_MCA_IO init (35), 16 298 TERMINATED_MCA_LOCK init (36), 16 299 TERMINATED_MCA_UNLOCK init (37) 16 300 ) fixed bin (35) 16 301 internal static options (constant); 16 302 16 303 dcl oc_data_version char (4) init ("1.3") /* for general information... */ 16 304 static internal options (constant); 16 305 16 306 dcl ( 16 307 oc_data_ptr, 16 308 oc_entry_ptr, 16 309 oc_event_ptr, 16 310 console_io_ptr 16 311 ) ptr; 16 312 16 313 dcl ( 16 314 MAX_OPC_CNT init (8), /* maximum number of consoles... */ 16 315 MAX_RETRIES init (2), /* we retry I/O ops this many times... */ 16 316 EVENT_QUEUE_SIZE init (130), /* use up the rest of the 2 pages... */ 16 317 WRITE_QUEUE_SIZE init (8) /* number of queued writes allowed... */ 16 318 ) 16 319 fixed bin (17) 16 320 internal static options (constant); 16 321 16 322 dcl MAX_IMU_IO_TIME fixed bin (17) /* longest possible IMU I/O time... */ 16 323 internal static options (constant) 16 324 init (150); /* 2 minutes 30 seconds... */ 16 325 16 326 dcl MAX_IO_TIME (16) fixed bin (17) /* maximum time the associated I/O */ 16 327 internal static options (constant) /* operation is allowed to take in */ 16 328 init /* seconds... */ 16 329 ( 16 330 1, /* RESET_STATUS... */ 16 331 1, /* WRITE ALERT... */ 16 332 10, /* WRITE DATA... */ 16 333 0, /* DUMMY for WRITE DATA DCW... */ 16 334 2, /* WRITE CR, NL... */ 16 335 0, /* DUMMY for WRITE CR, NL DCW... */ 16 336 90, /* READ DATA... */ 16 337 0, /* DUMMY for READ DATA DCW... */ 16 338 90, /* READ_UNECHOED DATA... */ 16 339 0, /* DUMMY for READ_UNECHOED DATA DCW... */ 16 340 1, /* WRITE PROMPT... */ 16 341 0, /* DUMMY for WRITE PROMPT DCW... */ 16 342 10, /* DISCARD DCW... */ 16 343 0, /* DUMMY for DISCARD DCW... */ 16 344 30, /* LOCK MCA IO... */ 16 345 30 /* UNLOCK MCA IO... */ 16 346 ); 16 347 16 348 dcl MAX_IO_LENGTH fixed bin (17) 16 349 internal static options (constant) 16 350 init (256); /* in characters... */ 16 351 dcl MAX_MAX_IO_TIME fixed bin (17) /* longest possible I/O time... */ 16 352 internal static options (constant) 16 353 init (150); /* should be the same as the longest... */ 16 354 16 355 16 356 /* END OF: oc_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 2953 2954 17 1 /* START OF: opc_reconfig_options.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 17 2 17 3 17 4 /****^ HISTORY COMMENTS: 17 5* 1) change(85-09-09,Farley), approve(85-12-03,MCR7312), 17 6* audit(85-11-14,Fawcett), install(86-03-21,MR12.0-1033): 17 7* Add Lock and unlock 17 8* MCA. 17 9* 2) change(85-12-03,Farley), approve(85-12-03,MCR7306), 17 10* audit(85-12-03,Fawcett), install(86-03-21,MR12.0-1033): 17 11* Fix bugs found while doing Dipper changes. 17 12* 3) change(85-12-03,Farley), approve(85-12-03,MCR7312), 17 13* audit(85-12-03,Fawcett), install(86-03-21,MR12.0-1033): 17 14* Add BCE MCA lock and unlock. 17 15* END HISTORY COMMENTS */ 17 16 17 17 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 18 /* */ 17 19 /* Purpose: */ 17 20 /* */ 17 21 /* This include file contains the possible operator console reconfiguration options. These are */ 17 22 /* passed to hphcs_$ocdcm_reconfigure to effect explicit console reconfiguration. */ 17 23 /* */ 17 24 /* Initial Coding: 06/18/83 */ 17 25 /* */ 17 26 /* Author: E. A. Ranzenbach (Ranzenbach.Multics@M) */ 17 27 /* Location: System-M. */ 17 28 /* Release: MR10.2 */ 17 29 /* */ 17 30 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 31 /* */ 17 32 /* Modifications: */ 17 33 /* */ 17 34 /* Date Author Reason */ 17 35 /* */ 17 36 /* 840420 E. A. Ranzenbach Added MAKE_UNAVAILABLE option. */ 17 37 /* 850205 E. A. Ranzenbach Added SEND_MC_IO option. */ 17 38 /* 850520 Paul K Farley Added LOCK_MCA_INPUT option. */ 17 39 /* Added UNLOCK_MCA_INPUT option. */ 17 40 /* */ 17 41 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 42 17 43 /* format: off */ 17 44 17 45 dcl ( 17 46 NOP init (0), /* just to make sure... */ 17 47 ENABLE_CONSOLE_SERVICE init (1), /* allow syserr and normal I/O... */ 17 48 SUSPEND_CONSOLE_SERVICE init (2), /* the opposite of ENABLE... */ 17 49 MAKE_BOOTLOAD_CONSOLE init (3), /* make the bootload console... */ 17 50 MAKE_ALTERNATE_CONSOLE init (4), /* add console to alternate list... */ 17 51 MAKE_IO_DEVICE init (5), /* release the console to IOI... */ 17 52 MAKE_INOP_DEVICE init (6), /* release the console to IOI... */ 17 53 RESET_CONSOLE init (7), /* reset the bootload console... */ 17 54 CRASH_ON_CRF init (8), /* CRASH on console recovery failure... */ 17 55 RUN_ON_CRF init (9), /* RUN on console recovery failure... */ 17 56 MAKE_UNAVAILABLE init (10), /* put console into the OFF state... */ 17 57 SEND_MC_IO init (11), /* forward all I/O to the MC console... */ 17 58 LOCK_MCA_INPUT init (12), /* Disable input path from console to MCA(in IMU)... */ 17 59 UNLOCK_MCA_INPUT init (13) /* Enable input path from console to MCA(in IMU)... */ 17 60 ) 17 61 fixed bin (17) 17 62 internal static options (constant); 17 63 17 64 /* END OF: opc_reconfig_options.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 2955 2956 18 1 /* BEGIN INCLUDE FILE .. syserr_binary_def.incl.pl1 */ 18 2 18 3 /* This include file has an ALM version, keep 'em in sync. */ 18 4 18 5 /* format: off */ 18 6 18 7 /* Modified January 1984 by Paul Farley to add an array of entry values 18 8* to be examined by display_cpu_error. */ 18 9 /* Modified October 1984 by EJ Sharpe to include SB_audit_message */ 18 10 /* Modified January 1985 by EJ Sharpe for SB_char_data_classes */ 18 11 /* Modified 1985-01-25, BIM: added ring alarm audit support. */ 18 12 /* Modified 1985-02-20, EJ Sharpe: added SB_ibm3270_mde, syserr_binary_(seg vol)damage_class, 18 13* also changed some codes to "SB_unused_NN" - see line comments */ 18 14 18 15 /* In the future, these will be the only constants needed in this include 18 16*file. They are the binary data class strings for messages in the new format 18 17*syserr logs. The names are all of the form SB_ZZZZZZZ_data_class where 18 18*ZZZZZZZ is the value of the data class string. Message expanders are named 18 19*expand_ZZZZZZZ_msg_ and are referenced by the log perusal tools. */ 18 20 18 21 dcl ( /* include file name */ 18 22 SB_io_status_data_class init ("io_status"), /* io_syserr_msg */ 18 23 SB_hwfault_data_class init ("hwfault"), /* syserr_fault_msg */ 18 24 SB_mos_data_class init ("mos"), /* scr */ 18 25 SB_segdamage_data_class init ("segdamage"), /* segdamage_msg */ 18 26 SB_voldamage_data_class init ("voldamage"), /* segdamage_msg (first two words) */ 18 27 SB_mdc_del_uidpath_data_class init ("mdc_del_uidpath"), /* none - 16 word UID path */ 18 28 SB_mmdam_data_class init ("mmdam"), /* syserr_mmdam_msg */ 18 29 SB_mpc_poll_data_class init ("mpc_poll"), /* poll_mpc_data */ 18 30 SB_fnp_poll_data_class init ("fnp_poll"), /* poll_fnp_data */ 18 31 SB_config_deck_data_class init ("config_deck"), /* config_deck */ 18 32 SB_vtoce_data_class init ("vtoce"), /* vtoce */ 18 33 SB_access_audit_data_class init ("access_audit"), /* access_audit_bin_header */ 18 34 SB_ibm3270_mde_data_class init ("ibm3270_mde") /* ibm3270_mpx_data */ 18 35 ) static internal char (16) varying options (constant); 18 36 18 37 18 38 /************************ 18 39*Once the syserr$binary is replaced with something that takes real data classes 18 40*and all system modules and tools are upgraded to use the new interface, the 18 41*rest of this include file may be discarded. 18 42*************************/ 18 43 18 44 /* The limit of 36 is arbitrary- there is no reason that it can not be 18 45* extended at any time. */ 18 46 18 47 dcl ( 18 48 SB_disk_err init (1), SBL_disk_err init (5), 18 49 SB_hw_fault init (2), SBL_hw_fault init (176), 18 50 SB_io_err init (3), SBL_io_err init (5), 18 51 SB_unused_4 init (4), SBL_unused_4 init (1), /* was "mos_poll" (mos poll time) */ 18 52 SB_mos_err init (5), SBL_mos_err init (2), /* mos memory error data */ 18 53 SB_unused_6 init (6), SBL_unused_6 init (1), /* was "bulk_status" (bulk dcb status) */ 18 54 SB_unused_7 init (7), SBL_unused_7 init (1), /* was "bulk_csb" (bulk csb status) */ 18 55 SB_unused_8 init (8), SBL_unused_8 init (3), /* was "free_st_1" */ 18 56 SB_unused_9 init (9), SBL_unused_9 init (2), /* was "free_st_2" */ 18 57 SB_unused_10 init (10), SBL_unused_10 init (21), /* was "unpr_add" */ 18 58 SB_zerpag init (11), SBL_zerpag init (20), 18 59 SB_unused_12 init (12), SBL_unused_12 init (20), /* was "unpr_add" */ 18 60 SB_vtoc_salv_dam init (13), SBL_vtoc_salv_dam init (20), 18 61 SB_unused_14 init (14), SBL_unused_14 init (20), /* was "page_rw_err" */ 18 62 SB_unused_15 init (15), SBL_unused_15 init (3), /* was "ruad" */ 18 63 SB_random_segdamage init (16), SBL_random_segdamage init (20), 18 64 SB_read_nc init (17), SBL_read_nc init (2), 18 65 SB_unused_18 init (18), SBL_unused_18 init (2), /* was "vtoc_err" */ 18 66 SB_mdc_del_uidpath init (19), SBL_mdc_del_uidpath init (16), 18 67 SB_ocdcm_err init (20), SBL_ocdcm_err init (5), 18 68 SB_mmdam init (21), SBL_mmdam init (2), 18 69 SB_verify_lock init (22), SBL_verify_lock init (176), 18 70 SB_io_err_detail init (23), SBL_io_err_detail init (11), 18 71 SB_mpc_poll init (24), SBL_mpc_poll init (256) /* max */, 18 72 SB_fnp_poll init (25), SBL_fnp_poll init (256) /* max */, 18 73 SB_config_deck init (26), SBL_config_deck init (256) /* 16 cards at 16 words */, 18 74 SB_vtoce init (27), SBL_vtoce init (192), /* 1 VTOCE */ 18 75 SB_access_audit init (28), SBL_access_audit init (256), /* max */ 18 76 SB_ibm3270_mde init (35), SBL_ibm3270_mde init (256), /* max */ 18 77 SB_end_of_table init (36), SBL_end_of_table init (1) 18 78 ) internal static options (constant) fixed bin; 18 79 18 80 18 81 /* The following array is a mapping of the old syserr$binary codes into the 18 82*new data classes for MR11. It is primarily used by syserr_copy to translate 18 83*the binary data codes stored in the wired syserr log (see above) into the data 18 84*classes needed by the ring-0 paged syserr log which is a new format log. It 18 85*is also used by syserr_log_util_ to translate the data classes back into the 18 86*corresponding binary code (for tools not yet upgraded to deal with the new 18 87*format log messages). */ 18 88 18 89 dcl SB_char_data_classes (36) char (16) varying internal static options (constant) 18 90 init ( "io_status", /* 1 */ 18 91 "hwfault", /* 2 */ 18 92 "io_status", /* 3 */ 18 93 "unused_4", /* 4 */ 18 94 "mos", /* 5 */ 18 95 18 96 "unused_6", /* 6 */ 18 97 "unused_7", /* 7 */ 18 98 "unused_8", /* 8 */ 18 99 "unused_9", /* 9 */ 18 100 "unused_10", /* 10 */ 18 101 18 102 "segdamage", /* 11 */ 18 103 "unused_12", /* 12 */ 18 104 "segdamage", /* 13 */ 18 105 "unused_14", /* 14 */ 18 106 "unused_15", /* 15 */ 18 107 18 108 "segdamage", /* 16 */ 18 109 "voldamage", /* 17 */ 18 110 "unused_18", /* 18 */ 18 111 "mdc_del_uidpath", /* 19 */ 18 112 "io_status", /* 20 */ 18 113 18 114 "mmdam", /* 21 */ 18 115 "hwfault", /* 22 */ 18 116 "io_status", /* 23 */ 18 117 "mpc_poll", /* 24 */ 18 118 "fnp_poll", /* 25 */ 18 119 18 120 "config_deck", /* 26 */ 18 121 "vtoce", /* 27 */ 18 122 "access_audit", /* 28 */ 18 123 "unused_29", /* 29 */ 18 124 "unused_30", /* 30 */ 18 125 "unused_31", /* 31 */ 18 126 "unused_32", /* 32 */ 18 127 "unused_33", /* 33 */ 18 128 "unused_34", /* 34 */ 18 129 "ibm3270_mde", /* 35 */ 18 130 "unused_36" /* 36 */ 18 131 ); 18 132 18 133 18 134 /* format: on */ 18 135 18 136 /* These constants are used by various tools which analyze syserr messages and 18 137*still call the old interface "syserr_log_util_". */ 18 138 18 139 dcl syserr_binary_mos_mask init ("060000000000"b3) bit (36) static options (constant); 18 140 dcl syserr_binary_seg_damage_mask init ("000374000000"b3) bit (36) static options (constant); 18 141 dcl syserr_binary_vol_damage_mask init ("003413000000"b3) bit (36) static options (constant); 18 142 dcl syserr_binary_address_damage_mask init ("002010000000"b3) bit (36) static options (constant); 18 143 18 144 dcl display_cpu_error_binary_defs (2) init ( 18 145 2, /** SB_hw_fault */ 18 146 22 /** SB_verify_lock */ 18 147 ) internal static options (constant) fixed bin; 18 148 18 149 /* END INCLUDE FILE syserr_binary_def.incl.pl1 */ 2957 2958 19 1 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 19 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 19 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 19 4 19 5 /* This include file has an ALM version. Keep 'em in sync! */ 19 6 19 7 dcl ( 19 8 19 9 /* The following constants define the message action codes. This indicates 19 10*how a message is to be handled. */ 19 11 19 12 SYSERR_CRASH_SYSTEM init (1), 19 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 19 14 19 15 SYSERR_TERMINATE_PROCESS init (2), 19 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 19 17 19 18 SYSERR_PRINT_WITH_ALARM init (3), 19 19 BEEP init (3), /* Beep and print the message on the console. */ 19 20 19 21 SYSERR_PRINT_ON_CONSOLE init (0), 19 22 ANNOUNCE init (0), /* Just print the message on the console. */ 19 23 19 24 SYSERR_LOG_OR_PRINT init (4), 19 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 19 26 19 27 SYSERR_LOG_OR_DISCARD init (5), 19 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 19 29 19 30 19 31 /* The following constants are added to the normal severities to indicate 19 32*different sorting classes of messages. */ 19 33 19 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 19 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 19 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 19 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 19 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 19 39 ) fixed bin internal static options (constant); 19 40 19 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 2959 2960 20 1 /* BEGIN INCLUDE FILE syserr_data.incl.pl1 */ 20 2 20 3 /* Created by Bill Silver on 01/03/73. */ 20 4 /* Modified September 1975 by Larry Johnson to add binary data */ 20 5 /* Modified March 1976 by Steve Webber for use with cds */ 20 6 /* Modified 1985-01-21 by EJ Sharpe: added wmess.process_id */ 20 7 /* Modified 1985-02-18 by Keith Loepere to break out headers. */ 20 8 20 9 /* This include file defines the syserr and log areas found in syserr_data.cds 20 10* There is one lock that coordinates the use of all the data found in 20 11* syserr_data.cds. NOTE, if this include file changes, syserr_data.cds 20 12* may also have to be changed. */ 20 13 20 14 dcl syserr_data$syserr_area char (1) aligned external, 20 15 syserr_data$wired_log_area char (1) aligned external; 20 16 20 17 dcl sd_ptr ptr, /* Pointer to beginning of syserr_area. */ 20 18 wlog_ptr ptr, /* Pointer to beginning of wired_log_area. */ 20 19 wmess_ptr ptr; /* Pointer to a message entry in the wired log. */ 20 20 20 21 dcl 1 sd based (sd_ptr) aligned, /* Overlay of syserr_data$syserr_area. */ 20 22 2 lock bit (36), /* Locks all the data in syserr_data. */ 20 23 2 log_flag bit (1) unal, /* ON => logging mechanism enabled. */ 20 24 2 char_type_flag bit (1) unal, /* ON => ASCII, OFF => BCD. */ 20 25 2 ocdcm_init_flag bit (1) unal, /* ON => ocdcm_ has been initialized. */ 20 26 2 pad bit (33) unal, 20 27 2 prev_text_written char (80); /* Text of last message written */ 20 28 20 29 dcl 1 wlog based (wlog_ptr) aligned, /* Overlay of syserr_data$wired_log_area. */ 20 30 2 head like wlog_header, /* Wired log header. */ 20 31 2 buffer (wlog.head.bsize) bit (36); /* Wired log buffer. */ 20 32 20 33 dcl 1 wlog_header based aligned, /* WIRED LOG HEADER */ 20 34 2 bsize fixed bin, /* Size of the wired log buffer in words. 20 35* Defined in syserr_data.cds. */ 20 36 2 count fixed bin, /* Num of message entries in wired log. */ 20 37 2 slog_ptr ptr, /* Pointer to the paged log segment: syserr_log. */ 20 38 2 seq_num fixed bin (35), /* Sequence number of last message logged. */ 20 39 2 next bit (18) unal, /* Offset relative to base syserr_data */ 20 40 /* Where next entry will go in wired log. */ 20 41 2 pad bit (18) unal; 20 42 20 43 20 44 /* This is an overlay of a message entry that goes into the wired log. Each message 20 45* entry corresponds to one syserr message. */ 20 46 20 47 dcl 1 wmess based (wmess_ptr) aligned, 20 48 2 header aligned like wmess_header, 20 49 2 text char (0 refer (wmess.text_len)), /* Text of expanded message - kept in ASCII. */ 20 50 2 data (0 refer (wmess.data_size)) bit (36); /* Binary data area */ 20 51 20 52 dcl 1 wmess_header based aligned, 20 53 2 seq_num fixed bin (35), /* Sequence number of this message. */ 20 54 2 time fixed bin (71) unal, /* Time message logged at */ 20 55 2 code fixed bin (11) unal, /* Syserr code associated with this message. */ 20 56 2 text_len fixed bin (11) unal, /* Length of message text in ASCII characters. */ 20 57 2 data_size fixed bin (11) unal, /* Size of binary data */ 20 58 2 data_code fixed bin (11) unal, /* Data code */ 20 59 2 pad bit (24) unal, 20 60 2 process_id bit (36); /* ID of process which wrote message */ 20 61 20 62 /* END INCLUDE FILE syserr_data.incl.pl1 */ 2961 2962 2963 /* BEGIN MESSAGE DOCUMENTATION 2964* 2965* 2966*Message: 2967*ocdcm_ (init_all_consoles): Assigned console OPCx as TYPE device. 2968* 2969*S: $announce 2970* 2971*T: $init 2972* 2973*M: This message appears as the system configures consoles found 2974*in the config file. This message will only appear if the CLST 2975*parameter has been specified on the PARM card. Values for TYPE 2976*are "bootload", "alternate", "I/O", "inoperative" and "off". 2977* 2978*A: $ignore 2979* 2980*Message: 2981*ocdcm_ (init_all_consoles): Changing state of OPCx to alt. 2982* 2983*S: $beep 2984* 2985*T: $init 2986* 2987*M: During console initialization more than one console was found 2988*to have a state of "on". Since only one bootload console is 2989*allowed the software reconfigures additional "on" consoles as 2990*alternates. 2991* 2992*A: $config 2993* 2994*Message: 2995*ocdcm_ (init_all_consoles): Unknown model, NNNN, specified for OPCx. 2996* It will not be configured. 2997* 2998*S: $beep 2999* 3000*T: $init 3001* 3002*M: The console model number specified in the config file is not 3003*supported by this software and will not be configured. 3004* 3005*A: $config 3006* 3007*Message: 3008*ocdcm_ (init_all_consoles): Illegal console name (NAME) specified. 3009*It will be ignored. 3010* 3011*S: $beep 3012* 3013*T: $init 3014* 3015*M: An illegal console name was found. Console names must be values 3016*of "opca" through "opcz". 3017* 3018*A: $config 3019* 3020*Message: 3021*ocdcm_ (init_all_consoles): Invalid state of STATE for console OPCx. 3022*ocdcm_ (init_all_consoles): This console will not be configured. 3023* 3024*S: $beep 3025* 3026*T: $init 3027* 3028*M: An unrecognizable state was found for the specified console. 3029*That console will not be configured. Only valid states are 3030*"on", "alt", "io", "inop" and "off". 3031* 3032*A: $config 3033* 3034*Message: 3035*ocdcm_ (init_all_consoles): Maximum console count exceeded. 3036*ocdcm_ (init_all_consoles): Additional consoles will not be configured. 3037* 3038*S: $beep 3039* 3040*T: $init 3041* 3042*M: Too many consoles have been specified in the config file. Only 3043*the maximum number allowable will be configured. 3044* 3045*A: $config 3046* 3047*Message: 3048*ocdcm_ (reconfigure): Assigned OPCx as an alternate console for PERSON.PROJ.T. 3049* 3050*S: $beep 3051* 3052*T: $run 3053* 3054*M: The specified process has configured the specified console as an 3055*alternate. 3056* 3057*A: $ignore 3058* 3059*Message: 3060*ocdcm_ (reconfigure): Assigned OPCx as the bootload console for PERSON.PROJ.T. 3061* 3062*S: $beep 3063* 3064*T: $run 3065* 3066*M: The specified process has configured the specified console as 3067*the bootload console. The bootload console at the time of the 3068*reconfiguration is reconfigured as an alternate device. 3069* 3070*A: $ignore 3071* 3072*Message: 3073*ocdcm_ (reconfigure): Consigned OPCx as an I/O device for PERSON.PROJ.T. 3074* 3075*S: $beep 3076* 3077*T: $run 3078* 3079*M: The specified process has configured the specified console as an 3080*I/O device. 3081* 3082*A: $ignore 3083* 3084*Message: 3085*ocdcm_ (reconfigure): Marked OPCx as an inoperative device for PERSON.PROJ.T. 3086* 3087*S: $beep 3088* 3089*T: $run 3090* 3091*M: The specified process has configured the specified console as an 3092*inoperative device. 3093* 3094*A: $ignore 3095* 3096*Message: 3097*ocdcm_ (reconfigure): Timeout executing MCA LOCK on OPCx for PERSON.PROJ.T. 3098* 3099*S: $log 3100* 3101*T: $run 3102* 3103*M: The I/O to LOCK the MCA interface through OPCx did not complete 3104*within a given time. 3105* 3106*A: This is most likely a hardware failure of the console channel adapter 3107*or the IMU central. 3108* 3109*Message: 3110*ocdcm_ (reconfigure): Timeout executing MCA(nn) UNLOCK on OPCx for PERSON.PROJ.T. 3111* 3112*S: $log 3113* 3114*T: $run 3115* 3116*M: The I/O to UNLOCK the MCA(nn) interface through OPCx did not 3117*complete within a given time. 3118* 3119*A: This is most likely a hardware failure of the console channel adapter 3120*or the IMU central. 3121* 3122*Message: 3123*ocdcm_ (reconfigure): MCA input through OPCx, disabled by PERSON.PROJ.T. 3124* 3125*S: $log 3126* 3127*T: $run 3128* 3129*M: The input to the MCA (Maint. Channel Adapter) in the IMU 3130*(Interrupt Multiplexer Unit) from special keyboard sequences 3131*has been LOCKed (disabled). Input to the MCA can now only come 3132*from the on-line, Multics controlled, channel 03 interface. 3133* 3134*A: $ignore 3135* 3136*Message: 3137*ocdcm_ (reconfigure): MCA(nn) input through OPCx, enabled by PERSON.PROJ.T. 3138* 3139*S: $log 3140* 3141*T: $run 3142* 3143*M: The input to MCA(nn) via special console keyboard sequences 3144*has been enabled (UNLOCKed). 3145* 3146*A: $ignore 3147* 3148*Message: 3149*ocdcm_ (reset_console): Reset bootload console for PERSON.PROJ.T. 3150* 3151*S: $beep 3152* 3153*T: $run 3154* 3155*M: The bootload console has been reset by the specified process. 3156* 3157*A: $ignore 3158* 3159*Message: 3160*ocdcm_ (init_all_consoles): Invalid channel specified for OPCx. 3161* 3162*S: $crash 3163* 3164*T: $init 3165* 3166*M: The console channel as specified in the config file for the 3167*specified device is illegal. 3168* 3169*A: $config 3170* 3171*Message: 3172*ocdcm_ (init_all_consoles): Missing prph opc card. 3173* 3174*S: $crash 3175* 3176*T: $init 3177* 3178*M: At least one PRPH OPCx card must be in the config file. 3179* 3180*A: $config 3181* 3182*Message: 3183*ocdcm_ (init_all_consoles): No active console configured. 3184* 3185*S: $crash 3186* 3187*T: $init 3188* 3189*M: None of the consoles specified in the config file has a state 3190*of "on". 3191* 3192*A: $config 3193* 3194*Message: 3195*ocdcm_ (bump_io_to_mc): Message Coordinator failure. 3196* 3197*S: $log 3198* 3199*T: $run 3200* 3201*M: The Message Coordinator is no longer able to handle console 3202*traffic. 3203* 3204*A: Attempt to get an active console online as soon as possible 3205*and reset the Message Coordinator. 3206* 3207*Message: 3208*ocdcm_ (console_recovery): Console failed, assignment of alternate OPCx failed. 3209* 3210*S: $log 3211* 3212*T: $run 3213* 3214*M: The console software detected a failure of the bootload console 3215*and found an alternate to utilize. However, when it tried to 3216*attach the alternate it too was found to be inoperative. The 3217*search continues for a usable console. 3218* 3219*A: Attempt to determine why the alternate console failed to 3220*come online. If it can be repaired configure it with the 3221*set_system_console command from a highly priviliged process. 3222* 3223*Message: 3224*ocdcm_ (console_recovery): Console inoperative, alternate OPCx assigned. 3225* 3226*S: $log 3227* 3228*T: $run 3229* 3230*M: The software has detected a bootload console failure and has 3231*assigned the specifed alternate to take over. The inoperative 3232*console is flagged as such. 3233* 3234*A: $notify 3235* 3236*Message: 3237*ocdcm_ (console_recovery): Console inoperative, no alternates available. 3238* 3239*S: $log 3240* 3241*T: $run 3242* 3243*M: The software dected failure of the bootload console, but no 3244*alternates are configured. It will direct subsequent console 3245*traffic to the Message Coordinator. 3246* 3247*A: Attempt to get a running console online via the set_system_console 3248*command as soon as possible. 3249* 3250*Message: 3251*ocdcm_ (console_recovery): Console inoperative, no alternates, no MC. 3252* 3253*S: $log 3254* 3255*T: $run 3256* 3257*M: The software detected failure of the bootload console, but no 3258*alternates are configured and the Message Coordinator is not 3259*functioning. All subsequent console traffic will be sent to 3260*the syserr log. 3261* 3262*A: Attempt to get a running console online via the set_system_console 3263*command as soon as possible. 3264* 3265*Message: 3266*ocdcm_ (esd_reset): No active consoles configured. 3267* 3268*S: $log 3269* 3270*T: $run 3271* 3272*M: During ESD there were no consoles in service. ESD messages 3273*will be sent to the syserr log. 3274* 3275*A: $notify 3276* 3277*Message: 3278*ocdcm_ (interrupt_handler): System Fault. 3279* 3280*S: $log 3281* 3282*T: $run 3283* 3284*M: A system fault interrupt was received from the IOM. The fault 3285*is logged and ignored. 3286* 3287*A: $notify 3288* 3289*Message: 3290*ocdcm_ (log_console_error): I/O [timeout] error on OPCx; status = SSSSSS 3291* oc_data flags: FLAGS 3292* oc_entry flags: FLAGS 3293* console_io flags: FLAGS 3294* 3295*S: $log 3296* 3297*T: $run 3298* 3299*M: An I/O error occurred. The status is the returned IOM status 3300*for the I/O in question and the flags denote the state of the 3301*oc_data, the console and the I/O, respectively, at the time of 3302*the error. The flag values are interpreted. 3303* 3304*A: Too many of these errors will result in the invocation of 3305*console recovery. Have the console fixed. 3306* 3307*Message: 3308*ocdcm_ (bump_io_to_mc): Console recovery failure. 3309* 3310*S: $crash 3311* 3312*T: $run 3313* 3314*M: The software detected Message Coordinator failure while the 3315*Message Coordinator was being used in place of a functioning 3316*console. Since the CCRF parameter was specified the system 3317*crashed. 3318* 3319*A: $inform 3320*$inform_sa 3321* 3322*Message: 3323*ocdcm_ (console_recovery): Console recovery failure. 3324* 3325*S: $crash 3326* 3327*T: $run 3328* 3329*M: The software detected console failure and was unable to continue 3330*because the CCRF parameter was specified. The system crashed. 3331* 3332*A: $inform 3333*$inform_sa 3334* 3335*Message: 3336*ocdcm_ (init_all_consoles): Console channel assignment failed. 3337* 3338*S: $crash 3339* 3340*T: $run 3341* 3342*M: Attachment of the specified bootload console failed during 3343*initialization. 3344* 3345*A: This is most likely a hardware failure of the console channel 3346*adapter. 3347* 3348*Message: 3349*ocdcm_ (init_all_consoles): Unable to determine absolute memory address of 3350* oc_data. 3351* 3352*S: $crash 3353* 3354*T: $run 3355* 3356*M: The absloute memory address of oc_data could not be determined 3357*during console initialization. 3358* 3359*A: This is a very serious error. Ensure that your MST is good and 3360*then consider hardware. 3361* 3362*Message: 3363*ocdcm_ (lock_oc_data): Mylock error. 3364* 3365*S: $crash 3366* 3367*T: $run 3368* 3369*M: The offending process found its own process_id in the lock. 3370* 3371*A: $inform 3372* 3373*Message: 3374*ocdcm_ (lock_oc_data): Lock wait timer expired. 3375* 3376*S: $crash 3377* 3378*T: $run 3379* 3380*M: A process waiting on the lock was not able to get the lock before 3381*the wait timer expired. This timer is calculated as the maximum 3382*time that it should take a READ I/O to complete times the number of 3383*CPUs specified in the config file. Any process waiting on the lock 3384*should never have to wait more than that amount of time for the 3385*lock to become available without there being a serious problem 3386*with the hardcore process holding the lock. 3387* 3388*A: $inform 3389* 3390*Message: 3391*ocdcm_ (reconfigure): Bootload console deconfigured with CCRF set. 3392* 3393*S: $crash 3394* 3395*T: During console reconfiguration. 3396* 3397*M: The bootload console was deconfigured by use of the 3398*set_system_console command and the site had specified the CCRF 3399*parameter in the config file. 3400* 3401*A: $recover 3402* 3403*Message: 3404*ocdcm_ (unlock_oc_data): Lock not mine. 3405* 3406*S: $crash 3407* 3408*T: $run 3409* 3410*M: A process attempting to unlock oc_data found a non-zero lock 3411*that was not its own. 3412* 3413*A: $inform 3414* 3415*END MESSAGE DOCUMENTATION */ 3416 3417 end ocdcm_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0851.8 ocdcm_.pl1 >spec>install>1115>ocdcm_.pl1 2925 1 01/30/85 1523.9 access_audit_eventflags.incl.pl1 >ldd>include>access_audit_eventflags.incl.pl1 2927 2 11/02/83 1845.0 arg_descriptor.incl.pl1 >ldd>include>arg_descriptor.incl.pl1 2929 3 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 2931 4 07/11/84 0937.3 collection_1_phases.incl.pl1 >ldd>include>collection_1_phases.incl.pl1 2933 5 10/30/86 2010.5 config_data_dcls.incl.pl1 >ldd>include>config_data_dcls.incl.pl1 2935 6 05/08/81 1853.7 config_parm_card.incl.pl1 >ldd>include>config_parm_card.incl.pl1 2937 7 02/01/85 0748.0 config_prph_opc_card.incl.pl1 >ldd>include>config_prph_opc_card.incl.pl1 2939 8 05/08/81 1853.6 config_iom_card.incl.pl1 >ldd>include>config_iom_card.incl.pl1 2941 9 07/11/84 0937.3 io_chnl_util_dcls.incl.pl1 >ldd>include>io_chnl_util_dcls.incl.pl1 2943 10 07/11/84 0937.3 io_manager_dcls.incl.pl1 >ldd>include>io_manager_dcls.incl.pl1 2945 11 10/26/83 1107.8 io_status_entry.incl.pl1 >ldd>include>io_status_entry.incl.pl1 11-30 12 03/27/82 0430.3 io_status_word.incl.pl1 >ldd>include>io_status_word.incl.pl1 2947 13 01/18/85 0953.2 io_syserr_msg.incl.pl1 >ldd>include>io_syserr_msg.incl.pl1 2949 14 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 2951 15 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 2953 16 10/12/89 2017.7 oc_data.incl.pl1 >ldd>include>oc_data.incl.pl1 2955 17 03/27/86 1120.0 opc_reconfig_options.incl.pl1 >ldd>include>opc_reconfig_options.incl.pl1 2957 18 03/15/85 0953.1 syserr_binary_def.incl.pl1 >ldd>include>syserr_binary_def.incl.pl1 2959 19 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 2961 20 03/08/85 0852.7 syserr_data.incl.pl1 >ldd>include>syserr_data.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. ALERT_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1428 1592 1682 2065 2591 ANNOUNCE 000141 constant fixed bin(17,0) initial dcl 19-7 set ref 562* 618* 1535* BEEP 000173 constant fixed bin(17,0) initial dcl 19-7 set ref 561* 1032* 1049* 1075* 1101* 1490* 1510* 1533* 1558* 2343 2449* BOOT_INITIALIZATION constant fixed bin(17,0) initial dcl 4-11 ref 607 CRASH_ON_CRF constant fixed bin(17,0) initial dcl 17-45 ref 982 DISCARDED_OUTPUT 000025 constant fixed bin(35,0) initial dcl 16-262 set ref 916* DISCARD_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1610 1611 1973 2578 ENABLE_CONSOLE_SERVICE constant fixed bin(17,0) initial dcl 17-45 ref 972 EVENT_QUEUE_SIZE constant fixed bin(17,0) initial dcl 16-313 ref 513 1924 Envptr_supplied_call_type constant fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 ref 2296 GOT_SPECIAL_INT 000177 constant fixed bin(35,0) initial dcl 16-262 set ref 2096* INIT_OC_DATA 000201 constant fixed bin(35,0) initial dcl 16-262 set ref 626* IO_TIMEOUT 000027 constant fixed bin(35,0) initial dcl 16-262 set ref 2654* JUST_LOG 000170 constant fixed bin(17,0) initial dcl 19-7 set ref 657* 873* 906* 1272* 1404* 1801* 1809* 1881* 2314* 2316 2333* 2334* LOCK_MCA_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1616 1786 2158 2568 LOCK_MCA_INPUT constant fixed bin(17,0) initial dcl 17-45 ref 1125 1785 1801 1809 1831 LOCK_MCA_IO 000152 constant fixed bin(35,0) initial dcl 16-262 set ref 1787* LOGGED_ERROR 000030 constant fixed bin(35,0) initial dcl 16-262 set ref 1887* MAKE_ALTERNATE_CONSOLE constant fixed bin(17,0) initial dcl 17-45 ref 1037 MAKE_BOOTLOAD_CONSOLE constant fixed bin(17,0) initial dcl 17-45 ref 1017 MAKE_INOP_DEVICE constant fixed bin(17,0) initial dcl 17-45 ref 1081 MAKE_IO_DEVICE constant fixed bin(17,0) initial dcl 17-45 ref 1055 MAKE_UNAVAILABLE constant fixed bin(17,0) initial dcl 17-45 ref 1107 MAX_IMU_IO_TIME constant fixed bin(17,0) initial dcl 16-322 ref 2647 MAX_IO_LENGTH constant fixed bin(17,0) initial dcl 16-348 ref 380 384 384 384 384 384 385 385 385 385 390 390 391 442 442 446 446 449 451 451 480 480 480 480 481 481 481 481 483 513 513 513 530 534 534 534 534 579 579 579 611 611 611 623 623 623 668 668 668 668 668 668 687 687 687 687 687 687 791 795 808 837 843 873 873 879 882 882 882 882 882 882 906 906 1290 1290 1290 1291 1291 1291 1292 1292 1292 1293 1293 1293 1294 1294 1294 1295 1295 1295 1296 1296 1296 1297 1297 1297 1304 1304 1304 1361 1361 1361 1427 1427 1427 1484 1484 1484 1504 1504 1504 1578 1584 1657 1657 1657 1661 1661 1661 1662 1662 1662 1688 1688 1688 1766 1766 1766 1766 1766 1766 1766 1766 1766 1766 1766 1766 1770 1770 1770 1805 1805 1805 1812 1812 1812 1910 1910 1910 1911 1911 1911 1912 1912 1912 1913 1913 1913 1915 1915 1915 1916 1916 1916 1916 1916 1916 1919 1919 1919 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1941 1941 1951 1951 1951 1951 1962 1962 1962 1962 1980 1980 1980 2007 2007 2007 2009 2009 2009 2056 2073 2222 2222 2223 2223 2223 2223 2223 2223 2228 2232 2232 2234 2234 2238 2238 2238 2238 2239 2239 2239 2239 2239 2239 2246 2246 2246 2246 2247 2253 2253 2253 2253 2254 2254 2254 2254 2254 2254 2287 2334 2334 2336 2365 2377 2419 2419 2419 2419 2465 2472 2502 2613 2680 2680 2680 2872 MAX_IO_TIME 000000 constant fixed bin(17,0) initial array dcl 16-326 ref 2651 MAX_MAX_IO_TIME constant fixed bin(17,0) initial dcl 16-351 ref 525 MAX_MCA 000035 constant fixed bin(17,0) initial dcl 2884 ref 994 MAX_OPC_CNT constant fixed bin(17,0) initial dcl 16-313 ref 513 559 1289 1910 1911 1912 1913 1915 1916 1916 1919 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 MAX_RETRIES constant fixed bin(17,0) initial dcl 16-313 ref 2495 MC_IO_FAILURE 000023 constant fixed bin(35,0) initial dcl 16-262 set ref 494* MC_IO_PICKUP 000040 constant fixed bin(35,0) initial dcl 16-262 set ref 486* MIN_MCA constant fixed bin(17,0) initial dcl 2886 ref 994 NEWLINE_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1598 1599 2541 2563 NOP constant fixed bin(17,0) initial dcl 17-45 ref 963 PANIC 000151 constant fixed bin(17,0) initial dcl 2888 set ref 538* 575* 583* 591* 706* 724* 1059* 1085* 1177* 1384* 1568* 1727* 1738* 2309 2723* POPPED_READ 000031 constant fixed bin(35,0) initial dcl 16-262 set ref 446* PRIORITY_OUTPUT 000173 constant fixed bin(35,0) initial dcl 16-262 set ref 2076* PROMPT_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1604 1605 1682 2041 2596 PUSHED_READ 000032 constant fixed bin(35,0) initial dcl 16-262 set ref 2222* QUEUED_READ 000171 constant fixed bin(35,0) initial dcl 16-262 set ref 2234* QUEUED_WRITE 000170 constant fixed bin(35,0) initial dcl 16-262 set ref 2249* READ_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1574 1577 1682 2047 2048 2165 2609 READ_PICKUP 000033 constant fixed bin(35,0) initial dcl 16-262 set ref 451* READ_UNECHOED_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1580 1583 1682 2052 2053 2165 2609 RESET_CHANNEL 000161 constant fixed bin(35,0) initial dcl 16-262 set ref 2396* RESET_CONSOLE constant fixed bin(17,0) initial dcl 17-45 ref 1011 RESET_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1586 2394 2586 RETRY_IO 000026 constant fixed bin(35,0) initial dcl 16-262 set ref 2493* RUN_ON_CRF constant fixed bin(17,0) initial dcl 17-45 ref 987 SBL_ocdcm_err 000170 constant fixed bin(17,0) initial dcl 18-47 set ref 1881* SB_ocdcm_err 000033 constant fixed bin(17,0) initial dcl 18-47 set ref 1881* SEND_MC_IO constant fixed bin(17,0) initial dcl 17-45 ref 977 SENT_ALERT 000160 constant fixed bin(35,0) initial dcl 16-262 set ref 2067* SENT_MC_IO 000024 constant fixed bin(35,0) initial dcl 16-262 set ref 1262* SENT_MC_PRIORITY_IO 000035 constant fixed bin(35,0) initial dcl 16-262 set ref 1261* SENT_NEWLINE 000147 constant fixed bin(35,0) initial dcl 16-262 set ref 2543* SENT_PROMPT 000146 constant fixed bin(35,0) initial dcl 16-262 set ref 2043* SENT_WAKEUP 000034 constant fixed bin(35,0) initial dcl 16-262 set ref 2630* SERVICE_INITIALIZATION constant fixed bin(17,0) initial dcl 4-12 ref 607 622 1127 1266 1382 2319 2323 STARTED_READ 000151 constant fixed bin(35,0) initial dcl 16-262 set ref 2049* STARTED_UNECHOED_READ 000154 constant fixed bin(35,0) initial dcl 16-262 set ref 2054* STARTED_WRITE 000150 constant fixed bin(35,0) initial dcl 16-262 set ref 2078* SUSPEND_CONSOLE_SERVICE constant fixed bin(17,0) initial dcl 17-45 ref 967 TERMINATED_ALERT 000144 constant fixed bin(35,0) initial dcl 16-262 set ref 2592* TERMINATED_MCA_LOCK 000157 constant fixed bin(35,0) initial dcl 16-262 set ref 2569* TERMINATED_MCA_UNLOCK 000021 constant fixed bin(35,0) initial dcl 16-262 set ref 2574* TERMINATED_NEWLINE 000155 constant fixed bin(35,0) initial dcl 16-262 set ref 2564* TERMINATED_PROMPT 000143 constant fixed bin(35,0) initial dcl 16-262 set ref 2597* TERMINATED_READ 000142 constant fixed bin(35,0) initial dcl 16-262 set ref 2617* TERMINATED_RESET 000145 constant fixed bin(35,0) initial dcl 16-262 set ref 2587* TERMINATED_WRITE 000156 constant fixed bin(35,0) initial dcl 16-262 set ref 2605* UNLOCK_MCA_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1622 1790 1792 2158 2573 UNLOCK_MCA_INPUT constant fixed bin(17,0) initial dcl 17-45 ref 992 1125 1801 1809 UNLOCK_MCA_IO 000022 constant fixed bin(35,0) initial dcl 16-262 set ref 1793* WRITE_DCW constant fixed bin(17,0) initial dcl 16-249 ref 1570 1598 1604 1610 1682 2071 2075 2601 WRITE_QUEUE_SIZE constant fixed bin(17,0) initial dcl 16-313 ref 383 479 513 533 579 611 623 668 668 687 687 882 882 1290 1291 1292 1293 1294 1295 1296 1297 1304 1361 1427 1484 1504 1657 1661 1662 1688 1766 1766 1766 1766 1770 1805 1812 1910 1911 1912 1913 1915 1916 1916 1919 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1956 1957 2007 2009 2223 2223 2239 2239 2251 2254 2254 2418 2680 abs_addr 17 based fixed bin(26,0) level 2 dcl 16-90 set ref 537* 1600 1606 1612 2056 2073 absadr 000010 constant entry external dcl 2764 ref 537 access_audit_$log_general 000012 constant entry external dcl 2765 ref 1831 1834 access_operations_$lock_mca 000074 external static bit(36) dcl 2862 set ref 1831* access_operations_$unlock_mca 000076 external static bit(36) dcl 2863 set ref 1834* action_code 3(22) 000155 automatic bit(2) level 3 packed packed unaligned dcl 2874 set ref 1860 active based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1290 active 2 based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 567 1494* ad_code 000175 automatic fixed bin(35,0) dcl 2890 set ref 1758* 1776* 1800* 1827* 1831* 1834* addcharno builtin function dcl 2791 ref 2373 addr builtin function dcl 2790 ref 313 351 369 446 446 451 451 476 481 510 515 579 611 661 668 675 701 709 740 753 787 870 961 1261 1261 1361 1427 1484 1542 1570 1574 1577 1580 1583 1586 1592 1599 1600 1605 1606 1611 1612 1616 1622 1653 1657 1662 1695 1700 1724 1735 1770 1790 1805 1812 1829 1830 1852 1852 1861 1881 1881 1941 1947 1951 1962 1980 2048 2053 2056 2071 2073 2076 2222 2222 2234 2234 2246 2303 2303 2352 2362 2362 2464 2465 2612 2612 2624 2680 address based bit(18) level 2 packed packed unaligned dcl 14-7 set ref 1600* 1606* 1612* 2056* 2073* alert 6 based bit(1) level 3 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 1875* 2064 alert 50 based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 2343* alerted 50(02) based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 802* alerted 6(02) 000142 automatic bit(1) level 3 in structure "local_io" packed packed unaligned dcl 2872 in procedure "ocdcm_" set ref 2211* alerted 6(02) based bit(1) level 3 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 1875* 2064 2066* alternate 2(03) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 255 614 1020* 1043* 1070* 1097* 1116* 1221* 1362 1373* 1512* 1517* alternate based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1294 arg_count based fixed bin(17,0) level 3 in structure "arg_list_with_envptr" packed packed unsigned unaligned dcl 3-42 in procedure "ocdcm_" ref 2296 arg_count based fixed bin(17,0) level 3 in structure "arg_list" packed packed unsigned unaligned dcl 3-14 in procedure "ocdcm_" ref 2299 arg_descriptor based structure level 1 dcl 2-6 arg_list based structure level 1 dcl 3-14 arg_list_ptr 000100 automatic pointer dcl 2279 set ref 2293* 2295 2296 2296 2296 2299 2299 2303* arg_list_ptr_ 000014 constant entry external dcl 2766 ref 2293 arg_list_with_envptr based structure level 1 dcl 3-42 arg_ptrs 2 based pointer array level 2 in structure "arg_list" dcl 3-14 in procedure "ocdcm_" ref 2295 2299 arg_ptrs 2 based pointer array level 2 in structure "arg_list_with_envptr" dcl 3-42 in procedure "ocdcm_" ref 2296 assigned 2(01) based bit(1) level 3 packed packed unaligned dcl 16-149 set ref 672 1218* 1772 1779* 1818* 2685* assigned_idx parameter fixed bin(35,0) dcl 645 ref 630 665 665 668 671 audit_event_flags based structure level 1 dcl 1-5 audit_eventflags 000176 automatic bit(36) dcl 2891 set ref 1828* 1829 1830 1831* 1834* audit_flag 000112 automatic bit(1) packed unaligned dcl 2820 set ref 956* 1127* 1825 based_epname based char(32) packed unaligned dcl 2280 ref 2296 2299 based_severity based fixed bin(17,0) dcl 2281 ref 2295 binary builtin function dcl 2792 ref 541 543 1578 1584 1600 1606 1612 1791 1801 1801 1809 1809 2056 2072 2073 bit builtin function dcl 2793 ref 1578 1584 1600 1606 1612 1791 1801 1801 1809 1809 2056 2072 2073 bootload_console 2(02) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 255 580 613 1038 1056 1082 1108 1220* 1507* 2687* bootload_console based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1293 1504 bootload_console_idx 2(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 16-90 set ref 583 589 591 623 1219* 1656 1657 1688 1998 1999 2675 2680 2686* bootload_console_name 000177 automatic char(4) dcl 2892 set ref 1756* 1837* byte builtin function dcl 2794 ref 541 543 543 543 543 543 call_type 0(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 3-14 ref 2296 central_stat 0(21) based bit(3) level 2 packed packed unaligned dcl 2869 ref 2141 chan 3 based fixed bin(8,0) level 2 dcl 7-8 ref 1564 chan_cmd 0(24) based bit(6) level 2 packed packed unaligned dcl 15-21 set ref 1589* 1595* 1619* 1625* channel 1 000142 automatic char(8) level 2 in structure "log_message" dcl 2873 in procedure "ocdcm_" set ref 1857* channel 3 based char(8) level 2 in structure "oc_entry" dcl 16-149 in procedure "ocdcm_" set ref 293 1214* 1564* 1773* 1857 channel_stat 0(18) based bit(3) level 2 packed packed unaligned dcl 2869 ref 2141 char_type_flag 1(01) based bit(1) level 2 packed packed unaligned dcl 20-21 set ref 516* character_position 3(18) 000155 automatic fixed bin(3,0) level 3 packed packed unsigned unaligned dcl 2874 set ref 2615 2615 chx 000130 automatic fixed bin(35,0) level 2 dcl 2871 set ref 1691* clock builtin function dcl 2795 ref 711 797 875 899 908 1679 1732 1734 1910 2136 2137 2230 2244 2339 2647 2651 code parameter fixed bin(35,0) dcl 2759 in procedure "ocdcm_" set ref 263 288* 297* 414 435* 935 957* 964* 995* 1007* 1029* 1040* 1110* 1129* 1776* 2009* 2010 code 0(18) based bit(3) level 2 in structure "idcw" packed packed unaligned dcl 15-21 in procedure "ocdcm_" set ref 1572* 1576* 1582* 1588* 1594* 1618* 1624* command 0(21) 000142 automatic bit(6) level 2 in structure "log_message" packed packed unaligned dcl 2873 in procedure "ocdcm_" set ref 1861* command based bit(6) level 2 in structure "idcw" packed packed unaligned dcl 15-21 in procedure "ocdcm_" set ref 1571* 1575* 1581* 1587* 1593* 1617* 1623* 1861 completed 6(05) 000142 automatic bit(1) level 3 in structure "local_io" packed packed unaligned dcl 2872 in procedure "ocdcm_" set ref 2210* 2226* completed 50(05) based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 381* 531* 800* 821* 828 1398* 1943 2330 2347* 2359* 2367* 2369 completed based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 385* 534* 2238 2253 2419* completed based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 391* 530* 1980 completed 6(05) based bit(1) level 3 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 484* 1875* 1963 2039* 2469* 2498* 2505* 2603* 2625* completed 6(05) 000314 automatic bit(1) level 3 in structure "saved_priority_io" packed packed unaligned dcl 2287 in procedure "report_error" set ref 2332 2378* config_$find 000016 constant entry external dcl 2767 ref 555 600 1301 1449 1454 config_$find_parm 000020 constant entry external dcl 2768 ref 548 551 config_change based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1291 1292* config_change 2(07) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 1047* 1073* 1099* 1118* 1226* 1355* 1374* 2689* config_data_$console_model_names 000106 external static structure level 1 dcl 5-192 set ref 1542 console 5 000142 automatic char(4) level 2 in structure "local_io" dcl 2872 in procedure "ocdcm_" set ref 2214* console 5 based char(4) level 2 in structure "console_io" dcl 16-213 in procedure "ocdcm_" set ref 1688* 2470* console_cnt 2 based fixed bin(17,0) level 2 packed packed unaligned dcl 16-90 set ref 559 565 567* 567 574 578 607 667 1360 1504 1506 1660 1765 2006 console_data based structure level 1 dcl 2867 console_data_ptr 000100 automatic pointer dcl 2812 set ref 1542* 1546 1547 1550 console_entry_idx parameter fixed bin(17,0) packed unaligned dcl 1474 ref 1459 1484 1500 console_found 000113 automatic bit(1) initial packed unaligned dcl 2827 set ref 1299* 1300 1302* 1306* 2827* console_idx parameter fixed bin(17,0) dcl 1422 ref 1410 1427 console_io based structure level 1 dcl 16-213 set ref 791 843* 879 2247* 2502 console_io_flags 000202 automatic char(80) packed unaligned dcl 2895 set ref 1875* 1881* console_io_ptr 000410 automatic pointer dcl 16-306 set ref 481* 482 483 484 486* 1262* 1396* 1397 1687 1688 1875 1875 1875 1875 1875 1875 1875 1962* 1963 1963 2032* 2033 2035 2038 2039 2040 2042 2043* 2049* 2054* 2056 2064 2064 2066 2067* 2070 2072 2073 2076 2076* 2078* 2173* 2246* 2247 2249* 2489* 2498 2502 2505 2514 2584* 2603 2604 2611 2613 2615 2615 2619 2624 2625 2628 2628 console_io_timeout 000125 automatic bit(1) packed unaligned dcl 2839 set ref 1799 1859 1881* 2646* 2652* console_is_free 000114 automatic bit(1) packed unaligned dcl 2828 set ref 255* 259 console_is_free_parm parameter bit(1) packed unaligned dcl 239 set ref 224 251* 259* console_line_length 000226 automatic fixed bin(17,0) dcl 2896 set ref 2356* 2362* console_name 000200 automatic char(4) dcl 2893 set ref 958* 993 993 994 998* 1003* 1024* 1065* 1091* console_name_parm parameter char(4) packed unaligned dcl 948 ref 935 958 console_to_check 000201 automatic char(4) dcl 2894 set ref 244* 248* console_to_check_parm parameter char(4) packed unaligned dcl 238 ref 224 244 continue_flag 000115 automatic bit(1) initial dcl 2829 set ref 2354* 2362* 2829* copy builtin function dcl 2796 ref 541 543 count 0(30) based bit(6) level 2 in structure "idcw" packed packed unaligned dcl 15-21 in procedure "ocdcm_" set ref 1590* 1596* 1620* 1626* 1791* count based fixed bin(17,0) level 2 in structure "console_data" dcl 2867 in procedure "ocdcm_" ref 1546 cpu_cnt 000227 automatic fixed bin(17,0) dcl 2897 set ref 596* 601* 601 605 crash_on_crf 3(01) based bit(1) level 3 packed packed unaligned dcl 16-90 set ref 378* 549* 983* 988* 1059 1085 1266 1382 1865* 2323 cv_dec_check_ 000022 constant entry external dcl 2769 ref 993 dcw based structure level 1 dcl 14-7 dcw_list 13 based bit(36) array level 2 dcl 16-149 set ref 1570 1574 1577 1580 1583 1586 1592 1598* 1598 1599 1604* 1604 1605 1610* 1610 1611 1616 1622 1694 1695 1700 1790 1861 2048 2053 2071 dcw_list_idx 6(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 16-149 set ref 1428* 1682 1682 1682 1682 1682 1694 1695 1700 1786* 1792* 1861 1973* 2041* 2047* 2052* 2065* 2075* 2158 2158 2165 2165 2394* 2541* 2563 2568 2573 2578 2586 2591 2596 2601 2609 2609 2651 dcwp 000400 automatic pointer dcl 14-4 set ref 1577* 1578 1583* 1584 1599* 1600 1602 1605* 1606 1608 1611* 1612 1614 2048* 2053* 2056 2071* 2072 2073 desc_ptrs based pointer array level 2 in structure "arg_list_with_envptr" dcl 3-42 in procedure "ocdcm_" ref 2296 desc_ptrs based pointer array level 2 in structure "arg_list" dcl 3-14 in procedure "ocdcm_" ref 2299 device 0(12) 000142 automatic bit(6) level 2 packed packed unaligned dcl 2873 set ref 1858* device_idx 5 based fixed bin(35,0) level 2 in structure "oc_entry" dcl 16-149 in procedure "ocdcm_" set ref 294 665 671 1214* 1691 1773* 1817* 1852* 2113* 2142* 2168* 2191* 2612* 2684* device_idx based fixed bin(35,0) array level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 668 device_type 000230 automatic char(16) packed unaligned dcl 2898 set ref 612* 613* 614* 615* 616* 617* 618* devname 4 000142 automatic char(4) level 2 dcl 2873 set ref 1863* discard 2(13) based bit(1) level 3 packed packed unaligned dcl 16-149 set ref 401* 913 1870* 2036* 2099 2100* 2177* 2434* 2516* 2579* discard_notice 10 based char(24) level 2 dcl 16-90 set ref 543* 1612 discarded 2(14) based bit(1) level 3 packed packed unaligned dcl 16-149 set ref 402* 914 915* 1870* 1972 2101* 2178* 2435* 2517* 2580* divide builtin function dcl 2797 ref 1578 1584 2613 done 000116 automatic bit(1) initial packed unaligned dcl 2831 set ref 320 325* 554 556* 560* 597* 599 602* 2831* entered_via_interrupt 000122 automatic bit(1) initial dcl 2835 set ref 654* 2134 2835* entrypoint 000234 automatic char(32) packed unaligned dcl 2899 set ref 367* 508* 538* 561* 562* 575* 583* 591* 618* 651* 657* 955* 1032* 1049* 1059* 1075* 1085* 1101* 1340* 1384* 1404* 1510* 1533* 1535* 1558* 1568* 1801* 1809* 2413* 2449* entrypoint_name 000102 automatic char(32) packed unaligned dcl 2282 set ref 2296* 2299* 2305 err_code 000244 automatic fixed bin(35,0) dcl 2900 set ref 408* 537* 538 581* 582 993* 994 1024* 1025 1029 1364* 1365 1564* 1567 1773* 1775 1776 2441* 2442 err_event_cid 34 based fixed bin(71,0) level 2 dcl 16-90 set ref 353* 1057 1083 1231* 1258 1259* 1381 err_event_pid 36 based bit(36) level 2 dcl 16-90 set ref 354* 1231* 1259* error_buffer 000212 automatic char(256) packed unaligned dcl 2284 set ref 2361* 2362 2362 2365 error_code parameter fixed bin(35,0) dcl 1204 set ref 1186 1210* 1214* 1216 error_msg 000245 automatic char(80) packed unaligned dcl 2901 in procedure "ocdcm_" set ref 1348* 1366* 1370* 1392* 1395* 1404 1404* error_msg 000112 automatic char(256) packed unaligned dcl 2283 in procedure "report_error" set ref 2301* 2303 2303 2303 2303 2305* 2305 2311* 2314* 2325* 2352 2353 error_table_$action_not_performed 000054 external static fixed bin(35,0) dcl 2848 ref 1129 error_table_$bad_arg 000056 external static fixed bin(35,0) dcl 2850 ref 995 error_table_$dev_nt_assnd 000064 external static fixed bin(35,0) dcl 2854 ref 1007 error_table_$device_busy 000060 external static fixed bin(35,0) dcl 2851 ref 1040 error_table_$device_not_active 000062 external static fixed bin(35,0) dcl 2852 ref 288 1210 error_table_$no_operation 000066 external static fixed bin(35,0) dcl 2855 ref 964 error_table_$resource_not_free 000070 external static fixed bin(35,0) dcl 2856 ref 1110 error_table_$timeout 000072 external static fixed bin(35,0) dcl 2858 ref 1800 event based structure array level 2 dcl 16-90 event_chan 44 based fixed bin(71,0) level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 799* 2341* event_chan parameter fixed bin(71,0) dcl 347 in procedure "ocdcm_" ref 334 353 event_chan 2 based fixed bin(71,0) level 2 in structure "console_io" dcl 16-213 in procedure "ocdcm_" set ref 2628* event_io_ptr based pointer array level 3 dcl 16-90 set ref 1913* event_io_ptr_parm parameter pointer dcl 1905 ref 1893 1913 event_no parameter fixed bin(35,0) dcl 1904 ref 1893 1912 event_number based fixed bin(35,0) array level 3 dcl 16-90 set ref 1912* extended_arg_type 000370 automatic fixed bin(17,0) initial dcl 2-36 set ref 2-36* false constant bit(1) initial packed unaligned dcl 2824 ref 251 376 378 387 396 400 401 402 403 404 485 517 597 720 741 800 801 802 806 838 909 968 988 1021 1044 1045 1046 1061 1070 1071 1072 1087 1096 1097 1098 1114 1115 1116 1221 1222 1223 1224 1232 1270 1271 1292 1299 1344 1353 1358 1373 1375 1386 1387 1397 1434 1456 1496 1504 1544 1552 1699 1759 1771 1780 1818 1819 1966 2036 2037 2039 2097 2101 2121 2176 2177 2178 2209 2210 2211 2212 2213 2342 2354 2359 2360 2367 2416 2421 2433 2434 2435 2436 2437 2515 2516 2517 2518 2560 2579 2580 2602 2604 2611 2620 2646 2650 2658 2682 2685 2687 2711 2718 2744 fault_status parameter bit(36) packed unaligned dcl 647 ref 630 first_io_slot 000271 automatic fixed bin(17,0) dcl 2902 set ref 1955* 1956 1956* 1959 1967* first_search_pass 000117 automatic bit(1) initial packed unaligned dcl 2832 set ref 1954* 1965 1966* 2832* flags based structure array level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" flags 6 000314 automatic structure level 2 in structure "saved_priority_io" dcl 2287 in procedure "report_error" flags 6 000142 automatic structure level 2 in structure "local_io" dcl 2872 in procedure "ocdcm_" flags based structure array level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" flags 3 based structure level 2 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" flags 6 based structure level 2 in structure "console_io" dcl 16-213 in procedure "ocdcm_" set ref 2467* flags 50 based structure level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" flags 2 based structure level 2 in structure "oc_entry" dcl 16-149 in procedure "ocdcm_" set ref 292 1916 flags based structure level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" formline_ 000024 constant entry external dcl 2770 ref 2303 found 000120 automatic bit(1) initial packed unaligned dcl 2833 set ref 1358* 1360 1363* 1375* 1380 1544* 1546 1548* 1557 2833* got_special_int 2(11) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 403* 677* 1870* 2095 2097* 2436* 2714* got_special_int 4 based bit(1) level 3 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 686* 2710 2711* grant 0(01) based bit(1) level 2 packed packed unaligned dcl 1-5 set ref 1830* header based structure level 2 in structure "arg_list" dcl 3-14 in procedure "ocdcm_" header based structure level 2 in structure "arg_list_with_envptr" dcl 3-42 in procedure "ocdcm_" i_saved_priority_io 000121 automatic bit(1) initial packed unaligned dcl 2834 set ref 2331* 2377 2834* idcw based structure level 1 dcl 15-21 idcwp 000402 automatic pointer dcl 15-19 set ref 1570* 1571 1572 1574* 1575 1576 1580* 1581 1582 1586* 1587 1588 1589 1590 1592* 1593 1594 1595 1596 1616* 1617 1618 1619 1620 1622* 1623 1624 1625 1626 1790* 1791 idx 000272 automatic fixed bin(17,0) dcl 2903 set ref 383* 384 385* 479* 480 481* 533* 534* 578* 579* 607* 611* 667* 668 668* 1289* 1290 1291 1292 1293 1294 1295 1296 1297 1304* 1360* 1361* 1504* 1504* 1506 1546* 1547 1550* 1660* 1661 1662* 1765* 1766 1766 1766 1766 1770 1805 1812* 1959* 1962* 2418* 2419* imu based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1766 imu 2(16) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 1501* 2135 2148 2647 in_progress based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1941 1980 in_progress 50(04) based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 801* 830 2342* 2360* in_progress 6(04) based bit(1) level 3 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 1397* 1875* 2038* 2070* 2604* 2611* in_progress 6(04) 000142 automatic bit(1) level 3 in structure "local_io" packed packed unaligned dcl 2872 in procedure "ocdcm_" set ref 2209* in_service 3 based bit(1) level 3 packed packed unaligned dcl 16-90 set ref 315 372 396* 703 720* 789 872 909* 968* 973* 1061* 1087* 1229* 1271* 1386* 1865* 2318 2369 2415* 2497 2718* initiate 0(16) based bit(1) level 2 packed packed unaligned dcl 2869 ref 2135 2148 inop_device based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1296 1766 inop_device 2(04) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 616 1045* 1071* 1095* 1114* 1223* 1354* 1372* 1521* input_length parameter fixed bin(17,0) dcl 428 set ref 414 434* 450* input_text parameter char(256) packed unaligned dcl 427 set ref 414 433* 449* interrupt_level parameter fixed bin(3,0) dcl 646 ref 630 656 666 677 685 io_chnl_util$iom_to_name 000110 constant entry external dcl 9-12 ref 1564 io_device based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1295 1766 io_device 2(05) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 615 1021* 1044* 1069* 1096* 1115* 1222* 1353* 1525* 2688* io_in_progress 2(10) based bit(1) level 3 packed packed unaligned dcl 16-149 set ref 322 330* 400* 813 1680* 1761 1780* 1797 1819* 1870* 2030 2110 2433* 2518* 2560* 2682* io_manager$assign 000112 constant entry external dcl 10-10 ref 1214 1773 io_manager$connect_abs 000116 constant entry external dcl 10-29 ref 1705 io_manager$get_status 000120 constant entry external dcl 10-35 ref 1852 2612 io_manager$mask 000122 constant entry external dcl 10-38 ref 2113 2142 2168 2191 io_manager$unassign 000114 constant entry external dcl 10-20 ref 1817 2684 io_manager_arg based structure level 1 dcl 10-50 io_msg based structure level 1 dcl 13-14 io_ptr 22 based pointer level 2 dcl 16-90 set ref 626* 916* 1396 1687* 1887* 2096* 2173 2396* 2489 2493* 2543* 2564* 2584 2587* 2592* 2597* 2605* 2617* 2630* 2654* io_queue_time parameter fixed bin(71,0) dcl 866 set ref 848 875* 883* 901* 908* 919* 931* io_status based structure level 1 dcl 2869 set ref 2120 io_status_entry based structure level 1 dcl 11-7 io_status_overlay based structure level 1 packed packed unaligned dcl 2878 io_status_word based structure level 1 dcl 12-5 io_time 10 based fixed bin(71,0) level 2 dcl 16-149 set ref 406* 1679* 2439* 2647 2651 io_type 5 based char(4) array level 3 dcl 2867 ref 1550 io_uid parameter fixed bin(71,0) dcl 1254 set ref 1239 1259* 1261 ioa_$rsnnl 000026 constant entry external dcl 2771 ref 1366 1370 1865 1870 1875 iom 2 based fixed bin(3,0) level 2 dcl 7-8 ref 1452 1564 iom_args 000130 automatic structure level 1 dcl 2871 set ref 1705* iom_card based structure level 1 dcl 8-5 iom_cardp 000376 automatic pointer dcl 8-3 set ref 1448* 1449* 1450 1451 1451 1452 1454* last_io_slot 000273 automatic fixed bin(17,0) dcl 2904 set ref 1957* 1959 1968* last_poll_time 30 based fixed bin(71,0) level 2 dcl 16-90 set ref 524* 711* last_read_queued 24 based fixed bin(71,0) level 2 dcl 16-90 set ref 522* 2217 2233* last_write_queued 26 based fixed bin(71,0) level 2 dcl 16-90 set ref 523* 2248* leng 10 000142 automatic fixed bin(17,0) level 2 in structure "local_io" packed packed unaligned dcl 2872 in procedure "ocdcm_" set ref 450 2227* leng 52 based fixed bin(17,0) level 3 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 807* 2364* leng 10 based fixed bin(17,0) level 2 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 482 873 873 906 906 2072 2471* 2613* 2615* 2615 2619 length builtin function dcl 2798 ref 2303 2303 2353 level 000142 automatic bit(3) level 2 packed packed unaligned dcl 2873 set ref 1856* level$get 000030 constant entry external dcl 2778 ref 1831 1831 1834 1834 line_leng 5 based fixed bin(17,0) level 2 in structure "prph_opc_card" dcl 7-8 in procedure "ocdcm_" ref 1540 line_leng 6 based fixed bin(17,0) level 2 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 295 1540* 2356 list_consoles 3(03) based bit(1) level 3 packed packed unaligned dcl 16-90 set ref 552* 607 1865* listp 6 000130 automatic pointer level 2 dcl 2871 set ref 1695* 1700* local_io 000142 automatic structure level 1 dcl 2872 set ref 442* 791* 795 837* 843 879* 2232 2247 2502* local_time 000274 automatic fixed bin(71,0) dcl 2905 set ref 892* 894* 895 896 899* 901 925* 931 lock based bit(36) level 2 dcl 16-90 set ref 370* 675 705 709 723 724 1168 1177 1726 1735 2722 2723 log_message 000142 automatic structure level 1 dcl 2873 set ref 1854* 1881 1881 major based bit(6) level 2 packed packed unaligned dcl 2878 ref 1433 2147 2153 2158 2165 mask 7 based char(4) level 2 dcl 7-8 ref 1496 max builtin function dcl 2799 ref 605 max_computed_io_time 32 based fixed bin(71,0) level 2 dcl 16-90 set ref 525* 605* 605 1732 mc_io_enabled 3(02) based bit(1) level 3 packed packed unaligned dcl 16-90 set ref 315 376* 703 720 818 891 978* 1057* 1083* 1230 1232* 1270* 1387* 1389* 1391 1865* 2345 2416* 2501 2718 mc_io_uid parameter fixed bin(71,0) dcl 470 ref 455 480 mca_lock_unlock_success 000123 automatic bit(1) packed unaligned dcl 2837 set ref 1129 1759* 1813* 1827 mca_to_unlock 000276 automatic fixed bin(35,0) dcl 2906 set ref 993* 994 994 1791 1801 1801 1809 1809 1834* meters based structure level 2 dcl 16-90 model 3 based char(4) level 2 in structure "iom_card" dcl 8-5 in procedure "ocdcm_" ref 1451 1451 model 1(18) based fixed bin(17,0) level 2 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 1549* model 1 based fixed bin(17,0) array level 3 in structure "console_data" dcl 2867 in procedure "ocdcm_" ref 1547 model 4 based fixed bin(17,0) level 2 in structure "prph_opc_card" dcl 7-8 in procedure "ocdcm_" set ref 1547 1549 1558* multiply builtin function dcl 2800 ref 482 873 873 906 906 2365 2613 must_have_console 3(06) based bit(1) level 3 packed packed unaligned dcl 16-90 set ref 1342 1344* 2320* must_unassign 000124 automatic bit(1) packed unaligned dcl 2838 set ref 1771* 1781* 1816 name 1 based char(4) level 2 in structure "prph_opc_card" dcl 7-8 in procedure "ocdcm_" set ref 558 1304 1489 1489 1490* 1499 1533* name parameter char(4) dcl 1202 in procedure "assign_bootload_console" set ref 1186 1208* name based char(4) array level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 1304 1661 1688 2009* name based char(4) level 2 in structure "oc_entry" dcl 16-149 in procedure "ocdcm_" set ref 408* 581* 618* 1032* 1049* 1075* 1101* 1364* 1366* 1370* 1499* 1510* 1558* 1568* 1756 1801* 1809* 1863 1881* 1915 2441* 2681 names 1 based structure array level 2 dcl 2867 new_prompt 000300 automatic char(8) packed unaligned dcl 2907 set ref 1155* 1159 1159* 1160* 1160 1162 new_prompt_parm parameter char(8) packed unaligned dcl 1151 ref 1139 1155 new_state 000302 automatic char(4) packed unaligned dcl 2908 set ref 1293* 1294* 1295* 1296* 1297* 1305 next_event 40(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 16-90 set ref 528* 1910 1911 1912 1913 1915 1916 1919 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1923* 1923 1924 1924* next_free_write 40 based fixed bin(17,0) level 2 packed packed unaligned dcl 16-90 set ref 527* 1951 1955 1968 2238 2246 2250* 2250 2251 2251* 2253 no_device 2(06) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 617 1046* 1072* 1098* 1117* 1224* 1529* no_device based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 1297 1766 2007 no_lock_flags 4 based structure level 2 dcl 16-90 null builtin function dcl 2801 ref 249 287 318 325 395 438 477 494 494 511 546 549 552 556 595 601 664 715 813 905 1004 1019 1064 1066 1090 1092 1209 1298 1302 1352 1448 1450 1656 1666 1703 1787 1787 1793 1793 1820 1831 1831 1834 1834 1914 1945 1975 1985 2028 2033 2351 2428 2569 2569 2574 2574 2673 2713 oc_channel parameter char(8) packed unaligned dcl 278 set ref 263 293* oc_data based structure level 1 dcl 16-90 set ref 513* oc_data$ 000124 external static fixed bin(17,0) dcl 16-88 set ref 313 351 369 476 510 661 701 740 753 787 870 961 1653 1724 oc_data_flags 000303 automatic char(80) packed unaligned dcl 2909 set ref 1865* 1881* oc_data_ptr 000404 automatic pointer dcl 16-306 set ref 313* 315 315 351* 353 354 369* 370 372 376 378 380 381 384 385 387 389 390 391 396 442 444 444 445 446 446 451 451 476* 480 481 485 510* 513 519 520 522 523 524 525 527 528 530 531 534 537 537* 541 542 543 549 552 559 565* 565 567 567 574 578 579 583 589 591 605 605 607 607 611 623 623 626 661* 667 668 668 675 686 687 687 701* 703 703 705 709 711 720 720 723 724 740* 741 753* 754 787* 789 795 797 798 799 800 801 802 804 805 806 807 808 818 819 820 821 828 830 830 837 838 870* 872 881 882 882 891 909 916 961* 968 973 978 983 988 1057 1057 1059 1061 1083 1083 1085 1087 1162 1168 1177 1214 1219 1229 1230 1231 1231 1232 1258 1259 1259 1261 1261 1266 1270 1271 1290 1291 1292 1293 1294 1295 1296 1297 1304 1342 1344 1360 1361 1381 1382 1386 1387 1389 1391 1396 1398 1427 1430 1433 1481* 1484 1504 1504 1506 1600 1600 1606 1606 1612 1612 1653* 1656 1657 1657 1660 1661 1662 1687 1688 1688 1724* 1726 1732 1735 1757 1765 1766 1766 1766 1766 1770 1773 1783 1805 1812 1838 1865 1865 1865 1865 1865 1865 1887 1910 1910 1911 1911 1912 1912 1913 1913 1915 1915 1916 1916 1919 1919 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1920 1923 1923 1924 1924 1941 1941 1943 1944 1947 1950 1951 1951 1955 1962 1968 1979 1980 1980 1980 1998 1999 2006 2007 2009 2046 2056 2073 2076 2096 2112 2118 2120 2121 2135 2141 2141 2141 2147 2148 2153 2158 2165 2173 2175 2184 2184 2217 2218 2220 2220 2221 2222 2222 2223 2223 2232 2233 2234 2234 2238 2238 2239 2239 2240 2246 2246 2248 2250 2250 2251 2251 2253 2253 2254 2254 2255 2318 2320 2323 2330 2336 2339 2340 2341 2342 2343 2345 2346 2347 2359 2360 2364 2365 2367 2369 2369 2377 2396 2415 2416 2419 2421 2423 2464 2464 2465 2489 2493 2497 2501 2543 2564 2584 2587 2592 2597 2602 2605 2617 2624 2628 2630 2654 2675 2680 2680 2686 2710 2711 2718 2718 2722 2723 oc_data_struct_ptr parameter pointer dcl 1473 ref 1459 1481 oc_data_version 000020 constant char(4) initial packed unaligned dcl 16-303 ref 519 oc_device_idx parameter fixed bin(17,0) dcl 279 set ref 263 294* oc_entry based structure level 1 dcl 16-149 set ref 1487* 1536* 1560* oc_entry_flags 000327 automatic char(80) packed unaligned dcl 2910 set ref 1870* 1881* oc_entry_ptr 000406 automatic pointer dcl 16-306 set ref 248* 249 255 255 285* 287 292 293 294 295 317* 318 322 330 395 400 401 402 403 404 405 406 408 437* 438 477* 511* 565* 567 579* 580 581 611* 613 614 615 616 617 618 663* 664 665 668* 671 672 677 713* 715 811* 813 813 889* 905 913 914 915 1003* 1004 1019 1020 1021 1032 1038 1043 1044 1045 1046 1047 1049 1056 1064 1065* 1066 1069 1070 1071 1072 1073 1075 1082 1090 1091* 1092 1095 1096 1097 1098 1099 1101 1108 1114 1115 1116 1117 1118 1208* 1209 1214 1214 1218 1219 1220 1221 1222 1223 1224 1225 1226 1352 1353 1354 1355 1361* 1362 1364 1366 1370 1372 1373 1374 1427* 1428 1484* 1485 1487 1494 1496 1497 1499 1500 1501 1507 1510 1512 1517 1521 1525 1529 1536 1540 1549 1551 1552 1558 1560 1564 1568 1570 1574 1577 1580 1583 1586 1592 1598 1598 1599 1604 1604 1605 1610 1610 1611 1616 1622 1628 1679 1680 1682 1682 1682 1682 1682 1691 1693 1694 1694 1695 1695 1700 1700 1756 1761 1770* 1772 1773 1773 1779 1780 1786 1790 1792 1797 1801 1805* 1808 1809 1812* 1817 1818 1819 1820* 1837* 1852 1857 1861 1861 1862 1863 1870 1870 1870 1870 1870 1870 1881 1914 1915 1916 1945 1972 1973 1978 2028 2030 2036 2040 2041 2046 2047 2048 2052 2053 2065 2071 2075 2095 2097 2098 2099 2100 2101 2106 2110 2113 2120 2135 2135 2142 2148 2148 2158 2158 2165 2165 2168 2176 2177 2178 2191 2307* 2351 2356 2394 2428 2433 2434 2435 2436 2437 2438 2439 2441 2491 2495 2513 2513 2515 2516 2517 2518 2541 2560 2561 2563 2568 2573 2578 2579 2580 2586 2591 2596 2601 2609 2609 2612 2620 2647 2647 2651 2651 2673* 2680* 2681 2682 2684 2685 2687 2688 2689 2712* 2713 2714 oc_entry_ptr_arg parameter pointer dcl 1474 set ref 1459 1485* oc_event based structure level 1 dcl 16-241 oc_flags parameter bit(36) packed unaligned dcl 277 set ref 263 292* oc_line_leng parameter fixed bin(17,0) dcl 280 set ref 263 295* oc_name parameter char(4) dcl 275 set ref 263 285* oc_status 000155 automatic structure level 1 dcl 2874 set ref 1852 1852 2612 2612 oc_trans_output_ 000034 constant entry external dcl 2780 ref 2362 ocdcm_$interrupt_handler 000032 constant entry external dcl 2779 ref 1214 1214 1773 1773 ocdcm_init_flag 1(02) based bit(1) level 2 packed packed unaligned dcl 20-21 set ref 517* 585* old_console_name 000353 automatic char(4) dcl 2911 set ref 1026 1026* 2676* 2681* opc based structure array level 2 dcl 16-90 set ref 579 611 668 1361 1427 1484 1657 1662 1770 1805 1812 2680 opc_card_ptr parameter pointer dcl 1474 ref 1459 1482 opc_flags based structure array level 3 dcl 16-90 set ref 1916* 1920* opc_idx 1 based fixed bin(17,0) level 2 packed packed unaligned dcl 16-149 set ref 1219 1500* opc_name based char(4) array level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 1915* 1919* opc_name parameter char(4) dcl 1648 in procedure "find_oc_entry" ref 1634 1655 1661 oper_request based bit(1) array level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 623* oper_request 2(12) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 404* 1870* 1945 1978 2098 2106* 2176* 2437* 2515* 2620* output_length parameter fixed bin(17,0) dcl 471 set ref 455 482* 491* output_text parameter char(256) packed unaligned dcl 472 set ref 455 483* 492* parm_ptr 000372 automatic pointer dcl 6-19 set ref 548* 549 551* 552 pcw 2 000130 automatic bit(36) level 2 dcl 2871 set ref 1694* 1699* pcw_io 2(09) based bit(1) level 3 packed packed unaligned dcl 16-149 set ref 1551* 1693 2135 2148 pds$process_group_id 000102 external static char(32) packed unaligned dcl 2914 set ref 1032* 1049* 1075* 1101* 1801* 1809* 2449* pds$process_id 000100 external static bit(36) packed unaligned dcl 2913 ref 354 675 705 709 723 798 1168 1726 1735 1911 2218 2231 2245 2340 2722 poll_idx 000355 automatic fixed bin(17,0) dcl 2915 set ref 2005* 2005 2006 2006* 2007 2008* 2009 power 0(01) based bit(1) level 2 packed packed unaligned dcl 2869 ref 2141 printer_on 3(04) based bit(1) level 3 packed packed unaligned dcl 16-90 set ref 520* 741* 754* 1865* 2046 priority_io 42 based structure level 2 dcl 16-90 set ref 380* 795* 837 1261 1261 1947 2076 2336 2377* 2464 2624 priority_io_ptr parameter pointer dcl 783 ref 757 791 843 priv_op 0(03) based bit(1) level 2 packed packed unaligned dcl 1-5 set ref 1829* privileged_mode_ut$unwire_unmask 000040 constant entry external dcl 2782 ref 2743 privileged_mode_ut$wire_and_mask 000036 constant entry external dcl 2781 ref 2736 process_id based bit(36) array level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 1911* process_id 46 based bit(36) level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 798* 2340* process_id 4 000142 automatic bit(36) level 2 in structure "local_io" dcl 2872 in procedure "ocdcm_" set ref 2231* 2245* prompt 6 based char(8) level 2 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 541* 1162* 1606 prompt 2(08) based bit(1) level 3 in structure "oc_entry" packed packed unaligned dcl 16-149 in procedure "ocdcm_" set ref 1628* 1870* 2040 prompted 6(03) 000142 automatic bit(1) level 3 in structure "local_io" packed packed unaligned dcl 2872 in procedure "ocdcm_" set ref 2212* prompted 6(03) based bit(1) level 3 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 1875* 2040 2042* prompted 50(03) based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 806* prph_opc_card based structure level 1 dcl 7-8 prph_opc_cardp 000374 automatic pointer dcl 7-6 set ref 546* 555* 556 558 565* 595* 600* 601 1298* 1301* 1302 1304 1305 1452 1482* 1489 1489 1490 1496 1499 1503 1511 1516 1520 1524 1528 1533 1533 1540 1547 1549 1558 1564 1564 ptp 4 000130 automatic pointer level 2 dcl 2871 set ref 1703* pushed_read_cnt based fixed bin(35,0) level 3 dcl 16-90 set ref 2223* 2223 pxss$ring_0_wakeup 000042 constant entry external dcl 2783 ref 1231 1259 2628 queued_special_int_count based fixed bin(35,0) level 3 dcl 16-90 set ref 687* 687 read 50(01) based bit(1) level 4 in structure "oc_data" packed packed unaligned dcl 16-90 in procedure "ocdcm_" set ref 804 819 830 838* 1944 2464 read 6(01) 000142 automatic bit(1) level 3 in structure "local_io" packed packed unaligned dcl 2872 in procedure "ocdcm_" set ref 842 881 893 913 2216 read 6(01) based bit(1) level 3 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 1875* 2035 2468* 2514 read_io based structure level 2 dcl 16-90 set ref 390* 442 446 446 451 451 1941 1980 2222 2222 2232* 2234 2234 2465 read_io_ptr 000102 automatic pointer dcl 2813 set ref 2464* 2465* 2467 2468 2469 2470 2471 2472 read_unechoed_option 2(15) based bit(1) level 3 packed packed unaligned dcl 16-149 set ref 1496* 1497* 1552* 2046 reader_process_id 37 based bit(36) level 2 dcl 16-90 set ref 2218* 2628* reconfig_option 000356 automatic fixed bin(17,0) dcl 2916 set ref 959* 963 967 972 977 982 987 992 1011 1017 1037 1055 1081 1107 1125 1125 1785 1801 1801 1809 1809 1831 reconfig_option_parm parameter fixed bin(17,0) dcl 950 ref 935 959 retry_cnt 7 based fixed bin(17,0) level 2 packed packed unaligned dcl 16-149 set ref 405* 1225* 2438* 2491 2495 2513* 2513 2561* retry_reset 6(06) based bit(1) level 3 in structure "console_io" packed packed unaligned dcl 16-213 in procedure "ocdcm_" set ref 1875* retry_reset 6(06) 000142 automatic bit(1) level 3 in structure "local_io" packed packed unaligned dcl 2872 in procedure "ocdcm_" set ref 2213* rtrim builtin function dcl 2802 ref 1159 1160 2305 2305 2353 save_status_ptr 000110 automatic pointer dcl 2816 set ref 1757* 1783 1838 saved_priority_io 000314 automatic structure level 1 dcl 2287 set ref 2336* 2377 sd based structure level 1 dcl 20-21 sd_ptr 000412 automatic pointer dcl 20-17 set ref 515* 516 517 585 sequence_no 7 000142 automatic fixed bin(35,0) level 2 in structure "local_io" dcl 2872 in procedure "ocdcm_" set ref 2229* 2503 2504 sequence_no 51 based fixed bin(35,0) level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 805* 820 2346 severity 000312 automatic fixed bin(17,0) dcl 2285 set ref 2295* 2309 2316 2343 size 0(12) based fixed bin(24,0) level 2 packed packed unsigned unaligned dcl 2-6 ref 2296 2299 stac builtin function dcl 2803 ref 675 709 1735 stacked_read_cnt 41 based fixed bin(17,0) level 2 packed packed unaligned dcl 16-90 set ref 389* 444* 444 445 1979 2220* 2220 2221 2423* stacq builtin function dcl 2804 ref 723 1168 2722 state 6 based char(4) level 2 dcl 7-8 set ref 1305* 1503 1511* 1516 1520 1524 1528 1533* status 3 000142 automatic bit(36) level 2 dcl 2873 set ref 1862* 1881 1881 status_ptr 20 based pointer level 2 dcl 16-90 set ref 1214* 1430 1433 1757 1773* 1783* 1838* 2112 2118 2120 2121 2135 2141 2141 2141 2147 2148 2153 2158 2165 2175 2184 2184 status_word 12 based bit(36) level 2 dcl 16-149 set ref 1808 1862 2120* string builtin function dcl 2805 ref 1881 1881 sub 0(06) based bit(6) level 2 packed packed unaligned dcl 2878 ref 2175 2184 2184 substr builtin function dcl 2806 ref 558 873 873 906 906 993 993 994 1160 1496 1503 1516 1524 1528 1550 1881 1881 2296 2299 2365 sys_info$collection_1_phase 000104 external static fixed bin(17,0) dcl 4-8 ref 607 607 622 1127 1266 1382 2319 2323 syserr 000044 constant entry external dcl 2784 ref 873 906 2314 2333 2334 syserr$binary 000046 constant entry external dcl 2785 ref 1881 syserr_data$syserr_area 000126 external static char(1) dcl 20-14 set ref 515 syserr_real$panic 000050 constant entry external dcl 2786 ref 1269 2311 2325 t based bit(1) level 2 packed packed unaligned dcl 2869 set ref 1430 2112 2118 2121* tag 1 based fixed bin(3,0) level 2 dcl 8-5 ref 1452 tally 0(24) based bit(12) level 2 packed packed unaligned dcl 14-7 set ref 1578* 1584* 1602* 1608* 1614* 2072* tally_residue 3(24) 000155 automatic fixed bin(12,0) level 3 packed packed unsigned unaligned dcl 2874 set ref 2613 text 12 based char level 2 in structure "console_io" dcl 16-213 in procedure "ocdcm_" set ref 483 873 873 906 906 2056 2073 2472* text 12 000142 automatic char level 2 in structure "local_io" dcl 2872 in procedure "ocdcm_" set ref 449 2228* text 54 based char level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 808* 2365* text 12 000314 automatic char level 2 in structure "saved_priority_io" dcl 2287 in procedure "report_error" set ref 2334* this_part_length 000364 automatic fixed bin(21,0) dcl 2919 set ref 2355* 2362* 2373 2374 time based fixed bin(71,0) array level 3 dcl 16-90 set ref 1910* time_lock_expires 000360 automatic fixed bin(71,0) dcl 2917 set ref 1732* 1734 time_out 0(18) 000142 automatic bit(1) level 2 packed packed unaligned dcl 2873 set ref 1859* time_queued 42 based fixed bin(71,0) level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 797* 2339* time_queued based fixed bin(71,0) array level 3 in structure "oc_data" dcl 16-90 in procedure "ocdcm_" set ref 480 time_queued 000142 automatic fixed bin(71,0) level 2 in structure "local_io" dcl 2872 in procedure "ocdcm_" set ref 2230* 2233 2235 2244* 2248 2257 2507 time_queued based fixed bin(71,0) level 2 in structure "console_io" dcl 16-213 in procedure "ocdcm_" set ref 2628* to_write_length 000365 automatic fixed bin(21,0) dcl 2920 set ref 2353* 2358 2362* 2374* 2374 to_write_ptr 000104 automatic pointer dcl 2814 set ref 2352* 2362* 2373* 2373 true constant bit(1) initial packed unaligned dcl 2821 ref 325 330 381 385 391 484 516 520 530 531 534 549 552 556 560 585 602 623 654 677 686 754 821 915 973 978 983 1020 1043 1047 1057 1069 1073 1083 1095 1099 1117 1118 1218 1220 1226 1229 1302 1306 1354 1355 1363 1372 1374 1389 1398 1433 1452 1494 1497 1507 1512 1517 1521 1525 1529 1548 1551 1628 1680 1779 1781 1813 1954 2004 2038 2042 2066 2070 2100 2102 2106 2226 2240 2255 2320 2331 2347 2378 2392 2415 2419 2468 2469 2498 2505 2603 2625 2652 2655 2688 2689 2714 2737 type 0(19) 000142 automatic bit(2) level 2 packed packed unaligned dcl 2873 set ref 1860* unspec builtin function dcl 2807 set ref 292 380* 384* 390* 513* 1487* 1536* 1560* 1854* 2120 2467* user_io_ptr parameter pointer dcl 865 ref 848 873 873 873 873 879 906 906 906 906 version 1 based char(4) level 2 dcl 16-90 set ref 519* wait_timer 000362 automatic fixed bin(71,0) dcl 2918 set ref 2136* 2137 wire_mask 000366 automatic fixed bin(71,0) dcl 2921 set ref 2736* 2743* wire_ptw_ptr 000106 automatic pointer dcl 2815 set ref 2736* 2743* wired_and_masked 000126 automatic bit(1) initial dcl 2840 set ref 2737* 2742 2744* 2840* wired_hardcore_data$abort_request 000052 external static bit(1) dcl 2842 set ref 2037* 2102* wlog_header based structure level 1 dcl 20-33 wmess_header based structure level 1 dcl 20-52 word4 3 000155 automatic structure level 2 dcl 2874 word_length 000354 automatic fixed bin(19,0) dcl 2912 set ref 2362* 2364 2365 wordno builtin function dcl 2808 ref 1600 1606 1612 2056 2073 write_q_full 3(05) based bit(1) level 3 packed packed unaligned dcl 16-90 set ref 387* 485* 881 1865* 1950 2240* 2255* 2421* 2602* write_q_full_cnt based fixed bin(35,0) level 3 dcl 16-90 set ref 882* 882 2239* 2239 2254* 2254 write_queue based structure array level 2 dcl 16-90 set ref 384* 481 1951 1962 2246 write_return 16 based bit(36) level 2 dcl 16-90 set ref 542* 1600 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BCE_CRASH_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-20 COLLECTION_1_PHASE_NAMES internal static char(16) initial array packed unaligned dcl 4-23 CRASH internal static fixed bin(17,0) initial dcl 19-7 CRASH_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-18 EARLY_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-10 FREED_LOCK internal static fixed bin(35,0) initial dcl 16-262 GOT_LOCK internal static fixed bin(35,0) initial dcl 16-262 IOM_CARD_WORD internal static char(4) initial dcl 8-19 Interseg_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 LOG internal static fixed bin(17,0) initial dcl 19-7 PARM_CARD_WORD internal static char(4) initial dcl 6-29 Quick_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 READ_NOT_IN_PROGRESS internal static fixed bin(35,0) initial dcl 16-262 RE_EARLY_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-19 SBL_access_audit internal static fixed bin(17,0) initial dcl 18-47 SBL_config_deck internal static fixed bin(17,0) initial dcl 18-47 SBL_disk_err internal static fixed bin(17,0) initial dcl 18-47 SBL_end_of_table internal static fixed bin(17,0) initial dcl 18-47 SBL_fnp_poll internal static fixed bin(17,0) initial dcl 18-47 SBL_hw_fault internal static fixed bin(17,0) initial dcl 18-47 SBL_ibm3270_mde internal static fixed bin(17,0) initial dcl 18-47 SBL_io_err internal static fixed bin(17,0) initial dcl 18-47 SBL_io_err_detail internal static fixed bin(17,0) initial dcl 18-47 SBL_mdc_del_uidpath internal static fixed bin(17,0) initial dcl 18-47 SBL_mmdam internal static fixed bin(17,0) initial dcl 18-47 SBL_mos_err internal static fixed bin(17,0) initial dcl 18-47 SBL_mpc_poll internal static fixed bin(17,0) initial dcl 18-47 SBL_random_segdamage internal static fixed bin(17,0) initial dcl 18-47 SBL_read_nc internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_10 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_12 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_14 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_15 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_18 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_4 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_6 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_7 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_8 internal static fixed bin(17,0) initial dcl 18-47 SBL_unused_9 internal static fixed bin(17,0) initial dcl 18-47 SBL_verify_lock internal static fixed bin(17,0) initial dcl 18-47 SBL_vtoc_salv_dam internal static fixed bin(17,0) initial dcl 18-47 SBL_vtoce internal static fixed bin(17,0) initial dcl 18-47 SBL_zerpag internal static fixed bin(17,0) initial dcl 18-47 SB_access_audit internal static fixed bin(17,0) initial dcl 18-47 SB_access_audit_data_class internal static varying char(16) initial dcl 18-21 SB_char_data_classes internal static varying char(16) initial array dcl 18-89 SB_config_deck internal static fixed bin(17,0) initial dcl 18-47 SB_config_deck_data_class internal static varying char(16) initial dcl 18-21 SB_disk_err internal static fixed bin(17,0) initial dcl 18-47 SB_end_of_table internal static fixed bin(17,0) initial dcl 18-47 SB_fnp_poll internal static fixed bin(17,0) initial dcl 18-47 SB_fnp_poll_data_class internal static varying char(16) initial dcl 18-21 SB_hw_fault internal static fixed bin(17,0) initial dcl 18-47 SB_hwfault_data_class internal static varying char(16) initial dcl 18-21 SB_ibm3270_mde internal static fixed bin(17,0) initial dcl 18-47 SB_ibm3270_mde_data_class internal static varying char(16) initial dcl 18-21 SB_io_err internal static fixed bin(17,0) initial dcl 18-47 SB_io_err_detail internal static fixed bin(17,0) initial dcl 18-47 SB_io_status_data_class internal static varying char(16) initial dcl 18-21 SB_mdc_del_uidpath internal static fixed bin(17,0) initial dcl 18-47 SB_mdc_del_uidpath_data_class internal static varying char(16) initial dcl 18-21 SB_mmdam internal static fixed bin(17,0) initial dcl 18-47 SB_mmdam_data_class internal static varying char(16) initial dcl 18-21 SB_mos_data_class internal static varying char(16) initial dcl 18-21 SB_mos_err internal static fixed bin(17,0) initial dcl 18-47 SB_mpc_poll internal static fixed bin(17,0) initial dcl 18-47 SB_mpc_poll_data_class internal static varying char(16) initial dcl 18-21 SB_random_segdamage internal static fixed bin(17,0) initial dcl 18-47 SB_read_nc internal static fixed bin(17,0) initial dcl 18-47 SB_segdamage_data_class internal static varying char(16) initial dcl 18-21 SB_unused_10 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_12 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_14 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_15 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_18 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_4 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_6 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_7 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_8 internal static fixed bin(17,0) initial dcl 18-47 SB_unused_9 internal static fixed bin(17,0) initial dcl 18-47 SB_verify_lock internal static fixed bin(17,0) initial dcl 18-47 SB_voldamage_data_class internal static varying char(16) initial dcl 18-21 SB_vtoc_salv_dam internal static fixed bin(17,0) initial dcl 18-47 SB_vtoce internal static fixed bin(17,0) initial dcl 18-47 SB_vtoce_data_class internal static varying char(16) initial dcl 18-21 SB_zerpag internal static fixed bin(17,0) initial dcl 18-47 SHUT_INITIALIZATION internal static fixed bin(17,0) initial dcl 4-21 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 19-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 19-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 19-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 19-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 19-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 19-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 19-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 19-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 19-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 19-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 19-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 19-7 arg_descriptor_ptr automatic pointer dcl 2-34 command_name_arglist based structure level 1 dcl 3-25 config_data_$ccu_model_names external static structure level 1 dcl 5-178 config_data_$chnl_cardx external static fixed bin(17,0) dcl 5-27 config_data_$clok_cardx external static fixed bin(17,0) dcl 5-29 config_data_$config_cards external static structure level 1 dcl 5-94 config_data_$cpu_cardx external static fixed bin(17,0) dcl 5-31 config_data_$disk_drive_model_names external static structure level 1 dcl 5-148 config_data_$fnp_cardx external static fixed bin(17,0) dcl 5-33 config_data_$intk_cardx external static fixed bin(17,0) dcl 5-35 config_data_$iom_cardx external static fixed bin(17,0) dcl 5-37 config_data_$ipc_fips_cardx external static fixed bin(17,0) dcl 5-45 config_data_$ipc_msp_model_names external static structure level 1 dcl 5-130 config_data_$ipc_mtp_model_names external static structure level 1 dcl 5-139 config_data_$mem_cardx external static fixed bin(17,0) dcl 5-39 config_data_$mpc_cardx external static fixed bin(17,0) dcl 5-49 config_data_$mpc_msp_cardx external static fixed bin(17,0) dcl 5-41 config_data_$mpc_msp_model_names external static structure level 1 dcl 5-104 config_data_$mpc_mtp_cardx external static fixed bin(17,0) dcl 5-43 config_data_$mpc_mtp_model_names external static structure level 1 dcl 5-113 config_data_$mpc_urp_cardx external static fixed bin(17,0) dcl 5-47 config_data_$mpc_urp_model_names external static structure level 1 dcl 5-122 config_data_$mpcs_cardx external static fixed bin(17,0) dcl 5-57 config_data_$mpcs_msp_cardx external static fixed bin(17,0) dcl 5-51 config_data_$mpcs_mtp_cardx external static fixed bin(17,0) dcl 5-53 config_data_$mpcs_urp_cardx external static fixed bin(17,0) dcl 5-55 config_data_$parm_cardx external static fixed bin(17,0) dcl 5-59 config_data_$part_cardx external static fixed bin(17,0) dcl 5-61 config_data_$printer_model_names external static structure level 1 dcl 5-164 config_data_$prph_cardx external static fixed bin(17,0) dcl 5-77 config_data_$prph_ccu_cardx external static fixed bin(17,0) dcl 5-71 config_data_$prph_dsk_cardx external static fixed bin(17,0) dcl 5-63 config_data_$prph_opc_cardx external static fixed bin(17,0) dcl 5-75 config_data_$prph_prt_cardx external static fixed bin(17,0) dcl 5-65 config_data_$prph_pun_cardx external static fixed bin(17,0) dcl 5-69 config_data_$prph_rdr_cardx external static fixed bin(17,0) dcl 5-67 config_data_$prph_tap_cardx external static fixed bin(17,0) dcl 5-73 config_data_$punch_model_names external static structure level 1 dcl 5-185 config_data_$reader_model_names external static structure level 1 dcl 5-171 config_data_$root_cardx external static fixed bin(17,0) dcl 5-79 config_data_$salv_cardx external static fixed bin(17,0) dcl 5-81 config_data_$schd_cardx external static fixed bin(17,0) dcl 5-83 config_data_$sst_cardx external static fixed bin(17,0) dcl 5-85 config_data_$stok_cardx external static fixed bin(17,0) dcl 5-87 config_data_$tape_drive_model_names external static structure level 1 dcl 5-156 config_data_$tbls_cardx external static fixed bin(17,0) dcl 5-89 config_data_$udsk_cardx external static fixed bin(17,0) dcl 5-91 display_cpu_error_binary_defs internal static fixed bin(17,0) initial array dcl 18-144 extended_arg_descriptor based structure level 1 dcl 2-21 fixed_arg_descriptor based structure level 1 dcl 2-13 io_chnl_util$canonicalize_chanid 000000 constant entry external dcl 9-8 io_chnl_util$name_to_iom 000000 constant entry external dcl 9-16 io_manager$assign_add 000000 constant entry external dcl 10-15 io_manager$connect 000000 constant entry external dcl 10-26 io_manager$connect_direct 000000 constant entry external dcl 10-32 io_manager$ignore_interrupt 000000 constant entry external dcl 10-41 io_manager$unassign_delete 000000 constant entry external dcl 10-23 io_manager$workspace_tdcw 000000 constant entry external dcl 10-47 io_manager_arg_ptr automatic pointer dcl 10-49 io_msgp automatic pointer dcl 13-12 io_status_entry_ptr automatic pointer dcl 11-6 io_status_word_ptr automatic pointer dcl 12-4 numeric_parm based structure level 1 dcl 6-21 oc_event_ptr automatic pointer dcl 16-306 parm_card based structure level 1 dcl 6-5 parm_card_array based structure level 1 unaligned dcl 6-14 parm_cardp automatic pointer dcl 6-3 pcw based structure level 1 dcl 15-6 pcwp automatic pointer dcl 15-4 string_parm based structure level 1 dcl 6-25 syserr_binary_address_damage_mask internal static bit(36) initial packed unaligned dcl 18-142 syserr_binary_mos_mask internal static bit(36) initial packed unaligned dcl 18-139 syserr_binary_seg_damage_mask internal static bit(36) initial packed unaligned dcl 18-140 syserr_binary_vol_damage_mask internal static bit(36) initial packed unaligned dcl 18-141 syserr_data$wired_log_area external static char(1) dcl 20-14 tdcw based structure level 1 dcl 14-14 tdcwp automatic pointer dcl 14-4 wlog based structure level 1 dcl 20-29 wlog_ptr automatic pointer dcl 20-17 wmess based structure level 1 dcl 20-47 wmess_ptr automatic pointer dcl 20-17 NAMES DECLARED BY EXPLICIT CONTEXT. BAIL_OUT 006230 constant label dcl 1168 ref 2028 SEARCH_WRITE_QUEUE 013452 constant label dcl 1959 ref 1969 assign_bootload_console 006301 constant entry internal dcl 1186 ref 408 581 1024 1026 1364 2009 2441 bump_io_to_mc 006457 constant entry internal dcl 1239 ref 820 896 2346 2504 2507 change_console_state 006633 constant entry internal dcl 1278 ref 1022 1048 1074 1100 1119 1227 1402 console_free 001250 constant entry external dcl 224 console_in_imu 007607 constant entry internal dcl 1438 ref 1501 console_info 001346 constant entry external dcl 263 console_recovery 007122 constant entry internal dcl 1318 ref 582 590 2321 2429 2443 2496 console_responds_to_bell 007510 constant entry internal dcl 1410 ref 1999 2008 console_timed_out 017227 constant label dcl 2652 ref 2647 drain_io 001422 constant entry external dcl 301 err_event_chan 001532 constant entry external dcl 334 esd_reset 001552 constant entry external dcl 358 fill_oc_entry 007677 constant entry internal dcl 1459 ref 565 find_oc_entry 010735 constant entry internal dcl 1634 ref 248 285 317 437 663 713 811 889 1003 1065 1091 1208 1837 2307 2712 get_input 002013 constant entry external dcl 414 get_mc_output 002172 constant entry external dcl 455 init_all_consoles 002323 constant entry external dcl 498 initiate_io 011101 constant entry internal dcl 1670 ref 1429 1795 1974 2059 2080 2398 2524 2545 interrupt_handler 003571 constant entry external dcl 630 locate_bootload 012136 constant label dcl 1825 ref 1777 lock_oc_data 011227 constant entry internal dcl 1711 ref 246 321 440 793 832 887 1001 1157 lock_unlock_mca 011347 constant entry internal dcl 1742 ref 1128 log_console_error 012346 constant entry internal dcl 1842 ref 2491 log_console_event 012776 constant entry internal dcl 1893 ref 446 451 486 494 626 916 1261 1262 1787 1793 1887 2043 2049 2054 2067 2076 2078 2096 2222 2234 2249 2396 2493 2543 2564 2569 2574 2587 2592 2597 2605 2617 2630 2654 next_console_io 013335 constant entry internal dcl 1930 ref 325 2032 null_ocep 005257 constant label dcl 1005 set ref 1066 1092 ocdcm_ 001235 constant entry external dcl 104 poll_for_console 013611 constant entry internal dcl 1989 ref 1343 poll_for_timeout 004057 constant entry external dcl 692 printer_off 004250 constant entry external dcl 730 printer_on 004265 constant entry external dcl 744 priority_io 004304 constant entry external dcl 757 process_io 013777 constant entry internal dcl 2017 ref 326 681 718 829 924 927 2370 2716 process_io_status 014311 constant entry internal dcl 2086 ref 323 679 716 815 834 923 1762 1798 2371 2715 queue_console_io 014631 constant entry internal dcl 2198 ref 894 925 queue_io 004556 constant entry external dcl 848 reconfigure 005111 constant entry external dcl 935 report_error 015234 constant entry internal dcl 2263 ref 538 561 562 575 583 591 618 657 706 724 1032 1049 1059 1075 1085 1101 1177 1272 1384 1404 1490 1510 1533 1535 1558 1568 1727 1738 1801 1809 2449 2723 reset_channel 016101 constant entry internal dcl 2382 ref 410 2447 2523 reset_console 016134 constant entry internal dcl 2404 ref 1012 reset_read 016333 constant entry internal dcl 2455 ref 443 2179 2186 2424 2519 2621 retry_io 016376 constant entry internal dcl 2478 ref 2114 2143 2154 2169 2192 send_newline 016564 constant entry internal dcl 2532 ref 2180 2187 2520 2618 set_prompt 006133 constant entry external dcl 1139 terminate_io 016611 constant entry internal dcl 2551 ref 2149 2161 timeout 017153 constant entry internal dcl 2637 ref 2112 unassign_bootload_console 017261 constant entry internal dcl 2662 ref 393 1018 1063 1089 1350 2002 2426 unlock_oc_data 017371 constant entry internal dcl 2695 ref 250 257 327 448 683 823 831 840 900 918 929 1005 1013 1028 1033 1039 1051 1077 1103 1109 1120 1130 1134 1164 1266 2310 2324 unwire_and_unmask 017550 constant entry internal dcl 2740 ref 1181 2727 wire_and_mask 017525 constant entry internal dcl 2733 ref 676 1730 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 20714 21044 17650 20724 Length 22056 17650 130 776 1043 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ocdcm_ 814 external procedure is an external procedure. assign_bootload_console 90 internal procedure is called by several nonquick procedures. bump_io_to_mc 108 internal procedure is called by several nonquick procedures. change_console_state 74 internal procedure is called by several nonquick procedures. console_recovery 168 internal procedure is called by several nonquick procedures. console_responds_to_bell internal procedure shares stack frame of internal procedure console_recovery. console_in_imu internal procedure shares stack frame of external procedure ocdcm_. fill_oc_entry internal procedure shares stack frame of external procedure ocdcm_. find_oc_entry 85 internal procedure is called by several nonquick procedures. initiate_io 72 internal procedure is called by several nonquick procedures. lock_oc_data internal procedure shares stack frame of external procedure ocdcm_. lock_unlock_mca internal procedure shares stack frame of external procedure ocdcm_. log_console_error internal procedure shares stack frame of internal procedure process_io_status. log_console_event 68 internal procedure is called by several nonquick procedures. next_console_io 68 internal procedure is called by several nonquick procedures. poll_for_console internal procedure shares stack frame of internal procedure console_recovery. process_io 84 internal procedure is called by several nonquick procedures. process_io_status 322 internal procedure is called by several nonquick procedures. queue_console_io internal procedure shares stack frame of external procedure ocdcm_. report_error 254 internal procedure uses auto adjustable storage, and is declared options(variable). reset_channel 72 internal procedure is called by several nonquick procedures. reset_console internal procedure shares stack frame of external procedure ocdcm_. reset_read 64 internal procedure is called by several nonquick procedures. retry_io internal procedure shares stack frame of internal procedure process_io_status. send_newline internal procedure shares stack frame of internal procedure process_io_status. terminate_io internal procedure shares stack frame of internal procedure process_io_status. timeout internal procedure shares stack frame of internal procedure process_io_status. unassign_bootload_console 74 internal procedure is called by several nonquick procedures. unlock_oc_data 94 internal procedure is called by several nonquick procedures. wire_and_mask 70 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ocdcm_ 000100 console_data_ptr ocdcm_ 000102 read_io_ptr ocdcm_ 000104 to_write_ptr ocdcm_ 000106 wire_ptw_ptr ocdcm_ 000110 save_status_ptr ocdcm_ 000112 audit_flag ocdcm_ 000113 console_found ocdcm_ 000114 console_is_free ocdcm_ 000115 continue_flag ocdcm_ 000116 done ocdcm_ 000117 first_search_pass ocdcm_ 000120 found ocdcm_ 000121 i_saved_priority_io ocdcm_ 000122 entered_via_interrupt ocdcm_ 000123 mca_lock_unlock_success ocdcm_ 000124 must_unassign ocdcm_ 000125 console_io_timeout ocdcm_ 000126 wired_and_masked ocdcm_ 000130 iom_args ocdcm_ 000142 local_io ocdcm_ 000142 log_message ocdcm_ 000155 oc_status ocdcm_ 000175 ad_code ocdcm_ 000176 audit_eventflags ocdcm_ 000177 bootload_console_name ocdcm_ 000200 console_name ocdcm_ 000201 console_to_check ocdcm_ 000202 console_io_flags ocdcm_ 000226 console_line_length ocdcm_ 000227 cpu_cnt ocdcm_ 000230 device_type ocdcm_ 000234 entrypoint ocdcm_ 000244 err_code ocdcm_ 000245 error_msg ocdcm_ 000271 first_io_slot ocdcm_ 000272 idx ocdcm_ 000273 last_io_slot ocdcm_ 000274 local_time ocdcm_ 000276 mca_to_unlock ocdcm_ 000300 new_prompt ocdcm_ 000302 new_state ocdcm_ 000303 oc_data_flags ocdcm_ 000327 oc_entry_flags ocdcm_ 000353 old_console_name ocdcm_ 000354 word_length ocdcm_ 000355 poll_idx ocdcm_ 000356 reconfig_option ocdcm_ 000360 time_lock_expires ocdcm_ 000362 wait_timer ocdcm_ 000364 this_part_length ocdcm_ 000365 to_write_length ocdcm_ 000366 wire_mask ocdcm_ 000370 extended_arg_type ocdcm_ 000372 parm_ptr ocdcm_ 000374 prph_opc_cardp ocdcm_ 000376 iom_cardp ocdcm_ 000400 dcwp ocdcm_ 000402 idcwp ocdcm_ 000404 oc_data_ptr ocdcm_ 000406 oc_entry_ptr ocdcm_ 000410 console_io_ptr ocdcm_ 000412 sd_ptr ocdcm_ report_error 000100 arg_list_ptr report_error 000102 entrypoint_name report_error 000112 error_msg report_error 000212 error_buffer report_error 000312 severity report_error 000314 saved_priority_io report_error THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_e_as r_le_a alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac fl2_to_fx2 tra_ext_1 alloc_auto_adj stac_mac mpfx2 shorten_stack ext_entry int_entry repeat set_chars_eis fetch_chars_eis stacq_mac clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absadr access_audit_$log_general arg_list_ptr_ config_$find config_$find_parm cv_dec_check_ formline_ io_chnl_util$iom_to_name io_manager$assign io_manager$connect_abs io_manager$get_status io_manager$mask io_manager$unassign ioa_$rsnnl level$get oc_trans_output_ ocdcm_$interrupt_handler privileged_mode_ut$unwire_unmask privileged_mode_ut$wire_and_mask pxss$ring_0_wakeup syserr syserr$binary syserr_real$panic THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$lock_mca access_operations_$unlock_mca config_data_$console_model_names error_table_$action_not_performed error_table_$bad_arg error_table_$dev_nt_assnd error_table_$device_busy error_table_$device_not_active error_table_$no_operation error_table_$resource_not_free error_table_$timeout oc_data$ pds$process_group_id pds$process_id sys_info$collection_1_phase syserr_data$syserr_area wired_hardcore_data$abort_request CONSTANTS 017574 aa 000002000000 017575 aa 000000000000 017576 aa 600000000041 017577 aa 000412000000 017600 aa 000004000000 017601 aa 000000000000 017602 aa 600000000041 017603 aa 000235000000 017604 aa 600000000041 017605 aa 000236000000 017606 aa 777700777777 017607 aa 777777777700 017610 aa 777773777777 017612 aa 077777000043 017613 aa 000001000000 017614 aa 773777777777 017616 aa 000002000000 017617 aa 000000000000 017620 aa 600000000041 017621 aa 000274000000 017622 aa 737777777777 017623 aa 757777777777 017624 aa 000010000000 017625 aa 000000000000 017626 aa 600000000041 017627 aa 000404000000 017630 aa 600000000041 017631 aa 000645000000 017632 aa 600000000041 017633 aa 000374000000 017634 aa 600000000041 017635 aa 000406000000 017636 aa 777737777777 017637 aa 777677777777 017640 aa 777767777777 017641 aa 777757777777 017642 aa 777577777777 017643 aa 377777777777 017644 aa 767777777777 017645 aa 577777777777 017646 aa 677777777777 000000 aa 000000000001 000001 aa 000000000001 000002 aa 000000000012 000003 aa 000000000000 000004 aa 000000000002 000005 aa 000000000000 000006 aa 000000000132 000007 aa 000000000000 000010 aa 000000000132 000011 aa 000000000000 000012 aa 000000000001 000013 aa 000000000000 000014 aa 000000000012 000015 aa 000000000000 000016 aa 000000000036 000017 aa 000000000036 000020 aa 061 056 063 040 1.3 000021 aa 000000000045 000022 aa 000000000043 000023 aa 000000000041 000024 aa 000000000036 000025 aa 000000000035 000026 aa 000000000032 000027 aa 000000000031 000030 aa 000000000030 000031 aa 000000000026 000032 aa 000000000025 000033 aa 000000000024 000034 aa 000000000023 000035 aa 000000000037 000036 aa 524000000036 000037 aa 051 072 040 000 ): 000040 aa 000000000040 000041 aa 404000000013 000042 aa 524000000203 000043 aa 524000000150 000044 aa 524000000146 000045 aa 524000000155 000046 aa 524000000006 000047 aa 514000000044 000050 aa 524000000022 000051 aa 524000000074 000052 aa 514000000006 000053 aa 514000000001 000054 aa 524000000103 000055 aa 524000000030 000056 aa 524000000077 000057 aa 160 143 167 000 pcw 000060 aa 524000000044 000061 aa 524000000043 000062 aa 141 154 164 000 alt 000063 aa 155 141 163 153 mask 000064 aa 524000000070 000065 aa 157 160 143 172 opcz 000066 aa 157 160 143 141 opca 000067 aa 406000000021 000070 aa 151 151 157 143 iioc 000071 aa 151 155 165 000 imu 000072 aa 151 157 155 040 iom 000073 aa 524000000031 000074 aa 524000000062 000075 aa 404000000005 000076 aa 526000000120 000077 aa 157 146 146 040 off 000100 aa 151 157 040 040 io 000101 aa 141 154 164 040 alt 000102 aa 157 156 040 040 on 000103 aa 524000000034 000104 aa 524000000061 017647 aa 055 076 000 000 -> 000105 aa 524000000052 000106 aa 524000000045 000107 aa 524000000054 000110 aa 524000000002 000111 aa 524000000000 000112 aa 524000000016 000113 aa 524000000014 000114 aa 524000000015 000115 aa 526000000020 000116 aa 524000000041 000117 aa 157 146 146 000 off 000120 aa 111 057 117 000 I/O 000121 aa 143 160 165 040 cpu 000122 aa 524000000035 000123 aa 524000000042 000124 aa 524000000026 000125 aa 524000000053 000126 aa 524000000037 000127 aa 157 160 143 000 opc 000130 aa 160 162 160 150 prph 000131 aa 143 154 163 164 clst 000132 aa 143 143 162 146 ccrf 000133 aa 177177012015 000134 aa 115 055 076 040 M-> 000135 aa 524000000067 000136 aa 526000000040 000137 aa 050750220000 000140 aa 040 040 040 040 000141 aa 000000000000 000142 aa 000000000021 000143 aa 000000000020 000144 aa 000000000016 000145 aa 000000000015 000146 aa 000000000014 000147 aa 000000000013 000150 aa 000000000010 000151 aa 000000000006 000152 aa 000000000042 000153 aa 524000000010 000154 aa 000000000007 000155 aa 000000000017 000156 aa 000000000022 000157 aa 000000000044 000160 aa 000000000012 000161 aa 000000000011 000162 aa 404000000032 000163 aa 464000000000 000164 aa 404000000003 000165 aa 404000000043 000166 aa 526000000400 000167 aa 410000000107 000170 aa 000000000005 000171 aa 000000000004 000172 aa 404000000021 000173 aa 000000000003 000174 aa 526000000010 000175 aa 516000000044 000176 aa 524000000004 000177 aa 000000000002 000200 aa 516000000001 000201 aa 000000000001 000202 aa 526000000004 000204 aa 115 103 101 040 MCA 000205 aa 136 144 000 000 ^d 000206 aa 115 055 076 040 M-> 000207 aa 040 040 040 040 000210 aa 142 157 157 164 boot 000211 aa 154 157 141 144 load 000212 aa 000000000000 000213 aa 000000000177 000214 aa 777777777777 000215 aa 777777777777 000216 aa 000000000000 000217 aa 000000000000 000220 aa 077777000043 000221 aa 000001000000 000222 aa 162 145 143 157 reco 000223 aa 156 146 151 147 nfig 000224 aa 165 162 145 000 ure 000225 aa 154 157 143 153 lock 000226 aa 137 157 143 137 _oc_ 000227 aa 144 141 164 141 data 000230 aa 151 156 157 160 inop 000231 aa 145 162 141 164 erat 000232 aa 151 166 145 000 ive 000233 aa 141 154 164 145 alte 000234 aa 162 156 141 164 rnat 000235 aa 145 000 000 000 e 000236 aa 145 163 144 137 esd_ 000237 aa 162 145 163 145 rese 000240 aa 164 000 000 000 t 000241 aa 162 145 163 145 rese 000242 aa 164 137 143 157 t_co 000243 aa 156 163 157 154 nsol 000244 aa 145 000 000 000 e 000245 aa 143 157 156 163 cons 000246 aa 157 154 145 137 ole_ 000247 aa 162 145 143 157 reco 000250 aa 166 145 162 171 very 000251 aa 142 165 155 160 bump 000252 aa 137 151 157 137 _io_ 000253 aa 164 157 137 155 to_m 000254 aa 143 000 000 000 c 000255 aa 114 157 143 153 Lock 000256 aa 040 156 157 164 not 000257 aa 040 155 151 156 min 000260 aa 145 056 000 000 e. 000261 aa 165 156 154 157 unlo 000262 aa 143 153 137 157 ck_o 000263 aa 143 137 144 141 c_da 000264 aa 164 141 000 000 ta 000265 aa 115 171 154 157 Mylo 000266 aa 143 153 040 145 ck e 000267 aa 162 162 157 162 rror 000270 aa 056 000 000 000 . 000271 aa 123 171 163 164 Syst 000272 aa 145 155 040 106 em F 000273 aa 141 165 154 164 ault 000274 aa 056 000 000 000 . 000275 aa 165 156 151 156 unin 000276 aa 151 164 151 141 itia 000277 aa 154 151 172 145 lize 000300 aa 144 000 000 000 d 000301 aa 157 143 144 143 ocdc 000302 aa 155 137 044 162 m_$r 000303 aa 145 143 157 156 econ 000304 aa 146 151 147 165 figu 000305 aa 162 145 000 000 re 000306 aa 151 156 164 145 inte 000307 aa 162 162 165 160 rrup 000310 aa 164 137 150 141 t_ha 000311 aa 156 144 154 145 ndle 000312 aa 162 000 000 000 r 000313 aa 050 157 165 164 (out 000314 aa 160 165 164 040 put 000315 aa 144 151 163 143 disc 000316 aa 141 162 144 145 arde 000317 aa 144 051 000 000 d) 000320 aa 151 156 151 164 init 000321 aa 137 141 154 154 _all 000322 aa 137 143 157 156 _con 000323 aa 163 157 154 145 sole 000324 aa 163 000 000 000 s 000325 aa 162 145 164 165 retu 000326 aa 162 156 137 143 rn_c 000327 aa 157 156 166 145 onve 000330 aa 162 163 151 157 rsio 000331 aa 156 137 145 162 n_er 000332 aa 162 157 162 000 ror 000333 aa 114 157 143 153 Lock 000334 aa 040 167 141 151 wai 000335 aa 164 040 164 151 t ti 000336 aa 155 145 162 040 mer 000337 aa 145 170 160 151 expi 000340 aa 162 145 144 056 red. 000341 aa 115 151 163 163 Miss 000342 aa 151 156 147 040 ing 000343 aa 160 162 160 150 prph 000344 aa 040 157 160 143 opc 000345 aa 040 143 141 162 car 000346 aa 144 056 000 000 d. 000347 aa 103 150 141 156 Chan 000350 aa 147 151 156 147 ging 000351 aa 040 163 164 141 sta 000352 aa 164 145 040 157 te o 000353 aa 146 040 136 141 f ^a 000354 aa 040 164 157 040 to 000355 aa 141 154 164 056 alt. 000356 aa 103 157 156 163 Cons 000357 aa 157 154 145 040 ole 000360 aa 162 145 143 157 reco 000361 aa 166 145 162 171 very 000362 aa 040 146 141 151 fai 000363 aa 154 165 162 145 lure 000364 aa 056 000 000 000 . 000365 aa 115 145 163 163 Mess 000366 aa 141 147 145 040 age 000367 aa 103 157 157 162 Coor 000370 aa 144 151 156 141 dina 000371 aa 164 157 162 040 tor 000372 aa 146 141 151 154 fail 000373 aa 165 162 145 056 ure. 000374 aa 122 145 163 145 Rese 000375 aa 164 040 142 157 t bo 000376 aa 157 164 154 157 otlo 000377 aa 141 144 040 143 ad c 000400 aa 157 156 163 157 onso 000401 aa 154 145 040 146 le f 000402 aa 157 162 040 136 or ^ 000403 aa 141 056 000 000 a. 000404 aa 116 157 040 141 No a 000405 aa 143 164 151 166 ctiv 000406 aa 145 040 143 157 e co 000407 aa 156 163 157 154 nsol 000410 aa 145 040 143 157 e co 000411 aa 156 146 151 147 nfig 000412 aa 165 162 145 144 ured 000413 aa 056 000 000 000 . 000414 aa 115 141 170 151 Maxi 000415 aa 155 165 155 040 mum 000416 aa 143 157 156 163 cons 000417 aa 157 154 145 040 ole 000420 aa 143 157 165 156 coun 000421 aa 164 040 145 170 t ex 000422 aa 143 145 145 144 ceed 000423 aa 145 144 056 000 ed. 000424 aa 111 156 166 141 Inva 000425 aa 154 151 144 040 lid 000426 aa 143 150 141 156 chan 000427 aa 156 145 154 040 nel 000430 aa 163 160 145 143 spec 000431 aa 151 146 151 145 ifie 000432 aa 144 040 146 157 d fo 000433 aa 162 040 136 141 r ^a 000434 aa 056 000 000 000 . 000435 aa 124 150 151 163 This 000436 aa 040 143 157 156 con 000437 aa 163 157 154 145 sole 000440 aa 040 167 151 154 wil 000441 aa 154 040 156 157 l no 000442 aa 164 040 142 145 t be 000443 aa 040 143 157 156 con 000444 aa 146 151 147 165 figu 000445 aa 162 145 144 056 red. 000446 aa 111 156 166 141 Inva 000447 aa 154 151 144 040 lid 000450 aa 163 164 141 164 stat 000451 aa 145 040 157 146 e of 000452 aa 040 136 141 040 ^a 000453 aa 146 157 162 040 for 000454 aa 143 157 156 163 cons 000455 aa 157 154 145 040 ole 000456 aa 136 141 056 000 ^a. 000457 aa 101 163 163 151 Assi 000460 aa 147 156 145 144 gned 000461 aa 040 143 157 156 con 000462 aa 163 157 154 145 sole 000463 aa 040 136 141 040 ^a 000464 aa 141 163 040 136 as ^ 000465 aa 141 040 144 145 a de 000466 aa 166 151 143 145 vice 000467 aa 056 000 000 000 . 000470 aa 103 157 156 163 Cons 000471 aa 157 154 145 040 ole 000472 aa 143 150 141 156 chan 000473 aa 156 145 154 040 nel 000474 aa 141 163 163 151 assi 000475 aa 147 156 155 145 gnme 000476 aa 156 164 040 146 nt f 000477 aa 141 151 154 145 aile 000500 aa 144 056 000 000 d. 000501 aa 103 157 156 163 Cons 000502 aa 151 147 156 145 igne 000503 aa 144 040 136 141 d ^a 000504 aa 040 141 163 040 as 000505 aa 141 156 040 111 an I 000506 aa 057 117 040 144 /O d 000507 aa 145 166 151 143 evic 000510 aa 145 040 146 157 e fo 000511 aa 162 040 136 141 r ^a 000512 aa 056 000 000 000 . 000513 aa 103 157 156 163 Cons 000514 aa 157 154 145 040 ole 000515 aa 151 156 157 160 inop 000516 aa 145 162 141 164 erat 000517 aa 151 166 145 054 ive, 000520 aa 040 156 157 040 no 000521 aa 141 154 164 145 alte 000522 aa 162 156 141 164 rnat 000523 aa 145 163 054 040 es, 000524 aa 156 157 040 115 no M 000525 aa 103 056 000 000 C. 000526 aa 103 157 156 163 Cons 000527 aa 157 154 145 040 ole 000530 aa 151 156 157 160 inop 000531 aa 145 162 141 164 erat 000532 aa 151 166 145 054 ive, 000533 aa 040 141 154 164 alt 000534 aa 145 162 156 141 erna 000535 aa 164 145 040 136 te ^ 000536 aa 141 040 141 163 a as 000537 aa 163 151 147 156 sign 000540 aa 145 144 056 000 ed. 000541 aa 115 141 162 153 Mark 000542 aa 145 144 040 136 ed ^ 000543 aa 141 040 141 163 a as 000544 aa 040 141 156 040 an 000545 aa 151 156 157 160 inop 000546 aa 145 162 141 164 erat 000547 aa 151 166 145 040 ive 000550 aa 144 145 166 151 devi 000551 aa 143 145 040 146 ce f 000552 aa 157 162 040 136 or ^ 000553 aa 141 056 000 000 a. 000554 aa 102 157 157 164 Boot 000555 aa 154 157 141 144 load 000556 aa 040 143 157 156 con 000557 aa 163 157 154 145 sole 000560 aa 040 144 145 143 dec 000561 aa 157 156 146 151 onfi 000562 aa 147 165 162 145 gure 000563 aa 144 040 167 151 d wi 000564 aa 164 150 040 103 th C 000565 aa 103 122 106 040 CRF 000566 aa 163 145 164 056 set. 000567 aa 101 163 163 151 Assi 000570 aa 147 156 145 144 gned 000571 aa 040 136 141 040 ^a 000572 aa 141 163 040 141 as a 000573 aa 156 040 141 154 n al 000574 aa 164 145 162 156 tern 000575 aa 141 164 145 040 ate 000576 aa 143 157 156 163 cons 000577 aa 157 154 145 040 ole 000600 aa 146 157 162 040 for 000601 aa 136 141 056 000 ^a. 000602 aa 101 163 163 151 Assi 000603 aa 147 156 145 144 gned 000604 aa 040 136 141 040 ^a 000605 aa 141 163 040 164 as t 000606 aa 150 145 040 142 he b 000607 aa 157 157 164 154 ootl 000610 aa 157 141 144 040 oad 000611 aa 143 157 156 163 cons 000612 aa 157 154 145 040 ole 000613 aa 146 157 162 040 for 000614 aa 136 141 056 000 ^a. 000615 aa 101 144 144 151 Addi 000616 aa 164 151 157 156 tion 000617 aa 141 154 040 143 al c 000620 aa 157 156 163 157 onso 000621 aa 154 145 163 040 les 000622 aa 167 151 154 154 will 000623 aa 040 156 157 164 not 000624 aa 040 142 145 040 be 000625 aa 143 157 156 146 conf 000626 aa 151 147 165 162 igur 000627 aa 145 144 056 000 ed. 000630 aa 103 157 156 163 Cons 000631 aa 157 154 145 040 ole 000632 aa 151 156 157 160 inop 000633 aa 145 162 141 164 erat 000634 aa 151 166 145 054 ive, 000635 aa 040 156 157 040 no 000636 aa 141 154 164 145 alte 000637 aa 162 156 141 164 rnat 000640 aa 145 163 040 141 es a 000641 aa 166 141 151 154 vail 000642 aa 141 142 154 145 able 000643 aa 056 000 000 000 . 000644 aa 103 157 156 163 Cons 000645 aa 157 154 145 040 ole 000646 aa 146 141 151 154 fail 000647 aa 145 144 054 040 ed, 000650 aa 141 163 163 151 assi 000651 aa 147 156 155 145 gnme 000652 aa 156 164 040 157 nt o 000653 aa 146 040 141 154 f al 000654 aa 164 145 162 156 tern 000655 aa 141 164 145 040 ate 000656 aa 136 141 040 146 ^a f 000657 aa 141 151 154 145 aile 000660 aa 144 056 000 000 d. 000661 aa 157 143 144 143 ocdc 000662 aa 155 137 040 050 m_ ( 000663 aa 142 165 155 160 bump 000664 aa 137 151 157 137 _io_ 000665 aa 164 157 137 155 to_m 000666 aa 143 051 072 040 c): 000667 aa 103 157 156 163 Cons 000670 aa 157 154 145 040 ole 000671 aa 162 145 143 157 reco 000672 aa 166 145 162 171 very 000673 aa 040 146 141 151 fai 000674 aa 154 165 162 145 lure 000675 aa 056 000 000 000 . 000676 aa 157 143 144 143 ocdc 000677 aa 155 137 040 050 m_ ( 000700 aa 162 145 160 157 repo 000701 aa 162 164 137 145 rt_e 000702 aa 162 162 157 162 rror 000703 aa 051 072 040 114 ): L 000704 aa 117 123 124 040 OST 000705 aa 103 117 116 123 CONS 000706 aa 117 114 105 040 OLE 000707 aa 111 057 117 056 I/O. 000710 aa 040 111 057 117 I/O 000711 aa 040 146 157 154 fol 000712 aa 154 157 167 163 lows 000713 aa 056 056 056 000 ... 000714 aa 111 154 154 145 Ille 000715 aa 147 141 154 040 gal 000716 aa 143 157 156 163 cons 000717 aa 157 154 145 040 ole 000720 aa 156 141 155 145 name 000721 aa 040 050 136 141 (^a 000722 aa 051 040 163 160 ) sp 000723 aa 145 143 151 146 ecif 000724 aa 151 145 144 056 ied. 000725 aa 040 111 164 040 It 000726 aa 167 151 154 154 will 000727 aa 040 142 145 040 be 000730 aa 151 147 156 157 igno 000731 aa 162 145 144 056 red. 000732 aa 125 156 141 142 Unab 000733 aa 154 145 040 164 le t 000734 aa 157 040 144 145 o de 000735 aa 164 145 162 155 term 000736 aa 151 156 145 040 ine 000737 aa 141 142 163 157 abso 000740 aa 154 165 164 145 lute 000741 aa 040 155 145 155 mem 000742 aa 157 162 171 040 ory 000743 aa 141 144 144 162 addr 000744 aa 145 163 163 040 ess 000745 aa 157 146 040 157 of o 000746 aa 143 137 144 141 c_da 000747 aa 164 141 056 000 ta. 000750 aa 115 103 101 136 MCA^ 000751 aa 133 050 136 062 [(^2 000752 aa 056 063 142 051 .3b) 000753 aa 136 073 136 163 ^;^s 000754 aa 136 135 040 151 ^] i 000755 aa 156 160 165 164 nput 000756 aa 040 164 150 162 thr 000757 aa 157 165 147 150 ough 000760 aa 040 136 141 054 ^a, 000761 aa 040 136 133 144 ^[d 000762 aa 151 163 136 073 is^; 000763 aa 145 156 136 135 en^] 000764 aa 141 142 154 145 able 000765 aa 144 040 142 171 d by 000766 aa 040 136 141 056 ^a. 000767 aa 125 156 153 156 Unkn 000770 aa 157 167 156 040 own 000771 aa 155 157 144 145 mode 000772 aa 154 054 040 136 l, ^ 000773 aa 151 054 040 163 i, s 000774 aa 160 145 143 151 peci 000775 aa 146 151 145 144 fied 000776 aa 040 146 157 162 for 000777 aa 040 136 141 056 ^a. 001000 aa 040 111 164 040 It 001001 aa 167 151 154 154 will 001002 aa 040 156 157 164 not 001003 aa 040 142 145 040 be 001004 aa 143 157 156 146 conf 001005 aa 151 147 165 162 igur 001006 aa 145 144 056 000 ed. 001007 aa 124 151 155 145 Time 001010 aa 157 165 164 040 out 001011 aa 145 170 145 143 exec 001012 aa 165 164 151 156 utin 001013 aa 147 040 115 103 g MC 001014 aa 101 136 133 050 A^[( 001015 aa 136 062 056 063 ^2.3 001016 aa 142 051 136 073 b)^; 001017 aa 136 163 136 135 ^s^] 001020 aa 040 136 133 114 ^[L 001021 aa 117 103 113 136 OCK^ 001022 aa 073 125 116 114 ;UNL 001023 aa 117 103 113 136 OCK^ 001024 aa 135 040 157 156 ] on 001025 aa 040 136 141 040 ^a 001026 aa 146 157 162 040 for 001027 aa 136 141 056 000 ^a. 001030 aa 136 133 141 154 ^[al 001031 aa 145 162 164 136 ert^ 001032 aa 061 170 136 135 1x^] 001033 aa 136 133 141 154 ^[al 001034 aa 145 162 164 145 erte 001035 aa 144 136 061 170 d^1x 001036 aa 136 135 136 133 ^]^[ 001037 aa 162 145 141 144 read 001040 aa 136 061 170 136 ^1x^ 001041 aa 135 136 133 160 ]^[p 001042 aa 162 157 155 160 romp 001043 aa 164 145 144 136 ted^ 001044 aa 061 170 136 135 1x^] 001045 aa 136 133 151 156 ^[in 001046 aa 137 160 162 157 _pro 001047 aa 147 162 145 163 gres 001050 aa 163 136 061 170 s^1x 001051 aa 136 135 136 133 ^]^[ 001052 aa 143 157 155 160 comp 001053 aa 154 145 164 145 lete 001054 aa 144 136 061 170 d^1x 001055 aa 136 135 136 133 ^]^[ 001056 aa 162 145 164 162 retr 001057 aa 171 137 162 145 y_re 001060 aa 163 145 164 136 set^ 001061 aa 061 170 136 135 1x^] 001062 aa 136 133 151 157 ^[io 001063 aa 137 151 156 137 _in_ 001064 aa 160 162 157 147 prog 001065 aa 162 145 163 163 ress 001066 aa 136 061 170 136 ^1x^ 001067 aa 135 136 133 160 ]^[p 001070 aa 162 157 155 160 romp 001071 aa 164 136 061 170 t^1x 001072 aa 136 135 136 133 ^]^[ 001073 aa 147 157 164 137 got_ 001074 aa 163 160 145 143 spec 001075 aa 151 141 154 137 ial_ 001076 aa 151 156 164 136 int^ 001077 aa 061 170 136 135 1x^] 001100 aa 136 133 157 160 ^[op 001101 aa 145 162 137 162 er_r 001102 aa 145 161 165 145 eque 001103 aa 163 164 136 061 st^1 001104 aa 170 136 135 136 x^]^ 001105 aa 133 144 151 163 [dis 001106 aa 143 141 162 144 card 001107 aa 136 061 170 136 ^1x^ 001110 aa 135 136 133 144 ]^[d 001111 aa 151 163 143 141 isca 001112 aa 162 144 145 144 rded 001113 aa 136 135 000 000 ^] 001114 aa 136 133 151 156 ^[in 001115 aa 137 163 145 162 _ser 001116 aa 166 151 143 145 vice 001117 aa 136 061 170 136 ^1x^ 001120 aa 135 136 133 143 ]^[c 001121 aa 162 141 163 150 rash 001122 aa 137 157 156 137 _on_ 001123 aa 143 162 146 136 crf^ 001124 aa 061 170 136 135 1x^] 001125 aa 136 133 155 143 ^[mc 001126 aa 137 151 157 137 _io_ 001127 aa 145 156 141 142 enab 001130 aa 154 145 144 136 led^ 001131 aa 061 170 136 135 1x^] 001132 aa 136 133 154 151 ^[li 001133 aa 163 164 137 143 st_c 001134 aa 157 156 163 157 onso 001135 aa 154 145 163 136 les^ 001136 aa 061 170 136 135 1x^] 001137 aa 136 133 160 162 ^[pr 001140 aa 151 156 164 145 inte 001141 aa 162 137 157 156 r_on 001142 aa 136 061 170 136 ^1x^ 001143 aa 135 136 133 167 ]^[w 001144 aa 162 151 164 145 rite 001145 aa 137 161 137 146 _q_f 001146 aa 165 154 154 136 ull^ 001147 aa 135 000 000 000 ] 001150 aa 157 143 144 143 ocdc 001151 aa 155 137 040 050 m_ ( 001152 aa 154 157 147 137 log_ 001153 aa 143 157 156 163 cons 001154 aa 157 154 145 137 ole_ 001155 aa 145 162 162 157 erro 001156 aa 162 051 072 040 r): 001157 aa 111 057 117 040 I/O 001160 aa 136 133 164 151 ^[ti 001161 aa 155 145 157 165 meou 001162 aa 164 040 136 135 t ^] 001163 aa 145 162 162 157 erro 001164 aa 162 040 157 156 r on 001165 aa 040 136 141 073 ^a; 001166 aa 040 163 164 141 sta 001167 aa 164 165 163 040 tus 001170 aa 075 040 136 056 = ^. 001171 aa 063 142 136 057 3b^/ 001172 aa 157 143 137 144 oc_d 001173 aa 141 164 141 040 ata 001174 aa 146 154 141 147 flag 001175 aa 163 072 040 136 s: ^ 001176 aa 141 136 057 157 a^/o 001177 aa 143 137 145 156 c_en 001200 aa 164 162 171 040 try 001201 aa 146 154 141 147 flag 001202 aa 163 072 040 136 s: ^ 001203 aa 141 136 057 143 a^/c 001204 aa 157 156 163 157 onso 001205 aa 154 145 137 151 le_i 001206 aa 157 040 146 154 o fl 001207 aa 141 147 163 072 ags: 001210 aa 040 136 141 000 ^a BEGIN PROCEDURE ocdcm_ PROLOGUE SEQUENCE 001211 aa 6 00625 4401 00 sxl0 pr6|405 STATEMENT 1 ON LINE 2827 001212 aa 6 00113 4501 00 stz pr6|75 console_found STATEMENT 1 ON LINE 2829 001213 aa 6 00115 4501 00 stz pr6|77 continue_flag STATEMENT 1 ON LINE 2831 001214 aa 6 00116 4501 00 stz pr6|78 done STATEMENT 1 ON LINE 2832 001215 aa 6 00117 4501 00 stz pr6|79 first_search_pass STATEMENT 1 ON LINE 2833 001216 aa 6 00120 4501 00 stz pr6|80 found STATEMENT 1 ON LINE 2834 001217 aa 6 00121 4501 00 stz pr6|81 i_saved_priority_io STATEMENT 1 ON LINE 2835 001220 aa 6 00122 4501 00 stz pr6|82 entered_via_interrupt STATEMENT 1 ON LINE 2840 001221 aa 6 00126 4501 00 stz pr6|86 wired_and_masked STATEMENT 1 ON LINE 2872 001222 aa 000400 2360 07 ldq 256,dl 001223 aa 000003 0760 07 adq 3,dl 001224 aa 000002 7320 00 qrs 2 001225 aa 000012 0760 07 adq 10,dl 001226 aa 0 00661 7001 00 tsx0 pr0|433 alloc_auto_adj 001227 aa 6 00416 2521 00 spri2 pr6|270 STATEMENT 1 ON LINE 36 OF FILE 2 001230 aa 000072 2360 07 ldq 58,dl 001231 aa 6 00370 7561 00 stq pr6|248 extended_arg_type 001232 aa 6 00625 7201 00 lxl0 pr6|405 001233 aa 000000 7100 10 tra 0,0 MAIN SEQUENCE ENTRY TO ocdcm_ STATEMENT 1 ON LINE 104 ocdcm_: proc (); 001234 da 000477200000 001235 aa 001460 6270 00 eax7 816 001236 aa 7 00034 3521 20 epp2 pr7|28,* 001237 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001240 aa 000000000000 001241 aa 000000000000 001242 aa 777747 7000 04 tsx0 -25,ic 001211 STATEMENT 1 ON LINE 224 console_free: entry (console_to_check_parm, console_is_free_parm); 001243 aa 000013 7100 04 tra 11,ic 001256 ENTRY TO console_free STATEMENT 1 ON LINE 224 console_free: entry (console_to_check_parm, console_is_free_parm); 001244 at 000002000202 001245 ta 000200000000 001246 ta 001244000000 001247 da 000506300000 001250 aa 001460 6270 00 eax7 816 001251 aa 7 00034 3521 20 epp2 pr7|28,* 001252 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001253 aa 000004000000 001254 aa 000000000000 001255 aa 777734 7000 04 tsx0 -36,ic 001211 STATEMENT 1 ON LINE 244 console_to_check = console_to_check_parm; 001256 aa 6 00032 3735 20 epp7 pr6|26,* 001257 aa 7 00002 3715 20 epp5 pr7|2,* 001260 aa 040 100 100 500 mlr (pr),(pr),fill(040) 001261 aa 5 00000 00 0004 desc9a pr5|0,4 console_to_check_parm 001262 aa 6 00201 00 0004 desc9a pr6|129,4 console_to_check STATEMENT 1 ON LINE 246 call lock_oc_data (); 001263 aa 007744 6700 04 tsp4 4068,ic 011227 STATEMENT 1 ON LINE 248 oc_entry_ptr = find_oc_entry (console_to_check); 001264 aa 6 00201 3521 00 epp2 pr6|129 console_to_check 001265 aa 6 00630 2521 00 spri2 pr6|408 001266 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 001267 aa 6 00632 2521 00 spri2 pr6|410 001270 aa 6 00626 6211 00 eax1 pr6|406 001271 aa 010000 4310 07 fld 4096,dl 001272 aa 007443 3520 04 epp2 3875,ic 010735 = 000140627000 001273 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 249 if oc_entry_ptr = null then do; 001274 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 001275 aa 776723 6770 04 eraq -557,ic 000220 = 077777000043 000001000000 001276 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001277 aa 000013 6010 04 tnz 11,ic 001312 STATEMENT 1 ON LINE 250 call unlock_oc_data (); 001300 aa 6 00056 6211 00 eax1 pr6|46 001301 aa 000000 4310 07 fld 0,dl 001302 aa 016067 3520 04 epp2 7223,ic 017371 = 000140627000 001303 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 251 console_is_free_parm = false; 001304 aa 6 00032 3735 20 epp7 pr6|26,* 001305 aa 7 00004 3715 20 epp5 pr7|4,* 001306 aa 003 100 060 400 csl (),(pr),fill(0),bool(move) 001307 aa 000000 00 0000 descb 0,0 001310 aa 5 00000 00 0001 descb pr5|0,1 console_is_free_parm STATEMENT 1 ON LINE 252 return; 001311 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 253 end; STATEMENT 1 ON LINE 255 console_is_free = (^oc_entry.bootload_console & ^oc_entry.alternate); 001312 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 001313 aa 7 00002 2351 00 lda pr7|2 oc_entry.alternate 001314 aa 000003 7350 00 als 3 001315 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 001316 aa 0 00002 6751 00 era pr0|2 = 400000000000 001317 aa 6 00636 7551 00 sta pr6|414 001320 aa 7 00002 2351 00 lda pr7|2 oc_entry.bootload_console 001321 aa 000002 7350 00 als 2 001322 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 001323 aa 0 00002 6751 00 era pr0|2 = 400000000000 001324 aa 6 00636 3751 00 ana pr6|414 001325 aa 6 00114 7551 00 sta pr6|76 console_is_free STATEMENT 1 ON LINE 257 call unlock_oc_data (); 001326 aa 6 00056 6211 00 eax1 pr6|46 001327 aa 000000 4310 07 fld 0,dl 001330 aa 016041 3520 04 epp2 7201,ic 017371 = 000140627000 001331 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 259 console_is_free_parm = console_is_free; 001332 aa 6 00032 3735 20 epp7 pr6|26,* 001333 aa 7 00004 3715 20 epp5 pr7|4,* 001334 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 001335 aa 6 00114 00 0001 descb pr6|76,1 console_is_free 001336 aa 5 00000 00 0001 descb pr5|0,1 console_is_free_parm STATEMENT 1 ON LINE 261 return; 001337 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO console_info STATEMENT 1 ON LINE 263 console_info: entry (oc_name, oc_flags, oc_channel, oc_device_idx, oc_line_leng, code); 001340 at 000006000176 001341 tt 000175000174 001342 tt 000172000172 001343 ta 000165000000 001344 ta 001340000000 001345 da 000515300000 001346 aa 001460 6270 00 eax7 816 001347 aa 7 00034 3521 20 epp2 pr7|28,* 001350 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001351 aa 000014000000 001352 aa 000000000000 001353 aa 6 00032 3735 20 epp7 pr6|26,* 001354 aa 7 00014 3715 20 epp5 pr7|12,* 001355 aa 6 00414 6515 00 spri5 pr6|268 001356 aa 777633 7000 04 tsx0 -101,ic 001211 STATEMENT 1 ON LINE 285 oc_entry_ptr = find_oc_entry (oc_name); 001357 aa 6 00032 3735 20 epp7 pr6|26,* 001360 aa 7 00002 3521 20 epp2 pr7|2,* oc_name 001361 aa 6 00630 2521 00 spri2 pr6|408 001362 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 001363 aa 6 00632 2521 00 spri2 pr6|410 001364 aa 6 00626 6211 00 eax1 pr6|406 001365 aa 010000 4310 07 fld 4096,dl 001366 aa 007347 3520 04 epp2 3815,ic 010735 = 000140627000 001367 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 287 if oc_entry_ptr = null then do; 001370 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 001371 aa 776627 6770 04 eraq -617,ic 000220 = 077777000043 000001000000 001372 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001373 aa 000005 6010 04 tnz 5,ic 001400 STATEMENT 1 ON LINE 288 code = error_table_$device_not_active; 001374 aa 6 00044 3701 20 epp4 pr6|36,* 001375 la 4 00062 2361 20 ldq pr4|50,* error_table_$device_not_active 001376 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 289 return; 001377 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 290 end; STATEMENT 1 ON LINE 292 oc_flags = unspec (oc_entry.flags); 001400 aa 6 00032 3735 20 epp7 pr6|26,* 001401 aa 7 00004 3715 20 epp5 pr7|4,* 001402 aa 6 00406 3535 20 epp3 pr6|262,* oc_entry_ptr 001403 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 001404 aa 3 00002 00 0044 descb pr3|2,36 001405 aa 5 00000 00 0044 descb pr5|0,36 oc_flags STATEMENT 1 ON LINE 293 oc_channel = oc_entry.channel; 001406 aa 7 00006 3515 20 epp1 pr7|6,* 001407 aa 040 100 100 500 mlr (pr),(pr),fill(040) 001410 aa 3 00003 00 0010 desc9a pr3|3,8 oc_entry.channel 001411 aa 1 00000 00 0010 desc9a pr1|0,8 oc_channel STATEMENT 1 ON LINE 294 oc_device_idx = oc_entry.device_idx; 001412 aa 3 00005 2361 00 ldq pr3|5 oc_entry.device_idx 001413 aa 7 00010 7561 20 stq pr7|8,* oc_device_idx STATEMENT 1 ON LINE 295 oc_line_leng = oc_entry.line_leng; 001414 aa 3 00006 2351 00 lda pr3|6 oc_entry.line_leng 001415 aa 000066 7330 00 lrs 54 001416 aa 7 00012 7561 20 stq pr7|10,* oc_line_leng STATEMENT 1 ON LINE 297 code = 0; 001417 aa 6 00414 4501 20 stz pr6|268,* code STATEMENT 1 ON LINE 299 return; 001420 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO drain_io STATEMENT 1 ON LINE 301 drain_io: entry (); 001421 da 000523200000 001422 aa 001460 6270 00 eax7 816 001423 aa 7 00034 3521 20 epp2 pr7|28,* 001424 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001425 aa 000000000000 001426 aa 000000000000 001427 aa 777562 7000 04 tsx0 -142,ic 001211 STATEMENT 1 ON LINE 313 oc_data_ptr = addr (oc_data$); 001430 aa 6 00044 3701 20 epp4 pr6|36,* 001431 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 001432 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 315 if ^oc_data.in_service | oc_data.mc_io_enabled then return; 001433 aa 7 00003 2351 00 lda pr7|3 oc_data.in_service 001434 aa 400000 3150 03 cana 131072,du 001435 aa 0 00631 6001 00 tze pr0|409 return_mac 001436 aa 7 00003 2351 00 lda pr7|3 oc_data.mc_io_enabled 001437 aa 100000 3150 03 cana 32768,du 001440 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 317 oc_entry_ptr = find_oc_entry (""); 001441 aa 776477 2350 04 lda -705,ic 000140 = 040040040040 001442 aa 6 00636 7551 00 sta pr6|414 001443 aa 6 00636 3521 00 epp2 pr6|414 001444 aa 6 00630 2521 00 spri2 pr6|408 001445 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 001446 aa 6 00632 2521 00 spri2 pr6|410 001447 aa 6 00626 6211 00 eax1 pr6|406 001450 aa 010000 4310 07 fld 4096,dl 001451 aa 007264 3520 04 epp2 3764,ic 010735 = 000140627000 001452 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 318 if oc_entry_ptr = null then return; 001453 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 001454 aa 776544 6770 04 eraq -668,ic 000220 = 077777000043 000001000000 001455 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001456 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 320 do while (^done); 001457 aa 000000 0110 03 nop 0,du 001460 aa 6 00116 2351 00 lda pr6|78 done 001461 aa 000042 6010 04 tnz 34,ic 001523 STATEMENT 1 ON LINE 321 call lock_oc_data (); 001462 aa 007545 6700 04 tsp4 3941,ic 011227 STATEMENT 1 ON LINE 322 do while (oc_entry.io_in_progress); 001463 aa 000000 0110 03 nop 0,du 001464 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 001465 aa 7 00002 2351 00 lda pr7|2 oc_entry.io_in_progress 001466 aa 000200 3150 03 cana 128,du 001467 aa 000006 6000 04 tze 6,ic 001475 STATEMENT 1 ON LINE 323 call process_io_status (); 001470 aa 6 00056 6211 00 eax1 pr6|46 001471 aa 000000 4310 07 fld 0,dl 001472 aa 012617 3520 04 epp2 5519,ic 014311 = 000520627000 001473 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 324 end; 001474 aa 777770 7100 04 tra -8,ic 001464 STATEMENT 1 ON LINE 325 if next_console_io () = null then done = true; 001475 aa 6 00640 3521 00 epp2 pr6|416 001476 aa 6 00630 2521 00 spri2 pr6|408 001477 aa 6 00626 6211 00 eax1 pr6|406 001500 aa 004000 4310 07 fld 2048,dl 001501 aa 011634 3520 04 epp2 5020,ic 013335 = 000120627000 001502 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this 001503 aa 6 00640 2371 00 ldaq pr6|416 001504 aa 776514 6770 04 eraq -692,ic 000220 = 077777000043 000001000000 001505 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001506 aa 000004 6010 04 tnz 4,ic 001512 001507 aa 400000 2350 03 lda 131072,du 001510 aa 6 00116 7551 00 sta pr6|78 done 001511 aa 000005 7100 04 tra 5,ic 001516 STATEMENT 1 ON LINE 326 else call process_io (); 001512 aa 6 00056 6211 00 eax1 pr6|46 001513 aa 000000 4310 07 fld 0,dl 001514 aa 012263 3520 04 epp2 5299,ic 013777 = 000140627000 001515 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 327 call unlock_oc_data (); 001516 aa 6 00056 6211 00 eax1 pr6|46 001517 aa 000000 4310 07 fld 0,dl 001520 aa 015651 3520 04 epp2 7081,ic 017371 = 000140627000 001521 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 328 end; 001522 aa 777736 7100 04 tra -34,ic 001460 STATEMENT 1 ON LINE 330 oc_entry.io_in_progress = true; 001523 aa 000200 2350 03 lda 128,du 001524 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 001525 aa 7 00002 2551 00 orsa pr7|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 332 return; 001526 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO err_event_chan STATEMENT 1 ON LINE 334 err_event_chan: entry (event_chan); 001527 at 000001000167 001530 ta 001527000000 001531 da 000532300000 001532 aa 001460 6270 00 eax7 816 001533 aa 7 00034 3521 20 epp2 pr7|28,* 001534 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001535 aa 000002000000 001536 aa 000000000000 001537 aa 777452 7000 04 tsx0 -214,ic 001211 STATEMENT 1 ON LINE 351 oc_data_ptr = addr (oc_data$); 001540 aa 6 00044 3701 20 epp4 pr6|36,* 001541 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 001542 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 353 oc_data.err_event_cid = event_chan; 001543 aa 6 00032 3715 20 epp5 pr6|26,* 001544 aa 5 00002 2371 20 ldaq pr5|2,* event_chan 001545 aa 7 00034 7571 00 staq pr7|28 oc_data.err_event_cid STATEMENT 1 ON LINE 354 oc_data.err_event_pid = pds$process_id; 001546 la 4 00100 2351 20 lda pr4|64,* pds$process_id 001547 aa 7 00036 7551 00 sta pr7|30 oc_data.err_event_pid STATEMENT 1 ON LINE 356 return; 001550 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO esd_reset STATEMENT 1 ON LINE 358 esd_reset: entry (); 001551 da 000540200000 001552 aa 001460 6270 00 eax7 816 001553 aa 7 00034 3521 20 epp2 pr7|28,* 001554 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001555 aa 000000000000 001556 aa 000000000000 001557 aa 777432 7000 04 tsx0 -230,ic 001211 STATEMENT 1 ON LINE 367 entrypoint = "esd_reset"; 001560 aa 040 100 100 404 mlr (ic),(pr),fill(040) 001561 aa 776456 00 0011 desc9a -722,9 000236 = 145163144137 001562 aa 6 00234 00 0040 desc9a pr6|156,32 entrypoint STATEMENT 1 ON LINE 369 oc_data_ptr = addr (oc_data$); 001563 aa 6 00044 3701 20 epp4 pr6|36,* 001564 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 001565 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 370 oc_data.lock = ""b; 001566 aa 7 00000 4501 00 stz pr7|0 oc_data.lock STATEMENT 1 ON LINE 372 if ^oc_data.in_service then do; 001567 aa 7 00003 2351 00 lda pr7|3 oc_data.in_service 001570 aa 400000 3150 03 cana 131072,du 001571 aa 000002 6010 04 tnz 2,ic 001573 STATEMENT 1 ON LINE 373 return; 001572 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 374 end; STATEMENT 1 ON LINE 376 oc_data.mc_io_enabled = false; 001573 aa 016053 2350 04 lda 7211,ic 017646 = 677777777777 001574 aa 7 00003 3551 00 ansa pr7|3 oc_data.mc_io_enabled STATEMENT 1 ON LINE 378 oc_data.crash_on_crf = false; 001575 aa 016050 2350 04 lda 7208,ic 017645 = 577777777777 001576 aa 7 00003 3551 00 ansa pr7|3 oc_data.crash_on_crf STATEMENT 1 ON LINE 380 unspec (oc_data.priority_io) = ""b; 001577 aa 000400 2360 07 ldq 256,dl 001600 aa 000003 0760 07 adq 3,dl 001601 aa 000002 7320 00 qrs 2 001602 aa 000012 0760 07 adq 10,dl 001603 aa 000044 4020 07 mpy 36,dl 001604 aa 000010 0760 07 adq 8,dl 001605 aa 000011 5060 07 div 9,dl 001606 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 001607 aa 000000 00 0000 desc9a 0,0 001610 aa 7 00042 00 0006 desc9a pr7|34,ql STATEMENT 1 ON LINE 381 oc_data.priority_io.completed = true; 001611 aa 010000 2350 03 lda 4096,du 001612 aa 7 00050 2551 00 orsa pr7|40 oc_data.completed STATEMENT 1 ON LINE 383 do idx = 1 to WRITE_QUEUE_SIZE; 001613 aa 000010 2360 07 ldq 8,dl 001614 aa 6 00420 7561 00 stq pr6|272 001615 aa 000001 2360 07 ldq 1,dl 001616 aa 6 00272 7561 00 stq pr6|186 idx 001617 aa 000000 0110 03 nop 0,du 001620 aa 6 00272 2361 00 ldq pr6|186 idx 001621 aa 6 00420 1161 00 cmpq pr6|272 001622 aa 000060 6054 04 tpnz 48,ic 001702 STATEMENT 1 ON LINE 384 unspec (oc_data.write_queue (idx)) = ""b; 001623 aa 000400 2360 07 ldq 256,dl 001624 aa 000003 0760 07 adq 3,dl 001625 aa 000002 7320 00 qrs 2 001626 aa 000012 0760 07 adq 10,dl 001627 aa 6 00637 7561 00 stq pr6|415 001630 aa 000044 4020 07 mpy 36,dl 001631 aa 6 00636 7561 00 stq pr6|414 001632 aa 6 00637 2361 00 ldq pr6|415 001633 aa 000001 0760 07 adq 1,dl 001634 aa 777776 3760 07 anq 262142,dl 001635 aa 6 00642 7561 00 stq pr6|418 001636 aa 6 00272 4021 00 mpy pr6|186 idx 001637 aa 6 00642 1761 00 sbq pr6|418 001640 aa 6 00643 7561 00 stq pr6|419 001641 aa 6 00637 2361 00 ldq pr6|415 001642 aa 000042 0760 07 adq 34,dl 001643 aa 000001 0760 07 adq 1,dl 001644 aa 777776 3760 07 anq 262142,dl 001645 aa 6 00637 0761 00 adq pr6|415 001646 aa 000001 0760 07 adq 1,dl 001647 aa 777776 3760 07 anq 262142,dl 001650 aa 6 00637 7561 00 stq pr6|415 001651 aa 6 00643 0761 00 adq pr6|419 001652 aa 000000 6270 06 eax7 0,ql 001653 aa 6 00636 2361 00 ldq pr6|414 001654 aa 000010 0760 07 adq 8,dl 001655 aa 000011 5060 07 div 9,dl 001656 aa 6 00404 3735 77 epp7 pr6|260,*7 001657 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 001660 aa 000000 00 0000 desc9a 0,0 001661 aa 7 00000 00 0006 desc9a pr7|0,ql STATEMENT 1 ON LINE 385 oc_data.write_queue (idx).completed = true; 001662 aa 6 00642 2361 00 ldq pr6|418 001663 aa 6 00272 4021 00 mpy pr6|186 idx 001664 aa 6 00642 1761 00 sbq pr6|418 001665 aa 000044 4020 07 mpy 36,dl 001666 aa 6 00642 7561 00 stq pr6|418 001667 aa 6 00637 2361 00 ldq pr6|415 001670 aa 000006 0760 07 adq 6,dl 001671 aa 000044 4020 07 mpy 36,dl 001672 aa 000005 0760 07 adq 5,dl 001673 aa 6 00642 0761 00 adq pr6|418 001674 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 001675 aa 403 106 060 400 csl (),(pr,ql),fill(1),bool(move) 001676 aa 000000 00 0000 descb 0,0 001677 aa 5 00000 00 0001 descb pr5|0,1 oc_data.completed STATEMENT 1 ON LINE 386 end; 001700 aa 6 00272 0541 00 aos pr6|186 idx 001701 aa 777717 7100 04 tra -49,ic 001620 STATEMENT 1 ON LINE 387 oc_data.write_q_full = false; 001702 aa 015742 2350 04 lda 7138,ic 017644 = 767777777777 001703 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 001704 aa 7 00003 3551 00 ansa pr7|3 oc_data.write_q_full STATEMENT 1 ON LINE 389 oc_data.stacked_read_cnt = 1; 001705 aa 000001 2350 03 lda 1,du 001706 aa 7 00041 5511 60 stba pr7|33,60 oc_data.stacked_read_cnt STATEMENT 1 ON LINE 390 unspec (oc_data.read_io) = ""b; 001707 aa 000400 2360 07 ldq 256,dl 001710 aa 000003 0760 07 adq 3,dl 001711 aa 000002 7320 00 qrs 2 001712 aa 000012 0760 07 adq 10,dl 001713 aa 6 00642 7561 00 stq pr6|418 001714 aa 000044 4020 07 mpy 36,dl 001715 aa 6 00637 7561 00 stq pr6|415 001716 aa 6 00642 2361 00 ldq pr6|418 001717 aa 000042 0760 07 adq 34,dl 001720 aa 000001 0760 07 adq 1,dl 001721 aa 777776 3760 07 anq 262142,dl 001722 aa 000000 6270 06 eax7 0,ql 001723 aa 6 00637 2361 00 ldq pr6|415 001724 aa 000010 0760 07 adq 8,dl 001725 aa 000011 5060 07 div 9,dl 001726 aa 7 00000 3715 17 epp5 pr7|0,7 001727 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 001730 aa 000000 00 0000 desc9a 0,0 001731 aa 5 00000 00 0006 desc9a pr5|0,ql STATEMENT 1 ON LINE 391 oc_data.read_io.completed = true; 001732 aa 000000 6360 17 eaq 0,7 001733 aa 000022 7320 00 qrs 18 001734 aa 000006 0760 07 adq 6,dl 001735 aa 010000 2350 03 lda 4096,du 001736 aa 7 00000 2551 06 orsa pr7|0,ql oc_data.completed STATEMENT 1 ON LINE 393 call unassign_bootload_console (); 001737 aa 6 00056 6211 00 eax1 pr6|46 001740 aa 000000 4310 07 fld 0,dl 001741 aa 015320 3520 04 epp2 6864,ic 017261 = 000120627000 001742 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 395 if oc_entry_ptr = null then do; 001743 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 001744 aa 776254 6770 04 eraq -852,ic 000220 = 077777000043 000001000000 001745 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001746 aa 000005 6010 04 tnz 5,ic 001753 STATEMENT 1 ON LINE 396 oc_data.in_service = false; 001747 aa 015674 2350 04 lda 7100,ic 017643 = 377777777777 001750 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 001751 aa 7 00003 3551 00 ansa pr7|3 oc_data.in_service STATEMENT 1 ON LINE 397 return; 001752 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 398 end; STATEMENT 1 ON LINE 400 oc_entry.io_in_progress = false; 001753 aa 015667 2350 04 lda 7095,ic 017642 = 777577777777 001754 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 001755 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 401 oc_entry.discard = false; 001756 aa 015663 2350 04 lda 7091,ic 017641 = 777757777777 001757 aa 7 00002 3551 00 ansa pr7|2 oc_entry.discard STATEMENT 1 ON LINE 402 oc_entry.discarded = false; 001760 aa 015660 2350 04 lda 7088,ic 017640 = 777767777777 001761 aa 7 00002 3551 00 ansa pr7|2 oc_entry.discarded STATEMENT 1 ON LINE 403 oc_entry.got_special_int = false; 001762 aa 015655 2350 04 lda 7085,ic 017637 = 777677777777 001763 aa 7 00002 3551 00 ansa pr7|2 oc_entry.got_special_int STATEMENT 1 ON LINE 404 oc_entry.oper_request = false; 001764 aa 015652 2350 04 lda 7082,ic 017636 = 777737777777 001765 aa 7 00002 3551 00 ansa pr7|2 oc_entry.oper_request STATEMENT 1 ON LINE 405 oc_entry.retry_cnt = 0; 001766 aa 000000 2350 07 lda 0,dl 001767 aa 7 00007 5511 60 stba pr7|7,60 oc_entry.retry_cnt STATEMENT 1 ON LINE 406 oc_entry.io_time = 0; 001770 aa 776226 2370 04 ldaq -874,ic 000216 = 000000000000 000000000000 001771 aa 7 00010 7571 00 staq pr7|8 oc_entry.io_time STATEMENT 1 ON LINE 408 call assign_bootload_console (oc_entry.name, err_code); 001772 aa 7 00000 3521 00 epp2 pr7|0 oc_entry.name 001773 aa 6 00630 2521 00 spri2 pr6|408 001774 aa 6 00244 3521 00 epp2 pr6|164 err_code 001775 aa 6 00632 2521 00 spri2 pr6|410 001776 aa 6 00626 6211 00 eax1 pr6|406 001777 aa 010000 4310 07 fld 4096,dl 002000 aa 004301 3520 04 epp2 2241,ic 006301 = 000140627000 002001 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 410 call reset_channel (); 002002 aa 6 00056 6211 00 eax1 pr6|46 002003 aa 000000 4310 07 fld 0,dl 002004 aa 014075 3520 04 epp2 6205,ic 016101 = 000120627000 002005 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 412 return; 002006 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO get_input STATEMENT 1 ON LINE 414 get_input: entry (input_text, input_length, code); 002007 at 000003000166 002010 tt 000172000165 002011 ta 002007000000 002012 da 000546300000 002013 aa 001460 6270 00 eax7 816 002014 aa 7 00034 3521 20 epp2 pr7|28,* 002015 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002016 aa 000006000000 002017 aa 000000000000 002020 aa 6 00032 3735 20 epp7 pr6|26,* 002021 aa 7 00006 3715 20 epp5 pr7|6,* 002022 aa 6 00414 6515 00 spri5 pr6|268 002023 aa 777166 7000 04 tsx0 -394,ic 001211 STATEMENT 1 ON LINE 433 input_text = ""; 002024 aa 6 00032 3735 20 epp7 pr6|26,* 002025 aa 7 00002 3715 20 epp5 pr7|2,* 002026 aa 040 100 100 400 mlr (),(pr),fill(040) 002027 aa 000000 00 0000 desc9a 0,0 002030 aa 5 00000 00 0400 desc9a pr5|0,256 input_text STATEMENT 1 ON LINE 434 input_length = 0; 002031 aa 7 00004 4501 20 stz pr7|4,* input_length STATEMENT 1 ON LINE 435 code = 0; 002032 aa 6 00414 4501 20 stz pr6|268,* code STATEMENT 1 ON LINE 437 oc_entry_ptr = find_oc_entry (""); 002033 aa 776105 2350 04 lda -955,ic 000140 = 040040040040 002034 aa 6 00637 7551 00 sta pr6|415 002035 aa 6 00637 3521 00 epp2 pr6|415 002036 aa 6 00630 2521 00 spri2 pr6|408 002037 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 002040 aa 6 00632 2521 00 spri2 pr6|410 002041 aa 6 00626 6211 00 eax1 pr6|406 002042 aa 010000 4310 07 fld 4096,dl 002043 aa 006672 3520 04 epp2 3514,ic 010735 = 000140627000 002044 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 438 if oc_entry_ptr = null then return; 002045 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 002046 aa 776152 6770 04 eraq -918,ic 000220 = 077777000043 000001000000 002047 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002050 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 440 call lock_oc_data (); 002051 aa 007156 6700 04 tsp4 3694,ic 011227 STATEMENT 1 ON LINE 442 local_io = oc_data.read_io; 002052 aa 000400 2360 07 ldq 256,dl 002053 aa 000003 0760 07 adq 3,dl 002054 aa 000002 7320 00 qrs 2 002055 aa 000012 0760 07 adq 10,dl 002056 aa 6 00637 7561 00 stq pr6|415 002057 aa 000042 0760 07 adq 34,dl 002060 aa 000001 0760 07 adq 1,dl 002061 aa 777776 3760 07 anq 262142,dl 002062 aa 000000 6270 06 eax7 0,ql 002063 aa 6 00637 2361 00 ldq pr6|415 002064 aa 000002 7360 00 qls 2 002065 aa 6 00416 3735 20 epp7 pr6|270,* 002066 aa 6 00404 3715 77 epp5 pr6|260,*7 oc_data.read_io 002067 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 002070 aa 5 00000 00 0006 desc9a pr5|0,ql oc_data.read_io 002071 aa 7 00000 00 0006 desc9a pr7|0,ql local_io STATEMENT 1 ON LINE 443 call reset_read (); 002072 aa 6 00056 6211 00 eax1 pr6|46 002073 aa 000000 4310 07 fld 0,dl 002074 aa 014237 3520 04 epp2 6303,ic 016333 = 000100627000 002075 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 444 oc_data.stacked_read_cnt = oc_data.stacked_read_cnt - 1; 002076 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 002077 aa 7 00041 2351 00 lda pr7|33 oc_data.stacked_read_cnt 002100 aa 000066 7330 00 lrs 54 002101 aa 000001 1760 07 sbq 1,dl 002102 aa 000066 7370 00 lls 54 002103 aa 7 00041 5511 60 stba pr7|33,60 oc_data.stacked_read_cnt STATEMENT 1 ON LINE 445 if oc_data.stacked_read_cnt > 0 then do; 002104 aa 7 00041 2351 00 lda pr7|33 oc_data.stacked_read_cnt 002105 aa 000066 7330 00 lrs 54 002106 aa 000021 6044 04 tmoz 17,ic 002127 STATEMENT 1 ON LINE 446 call log_console_event (POPPED_READ, addr (oc_data.read_io)); 002107 aa 000400 2360 07 ldq 256,dl 002110 aa 000003 0760 07 adq 3,dl 002111 aa 000002 7320 00 qrs 2 002112 aa 000054 0760 07 adq 44,dl 002113 aa 000001 0760 07 adq 1,dl 002114 aa 777776 3760 07 anq 262142,dl 002115 aa 7 00000 3715 06 epp5 pr7|0,ql oc_data.read_io 002116 aa 6 00640 6515 00 spri5 pr6|416 002117 aa 775712 3520 04 epp2 -1078,ic 000031 = 000000000026 002120 aa 6 00630 2521 00 spri2 pr6|408 002121 aa 6 00640 3521 00 epp2 pr6|416 002122 aa 6 00632 2521 00 spri2 pr6|410 002123 aa 6 00626 6211 00 eax1 pr6|406 002124 aa 010000 4310 07 fld 4096,dl 002125 aa 010651 3520 04 epp2 4521,ic 012776 = 000120627000 002126 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 447 end; STATEMENT 1 ON LINE 448 call unlock_oc_data (); 002127 aa 6 00056 6211 00 eax1 pr6|46 002130 aa 000000 4310 07 fld 0,dl 002131 aa 015240 3520 04 epp2 6816,ic 017371 = 000140627000 002132 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 449 input_text = local_io.text; 002133 aa 6 00032 3735 20 epp7 pr6|26,* 002134 aa 7 00002 3715 20 epp5 pr7|2,* 002135 aa 6 00416 3535 20 epp3 pr6|270,* 002136 aa 000400 7270 07 lxl7 256,dl 002137 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 002140 aa 3 00012 00 0017 desc9a pr3|10,x7 local_io.text 002141 aa 5 00000 00 0400 desc9a pr5|0,256 input_text STATEMENT 1 ON LINE 450 input_length = local_io.leng; 002142 aa 3 00010 2351 00 lda pr3|8 local_io.leng 002143 aa 000066 7330 00 lrs 54 002144 aa 7 00004 7561 20 stq pr7|4,* input_length STATEMENT 1 ON LINE 451 call log_console_event (READ_PICKUP, addr (oc_data.read_io)); 002145 aa 000400 2360 07 ldq 256,dl 002146 aa 000003 0760 07 adq 3,dl 002147 aa 000002 7320 00 qrs 2 002150 aa 000054 0760 07 adq 44,dl 002151 aa 000001 0760 07 adq 1,dl 002152 aa 777776 3760 07 anq 262142,dl 002153 aa 6 00404 3515 66 epp1 pr6|260,*ql oc_data.read_io 002154 aa 6 00640 2515 00 spri1 pr6|416 002155 aa 775656 3520 04 epp2 -1106,ic 000033 = 000000000024 002156 aa 6 00630 2521 00 spri2 pr6|408 002157 aa 6 00640 3521 00 epp2 pr6|416 002160 aa 6 00632 2521 00 spri2 pr6|410 002161 aa 6 00626 6211 00 eax1 pr6|406 002162 aa 010000 4310 07 fld 4096,dl 002163 aa 010613 3520 04 epp2 4491,ic 012776 = 000120627000 002164 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 453 return; 002165 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO get_mc_output STATEMENT 1 ON LINE 455 get_mc_output: entry (mc_io_uid , output_length, output_text); 002166 at 000003000167 002167 tt 000172000166 002170 ta 002166000000 002171 da 000555300000 002172 aa 001460 6270 00 eax7 816 002173 aa 7 00034 3521 20 epp2 pr7|28,* 002174 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002175 aa 000006000000 002176 aa 000000000000 002177 aa 777012 7000 04 tsx0 -502,ic 001211 STATEMENT 1 ON LINE 476 oc_data_ptr = addr (oc_data$); 002200 aa 6 00044 3701 20 epp4 pr6|36,* 002201 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 002202 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 477 oc_entry_ptr = null; 002203 aa 776015 2370 04 ldaq -1011,ic 000220 = 077777000043 000001000000 002204 aa 6 00406 7571 00 staq pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 479 do idx = 1 to WRITE_QUEUE_SIZE; 002205 aa 000010 2360 07 ldq 8,dl 002206 aa 6 00421 7561 00 stq pr6|273 002207 aa 000001 2360 07 ldq 1,dl 002210 aa 6 00272 7561 00 stq pr6|186 idx 002211 aa 000000 0110 03 nop 0,du 002212 aa 6 00272 2361 00 ldq pr6|186 idx 002213 aa 6 00421 1161 00 cmpq pr6|273 002214 aa 000065 6054 04 tpnz 53,ic 002301 STATEMENT 1 ON LINE 480 if -oc_data.write_queue (idx).time_queued = mc_io_uid then do; 002215 aa 000400 2360 07 ldq 256,dl 002216 aa 000003 0760 07 adq 3,dl 002217 aa 000002 7320 00 qrs 2 002220 aa 000012 0760 07 adq 10,dl 002221 aa 6 00642 7561 00 stq pr6|418 002222 aa 000001 0760 07 adq 1,dl 002223 aa 777776 3760 07 anq 262142,dl 002224 aa 6 00637 7561 00 stq pr6|415 002225 aa 6 00272 4021 00 mpy pr6|186 idx 002226 aa 6 00637 1761 00 sbq pr6|415 002227 aa 6 00637 7561 00 stq pr6|415 002230 aa 6 00642 2361 00 ldq pr6|418 002231 aa 000042 0760 07 adq 34,dl 002232 aa 000001 0760 07 adq 1,dl 002233 aa 777776 3760 07 anq 262142,dl 002234 aa 6 00642 0761 00 adq pr6|418 002235 aa 000001 0760 07 adq 1,dl 002236 aa 777776 3760 07 anq 262142,dl 002237 aa 6 00637 0761 00 adq pr6|415 002240 aa 6 00637 7561 00 stq pr6|415 002241 aa 6 00404 3371 66 lcaq pr6|260,*ql oc_data.time_queued 002242 aa 6 00032 3735 20 epp7 pr6|26,* 002243 aa 7 00002 1171 20 cmpaq pr7|2,* mc_io_uid 002244 aa 000033 6010 04 tnz 27,ic 002277 STATEMENT 1 ON LINE 481 console_io_ptr = addr (oc_data.write_queue (idx)); 002245 aa 6 00637 7271 00 lxl7 pr6|415 002246 aa 6 00404 3715 77 epp5 pr6|260,*7 oc_data.write_queue 002247 aa 6 00410 6515 00 spri5 pr6|264 console_io_ptr STATEMENT 1 ON LINE 482 output_length = multiply (console_io.leng, 4, 17); 002250 aa 5 00010 2351 00 lda pr5|8 console_io.leng 002251 aa 000066 7330 00 lrs 54 002252 aa 000002 7360 00 qls 2 002253 aa 7 00004 7561 20 stq pr7|4,* output_length STATEMENT 1 ON LINE 483 output_text = console_io.text; 002254 aa 7 00006 3535 20 epp3 pr7|6,* 002255 aa 000400 7260 07 lxl6 256,dl 002256 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 002257 aa 5 00012 00 0016 desc9a pr5|10,x6 console_io.text 002260 aa 3 00000 00 0400 desc9a pr3|0,256 output_text STATEMENT 1 ON LINE 484 console_io.completed = true; 002261 aa 010000 2350 03 lda 4096,du 002262 aa 5 00006 2551 00 orsa pr5|6 console_io.completed STATEMENT 1 ON LINE 485 oc_data.write_q_full = false; 002263 aa 015361 2350 04 lda 6897,ic 017644 = 767777777777 002264 aa 6 00404 3515 20 epp1 pr6|260,* oc_data_ptr 002265 aa 1 00003 3551 00 ansa pr1|3 oc_data.write_q_full STATEMENT 1 ON LINE 486 call log_console_event (MC_IO_PICKUP, console_io_ptr); 002266 aa 775552 3520 04 epp2 -1174,ic 000040 = 000000000040 002267 aa 6 00630 2521 00 spri2 pr6|408 002270 aa 6 00410 3521 00 epp2 pr6|264 console_io_ptr 002271 aa 6 00632 2521 00 spri2 pr6|410 002272 aa 6 00626 6211 00 eax1 pr6|406 002273 aa 010000 4310 07 fld 4096,dl 002274 aa 010502 3520 04 epp2 4418,ic 012776 = 000120627000 002275 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 487 return; 002276 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 488 end; STATEMENT 1 ON LINE 489 end; 002277 aa 6 00272 0541 00 aos pr6|186 idx 002300 aa 777712 7100 04 tra -54,ic 002212 STATEMENT 1 ON LINE 491 output_length = 0; 002301 aa 6 00032 3735 20 epp7 pr6|26,* 002302 aa 7 00004 4501 20 stz pr7|4,* output_length STATEMENT 1 ON LINE 492 output_text = ""; 002303 aa 7 00006 3715 20 epp5 pr7|6,* 002304 aa 040 100 100 400 mlr (),(pr),fill(040) 002305 aa 000000 00 0000 desc9a 0,0 002306 aa 5 00000 00 0400 desc9a pr5|0,256 output_text STATEMENT 1 ON LINE 494 call log_console_event (MC_IO_FAILURE, null); 002307 aa 775711 3534 24 epp3 -1079,ic* 002310 aa 6 00640 2535 00 spri3 pr6|416 002311 aa 775512 3520 04 epp2 -1206,ic 000023 = 000000000041 002312 aa 6 00630 2521 00 spri2 pr6|408 002313 aa 6 00640 3521 00 epp2 pr6|416 002314 aa 6 00632 2521 00 spri2 pr6|410 002315 aa 6 00626 6211 00 eax1 pr6|406 002316 aa 010000 4310 07 fld 4096,dl 002317 aa 010457 3520 04 epp2 4399,ic 012776 = 000120627000 002320 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 496 return; 002321 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO init_all_consoles STATEMENT 1 ON LINE 498 init_all_consoles: entry (); 002322 da 000565200000 002323 aa 001460 6270 00 eax7 816 002324 aa 7 00034 3521 20 epp2 pr7|28,* 002325 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002326 aa 000000000000 002327 aa 000000000000 002330 aa 776661 7000 04 tsx0 -591,ic 001211 STATEMENT 1 ON LINE 508 entrypoint = "init_all_consoles"; 002331 aa 040 100 100 404 mlr (ic),(pr),fill(040) 002332 aa 775767 00 0021 desc9a -1033,17 000320 = 151156151164 002333 aa 6 00234 00 0040 desc9a pr6|156,32 entrypoint STATEMENT 1 ON LINE 510 oc_data_ptr = addr (oc_data$); 002334 aa 6 00044 3701 20 epp4 pr6|36,* 002335 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 002336 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 511 oc_entry_ptr = null; 002337 aa 775661 2370 04 ldaq -1103,ic 000220 = 077777000043 000001000000 002340 aa 6 00406 7571 00 staq pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 513 unspec (oc_data) = ""b; 002341 aa 002020 2360 07 ldq 1040,dl 002342 aa 6 00637 7561 00 stq pr6|415 002343 aa 000340 2360 07 ldq 224,dl 002344 aa 6 00642 7561 00 stq pr6|418 002345 aa 000400 2360 07 ldq 256,dl 002346 aa 000003 0760 07 adq 3,dl 002347 aa 000002 7320 00 qrs 2 002350 aa 000012 0760 07 adq 10,dl 002351 aa 6 00636 7561 00 stq pr6|414 002352 aa 000001 0760 07 adq 1,dl 002353 aa 777776 3760 07 anq 262142,dl 002354 aa 000003 7360 00 qls 3 002355 aa 6 00643 7561 00 stq pr6|419 002356 aa 6 00636 2361 00 ldq pr6|414 002357 aa 000042 0760 07 adq 34,dl 002360 aa 000001 0760 07 adq 1,dl 002361 aa 777776 3760 07 anq 262142,dl 002362 aa 6 00644 7561 00 stq pr6|420 002363 aa 6 00636 0761 00 adq pr6|414 002364 aa 000001 0760 07 adq 1,dl 002365 aa 777776 3760 07 anq 262142,dl 002366 aa 000044 7770 00 llr 36 002367 aa 000044 7330 00 lrs 36 002370 aa 6 00643 0331 00 adl pr6|419 002371 aa 000012 0330 07 adl 10,dl 002372 aa 000001 0760 07 adq 1,dl 002373 aa 777776 3760 07 anq 262142,dl 002374 aa 6 00642 0761 00 adq pr6|418 002375 aa 000001 0760 07 adq 1,dl 002376 aa 777776 3760 07 anq 262142,dl 002377 aa 6 00637 0761 00 adq pr6|415 002400 aa 000044 4020 07 mpy 36,dl 002401 aa 000010 0760 07 adq 8,dl 002402 aa 000011 5060 07 div 9,dl 002403 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 002404 aa 000000 00 0000 desc9a 0,0 002405 aa 7 00000 00 0006 desc9a pr7|0,ql STATEMENT 1 ON LINE 515 sd_ptr = addr (syserr_data$syserr_area); 002406 la 4 00126 3715 20 epp5 pr4|86,* syserr_data$syserr_area 002407 aa 6 00412 6515 00 spri5 pr6|266 sd_ptr STATEMENT 1 ON LINE 516 sd.char_type_flag = true; 002410 aa 200000 2350 03 lda 65536,du 002411 aa 5 00001 2551 00 orsa pr5|1 sd.char_type_flag STATEMENT 1 ON LINE 517 sd.ocdcm_init_flag = false; 002412 aa 015234 2350 04 lda 6812,ic 017646 = 677777777777 002413 aa 5 00001 3551 00 ansa pr5|1 sd.ocdcm_init_flag STATEMENT 1 ON LINE 519 oc_data.version = oc_data_version; 002414 aa 775404 2350 04 lda -1276,ic 000020 = 061056063040 002415 aa 7 00001 7551 00 sta pr7|1 oc_data.version STATEMENT 1 ON LINE 520 oc_data.flags.printer_on = true; 002416 aa 020000 2350 03 lda 8192,du 002417 aa 7 00003 2551 00 orsa pr7|3 oc_data.printer_on STATEMENT 1 ON LINE 522 oc_data.last_read_queued = -1; 002420 aa 775574 2370 04 ldaq -1156,ic 000214 = 777777777777 777777777777 002421 aa 7 00024 7571 00 staq pr7|20 oc_data.last_read_queued STATEMENT 1 ON LINE 523 oc_data.last_write_queued = -1; 002422 aa 7 00026 7571 00 staq pr7|22 oc_data.last_write_queued STATEMENT 1 ON LINE 524 oc_data.last_poll_time = -1; 002423 aa 7 00030 7571 00 staq pr7|24 oc_data.last_poll_time STATEMENT 1 ON LINE 525 oc_data.max_computed_io_time = MAX_MAX_IO_TIME * 1e06; 002424 aa 000226 2360 07 ldq 150,dl 002425 aa 0 00465 7001 00 tsx0 pr0|309 fx1_to_fl2 002426 aa 775511 4610 04 fmp -1207,ic 000137 = 050750220000 002427 aa 0 00655 7001 00 tsx0 pr0|429 fl2_to_fx2 002430 aa 7 00032 7571 00 staq pr7|26 oc_data.max_computed_io_time STATEMENT 1 ON LINE 527 oc_data.next_free_write = 1; 002431 aa 000001 2350 03 lda 1,du 002432 aa 7 00040 5511 60 stba pr7|32,60 oc_data.next_free_write STATEMENT 1 ON LINE 528 oc_data.next_event = 1; 002433 aa 000022 7710 00 arl 18 002434 aa 7 00040 5511 14 stba pr7|32,14 oc_data.next_event STATEMENT 1 ON LINE 530 oc_data.read_io.completed = true; 002435 aa 6 00644 2361 00 ldq pr6|420 002436 aa 000006 0760 07 adq 6,dl 002437 aa 010000 2350 03 lda 4096,du 002440 aa 7 00000 2551 06 orsa pr7|0,ql oc_data.completed STATEMENT 1 ON LINE 531 oc_data.priority_io.completed = true; 002441 aa 010000 2350 03 lda 4096,du 002442 aa 7 00050 2551 00 orsa pr7|40 oc_data.completed STATEMENT 1 ON LINE 533 do idx = 1 to WRITE_QUEUE_SIZE; 002443 aa 000010 2360 07 ldq 8,dl 002444 aa 6 00422 7561 00 stq pr6|274 002445 aa 000001 2360 07 ldq 1,dl 002446 aa 6 00272 7561 00 stq pr6|186 idx 002447 aa 000000 0110 03 nop 0,du 002450 aa 6 00272 2361 00 ldq pr6|186 idx 002451 aa 6 00422 1161 00 cmpq pr6|274 002452 aa 000036 6054 04 tpnz 30,ic 002510 STATEMENT 1 ON LINE 534 oc_data.write_queue (idx).completed = true; 002453 aa 000400 2360 07 ldq 256,dl 002454 aa 000003 0760 07 adq 3,dl 002455 aa 000002 7320 00 qrs 2 002456 aa 000012 0760 07 adq 10,dl 002457 aa 6 00644 7561 00 stq pr6|420 002460 aa 000001 0760 07 adq 1,dl 002461 aa 777776 3760 07 anq 262142,dl 002462 aa 6 00637 7561 00 stq pr6|415 002463 aa 6 00272 4021 00 mpy pr6|186 idx 002464 aa 6 00637 1761 00 sbq pr6|415 002465 aa 000044 4020 07 mpy 36,dl 002466 aa 6 00637 7561 00 stq pr6|415 002467 aa 6 00644 2361 00 ldq pr6|420 002470 aa 000042 0760 07 adq 34,dl 002471 aa 000001 0760 07 adq 1,dl 002472 aa 777776 3760 07 anq 262142,dl 002473 aa 6 00644 0761 00 adq pr6|420 002474 aa 000001 0760 07 adq 1,dl 002475 aa 777776 3760 07 anq 262142,dl 002476 aa 000006 0760 07 adq 6,dl 002477 aa 000044 4020 07 mpy 36,dl 002500 aa 000005 0760 07 adq 5,dl 002501 aa 6 00637 0761 00 adq pr6|415 002502 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 002503 aa 403 106 060 400 csl (),(pr,ql),fill(1),bool(move) 002504 aa 000000 00 0000 descb 0,0 002505 aa 7 00000 00 0001 descb pr7|0,1 oc_data.completed STATEMENT 1 ON LINE 535 end; 002506 aa 6 00272 0541 00 aos pr6|186 idx 002507 aa 777741 7100 04 tra -31,ic 002450 STATEMENT 1 ON LINE 537 oc_data.abs_addr = absadr (oc_data_ptr, err_code); 002510 aa 6 00404 3521 00 epp2 pr6|260 oc_data_ptr 002511 aa 6 00630 2521 00 spri2 pr6|408 002512 aa 6 00244 3521 00 epp2 pr6|164 err_code 002513 aa 6 00632 2521 00 spri2 pr6|410 002514 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 002515 aa 7 00017 3521 00 epp2 pr7|15 oc_data.abs_addr 002516 aa 6 00634 2521 00 spri2 pr6|412 002517 aa 6 00626 6211 00 eax1 pr6|406 002520 aa 014000 4310 07 fld 6144,dl 002521 aa 6 00044 3701 20 epp4 pr6|36,* 002522 la 4 00010 3521 20 epp2 pr4|8,* absadr 002523 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 538 if err_code ^= 0 then call report_error (PANIC, entrypoint, "Unable to determine absolute memory address of oc_data."); 002524 aa 6 00244 2361 00 ldq pr6|164 err_code 002525 aa 000024 6000 04 tze 20,ic 002551 002526 aa 000 100 100 404 mlr (ic),(pr),fill(000) 002527 aa 776204 00 0070 desc9a -892,56 000732 = 125156141142 002530 aa 6 00646 00 0070 desc9a pr6|422,56 002531 aa 775420 3520 04 epp2 -1264,ic 000151 = 000000000006 002532 aa 6 00666 2521 00 spri2 pr6|438 002533 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 002534 aa 6 00670 2521 00 spri2 pr6|440 002535 aa 6 00646 3521 00 epp2 pr6|422 002536 aa 6 00672 2521 00 spri2 pr6|442 002537 aa 775433 3520 04 epp2 -1253,ic 000172 = 404000000021 002540 aa 6 00676 2521 00 spri2 pr6|446 002541 aa 775375 3520 04 epp2 -1283,ic 000136 = 526000000040 002542 aa 6 00700 2521 00 spri2 pr6|448 002543 aa 775372 3520 04 epp2 -1286,ic 000135 = 524000000067 002544 aa 6 00702 2521 00 spri2 pr6|450 002545 aa 6 00664 6211 00 eax1 pr6|436 002546 aa 014000 4310 07 fld 6144,dl 002547 aa 012465 3520 04 epp2 5429,ic 015234 = 000400627000 002550 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 541 oc_data.prompt = "M-> " || copy (byte (binary ("177"b3)), 4); 002551 aa 775441 2370 04 ldaq -1247,ic 000212 = 000000000000 000000000177 002552 aa 000077 7370 00 lls 63 002553 aa 6 00645 7551 00 sta pr6|421 002554 aa 000001 2360 07 ldq 1,dl 002555 aa 6 00645 3521 00 epp2 pr6|421 002556 aa 0 01227 7001 00 tsx0 pr0|663 set_chars_eis 002557 aa 000004 2360 07 ldq 4,dl 002560 aa 0 01127 7001 00 tsx0 pr0|599 repeat 002561 aa 0 01374 7001 00 tsx0 pr0|764 fetch_chars_eis 002562 aa 000044 7730 00 lrl 36 002563 aa 775351 2750 04 ora -1303,ic 000134 = 115055076040 002564 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 002565 aa 7 00006 7551 00 sta pr7|6 oc_data.prompt 002566 aa 7 00007 7561 00 stq pr7|7 oc_data.prompt STATEMENT 1 ON LINE 542 oc_data.write_return = "177177012015"b3; 002567 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 002570 aa 775343 2350 04 lda -1309,ic 000133 = 177177012015 002571 aa 7 00016 7551 00 sta pr7|14 oc_data.write_return STATEMENT 1 ON LINE 543 oc_data.discard_notice = byte (10) || byte (13) || "(output discarded)" || /* initialize the discard notice... */ byte (10) || byte (13) || copy (byte (binary ("177"b3)), 2); 002572 aa 000001 2360 07 ldq 1,dl 002573 aa 6 00645 3521 00 epp2 pr6|421 002574 aa 0 01227 7001 00 tsx0 pr0|663 set_chars_eis 002575 aa 000002 2360 07 ldq 2,dl 002576 aa 0 01127 7001 00 tsx0 pr0|599 repeat 002577 aa 0 01374 7001 00 tsx0 pr0|764 fetch_chars_eis 002600 aa 6 00645 7551 00 sta pr6|421 002601 aa 000015 2360 07 ldq 13,dl 002602 aa 000077 7370 00 lls 63 002603 aa 6 00637 7551 00 sta pr6|415 002604 aa 000012 2360 07 ldq 10,dl 002605 aa 000077 7370 00 lls 63 002606 aa 6 00644 7551 00 sta pr6|420 002607 aa 6 00637 2351 00 lda pr6|415 002610 aa 000011 7710 00 arl 9 002611 aa 6 00644 2751 00 ora pr6|420 002612 aa 6 00642 7551 00 sta pr6|418 002613 aa 000024 2360 07 ldq 20,dl 002614 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 002615 aa 040 100 100 500 mlr (pr),(pr),fill(040) 002616 aa 6 00642 00 0002 desc9a pr6|418,2 002617 aa 2 00000 00 0002 desc9a pr2|0,2 002620 aa 040 100 100 404 mlr (ic),(pr),fill(040) 002621 aa 775473 00 0022 desc9a -1221,18 000313 = 050157165164 002622 aa 2 00000 40 0022 desc9a pr2|0(2),18 002623 aa 000025 2360 07 ldq 21,dl 002624 aa 0 00606 7001 00 tsx0 pr0|390 cat_realloc_chars 002625 aa 040 100 100 500 mlr (pr),(pr),fill(040) 002626 aa 6 00644 00 0001 desc9a pr6|420,1 002627 aa 2 00005 00 0001 desc9a pr2|5,1 002630 aa 000026 2360 07 ldq 22,dl 002631 aa 0 00606 7001 00 tsx0 pr0|390 cat_realloc_chars 002632 aa 040 100 100 500 mlr (pr),(pr),fill(040) 002633 aa 6 00637 00 0001 desc9a pr6|415,1 002634 aa 2 00005 20 0001 desc9a pr2|5(1),1 002635 aa 040 100 100 500 mlr (pr),(pr),fill(040) 002636 aa 2 00000 00 0026 desc9a pr2|0,22 002637 aa 7 00010 00 0026 desc9a pr7|8,22 oc_data.discard_notice 002640 aa 040 100 100 500 mlr (pr),(pr),fill(040) 002641 aa 6 00645 00 0002 desc9a pr6|421,2 002642 aa 7 00015 40 0002 desc9a pr7|13(2),2 oc_data.discard_notice STATEMENT 1 ON LINE 546 prph_opc_cardp = null; 002643 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 002644 aa 775354 2370 04 ldaq -1300,ic 000220 = 077777000043 000001000000 002645 aa 6 00374 7571 00 staq pr6|252 prph_opc_cardp STATEMENT 1 ON LINE 548 call config_$find_parm ("ccrf", parm_ptr); 002646 aa 775264 2350 04 lda -1356,ic 000132 = 143143162146 002647 aa 6 00645 7551 00 sta pr6|421 002650 aa 6 00645 3521 00 epp2 pr6|421 002651 aa 6 00630 2521 00 spri2 pr6|408 002652 aa 6 00372 3521 00 epp2 pr6|250 parm_ptr 002653 aa 6 00632 2521 00 spri2 pr6|410 002654 aa 6 00626 6211 00 eax1 pr6|406 002655 aa 010000 4310 07 fld 4096,dl 002656 aa 6 00044 3701 20 epp4 pr6|36,* 002657 la 4 00020 3521 20 epp2 pr4|16,* config_$find_parm 002660 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 549 if parm_ptr ^= null then oc_data.crash_on_crf = true; 002661 aa 6 00372 2371 00 ldaq pr6|250 parm_ptr 002662 aa 775336 6770 04 eraq -1314,ic 000220 = 077777000043 000001000000 002663 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002664 aa 000004 6000 04 tze 4,ic 002670 002665 aa 200000 2350 03 lda 65536,du 002666 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 002667 aa 7 00003 2551 00 orsa pr7|3 oc_data.crash_on_crf STATEMENT 1 ON LINE 551 call config_$find_parm ("clst", parm_ptr); 002670 aa 775241 2350 04 lda -1375,ic 000131 = 143154163164 002671 aa 6 00645 7551 00 sta pr6|421 002672 aa 6 00645 3521 00 epp2 pr6|421 002673 aa 6 00630 2521 00 spri2 pr6|408 002674 aa 6 00372 3521 00 epp2 pr6|250 parm_ptr 002675 aa 6 00632 2521 00 spri2 pr6|410 002676 aa 6 00626 6211 00 eax1 pr6|406 002677 aa 010000 4310 07 fld 4096,dl 002700 aa 6 00044 3701 20 epp4 pr6|36,* 002701 la 4 00020 3521 20 epp2 pr4|16,* config_$find_parm 002702 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 552 if parm_ptr ^= null then oc_data.list_consoles = true; 002703 aa 6 00372 2371 00 ldaq pr6|250 parm_ptr 002704 aa 775314 6770 04 eraq -1332,ic 000220 = 077777000043 000001000000 002705 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002706 aa 000004 6000 04 tze 4,ic 002712 002707 aa 040000 2350 03 lda 16384,du 002710 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 002711 aa 7 00003 2551 00 orsa pr7|3 oc_data.list_consoles STATEMENT 1 ON LINE 554 do while (^done); 002712 aa 6 00116 2351 00 lda pr6|78 done 002713 aa 000127 6010 04 tnz 87,ic 003042 STATEMENT 1 ON LINE 555 call config_$find ("prph", prph_opc_cardp); 002714 aa 775214 2350 04 lda -1396,ic 000130 = 160162160150 002715 aa 6 00645 7551 00 sta pr6|421 002716 aa 6 00645 3521 00 epp2 pr6|421 002717 aa 6 00630 2521 00 spri2 pr6|408 002720 aa 6 00374 3521 00 epp2 pr6|252 prph_opc_cardp 002721 aa 6 00632 2521 00 spri2 pr6|410 002722 aa 6 00626 6211 00 eax1 pr6|406 002723 aa 010000 4310 07 fld 4096,dl 002724 aa 6 00044 3701 20 epp4 pr6|36,* 002725 la 4 00016 3521 20 epp2 pr4|14,* config_$find 002726 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 556 if prph_opc_cardp = null then done = true; 002727 aa 6 00374 2371 00 ldaq pr6|252 prph_opc_cardp 002730 aa 775270 6770 04 eraq -1352,ic 000220 = 077777000043 000001000000 002731 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002732 aa 000004 6010 04 tnz 4,ic 002736 002733 aa 400000 2350 03 lda 131072,du 002734 aa 6 00116 7551 00 sta pr6|78 done 002735 aa 777755 7100 04 tra -19,ic 002712 STATEMENT 1 ON LINE 557 else do; STATEMENT 1 ON LINE 558 if substr (prph_opc_card.name, 1, 3) = "opc" then do; 002736 aa 6 00374 3735 20 epp7 pr6|252,* prph_opc_cardp 002737 aa 7 00001 2351 00 lda pr7|1 prph_opc_card.name 002740 aa 0 00066 3771 00 anaq pr0|54 = 777777777000 000000000000 002741 aa 775166 1150 04 cmpa -1418,ic 000127 = 157160143000 002742 aa 777750 6010 04 tnz -24,ic 002712 STATEMENT 1 ON LINE 559 if oc_data.console_cnt = MAX_OPC_CNT then do; 002743 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 002744 aa 5 00002 2351 00 lda pr5|2 oc_data.console_cnt 002745 aa 000066 7330 00 lrs 54 002746 aa 6 00645 7561 00 stq pr6|421 oc_data.console_cnt 002747 aa 000010 1160 07 cmpq 8,dl 002750 aa 000052 6010 04 tnz 42,ic 003022 STATEMENT 1 ON LINE 560 done = true; 002751 aa 400000 2350 03 lda 131072,du 002752 aa 6 00116 7551 00 sta pr6|78 done STATEMENT 1 ON LINE 561 call report_error (BEEP, entrypoint, "Maximum console count exceeded."); 002753 aa 000 100 100 404 mlr (ic),(pr),fill(000) 002754 aa 775441 00 0040 desc9a -1247,32 000414 = 115141170151 002755 aa 6 00626 00 0040 desc9a pr6|406,32 002756 aa 775215 3520 04 epp2 -1395,ic 000173 = 000000000003 002757 aa 6 00666 2521 00 spri2 pr6|438 002760 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 002761 aa 6 00670 2521 00 spri2 pr6|440 002762 aa 6 00626 3521 00 epp2 pr6|406 002763 aa 6 00672 2521 00 spri2 pr6|442 002764 aa 775206 3520 04 epp2 -1402,ic 000172 = 404000000021 002765 aa 6 00676 2521 00 spri2 pr6|446 002766 aa 775150 3520 04 epp2 -1432,ic 000136 = 526000000040 002767 aa 6 00700 2521 00 spri2 pr6|448 002770 aa 775136 3520 04 epp2 -1442,ic 000126 = 524000000037 002771 aa 6 00702 2521 00 spri2 pr6|450 002772 aa 6 00664 6211 00 eax1 pr6|436 002773 aa 014000 4310 07 fld 6144,dl 002774 aa 012240 3520 04 epp2 5280,ic 015234 = 000400627000 002775 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 562 call report_error (ANNOUNCE, entrypoint, "Additional consoles will not be configured."); 002776 aa 000 100 100 404 mlr (ic),(pr),fill(000) 002777 aa 775617 00 0054 desc9a -1137,44 000615 = 101144144151 003000 aa 6 00646 00 0054 desc9a pr6|422,44 003001 aa 775140 3520 04 epp2 -1440,ic 000141 = 000000000000 003002 aa 6 00666 2521 00 spri2 pr6|438 003003 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 003004 aa 6 00670 2521 00 spri2 pr6|440 003005 aa 6 00646 3521 00 epp2 pr6|422 003006 aa 6 00672 2521 00 spri2 pr6|442 003007 aa 775163 3520 04 epp2 -1421,ic 000172 = 404000000021 003010 aa 6 00676 2521 00 spri2 pr6|446 003011 aa 775125 3520 04 epp2 -1451,ic 000136 = 526000000040 003012 aa 6 00700 2521 00 spri2 pr6|448 003013 aa 775112 3520 04 epp2 -1462,ic 000125 = 524000000053 003014 aa 6 00702 2521 00 spri2 pr6|450 003015 aa 6 00664 6211 00 eax1 pr6|436 003016 aa 014000 4310 07 fld 6144,dl 003017 aa 012215 3520 04 epp2 5261,ic 015234 = 000400627000 003020 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 563 end; 003021 aa 777671 7100 04 tra -71,ic 002712 STATEMENT 1 ON LINE 564 else do; STATEMENT 1 ON LINE 565 call fill_oc_entry (oc_data_ptr, /* build DCW list, etc... */ oc_data.console_cnt + 1, prph_opc_cardp, oc_entry_ptr); 003022 aa 000001 0760 07 adq 1,dl 003023 aa 000066 7370 00 lls 54 003024 aa 6 00645 5511 60 stba pr6|421,60 003025 aa 014577 3520 04 epp2 6527,ic 017624 = 000010000000 003026 aa 004651 6700 04 tsp4 2473,ic 007677 STATEMENT 1 ON LINE 567 if oc_entry.active then /* if we succeeded... */ oc_data.console_cnt = oc_data.console_cnt + 1; 003027 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 003030 aa 7 00002 2351 00 lda pr7|2 oc_entry.active 003031 aa 400000 3150 03 cana 131072,du 003032 aa 777660 6000 04 tze -80,ic 002712 003033 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 003034 aa 5 00002 2351 00 lda pr5|2 oc_data.console_cnt 003035 aa 000066 7330 00 lrs 54 003036 aa 000001 0760 07 adq 1,dl 003037 aa 000066 7370 00 lls 54 003040 aa 5 00002 5511 60 stba pr5|2,60 oc_data.console_cnt STATEMENT 1 ON LINE 569 end; STATEMENT 1 ON LINE 570 end; STATEMENT 1 ON LINE 571 end; STATEMENT 1 ON LINE 572 end; 003041 aa 777651 7100 04 tra -87,ic 002712 STATEMENT 1 ON LINE 574 if oc_data.console_cnt < 1 then do; 003042 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003043 aa 7 00002 2351 00 lda pr7|2 oc_data.console_cnt 003044 aa 000066 7330 00 lrs 54 003045 aa 000001 1160 07 cmpq 1,dl 003046 aa 000024 6050 04 tpl 20,ic 003072 STATEMENT 1 ON LINE 575 call report_error (PANIC, entrypoint, "Missing prph opc card."); 003047 aa 000 100 100 404 mlr (ic),(pr),fill(000) 003050 aa 775272 00 0030 desc9a -1350,24 000341 = 115151163163 003051 aa 6 00626 00 0030 desc9a pr6|406,24 003052 aa 775077 3520 04 epp2 -1473,ic 000151 = 000000000006 003053 aa 6 00666 2521 00 spri2 pr6|438 003054 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 003055 aa 6 00670 2521 00 spri2 pr6|440 003056 aa 6 00626 3521 00 epp2 pr6|406 003057 aa 6 00672 2521 00 spri2 pr6|442 003060 aa 775112 3520 04 epp2 -1462,ic 000172 = 404000000021 003061 aa 6 00676 2521 00 spri2 pr6|446 003062 aa 775054 3520 04 epp2 -1492,ic 000136 = 526000000040 003063 aa 6 00700 2521 00 spri2 pr6|448 003064 aa 775040 3520 04 epp2 -1504,ic 000124 = 524000000026 003065 aa 6 00702 2521 00 spri2 pr6|450 003066 aa 6 00664 6211 00 eax1 pr6|436 003067 aa 014000 4310 07 fld 6144,dl 003070 aa 012144 3520 04 epp2 5220,ic 015234 = 000400627000 003071 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 576 end; STATEMENT 1 ON LINE 578 do idx = 1 to oc_data.console_cnt; 003072 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003073 aa 7 00002 2351 00 lda pr7|2 oc_data.console_cnt 003074 aa 000066 7330 00 lrs 54 003075 aa 6 00423 7561 00 stq pr6|275 003076 aa 000001 2360 07 ldq 1,dl 003077 aa 6 00272 7561 00 stq pr6|186 idx 003100 aa 6 00272 2361 00 ldq pr6|186 idx 003101 aa 6 00423 1161 00 cmpq pr6|275 003102 aa 000114 6054 04 tpnz 76,ic 003216 STATEMENT 1 ON LINE 579 oc_entry_ptr = addr (oc_data.opc (idx)); 003103 aa 000034 4020 07 mpy 28,dl 003104 aa 6 00645 7561 00 stq pr6|421 003105 aa 000400 2360 07 ldq 256,dl 003106 aa 000003 0760 07 adq 3,dl 003107 aa 000002 7320 00 qrs 2 003110 aa 000012 0760 07 adq 10,dl 003111 aa 6 00637 7561 00 stq pr6|415 003112 aa 000001 0760 07 adq 1,dl 003113 aa 777776 3760 07 anq 262142,dl 003114 aa 000003 7360 00 qls 3 003115 aa 6 00644 7561 00 stq pr6|420 003116 aa 6 00637 2361 00 ldq pr6|415 003117 aa 000042 0760 07 adq 34,dl 003120 aa 000001 0760 07 adq 1,dl 003121 aa 777776 3760 07 anq 262142,dl 003122 aa 6 00637 0761 00 adq pr6|415 003123 aa 000001 0760 07 adq 1,dl 003124 aa 777776 3760 07 anq 262142,dl 003125 aa 000044 7770 00 llr 36 003126 aa 000044 7330 00 lrs 36 003127 aa 6 00644 0331 00 adl pr6|420 003130 aa 000012 0330 07 adl 10,dl 003131 aa 000001 0760 07 adq 1,dl 003132 aa 777776 3760 07 anq 262142,dl 003133 aa 6 00645 0761 00 adq pr6|421 003134 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003135 aa 7 77744 3735 06 epp7 pr7|-28,ql oc_data.opc 003136 aa 6 00406 6535 00 spri7 pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 580 if oc_entry.bootload_console then do; 003137 aa 7 00002 2351 00 lda pr7|2 oc_entry.bootload_console 003140 aa 100000 3150 03 cana 32768,du 003141 aa 000053 6000 04 tze 43,ic 003214 STATEMENT 1 ON LINE 581 call assign_bootload_console (oc_entry.name, err_code); 003142 aa 7 00000 3521 00 epp2 pr7|0 oc_entry.name 003143 aa 6 00630 2521 00 spri2 pr6|408 003144 aa 6 00244 3521 00 epp2 pr6|164 err_code 003145 aa 6 00632 2521 00 spri2 pr6|410 003146 aa 6 00626 6211 00 eax1 pr6|406 003147 aa 010000 4310 07 fld 4096,dl 003150 aa 003131 3520 04 epp2 1625,ic 006301 = 000140627000 003151 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 582 if err_code ^= 0 then call console_recovery (); 003152 aa 6 00244 2361 00 ldq pr6|164 err_code 003153 aa 000005 6000 04 tze 5,ic 003160 003154 aa 6 00056 6211 00 eax1 pr6|46 003155 aa 000000 4310 07 fld 0,dl 003156 aa 003744 3520 04 epp2 2020,ic 007122 = 000260627000 003157 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 583 if oc_data.bootload_console_idx < 1 then call report_error (PANIC, entrypoint, "Console channel assignment failed."); 003160 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003161 aa 7 00002 2351 00 lda pr7|2 oc_data.bootload_console_idx 003162 aa 000022 7350 00 als 18 003163 aa 000066 7330 00 lrs 54 003164 aa 000001 1160 07 cmpq 1,dl 003165 aa 000024 6050 04 tpl 20,ic 003211 003166 aa 000 100 100 404 mlr (ic),(pr),fill(000) 003167 aa 775302 00 0044 desc9a -1342,36 000470 = 103157156163 003170 aa 6 00646 00 0044 desc9a pr6|422,36 003171 aa 774760 3520 04 epp2 -1552,ic 000151 = 000000000006 003172 aa 6 00666 2521 00 spri2 pr6|438 003173 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 003174 aa 6 00670 2521 00 spri2 pr6|440 003175 aa 6 00646 3521 00 epp2 pr6|422 003176 aa 6 00672 2521 00 spri2 pr6|442 003177 aa 774773 3520 04 epp2 -1541,ic 000172 = 404000000021 003200 aa 6 00676 2521 00 spri2 pr6|446 003201 aa 774735 3520 04 epp2 -1571,ic 000136 = 526000000040 003202 aa 6 00700 2521 00 spri2 pr6|448 003203 aa 774720 3520 04 epp2 -1584,ic 000123 = 524000000042 003204 aa 6 00702 2521 00 spri2 pr6|450 003205 aa 6 00664 6211 00 eax1 pr6|436 003206 aa 014000 4310 07 fld 6144,dl 003207 aa 012025 3520 04 epp2 5141,ic 015234 = 000400627000 003210 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 585 sd.ocdcm_init_flag = true; 003211 aa 100000 2350 03 lda 32768,du 003212 aa 6 00412 3735 20 epp7 pr6|266,* sd_ptr 003213 aa 7 00001 2551 00 orsa pr7|1 sd.ocdcm_init_flag STATEMENT 1 ON LINE 586 end; STATEMENT 1 ON LINE 587 end; 003214 aa 6 00272 0541 00 aos pr6|186 idx 003215 aa 777663 7100 04 tra -77,ic 003100 STATEMENT 1 ON LINE 589 if oc_data.bootload_console_idx < 1 then do; 003216 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003217 aa 7 00002 2351 00 lda pr7|2 oc_data.bootload_console_idx 003220 aa 000022 7350 00 als 18 003221 aa 000066 7330 00 lrs 54 003222 aa 000001 1160 07 cmpq 1,dl 003223 aa 000036 6050 04 tpl 30,ic 003261 STATEMENT 1 ON LINE 590 call console_recovery (); 003224 aa 6 00056 6211 00 eax1 pr6|46 003225 aa 000000 4310 07 fld 0,dl 003226 aa 003674 3520 04 epp2 1980,ic 007122 = 000260627000 003227 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 591 if oc_data.bootload_console_idx < 1 then call report_error (PANIC, entrypoint, "No active console configured."); 003230 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003231 aa 7 00002 2351 00 lda pr7|2 oc_data.bootload_console_idx 003232 aa 000022 7350 00 als 18 003233 aa 000066 7330 00 lrs 54 003234 aa 000001 1160 07 cmpq 1,dl 003235 aa 000024 6050 04 tpl 20,ic 003261 003236 aa 000 100 100 404 mlr (ic),(pr),fill(000) 003237 aa 775146 00 0040 desc9a -1434,32 000404 = 116157040141 003240 aa 6 00626 00 0040 desc9a pr6|406,32 003241 aa 774710 3520 04 epp2 -1592,ic 000151 = 000000000006 003242 aa 6 00666 2521 00 spri2 pr6|438 003243 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 003244 aa 6 00670 2521 00 spri2 pr6|440 003245 aa 6 00626 3521 00 epp2 pr6|406 003246 aa 6 00672 2521 00 spri2 pr6|442 003247 aa 774723 3520 04 epp2 -1581,ic 000172 = 404000000021 003250 aa 6 00676 2521 00 spri2 pr6|446 003251 aa 774665 3520 04 epp2 -1611,ic 000136 = 526000000040 003252 aa 6 00700 2521 00 spri2 pr6|448 003253 aa 774647 3520 04 epp2 -1625,ic 000122 = 524000000035 003254 aa 6 00702 2521 00 spri2 pr6|450 003255 aa 6 00664 6211 00 eax1 pr6|436 003256 aa 014000 4310 07 fld 6144,dl 003257 aa 011755 3520 04 epp2 5101,ic 015234 = 000400627000 003260 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 593 end; STATEMENT 1 ON LINE 595 prph_opc_cardp = null; 003261 aa 774737 2370 04 ldaq -1569,ic 000220 = 077777000043 000001000000 003262 aa 6 00374 7571 00 staq pr6|252 prph_opc_cardp STATEMENT 1 ON LINE 596 cpu_cnt = 0; 003263 aa 6 00227 4501 00 stz pr6|151 cpu_cnt STATEMENT 1 ON LINE 597 done = false; 003264 aa 6 00116 4501 00 stz pr6|78 done STATEMENT 1 ON LINE 599 do while (^done); 003265 aa 000000 0110 03 nop 0,du 003266 aa 6 00116 2351 00 lda pr6|78 done 003267 aa 000025 6010 04 tnz 21,ic 003314 STATEMENT 1 ON LINE 600 call config_$find ("cpu", prph_opc_cardp); 003270 aa 774631 2350 04 lda -1639,ic 000121 = 143160165040 003271 aa 6 00645 7551 00 sta pr6|421 003272 aa 6 00645 3521 00 epp2 pr6|421 003273 aa 6 00630 2521 00 spri2 pr6|408 003274 aa 6 00374 3521 00 epp2 pr6|252 prph_opc_cardp 003275 aa 6 00632 2521 00 spri2 pr6|410 003276 aa 6 00626 6211 00 eax1 pr6|406 003277 aa 010000 4310 07 fld 4096,dl 003300 aa 6 00044 3701 20 epp4 pr6|36,* 003301 la 4 00016 3521 20 epp2 pr4|14,* config_$find 003302 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 601 if prph_opc_cardp ^= null then cpu_cnt = cpu_cnt + 1; 003303 aa 6 00374 2371 00 ldaq pr6|252 prph_opc_cardp 003304 aa 774714 6770 04 eraq -1588,ic 000220 = 077777000043 000001000000 003305 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 003306 aa 000003 6000 04 tze 3,ic 003311 003307 aa 6 00227 0541 00 aos pr6|151 cpu_cnt 003310 aa 777756 7100 04 tra -18,ic 003266 STATEMENT 1 ON LINE 602 else done = true; 003311 aa 400000 2350 03 lda 131072,du 003312 aa 6 00116 7551 00 sta pr6|78 done STATEMENT 1 ON LINE 603 end; 003313 aa 777753 7100 04 tra -21,ic 003266 STATEMENT 1 ON LINE 605 oc_data.max_computed_io_time = oc_data.max_computed_io_time * max (1, cpu_cnt); 003314 aa 000001 2360 07 ldq 1,dl 003315 aa 6 00227 1161 00 cmpq pr6|151 cpu_cnt 003316 aa 000002 6050 04 tpl 2,ic 003320 003317 aa 6 00227 2361 00 ldq pr6|151 cpu_cnt 003320 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003321 aa 7 00032 3521 00 epp2 pr7|26 oc_data.max_computed_io_time 003322 aa 0 00671 7001 00 tsx0 pr0|441 mpfx2 003323 aa 7 00032 7571 00 staq pr7|26 oc_data.max_computed_io_time STATEMENT 1 ON LINE 607 if oc_data.list_consoles & (sys_info$collection_1_phase = BOOT_INITIALIZATION | sys_info$collection_1_phase = SERVICE_INITIALIZATION) then do idx = 1 to oc_data.console_cnt; 003324 aa 7 00003 2351 00 lda pr7|3 oc_data.list_consoles 003325 aa 040000 3150 03 cana 16384,du 003326 aa 000155 6000 04 tze 109,ic 003503 003327 aa 6 00044 3701 20 epp4 pr6|36,* 003330 la 4 00104 2361 20 ldq pr4|68,* sys_info$collection_1_phase 003331 aa 000002 1160 07 cmpq 2,dl 003332 aa 000003 6000 04 tze 3,ic 003335 003333 aa 000003 1160 07 cmpq 3,dl 003334 aa 000147 6010 04 tnz 103,ic 003503 003335 aa 7 00002 2351 00 lda pr7|2 oc_data.console_cnt 003336 aa 000066 7330 00 lrs 54 003337 aa 6 00445 7561 00 stq pr6|293 003340 aa 000001 2360 07 ldq 1,dl 003341 aa 6 00272 7561 00 stq pr6|186 idx 003342 aa 6 00272 2361 00 ldq pr6|186 idx 003343 aa 6 00445 1161 00 cmpq pr6|293 003344 aa 000137 6054 04 tpnz 95,ic 003503 STATEMENT 1 ON LINE 611 oc_entry_ptr = addr (oc_data.opc (idx)); 003345 aa 000034 4020 07 mpy 28,dl 003346 aa 6 00645 7561 00 stq pr6|421 003347 aa 000400 2360 07 ldq 256,dl 003350 aa 000003 0760 07 adq 3,dl 003351 aa 000002 7320 00 qrs 2 003352 aa 000012 0760 07 adq 10,dl 003353 aa 6 00644 7561 00 stq pr6|420 003354 aa 000001 0760 07 adq 1,dl 003355 aa 777776 3760 07 anq 262142,dl 003356 aa 000003 7360 00 qls 3 003357 aa 6 00637 7561 00 stq pr6|415 003360 aa 6 00644 2361 00 ldq pr6|420 003361 aa 000042 0760 07 adq 34,dl 003362 aa 000001 0760 07 adq 1,dl 003363 aa 777776 3760 07 anq 262142,dl 003364 aa 6 00644 0761 00 adq pr6|420 003365 aa 000001 0760 07 adq 1,dl 003366 aa 777776 3760 07 anq 262142,dl 003367 aa 000044 7770 00 llr 36 003370 aa 000044 7330 00 lrs 36 003371 aa 6 00637 0331 00 adl pr6|415 003372 aa 000012 0330 07 adl 10,dl 003373 aa 000001 0760 07 adq 1,dl 003374 aa 777776 3760 07 anq 262142,dl 003375 aa 6 00645 0761 00 adq pr6|421 003376 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003377 aa 7 77744 3735 06 epp7 pr7|-28,ql oc_data.opc 003400 aa 6 00406 6535 00 spri7 pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 612 device_type = "uninitialized"; 003401 aa 040 100 100 404 mlr (ic),(pr),fill(040) 003402 aa 774674 00 0015 desc9a -1604,13 000275 = 165156151156 003403 aa 6 00230 00 0020 desc9a pr6|152,16 device_type STATEMENT 1 ON LINE 613 if oc_entry.bootload_console then device_type = "bootload"; 003404 aa 7 00002 2351 00 lda pr7|2 oc_entry.bootload_console 003405 aa 100000 3150 03 cana 32768,du 003406 aa 000005 6000 04 tze 5,ic 003413 003407 aa 040 100 100 404 mlr (ic),(pr),fill(040) 003410 aa 774601 00 0010 desc9a -1663,8 000210 = 142157157164 003411 aa 6 00230 00 0020 desc9a pr6|152,16 device_type 003412 aa 000034 7100 04 tra 28,ic 003446 STATEMENT 1 ON LINE 614 else if oc_entry.alternate then device_type = "alternate"; 003413 aa 7 00002 2351 00 lda pr7|2 oc_entry.alternate 003414 aa 040000 3150 03 cana 16384,du 003415 aa 000005 6000 04 tze 5,ic 003422 003416 aa 040 100 100 404 mlr (ic),(pr),fill(040) 003417 aa 774615 00 0011 desc9a -1651,9 000233 = 141154164145 003420 aa 6 00230 00 0020 desc9a pr6|152,16 device_type 003421 aa 000025 7100 04 tra 21,ic 003446 STATEMENT 1 ON LINE 615 else if oc_entry.io_device then device_type = "I/O"; 003422 aa 7 00002 2351 00 lda pr7|2 oc_entry.io_device 003423 aa 010000 3150 03 cana 4096,du 003424 aa 000005 6000 04 tze 5,ic 003431 003425 aa 040 100 100 404 mlr (ic),(pr),fill(040) 003426 aa 774473 00 0003 desc9a -1733,3 000120 = 111057117000 003427 aa 6 00230 00 0020 desc9a pr6|152,16 device_type 003430 aa 000016 7100 04 tra 14,ic 003446 STATEMENT 1 ON LINE 616 else if oc_entry.inop_device then device_type = "inoperative"; 003431 aa 7 00002 2351 00 lda pr7|2 oc_entry.inop_device 003432 aa 020000 3150 03 cana 8192,du 003433 aa 000005 6000 04 tze 5,ic 003440 003434 aa 040 100 100 404 mlr (ic),(pr),fill(040) 003435 aa 774574 00 0013 desc9a -1668,11 000230 = 151156157160 003436 aa 6 00230 00 0020 desc9a pr6|152,16 device_type 003437 aa 000007 7100 04 tra 7,ic 003446 STATEMENT 1 ON LINE 617 else if oc_entry.no_device then device_type = "off"; 003440 aa 7 00002 2351 00 lda pr7|2 oc_entry.no_device 003441 aa 004000 3150 03 cana 2048,du 003442 aa 000004 6000 04 tze 4,ic 003446 003443 aa 040 100 100 404 mlr (ic),(pr),fill(040) 003444 aa 774454 00 0003 desc9a -1748,3 000117 = 157146146000 003445 aa 6 00230 00 0020 desc9a pr6|152,16 device_type STATEMENT 1 ON LINE 618 call report_error (ANNOUNCE, entrypoint, "Assigned console ^a as ^a device.", oc_entry.name, device_type); 003446 aa 000 100 100 404 mlr (ic),(pr),fill(000) 003447 aa 775011 00 0044 desc9a -1527,36 000457 = 101163163151 003450 aa 6 00646 00 0044 desc9a pr6|422,36 003451 aa 774470 3520 04 epp2 -1736,ic 000141 = 000000000000 003452 aa 6 00706 2521 00 spri2 pr6|454 003453 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 003454 aa 6 00710 2521 00 spri2 pr6|456 003455 aa 6 00646 3521 00 epp2 pr6|422 003456 aa 6 00712 2521 00 spri2 pr6|458 003457 aa 7 00000 3521 00 epp2 pr7|0 oc_entry.name 003460 aa 6 00714 2521 00 spri2 pr6|460 003461 aa 6 00230 3521 00 epp2 pr6|152 device_type 003462 aa 6 00716 2521 00 spri2 pr6|462 003463 aa 774507 3520 04 epp2 -1721,ic 000172 = 404000000021 003464 aa 6 00722 2521 00 spri2 pr6|466 003465 aa 774451 3520 04 epp2 -1751,ic 000136 = 526000000040 003466 aa 6 00724 2521 00 spri2 pr6|468 003467 aa 774427 3520 04 epp2 -1769,ic 000116 = 524000000041 003470 aa 6 00726 2521 00 spri2 pr6|470 003471 aa 774505 3520 04 epp2 -1723,ic 000176 = 524000000004 003472 aa 6 00730 2521 00 spri2 pr6|472 003473 aa 774422 3520 04 epp2 -1774,ic 000115 = 526000000020 003474 aa 6 00732 2521 00 spri2 pr6|474 003475 aa 6 00704 6211 00 eax1 pr6|452 003476 aa 024000 4310 07 fld 10240,dl 003477 aa 011535 3520 04 epp2 4957,ic 015234 = 000400627000 003500 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 620 end; 003501 aa 6 00272 0541 00 aos pr6|186 idx 003502 aa 777640 7100 04 tra -96,ic 003342 STATEMENT 1 ON LINE 622 if sys_info$collection_1_phase < SERVICE_INITIALIZATION then do; 003503 aa 6 00044 3701 20 epp4 pr6|36,* 003504 la 4 00104 2361 20 ldq pr4|68,* sys_info$collection_1_phase 003505 aa 000003 1160 07 cmpq 3,dl 003506 aa 000045 6050 04 tpl 37,ic 003553 STATEMENT 1 ON LINE 623 oc_data.opc (oc_data.bootload_console_idx).oper_request = true; 003507 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003510 aa 7 00002 2351 00 lda pr7|2 oc_data.bootload_console_idx 003511 aa 000022 7350 00 als 18 003512 aa 000066 7330 00 lrs 54 003513 aa 000034 4020 07 mpy 28,dl 003514 aa 000044 4020 07 mpy 36,dl 003515 aa 6 00645 7561 00 stq pr6|421 003516 aa 000400 2360 07 ldq 256,dl 003517 aa 000003 0760 07 adq 3,dl 003520 aa 000002 7320 00 qrs 2 003521 aa 000012 0760 07 adq 10,dl 003522 aa 6 00637 7561 00 stq pr6|415 003523 aa 000001 0760 07 adq 1,dl 003524 aa 777776 3760 07 anq 262142,dl 003525 aa 000003 7360 00 qls 3 003526 aa 6 00644 7561 00 stq pr6|420 003527 aa 6 00637 2361 00 ldq pr6|415 003530 aa 000042 0760 07 adq 34,dl 003531 aa 000001 0760 07 adq 1,dl 003532 aa 777776 3760 07 anq 262142,dl 003533 aa 6 00637 0761 00 adq pr6|415 003534 aa 000001 0760 07 adq 1,dl 003535 aa 777776 3760 07 anq 262142,dl 003536 aa 000044 7770 00 llr 36 003537 aa 000044 7330 00 lrs 36 003540 aa 6 00644 0331 00 adl pr6|420 003541 aa 000012 0330 07 adl 10,dl 003542 aa 000001 0760 07 adq 1,dl 003543 aa 777776 3760 07 anq 262142,dl 003544 aa 000002 0760 07 adq 2,dl 003545 aa 000044 4020 07 mpy 36,dl 003546 aa 000014 0760 07 adq 12,dl 003547 aa 6 00645 0761 00 adq pr6|421 003550 aa 403 106 060 400 csl (),(pr,ql),fill(1),bool(move) 003551 aa 000000 00 0000 descb 0,0 003552 aa 7 77744 00 0001 descb pr7|-28,1 oc_data.oper_request STATEMENT 1 ON LINE 624 end; STATEMENT 1 ON LINE 626 call log_console_event (INIT_OC_DATA, oc_data.io_ptr); 003553 aa 774426 3520 04 epp2 -1770,ic 000201 = 000000000001 003554 aa 6 00630 2521 00 spri2 pr6|408 003555 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003556 aa 7 00022 3521 00 epp2 pr7|18 oc_data.io_ptr 003557 aa 6 00632 2521 00 spri2 pr6|410 003560 aa 6 00626 6211 00 eax1 pr6|406 003561 aa 010000 4310 07 fld 4096,dl 003562 aa 007214 3520 04 epp2 3724,ic 012776 = 000120627000 003563 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 628 return; 003564 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO interrupt_handler STATEMENT 1 ON LINE 630 interrupt_handler: entry (assigned_idx, interrupt_level, fault_status); 003565 at 000003000165 003566 tt 000164000175 003567 ta 003565000000 003570 da 000570300000 003571 aa 001460 6270 00 eax7 816 003572 aa 7 00034 3521 20 epp2 pr7|28,* 003573 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 003574 aa 000006000000 003575 aa 000000000000 003576 aa 775413 7000 04 tsx0 -1269,ic 001211 STATEMENT 1 ON LINE 651 entrypoint = "interrupt_handler"; 003577 aa 040 100 100 404 mlr (ic),(pr),fill(040) 003600 aa 774507 00 0021 desc9a -1721,17 000306 = 151156164145 003601 aa 6 00234 00 0040 desc9a pr6|156,32 entrypoint STATEMENT 1 ON LINE 654 entered_via_interrupt = true; 003602 aa 400000 2350 03 lda 131072,du 003603 aa 6 00122 7551 00 sta pr6|82 entered_via_interrupt STATEMENT 1 ON LINE 656 if interrupt_level = 1 then do; 003604 aa 6 00032 3735 20 epp7 pr6|26,* 003605 aa 7 00004 2361 20 ldq pr7|4,* interrupt_level 003606 aa 000001 1160 07 cmpq 1,dl 003607 aa 000030 6010 04 tnz 24,ic 003637 STATEMENT 1 ON LINE 657 call report_error (JUST_LOG, entrypoint, "System Fault."); 003610 aa 774461 2350 04 lda -1743,ic 000271 = 123171163164 003611 aa 774461 2360 04 ldq -1743,ic 000272 = 145155040106 003612 aa 6 00626 7571 00 staq pr6|406 003613 aa 774460 2350 04 lda -1744,ic 000273 = 141165154164 003614 aa 056000 2360 03 ldq 23552,du 003615 aa 6 00630 7571 00 staq pr6|408 003616 aa 774352 3520 04 epp2 -1814,ic 000170 = 000000000005 003617 aa 6 00666 2521 00 spri2 pr6|438 003620 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 003621 aa 6 00670 2521 00 spri2 pr6|440 003622 aa 6 00626 3521 00 epp2 pr6|406 003623 aa 6 00672 2521 00 spri2 pr6|442 003624 aa 774346 3520 04 epp2 -1818,ic 000172 = 404000000021 003625 aa 6 00676 2521 00 spri2 pr6|446 003626 aa 774310 3520 04 epp2 -1848,ic 000136 = 526000000040 003627 aa 6 00700 2521 00 spri2 pr6|448 003630 aa 774264 3520 04 epp2 -1868,ic 000114 = 524000000015 003631 aa 6 00702 2521 00 spri2 pr6|450 003632 aa 6 00664 6211 00 eax1 pr6|436 003633 aa 014000 4310 07 fld 6144,dl 003634 aa 011400 3520 04 epp2 4864,ic 015234 = 000400627000 003635 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 658 return; 003636 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 659 end; STATEMENT 1 ON LINE 661 oc_data_ptr = addr (oc_data$); 003637 aa 6 00044 3701 20 epp4 pr6|36,* 003640 la 4 00124 3715 20 epp5 pr4|84,* oc_data$ 003641 aa 6 00404 6515 00 spri5 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 663 oc_entry_ptr = find_oc_entry (""); 003642 aa 774276 2350 04 lda -1858,ic 000140 = 040040040040 003643 aa 6 00645 7551 00 sta pr6|421 003644 aa 6 00645 3521 00 epp2 pr6|421 003645 aa 6 00630 2521 00 spri2 pr6|408 003646 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 003647 aa 6 00632 2521 00 spri2 pr6|410 003650 aa 6 00626 6211 00 eax1 pr6|406 003651 aa 010000 4310 07 fld 4096,dl 003652 aa 005063 3520 04 epp2 2611,ic 010735 = 000140627000 003653 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 664 if oc_entry_ptr = null then return; 003654 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 003655 aa 774343 6770 04 eraq -1821,ic 000220 = 077777000043 000001000000 003656 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 003657 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 665 if assigned_idx > 0 & assigned_idx ^= oc_entry.device_idx then do; 003660 aa 6 00032 3735 20 epp7 pr6|26,* 003661 aa 7 00002 2361 20 ldq pr7|2,* assigned_idx 003662 aa 000100 6044 04 tmoz 64,ic 003762 003663 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 003664 aa 5 00005 1161 00 cmpq pr5|5 oc_entry.device_idx 003665 aa 000075 6000 04 tze 61,ic 003762 STATEMENT 1 ON LINE 666 if interrupt_level = 7 then return; 003666 aa 7 00004 2361 20 ldq pr7|4,* interrupt_level 003667 aa 000007 1160 07 cmpq 7,dl 003670 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 667 do idx = 1 to oc_data.console_cnt; 003671 aa 6 00404 3535 20 epp3 pr6|260,* oc_data_ptr 003672 aa 3 00002 2351 00 lda pr3|2 oc_data.console_cnt 003673 aa 000066 7330 00 lrs 54 003674 aa 6 00467 7561 00 stq pr6|311 003675 aa 000001 2360 07 ldq 1,dl 003676 aa 6 00272 7561 00 stq pr6|186 idx 003677 aa 000000 0110 03 nop 0,du 003700 aa 6 00272 2361 00 ldq pr6|186 idx 003701 aa 6 00467 1161 00 cmpq pr6|311 003702 aa 000050 6054 04 tpnz 40,ic 003752 STATEMENT 1 ON LINE 668 if oc_data.opc (idx).device_idx = assigned_idx then /* found it... */ oc_entry_ptr = (addr (oc_data.opc (idx))); 003703 aa 000034 4020 07 mpy 28,dl 003704 aa 6 00645 7561 00 stq pr6|421 003705 aa 000400 2360 07 ldq 256,dl 003706 aa 000003 0760 07 adq 3,dl 003707 aa 000002 7320 00 qrs 2 003710 aa 000012 0760 07 adq 10,dl 003711 aa 6 00644 7561 00 stq pr6|420 003712 aa 000001 0760 07 adq 1,dl 003713 aa 777776 3760 07 anq 262142,dl 003714 aa 000003 7360 00 qls 3 003715 aa 6 00637 7561 00 stq pr6|415 003716 aa 6 00644 2361 00 ldq pr6|420 003717 aa 000042 0760 07 adq 34,dl 003720 aa 000001 0760 07 adq 1,dl 003721 aa 777776 3760 07 anq 262142,dl 003722 aa 6 00644 0761 00 adq pr6|420 003723 aa 000001 0760 07 adq 1,dl 003724 aa 777776 3760 07 anq 262142,dl 003725 aa 000044 7770 00 llr 36 003726 aa 000044 7330 00 lrs 36 003727 aa 6 00637 0331 00 adl pr6|415 003730 aa 000012 0330 07 adl 10,dl 003731 aa 000001 0760 07 adq 1,dl 003732 aa 777776 3760 07 anq 262142,dl 003733 aa 6 00637 7561 00 stq pr6|415 003734 aa 000005 0760 07 adq 5,dl 003735 aa 6 00645 0761 00 adq pr6|421 003736 aa 6 00644 7561 00 stq pr6|420 003737 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 003740 aa 7 77744 2361 06 ldq pr7|-28,ql oc_data.device_idx 003741 aa 6 00032 3715 20 epp5 pr6|26,* 003742 aa 5 00002 1161 20 cmpq pr5|2,* assigned_idx 003743 aa 000005 6010 04 tnz 5,ic 003750 003744 aa 6 00637 2361 00 ldq pr6|415 003745 aa 6 00645 0761 00 adq pr6|421 003746 aa 7 77744 3535 06 epp3 pr7|-28,ql oc_data.opc 003747 aa 6 00406 2535 00 spri3 pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 670 end; 003750 aa 6 00272 0541 00 aos pr6|186 idx 003751 aa 777727 7100 04 tra -41,ic 003700 STATEMENT 1 ON LINE 671 if assigned_idx ^= oc_entry.device_idx then return; 003752 aa 6 00032 3735 20 epp7 pr6|26,* 003753 aa 7 00002 2361 20 ldq pr7|2,* assigned_idx 003754 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 003755 aa 5 00005 1161 00 cmpq pr5|5 oc_entry.device_idx 003756 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 672 if ^oc_entry.assigned then return; 003757 aa 5 00002 2351 00 lda pr5|2 oc_entry.assigned 003760 aa 200000 3150 03 cana 65536,du 003761 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 673 end; STATEMENT 1 ON LINE 675 if stac (addr (oc_data.lock), pds$process_id) then do; 003762 aa 6 00404 3715 20 epp5 pr6|260,* oc_data.lock 003763 aa 6 00640 6515 00 spri5 pr6|416 003764 aa 6 00044 3701 20 epp4 pr6|36,* 003765 la 4 00100 2351 20 lda pr4|64,* pds$process_id 003766 aa 5 00000 3521 00 epp2 pr5|0 003767 aa 0 00663 7001 00 tsx0 pr0|435 stac_mac 003770 aa 000031 6000 04 tze 25,ic 004021 STATEMENT 1 ON LINE 676 call wire_and_mask; 003771 aa 6 00056 6211 00 eax1 pr6|46 003772 aa 000000 4310 07 fld 0,dl 003773 aa 013532 3520 04 epp2 5978,ic 017525 = 000120627000 003774 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 677 if interrupt_level = 7 then oc_entry.got_special_int = true; 003775 aa 6 00032 3735 20 epp7 pr6|26,* 003776 aa 7 00004 2361 20 ldq pr7|4,* interrupt_level 003777 aa 000007 1160 07 cmpq 7,dl 004000 aa 000004 6010 04 tnz 4,ic 004004 004001 aa 000100 2350 03 lda 64,du 004002 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 004003 aa 5 00002 2551 00 orsa pr5|2 oc_entry.got_special_int STATEMENT 1 ON LINE 679 call process_io_status (); 004004 aa 6 00056 6211 00 eax1 pr6|46 004005 aa 000000 4310 07 fld 0,dl 004006 aa 010303 3520 04 epp2 4291,ic 014311 = 000520627000 004007 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 681 call process_io (); 004010 aa 6 00056 6211 00 eax1 pr6|46 004011 aa 000000 4310 07 fld 0,dl 004012 aa 007765 3520 04 epp2 4085,ic 013777 = 000140627000 004013 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 683 call unlock_oc_data (); 004014 aa 6 00056 6211 00 eax1 pr6|46 004015 aa 000000 4310 07 fld 0,dl 004016 aa 013353 3520 04 epp2 5867,ic 017371 = 000140627000 004017 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 684 end; 004020 aa 000035 7100 04 tra 29,ic 004055 STATEMENT 1 ON LINE 685 else if interrupt_level = 7 then do; 004021 aa 7 00004 2361 20 ldq pr7|4,* interrupt_level 004022 aa 000007 1160 07 cmpq 7,dl 004023 aa 000032 6010 04 tnz 26,ic 004055 STATEMENT 1 ON LINE 686 oc_data.no_lock_flags.got_special_int = true; 004024 aa 400000 2350 03 lda 131072,du 004025 aa 6 00404 3535 20 epp3 pr6|260,* oc_data_ptr 004026 aa 3 00004 2551 00 orsa pr3|4 oc_data.got_special_int STATEMENT 1 ON LINE 687 oc_data.meters.queued_special_int_count = oc_data.meters.queued_special_int_count +1; 004027 aa 000400 2360 07 ldq 256,dl 004030 aa 000003 0760 07 adq 3,dl 004031 aa 000002 7320 00 qrs 2 004032 aa 000012 0760 07 adq 10,dl 004033 aa 6 00645 7561 00 stq pr6|421 004034 aa 000001 0760 07 adq 1,dl 004035 aa 777776 3760 07 anq 262142,dl 004036 aa 000003 7360 00 qls 3 004037 aa 6 00637 7561 00 stq pr6|415 004040 aa 6 00645 2361 00 ldq pr6|421 004041 aa 000042 0760 07 adq 34,dl 004042 aa 000001 0760 07 adq 1,dl 004043 aa 777776 3760 07 anq 262142,dl 004044 aa 6 00645 0761 00 adq pr6|421 004045 aa 000001 0760 07 adq 1,dl 004046 aa 777776 3760 07 anq 262142,dl 004047 aa 6 00637 0761 00 adq pr6|415 004050 aa 000000 6270 06 eax7 0,ql 004051 aa 3 00002 2351 06 lda pr3|2,ql oc_data.queued_special_int_count 004052 aa 000044 7330 00 lrs 36 004053 aa 000001 0330 07 adl 1,dl 004054 aa 3 00002 7561 17 stq pr3|2,7 oc_data.queued_special_int_count STATEMENT 1 ON LINE 688 end; STATEMENT 1 ON LINE 690 return; 004055 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO poll_for_timeout STATEMENT 1 ON LINE 692 poll_for_timeout: entry (); 004056 da 000600200000 004057 aa 001460 6270 00 eax7 816 004060 aa 7 00034 3521 20 epp2 pr7|28,* 004061 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 004062 aa 000000000000 004063 aa 000000000000 004064 aa 775125 7000 04 tsx0 -1451,ic 001211 STATEMENT 1 ON LINE 701 oc_data_ptr = addr (oc_data$); 004065 aa 6 00044 3701 20 epp4 pr6|36,* 004066 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 004067 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 703 if ^oc_data.in_service | oc_data.mc_io_enabled then return; 004070 aa 7 00003 2351 00 lda pr7|3 oc_data.in_service 004071 aa 400000 3150 03 cana 131072,du 004072 aa 0 00631 6001 00 tze pr0|409 return_mac 004073 aa 7 00003 2351 00 lda pr7|3 oc_data.mc_io_enabled 004074 aa 100000 3150 03 cana 32768,du 004075 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 705 if oc_data.lock = pds$process_id then do; 004076 aa 7 00000 2351 00 lda pr7|0 oc_data.lock 004077 la 4 00100 1151 20 cmpa pr4|64,* pds$process_id 004100 aa 000034 6010 04 tnz 28,ic 004134 STATEMENT 1 ON LINE 706 call report_error (PANIC, "lock_oc_data", "Mylock error."); 004101 aa 774124 2350 04 lda -1964,ic 000225 = 154157143153 004102 aa 774124 2360 04 ldq -1964,ic 000226 = 137157143137 004103 aa 6 00626 7571 00 staq pr6|406 004104 aa 774123 2350 04 lda -1965,ic 000227 = 144141164141 004105 aa 6 00630 7551 00 sta pr6|408 004106 aa 774157 2350 04 lda -1937,ic 000265 = 115171154157 004107 aa 774157 2360 04 ldq -1937,ic 000266 = 143153040145 004110 aa 6 00646 7571 00 staq pr6|422 004111 aa 774156 2350 04 lda -1938,ic 000267 = 162162157162 004112 aa 056000 2360 03 ldq 23552,du 004113 aa 6 00650 7571 00 staq pr6|424 004114 aa 774035 3520 04 epp2 -2019,ic 000151 = 000000000006 004115 aa 6 00666 2521 00 spri2 pr6|438 004116 aa 6 00626 3521 00 epp2 pr6|406 004117 aa 6 00670 2521 00 spri2 pr6|440 004120 aa 6 00646 3521 00 epp2 pr6|422 004121 aa 6 00672 2521 00 spri2 pr6|442 004122 aa 774050 3520 04 epp2 -2008,ic 000172 = 404000000021 004123 aa 6 00676 2521 00 spri2 pr6|446 004124 aa 773767 3520 04 epp2 -2057,ic 000113 = 524000000014 004125 aa 6 00700 2521 00 spri2 pr6|448 004126 aa 773766 3520 04 epp2 -2058,ic 000114 = 524000000015 004127 aa 6 00702 2521 00 spri2 pr6|450 004130 aa 6 00664 6211 00 eax1 pr6|436 004131 aa 014000 4310 07 fld 6144,dl 004132 aa 011102 3520 04 epp2 4674,ic 015234 = 000400627000 004133 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 707 end; STATEMENT 1 ON LINE 709 if ^stac (addr (oc_data.lock), pds$process_id) then return; 004134 aa 6 00404 3735 20 epp7 pr6|260,* oc_data.lock 004135 aa 6 00734 6535 00 spri7 pr6|476 004136 aa 6 00044 3701 20 epp4 pr6|36,* 004137 la 4 00100 2351 20 lda pr4|64,* pds$process_id 004140 aa 7 00000 3521 00 epp2 pr7|0 004141 aa 0 00663 7001 00 tsx0 pr0|435 stac_mac 004142 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 711 oc_data.last_poll_time = clock (); 004143 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 004144 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004145 aa 7 00030 7571 00 staq pr7|24 oc_data.last_poll_time STATEMENT 1 ON LINE 713 oc_entry_ptr = find_oc_entry (""); 004146 aa 773772 2350 04 lda -2054,ic 000140 = 040040040040 004147 aa 6 00637 7551 00 sta pr6|415 004150 aa 6 00637 3521 00 epp2 pr6|415 004151 aa 6 00630 2521 00 spri2 pr6|408 004152 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 004153 aa 6 00632 2521 00 spri2 pr6|410 004154 aa 6 00626 6211 00 eax1 pr6|406 004155 aa 010000 4310 07 fld 4096,dl 004156 aa 004557 3520 04 epp2 2415,ic 010735 = 000140627000 004157 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 715 if oc_entry_ptr ^= null then do; 004160 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 004161 aa 774037 6770 04 eraq -2017,ic 000220 = 077777000043 000001000000 004162 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004163 aa 000012 6000 04 tze 10,ic 004175 STATEMENT 1 ON LINE 716 call process_io_status (); 004164 aa 6 00056 6211 00 eax1 pr6|46 004165 aa 000000 4310 07 fld 0,dl 004166 aa 010123 3520 04 epp2 4179,ic 014311 = 000520627000 004167 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 718 call process_io (); 004170 aa 6 00056 6211 00 eax1 pr6|46 004171 aa 000000 4310 07 fld 0,dl 004172 aa 007605 3520 04 epp2 3973,ic 013777 = 000140627000 004173 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 719 end; 004174 aa 000007 7100 04 tra 7,ic 004203 STATEMENT 1 ON LINE 720 else if ^oc_data.mc_io_enabled then oc_data.in_service = false; 004175 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004176 aa 7 00003 2351 00 lda pr7|3 oc_data.mc_io_enabled 004177 aa 100000 3150 03 cana 32768,du 004200 aa 000003 6010 04 tnz 3,ic 004203 004201 aa 013442 2350 04 lda 5922,ic 017643 = 377777777777 004202 aa 7 00003 3551 00 ansa pr7|3 oc_data.in_service STATEMENT 1 ON LINE 723 if ^stacq (oc_data.lock, ""b, pds$process_id) then do; 004203 aa 000000 4310 07 fld 0,dl 004204 aa 6 00404 3521 20 epp2 pr6|260,* oc_data.lock 004205 aa 6 00044 3701 20 epp4 pr6|36,* 004206 la 4 00100 2361 20 ldq pr4|64,* pds$process_id 004207 aa 0 01434 7001 00 tsx0 pr0|796 stacq_mac 004210 aa 000036 6010 04 tnz 30,ic 004246 STATEMENT 1 ON LINE 724 if oc_data.lock ^= ""b then /* if not free crash... */ call report_error (PANIC, "unlock_oc_data", "Lock not mine."); 004211 aa 6 00404 2351 20 lda pr6|260,* oc_data.lock 004212 aa 000034 6000 04 tze 28,ic 004246 004213 aa 774046 2350 04 lda -2010,ic 000261 = 165156154157 004214 aa 774046 2360 04 ldq -2010,ic 000262 = 143153137157 004215 aa 6 00626 7571 00 staq pr6|406 004216 aa 774045 2350 04 lda -2011,ic 000263 = 143137144141 004217 aa 164141 2360 03 ldq 59489,du 004220 aa 6 00630 7571 00 staq pr6|408 004221 aa 774034 2350 04 lda -2020,ic 000255 = 114157143153 004222 aa 774034 2360 04 ldq -2020,ic 000256 = 040156157164 004223 aa 6 00646 7571 00 staq pr6|422 004224 aa 774033 2350 04 lda -2021,ic 000257 = 040155151156 004225 aa 145056 2360 03 ldq 51758,du 004226 aa 6 00650 7571 00 staq pr6|424 004227 aa 773722 3520 04 epp2 -2094,ic 000151 = 000000000006 004230 aa 6 00666 2521 00 spri2 pr6|438 004231 aa 6 00626 3521 00 epp2 pr6|406 004232 aa 6 00670 2521 00 spri2 pr6|440 004233 aa 6 00646 3521 00 epp2 pr6|422 004234 aa 6 00672 2521 00 spri2 pr6|442 004235 aa 773735 3520 04 epp2 -2083,ic 000172 = 404000000021 004236 aa 6 00676 2521 00 spri2 pr6|446 004237 aa 773653 3520 04 epp2 -2133,ic 000112 = 524000000016 004240 aa 6 00700 2521 00 spri2 pr6|448 004241 aa 6 00702 2521 00 spri2 pr6|450 004242 aa 6 00664 6211 00 eax1 pr6|436 004243 aa 014000 4310 07 fld 6144,dl 004244 aa 010770 3520 04 epp2 4600,ic 015234 = 000400627000 004245 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 726 end; STATEMENT 1 ON LINE 728 return; 004246 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO printer_off STATEMENT 1 ON LINE 730 printer_off: entry (); 004247 da 000606200000 004250 aa 001460 6270 00 eax7 816 004251 aa 7 00034 3521 20 epp2 pr7|28,* 004252 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 004253 aa 000000000000 004254 aa 000000000000 004255 aa 774734 7000 04 tsx0 -1572,ic 001211 STATEMENT 1 ON LINE 740 oc_data_ptr = addr (oc_data$); 004256 aa 6 00044 3701 20 epp4 pr6|36,* 004257 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 004260 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 741 oc_data.flags.printer_on = false; 004261 aa 013342 2350 04 lda 5858,ic 017623 = 757777777777 004262 aa 7 00003 3551 00 ansa pr7|3 oc_data.printer_on STATEMENT 1 ON LINE 742 return; 004263 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO printer_on STATEMENT 1 ON LINE 744 printer_on: entry (); 004264 da 000614200000 004265 aa 001460 6270 00 eax7 816 004266 aa 7 00034 3521 20 epp2 pr7|28,* 004267 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 004270 aa 000000000000 004271 aa 000000000000 004272 aa 774717 7000 04 tsx0 -1585,ic 001211 STATEMENT 1 ON LINE 753 oc_data_ptr = addr (oc_data$); 004273 aa 6 00044 3701 20 epp4 pr6|36,* 004274 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 004275 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 754 oc_data.flags.printer_on = true; 004276 aa 020000 2350 03 lda 8192,du 004277 aa 7 00003 2551 00 orsa pr7|3 oc_data.printer_on STATEMENT 1 ON LINE 755 return; 004300 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO priority_io STATEMENT 1 ON LINE 757 priority_io: entry (priority_io_ptr); 004301 at 000001000163 004302 ta 004301000000 004303 da 000622300000 004304 aa 001460 6270 00 eax7 816 004305 aa 7 00034 3521 20 epp2 pr7|28,* 004306 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 004307 aa 000002000000 004310 aa 000000000000 004311 aa 774700 7000 04 tsx0 -1600,ic 001211 STATEMENT 1 ON LINE 787 oc_data_ptr = addr (oc_data$); 004312 aa 6 00044 3701 20 epp4 pr6|36,* 004313 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 004314 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 789 if ^oc_data.in_service then return; 004315 aa 7 00003 2351 00 lda pr7|3 oc_data.in_service 004316 aa 400000 3150 03 cana 131072,du 004317 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 791 local_io = priority_io_ptr -> console_io; 004320 aa 000400 2360 07 ldq 256,dl 004321 aa 000003 0760 07 adq 3,dl 004322 aa 000002 7320 00 qrs 2 004323 aa 000012 0760 07 adq 10,dl 004324 aa 000002 7360 00 qls 2 004325 aa 6 00416 3715 20 epp5 pr6|270,* 004326 aa 6 00032 3535 20 epp3 pr6|26,* 004327 aa 3 00002 3515 20 epp1 pr3|2,* priority_io_ptr 004330 aa 1 00000 3515 20 epp1 pr1|0,* priority_io_ptr 004331 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 004332 aa 1 00000 00 0006 desc9a pr1|0,ql console_io 004333 aa 5 00000 00 0006 desc9a pr5|0,ql local_io STATEMENT 1 ON LINE 793 call lock_oc_data (); 004334 aa 004673 6700 04 tsp4 2491,ic 011227 STATEMENT 1 ON LINE 795 oc_data.priority_io = local_io; 004335 aa 000400 2360 07 ldq 256,dl 004336 aa 000003 0760 07 adq 3,dl 004337 aa 000002 7320 00 qrs 2 004340 aa 000012 0760 07 adq 10,dl 004341 aa 000002 7360 00 qls 2 004342 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004343 aa 6 00416 3715 20 epp5 pr6|270,* 004344 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 004345 aa 5 00000 00 0006 desc9a pr5|0,ql local_io 004346 aa 7 00042 00 0006 desc9a pr7|34,ql oc_data.priority_io STATEMENT 1 ON LINE 797 oc_data.priority_io.time_queued = clock (); 004347 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 004350 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004351 aa 7 00042 7571 00 staq pr7|34 oc_data.time_queued STATEMENT 1 ON LINE 798 oc_data.priority_io.process_id = pds$process_id; 004352 aa 6 00044 3701 20 epp4 pr6|36,* 004353 la 4 00100 2351 20 lda pr4|64,* pds$process_id 004354 aa 7 00046 7551 00 sta pr7|38 oc_data.process_id STATEMENT 1 ON LINE 799 oc_data.priority_io.event_chan = 0; 004355 aa 773641 2370 04 ldaq -2143,ic 000216 = 000000000000 000000000000 004356 aa 7 00044 7571 00 staq pr7|36 oc_data.event_chan STATEMENT 1 ON LINE 800 oc_data.priority_io.completed = false; 004357 aa 013265 2350 04 lda 5813,ic 017644 = 767777777777 004360 aa 7 00050 3551 00 ansa pr7|40 oc_data.completed STATEMENT 1 ON LINE 801 oc_data.priority_io.in_progress = false; 004361 aa 013242 2350 04 lda 5794,ic 017623 = 757777777777 004362 aa 7 00050 3551 00 ansa pr7|40 oc_data.in_progress STATEMENT 1 ON LINE 802 oc_data.priority_io.alerted = false; 004363 aa 013263 2350 04 lda 5811,ic 017646 = 677777777777 004364 aa 7 00050 3551 00 ansa pr7|40 oc_data.alerted STATEMENT 1 ON LINE 804 if oc_data.priority_io.read then do; 004365 aa 7 00050 2351 00 lda pr7|40 oc_data.read 004366 aa 200000 3150 03 cana 65536,du 004367 aa 000012 6000 04 tze 10,ic 004401 STATEMENT 1 ON LINE 805 oc_data.priority_io.sequence_no = 0; 004370 aa 7 00051 4501 00 stz pr7|41 oc_data.sequence_no STATEMENT 1 ON LINE 806 oc_data.priority_io.prompted = false; 004371 aa 013231 2350 04 lda 5785,ic 017622 = 737777777777 004372 aa 7 00050 3551 00 ansa pr7|40 oc_data.prompted STATEMENT 1 ON LINE 807 oc_data.priority_io.leng = 0; 004373 aa 000000 2350 07 lda 0,dl 004374 aa 7 00052 5511 60 stba pr7|42,60 oc_data.leng STATEMENT 1 ON LINE 808 oc_data.priority_io.text = ""; 004375 aa 000400 7270 07 lxl7 256,dl 004376 aa 040 140 100 400 mlr (),(pr,rl),fill(040) 004377 aa 000000 00 0000 desc9a 0,0 004400 aa 7 00054 00 0017 desc9a pr7|44,x7 oc_data.text STATEMENT 1 ON LINE 809 end; STATEMENT 1 ON LINE 811 oc_entry_ptr = find_oc_entry (""); 004401 aa 773537 2350 04 lda -2209,ic 000140 = 040040040040 004402 aa 6 00637 7551 00 sta pr6|415 004403 aa 6 00637 3521 00 epp2 pr6|415 004404 aa 6 00630 2521 00 spri2 pr6|408 004405 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 004406 aa 6 00632 2521 00 spri2 pr6|410 004407 aa 6 00626 6211 00 eax1 pr6|406 004410 aa 010000 4310 07 fld 4096,dl 004411 aa 004324 3520 04 epp2 2260,ic 010735 = 000140627000 004412 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 813 if oc_entry_ptr ^= null then do while (oc_entry.io_in_progress); 004413 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 004414 aa 773604 6770 04 eraq -2172,ic 000220 = 077777000043 000001000000 004415 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004416 aa 000013 6000 04 tze 11,ic 004431 004417 aa 000000 0110 03 nop 0,du 004420 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 004421 aa 7 00002 2351 00 lda pr7|2 oc_entry.io_in_progress 004422 aa 000200 3150 03 cana 128,du 004423 aa 000006 6000 04 tze 6,ic 004431 STATEMENT 1 ON LINE 815 call process_io_status (); 004424 aa 6 00056 6211 00 eax1 pr6|46 004425 aa 000000 4310 07 fld 0,dl 004426 aa 007663 3520 04 epp2 4019,ic 014311 = 000520627000 004427 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 816 end; 004430 aa 777770 7100 04 tra -8,ic 004420 STATEMENT 1 ON LINE 818 if oc_data.mc_io_enabled then do; 004431 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004432 aa 7 00003 2351 00 lda pr7|3 oc_data.mc_io_enabled 004433 aa 100000 3150 03 cana 32768,du 004434 aa 000025 6000 04 tze 21,ic 004461 STATEMENT 1 ON LINE 819 if ^oc_data.priority_io.read then do; 004435 aa 7 00050 2351 00 lda pr7|40 oc_data.read 004436 aa 200000 3150 03 cana 65536,du 004437 aa 000015 6010 04 tnz 13,ic 004454 STATEMENT 1 ON LINE 820 call bump_io_to_mc ((oc_data.priority_io.sequence_no)); 004440 aa 7 00051 2351 00 lda pr7|41 oc_data.sequence_no 004441 aa 000044 7330 00 lrs 36 004442 aa 6 00736 7571 00 staq pr6|478 004443 aa 6 00736 3521 00 epp2 pr6|478 004444 aa 6 00630 2521 00 spri2 pr6|408 004445 aa 6 00626 6211 00 eax1 pr6|406 004446 aa 004000 4310 07 fld 2048,dl 004447 aa 002010 3520 04 epp2 1032,ic 006457 = 000160627000 004450 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 821 oc_data.priority_io.completed = true; 004451 aa 010000 2350 03 lda 4096,du 004452 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004453 aa 7 00050 2551 00 orsa pr7|40 oc_data.completed STATEMENT 1 ON LINE 822 end; STATEMENT 1 ON LINE 823 call unlock_oc_data (); 004454 aa 6 00056 6211 00 eax1 pr6|46 004455 aa 000000 4310 07 fld 0,dl 004456 aa 012713 3520 04 epp2 5579,ic 017371 = 000140627000 004457 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 824 return; 004460 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 825 end; STATEMENT 1 ON LINE 828 do while (^oc_data.priority_io.completed); 004461 aa 000000 0110 03 nop 0,du 004462 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004463 aa 7 00050 2351 00 lda pr7|40 oc_data.completed 004464 aa 010000 3150 03 cana 4096,du 004465 aa 000026 6010 04 tnz 22,ic 004513 STATEMENT 1 ON LINE 829 call process_io (); 004466 aa 6 00056 6211 00 eax1 pr6|46 004467 aa 000000 4310 07 fld 0,dl 004470 aa 007307 3520 04 epp2 3783,ic 013777 = 000140627000 004471 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 830 if oc_data.priority_io.read & ^oc_data.priority_io.in_progress then do; 004472 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004473 aa 7 00050 2351 00 lda pr7|40 oc_data.read 004474 aa 200000 3150 03 cana 65536,du 004475 aa 000011 6000 04 tze 9,ic 004506 004476 aa 7 00050 2351 00 lda pr7|40 oc_data.in_progress 004477 aa 020000 3150 03 cana 8192,du 004500 aa 000006 6010 04 tnz 6,ic 004506 STATEMENT 1 ON LINE 831 call unlock_oc_data (); 004501 aa 6 00056 6211 00 eax1 pr6|46 004502 aa 000000 4310 07 fld 0,dl 004503 aa 012666 3520 04 epp2 5558,ic 017371 = 000140627000 004504 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 832 call lock_oc_data (); 004505 aa 004522 6700 04 tsp4 2386,ic 011227 STATEMENT 1 ON LINE 833 end; STATEMENT 1 ON LINE 834 call process_io_status (); 004506 aa 6 00056 6211 00 eax1 pr6|46 004507 aa 000000 4310 07 fld 0,dl 004510 aa 007601 3520 04 epp2 3969,ic 014311 = 000520627000 004511 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 835 end; 004512 aa 777750 7100 04 tra -24,ic 004462 STATEMENT 1 ON LINE 837 local_io = oc_data.priority_io; 004513 aa 000400 2360 07 ldq 256,dl 004514 aa 000003 0760 07 adq 3,dl 004515 aa 000002 7320 00 qrs 2 004516 aa 000012 0760 07 adq 10,dl 004517 aa 000002 7360 00 qls 2 004520 aa 6 00416 3715 20 epp5 pr6|270,* 004521 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 004522 aa 7 00042 00 0006 desc9a pr7|34,ql oc_data.priority_io 004523 aa 5 00000 00 0006 desc9a pr5|0,ql local_io STATEMENT 1 ON LINE 838 oc_data.priority_io.read = false; 004524 aa 013121 2350 04 lda 5713,ic 017645 = 577777777777 004525 aa 7 00050 3551 00 ansa pr7|40 oc_data.read STATEMENT 1 ON LINE 840 call unlock_oc_data (); 004526 aa 6 00056 6211 00 eax1 pr6|46 004527 aa 000000 4310 07 fld 0,dl 004530 aa 012641 3520 04 epp2 5537,ic 017371 = 000140627000 004531 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 842 if local_io.read then do; 004532 aa 6 00416 3735 20 epp7 pr6|270,* 004533 aa 7 00006 2351 00 lda pr7|6 local_io.read 004534 aa 200000 3150 03 cana 65536,du 004535 aa 000014 6000 04 tze 12,ic 004551 STATEMENT 1 ON LINE 843 priority_io_ptr -> console_io = local_io; 004536 aa 000400 2360 07 ldq 256,dl 004537 aa 000003 0760 07 adq 3,dl 004540 aa 000002 7320 00 qrs 2 004541 aa 000012 0760 07 adq 10,dl 004542 aa 000002 7360 00 qls 2 004543 aa 6 00032 3715 20 epp5 pr6|26,* 004544 aa 5 00002 3535 20 epp3 pr5|2,* priority_io_ptr 004545 aa 3 00000 3535 20 epp3 pr3|0,* priority_io_ptr 004546 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 004547 aa 7 00000 00 0006 desc9a pr7|0,ql local_io 004550 aa 3 00000 00 0006 desc9a pr3|0,ql console_io STATEMENT 1 ON LINE 844 end; STATEMENT 1 ON LINE 846 return; 004551 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO queue_io STATEMENT 1 ON LINE 848 queue_io: entry (user_io_ptr, io_queue_time); 004552 at 000002000163 004553 ta 000167000000 004554 ta 004552000000 004555 da 000630300000 004556 aa 001460 6270 00 eax7 816 004557 aa 7 00034 3521 20 epp2 pr7|28,* 004560 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 004561 aa 000004000000 004562 aa 000000000000 004563 aa 774426 7000 04 tsx0 -1770,ic 001211 STATEMENT 1 ON LINE 870 oc_data_ptr = addr (oc_data$); 004564 aa 6 00044 3701 20 epp4 pr6|36,* 004565 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 004566 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 872 if ^oc_data.in_service then do; 004567 aa 7 00003 2351 00 lda pr7|3 oc_data.in_service 004570 aa 400000 3150 03 cana 131072,du 004571 aa 000037 6010 04 tnz 31,ic 004630 STATEMENT 1 ON LINE 873 call syserr (JUST_LOG, substr (user_io_ptr -> console_io.text, 1, multiply (user_io_ptr -> console_io.leng, 4, 17))); 004572 aa 6 00032 3715 20 epp5 pr6|26,* 004573 aa 5 00002 3535 20 epp3 pr5|2,* user_io_ptr 004574 aa 3 00000 3535 20 epp3 pr3|0,* user_io_ptr 004575 aa 3 00010 2351 00 lda pr3|8 console_io.leng 004576 aa 000066 7330 00 lrs 54 004577 aa 000002 7360 00 qls 2 004600 aa 6 00645 7561 00 stq pr6|421 004601 aa 524000 2760 03 orq 174080,du 004602 aa 6 00637 7561 00 stq pr6|415 004603 aa 6 00645 2361 00 ldq pr6|421 004604 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 004605 aa 6 00652 2521 00 spri2 pr6|426 004606 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 004607 aa 3 00012 00 0006 desc9a pr3|10,ql console_io.text 004610 aa 2 00000 00 0006 desc9a pr2|0,ql 004611 aa 773357 3520 04 epp2 -2321,ic 000170 = 000000000005 004612 aa 6 00650 2521 00 spri2 pr6|424 004613 aa 773357 3520 04 epp2 -2321,ic 000172 = 404000000021 004614 aa 6 00654 2521 00 spri2 pr6|428 004615 aa 6 00637 3521 00 epp2 pr6|415 004616 aa 6 00656 2521 00 spri2 pr6|430 004617 aa 6 00646 6211 00 eax1 pr6|422 004620 aa 010000 4310 07 fld 4096,dl 004621 la 4 00044 3521 20 epp2 pr4|36,* syserr 004622 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 875 io_queue_time = clock (); 004623 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 004624 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 004625 aa 6 00032 3735 20 epp7 pr6|26,* 004626 aa 7 00004 7571 20 staq pr7|4,* io_queue_time STATEMENT 1 ON LINE 876 return; 004627 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 877 end; STATEMENT 1 ON LINE 879 local_io = user_io_ptr -> console_io; 004630 aa 000400 2360 07 ldq 256,dl 004631 aa 000003 0760 07 adq 3,dl 004632 aa 000002 7320 00 qrs 2 004633 aa 000012 0760 07 adq 10,dl 004634 aa 6 00637 7561 00 stq pr6|415 004635 aa 000002 7360 00 qls 2 004636 aa 6 00416 3715 20 epp5 pr6|270,* 004637 aa 6 00032 3535 20 epp3 pr6|26,* 004640 aa 3 00002 3515 20 epp1 pr3|2,* user_io_ptr 004641 aa 1 00000 3515 20 epp1 pr1|0,* user_io_ptr 004642 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 004643 aa 1 00000 00 0006 desc9a pr1|0,ql console_io 004644 aa 5 00000 00 0006 desc9a pr5|0,ql local_io STATEMENT 1 ON LINE 881 if oc_data.write_q_full & ^local_io.read then do; 004645 aa 7 00003 2351 00 lda pr7|3 oc_data.write_q_full 004646 aa 010000 3150 03 cana 4096,du 004647 aa 000031 6000 04 tze 25,ic 004700 004650 aa 5 00006 2351 00 lda pr5|6 local_io.read 004651 aa 200000 3150 03 cana 65536,du 004652 aa 000026 6010 04 tnz 22,ic 004700 STATEMENT 1 ON LINE 882 oc_data.meters.write_q_full_cnt = oc_data.meters.write_q_full_cnt + 1; 004653 aa 6 00637 2361 00 ldq pr6|415 004654 aa 000001 0760 07 adq 1,dl 004655 aa 777776 3760 07 anq 262142,dl 004656 aa 000003 7360 00 qls 3 004657 aa 6 00645 7561 00 stq pr6|421 004660 aa 6 00637 2361 00 ldq pr6|415 004661 aa 000042 0760 07 adq 34,dl 004662 aa 000001 0760 07 adq 1,dl 004663 aa 777776 3760 07 anq 262142,dl 004664 aa 6 00637 0761 00 adq pr6|415 004665 aa 000001 0760 07 adq 1,dl 004666 aa 777776 3760 07 anq 262142,dl 004667 aa 6 00645 0761 00 adq pr6|421 004670 aa 000000 6270 06 eax7 0,ql 004671 aa 7 00001 2351 06 lda pr7|1,ql oc_data.write_q_full_cnt 004672 aa 000044 7330 00 lrs 36 004673 aa 000001 0330 07 adl 1,dl 004674 aa 7 00001 7561 17 stq pr7|1,7 oc_data.write_q_full_cnt STATEMENT 1 ON LINE 883 io_queue_time = 0; 004675 aa 773321 2370 04 ldaq -2351,ic 000216 = 000000000000 000000000000 004676 aa 3 00004 7571 20 staq pr3|4,* io_queue_time STATEMENT 1 ON LINE 884 return; 004677 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 885 end; STATEMENT 1 ON LINE 887 call lock_oc_data (); 004700 aa 004327 6700 04 tsp4 2263,ic 011227 STATEMENT 1 ON LINE 889 oc_entry_ptr = find_oc_entry (""); 004701 aa 773237 2350 04 lda -2401,ic 000140 = 040040040040 004702 aa 6 00645 7551 00 sta pr6|421 004703 aa 6 00645 3521 00 epp2 pr6|421 004704 aa 6 00630 2521 00 spri2 pr6|408 004705 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 004706 aa 6 00632 2521 00 spri2 pr6|410 004707 aa 6 00626 6211 00 eax1 pr6|406 004710 aa 010000 4310 07 fld 4096,dl 004711 aa 004024 3520 04 epp2 2068,ic 010735 = 000140627000 004712 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 891 if oc_data.mc_io_enabled then do; 004713 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 004714 aa 7 00003 2351 00 lda pr7|3 oc_data.mc_io_enabled 004715 aa 100000 3150 03 cana 32768,du 004716 aa 000036 6000 04 tze 30,ic 004754 STATEMENT 1 ON LINE 892 local_time = 0; 004717 aa 773277 2370 04 ldaq -2369,ic 000216 = 000000000000 000000000000 004720 aa 6 00274 7571 00 staq pr6|188 local_time STATEMENT 1 ON LINE 893 if ^local_io.read then do; 004721 aa 6 00416 3715 20 epp5 pr6|270,* 004722 aa 5 00006 2351 00 lda pr5|6 local_io.read 004723 aa 200000 3150 03 cana 65536,du 004724 aa 000016 6010 04 tnz 14,ic 004742 STATEMENT 1 ON LINE 894 local_time = queue_console_io (); 004725 aa 012671 3520 04 epp2 5561,ic 017616 = 000002000000 004726 aa 007703 6700 04 tsp4 4035,ic 014631 STATEMENT 1 ON LINE 895 if local_time ^= 0 then do; 004727 aa 6 00274 2371 00 ldaq pr6|188 local_time 004730 aa 000014 6000 04 tze 12,ic 004744 STATEMENT 1 ON LINE 896 call bump_io_to_mc ((-local_time)); 004731 aa 000000 5330 00 negl 0 004732 aa 6 00736 7571 00 staq pr6|478 004733 aa 6 00736 3521 00 epp2 pr6|478 004734 aa 6 00630 2521 00 spri2 pr6|408 004735 aa 6 00626 6211 00 eax1 pr6|406 004736 aa 004000 4310 07 fld 2048,dl 004737 aa 001520 3520 04 epp2 848,ic 006457 = 000160627000 004740 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 897 end; STATEMENT 1 ON LINE 898 end; 004741 aa 000003 7100 04 tra 3,ic 004744 STATEMENT 1 ON LINE 899 else local_time = clock (); 004742 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 004743 aa 6 00274 7571 00 staq pr6|188 local_time STATEMENT 1 ON LINE 900 call unlock_oc_data (); 004744 aa 6 00056 6211 00 eax1 pr6|46 004745 aa 000000 4310 07 fld 0,dl 004746 aa 012423 3520 04 epp2 5395,ic 017371 = 000140627000 004747 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 901 io_queue_time = local_time; 004750 aa 6 00274 2371 00 ldaq pr6|188 local_time 004751 aa 6 00032 3735 20 epp7 pr6|26,* 004752 aa 7 00004 7571 20 staq pr7|4,* io_queue_time STATEMENT 1 ON LINE 902 return; 004753 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 903 end; STATEMENT 1 ON LINE 905 if oc_entry_ptr = null then do; 004754 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 004755 aa 773243 6770 04 eraq -2397,ic 000220 = 077777000043 000001000000 004756 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004757 aa 000043 6010 04 tnz 35,ic 005022 STATEMENT 1 ON LINE 906 call syserr (JUST_LOG, substr (user_io_ptr -> console_io.text, 1, multiply (user_io_ptr -> console_io.leng, 4, 17))); 004760 aa 6 00032 3715 20 epp5 pr6|26,* 004761 aa 5 00002 3535 20 epp3 pr5|2,* user_io_ptr 004762 aa 3 00000 3535 20 epp3 pr3|0,* user_io_ptr 004763 aa 3 00010 2351 00 lda pr3|8 console_io.leng 004764 aa 000066 7330 00 lrs 54 004765 aa 000002 7360 00 qls 2 004766 aa 6 00637 7561 00 stq pr6|415 004767 aa 524000 2760 03 orq 174080,du 004770 aa 6 00645 7561 00 stq pr6|421 004771 aa 6 00637 2361 00 ldq pr6|415 004772 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 004773 aa 6 00652 2521 00 spri2 pr6|426 004774 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 004775 aa 3 00012 00 0006 desc9a pr3|10,ql console_io.text 004776 aa 2 00000 00 0006 desc9a pr2|0,ql 004777 aa 773171 3520 04 epp2 -2439,ic 000170 = 000000000005 005000 aa 6 00650 2521 00 spri2 pr6|424 005001 aa 773171 3520 04 epp2 -2439,ic 000172 = 404000000021 005002 aa 6 00654 2521 00 spri2 pr6|428 005003 aa 6 00645 3521 00 epp2 pr6|421 005004 aa 6 00656 2521 00 spri2 pr6|430 005005 aa 6 00646 6211 00 eax1 pr6|422 005006 aa 010000 4310 07 fld 4096,dl 005007 aa 6 00044 3701 20 epp4 pr6|36,* 005010 la 4 00044 3521 20 epp2 pr4|36,* syserr 005011 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 908 io_queue_time = clock (); 005012 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 005013 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 005014 aa 6 00032 3735 20 epp7 pr6|26,* 005015 aa 7 00004 7571 20 staq pr7|4,* io_queue_time STATEMENT 1 ON LINE 909 oc_data.in_service = false; 005016 aa 012625 2350 04 lda 5525,ic 017643 = 377777777777 005017 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 005020 aa 5 00003 3551 00 ansa pr5|3 oc_data.in_service STATEMENT 1 ON LINE 910 return; 005021 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 911 end; STATEMENT 1 ON LINE 913 if oc_entry.discard & ^local_io.read then do; 005022 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 005023 aa 5 00002 2351 00 lda pr5|2 oc_entry.discard 005024 aa 000020 3150 03 cana 16,du 005025 aa 000032 6000 04 tze 26,ic 005057 005026 aa 6 00416 3535 20 epp3 pr6|270,* 005027 aa 3 00006 2351 00 lda pr3|6 local_io.read 005030 aa 200000 3150 03 cana 65536,du 005031 aa 000026 6010 04 tnz 22,ic 005057 STATEMENT 1 ON LINE 914 if ^oc_entry.discarded then do; 005032 aa 5 00002 2351 00 lda pr5|2 oc_entry.discarded 005033 aa 000010 3150 03 cana 8,du 005034 aa 000013 6010 04 tnz 11,ic 005047 STATEMENT 1 ON LINE 915 oc_entry.discarded = true; 005035 aa 000010 2350 03 lda 8,du 005036 aa 5 00002 2551 00 orsa pr5|2 oc_entry.discarded STATEMENT 1 ON LINE 916 call log_console_event (DISCARDED_OUTPUT, oc_data.io_ptr); 005037 aa 772766 3520 04 epp2 -2570,ic 000025 = 000000000035 005040 aa 6 00630 2521 00 spri2 pr6|408 005041 aa 7 00022 3521 00 epp2 pr7|18 oc_data.io_ptr 005042 aa 6 00632 2521 00 spri2 pr6|410 005043 aa 6 00626 6211 00 eax1 pr6|406 005044 aa 010000 4310 07 fld 4096,dl 005045 aa 005731 3520 04 epp2 3033,ic 012776 = 000120627000 005046 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 917 end; STATEMENT 1 ON LINE 918 call unlock_oc_data (); 005047 aa 6 00056 6211 00 eax1 pr6|46 005050 aa 000000 4310 07 fld 0,dl 005051 aa 012320 3520 04 epp2 5328,ic 017371 = 000140627000 005052 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 919 io_queue_time = -1; 005053 aa 773141 2370 04 ldaq -2463,ic 000214 = 777777777777 777777777777 005054 aa 6 00032 3735 20 epp7 pr6|26,* 005055 aa 7 00004 7571 20 staq pr7|4,* io_queue_time STATEMENT 1 ON LINE 920 return; 005056 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 921 end; STATEMENT 1 ON LINE 923 call process_io_status (); 005057 aa 6 00056 6211 00 eax1 pr6|46 005060 aa 000000 4310 07 fld 0,dl 005061 aa 007230 3520 04 epp2 3736,ic 014311 = 000520627000 005062 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 924 call process_io (); 005063 aa 6 00056 6211 00 eax1 pr6|46 005064 aa 000000 4310 07 fld 0,dl 005065 aa 006712 3520 04 epp2 3530,ic 013777 = 000140627000 005066 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 925 local_time = queue_console_io (); 005067 aa 012527 3520 04 epp2 5463,ic 017616 = 000002000000 005070 aa 007541 6700 04 tsp4 3937,ic 014631 STATEMENT 1 ON LINE 927 call process_io (); 005071 aa 6 00056 6211 00 eax1 pr6|46 005072 aa 000000 4310 07 fld 0,dl 005073 aa 006704 3520 04 epp2 3524,ic 013777 = 000140627000 005074 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 929 call unlock_oc_data (); 005075 aa 6 00056 6211 00 eax1 pr6|46 005076 aa 000000 4310 07 fld 0,dl 005077 aa 012272 3520 04 epp2 5306,ic 017371 = 000140627000 005100 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 931 io_queue_time = local_time; 005101 aa 6 00274 2371 00 ldaq pr6|188 local_time 005102 aa 6 00032 3735 20 epp7 pr6|26,* 005103 aa 7 00004 7571 20 staq pr7|4,* io_queue_time STATEMENT 1 ON LINE 933 return; 005104 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO reconfigure STATEMENT 1 ON LINE 935 reconfigure: entry (console_name_parm, reconfig_option_parm, code); 005105 at 000003000202 005106 tt 000172000165 005107 ta 005105000000 005110 da 000636300000 005111 aa 001460 6270 00 eax7 816 005112 aa 7 00034 3521 20 epp2 pr7|28,* 005113 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 005114 aa 000006000000 005115 aa 000000000000 005116 aa 6 00032 3735 20 epp7 pr6|26,* 005117 aa 7 00006 3715 20 epp5 pr7|6,* 005120 aa 6 00414 6515 00 spri5 pr6|268 005121 aa 774070 7000 04 tsx0 -1992,ic 001211 STATEMENT 1 ON LINE 955 entrypoint = "reconfigure"; 005122 aa 040 100 100 404 mlr (ic),(pr),fill(040) 005123 aa 773100 00 0013 desc9a -2496,11 000222 = 162145143157 005124 aa 6 00234 00 0040 desc9a pr6|156,32 entrypoint STATEMENT 1 ON LINE 956 audit_flag = "0"b; 005125 aa 6 00112 4501 00 stz pr6|74 audit_flag STATEMENT 1 ON LINE 957 code = 0; 005126 aa 6 00414 4501 20 stz pr6|268,* code STATEMENT 1 ON LINE 958 console_name = console_name_parm; 005127 aa 6 00032 3735 20 epp7 pr6|26,* 005130 aa 7 00002 3715 20 epp5 pr7|2,* 005131 aa 040 100 100 500 mlr (pr),(pr),fill(040) 005132 aa 5 00000 00 0004 desc9a pr5|0,4 console_name_parm 005133 aa 6 00200 00 0004 desc9a pr6|128,4 console_name STATEMENT 1 ON LINE 959 reconfig_option = reconfig_option_parm; 005134 aa 7 00004 2361 20 ldq pr7|4,* reconfig_option_parm 005135 aa 6 00356 7561 00 stq pr6|238 reconfig_option STATEMENT 1 ON LINE 961 oc_data_ptr = addr (oc_data$); 005136 aa 6 00044 3701 20 epp4 pr6|36,* 005137 la 4 00124 3535 20 epp3 pr4|84,* oc_data$ 005140 aa 6 00404 2535 00 spri3 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 963 if reconfig_option = NOP then do; 005141 aa 000003 6010 04 tnz 3,ic 005144 STATEMENT 1 ON LINE 964 code = error_table_$no_operation; 005142 la 4 00066 2361 20 ldq pr4|54,* error_table_$no_operation 005143 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 965 end; STATEMENT 1 ON LINE 967 if reconfig_option = SUSPEND_CONSOLE_SERVICE then do; 005144 aa 6 00356 2361 00 ldq pr6|238 reconfig_option 005145 aa 000002 1160 07 cmpq 2,dl 005146 aa 000004 6010 04 tnz 4,ic 005152 STATEMENT 1 ON LINE 968 oc_data.in_service = false; 005147 aa 012474 2350 04 lda 5436,ic 017643 = 377777777777 005150 aa 3 00003 3551 00 ansa pr3|3 oc_data.in_service STATEMENT 1 ON LINE 969 return; 005151 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 970 end; STATEMENT 1 ON LINE 972 if reconfig_option = ENABLE_CONSOLE_SERVICE then do; 005152 aa 000001 1160 07 cmpq 1,dl 005153 aa 000004 6010 04 tnz 4,ic 005157 STATEMENT 1 ON LINE 973 oc_data.in_service = true; 005154 aa 400000 2350 03 lda 131072,du 005155 aa 3 00003 2551 00 orsa pr3|3 oc_data.in_service STATEMENT 1 ON LINE 974 return; 005156 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 975 end; STATEMENT 1 ON LINE 977 if reconfig_option = SEND_MC_IO then do; 005157 aa 000013 1160 07 cmpq 11,dl 005160 aa 000004 6010 04 tnz 4,ic 005164 STATEMENT 1 ON LINE 978 oc_data.mc_io_enabled = true; 005161 aa 100000 2350 03 lda 32768,du 005162 aa 3 00003 2551 00 orsa pr3|3 oc_data.mc_io_enabled STATEMENT 1 ON LINE 979 return; 005163 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 980 end; STATEMENT 1 ON LINE 982 if reconfig_option = CRASH_ON_CRF then do; 005164 aa 000010 1160 07 cmpq 8,dl 005165 aa 000004 6010 04 tnz 4,ic 005171 STATEMENT 1 ON LINE 983 oc_data.crash_on_crf = true; 005166 aa 200000 2350 03 lda 65536,du 005167 aa 3 00003 2551 00 orsa pr3|3 oc_data.crash_on_crf STATEMENT 1 ON LINE 984 return; 005170 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 985 end; STATEMENT 1 ON LINE 987 if reconfig_option = RUN_ON_CRF then do; 005171 aa 000011 1160 07 cmpq 9,dl 005172 aa 000004 6010 04 tnz 4,ic 005176 STATEMENT 1 ON LINE 988 oc_data.crash_on_crf = false; 005173 aa 012452 2350 04 lda 5418,ic 017645 = 577777777777 005174 aa 3 00003 3551 00 ansa pr3|3 oc_data.crash_on_crf STATEMENT 1 ON LINE 989 return; 005175 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 990 end; STATEMENT 1 ON LINE 992 if reconfig_option = UNLOCK_MCA_INPUT then do; 005176 aa 000015 1160 07 cmpq 13,dl 005177 aa 000043 6010 04 tnz 35,ic 005242 STATEMENT 1 ON LINE 993 mca_to_unlock = cv_dec_check_ (substr (console_name, 3, 2), err_code); 005200 aa 6 00200 2351 00 lda pr6|128 console_name 005201 aa 000022 7350 00 als 18 005202 aa 6 00645 7551 00 sta pr6|421 005203 aa 6 00645 3521 00 epp2 pr6|421 005204 aa 6 00650 2521 00 spri2 pr6|424 005205 aa 6 00244 3521 00 epp2 pr6|164 err_code 005206 aa 6 00652 2521 00 spri2 pr6|426 005207 aa 6 00276 3521 00 epp2 pr6|190 mca_to_unlock 005210 aa 6 00654 2521 00 spri2 pr6|428 005211 aa 772677 3520 04 epp2 -2625,ic 000110 = 524000000002 005212 aa 6 00656 2521 00 spri2 pr6|430 005213 aa 772752 3520 04 epp2 -2582,ic 000165 = 404000000043 005214 aa 6 00660 2521 00 spri2 pr6|432 005215 aa 6 00662 2521 00 spri2 pr6|434 005216 aa 6 00646 6211 00 eax1 pr6|422 005217 aa 014000 4310 07 fld 6144,dl 005220 la 4 00022 3521 20 epp2 pr4|18,* cv_dec_check_ 005221 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 994 if substr (console_name, 1, 2) ^= "M_" | err_code ^= 0 | mca_to_unlock < MIN_MCA | mca_to_unlock > MAX_MCA then do; 005222 aa 6 00200 2351 00 lda pr6|128 console_name 005223 aa 0 00044 3771 00 anaq pr0|36 = 777777000000 000000000000 005224 aa 115137 1150 03 cmpa 39519,du 005225 aa 000007 6010 04 tnz 7,ic 005234 005226 aa 6 00244 2361 00 ldq pr6|164 err_code 005227 aa 000005 6010 04 tnz 5,ic 005234 005230 aa 6 00276 2361 00 ldq pr6|190 mca_to_unlock 005231 aa 000003 6040 04 tmi 3,ic 005234 005232 aa 000037 1160 07 cmpq 31,dl 005233 aa 000005 6044 04 tmoz 5,ic 005240 STATEMENT 1 ON LINE 995 code = error_table_$bad_arg; 005234 aa 6 00044 3701 20 epp4 pr6|36,* 005235 la 4 00056 2361 20 ldq pr4|46,* error_table_$bad_arg 005236 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 996 return; 005237 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 997 end; STATEMENT 1 ON LINE 998 console_name = ""; 005240 aa 772700 2350 04 lda -2624,ic 000140 = 040040040040 005241 aa 6 00200 7551 00 sta pr6|128 console_name STATEMENT 1 ON LINE 999 end; STATEMENT 1 ON LINE 1001 call lock_oc_data (); 005242 aa 003765 6700 04 tsp4 2037,ic 011227 STATEMENT 1 ON LINE 1003 oc_entry_ptr = find_oc_entry (console_name); 005243 aa 6 00200 3521 00 epp2 pr6|128 console_name 005244 aa 6 00630 2521 00 spri2 pr6|408 005245 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 005246 aa 6 00632 2521 00 spri2 pr6|410 005247 aa 6 00626 6211 00 eax1 pr6|406 005250 aa 010000 4310 07 fld 4096,dl 005251 aa 003464 3520 04 epp2 1844,ic 010735 = 000140627000 005252 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1004 if oc_entry_ptr = null then do; 005253 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 005254 aa 772744 6770 04 eraq -2588,ic 000220 = 077777000043 000001000000 005255 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005256 aa 000011 6010 04 tnz 9,ic 005267 STATEMENT 1 ON LINE 1005 null_ocep: call unlock_oc_data (); 005257 aa 6 00056 6211 00 eax1 pr6|46 005260 aa 000000 4310 07 fld 0,dl 005261 aa 012110 3520 04 epp2 5192,ic 017371 = 000140627000 005262 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1007 code = error_table_$dev_nt_assnd; 005263 aa 6 00044 3701 20 epp4 pr6|36,* 005264 la 4 00064 2361 20 ldq pr4|52,* error_table_$dev_nt_assnd 005265 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 1008 return; 005266 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1009 end; STATEMENT 1 ON LINE 1011 if reconfig_option = RESET_CONSOLE then do; 005267 aa 6 00356 2361 00 ldq pr6|238 reconfig_option 005270 aa 000007 1160 07 cmpq 7,dl 005271 aa 000007 6010 04 tnz 7,ic 005300 STATEMENT 1 ON LINE 1012 call reset_console (); 005272 aa 010642 6700 04 tsp4 4514,ic 016134 STATEMENT 1 ON LINE 1013 call unlock_oc_data (); 005273 aa 6 00056 6211 00 eax1 pr6|46 005274 aa 000000 4310 07 fld 0,dl 005275 aa 012074 3520 04 epp2 5180,ic 017371 = 000140627000 005276 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1014 return; 005277 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1015 end; STATEMENT 1 ON LINE 1017 if reconfig_option = MAKE_BOOTLOAD_CONSOLE then do; 005300 aa 000003 1160 07 cmpq 3,dl 005301 aa 000121 6010 04 tnz 81,ic 005422 STATEMENT 1 ON LINE 1018 call unassign_bootload_console (); 005302 aa 6 00056 6211 00 eax1 pr6|46 005303 aa 000000 4310 07 fld 0,dl 005304 aa 011755 3520 04 epp2 5101,ic 017261 = 000120627000 005305 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1019 if oc_entry_ptr ^= null then do; 005306 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 005307 aa 772711 6770 04 eraq -2615,ic 000220 = 077777000043 000001000000 005310 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005311 aa 000012 6000 04 tze 10,ic 005323 STATEMENT 1 ON LINE 1020 oc_entry.alternate = true; 005312 aa 040000 2350 03 lda 16384,du 005313 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 005314 aa 7 00002 2551 00 orsa pr7|2 oc_entry.alternate STATEMENT 1 ON LINE 1021 oc_entry.io_device = false; 005315 aa 012327 2350 04 lda 5335,ic 017644 = 767777777777 005316 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_device STATEMENT 1 ON LINE 1022 call change_console_state (); 005317 aa 6 00056 6211 00 eax1 pr6|46 005320 aa 000000 4310 07 fld 0,dl 005321 aa 001312 3520 04 epp2 714,ic 006633 = 000120627000 005322 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1023 end; STATEMENT 1 ON LINE 1024 call assign_bootload_console (console_name, err_code); 005323 aa 6 00200 3521 00 epp2 pr6|128 console_name 005324 aa 6 00630 2521 00 spri2 pr6|408 005325 aa 6 00244 3521 00 epp2 pr6|164 err_code 005326 aa 6 00632 2521 00 spri2 pr6|410 005327 aa 6 00626 6211 00 eax1 pr6|406 005330 aa 010000 4310 07 fld 4096,dl 005331 aa 000750 3520 04 epp2 488,ic 006301 = 000140627000 005332 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1025 if err_code ^= 0 then do; 005333 aa 6 00244 2361 00 ldq pr6|164 err_code 005334 aa 000026 6000 04 tze 22,ic 005362 STATEMENT 1 ON LINE 1026 if old_console_name ^= "" then call assign_bootload_console (old_console_name, (0)); 005335 aa 000000 4310 07 fld 0,dl 005336 aa 0 00440 2771 00 oraq pr0|288 = 040040040040 040040040040 005337 aa 0 00110 3771 00 anaq pr0|72 = 777777777777 000000000000 005340 aa 6 00353 1151 00 cmpa pr6|235 old_console_name 005341 aa 000012 6000 04 tze 10,ic 005353 005342 aa 6 00645 4501 00 stz pr6|421 005343 aa 6 00353 3521 00 epp2 pr6|235 old_console_name 005344 aa 6 00630 2521 00 spri2 pr6|408 005345 aa 6 00645 3521 00 epp2 pr6|421 005346 aa 6 00632 2521 00 spri2 pr6|410 005347 aa 6 00626 6211 00 eax1 pr6|406 005350 aa 010000 4310 07 fld 4096,dl 005351 aa 000730 3520 04 epp2 472,ic 006301 = 000140627000 005352 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1028 call unlock_oc_data (); 005353 aa 6 00056 6211 00 eax1 pr6|46 005354 aa 000000 4310 07 fld 0,dl 005355 aa 012014 3520 04 epp2 5132,ic 017371 = 000140627000 005356 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1029 code = err_code; 005357 aa 6 00244 2361 00 ldq pr6|164 err_code 005360 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 1030 return; 005361 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1031 end; STATEMENT 1 ON LINE 1032 call report_error (BEEP, entrypoint, "Assigned ^a as the bootload console for ^a.", oc_entry.name, pds$process_group_id); 005362 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005363 aa 773220 00 0054 desc9a -2416,44 000602 = 101163163151 005364 aa 6 00646 00 0054 desc9a pr6|422,44 005365 aa 772606 3520 04 epp2 -2682,ic 000173 = 000000000003 005366 aa 6 00706 2521 00 spri2 pr6|454 005367 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 005370 aa 6 00710 2521 00 spri2 pr6|456 005371 aa 6 00646 3521 00 epp2 pr6|422 005372 aa 6 00712 2521 00 spri2 pr6|458 005373 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 005374 aa 6 00714 2521 00 spri2 pr6|460 005375 aa 6 00044 3701 20 epp4 pr6|36,* 005376 la 4 00102 3521 20 epp2 pr4|66,* pds$process_group_id 005377 aa 6 00716 2521 00 spri2 pr6|462 005400 aa 772572 3520 04 epp2 -2694,ic 000172 = 404000000021 005401 aa 6 00722 2521 00 spri2 pr6|466 005402 aa 772534 3520 04 epp2 -2724,ic 000136 = 526000000040 005403 aa 6 00724 2521 00 spri2 pr6|468 005404 aa 6 00732 2521 00 spri2 pr6|474 005405 aa 772520 3520 04 epp2 -2736,ic 000125 = 524000000053 005406 aa 6 00726 2521 00 spri2 pr6|470 005407 aa 772567 3520 04 epp2 -2697,ic 000176 = 524000000004 005410 aa 6 00730 2521 00 spri2 pr6|472 005411 aa 6 00704 6211 00 eax1 pr6|452 005412 aa 024000 4310 07 fld 10240,dl 005413 aa 007621 3520 04 epp2 3985,ic 015234 = 000400627000 005414 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1033 call unlock_oc_data (); 005415 aa 6 00056 6211 00 eax1 pr6|46 005416 aa 000000 4310 07 fld 0,dl 005417 aa 011752 3520 04 epp2 5098,ic 017371 = 000140627000 005420 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1034 return; 005421 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1035 end; STATEMENT 1 ON LINE 1037 if reconfig_option = MAKE_ALTERNATE_CONSOLE then do; 005422 aa 000004 1160 07 cmpq 4,dl 005423 aa 000073 6010 04 tnz 59,ic 005516 STATEMENT 1 ON LINE 1038 if oc_entry.bootload_console then do; 005424 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 005425 aa 7 00002 2351 00 lda pr7|2 oc_entry.bootload_console 005426 aa 100000 3150 03 cana 32768,du 005427 aa 000011 6000 04 tze 9,ic 005440 STATEMENT 1 ON LINE 1039 call unlock_oc_data (); 005430 aa 6 00056 6211 00 eax1 pr6|46 005431 aa 000000 4310 07 fld 0,dl 005432 aa 011737 3520 04 epp2 5087,ic 017371 = 000140627000 005433 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1040 code = error_table_$device_busy; 005434 aa 6 00044 3701 20 epp4 pr6|36,* 005435 la 4 00060 2361 20 ldq pr4|48,* error_table_$device_busy 005436 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 1041 return; 005437 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1042 end; STATEMENT 1 ON LINE 1043 oc_entry.alternate = true; 005440 aa 040000 2350 03 lda 16384,du 005441 aa 7 00002 2551 00 orsa pr7|2 oc_entry.alternate STATEMENT 1 ON LINE 1044 oc_entry.io_device = false; 005442 aa 012202 2350 04 lda 5250,ic 017644 = 767777777777 005443 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_device STATEMENT 1 ON LINE 1045 oc_entry.inop_device = false; 005444 aa 012157 2350 04 lda 5231,ic 017623 = 757777777777 005445 aa 7 00002 3551 00 ansa pr7|2 oc_entry.inop_device STATEMENT 1 ON LINE 1046 oc_entry.no_device = false; 005446 aa 012146 2350 04 lda 5222,ic 017614 = 773777777777 005447 aa 7 00002 3551 00 ansa pr7|2 oc_entry.no_device STATEMENT 1 ON LINE 1047 oc_entry.config_change = true; 005450 aa 002000 2350 03 lda 1024,du 005451 aa 7 00002 2551 00 orsa pr7|2 oc_entry.config_change STATEMENT 1 ON LINE 1048 call change_console_state (); 005452 aa 6 00056 6211 00 eax1 pr6|46 005453 aa 000000 4310 07 fld 0,dl 005454 aa 001157 3520 04 epp2 623,ic 006633 = 000120627000 005455 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1049 call report_error (BEEP, entrypoint, "Assigned ^a as an alternate console for ^a.", oc_entry.name, pds$process_group_id); 005456 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005457 aa 773111 00 0054 desc9a -2487,44 000567 = 101163163151 005460 aa 6 00646 00 0054 desc9a pr6|422,44 005461 aa 772512 3520 04 epp2 -2742,ic 000173 = 000000000003 005462 aa 6 00706 2521 00 spri2 pr6|454 005463 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 005464 aa 6 00710 2521 00 spri2 pr6|456 005465 aa 6 00646 3521 00 epp2 pr6|422 005466 aa 6 00712 2521 00 spri2 pr6|458 005467 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 005470 aa 6 00714 2521 00 spri2 pr6|460 005471 aa 6 00044 3701 20 epp4 pr6|36,* 005472 la 4 00102 3521 20 epp2 pr4|66,* pds$process_group_id 005473 aa 6 00716 2521 00 spri2 pr6|462 005474 aa 772476 3520 04 epp2 -2754,ic 000172 = 404000000021 005475 aa 6 00722 2521 00 spri2 pr6|466 005476 aa 772440 3520 04 epp2 -2784,ic 000136 = 526000000040 005477 aa 6 00724 2521 00 spri2 pr6|468 005500 aa 6 00732 2521 00 spri2 pr6|474 005501 aa 772424 3520 04 epp2 -2796,ic 000125 = 524000000053 005502 aa 6 00726 2521 00 spri2 pr6|470 005503 aa 772473 3520 04 epp2 -2757,ic 000176 = 524000000004 005504 aa 6 00730 2521 00 spri2 pr6|472 005505 aa 6 00704 6211 00 eax1 pr6|452 005506 aa 024000 4310 07 fld 10240,dl 005507 aa 007525 3520 04 epp2 3925,ic 015234 = 000400627000 005510 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1051 call unlock_oc_data (); 005511 aa 6 00056 6211 00 eax1 pr6|46 005512 aa 000000 4310 07 fld 0,dl 005513 aa 011656 3520 04 epp2 5038,ic 017371 = 000140627000 005514 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1052 return; 005515 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1053 end; STATEMENT 1 ON LINE 1055 if reconfig_option = MAKE_IO_DEVICE then do; 005516 aa 000005 1160 07 cmpq 5,dl 005517 aa 000147 6010 04 tnz 103,ic 005666 STATEMENT 1 ON LINE 1056 if oc_entry.bootload_console then do; 005520 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 005521 aa 7 00002 2351 00 lda pr7|2 oc_entry.bootload_console 005522 aa 100000 3150 03 cana 32768,du 005523 aa 000064 6000 04 tze 52,ic 005607 STATEMENT 1 ON LINE 1057 if oc_data.err_event_cid ^= 0 then oc_data.mc_io_enabled = true; 005524 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 005525 aa 5 00034 2371 00 ldaq pr5|28 oc_data.err_event_cid 005526 aa 000004 6000 04 tze 4,ic 005532 005527 aa 100000 2350 03 lda 32768,du 005530 aa 5 00003 2551 00 orsa pr5|3 oc_data.mc_io_enabled 005531 aa 000032 7100 04 tra 26,ic 005563 STATEMENT 1 ON LINE 1058 else do; STATEMENT 1 ON LINE 1059 if oc_data.crash_on_crf then call report_error (PANIC, /* that was a dumb move... */ entrypoint, "Bootload console deconfigured with CCRF set."); 005532 aa 5 00003 2351 00 lda pr5|3 oc_data.crash_on_crf 005533 aa 200000 3150 03 cana 65536,du 005534 aa 000025 6000 04 tze 21,ic 005561 005535 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005536 aa 773017 00 0054 desc9a -2545,44 000554 = 102157157164 005537 aa 6 00646 00 0054 desc9a pr6|422,44 005540 aa 772411 3520 04 epp2 -2807,ic 000151 = 000000000006 005541 aa 6 00666 2521 00 spri2 pr6|438 005542 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 005543 aa 6 00670 2521 00 spri2 pr6|440 005544 aa 6 00646 3521 00 epp2 pr6|422 005545 aa 6 00672 2521 00 spri2 pr6|442 005546 aa 772424 3520 04 epp2 -2796,ic 000172 = 404000000021 005547 aa 6 00676 2521 00 spri2 pr6|446 005550 aa 772366 3520 04 epp2 -2826,ic 000136 = 526000000040 005551 aa 6 00700 2521 00 spri2 pr6|448 005552 aa 772335 3520 04 epp2 -2851,ic 000107 = 524000000054 005553 aa 6 00702 2521 00 spri2 pr6|450 005554 aa 6 00664 6211 00 eax1 pr6|436 005555 aa 014000 4310 07 fld 6144,dl 005556 aa 007456 3520 04 epp2 3886,ic 015234 = 000400627000 005557 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc 005560 aa 000003 7100 04 tra 3,ic 005563 STATEMENT 1 ON LINE 1061 else oc_data.in_service = false; 005561 aa 012062 2350 04 lda 5170,ic 017643 = 377777777777 005562 aa 5 00003 3551 00 ansa pr5|3 oc_data.in_service STATEMENT 1 ON LINE 1062 end; STATEMENT 1 ON LINE 1063 call unassign_bootload_console (); 005563 aa 6 00056 6211 00 eax1 pr6|46 005564 aa 000000 4310 07 fld 0,dl 005565 aa 011474 3520 04 epp2 4924,ic 017261 = 000120627000 005566 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1064 if oc_entry_ptr = null then do; 005567 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 005570 aa 772430 6770 04 eraq -2792,ic 000220 = 077777000043 000001000000 005571 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005572 aa 000015 6010 04 tnz 13,ic 005607 STATEMENT 1 ON LINE 1065 oc_entry_ptr = find_oc_entry (console_name); 005573 aa 6 00200 3521 00 epp2 pr6|128 console_name 005574 aa 6 00630 2521 00 spri2 pr6|408 005575 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 005576 aa 6 00632 2521 00 spri2 pr6|410 005577 aa 6 00626 6211 00 eax1 pr6|406 005600 aa 010000 4310 07 fld 4096,dl 005601 aa 003134 3520 04 epp2 1628,ic 010735 = 000140627000 005602 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1066 if oc_entry_ptr = null then goto null_ocep; 005603 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 005604 aa 772414 6770 04 eraq -2804,ic 000220 = 077777000043 000001000000 005605 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005606 aa 777451 6000 04 tze -215,ic 005257 STATEMENT 1 ON LINE 1067 end; STATEMENT 1 ON LINE 1068 end; STATEMENT 1 ON LINE 1069 oc_entry.io_device = true; 005607 aa 010000 2350 03 lda 4096,du 005610 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 005611 aa 7 00002 2551 00 orsa pr7|2 oc_entry.io_device STATEMENT 1 ON LINE 1070 oc_entry.alternate = false; 005612 aa 012010 2350 04 lda 5128,ic 017622 = 737777777777 005613 aa 7 00002 3551 00 ansa pr7|2 oc_entry.alternate STATEMENT 1 ON LINE 1071 oc_entry.inop_device = false; 005614 aa 012007 2350 04 lda 5127,ic 017623 = 757777777777 005615 aa 7 00002 3551 00 ansa pr7|2 oc_entry.inop_device STATEMENT 1 ON LINE 1072 oc_entry.no_device = false; 005616 aa 011776 2350 04 lda 5118,ic 017614 = 773777777777 005617 aa 7 00002 3551 00 ansa pr7|2 oc_entry.no_device STATEMENT 1 ON LINE 1073 oc_entry.config_change = true; 005620 aa 002000 2350 03 lda 1024,du 005621 aa 7 00002 2551 00 orsa pr7|2 oc_entry.config_change STATEMENT 1 ON LINE 1074 call change_console_state (); 005622 aa 6 00056 6211 00 eax1 pr6|46 005623 aa 000000 4310 07 fld 0,dl 005624 aa 001007 3520 04 epp2 519,ic 006633 = 000120627000 005625 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1075 call report_error (BEEP, entrypoint, "Consigned ^a as an I/O device for ^a.", oc_entry.name, pds$process_group_id); 005626 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005627 aa 772653 00 0050 desc9a -2645,40 000501 = 103157156163 005630 aa 6 00646 00 0050 desc9a pr6|422,40 005631 aa 772342 3520 04 epp2 -2846,ic 000173 = 000000000003 005632 aa 6 00706 2521 00 spri2 pr6|454 005633 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 005634 aa 6 00710 2521 00 spri2 pr6|456 005635 aa 6 00646 3521 00 epp2 pr6|422 005636 aa 6 00712 2521 00 spri2 pr6|458 005637 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 005640 aa 6 00714 2521 00 spri2 pr6|460 005641 aa 6 00044 3701 20 epp4 pr6|36,* 005642 la 4 00102 3521 20 epp2 pr4|66,* pds$process_group_id 005643 aa 6 00716 2521 00 spri2 pr6|462 005644 aa 772326 3520 04 epp2 -2858,ic 000172 = 404000000021 005645 aa 6 00722 2521 00 spri2 pr6|466 005646 aa 772270 3520 04 epp2 -2888,ic 000136 = 526000000040 005647 aa 6 00724 2521 00 spri2 pr6|468 005650 aa 6 00732 2521 00 spri2 pr6|474 005651 aa 772235 3520 04 epp2 -2915,ic 000106 = 524000000045 005652 aa 6 00726 2521 00 spri2 pr6|470 005653 aa 772323 3520 04 epp2 -2861,ic 000176 = 524000000004 005654 aa 6 00730 2521 00 spri2 pr6|472 005655 aa 6 00704 6211 00 eax1 pr6|452 005656 aa 024000 4310 07 fld 10240,dl 005657 aa 007355 3520 04 epp2 3821,ic 015234 = 000400627000 005660 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1077 call unlock_oc_data (); 005661 aa 6 00056 6211 00 eax1 pr6|46 005662 aa 000000 4310 07 fld 0,dl 005663 aa 011506 3520 04 epp2 4934,ic 017371 = 000140627000 005664 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1078 return; 005665 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1079 end; STATEMENT 1 ON LINE 1081 if reconfig_option = MAKE_INOP_DEVICE then do; 005666 aa 000006 1160 07 cmpq 6,dl 005667 aa 000147 6010 04 tnz 103,ic 006036 STATEMENT 1 ON LINE 1082 if oc_entry.bootload_console then do; 005670 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 005671 aa 7 00002 2351 00 lda pr7|2 oc_entry.bootload_console 005672 aa 100000 3150 03 cana 32768,du 005673 aa 000064 6000 04 tze 52,ic 005757 STATEMENT 1 ON LINE 1083 if oc_data.err_event_cid ^= 0 then oc_data.mc_io_enabled = true; 005674 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 005675 aa 5 00034 2371 00 ldaq pr5|28 oc_data.err_event_cid 005676 aa 000004 6000 04 tze 4,ic 005702 005677 aa 100000 2350 03 lda 32768,du 005700 aa 5 00003 2551 00 orsa pr5|3 oc_data.mc_io_enabled 005701 aa 000032 7100 04 tra 26,ic 005733 STATEMENT 1 ON LINE 1084 else do; STATEMENT 1 ON LINE 1085 if oc_data.crash_on_crf then call report_error (PANIC, /* that was a dumb move... */ entrypoint, "Bootload console deconfigured with CCRF set."); 005702 aa 5 00003 2351 00 lda pr5|3 oc_data.crash_on_crf 005703 aa 200000 3150 03 cana 65536,du 005704 aa 000025 6000 04 tze 21,ic 005731 005705 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005706 aa 772647 00 0054 desc9a -2649,44 000554 = 102157157164 005707 aa 6 00646 00 0054 desc9a pr6|422,44 005710 aa 772241 3520 04 epp2 -2911,ic 000151 = 000000000006 005711 aa 6 00666 2521 00 spri2 pr6|438 005712 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 005713 aa 6 00670 2521 00 spri2 pr6|440 005714 aa 6 00646 3521 00 epp2 pr6|422 005715 aa 6 00672 2521 00 spri2 pr6|442 005716 aa 772254 3520 04 epp2 -2900,ic 000172 = 404000000021 005717 aa 6 00676 2521 00 spri2 pr6|446 005720 aa 772216 3520 04 epp2 -2930,ic 000136 = 526000000040 005721 aa 6 00700 2521 00 spri2 pr6|448 005722 aa 772165 3520 04 epp2 -2955,ic 000107 = 524000000054 005723 aa 6 00702 2521 00 spri2 pr6|450 005724 aa 6 00664 6211 00 eax1 pr6|436 005725 aa 014000 4310 07 fld 6144,dl 005726 aa 007306 3520 04 epp2 3782,ic 015234 = 000400627000 005727 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc 005730 aa 000003 7100 04 tra 3,ic 005733 STATEMENT 1 ON LINE 1087 else oc_data.in_service = false; 005731 aa 011712 2350 04 lda 5066,ic 017643 = 377777777777 005732 aa 5 00003 3551 00 ansa pr5|3 oc_data.in_service STATEMENT 1 ON LINE 1088 end; STATEMENT 1 ON LINE 1089 call unassign_bootload_console (); 005733 aa 6 00056 6211 00 eax1 pr6|46 005734 aa 000000 4310 07 fld 0,dl 005735 aa 011324 3520 04 epp2 4820,ic 017261 = 000120627000 005736 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1090 if oc_entry_ptr = null then do; 005737 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 005740 aa 772260 6770 04 eraq -2896,ic 000220 = 077777000043 000001000000 005741 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005742 aa 000015 6010 04 tnz 13,ic 005757 STATEMENT 1 ON LINE 1091 oc_entry_ptr = find_oc_entry (console_name); 005743 aa 6 00200 3521 00 epp2 pr6|128 console_name 005744 aa 6 00630 2521 00 spri2 pr6|408 005745 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 005746 aa 6 00632 2521 00 spri2 pr6|410 005747 aa 6 00626 6211 00 eax1 pr6|406 005750 aa 010000 4310 07 fld 4096,dl 005751 aa 002764 3520 04 epp2 1524,ic 010735 = 000140627000 005752 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1092 if oc_entry_ptr = null then goto null_ocep; 005753 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 005754 aa 772244 6770 04 eraq -2908,ic 000220 = 077777000043 000001000000 005755 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005756 aa 777301 6000 04 tze -319,ic 005257 STATEMENT 1 ON LINE 1093 end; STATEMENT 1 ON LINE 1094 end; STATEMENT 1 ON LINE 1095 oc_entry.inop_device = true; 005757 aa 020000 2350 03 lda 8192,du 005760 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 005761 aa 7 00002 2551 00 orsa pr7|2 oc_entry.inop_device STATEMENT 1 ON LINE 1096 oc_entry.io_device = false; 005762 aa 011662 2350 04 lda 5042,ic 017644 = 767777777777 005763 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_device STATEMENT 1 ON LINE 1097 oc_entry.alternate = false; 005764 aa 011636 2350 04 lda 5022,ic 017622 = 737777777777 005765 aa 7 00002 3551 00 ansa pr7|2 oc_entry.alternate STATEMENT 1 ON LINE 1098 oc_entry.no_device = false; 005766 aa 011626 2350 04 lda 5014,ic 017614 = 773777777777 005767 aa 7 00002 3551 00 ansa pr7|2 oc_entry.no_device STATEMENT 1 ON LINE 1099 oc_entry.config_change = true; 005770 aa 002000 2350 03 lda 1024,du 005771 aa 7 00002 2551 00 orsa pr7|2 oc_entry.config_change STATEMENT 1 ON LINE 1100 call change_console_state (); 005772 aa 6 00056 6211 00 eax1 pr6|46 005773 aa 000000 4310 07 fld 0,dl 005774 aa 000637 3520 04 epp2 415,ic 006633 = 000120627000 005775 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1101 call report_error (BEEP, entrypoint, "Marked ^a as an inoperative device for ^a.", oc_entry.name, pds$process_group_id); 005776 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005777 aa 772543 00 0054 desc9a -2717,44 000541 = 115141162153 006000 aa 6 00646 00 0054 desc9a pr6|422,44 006001 aa 772172 3520 04 epp2 -2950,ic 000173 = 000000000003 006002 aa 6 00706 2521 00 spri2 pr6|454 006003 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 006004 aa 6 00710 2521 00 spri2 pr6|456 006005 aa 6 00646 3521 00 epp2 pr6|422 006006 aa 6 00712 2521 00 spri2 pr6|458 006007 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 006010 aa 6 00714 2521 00 spri2 pr6|460 006011 aa 6 00044 3701 20 epp4 pr6|36,* 006012 la 4 00102 3521 20 epp2 pr4|66,* pds$process_group_id 006013 aa 6 00716 2521 00 spri2 pr6|462 006014 aa 772156 3520 04 epp2 -2962,ic 000172 = 404000000021 006015 aa 6 00722 2521 00 spri2 pr6|466 006016 aa 772120 3520 04 epp2 -2992,ic 000136 = 526000000040 006017 aa 6 00724 2521 00 spri2 pr6|468 006020 aa 6 00732 2521 00 spri2 pr6|474 006021 aa 772064 3520 04 epp2 -3020,ic 000105 = 524000000052 006022 aa 6 00726 2521 00 spri2 pr6|470 006023 aa 772153 3520 04 epp2 -2965,ic 000176 = 524000000004 006024 aa 6 00730 2521 00 spri2 pr6|472 006025 aa 6 00704 6211 00 eax1 pr6|452 006026 aa 024000 4310 07 fld 10240,dl 006027 aa 007205 3520 04 epp2 3717,ic 015234 = 000400627000 006030 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1103 call unlock_oc_data (); 006031 aa 6 00056 6211 00 eax1 pr6|46 006032 aa 000000 4310 07 fld 0,dl 006033 aa 011336 3520 04 epp2 4830,ic 017371 = 000140627000 006034 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1104 return; 006035 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1105 end; STATEMENT 1 ON LINE 1107 if reconfig_option = MAKE_UNAVAILABLE then do; 006036 aa 000012 1160 07 cmpq 10,dl 006037 aa 000040 6010 04 tnz 32,ic 006077 STATEMENT 1 ON LINE 1108 if oc_entry.bootload_console then do; 006040 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 006041 aa 7 00002 2351 00 lda pr7|2 oc_entry.bootload_console 006042 aa 100000 3150 03 cana 32768,du 006043 aa 000011 6000 04 tze 9,ic 006054 STATEMENT 1 ON LINE 1109 call unlock_oc_data (); 006044 aa 6 00056 6211 00 eax1 pr6|46 006045 aa 000000 4310 07 fld 0,dl 006046 aa 011323 3520 04 epp2 4819,ic 017371 = 000140627000 006047 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1110 code = error_table_$resource_not_free; 006050 aa 6 00044 3701 20 epp4 pr6|36,* 006051 la 4 00070 2361 20 ldq pr4|56,* error_table_$resource_not_free 006052 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 1111 return; 006053 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1112 end; STATEMENT 1 ON LINE 1113 else do; STATEMENT 1 ON LINE 1114 oc_entry.inop_device = false; 006054 aa 011547 2350 04 lda 4967,ic 017623 = 757777777777 006055 aa 7 00002 3551 00 ansa pr7|2 oc_entry.inop_device STATEMENT 1 ON LINE 1115 oc_entry.io_device = false; 006056 aa 011566 2350 04 lda 4982,ic 017644 = 767777777777 006057 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_device STATEMENT 1 ON LINE 1116 oc_entry.alternate = false; 006060 aa 011542 2350 04 lda 4962,ic 017622 = 737777777777 006061 aa 7 00002 3551 00 ansa pr7|2 oc_entry.alternate STATEMENT 1 ON LINE 1117 oc_entry.no_device = true; 006062 aa 004000 2350 03 lda 2048,du 006063 aa 7 00002 2551 00 orsa pr7|2 oc_entry.no_device STATEMENT 1 ON LINE 1118 oc_entry.config_change = true; 006064 aa 002000 2350 03 lda 1024,du 006065 aa 7 00002 2551 00 orsa pr7|2 oc_entry.config_change STATEMENT 1 ON LINE 1119 call change_console_state (); 006066 aa 6 00056 6211 00 eax1 pr6|46 006067 aa 000000 4310 07 fld 0,dl 006070 aa 000543 3520 04 epp2 355,ic 006633 = 000120627000 006071 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1120 call unlock_oc_data (); 006072 aa 6 00056 6211 00 eax1 pr6|46 006073 aa 000000 4310 07 fld 0,dl 006074 aa 011275 3520 04 epp2 4797,ic 017371 = 000140627000 006075 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1121 return; 006076 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1122 end; STATEMENT 1 ON LINE 1123 end; STATEMENT 1 ON LINE 1125 if reconfig_option = LOCK_MCA_INPUT | reconfig_option = UNLOCK_MCA_INPUT then do; 006077 aa 000014 1160 07 cmpq 12,dl 006100 aa 000003 6000 04 tze 3,ic 006103 006101 aa 000015 1160 07 cmpq 13,dl 006102 aa 000021 6010 04 tnz 17,ic 006123 STATEMENT 1 ON LINE 1127 audit_flag = (sys_info$collection_1_phase = SERVICE_INITIALIZATION); 006103 aa 6 00044 3701 20 epp4 pr6|36,* 006104 la 4 00104 2361 20 ldq pr4|68,* sys_info$collection_1_phase 006105 aa 000003 1160 07 cmpq 3,dl 006106 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 006107 aa 6 00112 7551 00 sta pr6|74 audit_flag STATEMENT 1 ON LINE 1128 call lock_unlock_mca (); 006110 aa 003237 6700 04 tsp4 1695,ic 011347 STATEMENT 1 ON LINE 1129 if ^mca_lock_unlock_success then code = error_table_$action_not_performed; 006111 aa 6 00123 2351 00 lda pr6|83 mca_lock_unlock_success 006112 aa 000004 6010 04 tnz 4,ic 006116 006113 aa 6 00044 3701 20 epp4 pr6|36,* 006114 la 4 00054 2361 20 ldq pr4|44,* error_table_$action_not_performed 006115 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 1130 call unlock_oc_data (); 006116 aa 6 00056 6211 00 eax1 pr6|46 006117 aa 000000 4310 07 fld 0,dl 006120 aa 011251 3520 04 epp2 4777,ic 017371 = 000140627000 006121 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1131 return; 006122 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1132 end; STATEMENT 1 ON LINE 1134 call unlock_oc_data (); 006123 aa 6 00056 6211 00 eax1 pr6|46 006124 aa 000000 4310 07 fld 0,dl 006125 aa 011244 3520 04 epp2 4772,ic 017371 = 000140627000 006126 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1136 return; 006127 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO set_prompt STATEMENT 1 ON LINE 1139 set_prompt: entry (new_prompt_parm); 006130 at 000001000174 006131 ta 006130000000 006132 da 000644300000 006133 aa 001460 6270 00 eax7 816 006134 aa 7 00034 3521 20 epp2 pr7|28,* 006135 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 006136 aa 000002000000 006137 aa 000000000000 006140 aa 773051 7000 04 tsx0 -2519,ic 001211 STATEMENT 1 ON LINE 1155 new_prompt = new_prompt_parm; 006141 aa 6 00032 3735 20 epp7 pr6|26,* 006142 aa 7 00002 3715 20 epp5 pr7|2,* 006143 aa 040 100 100 500 mlr (pr),(pr),fill(040) 006144 aa 5 00000 00 0010 desc9a pr5|0,8 new_prompt_parm 006145 aa 6 00300 00 0010 desc9a pr6|192,8 new_prompt STATEMENT 1 ON LINE 1157 call lock_oc_data (); 006146 aa 003061 6700 04 tsp4 1585,ic 011227 STATEMENT 1 ON LINE 1159 if rtrim (new_prompt) = "" then new_prompt = "M->"; 006147 aa 000 000 165 500 tctr (pr) 006150 aa 6 00300 00 0010 desc9a pr6|192,8 new_prompt 006151 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 006152 aa 6 00056 0001 00 arg pr6|46 006153 aa 6 00056 2361 00 ldq pr6|46 006154 aa 0 00242 3761 00 anq pr0|162 = 000777777777 006155 aa 6 00645 7561 00 stq pr6|421 006156 aa 000010 2360 07 ldq 8,dl 006157 aa 6 00645 1761 00 sbq pr6|421 006160 aa 6 00645 7561 00 stq pr6|421 006161 aa 040 004 106 540 cmpc (pr,rl),(ic),fill(040) 006162 aa 6 00300 00 0006 desc9a pr6|192,ql new_prompt 006163 aa 011466 00 0000 desc9a 4918,0 017647 = 055076000000 006164 aa 000004 6010 04 tnz 4,ic 006170 006165 aa 772021 2370 04 ldaq -3055,ic 000206 = 115055076040 040040040040 006166 aa 6 00300 7571 00 staq pr6|192 new_prompt 006167 aa 000027 7100 04 tra 23,ic 006216 STATEMENT 1 ON LINE 1160 else new_prompt = rtrim (substr (new_prompt, 1, 6)) || "->"; 006170 aa 000 000 165 500 tctr (pr) 006171 aa 6 00300 00 0006 desc9a pr6|192,6 new_prompt 006172 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 006173 aa 6 00056 0001 00 arg pr6|46 006174 aa 6 00056 2361 00 ldq pr6|46 006175 aa 0 00242 3761 00 anq pr0|162 = 000777777777 006176 aa 6 00645 7561 00 stq pr6|421 006177 aa 000006 2360 07 ldq 6,dl 006200 aa 6 00645 1761 00 sbq pr6|421 006201 aa 6 00645 7561 00 stq pr6|421 006202 aa 000002 0760 07 adq 2,dl 006203 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 006204 aa 6 00645 2351 00 lda pr6|421 006205 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 006206 aa 6 00300 00 0005 desc9a pr6|192,al new_prompt 006207 aa 2 00000 00 0005 desc9a pr2|0,al 006210 aa 040 105 100 404 mlr (ic),(pr,al),fill(040) 006211 aa 011437 00 0002 desc9a 4895,2 017647 = 055076000000 006212 aa 2 00000 00 0002 desc9a pr2|0,2 006213 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 006214 aa 2 00000 00 0006 desc9a pr2|0,ql 006215 aa 6 00300 00 0010 desc9a pr6|192,8 new_prompt STATEMENT 1 ON LINE 1162 oc_data.prompt = new_prompt; 006216 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 006217 aa 6 00300 2371 00 ldaq pr6|192 new_prompt 006220 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 006221 aa 7 00006 7551 00 sta pr7|6 oc_data.prompt 006222 aa 7 00007 7561 00 stq pr7|7 oc_data.prompt STATEMENT 1 ON LINE 1164 call unlock_oc_data (); 006223 aa 6 00056 6211 00 eax1 pr6|46 006224 aa 000000 4310 07 fld 0,dl 006225 aa 011144 3520 04 epp2 4708,ic 017371 = 000140627000 006226 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1166 return; 006227 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1168 BAIL_OUT: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* BAIL_OUT is used as a non-local goto from process_io when it is found that there is */ /* no current console. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ if ^stacq (oc_data.lock, ""b, pds$process_id) then do; 006230 aa 000000 4310 07 fld 0,dl 006231 aa 6 00404 3521 20 epp2 pr6|260,* oc_data.lock 006232 aa 6 00044 3701 20 epp4 pr6|36,* 006233 la 4 00100 2361 20 ldq pr4|64,* pds$process_id 006234 aa 0 01434 7001 00 tsx0 pr0|796 stacq_mac 006235 aa 000036 6010 04 tnz 30,ic 006273 STATEMENT 1 ON LINE 1177 if oc_data.lock ^= ""b then /* not ours, if not free crash... */ call report_error (PANIC, "unlock_oc_data", "Lock not mine."); 006236 aa 6 00404 2351 20 lda pr6|260,* oc_data.lock 006237 aa 000034 6000 04 tze 28,ic 006273 006240 aa 772021 2350 04 lda -3055,ic 000261 = 165156154157 006241 aa 772021 2360 04 ldq -3055,ic 000262 = 143153137157 006242 aa 6 00626 7571 00 staq pr6|406 006243 aa 772020 2350 04 lda -3056,ic 000263 = 143137144141 006244 aa 164141 2360 03 ldq 59489,du 006245 aa 6 00630 7571 00 staq pr6|408 006246 aa 772007 2350 04 lda -3065,ic 000255 = 114157143153 006247 aa 772007 2360 04 ldq -3065,ic 000256 = 040156157164 006250 aa 6 00646 7571 00 staq pr6|422 006251 aa 772006 2350 04 lda -3066,ic 000257 = 040155151156 006252 aa 145056 2360 03 ldq 51758,du 006253 aa 6 00650 7571 00 staq pr6|424 006254 aa 771675 3520 04 epp2 -3139,ic 000151 = 000000000006 006255 aa 6 00666 2521 00 spri2 pr6|438 006256 aa 6 00626 3521 00 epp2 pr6|406 006257 aa 6 00670 2521 00 spri2 pr6|440 006260 aa 6 00646 3521 00 epp2 pr6|422 006261 aa 6 00672 2521 00 spri2 pr6|442 006262 aa 771710 3520 04 epp2 -3128,ic 000172 = 404000000021 006263 aa 6 00676 2521 00 spri2 pr6|446 006264 aa 771626 3520 04 epp2 -3178,ic 000112 = 524000000016 006265 aa 6 00700 2521 00 spri2 pr6|448 006266 aa 6 00702 2521 00 spri2 pr6|450 006267 aa 6 00664 6211 00 eax1 pr6|436 006270 aa 014000 4310 07 fld 6144,dl 006271 aa 006743 3520 04 epp2 3555,ic 015234 = 000400627000 006272 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1179 end; STATEMENT 1 ON LINE 1181 call unwire_and_unmask; 006273 aa 6 00056 6211 00 eax1 pr6|46 006274 aa 000000 4310 07 fld 0,dl 006275 aa 011253 3520 04 epp2 4779,ic 017550 = 000120627000 006276 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1183 return; 006277 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 3417 end ocdcm_; BEGIN PROCEDURE assign_bootload_console ENTRY TO assign_bootload_console STATEMENT 1 ON LINE 1186 assign_bootload_console: proc (name, error_code); 006300 da 000655200000 006301 aa 000140 6270 00 eax7 96 006302 aa 7 00034 3521 20 epp2 pr7|28,* 006303 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 006304 aa 000004000000 006305 aa 000000000000 STATEMENT 1 ON LINE 1208 oc_entry_ptr = find_oc_entry (name); 006306 aa 6 00032 3735 20 epp7 pr6|26,* 006307 aa 7 00002 3521 20 epp2 pr7|2,* name 006310 aa 6 00102 2521 00 spri2 pr6|66 006311 aa 6 00040 3715 20 epp5 pr6|32,* 006312 aa 5 00406 3521 00 epp2 pr5|262 oc_entry_ptr 006313 aa 6 00104 2521 00 spri2 pr6|68 006314 aa 000001 7270 07 lxl7 1,dl 006315 aa 6 00100 6211 00 eax1 pr6|64 006316 aa 010000 4310 07 fld 4096,dl 006317 aa 002416 3520 04 epp2 1294,ic 010735 = 000140627000 006320 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1209 if oc_entry_ptr = null then do; 006321 aa 6 00040 3735 20 epp7 pr6|32,* 006322 aa 7 00406 2371 00 ldaq pr7|262 oc_entry_ptr 006323 aa 771675 6770 04 eraq -3139,ic 000220 = 077777000043 000001000000 006324 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006325 aa 000006 6010 04 tnz 6,ic 006333 STATEMENT 1 ON LINE 1210 error_code = error_table_$device_not_active; 006326 aa 6 00044 3701 20 epp4 pr6|36,* 006327 la 4 00062 2361 20 ldq pr4|50,* error_table_$device_not_active 006330 aa 6 00032 3715 20 epp5 pr6|26,* 006331 aa 5 00004 7561 20 stq pr5|4,* error_code STATEMENT 1 ON LINE 1211 return; 006332 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1212 end; STATEMENT 1 ON LINE 1214 call io_manager$assign (oc_entry.device_idx, oc_entry.channel, /* attach this console... */ ocdcm_$interrupt_handler, (0), oc_data.status_ptr, error_code); 006333 aa 6 00044 3701 20 epp4 pr6|36,* 006334 la 4 00032 3521 20 epp2 pr4|26,* ocdcm_$interrupt_handler 006335 aa 6 00100 2521 00 spri2 pr6|64 cp.1101 006336 aa 011254 2370 04 ldaq 4780,ic 017612 = 077777000043 000001000000 006337 aa 6 00102 7571 00 staq pr6|66 cp.1101 006340 aa 6 00110 4501 00 stz pr6|72 006341 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 006342 aa 5 00005 3521 00 epp2 pr5|5 oc_entry.device_idx 006343 aa 6 00114 2521 00 spri2 pr6|76 006344 aa 5 00003 3521 00 epp2 pr5|3 oc_entry.channel 006345 aa 6 00116 2521 00 spri2 pr6|78 006346 aa 6 00100 3521 00 epp2 pr6|64 cp.1101 006347 aa 6 00120 2521 00 spri2 pr6|80 006350 aa 6 00110 3521 00 epp2 pr6|72 006351 aa 6 00122 2521 00 spri2 pr6|82 006352 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 006353 aa 3 00020 3521 00 epp2 pr3|16 oc_data.status_ptr 006354 aa 6 00124 2521 00 spri2 pr6|84 006355 aa 6 00032 3515 20 epp1 pr6|26,* 006356 aa 1 00004 3521 20 epp2 pr1|4,* error_code 006357 aa 6 00126 2521 00 spri2 pr6|86 006360 aa 6 00112 6211 00 eax1 pr6|74 006361 aa 030000 4310 07 fld 12288,dl 006362 la 4 00112 3521 20 epp2 pr4|74,* io_manager$assign 006363 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1216 if error_code ^= 0 then return; 006364 aa 6 00032 3735 20 epp7 pr6|26,* 006365 aa 7 00004 2361 20 ldq pr7|4,* error_code 006366 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 1218 oc_entry.assigned = true; 006367 aa 200000 2350 03 lda 65536,du 006370 aa 6 00040 3715 20 epp5 pr6|32,* 006371 aa 5 00406 3535 20 epp3 pr5|262,* oc_entry_ptr 006372 aa 3 00002 2551 00 orsa pr3|2 oc_entry.assigned STATEMENT 1 ON LINE 1219 oc_data.bootload_console_idx = oc_entry.opc_idx; 006373 aa 3 00001 2351 00 lda pr3|1 oc_entry.opc_idx 006374 aa 000022 7710 00 arl 18 006375 aa 5 00404 3515 20 epp1 pr5|260,* oc_data_ptr 006376 aa 1 00002 5511 14 stba pr1|2,14 oc_data.bootload_console_idx STATEMENT 1 ON LINE 1220 oc_entry.bootload_console = true; 006377 aa 100000 2350 03 lda 32768,du 006400 aa 3 00002 2551 00 orsa pr3|2 oc_entry.bootload_console STATEMENT 1 ON LINE 1221 oc_entry.alternate = false; 006401 aa 011221 2350 04 lda 4753,ic 017622 = 737777777777 006402 aa 3 00002 3551 00 ansa pr3|2 oc_entry.alternate STATEMENT 1 ON LINE 1222 oc_entry.io_device = false; 006403 aa 011241 2350 04 lda 4769,ic 017644 = 767777777777 006404 aa 3 00002 3551 00 ansa pr3|2 oc_entry.io_device STATEMENT 1 ON LINE 1223 oc_entry.inop_device = false; 006405 aa 011216 2350 04 lda 4750,ic 017623 = 757777777777 006406 aa 3 00002 3551 00 ansa pr3|2 oc_entry.inop_device STATEMENT 1 ON LINE 1224 oc_entry.no_device = false; 006407 aa 011205 2350 04 lda 4741,ic 017614 = 773777777777 006410 aa 3 00002 3551 00 ansa pr3|2 oc_entry.no_device STATEMENT 1 ON LINE 1225 oc_entry.retry_cnt = 0; 006411 aa 000000 2350 07 lda 0,dl 006412 aa 3 00007 5511 60 stba pr3|7,60 oc_entry.retry_cnt STATEMENT 1 ON LINE 1226 oc_entry.config_change = true; 006413 aa 002000 2350 03 lda 1024,du 006414 aa 3 00002 2551 00 orsa pr3|2 oc_entry.config_change STATEMENT 1 ON LINE 1227 call change_console_state (); 006415 aa 000001 7270 07 lxl7 1,dl 006416 aa 6 00056 6211 00 eax1 pr6|46 006417 aa 000000 4310 07 fld 0,dl 006420 aa 000213 3520 04 epp2 139,ic 006633 = 000120627000 006421 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1229 oc_data.in_service = true; 006422 aa 400000 2350 03 lda 131072,du 006423 aa 6 00040 3735 20 epp7 pr6|32,* 006424 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 006425 aa 5 00003 2551 00 orsa pr5|3 oc_data.in_service STATEMENT 1 ON LINE 1230 if oc_data.mc_io_enabled then do; 006426 aa 5 00003 2351 00 lda pr5|3 oc_data.mc_io_enabled 006427 aa 100000 3150 03 cana 32768,du 006430 aa 000025 6000 04 tze 21,ic 006455 STATEMENT 1 ON LINE 1231 call pxss$ring_0_wakeup (oc_data.err_event_pid, oc_data.err_event_cid, 0, (0)); 006431 aa 771565 2370 04 ldaq -3211,ic 000216 = 000000000000 000000000000 006432 aa 6 00130 7571 00 staq pr6|88 006433 aa 6 00110 4501 00 stz pr6|72 006434 aa 5 00036 3521 00 epp2 pr5|30 oc_data.err_event_pid 006435 aa 6 00114 2521 00 spri2 pr6|76 006436 aa 5 00034 3521 00 epp2 pr5|28 oc_data.err_event_cid 006437 aa 6 00116 2521 00 spri2 pr6|78 006440 aa 6 00130 3521 00 epp2 pr6|88 006441 aa 6 00120 2521 00 spri2 pr6|80 006442 aa 6 00110 3521 00 epp2 pr6|72 006443 aa 6 00122 2521 00 spri2 pr6|82 006444 aa 6 00112 6211 00 eax1 pr6|74 006445 aa 020000 4310 07 fld 8192,dl 006446 aa 6 00044 3701 20 epp4 pr6|36,* 006447 la 4 00042 3521 20 epp2 pr4|34,* pxss$ring_0_wakeup 006450 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1232 oc_data.mc_io_enabled = false; 006451 aa 011175 2350 04 lda 4733,ic 017646 = 677777777777 006452 aa 6 00040 3735 20 epp7 pr6|32,* 006453 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 006454 aa 5 00003 3551 00 ansa pr5|3 oc_data.mc_io_enabled STATEMENT 1 ON LINE 1233 end; STATEMENT 1 ON LINE 1235 return; 006455 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1237 end assign_bootload_console; END PROCEDURE assign_bootload_console BEGIN PROCEDURE bump_io_to_mc ENTRY TO bump_io_to_mc STATEMENT 1 ON LINE 1239 bump_io_to_mc: proc (io_uid); 006456 da 000664200000 006457 aa 000160 6270 00 eax7 112 006460 aa 7 00034 3521 20 epp2 pr7|28,* 006461 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 006462 aa 000002000000 006463 aa 000000000000 STATEMENT 1 ON LINE 1258 if oc_data.err_event_cid ^= 0 then do; 006464 aa 6 00040 3735 20 epp7 pr6|32,* 006465 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 006466 aa 5 00034 2371 00 ldaq pr5|28 oc_data.err_event_cid 006467 aa 000053 6000 04 tze 43,ic 006542 STATEMENT 1 ON LINE 1259 call pxss$ring_0_wakeup (oc_data.err_event_pid, oc_data.err_event_cid,/* tell MC about the I/O... */ io_uid, (0)); 006470 aa 6 00100 4501 00 stz pr6|64 006471 aa 5 00036 3521 00 epp2 pr5|30 oc_data.err_event_pid 006472 aa 6 00104 2521 00 spri2 pr6|68 006473 aa 5 00034 3521 00 epp2 pr5|28 oc_data.err_event_cid 006474 aa 6 00106 2521 00 spri2 pr6|70 006475 aa 6 00032 3535 20 epp3 pr6|26,* 006476 aa 3 00002 3521 20 epp2 pr3|2,* io_uid 006477 aa 6 00110 2521 00 spri2 pr6|72 006500 aa 6 00100 3521 00 epp2 pr6|64 006501 aa 6 00112 2521 00 spri2 pr6|74 006502 aa 6 00102 6211 00 eax1 pr6|66 006503 aa 020000 4310 07 fld 8192,dl 006504 la 4 00042 3521 20 epp2 pr4|34,* pxss$ring_0_wakeup 006505 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1261 if io_uid > 0 then call log_console_event (SENT_MC_PRIORITY_IO, addr (oc_data.priority_io)); 006506 aa 6 00032 3735 20 epp7 pr6|26,* 006507 aa 7 00002 2371 20 ldaq pr7|2,* io_uid 006510 aa 000017 6044 04 tmoz 15,ic 006527 006511 aa 6 00040 3715 20 epp5 pr6|32,* 006512 aa 5 00404 3535 20 epp3 pr5|260,* oc_data_ptr 006513 aa 3 00042 3715 00 epp5 pr3|34 oc_data.priority_io 006514 aa 6 00114 6515 00 spri5 pr6|76 006515 aa 771320 3520 04 epp2 -3376,ic 000035 = 000000000037 006516 aa 6 00104 2521 00 spri2 pr6|68 006517 aa 6 00114 3521 00 epp2 pr6|76 006520 aa 6 00106 2521 00 spri2 pr6|70 006521 aa 000001 7270 07 lxl7 1,dl 006522 aa 6 00102 6211 00 eax1 pr6|66 006523 aa 010000 4310 07 fld 4096,dl 006524 aa 004252 3520 04 epp2 2218,ic 012776 = 000120627000 006525 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 006526 aa 000013 7100 04 tra 11,ic 006541 STATEMENT 1 ON LINE 1262 else call log_console_event (SENT_MC_IO, console_io_ptr); 006527 aa 771275 3520 04 epp2 -3395,ic 000024 = 000000000036 006530 aa 6 00104 2521 00 spri2 pr6|68 006531 aa 6 00040 3715 20 epp5 pr6|32,* 006532 aa 5 00410 3521 00 epp2 pr5|264 console_io_ptr 006533 aa 6 00106 2521 00 spri2 pr6|70 006534 aa 000001 7270 07 lxl7 1,dl 006535 aa 6 00102 6211 00 eax1 pr6|66 006536 aa 010000 4310 07 fld 4096,dl 006537 aa 004237 3520 04 epp2 2207,ic 012776 = 000120627000 006540 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1263 return; 006541 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1264 end; STATEMENT 1 ON LINE 1265 else do; STATEMENT 1 ON LINE 1266 if oc_data.crash_on_crf | sys_info$collection_1_phase < SERVICE_INITIALIZATION then /* sorry, MUST crash... */ call unlock_oc_data (); 006542 aa 5 00003 2351 00 lda pr5|3 oc_data.crash_on_crf 006543 aa 200000 3150 03 cana 65536,du 006544 aa 000004 6010 04 tnz 4,ic 006550 006545 la 4 00104 2361 20 ldq pr4|68,* sys_info$collection_1_phase 006546 aa 000003 1160 07 cmpq 3,dl 006547 aa 000006 6050 04 tpl 6,ic 006555 006550 aa 000001 7270 07 lxl7 1,dl 006551 aa 6 00056 6211 00 eax1 pr6|46 006552 aa 000000 4310 07 fld 0,dl 006553 aa 010616 3520 04 epp2 4494,ic 017371 = 000140627000 006554 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1269 call syserr_real$panic ("ocdcm_ (bump_io_to_mc): Console recovery failure."); 006555 aa 000 100 100 404 mlr (ic),(pr),fill(000) 006556 aa 772104 00 0064 desc9a -3004,52 000661 = 157143144143 006557 aa 6 00116 00 0064 desc9a pr6|78,52 006560 aa 6 00116 3521 00 epp2 pr6|78 006561 aa 6 00104 2521 00 spri2 pr6|68 006562 aa 771322 3520 04 epp2 -3374,ic 000104 = 524000000061 006563 aa 6 00106 2521 00 spri2 pr6|70 006564 aa 6 00102 6211 00 eax1 pr6|66 006565 aa 004000 4310 07 fld 2048,dl 006566 aa 6 00044 3701 20 epp4 pr6|36,* 006567 la 4 00050 3521 20 epp2 pr4|40,* syserr_real$panic 006570 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1270 oc_data.mc_io_enabled = false; 006571 aa 011055 2350 04 lda 4653,ic 017646 = 677777777777 006572 aa 6 00040 3735 20 epp7 pr6|32,* 006573 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 006574 aa 5 00003 3551 00 ansa pr5|3 oc_data.mc_io_enabled STATEMENT 1 ON LINE 1271 oc_data.in_service = false; 006575 aa 011046 2350 04 lda 4646,ic 017643 = 377777777777 006576 aa 5 00003 3551 00 ansa pr5|3 oc_data.in_service STATEMENT 1 ON LINE 1272 call report_error (JUST_LOG, "bump_io_to_mc", "Message Coordinator failure."); 006577 aa 771452 2350 04 lda -3286,ic 000251 = 142165155160 006600 aa 771452 2360 04 ldq -3286,ic 000252 = 137151157137 006601 aa 6 00102 7571 00 staq pr6|66 006602 aa 771451 2350 04 lda -3287,ic 000253 = 164157137155 006603 aa 143000 2360 03 ldq 50688,du 006604 aa 6 00104 7571 00 staq pr6|68 006605 aa 000 100 100 404 mlr (ic),(pr),fill(000) 006606 aa 771560 00 0034 desc9a -3216,28 000365 = 115145163163 006607 aa 6 00116 00 0034 desc9a pr6|78,28 006610 aa 771360 3520 04 epp2 -3344,ic 000170 = 000000000005 006611 aa 6 00136 2521 00 spri2 pr6|94 006612 aa 6 00102 3521 00 epp2 pr6|66 006613 aa 6 00140 2521 00 spri2 pr6|96 006614 aa 6 00116 3521 00 epp2 pr6|78 006615 aa 6 00142 2521 00 spri2 pr6|98 006616 aa 771354 3520 04 epp2 -3348,ic 000172 = 404000000021 006617 aa 6 00146 2521 00 spri2 pr6|102 006620 aa 771274 3520 04 epp2 -3396,ic 000114 = 524000000015 006621 aa 6 00150 2521 00 spri2 pr6|104 006622 aa 771261 3520 04 epp2 -3407,ic 000103 = 524000000034 006623 aa 6 00152 2521 00 spri2 pr6|106 006624 aa 000001 7270 07 lxl7 1,dl 006625 aa 6 00134 6211 00 eax1 pr6|92 006626 aa 014000 4310 07 fld 6144,dl 006627 aa 006405 3520 04 epp2 3333,ic 015234 = 000400627000 006630 aa 0 00626 7001 00 tsx0 pr0|406 call_int_other_desc STATEMENT 1 ON LINE 1273 return; 006631 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1274 end; STATEMENT 1 ON LINE 1276 end bump_io_to_mc; END PROCEDURE bump_io_to_mc BEGIN PROCEDURE change_console_state ENTRY TO change_console_state STATEMENT 1 ON LINE 1278 change_console_state: proc (); 006632 da 000675200000 006633 aa 000120 6270 00 eax7 80 006634 aa 7 00034 3521 20 epp2 pr7|28,* 006635 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 006636 aa 000000000000 006637 aa 000000000000 STATEMENT 1 ON LINE 1289 do idx = 1 to MAX_OPC_CNT; 006640 aa 000010 2360 07 ldq 8,dl 006641 aa 6 00100 7561 00 stq pr6|64 006642 aa 000001 2360 07 ldq 1,dl 006643 aa 6 00040 3735 20 epp7 pr6|32,* 006644 aa 7 00272 7561 00 stq pr7|186 idx 006645 aa 000000 0110 03 nop 0,du 006646 aa 6 00040 3735 20 epp7 pr6|32,* 006647 aa 7 00272 2361 00 ldq pr7|186 idx 006650 aa 6 00100 1161 00 cmpq pr6|64 006651 aa 000247 6054 04 tpnz 167,ic 007120 STATEMENT 1 ON LINE 1290 if oc_data.opc (idx).active then do; 006652 aa 000034 4020 07 mpy 28,dl 006653 aa 6 00101 7561 00 stq pr6|65 006654 aa 000400 2360 07 ldq 256,dl 006655 aa 000003 0760 07 adq 3,dl 006656 aa 000002 7320 00 qrs 2 006657 aa 000012 0760 07 adq 10,dl 006660 aa 6 00102 7561 00 stq pr6|66 006661 aa 000001 0760 07 adq 1,dl 006662 aa 777776 3760 07 anq 262142,dl 006663 aa 000003 7360 00 qls 3 006664 aa 6 00103 7561 00 stq pr6|67 006665 aa 6 00102 2361 00 ldq pr6|66 006666 aa 000042 0760 07 adq 34,dl 006667 aa 000001 0760 07 adq 1,dl 006670 aa 777776 3760 07 anq 262142,dl 006671 aa 6 00102 0761 00 adq pr6|66 006672 aa 000001 0760 07 adq 1,dl 006673 aa 777776 3760 07 anq 262142,dl 006674 aa 000044 7770 00 llr 36 006675 aa 000044 7330 00 lrs 36 006676 aa 6 00103 0331 00 adl pr6|67 006677 aa 000012 0330 07 adl 10,dl 006700 aa 000001 0760 07 adq 1,dl 006701 aa 777776 3760 07 anq 262142,dl 006702 aa 6 00103 7561 00 stq pr6|67 006703 aa 000002 0760 07 adq 2,dl 006704 aa 6 00101 0761 00 adq pr6|65 006705 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 006706 aa 5 77744 2351 06 lda pr5|-28,ql oc_data.active 006707 aa 400000 3150 03 cana 131072,du 006710 aa 000206 6000 04 tze 134,ic 007116 STATEMENT 1 ON LINE 1291 if oc_data.opc (idx).config_change then do; 006711 aa 7 00272 2361 00 ldq pr7|186 idx 006712 aa 000034 4020 07 mpy 28,dl 006713 aa 000044 4020 07 mpy 36,dl 006714 aa 6 00101 7561 00 stq pr6|65 006715 aa 6 00103 2361 00 ldq pr6|67 006716 aa 000002 0760 07 adq 2,dl 006717 aa 000044 4020 07 mpy 36,dl 006720 aa 6 00103 7561 00 stq pr6|67 006721 aa 000007 0760 07 adq 7,dl 006722 aa 6 00101 0761 00 adq pr6|65 006723 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 006724 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.config_change 006725 aa 000000 00 0000 descb 0,0 006726 aa 000170 6000 04 tze 120,ic 007116 STATEMENT 1 ON LINE 1292 oc_data.opc (idx).config_change = false; 006727 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 006730 aa 000000 00 0000 descb 0,0 006731 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.config_change STATEMENT 1 ON LINE 1293 if oc_data.opc (idx).bootload_console then new_state = "on"; 006732 aa 6 00103 2361 00 ldq pr6|67 006733 aa 000002 0760 07 adq 2,dl 006734 aa 6 00101 0761 00 adq pr6|65 006735 aa 6 00102 7561 00 stq pr6|66 006736 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 006737 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.bootload_console 006740 aa 000000 00 0000 descb 0,0 006741 aa 000004 6000 04 tze 4,ic 006745 006742 aa 771140 2350 04 lda -3488,ic 000102 = 157156040040 006743 aa 7 00302 7551 00 sta pr7|194 new_state 006744 aa 000054 7100 04 tra 44,ic 007020 STATEMENT 1 ON LINE 1294 else if oc_data.opc (idx).alternate then new_state = "alt"; 006745 aa 6 00103 2361 00 ldq pr6|67 006746 aa 000003 0760 07 adq 3,dl 006747 aa 6 00101 0761 00 adq pr6|65 006750 aa 6 00102 7561 00 stq pr6|66 006751 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 006752 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.alternate 006753 aa 000000 00 0000 descb 0,0 006754 aa 000004 6000 04 tze 4,ic 006760 006755 aa 771124 2350 04 lda -3500,ic 000101 = 141154164040 006756 aa 7 00302 7551 00 sta pr7|194 new_state 006757 aa 000041 7100 04 tra 33,ic 007020 STATEMENT 1 ON LINE 1295 else if oc_data.opc (idx).io_device then new_state = "io"; 006760 aa 6 00103 2361 00 ldq pr6|67 006761 aa 000005 0760 07 adq 5,dl 006762 aa 6 00101 0761 00 adq pr6|65 006763 aa 6 00102 7561 00 stq pr6|66 006764 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 006765 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.io_device 006766 aa 000000 00 0000 descb 0,0 006767 aa 000004 6000 04 tze 4,ic 006773 006770 aa 771110 2350 04 lda -3512,ic 000100 = 151157040040 006771 aa 7 00302 7551 00 sta pr7|194 new_state 006772 aa 000026 7100 04 tra 22,ic 007020 STATEMENT 1 ON LINE 1296 else if oc_data.opc (idx).inop_device then new_state = "inop"; 006773 aa 6 00103 2361 00 ldq pr6|67 006774 aa 000004 0760 07 adq 4,dl 006775 aa 6 00101 0761 00 adq pr6|65 006776 aa 6 00102 7561 00 stq pr6|66 006777 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 007000 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.inop_device 007001 aa 000000 00 0000 descb 0,0 007002 aa 000004 6000 04 tze 4,ic 007006 007003 aa 771225 2350 04 lda -3435,ic 000230 = 151156157160 007004 aa 7 00302 7551 00 sta pr7|194 new_state 007005 aa 000013 7100 04 tra 11,ic 007020 STATEMENT 1 ON LINE 1297 else if oc_data.opc (idx).no_device then new_state = "off"; 007006 aa 6 00103 2361 00 ldq pr6|67 007007 aa 000006 0760 07 adq 6,dl 007010 aa 6 00101 0761 00 adq pr6|65 007011 aa 6 00101 7561 00 stq pr6|65 007012 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 007013 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.no_device 007014 aa 000000 00 0000 descb 0,0 007015 aa 000003 6000 04 tze 3,ic 007020 007016 aa 771061 2350 04 lda -3535,ic 000077 = 157146146040 007017 aa 7 00302 7551 00 sta pr7|194 new_state STATEMENT 1 ON LINE 1298 prph_opc_cardp = null; 007020 aa 771200 2370 04 ldaq -3456,ic 000220 = 077777000043 000001000000 007021 aa 7 00374 7571 00 staq pr7|252 prph_opc_cardp STATEMENT 1 ON LINE 1299 console_found = false; 007022 aa 7 00113 4501 00 stz pr7|75 console_found STATEMENT 1 ON LINE 1300 do while (^console_found); 007023 aa 000000 0110 03 nop 0,du 007024 aa 6 00040 3735 20 epp7 pr6|32,* 007025 aa 7 00113 2351 00 lda pr7|75 console_found 007026 aa 000070 6010 04 tnz 56,ic 007116 STATEMENT 1 ON LINE 1301 call config_$find ("prph", prph_opc_cardp); 007027 aa 771101 2350 04 lda -3519,ic 000130 = 160162160150 007030 aa 6 00101 7551 00 sta pr6|65 007031 aa 6 00101 3521 00 epp2 pr6|65 007032 aa 6 00106 2521 00 spri2 pr6|70 007033 aa 7 00374 3521 00 epp2 pr7|252 prph_opc_cardp 007034 aa 6 00110 2521 00 spri2 pr6|72 007035 aa 6 00104 6211 00 eax1 pr6|68 007036 aa 010000 4310 07 fld 4096,dl 007037 aa 6 00044 3701 20 epp4 pr6|36,* 007040 la 4 00016 3521 20 epp2 pr4|14,* config_$find 007041 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1302 if prph_opc_cardp = null then console_found = true; 007042 aa 6 00040 3735 20 epp7 pr6|32,* 007043 aa 7 00374 2371 00 ldaq pr7|252 prph_opc_cardp 007044 aa 771154 6770 04 eraq -3476,ic 000220 = 077777000043 000001000000 007045 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 007046 aa 000004 6010 04 tnz 4,ic 007052 007047 aa 400000 2350 03 lda 131072,du 007050 aa 7 00113 7551 00 sta pr7|75 console_found 007051 aa 777753 7100 04 tra -21,ic 007024 STATEMENT 1 ON LINE 1303 else do; STATEMENT 1 ON LINE 1304 if prph_opc_card.name = oc_data (idx).name then do; 007052 aa 7 00272 2361 00 ldq pr7|186 idx 007053 aa 000034 4020 07 mpy 28,dl 007054 aa 6 00101 7561 00 stq pr6|65 007055 aa 000400 2360 07 ldq 256,dl 007056 aa 000003 0760 07 adq 3,dl 007057 aa 000002 7320 00 qrs 2 007060 aa 000012 0760 07 adq 10,dl 007061 aa 6 00103 7561 00 stq pr6|67 007062 aa 000001 0760 07 adq 1,dl 007063 aa 777776 3760 07 anq 262142,dl 007064 aa 000003 7360 00 qls 3 007065 aa 6 00102 7561 00 stq pr6|66 007066 aa 6 00103 2361 00 ldq pr6|67 007067 aa 000042 0760 07 adq 34,dl 007070 aa 000001 0760 07 adq 1,dl 007071 aa 777776 3760 07 anq 262142,dl 007072 aa 6 00103 0761 00 adq pr6|67 007073 aa 000001 0760 07 adq 1,dl 007074 aa 777776 3760 07 anq 262142,dl 007075 aa 000044 7770 00 llr 36 007076 aa 000044 7330 00 lrs 36 007077 aa 6 00102 0331 00 adl pr6|66 007100 aa 000012 0330 07 adl 10,dl 007101 aa 000001 0760 07 adq 1,dl 007102 aa 777776 3760 07 anq 262142,dl 007103 aa 6 00101 0761 00 adq pr6|65 007104 aa 7 00374 3715 20 epp5 pr7|252,* prph_opc_cardp 007105 aa 5 00001 2351 00 lda pr5|1 prph_opc_card.name 007106 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 007107 aa 3 77744 1151 06 cmpa pr3|-28,ql oc_data.name 007110 aa 777714 6010 04 tnz -52,ic 007024 STATEMENT 1 ON LINE 1305 prph_opc_card.state = new_state; 007111 aa 7 00302 2351 00 lda pr7|194 new_state 007112 aa 5 00006 7551 00 sta pr5|6 prph_opc_card.state STATEMENT 1 ON LINE 1306 console_found = true; 007113 aa 400000 2350 03 lda 131072,du 007114 aa 7 00113 7551 00 sta pr7|75 console_found STATEMENT 1 ON LINE 1307 end; STATEMENT 1 ON LINE 1308 end; STATEMENT 1 ON LINE 1309 end; 007115 aa 777707 7100 04 tra -57,ic 007024 STATEMENT 1 ON LINE 1310 end; STATEMENT 1 ON LINE 1311 end; STATEMENT 1 ON LINE 1312 end; 007116 aa 7 00272 0541 00 aos pr7|186 idx 007117 aa 777527 7100 04 tra -169,ic 006646 STATEMENT 1 ON LINE 1314 return; 007120 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1316 end change_console_state; END PROCEDURE change_console_state BEGIN PROCEDURE console_recovery ENTRY TO console_recovery STATEMENT 1 ON LINE 1318 console_recovery: proc (); 007121 da 000705200000 007122 aa 000260 6270 00 eax7 176 007123 aa 7 00034 3521 20 epp2 pr7|28,* 007124 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 007125 aa 000000000000 007126 aa 000000000000 STATEMENT 1 ON LINE 1340 entrypoint = "console_recovery"; 007127 aa 6 00040 3735 20 epp7 pr6|32,* 007130 aa 040 100 100 404 mlr (ic),(pr),fill(040) 007131 aa 771115 00 0020 desc9a -3507,16 000245 = 143157156163 007132 aa 7 00234 00 0040 desc9a pr7|156,32 entrypoint STATEMENT 1 ON LINE 1342 if oc_data.must_have_console then do; 007133 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007134 aa 5 00003 2351 00 lda pr5|3 oc_data.must_have_console 007135 aa 004000 3150 03 cana 2048,du 007136 aa 000007 6000 04 tze 7,ic 007145 STATEMENT 1 ON LINE 1343 call poll_for_console (); 007137 aa 004452 6700 04 tsp4 2346,ic 013611 STATEMENT 1 ON LINE 1344 oc_data.must_have_console = false; 007140 aa 010454 2350 04 lda 4396,ic 017614 = 773777777777 007141 aa 6 00040 3735 20 epp7 pr6|32,* 007142 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007143 aa 5 00003 3551 00 ansa pr5|3 oc_data.must_have_console STATEMENT 1 ON LINE 1345 return; 007144 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1346 end; STATEMENT 1 ON LINE 1348 error_msg = ""; 007145 aa 040 100 100 400 mlr (),(pr),fill(040) 007146 aa 000000 00 0000 desc9a 0,0 007147 aa 7 00245 00 0120 desc9a pr7|165,80 error_msg STATEMENT 1 ON LINE 1350 call unassign_bootload_console (); 007150 aa 000001 7270 07 lxl7 1,dl 007151 aa 6 00056 6211 00 eax1 pr6|46 007152 aa 000000 4310 07 fld 0,dl 007153 aa 010106 3520 04 epp2 4166,ic 017261 = 000120627000 007154 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1352 if oc_entry_ptr ^= null then do; 007155 aa 6 00040 3735 20 epp7 pr6|32,* 007156 aa 7 00406 2371 00 ldaq pr7|262 oc_entry_ptr 007157 aa 771041 6770 04 eraq -3551,ic 000220 = 077777000043 000001000000 007160 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 007161 aa 000010 6000 04 tze 8,ic 007171 STATEMENT 1 ON LINE 1353 oc_entry.io_device = false; 007162 aa 010462 2350 04 lda 4402,ic 017644 = 767777777777 007163 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 007164 aa 5 00002 3551 00 ansa pr5|2 oc_entry.io_device STATEMENT 1 ON LINE 1354 oc_entry.inop_device = true; 007165 aa 020000 2350 03 lda 8192,du 007166 aa 5 00002 2551 00 orsa pr5|2 oc_entry.inop_device STATEMENT 1 ON LINE 1355 oc_entry.config_change = true; 007167 aa 002000 2350 03 lda 1024,du 007170 aa 5 00002 2551 00 orsa pr5|2 oc_entry.config_change STATEMENT 1 ON LINE 1356 end; STATEMENT 1 ON LINE 1358 found = false; 007171 aa 7 00120 4501 00 stz pr7|80 found STATEMENT 1 ON LINE 1360 do idx = 1 to oc_data.console_cnt while (^found); 007172 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007173 aa 5 00002 2351 00 lda pr5|2 oc_data.console_cnt 007174 aa 000066 7330 00 lrs 54 007175 aa 6 00100 7561 00 stq pr6|64 007176 aa 000001 2360 07 ldq 1,dl 007177 aa 7 00272 7561 00 stq pr7|186 idx 007200 aa 6 00040 3735 20 epp7 pr6|32,* 007201 aa 7 00272 2361 00 ldq pr7|186 idx 007202 aa 6 00100 1161 00 cmpq pr6|64 007203 aa 000157 6054 04 tpnz 111,ic 007362 007204 aa 7 00120 2351 00 lda pr7|80 found 007205 aa 000155 6010 04 tnz 109,ic 007362 STATEMENT 1 ON LINE 1361 oc_entry_ptr = addr (oc_data.opc (idx)); 007206 aa 000034 4020 07 mpy 28,dl 007207 aa 6 00136 7561 00 stq pr6|94 007210 aa 000400 2360 07 ldq 256,dl 007211 aa 000003 0760 07 adq 3,dl 007212 aa 000002 7320 00 qrs 2 007213 aa 000012 0760 07 adq 10,dl 007214 aa 6 00137 7561 00 stq pr6|95 007215 aa 000001 0760 07 adq 1,dl 007216 aa 777776 3760 07 anq 262142,dl 007217 aa 000003 7360 00 qls 3 007220 aa 6 00140 7561 00 stq pr6|96 007221 aa 6 00137 2361 00 ldq pr6|95 007222 aa 000042 0760 07 adq 34,dl 007223 aa 000001 0760 07 adq 1,dl 007224 aa 777776 3760 07 anq 262142,dl 007225 aa 6 00137 0761 00 adq pr6|95 007226 aa 000001 0760 07 adq 1,dl 007227 aa 777776 3760 07 anq 262142,dl 007230 aa 000044 7770 00 llr 36 007231 aa 000044 7330 00 lrs 36 007232 aa 6 00140 0331 00 adl pr6|96 007233 aa 000012 0330 07 adl 10,dl 007234 aa 000001 0760 07 adq 1,dl 007235 aa 777776 3760 07 anq 262142,dl 007236 aa 6 00136 0761 00 adq pr6|94 007237 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007240 aa 5 77744 3715 06 epp5 pr5|-28,ql oc_data.opc 007241 aa 7 00406 6515 00 spri5 pr7|262 oc_entry_ptr STATEMENT 1 ON LINE 1362 if oc_entry.alternate then do; 007242 aa 5 00002 2351 00 lda pr5|2 oc_entry.alternate 007243 aa 040000 3150 03 cana 16384,du 007244 aa 000113 6000 04 tze 75,ic 007357 STATEMENT 1 ON LINE 1363 found = true; 007245 aa 400000 2350 03 lda 131072,du 007246 aa 7 00120 7551 00 sta pr7|80 found STATEMENT 1 ON LINE 1364 call assign_bootload_console (oc_entry.name, err_code); 007247 aa 5 00000 3521 00 epp2 pr5|0 oc_entry.name 007250 aa 6 00144 2521 00 spri2 pr6|100 007251 aa 7 00244 3521 00 epp2 pr7|164 err_code 007252 aa 6 00146 2521 00 spri2 pr6|102 007253 aa 000001 7270 07 lxl7 1,dl 007254 aa 6 00142 6211 00 eax1 pr6|98 007255 aa 010000 4310 07 fld 4096,dl 007256 aa 777023 3520 04 epp2 -493,ic 006301 = 000140627000 007257 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1365 if err_code = 0 then do; 007260 aa 6 00040 3735 20 epp7 pr6|32,* 007261 aa 7 00244 2361 00 ldq pr7|164 err_code 007262 aa 000033 6010 04 tnz 27,ic 007315 STATEMENT 1 ON LINE 1366 call ioa_$rsnnl ("Console inoperative, alternate ^a assigned.", error_msg, 0, oc_entry.name); 007263 aa 000 100 100 404 mlr (ic),(pr),fill(000) 007264 aa 771243 00 0054 desc9a -3421,44 000526 = 103157156163 007265 aa 6 00152 00 0054 desc9a pr6|106,44 007266 aa 6 00141 4501 00 stz pr6|97 007267 aa 6 00152 3521 00 epp2 pr6|106 007270 aa 6 00170 2521 00 spri2 pr6|120 007271 aa 7 00245 3521 00 epp2 pr7|165 error_msg 007272 aa 6 00172 2521 00 spri2 pr6|122 007273 aa 6 00141 3521 00 epp2 pr6|97 007274 aa 6 00174 2521 00 spri2 pr6|124 007275 aa 7 00406 3521 20 epp2 pr7|262,* oc_entry.name 007276 aa 6 00176 2521 00 spri2 pr6|126 007277 aa 770626 3520 04 epp2 -3690,ic 000125 = 524000000053 007300 aa 6 00200 2521 00 spri2 pr6|128 007301 aa 770575 3520 04 epp2 -3715,ic 000076 = 526000000120 007302 aa 6 00202 2521 00 spri2 pr6|130 007303 aa 770572 3520 04 epp2 -3718,ic 000075 = 404000000005 007304 aa 6 00204 2521 00 spri2 pr6|132 007305 aa 770671 3520 04 epp2 -3655,ic 000176 = 524000000004 007306 aa 6 00206 2521 00 spri2 pr6|134 007307 aa 6 00166 6211 00 eax1 pr6|118 007310 aa 020000 4310 07 fld 8192,dl 007311 aa 6 00044 3701 20 epp4 pr6|36,* 007312 la 4 00026 3521 20 epp2 pr4|22,* ioa_$rsnnl 007313 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1368 end; 007314 aa 000043 7100 04 tra 35,ic 007357 STATEMENT 1 ON LINE 1369 else do; STATEMENT 1 ON LINE 1370 call ioa_$rsnnl ("Console failed, assignment of alternate ^a failed.", error_msg, 0, oc_entry.name); 007315 aa 000 100 100 404 mlr (ic),(pr),fill(000) 007316 aa 771327 00 0064 desc9a -3369,52 000644 = 103157156163 007317 aa 6 00166 00 0064 desc9a pr6|118,52 007320 aa 6 00141 4501 00 stz pr6|97 007321 aa 6 00166 3521 00 epp2 pr6|118 007322 aa 6 00212 2521 00 spri2 pr6|138 007323 aa 7 00245 3521 00 epp2 pr7|165 error_msg 007324 aa 6 00214 2521 00 spri2 pr6|140 007325 aa 6 00141 3521 00 epp2 pr6|97 007326 aa 6 00216 2521 00 spri2 pr6|142 007327 aa 7 00406 3521 20 epp2 pr7|262,* oc_entry.name 007330 aa 6 00220 2521 00 spri2 pr6|144 007331 aa 770543 3520 04 epp2 -3741,ic 000074 = 524000000062 007332 aa 6 00222 2521 00 spri2 pr6|146 007333 aa 770543 3520 04 epp2 -3741,ic 000076 = 526000000120 007334 aa 6 00224 2521 00 spri2 pr6|148 007335 aa 770540 3520 04 epp2 -3744,ic 000075 = 404000000005 007336 aa 6 00226 2521 00 spri2 pr6|150 007337 aa 770637 3520 04 epp2 -3681,ic 000176 = 524000000004 007340 aa 6 00230 2521 00 spri2 pr6|152 007341 aa 6 00210 6211 00 eax1 pr6|136 007342 aa 020000 4310 07 fld 8192,dl 007343 aa 6 00044 3701 20 epp4 pr6|36,* 007344 la 4 00026 3521 20 epp2 pr4|22,* ioa_$rsnnl 007345 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1372 oc_entry.inop_device = true; 007346 aa 020000 2350 03 lda 8192,du 007347 aa 6 00040 3735 20 epp7 pr6|32,* 007350 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 007351 aa 5 00002 2551 00 orsa pr5|2 oc_entry.inop_device STATEMENT 1 ON LINE 1373 oc_entry.alternate = false; 007352 aa 010250 2350 04 lda 4264,ic 017622 = 737777777777 007353 aa 5 00002 3551 00 ansa pr5|2 oc_entry.alternate STATEMENT 1 ON LINE 1374 oc_entry.config_change = true; 007354 aa 002000 2350 03 lda 1024,du 007355 aa 5 00002 2551 00 orsa pr5|2 oc_entry.config_change STATEMENT 1 ON LINE 1375 found = false; 007356 aa 7 00120 4501 00 stz pr7|80 found STATEMENT 1 ON LINE 1376 end; STATEMENT 1 ON LINE 1377 end; STATEMENT 1 ON LINE 1378 end; 007357 aa 6 00040 3735 20 epp7 pr6|32,* 007360 aa 7 00272 0541 00 aos pr7|186 idx 007361 aa 777617 7100 04 tra -113,ic 007200 STATEMENT 1 ON LINE 1380 if ^found then do; 007362 aa 7 00120 2351 00 lda pr7|80 found 007363 aa 000071 6010 04 tnz 57,ic 007454 STATEMENT 1 ON LINE 1381 if oc_data.err_event_cid = 0 then do; 007364 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007365 aa 5 00034 2371 00 ldaq pr5|28 oc_data.err_event_cid 007366 aa 000043 6010 04 tnz 35,ic 007431 STATEMENT 1 ON LINE 1382 if oc_data.crash_on_crf | sys_info$collection_1_phase < SERVICE_INITIALIZATION then do; 007367 aa 5 00003 2351 00 lda pr5|3 oc_data.crash_on_crf 007370 aa 200000 3150 03 cana 65536,du 007371 aa 000005 6010 04 tnz 5,ic 007376 007372 aa 6 00044 3701 20 epp4 pr6|36,* 007373 la 4 00104 2361 20 ldq pr4|68,* sys_info$collection_1_phase 007374 aa 000003 1160 07 cmpq 3,dl 007375 aa 000025 6050 04 tpl 21,ic 007422 STATEMENT 1 ON LINE 1384 call report_error (PANIC, entrypoint, "Console recovery failure."); 007376 aa 000 100 100 404 mlr (ic),(pr),fill(000) 007377 aa 770760 00 0034 desc9a -3600,28 000356 = 103157156163 007400 aa 6 00142 00 0034 desc9a pr6|98,28 007401 aa 770550 3520 04 epp2 -3736,ic 000151 = 000000000006 007402 aa 6 00212 2521 00 spri2 pr6|138 007403 aa 7 00234 3521 00 epp2 pr7|156 entrypoint 007404 aa 6 00214 2521 00 spri2 pr6|140 007405 aa 6 00142 3521 00 epp2 pr6|98 007406 aa 6 00216 2521 00 spri2 pr6|142 007407 aa 770563 3520 04 epp2 -3725,ic 000172 = 404000000021 007410 aa 6 00222 2521 00 spri2 pr6|146 007411 aa 770525 3520 04 epp2 -3755,ic 000136 = 526000000040 007412 aa 6 00224 2521 00 spri2 pr6|148 007413 aa 770460 3520 04 epp2 -3792,ic 000073 = 524000000031 007414 aa 6 00226 2521 00 spri2 pr6|150 007415 aa 000001 7270 07 lxl7 1,dl 007416 aa 6 00210 6211 00 eax1 pr6|136 007417 aa 014000 4310 07 fld 6144,dl 007420 aa 005614 3520 04 epp2 2956,ic 015234 = 000400627000 007421 aa 0 00626 7001 00 tsx0 pr0|406 call_int_other_desc STATEMENT 1 ON LINE 1385 end; STATEMENT 1 ON LINE 1386 oc_data.in_service = false; 007422 aa 010221 2350 04 lda 4241,ic 017643 = 377777777777 007423 aa 6 00040 3735 20 epp7 pr6|32,* 007424 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007425 aa 5 00003 3551 00 ansa pr5|3 oc_data.in_service STATEMENT 1 ON LINE 1387 oc_data.mc_io_enabled = false; 007426 aa 010220 2350 04 lda 4240,ic 017646 = 677777777777 007427 aa 5 00003 3551 00 ansa pr5|3 oc_data.mc_io_enabled STATEMENT 1 ON LINE 1388 end; 007430 aa 000003 7100 04 tra 3,ic 007433 STATEMENT 1 ON LINE 1389 else oc_data.mc_io_enabled = true; 007431 aa 100000 2350 03 lda 32768,du 007432 aa 5 00003 2551 00 orsa pr5|3 oc_data.mc_io_enabled STATEMENT 1 ON LINE 1391 if oc_data.mc_io_enabled then do; 007433 aa 5 00003 2351 00 lda pr5|3 oc_data.mc_io_enabled 007434 aa 100000 3150 03 cana 32768,du 007435 aa 000005 6000 04 tze 5,ic 007442 STATEMENT 1 ON LINE 1392 error_msg = "Console inoperative, no alternates available."; 007436 aa 040 100 100 404 mlr (ic),(pr),fill(040) 007437 aa 771172 00 0055 desc9a -3462,45 000630 = 103157156163 007440 aa 7 00245 00 0120 desc9a pr7|165,80 error_msg STATEMENT 1 ON LINE 1393 end; 007441 aa 000013 7100 04 tra 11,ic 007454 STATEMENT 1 ON LINE 1394 else do; STATEMENT 1 ON LINE 1395 error_msg = "Console inoperative, no alternates, no MC."; 007442 aa 040 100 100 404 mlr (ic),(pr),fill(040) 007443 aa 771051 00 0052 desc9a -3543,42 000513 = 103157156163 007444 aa 7 00245 00 0120 desc9a pr7|165,80 error_msg STATEMENT 1 ON LINE 1396 console_io_ptr = oc_data.io_ptr; 007445 aa 5 00022 3535 20 epp3 pr5|18,* oc_data.io_ptr 007446 aa 7 00410 2535 00 spri3 pr7|264 console_io_ptr STATEMENT 1 ON LINE 1397 console_io.in_progress = false; 007447 aa 010154 2350 04 lda 4204,ic 017623 = 757777777777 007450 aa 3 00006 3551 00 ansa pr3|6 console_io.in_progress STATEMENT 1 ON LINE 1398 oc_data.priority_io.completed = true; 007451 aa 010000 2350 03 lda 4096,du 007452 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007453 aa 5 00050 2551 00 orsa pr5|40 oc_data.completed STATEMENT 1 ON LINE 1399 end; STATEMENT 1 ON LINE 1400 end; STATEMENT 1 ON LINE 1402 call change_console_state (); 007454 aa 000001 7270 07 lxl7 1,dl 007455 aa 6 00056 6211 00 eax1 pr6|46 007456 aa 000000 4310 07 fld 0,dl 007457 aa 777154 3520 04 epp2 -404,ic 006633 = 000120627000 007460 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1404 if error_msg ^= "" then call report_error (JUST_LOG, entrypoint, error_msg); 007461 aa 6 00040 3735 20 epp7 pr6|32,* 007462 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 007463 aa 7 00245 00 0120 desc9a pr7|165,80 error_msg 007464 aa 010165 00 0000 desc9a 4213,0 017647 = 055076000000 007465 aa 000022 6000 04 tze 18,ic 007507 007466 aa 770502 3520 04 epp2 -3774,ic 000170 = 000000000005 007467 aa 6 00170 2521 00 spri2 pr6|120 007470 aa 7 00234 3521 00 epp2 pr7|156 entrypoint 007471 aa 6 00172 2521 00 spri2 pr6|122 007472 aa 7 00245 3521 00 epp2 pr7|165 error_msg 007473 aa 6 00174 2521 00 spri2 pr6|124 007474 aa 770476 3520 04 epp2 -3778,ic 000172 = 404000000021 007475 aa 6 00200 2521 00 spri2 pr6|128 007476 aa 770440 3520 04 epp2 -3808,ic 000136 = 526000000040 007477 aa 6 00202 2521 00 spri2 pr6|130 007500 aa 770376 3520 04 epp2 -3842,ic 000076 = 526000000120 007501 aa 6 00204 2521 00 spri2 pr6|132 007502 aa 000001 7270 07 lxl7 1,dl 007503 aa 6 00166 6211 00 eax1 pr6|118 007504 aa 014000 4310 07 fld 6144,dl 007505 aa 005527 3520 04 epp2 2903,ic 015234 = 000400627000 007506 aa 0 00626 7001 00 tsx0 pr0|406 call_int_other_desc STATEMENT 1 ON LINE 1406 return; 007507 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1408 end console_recovery; END PROCEDURE console_recovery BEGIN PROCEDURE console_responds_to_bell ENTRY TO console_responds_to_bell STATEMENT 1 ON LINE 1410 console_responds_to_bell: proc (console_idx) returns (bit (1)); 007510 aa 6 00122 6501 00 spri4 pr6|82 007511 aa 6 00124 2521 00 spri2 pr6|84 STATEMENT 1 ON LINE 1427 oc_entry_ptr = addr (oc_data.opc (console_idx)); 007512 aa 2 00002 2361 20 ldq pr2|2,* console_idx 007513 aa 000034 4020 07 mpy 28,dl 007514 aa 6 00232 7561 00 stq pr6|154 007515 aa 000400 2360 07 ldq 256,dl 007516 aa 000003 0760 07 adq 3,dl 007517 aa 000002 7320 00 qrs 2 007520 aa 000012 0760 07 adq 10,dl 007521 aa 6 00233 7561 00 stq pr6|155 007522 aa 000001 0760 07 adq 1,dl 007523 aa 777776 3760 07 anq 262142,dl 007524 aa 000003 7360 00 qls 3 007525 aa 6 00234 7561 00 stq pr6|156 007526 aa 6 00233 2361 00 ldq pr6|155 007527 aa 000042 0760 07 adq 34,dl 007530 aa 000001 0760 07 adq 1,dl 007531 aa 777776 3760 07 anq 262142,dl 007532 aa 6 00233 0761 00 adq pr6|155 007533 aa 000001 0760 07 adq 1,dl 007534 aa 777776 3760 07 anq 262142,dl 007535 aa 000044 7770 00 llr 36 007536 aa 000044 7330 00 lrs 36 007537 aa 6 00234 0331 00 adl pr6|156 007540 aa 000012 0330 07 adl 10,dl 007541 aa 000001 0760 07 adq 1,dl 007542 aa 777776 3760 07 anq 262142,dl 007543 aa 6 00232 0761 00 adq pr6|154 007544 aa 6 00040 3735 20 epp7 pr6|32,* 007545 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007546 aa 5 77744 3735 06 epp7 pr5|-28,ql oc_data.opc 007547 aa 6 00040 3535 20 epp3 pr6|32,* 007550 aa 3 00406 6535 00 spri7 pr3|262 oc_entry_ptr STATEMENT 1 ON LINE 1428 oc_entry.dcw_list_idx = ALERT_DCW; 007551 aa 000002 2350 07 lda 2,dl 007552 aa 7 00006 5511 14 stba pr7|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 1429 call initiate_io (); 007553 aa 000001 7270 07 lxl7 1,dl 007554 aa 6 00056 6211 00 eax1 pr6|46 007555 aa 000000 4310 07 fld 0,dl 007556 aa 001323 3520 04 epp2 723,ic 011101 = 000120627000 007557 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1430 do while (^io_status.t); 007560 aa 6 00040 3735 20 epp7 pr6|32,* 007561 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 007562 aa 5 00020 2351 20 lda pr5|16,* io_status.t 007563 aa 400000 3150 03 cana 131072,du 007564 aa 000002 6010 04 tnz 2,ic 007566 STATEMENT 1 ON LINE 1431 end; 007565 aa 777773 7100 04 tra -5,ic 007560 STATEMENT 1 ON LINE 1433 if io_status_overlay.major = "00"b3 then return (true); 007566 aa 5 00020 3535 20 epp3 pr5|16,* oc_data.status_ptr 007567 aa 000 000 066 500 cmpb (pr),(),fill(0) 007570 aa 3 00000 00 0006 descb pr3|0,6 io_status_overlay.major 007571 aa 000000 00 0000 descb 0,0 007572 aa 000007 6010 04 tnz 7,ic 007601 007573 aa 6 00124 3515 20 epp1 pr6|84,* 007574 aa 1 00004 3535 20 epp3 pr1|4,* 007575 aa 403 100 060 400 csl (),(pr),fill(1),bool(move) 007576 aa 000000 00 0000 descb 0,0 007577 aa 3 00000 00 0001 descb pr3|0,1 007600 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 1434 else return (false); 007601 aa 6 00124 3515 20 epp1 pr6|84,* 007602 aa 1 00004 3535 20 epp3 pr1|4,* 007603 aa 003 100 060 400 csl (),(pr),fill(0),bool(move) 007604 aa 000000 00 0000 descb 0,0 007605 aa 3 00000 00 0001 descb pr3|0,1 007606 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 1436 end console_responds_to_bell; END PROCEDURE console_responds_to_bell BEGIN PROCEDURE console_in_imu ENTRY TO console_in_imu STATEMENT 1 ON LINE 1438 console_in_imu: proc () returns (bit (1)); 007607 aa 6 00512 6501 00 spri4 pr6|330 007610 aa 6 00514 2521 00 spri2 pr6|332 STATEMENT 1 ON LINE 1448 iom_cardp = null; 007611 aa 770407 2370 04 ldaq -3833,ic 000220 = 077777000043 000001000000 007612 aa 6 00376 7571 00 staq pr6|254 iom_cardp STATEMENT 1 ON LINE 1449 call config_$find ("iom", iom_cardp); 007613 aa 770257 2350 04 lda -3921,ic 000072 = 151157155040 007614 aa 6 00740 7551 00 sta pr6|480 007615 aa 6 00740 3521 00 epp2 pr6|480 007616 aa 6 00744 2521 00 spri2 pr6|484 007617 aa 6 00376 3521 00 epp2 pr6|254 iom_cardp 007620 aa 6 00746 2521 00 spri2 pr6|486 007621 aa 6 00742 6211 00 eax1 pr6|482 007622 aa 010000 4310 07 fld 4096,dl 007623 aa 6 00044 3701 20 epp4 pr6|36,* 007624 la 4 00016 3521 20 epp2 pr4|14,* config_$find 007625 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1450 do while (iom_cardp ^= null); 007626 aa 6 00376 2371 00 ldaq pr6|254 iom_cardp 007627 aa 770371 6770 04 eraq -3847,ic 000220 = 077777000043 000001000000 007630 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 007631 aa 000040 6000 04 tze 32,ic 007671 STATEMENT 1 ON LINE 1451 if iom_card.model = "imu" | iom_card.model = "iioc" then do; 007632 aa 770237 2350 04 lda -3937,ic 000071 = 151155165000 007633 aa 0 00446 2771 00 oraq pr0|294 = 000000000040 040040040040 007634 aa 0 00110 3771 00 anaq pr0|72 = 777777777777 000000000000 007635 aa 6 00376 3735 20 epp7 pr6|254,* iom_cardp 007636 aa 7 00003 1151 00 cmpa pr7|3 iom_card.model 007637 aa 000004 6000 04 tze 4,ic 007643 007640 aa 7 00003 2351 00 lda pr7|3 iom_card.model 007641 aa 770227 1150 04 cmpa -3945,ic 000070 = 151151157143 007642 aa 000013 6010 04 tnz 11,ic 007655 STATEMENT 1 ON LINE 1452 if iom_card.tag = prph_opc_card.iom then return (true); 007643 aa 7 00001 2361 00 ldq pr7|1 iom_card.tag 007644 aa 6 00374 3715 20 epp5 pr6|252,* prph_opc_cardp 007645 aa 5 00002 1161 00 cmpq pr5|2 prph_opc_card.iom 007646 aa 000007 6010 04 tnz 7,ic 007655 007647 aa 6 00514 3535 20 epp3 pr6|332,* 007650 aa 3 00002 3515 20 epp1 pr3|2,* 007651 aa 403 100 060 400 csl (),(pr),fill(1),bool(move) 007652 aa 000000 00 0000 descb 0,0 007653 aa 1 00000 00 0001 descb pr1|0,1 007654 aa 6 00512 6101 00 rtcd pr6|330 STATEMENT 1 ON LINE 1453 end; STATEMENT 1 ON LINE 1454 call config_$find ("iom", iom_cardp); 007655 aa 770215 2350 04 lda -3955,ic 000072 = 151157155040 007656 aa 6 00740 7551 00 sta pr6|480 007657 aa 6 00740 3521 00 epp2 pr6|480 007660 aa 6 00744 2521 00 spri2 pr6|484 007661 aa 6 00376 3521 00 epp2 pr6|254 iom_cardp 007662 aa 6 00746 2521 00 spri2 pr6|486 007663 aa 6 00742 6211 00 eax1 pr6|482 007664 aa 010000 4310 07 fld 4096,dl 007665 aa 6 00044 3701 20 epp4 pr6|36,* 007666 la 4 00016 3521 20 epp2 pr4|14,* config_$find 007667 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1455 end; 007670 aa 777736 7100 04 tra -34,ic 007626 STATEMENT 1 ON LINE 1456 return (false); 007671 aa 6 00514 3735 20 epp7 pr6|332,* 007672 aa 7 00002 3715 20 epp5 pr7|2,* 007673 aa 003 100 060 400 csl (),(pr),fill(0),bool(move) 007674 aa 000000 00 0000 descb 0,0 007675 aa 5 00000 00 0001 descb pr5|0,1 007676 aa 6 00512 6101 00 rtcd pr6|330 STATEMENT 1 ON LINE 1457 end console_in_imu; END PROCEDURE console_in_imu BEGIN PROCEDURE fill_oc_entry ENTRY TO fill_oc_entry STATEMENT 1 ON LINE 1459 fill_oc_entry: proc (oc_data_struct_ptr, console_entry_idx, opc_card_ptr, oc_entry_ptr_arg); 007677 aa 6 00520 6501 00 spri4 pr6|336 007700 aa 6 00522 2521 00 spri2 pr6|338 STATEMENT 1 ON LINE 1481 oc_data_ptr = oc_data_struct_ptr; 007701 aa 2 00002 3735 20 epp7 pr2|2,* oc_data_struct_ptr 007702 aa 7 00000 3735 20 epp7 pr7|0,* oc_data_struct_ptr 007703 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 1482 prph_opc_cardp = opc_card_ptr; 007704 aa 2 00006 3715 20 epp5 pr2|6,* opc_card_ptr 007705 aa 5 00000 3715 20 epp5 pr5|0,* opc_card_ptr 007706 aa 6 00374 6515 00 spri5 pr6|252 prph_opc_cardp STATEMENT 1 ON LINE 1484 oc_entry_ptr = addr (oc_data.opc (console_entry_idx)); 007707 aa 2 00004 3735 20 epp7 pr2|4,* 007710 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 007711 aa 7 00000 00 0022 descb pr7|0,18 console_entry_idx 007712 aa 6 00056 00 0044 descb pr6|46,36 007713 aa 6 00056 2351 00 lda pr6|46 007714 aa 000066 7330 00 lrs 54 007715 aa 6 00750 7561 00 stq pr6|488 console_entry_idx 007716 aa 000034 4020 07 mpy 28,dl 007717 aa 6 00751 7561 00 stq pr6|489 007720 aa 000400 2360 07 ldq 256,dl 007721 aa 000003 0760 07 adq 3,dl 007722 aa 000002 7320 00 qrs 2 007723 aa 000012 0760 07 adq 10,dl 007724 aa 6 00752 7561 00 stq pr6|490 007725 aa 000001 0760 07 adq 1,dl 007726 aa 777776 3760 07 anq 262142,dl 007727 aa 000003 7360 00 qls 3 007730 aa 6 00753 7561 00 stq pr6|491 007731 aa 6 00752 2361 00 ldq pr6|490 007732 aa 000042 0760 07 adq 34,dl 007733 aa 000001 0760 07 adq 1,dl 007734 aa 777776 3760 07 anq 262142,dl 007735 aa 6 00752 0761 00 adq pr6|490 007736 aa 000001 0760 07 adq 1,dl 007737 aa 777776 3760 07 anq 262142,dl 007740 aa 000044 7770 00 llr 36 007741 aa 000044 7330 00 lrs 36 007742 aa 6 00753 0331 00 adl pr6|491 007743 aa 000012 0330 07 adl 10,dl 007744 aa 000001 0760 07 adq 1,dl 007745 aa 777776 3760 07 anq 262142,dl 007746 aa 6 00751 0761 00 adq pr6|489 007747 aa 6 00404 3535 20 epp3 pr6|260,* oc_data_ptr 007750 aa 3 77744 3535 06 epp3 pr3|-28,ql oc_data.opc 007751 aa 6 00406 2535 00 spri3 pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 1485 oc_entry_ptr_arg = oc_entry_ptr; 007752 aa 2 00010 2535 20 spri3 pr2|8,* oc_entry_ptr_arg STATEMENT 1 ON LINE 1487 unspec (oc_entry) = ""b; 007753 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 007754 aa 000 100 100 400 mlr (),(pr),fill(000) 007755 aa 000000 00 0000 desc9a 0,0 007756 aa 5 00000 00 0160 desc9a pr5|0,112 STATEMENT 1 ON LINE 1489 if prph_opc_card.name < "opca" | prph_opc_card.name > "opcz" then do; 007757 aa 6 00374 3535 20 epp3 pr6|252,* prph_opc_cardp 007760 aa 3 00001 2351 00 lda pr3|1 prph_opc_card.name 007761 aa 770105 1150 04 cmpa -4027,ic 000066 = 157160143141 007762 aa 000004 6020 04 tnc 4,ic 007766 007763 aa 770102 1150 04 cmpa -4030,ic 000065 = 157160143172 007764 aa 000026 6020 04 tnc 22,ic 010012 007765 aa 000025 6000 04 tze 21,ic 010012 STATEMENT 1 ON LINE 1490 call report_error (BEEP, "Illegal console name (^a) specified. It will be ignored.", prph_opc_card.name); 007766 aa 000 100 100 404 mlr (ic),(pr),fill(000) 007767 aa 770726 00 0070 desc9a -3626,56 000714 = 111154154145 007770 aa 6 00754 00 0070 desc9a pr6|492,56 007771 aa 770202 3520 04 epp2 -3966,ic 000173 = 000000000003 007772 aa 6 00774 2521 00 spri2 pr6|508 007773 aa 6 00754 3521 00 epp2 pr6|492 007774 aa 6 00776 2521 00 spri2 pr6|510 007775 aa 3 00001 3521 00 epp2 pr3|1 prph_opc_card.name 007776 aa 6 01000 2521 00 spri2 pr6|512 007777 aa 770173 3520 04 epp2 -3973,ic 000172 = 404000000021 010000 aa 6 01004 2521 00 spri2 pr6|516 010001 aa 770063 3520 04 epp2 -4045,ic 000064 = 524000000070 010002 aa 6 01006 2521 00 spri2 pr6|518 010003 aa 770173 3520 04 epp2 -3973,ic 000176 = 524000000004 010004 aa 6 01010 2521 00 spri2 pr6|520 010005 aa 6 00772 6211 00 eax1 pr6|506 010006 aa 014000 4310 07 fld 6144,dl 010007 aa 005225 3520 04 epp2 2709,ic 015234 = 000400627000 010010 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1491 return; 010011 aa 6 00520 6101 00 rtcd pr6|336 STATEMENT 1 ON LINE 1492 end; STATEMENT 1 ON LINE 1494 oc_entry.active = true; 010012 aa 400000 2350 03 lda 131072,du 010013 aa 5 00002 2551 00 orsa pr5|2 oc_entry.active STATEMENT 1 ON LINE 1496 if substr (prph_opc_card.mask, 1, 4) = "mask" then oc_entry.flags.read_unechoed_option = false; 010014 aa 3 00007 2351 00 lda pr3|7 prph_opc_card.mask 010015 aa 770046 1150 04 cmpa -4058,ic 000063 = 155141163153 010016 aa 000004 6010 04 tnz 4,ic 010022 010017 aa 007571 2350 04 lda 3961,ic 017610 = 777773777777 010020 aa 5 00002 3551 00 ansa pr5|2 oc_entry.read_unechoed_option 010021 aa 000003 7100 04 tra 3,ic 010024 STATEMENT 1 ON LINE 1497 else oc_entry.flags.read_unechoed_option = true; 010022 aa 000004 2350 03 lda 4,du 010023 aa 5 00002 2551 00 orsa pr5|2 oc_entry.read_unechoed_option STATEMENT 1 ON LINE 1499 oc_entry.name = prph_opc_card.name; 010024 aa 3 00001 2351 00 lda pr3|1 prph_opc_card.name 010025 aa 5 00000 7551 00 sta pr5|0 oc_entry.name STATEMENT 1 ON LINE 1500 oc_entry.opc_idx = console_entry_idx; 010026 aa 6 00750 2361 00 ldq pr6|488 console_entry_idx 010027 aa 000066 7370 00 lls 54 010030 aa 5 00001 5511 60 stba pr5|1,60 oc_entry.opc_idx STATEMENT 1 ON LINE 1501 oc_entry.imu = console_in_imu (); 010031 aa 000020 7270 07 lxl7 16,dl 010032 aa 5 00002 3521 00 epp2 pr5|2 oc_entry.imu 010033 aa 2 00000 5035 17 abd pr2|0,7 010034 aa 6 00756 2521 00 spri2 pr6|494 010035 aa 6 00754 3521 00 epp2 pr6|492 010036 aa 004000 4310 07 fld 2048,dl 010037 aa 2 00000 7571 00 staq pr2|0 010040 aa 777547 6700 04 tsp4 -153,ic 007607 STATEMENT 1 ON LINE 1503 if substr (prph_opc_card.state, 1, 2) = "on" then do; 010041 aa 6 00374 3735 20 epp7 pr6|252,* prph_opc_cardp 010042 aa 7 00006 2351 00 lda pr7|6 prph_opc_card.state 010043 aa 0 00044 3771 00 anaq pr0|36 = 777777000000 000000000000 010044 aa 6 00750 7551 00 sta pr6|488 prph_opc_card.state 010045 aa 157156 1150 03 cmpa 56942,du 010046 aa 000126 6010 04 tnz 86,ic 010174 STATEMENT 1 ON LINE 1504 do idx = 1 to oc_data.console_cnt while (oc_data.opc (idx).bootload_console = false); 010047 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 010050 aa 5 00002 2351 00 lda pr5|2 oc_data.console_cnt 010051 aa 000066 7330 00 lrs 54 010052 aa 6 00526 7561 00 stq pr6|342 010053 aa 000001 2360 07 ldq 1,dl 010054 aa 6 00272 7561 00 stq pr6|186 idx 010055 aa 000000 0110 03 nop 0,du 010056 aa 6 00272 2361 00 ldq pr6|186 idx 010057 aa 6 00526 1161 00 cmpq pr6|342 010060 aa 000045 6054 04 tpnz 37,ic 010125 010061 aa 000034 4020 07 mpy 28,dl 010062 aa 000044 4020 07 mpy 36,dl 010063 aa 6 00751 7561 00 stq pr6|489 010064 aa 000400 2360 07 ldq 256,dl 010065 aa 000003 0760 07 adq 3,dl 010066 aa 000002 7320 00 qrs 2 010067 aa 000012 0760 07 adq 10,dl 010070 aa 6 00753 7561 00 stq pr6|491 010071 aa 000001 0760 07 adq 1,dl 010072 aa 777776 3760 07 anq 262142,dl 010073 aa 000003 7360 00 qls 3 010074 aa 6 00752 7561 00 stq pr6|490 010075 aa 6 00753 2361 00 ldq pr6|491 010076 aa 000042 0760 07 adq 34,dl 010077 aa 000001 0760 07 adq 1,dl 010100 aa 777776 3760 07 anq 262142,dl 010101 aa 6 00753 0761 00 adq pr6|491 010102 aa 000001 0760 07 adq 1,dl 010103 aa 777776 3760 07 anq 262142,dl 010104 aa 000044 7770 00 llr 36 010105 aa 000044 7330 00 lrs 36 010106 aa 6 00752 0331 00 adl pr6|490 010107 aa 000012 0330 07 adl 10,dl 010110 aa 000001 0760 07 adq 1,dl 010111 aa 777776 3760 07 anq 262142,dl 010112 aa 000002 0760 07 adq 2,dl 010113 aa 000044 4020 07 mpy 36,dl 010114 aa 000002 0760 07 adq 2,dl 010115 aa 6 00751 0761 00 adq pr6|489 010116 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 010117 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 010120 aa 7 77744 00 0001 descb pr7|-28,1 oc_data.bootload_console 010121 aa 000000 00 0000 descb 0,0 010122 aa 000003 6010 04 tnz 3,ic 010125 STATEMENT 1 ON LINE 1505 end; 010123 aa 6 00272 0541 00 aos pr6|186 idx 010124 aa 777732 7100 04 tra -38,ic 010056 STATEMENT 1 ON LINE 1506 if idx > oc_data.console_cnt then do; 010125 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 010126 aa 7 00002 2351 00 lda pr7|2 oc_data.console_cnt 010127 aa 000066 7330 00 lrs 54 010130 aa 6 00272 1161 00 cmpq pr6|186 idx 010131 aa 000005 6050 04 tpl 5,ic 010136 STATEMENT 1 ON LINE 1507 oc_entry.bootload_console = true; 010132 aa 100000 2350 03 lda 32768,du 010133 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010134 aa 5 00002 2551 00 orsa pr5|2 oc_entry.bootload_console STATEMENT 1 ON LINE 1508 end; 010135 aa 000157 7100 04 tra 111,ic 010314 STATEMENT 1 ON LINE 1509 else do; STATEMENT 1 ON LINE 1510 call report_error (BEEP, entrypoint, "Changing state of ^a to alt.", oc_entry.name); 010136 aa 000 100 100 404 mlr (ic),(pr),fill(000) 010137 aa 770211 00 0034 desc9a -3959,28 000347 = 103150141156 010140 aa 6 00754 00 0034 desc9a pr6|492,28 010141 aa 770032 3520 04 epp2 -4070,ic 000173 = 000000000003 010142 aa 6 01014 2521 00 spri2 pr6|524 010143 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 010144 aa 6 01016 2521 00 spri2 pr6|526 010145 aa 6 00754 3521 00 epp2 pr6|492 010146 aa 6 01020 2521 00 spri2 pr6|528 010147 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 010150 aa 6 01022 2521 00 spri2 pr6|530 010151 aa 770021 3520 04 epp2 -4079,ic 000172 = 404000000021 010152 aa 6 01026 2521 00 spri2 pr6|534 010153 aa 767763 3520 04 epp2 -4109,ic 000136 = 526000000040 010154 aa 6 01030 2521 00 spri2 pr6|536 010155 aa 767726 3520 04 epp2 -4138,ic 000103 = 524000000034 010156 aa 6 01032 2521 00 spri2 pr6|538 010157 aa 770017 3520 04 epp2 -4081,ic 000176 = 524000000004 010160 aa 6 01034 2521 00 spri2 pr6|540 010161 aa 6 01012 6211 00 eax1 pr6|522 010162 aa 020000 4310 07 fld 8192,dl 010163 aa 005051 3520 04 epp2 2601,ic 015234 = 000400627000 010164 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1511 prph_opc_card.state = "alt"; 010165 aa 767714 2350 04 lda -4148,ic 000101 = 141154164040 010166 aa 6 00374 3735 20 epp7 pr6|252,* prph_opc_cardp 010167 aa 7 00006 7551 00 sta pr7|6 prph_opc_card.state STATEMENT 1 ON LINE 1512 oc_entry.alternate = true; 010170 aa 040000 2350 03 lda 16384,du 010171 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010172 aa 5 00002 2551 00 orsa pr5|2 oc_entry.alternate STATEMENT 1 ON LINE 1513 end; STATEMENT 1 ON LINE 1514 end; 010173 aa 000121 7100 04 tra 81,ic 010314 STATEMENT 1 ON LINE 1516 else if substr (prph_opc_card.state, 1, 3) = "alt" then do; 010174 aa 7 00006 2351 00 lda pr7|6 prph_opc_card.state 010175 aa 0 00066 3771 00 anaq pr0|54 = 777777777000 000000000000 010176 aa 6 00751 7551 00 sta pr6|489 prph_opc_card.state 010177 aa 767663 1150 04 cmpa -4173,ic 000062 = 141154164000 010200 aa 000005 6010 04 tnz 5,ic 010205 STATEMENT 1 ON LINE 1517 oc_entry.alternate = true; 010201 aa 040000 2350 03 lda 16384,du 010202 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010203 aa 5 00002 2551 00 orsa pr5|2 oc_entry.alternate STATEMENT 1 ON LINE 1518 end; 010204 aa 000110 7100 04 tra 72,ic 010314 STATEMENT 1 ON LINE 1520 else if prph_opc_card.state = "inop" then do; 010205 aa 7 00006 2351 00 lda pr7|6 prph_opc_card.state 010206 aa 770022 1150 04 cmpa -4078,ic 000230 = 151156157160 010207 aa 000005 6010 04 tnz 5,ic 010214 STATEMENT 1 ON LINE 1521 oc_entry.inop_device = true; 010210 aa 020000 2350 03 lda 8192,du 010211 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010212 aa 5 00002 2551 00 orsa pr5|2 oc_entry.inop_device STATEMENT 1 ON LINE 1522 end; 010213 aa 000101 7100 04 tra 65,ic 010314 STATEMENT 1 ON LINE 1524 else if substr (prph_opc_card.state, 1, 2) = "io" then do; 010214 aa 6 00750 2351 00 lda pr6|488 prph_opc_card.state 010215 aa 151157 1150 03 cmpa 53871,du 010216 aa 000005 6010 04 tnz 5,ic 010223 STATEMENT 1 ON LINE 1525 oc_entry.io_device = true; 010217 aa 010000 2350 03 lda 4096,du 010220 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010221 aa 5 00002 2551 00 orsa pr5|2 oc_entry.io_device STATEMENT 1 ON LINE 1526 end; 010222 aa 000072 7100 04 tra 58,ic 010314 STATEMENT 1 ON LINE 1528 else if substr (prph_opc_card.state, 1, 3) = "off" then do; 010223 aa 6 00751 2351 00 lda pr6|489 prph_opc_card.state 010224 aa 767673 1150 04 cmpa -4165,ic 000117 = 157146146000 010225 aa 000005 6010 04 tnz 5,ic 010232 STATEMENT 1 ON LINE 1529 oc_entry.no_device = true; 010226 aa 004000 2350 03 lda 2048,du 010227 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010230 aa 5 00002 2551 00 orsa pr5|2 oc_entry.no_device STATEMENT 1 ON LINE 1530 end; 010231 aa 000063 7100 04 tra 51,ic 010314 STATEMENT 1 ON LINE 1532 else do; STATEMENT 1 ON LINE 1533 call report_error (BEEP, entrypoint, "Invalid state of ^a for console ^a.", prph_opc_card.state, prph_opc_card.name); 010232 aa 000 100 100 404 mlr (ic),(pr),fill(000) 010233 aa 770214 00 0044 desc9a -3956,36 000446 = 111156166141 010234 aa 6 00754 00 0044 desc9a pr6|492,36 010235 aa 767736 3520 04 epp2 -4130,ic 000173 = 000000000003 010236 aa 6 01040 2521 00 spri2 pr6|544 010237 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 010240 aa 6 01042 2521 00 spri2 pr6|546 010241 aa 6 00754 3521 00 epp2 pr6|492 010242 aa 6 01044 2521 00 spri2 pr6|548 010243 aa 7 00006 3521 00 epp2 pr7|6 prph_opc_card.state 010244 aa 6 01046 2521 00 spri2 pr6|550 010245 aa 7 00001 3521 00 epp2 pr7|1 prph_opc_card.name 010246 aa 6 01050 2521 00 spri2 pr6|552 010247 aa 767723 3520 04 epp2 -4141,ic 000172 = 404000000021 010250 aa 6 01054 2521 00 spri2 pr6|556 010251 aa 767665 3520 04 epp2 -4171,ic 000136 = 526000000040 010252 aa 6 01056 2521 00 spri2 pr6|558 010253 aa 767606 3520 04 epp2 -4218,ic 000061 = 524000000043 010254 aa 6 01060 2521 00 spri2 pr6|560 010255 aa 767721 3520 04 epp2 -4143,ic 000176 = 524000000004 010256 aa 6 01062 2521 00 spri2 pr6|562 010257 aa 6 01064 2521 00 spri2 pr6|564 010260 aa 6 01036 6211 00 eax1 pr6|542 010261 aa 024000 4310 07 fld 10240,dl 010262 aa 004752 3520 04 epp2 2538,ic 015234 = 000400627000 010263 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1535 call report_error (ANNOUNCE, entrypoint, "This console will not be configured."); 010264 aa 000 100 100 404 mlr (ic),(pr),fill(000) 010265 aa 770151 00 0044 desc9a -3991,36 000435 = 124150151163 010266 aa 6 00754 00 0044 desc9a pr6|492,36 010267 aa 767652 3520 04 epp2 -4182,ic 000141 = 000000000000 010270 aa 6 00774 2521 00 spri2 pr6|508 010271 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 010272 aa 6 00776 2521 00 spri2 pr6|510 010273 aa 6 00754 3521 00 epp2 pr6|492 010274 aa 6 01000 2521 00 spri2 pr6|512 010275 aa 767675 3520 04 epp2 -4163,ic 000172 = 404000000021 010276 aa 6 01004 2521 00 spri2 pr6|516 010277 aa 767637 3520 04 epp2 -4193,ic 000136 = 526000000040 010300 aa 6 01006 2521 00 spri2 pr6|518 010301 aa 767557 3520 04 epp2 -4241,ic 000060 = 524000000044 010302 aa 6 01010 2521 00 spri2 pr6|520 010303 aa 6 00772 6211 00 eax1 pr6|506 010304 aa 014000 4310 07 fld 6144,dl 010305 aa 004727 3520 04 epp2 2519,ic 015234 = 000400627000 010306 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1536 unspec (oc_entry) = ""b; 010307 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 010310 aa 000 100 100 400 mlr (),(pr),fill(000) 010311 aa 000000 00 0000 desc9a 0,0 010312 aa 7 00000 00 0160 desc9a pr7|0,112 STATEMENT 1 ON LINE 1537 return; 010313 aa 6 00520 6101 00 rtcd pr6|336 STATEMENT 1 ON LINE 1538 end; STATEMENT 1 ON LINE 1540 oc_entry.line_leng = prph_opc_card.line_leng; 010314 aa 6 00374 3735 20 epp7 pr6|252,* prph_opc_cardp 010315 aa 7 00005 2361 00 ldq pr7|5 prph_opc_card.line_leng 010316 aa 000066 7370 00 lls 54 010317 aa 5 00006 5511 60 stba pr5|6,60 oc_entry.line_leng STATEMENT 1 ON LINE 1542 console_data_ptr = addr (config_data_$console_model_names); 010320 aa 6 00044 3701 20 epp4 pr6|36,* 010321 la 4 00106 3535 20 epp3 pr4|70,* config_data_$console_model_names 010322 aa 6 00100 2535 00 spri3 pr6|64 console_data_ptr STATEMENT 1 ON LINE 1544 found = false; 010323 aa 6 00120 4501 00 stz pr6|80 found STATEMENT 1 ON LINE 1546 do idx = 1 to console_data.count while (^found); 010324 aa 3 00000 2361 00 ldq pr3|0 console_data.count 010325 aa 6 00550 7561 00 stq pr6|360 010326 aa 000001 2360 07 ldq 1,dl 010327 aa 6 00272 7561 00 stq pr6|186 idx 010330 aa 6 00272 2361 00 ldq pr6|186 idx 010331 aa 6 00550 1161 00 cmpq pr6|360 010332 aa 000032 6054 04 tpnz 26,ic 010364 010333 aa 6 00120 2351 00 lda pr6|80 found 010334 aa 000030 6010 04 tnz 24,ic 010364 STATEMENT 1 ON LINE 1547 if console_data.model (idx) = prph_opc_card.model then do; 010335 aa 000005 4020 07 mpy 5,dl 010336 aa 6 00751 7561 00 stq pr6|489 010337 aa 6 00100 3735 20 epp7 pr6|64,* console_data_ptr 010340 aa 7 77774 2361 06 ldq pr7|-4,ql console_data.model 010341 aa 6 00374 3715 20 epp5 pr6|252,* prph_opc_cardp 010342 aa 5 00004 1161 00 cmpq pr5|4 prph_opc_card.model 010343 aa 000017 6010 04 tnz 15,ic 010362 STATEMENT 1 ON LINE 1548 found = true; 010344 aa 400000 2350 03 lda 131072,du 010345 aa 6 00120 7551 00 sta pr6|80 found STATEMENT 1 ON LINE 1549 oc_entry.model = prph_opc_card.model; 010346 aa 5 00004 2361 00 ldq pr5|4 prph_opc_card.model 010347 aa 6 00406 3535 20 epp3 pr6|262,* oc_entry_ptr 010350 aa 3 00001 5521 14 stbq pr3|1,14 oc_entry.model STATEMENT 1 ON LINE 1550 if substr (console_data.io_type (idx), 1, 3) = "pcw" then do; 010351 aa 6 00751 7271 00 lxl7 pr6|489 010352 aa 7 00000 2351 17 lda pr7|0,7 console_data.io_type 010353 aa 0 00066 3771 00 anaq pr0|54 = 777777777000 000000000000 010354 aa 767503 1150 04 cmpa -4285,ic 000057 = 160143167000 010355 aa 000005 6010 04 tnz 5,ic 010362 STATEMENT 1 ON LINE 1551 oc_entry.pcw_io = true; 010356 aa 000400 2350 03 lda 256,du 010357 aa 3 00002 2551 00 orsa pr3|2 oc_entry.pcw_io STATEMENT 1 ON LINE 1552 oc_entry.flags.read_unechoed_option = false; 010360 aa 007230 2350 04 lda 3736,ic 017610 = 777773777777 010361 aa 3 00002 3551 00 ansa pr3|2 oc_entry.read_unechoed_option STATEMENT 1 ON LINE 1553 end; STATEMENT 1 ON LINE 1554 end; STATEMENT 1 ON LINE 1555 end; 010362 aa 6 00272 0541 00 aos pr6|186 idx 010363 aa 777745 7100 04 tra -27,ic 010330 STATEMENT 1 ON LINE 1557 if ^found then do; 010364 aa 6 00120 2351 00 lda pr6|80 found 010365 aa 000041 6010 04 tnz 33,ic 010426 STATEMENT 1 ON LINE 1558 call report_error (BEEP, entrypoint, "Unknown model, ^i, specified for ^a. It will not be configured.", prph_opc_card.model, oc_entry.name); 010366 aa 000 100 100 404 mlr (ic),(pr),fill(000) 010367 aa 770401 00 0100 desc9a -3839,64 000767 = 125156153156 010370 aa 6 00772 00 0100 desc9a pr6|506,64 010371 aa 767602 3520 04 epp2 -4222,ic 000173 = 000000000003 010372 aa 6 01040 2521 00 spri2 pr6|544 010373 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 010374 aa 6 01042 2521 00 spri2 pr6|546 010375 aa 6 00772 3521 00 epp2 pr6|506 010376 aa 6 01044 2521 00 spri2 pr6|548 010377 aa 6 00374 3735 20 epp7 pr6|252,* prph_opc_cardp 010400 aa 7 00004 3521 00 epp2 pr7|4 prph_opc_card.model 010401 aa 6 01046 2521 00 spri2 pr6|550 010402 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 010403 aa 6 01050 2521 00 spri2 pr6|552 010404 aa 767566 3520 04 epp2 -4234,ic 000172 = 404000000021 010405 aa 6 01054 2521 00 spri2 pr6|556 010406 aa 6 01062 2521 00 spri2 pr6|562 010407 aa 767527 3520 04 epp2 -4265,ic 000136 = 526000000040 010410 aa 6 01056 2521 00 spri2 pr6|558 010411 aa 767445 3520 04 epp2 -4315,ic 000056 = 524000000077 010412 aa 6 01060 2521 00 spri2 pr6|560 010413 aa 767563 3520 04 epp2 -4237,ic 000176 = 524000000004 010414 aa 6 01064 2521 00 spri2 pr6|564 010415 aa 6 01036 6211 00 eax1 pr6|542 010416 aa 024000 4310 07 fld 10240,dl 010417 aa 004615 3520 04 epp2 2445,ic 015234 = 000400627000 010420 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1560 unspec (oc_entry) = ""b; 010421 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 010422 aa 000 100 100 400 mlr (),(pr),fill(000) 010423 aa 000000 00 0000 desc9a 0,0 010424 aa 7 00000 00 0160 desc9a pr7|0,112 STATEMENT 1 ON LINE 1561 return; 010425 aa 6 00520 6101 00 rtcd pr6|336 STATEMENT 1 ON LINE 1562 end; STATEMENT 1 ON LINE 1564 call io_chnl_util$iom_to_name ((prph_opc_card.iom), (prph_opc_card.chan), /* get this console's channel ID... */ oc_entry.channel, err_code); 010426 aa 6 00374 3735 20 epp7 pr6|252,* prph_opc_cardp 010427 aa 7 00002 2361 00 ldq pr7|2 prph_opc_card.iom 010430 aa 6 00751 7561 00 stq pr6|489 010431 aa 7 00003 2361 00 ldq pr7|3 prph_opc_card.chan 010432 aa 6 00750 7561 00 stq pr6|488 010433 aa 6 00751 3521 00 epp2 pr6|489 010434 aa 6 00756 2521 00 spri2 pr6|494 010435 aa 6 00750 3521 00 epp2 pr6|488 010436 aa 6 00760 2521 00 spri2 pr6|496 010437 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010440 aa 5 00003 3521 00 epp2 pr5|3 oc_entry.channel 010441 aa 6 00762 2521 00 spri2 pr6|498 010442 aa 6 00244 3521 00 epp2 pr6|164 err_code 010443 aa 6 00764 2521 00 spri2 pr6|500 010444 aa 6 00754 6211 00 eax1 pr6|492 010445 aa 020000 4310 07 fld 8192,dl 010446 aa 6 00044 3701 20 epp4 pr6|36,* 010447 la 4 00110 3521 20 epp2 pr4|72,* io_chnl_util$iom_to_name 010450 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1567 if err_code ^= 0 then do; 010451 aa 6 00244 2361 00 ldq pr6|164 err_code 010452 aa 000030 6000 04 tze 24,ic 010502 STATEMENT 1 ON LINE 1568 call report_error (PANIC, entrypoint, "Invalid channel specified for ^a.", oc_entry.name); 010453 aa 000 100 100 404 mlr (ic),(pr),fill(000) 010454 aa 767751 00 0044 desc9a -4119,36 000424 = 111156166141 010455 aa 6 00754 00 0044 desc9a pr6|492,36 010456 aa 767473 3520 04 epp2 -4293,ic 000151 = 000000000006 010457 aa 6 01014 2521 00 spri2 pr6|524 010460 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 010461 aa 6 01016 2521 00 spri2 pr6|526 010462 aa 6 00754 3521 00 epp2 pr6|492 010463 aa 6 01020 2521 00 spri2 pr6|528 010464 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 010465 aa 6 01022 2521 00 spri2 pr6|530 010466 aa 767504 3520 04 epp2 -4284,ic 000172 = 404000000021 010467 aa 6 01026 2521 00 spri2 pr6|534 010470 aa 767446 3520 04 epp2 -4314,ic 000136 = 526000000040 010471 aa 6 01030 2521 00 spri2 pr6|536 010472 aa 767424 3520 04 epp2 -4332,ic 000116 = 524000000041 010473 aa 6 01032 2521 00 spri2 pr6|538 010474 aa 767502 3520 04 epp2 -4286,ic 000176 = 524000000004 010475 aa 6 01034 2521 00 spri2 pr6|540 010476 aa 6 01012 6211 00 eax1 pr6|522 010477 aa 020000 4310 07 fld 8192,dl 010500 aa 004534 3520 04 epp2 2396,ic 015234 = 000400627000 010501 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1569 end; STATEMENT 1 ON LINE 1570 idcwp = addr (oc_entry.dcw_list (WRITE_DCW)); 010502 aa 000003 7270 07 lxl7 3,dl 010503 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 010504 aa 7 00012 3735 17 epp7 pr7|10,7 oc_entry.dcw_list 010505 aa 6 00402 6535 00 spri7 pr6|258 idcwp STATEMENT 1 ON LINE 1571 idcw.command = "33"b3; 010506 aa 330000 2350 03 lda 110592,du 010507 aa 7 00000 7511 40 stca pr7|0,40 idcw.command STATEMENT 1 ON LINE 1572 idcw.code = "111"b; 010510 aa 700000 2350 07 lda 229376,dl 010511 aa 7 00000 2551 00 orsa pr7|0 idcw.code STATEMENT 1 ON LINE 1574 idcwp = addr (oc_entry.dcw_list (READ_DCW)); 010512 aa 000007 7260 07 lxl6 7,dl 010513 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010514 aa 5 00012 3715 16 epp5 pr5|10,6 oc_entry.dcw_list 010515 aa 6 00402 6515 00 spri5 pr6|258 idcwp STATEMENT 1 ON LINE 1575 idcw.command = "23"b3; 010516 aa 230000 2350 03 lda 77824,du 010517 aa 5 00000 7511 40 stca pr5|0,40 idcw.command STATEMENT 1 ON LINE 1576 idcw.code = "111"b; 010520 aa 700000 2350 07 lda 229376,dl 010521 aa 5 00000 2551 00 orsa pr5|0 idcw.code STATEMENT 1 ON LINE 1577 dcwp = addr (oc_entry.dcw_list (READ_DCW + 1)); 010522 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 010523 aa 7 00013 3735 16 epp7 pr7|11,6 oc_entry.dcw_list 010524 aa 6 00400 6535 00 spri7 pr6|256 dcwp STATEMENT 1 ON LINE 1578 dcw.tally = bit (binary (divide (MAX_IO_LENGTH, 4, 17), 12)); 010525 aa 000400 2360 07 ldq 256,dl 010526 aa 000004 5060 07 div 4,dl 010527 aa 6 00750 7561 00 stq pr6|488 010530 aa 000003 6050 04 tpl 3,ic 010533 010531 aa 0 00110 6761 00 erq pr0|72 = 777777777777 010532 aa 000001 0760 07 adq 1,dl 010533 aa 000074 7370 00 lls 60 010534 aa 000030 7730 00 lrl 24 010535 aa 7 00000 7511 03 stca pr7|0,03 dcw.tally STATEMENT 1 ON LINE 1580 idcwp = addr (oc_entry.dcw_list (READ_UNECHOED_DCW)); 010536 aa 000011 7250 07 lxl5 9,dl 010537 aa 6 00406 3535 20 epp3 pr6|262,* oc_entry_ptr 010540 aa 3 00012 3535 15 epp3 pr3|10,5 oc_entry.dcw_list 010541 aa 6 00402 2535 00 spri3 pr6|258 idcwp STATEMENT 1 ON LINE 1581 idcw.command = "43"b3; 010542 aa 430000 2350 03 lda 143360,du 010543 aa 3 00000 7511 40 stca pr3|0,40 idcw.command STATEMENT 1 ON LINE 1582 idcw.code = "111"b; 010544 aa 700000 2350 07 lda 229376,dl 010545 aa 3 00000 2551 00 orsa pr3|0 idcw.code STATEMENT 1 ON LINE 1583 dcwp = addr (oc_entry.dcw_list (READ_UNECHOED_DCW + 1)); 010546 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 010547 aa 5 00013 3715 15 epp5 pr5|11,5 oc_entry.dcw_list 010550 aa 6 00400 6515 00 spri5 pr6|256 dcwp STATEMENT 1 ON LINE 1584 dcw.tally = bit (binary (divide (MAX_IO_LENGTH, 4, 17), 12)); 010551 aa 6 00750 2351 00 lda pr6|488 010552 aa 000002 6050 04 tpl 2,ic 010554 010553 aa 000000 5310 00 neg 0 010554 aa 0 00300 3771 00 anaq pr0|192 = 000000007777 777777777777 010555 aa 5 00000 7511 03 stca pr5|0,03 dcw.tally STATEMENT 1 ON LINE 1586 idcwp = addr (oc_entry.dcw_list (RESET_DCW)); 010556 aa 000001 7240 07 lxl4 1,dl 010557 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 010560 aa 7 00012 3735 14 epp7 pr7|10,4 oc_entry.dcw_list 010561 aa 6 00402 6535 00 spri7 pr6|258 idcwp STATEMENT 1 ON LINE 1587 idcw.command = "57"b3; 010562 aa 570000 2350 03 lda 192512,du 010563 aa 7 00000 7511 40 stca pr7|0,40 idcw.command STATEMENT 1 ON LINE 1588 idcw.code = "111"b; 010564 aa 700000 2350 07 lda 229376,dl 010565 aa 7 00000 2551 00 orsa pr7|0 idcw.code STATEMENT 1 ON LINE 1589 idcw.chan_cmd = "02"b3; 010566 aa 000200 2350 07 lda 128,dl 010567 aa 7 00000 7511 02 stca pr7|0,02 idcw.chan_cmd STATEMENT 1 ON LINE 1590 idcw.count = "01"b3; 010570 aa 000001 2350 07 lda 1,dl 010571 aa 7 00000 7511 01 stca pr7|0,01 idcw.count STATEMENT 1 ON LINE 1592 idcwp = addr (oc_entry.dcw_list (ALERT_DCW)); 010572 aa 000002 7230 07 lxl3 2,dl 010573 aa 6 00406 3535 20 epp3 pr6|262,* oc_entry_ptr 010574 aa 3 00012 3535 13 epp3 pr3|10,3 oc_entry.dcw_list 010575 aa 6 00402 2535 00 spri3 pr6|258 idcwp STATEMENT 1 ON LINE 1593 idcw.command = "51"b3; 010576 aa 510000 2350 03 lda 167936,du 010577 aa 3 00000 7511 40 stca pr3|0,40 idcw.command STATEMENT 1 ON LINE 1594 idcw.code = "111"b; 010600 aa 700000 2350 07 lda 229376,dl 010601 aa 3 00000 2551 00 orsa pr3|0 idcw.code STATEMENT 1 ON LINE 1595 idcw.chan_cmd = "02"b3; 010602 aa 000200 2350 07 lda 128,dl 010603 aa 3 00000 7511 02 stca pr3|0,02 idcw.chan_cmd STATEMENT 1 ON LINE 1596 idcw.count = "01"b3; 010604 aa 000001 2350 07 lda 1,dl 010605 aa 3 00000 7511 01 stca pr3|0,01 idcw.count STATEMENT 1 ON LINE 1598 oc_entry.dcw_list (NEWLINE_DCW) = oc_entry.dcw_list (WRITE_DCW); 010606 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 010607 aa 7 00012 2351 17 lda pr7|10,7 oc_entry.dcw_list 010610 aa 000005 7220 07 lxl2 5,dl 010611 aa 7 00012 7551 12 sta pr7|10,2 oc_entry.dcw_list STATEMENT 1 ON LINE 1599 dcwp = addr (oc_entry.dcw_list (NEWLINE_DCW + 1)); 010612 aa 7 00013 3515 12 epp1 pr7|11,2 oc_entry.dcw_list 010613 aa 6 00400 2515 00 spri1 pr6|256 dcwp STATEMENT 1 ON LINE 1600 dcw.address = bit (binary (wordno (addr (oc_data.write_return)) /* -> string to write... */ + oc_data.abs_addr, 18)); 010614 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 010615 aa 5 00016 3715 00 epp5 pr5|14 oc_data.write_return 010616 aa 5 00000 6361 00 eaq pr5|0 010617 aa 000022 7720 00 qrl 18 010620 aa 6 00404 3535 20 epp3 pr6|260,* oc_data_ptr 010621 aa 3 00017 0761 00 adq pr3|15 oc_data.abs_addr 010622 aa 000003 6050 04 tpl 3,ic 010625 010623 aa 0 00110 6761 00 erq pr0|72 = 777777777777 010624 aa 000001 0760 07 adq 1,dl 010625 aa 000066 7370 00 lls 54 010626 aa 1 00000 5511 60 stba pr1|0,60 dcw.address STATEMENT 1 ON LINE 1602 dcw.tally = "0001"b3; 010627 aa 000001 2350 07 lda 1,dl 010630 aa 1 00000 7511 03 stca pr1|0,03 dcw.tally STATEMENT 1 ON LINE 1604 oc_entry.dcw_list (PROMPT_DCW) = oc_entry.dcw_list (WRITE_DCW); 010631 aa 7 00012 2351 17 lda pr7|10,7 oc_entry.dcw_list 010632 aa 000013 7260 07 lxl6 11,dl 010633 aa 7 00012 7551 16 sta pr7|10,6 oc_entry.dcw_list STATEMENT 1 ON LINE 1605 dcwp = addr (oc_entry.dcw_list (PROMPT_DCW + 1)); 010634 aa 7 00013 3535 16 epp3 pr7|11,6 oc_entry.dcw_list 010635 aa 6 00400 2535 00 spri3 pr6|256 dcwp STATEMENT 1 ON LINE 1606 dcw.address = bit (binary (wordno (addr (oc_data.prompt)) /* -> string to write... */ + oc_data.abs_addr, 18)); 010636 aa 6 00404 3515 20 epp1 pr6|260,* oc_data_ptr 010637 aa 1 00006 3515 00 epp1 pr1|6 oc_data.prompt 010640 aa 1 00000 6361 00 eaq pr1|0 010641 aa 000022 7720 00 qrl 18 010642 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 010643 aa 7 00017 0761 00 adq pr7|15 oc_data.abs_addr 010644 aa 000003 6050 04 tpl 3,ic 010647 010645 aa 0 00110 6761 00 erq pr0|72 = 777777777777 010646 aa 000001 0760 07 adq 1,dl 010647 aa 000066 7370 00 lls 54 010650 aa 3 00000 5511 60 stba pr3|0,60 dcw.address STATEMENT 1 ON LINE 1608 dcw.tally = "0002"b3; 010651 aa 000002 2350 07 lda 2,dl 010652 aa 3 00000 7511 03 stca pr3|0,03 dcw.tally STATEMENT 1 ON LINE 1610 oc_entry.dcw_list (DISCARD_DCW) = oc_entry.dcw_list (WRITE_DCW); 010653 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 010654 aa 7 00012 2351 17 lda pr7|10,7 oc_entry.dcw_list 010655 aa 000015 7250 07 lxl5 13,dl 010656 aa 7 00012 7551 15 sta pr7|10,5 oc_entry.dcw_list STATEMENT 1 ON LINE 1611 dcwp = addr (oc_entry.dcw_list (DISCARD_DCW + 1)); 010657 aa 7 00013 3535 15 epp3 pr7|11,5 oc_entry.dcw_list 010660 aa 6 00400 2535 00 spri3 pr6|256 dcwp STATEMENT 1 ON LINE 1612 dcw.address = bit (binary (wordno (addr (oc_data.discard_notice)) /* -> string to write... */ + oc_data.abs_addr, 18)); 010661 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 010662 aa 7 00010 3735 00 epp7 pr7|8 oc_data.discard_notice 010663 aa 7 00000 6361 00 eaq pr7|0 010664 aa 000022 7720 00 qrl 18 010665 aa 6 00404 3535 20 epp3 pr6|260,* oc_data_ptr 010666 aa 3 00017 0761 00 adq pr3|15 oc_data.abs_addr 010667 aa 000003 6050 04 tpl 3,ic 010672 010670 aa 0 00110 6761 00 erq pr0|72 = 777777777777 010671 aa 000001 0760 07 adq 1,dl 010672 aa 000066 7370 00 lls 54 010673 aa 6 00400 3535 20 epp3 pr6|256,* dcw.address 010674 aa 3 00000 5511 60 stba pr3|0,60 dcw.address STATEMENT 1 ON LINE 1614 dcw.tally = "0006"b3; 010675 aa 000006 2350 07 lda 6,dl 010676 aa 6 00400 3535 20 epp3 pr6|256,* dcw.tally 010677 aa 3 00000 7511 03 stca pr3|0,03 dcw.tally STATEMENT 1 ON LINE 1616 idcwp = addr (oc_entry.dcw_list (LOCK_MCA_DCW)); 010700 aa 000017 7240 07 lxl4 15,dl 010701 aa 6 00406 3535 20 epp3 pr6|262,* oc_entry_ptr 010702 aa 3 00012 3535 14 epp3 pr3|10,4 oc_entry.dcw_list 010703 aa 6 00402 2535 00 spri3 pr6|258 idcwp STATEMENT 1 ON LINE 1617 idcw.command = "60"b3; 010704 aa 600000 2350 03 lda 196608,du 010705 aa 3 00000 7511 40 stca pr3|0,40 idcw.command STATEMENT 1 ON LINE 1618 idcw.code = "111"b; 010706 aa 700000 2350 07 lda 229376,dl 010707 aa 3 00000 2551 00 orsa pr3|0 idcw.code STATEMENT 1 ON LINE 1619 idcw.chan_cmd = "02"b3; 010710 aa 000200 2350 07 lda 128,dl 010711 aa 3 00000 7511 02 stca pr3|0,02 idcw.chan_cmd STATEMENT 1 ON LINE 1620 idcw.count = "00"b3; 010712 aa 006675 2350 04 lda 3517,ic 017607 = 777777777700 010713 aa 3 00000 3551 00 ansa pr3|0 idcw.count STATEMENT 1 ON LINE 1622 idcwp = addr (oc_entry.dcw_list (UNLOCK_MCA_DCW)); 010714 aa 000020 7230 07 lxl3 16,dl 010715 aa 6 00406 3535 20 epp3 pr6|262,* oc_entry_ptr 010716 aa 3 00012 3535 13 epp3 pr3|10,3 oc_entry.dcw_list 010717 aa 6 00402 2535 00 spri3 pr6|258 idcwp STATEMENT 1 ON LINE 1623 idcw.command = "63"b3; 010720 aa 630000 2350 03 lda 208896,du 010721 aa 3 00000 7511 40 stca pr3|0,40 idcw.command STATEMENT 1 ON LINE 1624 idcw.code = "111"b; 010722 aa 700000 2350 07 lda 229376,dl 010723 aa 3 00000 2551 00 orsa pr3|0 idcw.code STATEMENT 1 ON LINE 1625 idcw.chan_cmd = "02"b3; 010724 aa 000200 2350 07 lda 128,dl 010725 aa 3 00000 7511 02 stca pr3|0,02 idcw.chan_cmd STATEMENT 1 ON LINE 1626 idcw.count = "00"b3; 010726 aa 006661 2350 04 lda 3505,ic 017607 = 777777777700 010727 aa 3 00000 3551 00 ansa pr3|0 idcw.count STATEMENT 1 ON LINE 1628 oc_entry.prompt = true; 010730 aa 001000 2350 03 lda 512,du 010731 aa 6 00406 3535 20 epp3 pr6|262,* oc_entry_ptr 010732 aa 3 00002 2551 00 orsa pr3|2 oc_entry.prompt STATEMENT 1 ON LINE 1630 return; 010733 aa 6 00520 6101 00 rtcd pr6|336 STATEMENT 1 ON LINE 1632 end fill_oc_entry; END PROCEDURE fill_oc_entry BEGIN PROCEDURE find_oc_entry ENTRY TO find_oc_entry STATEMENT 1 ON LINE 1634 find_oc_entry: proc (opc_name) returns (ptr); 010734 da 000714220000 010735 aa 000140 6270 00 eax7 96 010736 aa 7 00034 3521 20 epp2 pr7|28,* 010737 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 010740 aa 000004000000 010741 aa 000000000000 STATEMENT 1 ON LINE 1653 oc_data_ptr = addr (oc_data$); 010742 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 010743 aa 6 00040 3715 20 epp5 pr6|32,* 010744 aa 5 00404 6535 00 spri7 pr5|260 oc_data_ptr STATEMENT 1 ON LINE 1655 if opc_name = "" then do; 010745 aa 000000 4310 07 fld 0,dl 010746 aa 0 00440 2771 00 oraq pr0|288 = 040040040040 040040040040 010747 aa 0 00110 3771 00 anaq pr0|72 = 777777777777 000000000000 010750 aa 6 00032 3535 20 epp3 pr6|26,* 010751 aa 3 00002 1151 20 cmpa pr3|2,* opc_name 010752 aa 000045 6010 04 tnz 37,ic 011017 STATEMENT 1 ON LINE 1656 if oc_data.bootload_console_idx = 0 then return (null); 010753 aa 7 00002 2351 00 lda pr7|2 oc_data.bootload_console_idx 010754 aa 000022 7350 00 als 18 010755 aa 000066 7330 00 lrs 54 010756 aa 6 00122 7561 00 stq pr6|82 oc_data.bootload_console_idx 010757 aa 000004 6010 04 tnz 4,ic 010763 010760 aa 767240 2370 04 ldaq -4448,ic 000220 = 077777000043 000001000000 010761 aa 3 00004 7571 20 staq pr3|4,* 010762 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1657 return (addr (oc_data.opc (oc_data.bootload_console_idx))); 010763 aa 000034 4020 07 mpy 28,dl 010764 aa 6 00122 7561 00 stq pr6|82 010765 aa 000400 2360 07 ldq 256,dl 010766 aa 000003 0760 07 adq 3,dl 010767 aa 000002 7320 00 qrs 2 010770 aa 000012 0760 07 adq 10,dl 010771 aa 6 00123 7561 00 stq pr6|83 010772 aa 000001 0760 07 adq 1,dl 010773 aa 777776 3760 07 anq 262142,dl 010774 aa 000003 7360 00 qls 3 010775 aa 6 00124 7561 00 stq pr6|84 010776 aa 6 00123 2361 00 ldq pr6|83 010777 aa 000042 0760 07 adq 34,dl 011000 aa 000001 0760 07 adq 1,dl 011001 aa 777776 3760 07 anq 262142,dl 011002 aa 6 00123 0761 00 adq pr6|83 011003 aa 000001 0760 07 adq 1,dl 011004 aa 777776 3760 07 anq 262142,dl 011005 aa 000044 7770 00 llr 36 011006 aa 000044 7330 00 lrs 36 011007 aa 6 00124 0331 00 adl pr6|84 011010 aa 000012 0330 07 adl 10,dl 011011 aa 000001 0760 07 adq 1,dl 011012 aa 777776 3760 07 anq 262142,dl 011013 aa 6 00122 0761 00 adq pr6|82 011014 aa 7 77744 3515 06 epp1 pr7|-28,ql oc_data.opc 011015 aa 3 00004 2515 20 spri1 pr3|4,* 011016 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1658 end; STATEMENT 1 ON LINE 1660 do idx = 1 to oc_data.console_cnt; 011017 aa 7 00002 2351 00 lda pr7|2 oc_data.console_cnt 011020 aa 000066 7330 00 lrs 54 011021 aa 6 00100 7561 00 stq pr6|64 011022 aa 000001 2360 07 ldq 1,dl 011023 aa 5 00272 7561 00 stq pr5|186 idx 011024 aa 6 00040 3735 20 epp7 pr6|32,* 011025 aa 7 00272 2361 00 ldq pr7|186 idx 011026 aa 6 00100 1161 00 cmpq pr6|64 011027 aa 000045 6054 04 tpnz 37,ic 011074 STATEMENT 1 ON LINE 1661 if oc_data.opc (idx).name = opc_name then do; 011030 aa 000034 4020 07 mpy 28,dl 011031 aa 6 00122 7561 00 stq pr6|82 011032 aa 000400 2360 07 ldq 256,dl 011033 aa 000003 0760 07 adq 3,dl 011034 aa 000002 7320 00 qrs 2 011035 aa 000012 0760 07 adq 10,dl 011036 aa 6 00124 7561 00 stq pr6|84 011037 aa 000001 0760 07 adq 1,dl 011040 aa 777776 3760 07 anq 262142,dl 011041 aa 000003 7360 00 qls 3 011042 aa 6 00123 7561 00 stq pr6|83 011043 aa 6 00124 2361 00 ldq pr6|84 011044 aa 000042 0760 07 adq 34,dl 011045 aa 000001 0760 07 adq 1,dl 011046 aa 777776 3760 07 anq 262142,dl 011047 aa 6 00124 0761 00 adq pr6|84 011050 aa 000001 0760 07 adq 1,dl 011051 aa 777776 3760 07 anq 262142,dl 011052 aa 000044 7770 00 llr 36 011053 aa 000044 7330 00 lrs 36 011054 aa 6 00123 0331 00 adl pr6|83 011055 aa 000012 0330 07 adl 10,dl 011056 aa 000001 0760 07 adq 1,dl 011057 aa 777776 3760 07 anq 262142,dl 011060 aa 6 00122 0761 00 adq pr6|82 011061 aa 6 00122 7561 00 stq pr6|82 011062 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 011063 aa 5 77744 2351 06 lda pr5|-28,ql oc_data.name 011064 aa 6 00032 3535 20 epp3 pr6|26,* 011065 aa 3 00002 1151 20 cmpa pr3|2,* opc_name 011066 aa 000004 6010 04 tnz 4,ic 011072 STATEMENT 1 ON LINE 1662 return (addr (oc_data.opc (idx))); 011067 aa 5 77744 3515 06 epp1 pr5|-28,ql oc_data.opc 011070 aa 3 00004 2515 20 spri1 pr3|4,* 011071 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1663 end; STATEMENT 1 ON LINE 1664 end; 011072 aa 7 00272 0541 00 aos pr7|186 idx 011073 aa 777731 7100 04 tra -39,ic 011024 STATEMENT 1 ON LINE 1666 return (null); 011074 aa 767124 2370 04 ldaq -4524,ic 000220 = 077777000043 000001000000 011075 aa 6 00032 3715 20 epp5 pr6|26,* 011076 aa 5 00004 7571 20 staq pr5|4,* 011077 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1668 end find_oc_entry; END PROCEDURE find_oc_entry BEGIN PROCEDURE initiate_io ENTRY TO initiate_io STATEMENT 1 ON LINE 1670 initiate_io: proc (); 011100 da 000722200000 011101 aa 000120 6270 00 eax7 80 011102 aa 7 00034 3521 20 epp2 pr7|28,* 011103 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 011104 aa 000000000000 011105 aa 000000000000 STATEMENT 1 ON LINE 1679 oc_entry.io_time = clock (); 011106 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 011107 aa 6 00040 3735 20 epp7 pr6|32,* 011110 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 011111 aa 5 00010 7571 00 staq pr5|8 oc_entry.io_time STATEMENT 1 ON LINE 1680 oc_entry.io_in_progress = true; 011112 aa 000200 2350 03 lda 128,du 011113 aa 5 00002 2551 00 orsa pr5|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 1682 if oc_entry.dcw_list_idx = READ_DCW | /* if we're doing a READ or... */ oc_entry.dcw_list_idx = READ_UNECHOED_DCW | /* or a READ_UNECHOED... */ oc_entry.dcw_list_idx = WRITE_DCW | /* a WRITE */ oc_entry.dcw_list_idx = PROMPT_DCW | /* or a PROMPT */ oc_entry.dcw_list_idx = ALERT_DCW then do; 011114 aa 5 00006 2351 00 lda pr5|6 oc_entry.dcw_list_idx 011115 aa 000022 7350 00 als 18 011116 aa 000066 7330 00 lrs 54 011117 aa 6 00100 7561 00 stq pr6|64 oc_entry.dcw_list_idx 011120 aa 000007 1160 07 cmpq 7,dl 011121 aa 000011 6000 04 tze 9,ic 011132 011122 aa 000011 1160 07 cmpq 9,dl 011123 aa 000007 6000 04 tze 7,ic 011132 011124 aa 000003 1160 07 cmpq 3,dl 011125 aa 000005 6000 04 tze 5,ic 011132 011126 aa 000013 1160 07 cmpq 11,dl 011127 aa 000003 6000 04 tze 3,ic 011132 011130 aa 000002 1160 07 cmpq 2,dl 011131 aa 000044 6010 04 tnz 36,ic 011175 STATEMENT 1 ON LINE 1687 oc_data.io_ptr = console_io_ptr; 011132 aa 7 00410 3535 20 epp3 pr7|264,* console_io_ptr 011133 aa 7 00404 3515 20 epp1 pr7|260,* oc_data_ptr 011134 aa 1 00022 2535 00 spri3 pr1|18 oc_data.io_ptr STATEMENT 1 ON LINE 1688 console_io.console = oc_data.opc (oc_data.bootload_console_idx).name; 011135 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 011136 aa 5 00002 2351 00 lda pr5|2 oc_data.bootload_console_idx 011137 aa 000022 7350 00 als 18 011140 aa 000066 7330 00 lrs 54 011141 aa 000034 4020 07 mpy 28,dl 011142 aa 6 00100 7561 00 stq pr6|64 011143 aa 000400 2360 07 ldq 256,dl 011144 aa 000003 0760 07 adq 3,dl 011145 aa 000002 7320 00 qrs 2 011146 aa 000012 0760 07 adq 10,dl 011147 aa 6 00101 7561 00 stq pr6|65 011150 aa 000001 0760 07 adq 1,dl 011151 aa 777776 3760 07 anq 262142,dl 011152 aa 000003 7360 00 qls 3 011153 aa 6 00102 7561 00 stq pr6|66 011154 aa 6 00101 2361 00 ldq pr6|65 011155 aa 000042 0760 07 adq 34,dl 011156 aa 000001 0760 07 adq 1,dl 011157 aa 777776 3760 07 anq 262142,dl 011160 aa 6 00101 0761 00 adq pr6|65 011161 aa 000001 0760 07 adq 1,dl 011162 aa 777776 3760 07 anq 262142,dl 011163 aa 000044 7770 00 llr 36 011164 aa 000044 7330 00 lrs 36 011165 aa 6 00102 0331 00 adl pr6|66 011166 aa 000012 0330 07 adl 10,dl 011167 aa 000001 0760 07 adq 1,dl 011170 aa 777776 3760 07 anq 262142,dl 011171 aa 6 00100 0761 00 adq pr6|64 011172 aa 5 77744 2351 06 lda pr5|-28,ql oc_data.name 011173 aa 7 00410 3535 20 epp3 pr7|264,* console_io_ptr 011174 aa 3 00005 7551 00 sta pr3|5 console_io.console STATEMENT 1 ON LINE 1689 end; STATEMENT 1 ON LINE 1691 iom_args.chx = oc_entry.device_idx; 011175 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 011176 aa 5 00005 2361 00 ldq pr5|5 oc_entry.device_idx 011177 aa 7 00130 7561 00 stq pr7|88 iom_args.chx STATEMENT 1 ON LINE 1693 if oc_entry.pcw_io then do; 011200 aa 5 00002 2351 00 lda pr5|2 oc_entry.pcw_io 011201 aa 000400 3150 03 cana 256,du 011202 aa 000007 6000 04 tze 7,ic 011211 STATEMENT 1 ON LINE 1694 iom_args.pcw = oc_entry.dcw_list (oc_entry.dcw_list_idx); 011203 aa 5 00006 7271 00 lxl7 pr5|6 oc_entry.dcw_list_idx 011204 aa 5 00012 2351 17 lda pr5|10,7 oc_entry.dcw_list 011205 aa 7 00132 7551 00 sta pr7|90 iom_args.pcw STATEMENT 1 ON LINE 1695 iom_args.listp = addr (oc_entry.dcw_list (oc_entry.dcw_list_idx + 1)); 011206 aa 5 00013 3535 17 epp3 pr5|11,7 oc_entry.dcw_list 011207 aa 7 00136 2535 00 spri3 pr7|94 iom_args.listp STATEMENT 1 ON LINE 1696 end; 011210 aa 000005 7100 04 tra 5,ic 011215 STATEMENT 1 ON LINE 1698 else do; STATEMENT 1 ON LINE 1699 iom_args.pcw = false; 011211 aa 7 00132 4501 00 stz pr7|90 iom_args.pcw STATEMENT 1 ON LINE 1700 iom_args.listp = addr (oc_entry.dcw_list (oc_entry.dcw_list_idx)); 011212 aa 5 00006 7271 00 lxl7 pr5|6 oc_entry.dcw_list_idx 011213 aa 5 00012 3535 17 epp3 pr5|10,7 oc_entry.dcw_list 011214 aa 7 00136 2535 00 spri3 pr7|94 iom_args.listp STATEMENT 1 ON LINE 1701 end; STATEMENT 1 ON LINE 1703 iom_args.ptp = null; 011215 aa 767003 2370 04 ldaq -4605,ic 000220 = 077777000043 000001000000 011216 aa 7 00134 7571 00 staq pr7|92 iom_args.ptp STATEMENT 1 ON LINE 1705 call io_manager$connect_abs (iom_args); 011217 aa 7 00130 3521 00 epp2 pr7|88 iom_args 011220 aa 6 00106 2521 00 spri2 pr6|70 011221 aa 6 00104 6211 00 eax1 pr6|68 011222 aa 004000 4310 07 fld 2048,dl 011223 aa 6 00044 3701 20 epp4 pr6|36,* 011224 la 4 00116 3521 20 epp2 pr4|78,* io_manager$connect_abs 011225 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1707 return; 011226 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1709 end initiate_io; END PROCEDURE initiate_io BEGIN PROCEDURE lock_oc_data ENTRY TO lock_oc_data STATEMENT 1 ON LINE 1711 lock_oc_data: proc (); 011227 aa 6 00552 6501 00 spri4 pr6|362 STATEMENT 1 ON LINE 1724 oc_data_ptr = addr (oc_data$); 011230 aa 6 00044 3701 20 epp4 pr6|36,* 011231 la 4 00124 3735 20 epp7 pr4|84,* oc_data$ 011232 aa 6 00404 6535 00 spri7 pr6|260 oc_data_ptr STATEMENT 1 ON LINE 1726 if oc_data.lock = pds$process_id then do; 011233 aa 7 00000 2351 00 lda pr7|0 oc_data.lock 011234 la 4 00100 1151 20 cmpa pr4|64,* pds$process_id 011235 aa 000034 6010 04 tnz 28,ic 011271 STATEMENT 1 ON LINE 1727 call report_error (PANIC, "lock_oc_data", "Mylock error."); 011236 aa 766767 2350 04 lda -4617,ic 000225 = 154157143153 011237 aa 766767 2360 04 ldq -4617,ic 000226 = 137157143137 011240 aa 6 01066 7571 00 staq pr6|566 011241 aa 766766 2350 04 lda -4618,ic 000227 = 144141164141 011242 aa 6 01070 7551 00 sta pr6|568 011243 aa 767022 2350 04 lda -4590,ic 000265 = 115171154157 011244 aa 767022 2360 04 ldq -4590,ic 000266 = 143153040145 011245 aa 6 01072 7571 00 staq pr6|570 011246 aa 767021 2350 04 lda -4591,ic 000267 = 162162157162 011247 aa 056000 2360 03 ldq 23552,du 011250 aa 6 01074 7571 00 staq pr6|572 011251 aa 766700 3520 04 epp2 -4672,ic 000151 = 000000000006 011252 aa 6 01100 2521 00 spri2 pr6|576 011253 aa 6 01066 3521 00 epp2 pr6|566 011254 aa 6 01102 2521 00 spri2 pr6|578 011255 aa 6 01072 3521 00 epp2 pr6|570 011256 aa 6 01104 2521 00 spri2 pr6|580 011257 aa 766713 3520 04 epp2 -4661,ic 000172 = 404000000021 011260 aa 6 01110 2521 00 spri2 pr6|584 011261 aa 766632 3520 04 epp2 -4710,ic 000113 = 524000000014 011262 aa 6 01112 2521 00 spri2 pr6|586 011263 aa 766631 3520 04 epp2 -4711,ic 000114 = 524000000015 011264 aa 6 01114 2521 00 spri2 pr6|588 011265 aa 6 01076 6211 00 eax1 pr6|574 011266 aa 014000 4310 07 fld 6144,dl 011267 aa 003745 3520 04 epp2 2021,ic 015234 = 000400627000 011270 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1728 end; STATEMENT 1 ON LINE 1730 call wire_and_mask; 011271 aa 6 00056 6211 00 eax1 pr6|46 011272 aa 000000 4310 07 fld 0,dl 011273 aa 006232 3520 04 epp2 3226,ic 017525 = 000120627000 011274 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1732 time_lock_expires = clock () + oc_data.max_computed_io_time; 011275 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 011276 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 011277 aa 7 00032 0771 00 adaq pr7|26 oc_data.max_computed_io_time 011300 aa 6 00360 7571 00 staq pr6|240 time_lock_expires STATEMENT 1 ON LINE 1734 do while (clock () < time_lock_expires); 011301 aa 000000 0110 03 nop 0,du 011302 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 011303 aa 6 00360 1171 00 cmpaq pr6|240 time_lock_expires 011304 aa 000012 6050 04 tpl 10,ic 011316 STATEMENT 1 ON LINE 1735 if stac (addr (oc_data.lock), pds$process_id) then return; 011305 aa 6 00404 3735 20 epp7 pr6|260,* oc_data.lock 011306 aa 6 01116 6535 00 spri7 pr6|590 011307 aa 6 00044 3701 20 epp4 pr6|36,* 011310 la 4 00100 2351 20 lda pr4|64,* pds$process_id 011311 aa 7 00000 3521 00 epp2 pr7|0 011312 aa 0 00663 7001 00 tsx0 pr0|435 stac_mac 011313 aa 777767 6000 04 tze -9,ic 011302 011314 aa 6 00552 6101 00 rtcd pr6|362 STATEMENT 1 ON LINE 1736 end; 011315 aa 777765 7100 04 tra -11,ic 011302 STATEMENT 1 ON LINE 1738 call report_error (PANIC, "lock_oc_data", "Lock wait timer expired."); 011316 aa 766707 2350 04 lda -4665,ic 000225 = 154157143153 011317 aa 766707 2360 04 ldq -4665,ic 000226 = 137157143137 011320 aa 6 01066 7571 00 staq pr6|566 011321 aa 766706 2350 04 lda -4666,ic 000227 = 144141164141 011322 aa 6 01070 7551 00 sta pr6|568 011323 aa 000 100 100 404 mlr (ic),(pr),fill(000) 011324 aa 767010 00 0030 desc9a -4600,24 000333 = 114157143153 011325 aa 6 01076 00 0030 desc9a pr6|574,24 011326 aa 766623 3520 04 epp2 -4717,ic 000151 = 000000000006 011327 aa 6 01122 2521 00 spri2 pr6|594 011330 aa 6 01066 3521 00 epp2 pr6|566 011331 aa 6 01124 2521 00 spri2 pr6|596 011332 aa 6 01076 3521 00 epp2 pr6|574 011333 aa 6 01126 2521 00 spri2 pr6|598 011334 aa 766636 3520 04 epp2 -4706,ic 000172 = 404000000021 011335 aa 6 01132 2521 00 spri2 pr6|602 011336 aa 766555 3520 04 epp2 -4755,ic 000113 = 524000000014 011337 aa 6 01134 2521 00 spri2 pr6|604 011340 aa 766515 3520 04 epp2 -4787,ic 000055 = 524000000030 011341 aa 6 01136 2521 00 spri2 pr6|606 011342 aa 6 01120 6211 00 eax1 pr6|592 011343 aa 014000 4310 07 fld 6144,dl 011344 aa 003670 3520 04 epp2 1976,ic 015234 = 000400627000 011345 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1740 end lock_oc_data; 011346 aa 6 00552 6101 00 rtcd pr6|362 END PROCEDURE lock_oc_data BEGIN PROCEDURE lock_unlock_mca ENTRY TO lock_unlock_mca STATEMENT 1 ON LINE 1742 lock_unlock_mca: proc (); 011347 aa 6 00560 6501 00 spri4 pr6|368 STATEMENT 1 ON LINE 1756 bootload_console_name = oc_entry.name; 011350 aa 6 00406 2351 20 lda pr6|262,* oc_entry.name 011351 aa 6 00177 7551 00 sta pr6|127 bootload_console_name STATEMENT 1 ON LINE 1757 save_status_ptr = oc_data.status_ptr; 011352 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 011353 aa 7 00020 3735 20 epp7 pr7|16,* oc_data.status_ptr 011354 aa 6 00110 6535 00 spri7 pr6|72 save_status_ptr STATEMENT 1 ON LINE 1758 ad_code = 0; 011355 aa 6 00175 4501 00 stz pr6|125 ad_code STATEMENT 1 ON LINE 1759 mca_lock_unlock_success = false; 011356 aa 6 00123 4501 00 stz pr6|83 mca_lock_unlock_success STATEMENT 1 ON LINE 1761 do while (oc_entry.io_in_progress); 011357 aa 000000 0110 03 nop 0,du 011360 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 011361 aa 7 00002 2351 00 lda pr7|2 oc_entry.io_in_progress 011362 aa 000200 3150 03 cana 128,du 011363 aa 000006 6000 04 tze 6,ic 011371 STATEMENT 1 ON LINE 1762 call process_io_status (); 011364 aa 6 00056 6211 00 eax1 pr6|46 011365 aa 000000 4310 07 fld 0,dl 011366 aa 002723 3520 04 epp2 1491,ic 014311 = 000520627000 011367 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1763 end; 011370 aa 777770 7100 04 tra -8,ic 011360 STATEMENT 1 ON LINE 1765 do idx = 1 to oc_data.console_cnt; 011371 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 011372 aa 5 00002 2351 00 lda pr5|2 oc_data.console_cnt 011373 aa 000066 7330 00 lrs 54 011374 aa 6 00566 7561 00 stq pr6|374 011375 aa 000001 2360 07 ldq 1,dl 011376 aa 6 00272 7561 00 stq pr6|186 idx 011377 aa 000000 0110 03 nop 0,du 011400 aa 6 00272 2361 00 ldq pr6|186 idx 011401 aa 6 00566 1161 00 cmpq pr6|374 011402 aa 000534 6054 04 tpnz 348,ic 012136 STATEMENT 1 ON LINE 1766 if oc_data.opc (idx).imu & /* is console on an IMU */ ^oc_data.opc (idx).inop_device & /* and not broken */ ^oc_data.opc (idx).no_device & /* and not off */ ^oc_data.opc (idx).io_device then do; 011403 aa 000034 4020 07 mpy 28,dl 011404 aa 000044 4020 07 mpy 36,dl 011405 aa 6 01140 7561 00 stq pr6|608 011406 aa 000400 2360 07 ldq 256,dl 011407 aa 000003 0760 07 adq 3,dl 011410 aa 000002 7320 00 qrs 2 011411 aa 000012 0760 07 adq 10,dl 011412 aa 6 01141 7561 00 stq pr6|609 011413 aa 000001 0760 07 adq 1,dl 011414 aa 777776 3760 07 anq 262142,dl 011415 aa 000003 7360 00 qls 3 011416 aa 6 01142 7561 00 stq pr6|610 011417 aa 6 01141 2361 00 ldq pr6|609 011420 aa 000042 0760 07 adq 34,dl 011421 aa 000001 0760 07 adq 1,dl 011422 aa 777776 3760 07 anq 262142,dl 011423 aa 6 01141 0761 00 adq pr6|609 011424 aa 000001 0760 07 adq 1,dl 011425 aa 777776 3760 07 anq 262142,dl 011426 aa 000044 7770 00 llr 36 011427 aa 000044 7330 00 lrs 36 011430 aa 6 01142 0331 00 adl pr6|610 011431 aa 000012 0330 07 adl 10,dl 011432 aa 000001 0760 07 adq 1,dl 011433 aa 777776 3760 07 anq 262142,dl 011434 aa 6 01142 7561 00 stq pr6|610 011435 aa 000002 0760 07 adq 2,dl 011436 aa 000044 4020 07 mpy 36,dl 011437 aa 6 01141 7561 00 stq pr6|609 011440 aa 000020 0760 07 adq 16,dl 011441 aa 6 01140 0761 00 adq pr6|608 011442 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 011443 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 011444 aa 7 77744 00 0001 descb pr7|-28,1 oc_data.imu 011445 aa 000000 00 0000 descb 0,0 011446 aa 000466 6000 04 tze 310,ic 012134 011447 aa 6 01141 2361 00 ldq pr6|609 011450 aa 000004 0760 07 adq 4,dl 011451 aa 6 01140 0761 00 adq pr6|608 011452 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 011453 aa 7 77744 00 0001 descb pr7|-28,1 oc_data.inop_device 011454 aa 000000 00 0000 descb 0,0 011455 aa 000457 6010 04 tnz 303,ic 012134 011456 aa 6 01141 2361 00 ldq pr6|609 011457 aa 000006 0760 07 adq 6,dl 011460 aa 6 01140 0761 00 adq pr6|608 011461 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 011462 aa 7 77744 00 0001 descb pr7|-28,1 oc_data.no_device 011463 aa 000000 00 0000 descb 0,0 011464 aa 000450 6010 04 tnz 296,ic 012134 011465 aa 6 01141 2361 00 ldq pr6|609 011466 aa 000005 0760 07 adq 5,dl 011467 aa 6 01140 0761 00 adq pr6|608 011470 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 011471 aa 7 77744 00 0001 descb pr7|-28,1 oc_data.io_device 011472 aa 000000 00 0000 descb 0,0 011473 aa 000441 6010 04 tnz 289,ic 012134 STATEMENT 1 ON LINE 1770 oc_entry_ptr = addr (oc_data.opc (idx)); 011474 aa 6 00272 2361 00 ldq pr6|186 idx 011475 aa 000034 4020 07 mpy 28,dl 011476 aa 6 01142 0761 00 adq pr6|610 011477 aa 7 77744 3715 06 epp5 pr7|-28,ql oc_data.opc 011500 aa 6 00406 6515 00 spri5 pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 1771 must_unassign = false; 011501 aa 6 00124 4501 00 stz pr6|84 must_unassign STATEMENT 1 ON LINE 1772 if ^oc_entry.assigned then do; 011502 aa 5 00002 2351 00 lda pr5|2 oc_entry.assigned 011503 aa 200000 3150 03 cana 65536,du 011504 aa 000045 6010 04 tnz 37,ic 011551 STATEMENT 1 ON LINE 1773 call io_manager$assign (oc_entry.device_idx, oc_entry.channel, ocdcm_$interrupt_handler, (0), oc_data.status_ptr, err_code); 011505 aa 6 00044 3701 20 epp4 pr6|36,* 011506 la 4 00032 3521 20 epp2 pr4|26,* ocdcm_$interrupt_handler 011507 aa 6 01144 2521 00 spri2 pr6|612 cp.1101 011510 aa 006102 2370 04 ldaq 3138,ic 017612 = 077777000043 000001000000 011511 aa 6 01146 7571 00 staq pr6|614 cp.1101 011512 aa 6 01143 4501 00 stz pr6|611 011513 aa 5 00005 3521 00 epp2 pr5|5 oc_entry.device_idx 011514 aa 6 01152 2521 00 spri2 pr6|618 011515 aa 5 00003 3521 00 epp2 pr5|3 oc_entry.channel 011516 aa 6 01154 2521 00 spri2 pr6|620 011517 aa 6 01144 3521 00 epp2 pr6|612 cp.1101 011520 aa 6 01156 2521 00 spri2 pr6|622 011521 aa 6 01143 3521 00 epp2 pr6|611 011522 aa 6 01160 2521 00 spri2 pr6|624 011523 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 011524 aa 7 00020 3521 00 epp2 pr7|16 oc_data.status_ptr 011525 aa 6 01162 2521 00 spri2 pr6|626 011526 aa 6 00244 3521 00 epp2 pr6|164 err_code 011527 aa 6 01164 2521 00 spri2 pr6|628 011530 aa 6 01150 6211 00 eax1 pr6|616 011531 aa 030000 4310 07 fld 12288,dl 011532 la 4 00112 3521 20 epp2 pr4|74,* io_manager$assign 011533 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1775 if err_code ^= 0 then do; 011534 aa 6 00244 2361 00 ldq pr6|164 err_code 011535 aa 000004 6000 04 tze 4,ic 011541 STATEMENT 1 ON LINE 1776 ad_code, code = err_code; 011536 aa 6 00175 7561 00 stq pr6|125 ad_code 011537 aa 6 00414 7561 20 stq pr6|268,* code STATEMENT 1 ON LINE 1777 goto locate_bootload; 011540 aa 000376 7100 04 tra 254,ic 012136 STATEMENT 1 ON LINE 1778 end; STATEMENT 1 ON LINE 1779 oc_entry.assigned = true; 011541 aa 200000 2350 03 lda 65536,du 011542 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 011543 aa 7 00002 2551 00 orsa pr7|2 oc_entry.assigned STATEMENT 1 ON LINE 1780 oc_entry.io_in_progress = false; 011544 aa 006076 2350 04 lda 3134,ic 017642 = 777577777777 011545 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 1781 must_unassign = true; 011546 aa 400000 2350 03 lda 131072,du 011547 aa 6 00124 7551 00 sta pr6|84 must_unassign STATEMENT 1 ON LINE 1782 end; 011550 aa 000004 7100 04 tra 4,ic 011554 STATEMENT 1 ON LINE 1783 else oc_data.status_ptr = save_status_ptr; 011551 aa 6 00110 3735 20 epp7 pr6|72,* save_status_ptr 011552 aa 6 00404 3535 20 epp3 pr6|260,* oc_data_ptr 011553 aa 3 00020 6535 00 spri7 pr3|16 oc_data.status_ptr STATEMENT 1 ON LINE 1785 if reconfig_option = LOCK_MCA_INPUT then do; 011554 aa 6 00356 2361 00 ldq pr6|238 reconfig_option 011555 aa 000014 1160 07 cmpq 12,dl 011556 aa 000017 6010 04 tnz 15,ic 011575 STATEMENT 1 ON LINE 1786 oc_entry.dcw_list_idx = LOCK_MCA_DCW; 011557 aa 000017 2350 07 lda 15,dl 011560 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 011561 aa 7 00006 5511 14 stba pr7|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 1787 call log_console_event (LOCK_MCA_IO, null); 011562 aa 766436 3714 24 epp5 -4834,ic* 011563 aa 6 01166 6515 00 spri5 pr6|630 011564 aa 766366 3520 04 epp2 -4874,ic 000152 = 000000000042 011565 aa 6 01152 2521 00 spri2 pr6|618 011566 aa 6 01166 3521 00 epp2 pr6|630 011567 aa 6 01154 2521 00 spri2 pr6|620 011570 aa 6 01150 6211 00 eax1 pr6|616 011571 aa 010000 4310 07 fld 4096,dl 011572 aa 001204 3520 04 epp2 644,ic 012776 = 000120627000 011573 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1788 end; 011574 aa 000027 7100 04 tra 23,ic 011623 STATEMENT 1 ON LINE 1789 else do; STATEMENT 1 ON LINE 1790 idcwp = addr (oc_entry.dcw_list (UNLOCK_MCA_DCW)); 011575 aa 000020 7270 07 lxl7 16,dl 011576 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 011577 aa 7 00012 3735 17 epp7 pr7|10,7 oc_entry.dcw_list 011600 aa 6 00402 6535 00 spri7 pr6|258 idcwp STATEMENT 1 ON LINE 1791 idcw.count = bit (binary (mca_to_unlock, 6)); 011601 aa 6 00276 2351 00 lda pr6|190 mca_to_unlock 011602 aa 000002 6050 04 tpl 2,ic 011604 011603 aa 000000 5310 00 neg 0 011604 aa 0 00314 3771 00 anaq pr0|204 = 000000000077 777777777777 011605 aa 7 00000 7511 01 stca pr7|0,01 idcw.count STATEMENT 1 ON LINE 1792 oc_entry.dcw_list_idx = UNLOCK_MCA_DCW; 011606 aa 000020 2350 07 lda 16,dl 011607 aa 6 00406 3715 20 epp5 pr6|262,* oc_entry_ptr 011610 aa 5 00006 5511 14 stba pr5|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 1793 call log_console_event (UNLOCK_MCA_IO, null); 011611 aa 766407 3534 24 epp3 -4857,ic* 011612 aa 6 01166 2535 00 spri3 pr6|630 011613 aa 766207 3520 04 epp2 -4985,ic 000022 = 000000000043 011614 aa 6 01152 2521 00 spri2 pr6|618 011615 aa 6 01166 3521 00 epp2 pr6|630 011616 aa 6 01154 2521 00 spri2 pr6|620 011617 aa 6 01150 6211 00 eax1 pr6|616 011620 aa 010000 4310 07 fld 4096,dl 011621 aa 001155 3520 04 epp2 621,ic 012776 = 000120627000 011622 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1794 end; STATEMENT 1 ON LINE 1795 call initiate_io (); 011623 aa 6 00056 6211 00 eax1 pr6|46 011624 aa 000000 4310 07 fld 0,dl 011625 aa 777254 3520 04 epp2 -340,ic 011101 = 000120627000 011626 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1797 do while (oc_entry.io_in_progress); 011627 aa 000000 0110 03 nop 0,du 011630 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 011631 aa 7 00002 2351 00 lda pr7|2 oc_entry.io_in_progress 011632 aa 000200 3150 03 cana 128,du 011633 aa 000132 6000 04 tze 90,ic 011765 STATEMENT 1 ON LINE 1798 call process_io_status (); 011634 aa 6 00056 6211 00 eax1 pr6|46 011635 aa 000000 4310 07 fld 0,dl 011636 aa 002453 3520 04 epp2 1323,ic 014311 = 000520627000 011637 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1799 if console_io_timeout then do; 011640 aa 6 00125 2351 00 lda pr6|85 console_io_timeout 011641 aa 400000 3150 03 cana 131072,du 011642 aa 000065 6000 04 tze 53,ic 011727 STATEMENT 1 ON LINE 1800 ad_code = error_table_$timeout; 011643 aa 6 00044 3701 20 epp4 pr6|36,* 011644 la 4 00072 2361 20 ldq pr4|58,* error_table_$timeout 011645 aa 6 00175 7561 00 stq pr6|125 ad_code STATEMENT 1 ON LINE 1801 call report_error (JUST_LOG, entrypoint, "Timeout executing MCA^[(^2.3b)^;^s^] ^[LOCK^;UNLOCK^] on ^a for ^a.", (reconfig_option = UNLOCK_MCA_INPUT), bit (binary (mca_to_unlock, 6)), (reconfig_option = LOCK_MCA_INPUT), oc_entry.name, pds$process_group_id); 011646 aa 000 100 100 404 mlr (ic),(pr),fill(000) 011647 aa 767141 00 0104 desc9a -4511,68 001007 = 124151155145 011650 aa 6 01170 00 0104 desc9a pr6|632,68 011651 aa 6 00356 2361 00 ldq pr6|238 reconfig_option 011652 aa 000015 1160 07 cmpq 13,dl 011653 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 011654 aa 6 01143 7551 00 sta pr6|611 011655 aa 6 00276 2351 00 lda pr6|190 mca_to_unlock 011656 aa 000002 6050 04 tpl 2,ic 011660 011657 aa 000000 5310 00 neg 0 011660 aa 000036 7350 00 als 30 011661 aa 6 01142 7551 00 sta pr6|610 011662 aa 000014 1160 07 cmpq 12,dl 011663 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 011664 aa 6 01140 7551 00 sta pr6|608 011665 aa 766303 3520 04 epp2 -4925,ic 000170 = 000000000005 011666 aa 6 01214 2521 00 spri2 pr6|652 011667 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 011670 aa 6 01216 2521 00 spri2 pr6|654 011671 aa 6 01170 3521 00 epp2 pr6|632 011672 aa 6 01220 2521 00 spri2 pr6|656 011673 aa 6 01143 3521 00 epp2 pr6|611 011674 aa 6 01222 2521 00 spri2 pr6|658 011675 aa 6 01142 3521 00 epp2 pr6|610 011676 aa 6 01224 2521 00 spri2 pr6|660 011677 aa 6 01140 3521 00 epp2 pr6|608 011700 aa 6 01226 2521 00 spri2 pr6|662 011701 aa 6 00406 3521 20 epp2 pr6|262,* oc_entry.name 011702 aa 6 01230 2521 00 spri2 pr6|664 011703 la 4 00102 3521 20 epp2 pr4|66,* pds$process_group_id 011704 aa 6 01232 2521 00 spri2 pr6|666 011705 aa 766265 3520 04 epp2 -4939,ic 000172 = 404000000021 011706 aa 6 01236 2521 00 spri2 pr6|670 011707 aa 766227 3520 04 epp2 -4969,ic 000136 = 526000000040 011710 aa 6 01240 2521 00 spri2 pr6|672 011711 aa 6 01254 2521 00 spri2 pr6|684 011712 aa 766142 3520 04 epp2 -5022,ic 000054 = 524000000103 011713 aa 6 01242 2521 00 spri2 pr6|674 011714 aa 766137 3520 04 epp2 -5025,ic 000053 = 514000000001 011715 aa 6 01244 2521 00 spri2 pr6|676 011716 aa 6 01250 2521 00 spri2 pr6|680 011717 aa 766133 3520 04 epp2 -5029,ic 000052 = 514000000006 011720 aa 6 01246 2521 00 spri2 pr6|678 011721 aa 766255 3520 04 epp2 -4947,ic 000176 = 524000000004 011722 aa 6 01252 2521 00 spri2 pr6|682 011723 aa 6 01212 6211 00 eax1 pr6|650 011724 aa 040000 4310 07 fld 16384,dl 011725 aa 003307 3520 04 epp2 1735,ic 015234 = 000400627000 011726 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1804 end; STATEMENT 1 ON LINE 1805 oc_entry_ptr = addr (oc_data.opc (idx)); 011727 aa 6 00272 2361 00 ldq pr6|186 idx 011730 aa 000034 4020 07 mpy 28,dl 011731 aa 6 01140 7561 00 stq pr6|608 011732 aa 000400 2360 07 ldq 256,dl 011733 aa 000003 0760 07 adq 3,dl 011734 aa 000002 7320 00 qrs 2 011735 aa 000012 0760 07 adq 10,dl 011736 aa 6 01142 7561 00 stq pr6|610 011737 aa 000001 0760 07 adq 1,dl 011740 aa 777776 3760 07 anq 262142,dl 011741 aa 000003 7360 00 qls 3 011742 aa 6 01143 7561 00 stq pr6|611 011743 aa 6 01142 2361 00 ldq pr6|610 011744 aa 000042 0760 07 adq 34,dl 011745 aa 000001 0760 07 adq 1,dl 011746 aa 777776 3760 07 anq 262142,dl 011747 aa 6 01142 0761 00 adq pr6|610 011750 aa 000001 0760 07 adq 1,dl 011751 aa 777776 3760 07 anq 262142,dl 011752 aa 000044 7770 00 llr 36 011753 aa 000044 7330 00 lrs 36 011754 aa 6 01143 0331 00 adl pr6|611 011755 aa 000012 0330 07 adl 10,dl 011756 aa 000001 0760 07 adq 1,dl 011757 aa 777776 3760 07 anq 262142,dl 011760 aa 6 01140 0761 00 adq pr6|608 011761 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 011762 aa 7 77744 3735 06 epp7 pr7|-28,ql oc_data.opc 011763 aa 6 00406 6535 00 spri7 pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 1806 end; 011764 aa 777644 7100 04 tra -92,ic 011630 STATEMENT 1 ON LINE 1808 if oc_entry.status_word = "400002000000"b3 then do; 011765 aa 7 00012 2351 00 lda pr7|10 oc_entry.status_word 011766 aa 400002 1150 03 cmpa 131074,du 011767 aa 000122 6010 04 tnz 82,ic 012111 STATEMENT 1 ON LINE 1809 call report_error (JUST_LOG, entrypoint, "MCA^[(^2.3b)^;^s^] input through ^a, ^[dis^;en^]abled by ^a.", (reconfig_option = UNLOCK_MCA_INPUT), bit (binary (mca_to_unlock, 6)), oc_entry.name, (reconfig_option = LOCK_MCA_INPUT), pds$process_group_id); 011770 aa 000 100 100 404 mlr (ic),(pr),fill(000) 011771 aa 766760 00 0074 desc9a -4624,60 000750 = 115103101136 011772 aa 6 01170 00 0074 desc9a pr6|632,60 011773 aa 6 00356 2361 00 ldq pr6|238 reconfig_option 011774 aa 000015 1160 07 cmpq 13,dl 011775 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 011776 aa 6 01140 7551 00 sta pr6|608 011777 aa 6 00276 2351 00 lda pr6|190 mca_to_unlock 012000 aa 000002 6050 04 tpl 2,ic 012002 012001 aa 000000 5310 00 neg 0 012002 aa 000036 7350 00 als 30 012003 aa 6 01143 7551 00 sta pr6|611 012004 aa 000014 1160 07 cmpq 12,dl 012005 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 012006 aa 6 01142 7551 00 sta pr6|610 012007 aa 766161 3520 04 epp2 -5007,ic 000170 = 000000000005 012010 aa 6 01214 2521 00 spri2 pr6|652 012011 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 012012 aa 6 01216 2521 00 spri2 pr6|654 012013 aa 6 01170 3521 00 epp2 pr6|632 012014 aa 6 01220 2521 00 spri2 pr6|656 012015 aa 6 01140 3521 00 epp2 pr6|608 012016 aa 6 01222 2521 00 spri2 pr6|658 012017 aa 6 01143 3521 00 epp2 pr6|611 012020 aa 6 01224 2521 00 spri2 pr6|660 012021 aa 7 00000 3521 00 epp2 pr7|0 oc_entry.name 012022 aa 6 01226 2521 00 spri2 pr6|662 012023 aa 6 01142 3521 00 epp2 pr6|610 012024 aa 6 01230 2521 00 spri2 pr6|664 012025 aa 6 00044 3701 20 epp4 pr6|36,* 012026 la 4 00102 3521 20 epp2 pr4|66,* pds$process_group_id 012027 aa 6 01232 2521 00 spri2 pr6|666 012030 aa 766142 3520 04 epp2 -5022,ic 000172 = 404000000021 012031 aa 6 01236 2521 00 spri2 pr6|670 012032 aa 766104 3520 04 epp2 -5052,ic 000136 = 526000000040 012033 aa 6 01240 2521 00 spri2 pr6|672 012034 aa 6 01254 2521 00 spri2 pr6|684 012035 aa 766014 3520 04 epp2 -5108,ic 000051 = 524000000074 012036 aa 6 01242 2521 00 spri2 pr6|674 012037 aa 766014 3520 04 epp2 -5108,ic 000053 = 514000000001 012040 aa 6 01244 2521 00 spri2 pr6|676 012041 aa 6 01252 2521 00 spri2 pr6|682 012042 aa 766010 3520 04 epp2 -5112,ic 000052 = 514000000006 012043 aa 6 01246 2521 00 spri2 pr6|678 012044 aa 766132 3520 04 epp2 -5030,ic 000176 = 524000000004 012045 aa 6 01250 2521 00 spri2 pr6|680 012046 aa 6 01212 6211 00 eax1 pr6|650 012047 aa 040000 4310 07 fld 16384,dl 012050 aa 003164 3520 04 epp2 1652,ic 015234 = 000400627000 012051 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 1812 oc_entry_ptr = addr (oc_data.opc (idx)); 012052 aa 6 00272 2361 00 ldq pr6|186 idx 012053 aa 000034 4020 07 mpy 28,dl 012054 aa 6 01142 7561 00 stq pr6|610 012055 aa 000400 2360 07 ldq 256,dl 012056 aa 000003 0760 07 adq 3,dl 012057 aa 000002 7320 00 qrs 2 012060 aa 000012 0760 07 adq 10,dl 012061 aa 6 01143 7561 00 stq pr6|611 012062 aa 000001 0760 07 adq 1,dl 012063 aa 777776 3760 07 anq 262142,dl 012064 aa 000003 7360 00 qls 3 012065 aa 6 01140 7561 00 stq pr6|608 012066 aa 6 01143 2361 00 ldq pr6|611 012067 aa 000042 0760 07 adq 34,dl 012070 aa 000001 0760 07 adq 1,dl 012071 aa 777776 3760 07 anq 262142,dl 012072 aa 6 01143 0761 00 adq pr6|611 012073 aa 000001 0760 07 adq 1,dl 012074 aa 777776 3760 07 anq 262142,dl 012075 aa 000044 7770 00 llr 36 012076 aa 000044 7330 00 lrs 36 012077 aa 6 01140 0331 00 adl pr6|608 012100 aa 000012 0330 07 adl 10,dl 012101 aa 000001 0760 07 adq 1,dl 012102 aa 777776 3760 07 anq 262142,dl 012103 aa 6 01142 0761 00 adq pr6|610 012104 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 012105 aa 7 77744 3735 06 epp7 pr7|-28,ql oc_data.opc 012106 aa 6 00406 6535 00 spri7 pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 1813 mca_lock_unlock_success = true; 012107 aa 400000 2350 03 lda 131072,du 012110 aa 6 00123 7551 00 sta pr6|83 mca_lock_unlock_success STATEMENT 1 ON LINE 1814 end; STATEMENT 1 ON LINE 1816 if must_unassign then do; 012111 aa 6 00124 2351 00 lda pr6|84 must_unassign 012112 aa 000022 6000 04 tze 18,ic 012134 STATEMENT 1 ON LINE 1817 call io_manager$unassign (oc_entry.device_idx, (0)); 012113 aa 6 01142 4501 00 stz pr6|610 012114 aa 7 00005 3521 00 epp2 pr7|5 oc_entry.device_idx 012115 aa 6 01152 2521 00 spri2 pr6|618 012116 aa 6 01142 3521 00 epp2 pr6|610 012117 aa 6 01154 2521 00 spri2 pr6|620 012120 aa 6 01150 6211 00 eax1 pr6|616 012121 aa 010000 4310 07 fld 4096,dl 012122 aa 6 00044 3701 20 epp4 pr6|36,* 012123 la 4 00114 3521 20 epp2 pr4|76,* io_manager$unassign 012124 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1818 oc_entry.assigned = false; 012125 aa 005520 2350 04 lda 2896,ic 017645 = 577777777777 012126 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 012127 aa 7 00002 3551 00 ansa pr7|2 oc_entry.assigned STATEMENT 1 ON LINE 1819 oc_entry.io_in_progress = false; 012130 aa 005512 2350 04 lda 2890,ic 017642 = 777577777777 012131 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 1820 oc_entry_ptr = null; 012132 aa 766066 2370 04 ldaq -5066,ic 000220 = 077777000043 000001000000 012133 aa 6 00406 7571 00 staq pr6|262 oc_entry_ptr STATEMENT 1 ON LINE 1821 end; STATEMENT 1 ON LINE 1822 end; STATEMENT 1 ON LINE 1823 end; 012134 aa 6 00272 0541 00 aos pr6|186 idx 012135 aa 777243 7100 04 tra -349,ic 011400 STATEMENT 1 ON LINE 1825 locate_bootload: if audit_flag then do; 012136 aa 6 00112 2351 00 lda pr6|74 audit_flag 012137 aa 000173 6000 04 tze 123,ic 012332 STATEMENT 1 ON LINE 1827 if mca_lock_unlock_success then ad_code = 0; 012140 aa 6 00123 2351 00 lda pr6|83 mca_lock_unlock_success 012141 aa 000002 6000 04 tze 2,ic 012143 012142 aa 6 00175 4501 00 stz pr6|125 ad_code STATEMENT 1 ON LINE 1828 audit_eventflags = "0"b; 012143 aa 6 00176 4501 00 stz pr6|126 audit_eventflags STATEMENT 1 ON LINE 1829 addr (audit_eventflags) -> audit_event_flags.priv_op = "1"b; 012144 aa 040000 2350 03 lda 16384,du 012145 aa 6 00176 2551 00 orsa pr6|126 audit_event_flags.priv_op STATEMENT 1 ON LINE 1830 addr (audit_eventflags) -> audit_event_flags.grant = "1"b; 012146 aa 200000 2350 03 lda 65536,du 012147 aa 6 00176 2551 00 orsa pr6|126 audit_event_flags.grant STATEMENT 1 ON LINE 1831 if reconfig_option = LOCK_MCA_INPUT then call access_audit_$log_general ("ocdcm_$reconfigure", level$get (), audit_eventflags, access_operations_$lock_mca, "", ad_code, null (), 0, ""); 012150 aa 6 00356 2361 00 ldq pr6|238 reconfig_option 012151 aa 000014 1160 07 cmpq 12,dl 012152 aa 000066 6010 04 tnz 54,ic 012240 012153 aa 000 100 100 404 mlr (ic),(pr),fill(000) 012154 aa 766126 00 0024 desc9a -5034,20 000301 = 157143144143 012155 aa 6 01150 00 0024 desc9a pr6|616,20 012156 aa 6 01142 3521 00 epp2 pr6|610 012157 aa 6 01146 2521 00 spri2 pr6|614 012160 aa 6 01144 6211 00 eax1 pr6|612 012161 aa 004000 4310 07 fld 2048,dl 012162 aa 6 00044 3701 20 epp4 pr6|36,* 012163 la 4 00030 3521 20 epp2 pr4|24,* level$get 012164 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 012165 aa 766033 3734 24 epp7 -5093,ic* 012166 aa 6 01166 6535 00 spri7 pr6|630 012167 aa 6 01143 4501 00 stz pr6|611 012170 aa 6 01150 3521 00 epp2 pr6|616 012171 aa 6 01260 2521 00 spri2 pr6|688 012172 aa 6 01142 3521 00 epp2 pr6|610 012173 aa 6 01262 2521 00 spri2 pr6|690 012174 aa 6 00176 3521 00 epp2 pr6|126 audit_eventflags 012175 aa 6 01264 2521 00 spri2 pr6|692 012176 aa 6 00044 3701 20 epp4 pr6|36,* 012177 la 4 00074 3521 20 epp2 pr4|60,* access_operations_$lock_mca 012200 aa 6 01266 2521 00 spri2 pr6|694 012201 aa 6 01140 3521 00 epp2 pr6|608 012202 aa 6 01270 2521 00 spri2 pr6|696 012203 aa 6 00175 3521 00 epp2 pr6|125 ad_code 012204 aa 6 01272 2521 00 spri2 pr6|698 012205 aa 6 01166 3521 00 epp2 pr6|630 012206 aa 6 01274 2521 00 spri2 pr6|700 012207 aa 6 01143 3521 00 epp2 pr6|611 012210 aa 6 01276 2521 00 spri2 pr6|702 012211 aa 6 01211 3521 00 epp2 pr6|649 012212 aa 6 01300 2521 00 spri2 pr6|704 012213 aa 765635 3520 04 epp2 -5219,ic 000050 = 524000000022 012214 aa 6 01302 2521 00 spri2 pr6|706 012215 aa 765755 3520 04 epp2 -5139,ic 000172 = 404000000021 012216 aa 6 01304 2521 00 spri2 pr6|708 012217 aa 765630 3520 04 epp2 -5224,ic 000047 = 514000000044 012220 aa 6 01306 2521 00 spri2 pr6|710 012221 aa 6 01310 2521 00 spri2 pr6|712 012222 aa 765667 3520 04 epp2 -5193,ic 000111 = 524000000000 012223 aa 6 01312 2521 00 spri2 pr6|714 012224 aa 6 01322 2521 00 spri2 pr6|722 012225 aa 765740 3520 04 epp2 -5152,ic 000165 = 404000000043 012226 aa 6 01314 2521 00 spri2 pr6|716 012227 aa 765734 3520 04 epp2 -5156,ic 000163 = 464000000000 012230 aa 6 01316 2521 00 spri2 pr6|718 012231 aa 765644 3520 04 epp2 -5212,ic 000075 = 404000000005 012232 aa 6 01320 2521 00 spri2 pr6|720 012233 aa 6 01256 6211 00 eax1 pr6|686 012234 aa 044000 4310 07 fld 18432,dl 012235 la 4 00012 3521 20 epp2 pr4|10,* access_audit_$log_general 012236 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc 012237 aa 000073 7100 04 tra 59,ic 012332 STATEMENT 1 ON LINE 1834 else call access_audit_$log_general ("ocdcm_$reconfigure", level$get (), audit_eventflags, access_operations_$unlock_mca, "", ad_code, null (), 0, "MCA ^d", mca_to_unlock); 012240 aa 000 100 100 404 mlr (ic),(pr),fill(000) 012241 aa 766041 00 0024 desc9a -5087,20 000301 = 157143144143 012242 aa 6 01150 00 0024 desc9a pr6|616,20 012243 aa 6 01211 3521 00 epp2 pr6|649 012244 aa 6 01146 2521 00 spri2 pr6|614 012245 aa 6 01144 6211 00 eax1 pr6|612 012246 aa 004000 4310 07 fld 2048,dl 012247 aa 6 00044 3701 20 epp4 pr6|36,* 012250 la 4 00030 3521 20 epp2 pr4|24,* level$get 012251 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 012252 aa 765746 3734 24 epp7 -5146,ic* 012253 aa 6 01166 6535 00 spri7 pr6|630 012254 aa 6 01140 4501 00 stz pr6|608 012255 aa 765727 2370 04 ldaq -5161,ic 000204 = 115103101040 136144000000 012256 aa 6 01324 7571 00 staq pr6|724 012257 aa 6 01150 3521 00 epp2 pr6|616 012260 aa 6 01330 2521 00 spri2 pr6|728 012261 aa 6 01211 3521 00 epp2 pr6|649 012262 aa 6 01332 2521 00 spri2 pr6|730 012263 aa 6 00176 3521 00 epp2 pr6|126 audit_eventflags 012264 aa 6 01334 2521 00 spri2 pr6|732 012265 aa 6 00044 3701 20 epp4 pr6|36,* 012266 la 4 00076 3521 20 epp2 pr4|62,* access_operations_$unlock_mca 012267 aa 6 01336 2521 00 spri2 pr6|734 012270 aa 6 01143 3521 00 epp2 pr6|611 012271 aa 6 01340 2521 00 spri2 pr6|736 012272 aa 6 00175 3521 00 epp2 pr6|125 ad_code 012273 aa 6 01342 2521 00 spri2 pr6|738 012274 aa 6 01166 3521 00 epp2 pr6|630 012275 aa 6 01344 2521 00 spri2 pr6|740 012276 aa 6 01140 3521 00 epp2 pr6|608 012277 aa 6 01346 2521 00 spri2 pr6|742 012300 aa 6 01324 3521 00 epp2 pr6|724 012301 aa 6 01350 2521 00 spri2 pr6|744 012302 aa 6 00276 3521 00 epp2 pr6|190 mca_to_unlock 012303 aa 6 01352 2521 00 spri2 pr6|746 012304 aa 765544 3520 04 epp2 -5276,ic 000050 = 524000000022 012305 aa 6 01354 2521 00 spri2 pr6|748 012306 aa 765664 3520 04 epp2 -5196,ic 000172 = 404000000021 012307 aa 6 01356 2521 00 spri2 pr6|750 012310 aa 765537 3520 04 epp2 -5281,ic 000047 = 514000000044 012311 aa 6 01360 2521 00 spri2 pr6|752 012312 aa 6 01362 2521 00 spri2 pr6|754 012313 aa 765576 3520 04 epp2 -5250,ic 000111 = 524000000000 012314 aa 6 01364 2521 00 spri2 pr6|756 012315 aa 765650 3520 04 epp2 -5208,ic 000165 = 404000000043 012316 aa 6 01366 2521 00 spri2 pr6|758 012317 aa 6 01376 2521 00 spri2 pr6|766 012320 aa 765643 3520 04 epp2 -5213,ic 000163 = 464000000000 012321 aa 6 01370 2521 00 spri2 pr6|760 012322 aa 765553 3520 04 epp2 -5269,ic 000075 = 404000000005 012323 aa 6 01372 2521 00 spri2 pr6|762 012324 aa 765522 3520 04 epp2 -5294,ic 000046 = 524000000006 012325 aa 6 01374 2521 00 spri2 pr6|764 012326 aa 6 01326 6211 00 eax1 pr6|726 012327 aa 050000 4310 07 fld 20480,dl 012330 la 4 00012 3521 20 epp2 pr4|10,* access_audit_$log_general 012331 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1836 end; STATEMENT 1 ON LINE 1837 oc_entry_ptr = find_oc_entry (bootload_console_name); 012332 aa 6 00177 3521 00 epp2 pr6|127 bootload_console_name 012333 aa 6 01152 2521 00 spri2 pr6|618 012334 aa 6 00406 3521 00 epp2 pr6|262 oc_entry_ptr 012335 aa 6 01154 2521 00 spri2 pr6|620 012336 aa 6 01150 6211 00 eax1 pr6|616 012337 aa 010000 4310 07 fld 4096,dl 012340 aa 776375 3520 04 epp2 -771,ic 010735 = 000140627000 012341 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 1838 oc_data.status_ptr = save_status_ptr; 012342 aa 6 00110 3735 20 epp7 pr6|72,* save_status_ptr 012343 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 012344 aa 5 00020 6535 00 spri7 pr5|16 oc_data.status_ptr STATEMENT 1 ON LINE 1839 return; 012345 aa 6 00560 6101 00 rtcd pr6|368 STATEMENT 1 ON LINE 1840 end lock_unlock_mca; END PROCEDURE lock_unlock_mca BEGIN PROCEDURE log_console_error ENTRY TO log_console_error STATEMENT 1 ON LINE 1842 log_console_error: proc (); 012346 aa 6 00100 6501 00 spri4 pr6|64 STATEMENT 1 ON LINE 1852 call io_manager$get_status (oc_entry.device_idx, addr (oc_status)); 012347 aa 6 00040 3735 20 epp7 pr6|32,* 012350 aa 7 00155 3735 00 epp7 pr7|109 oc_status 012351 aa 6 00136 6535 00 spri7 pr6|94 012352 aa 6 00040 3715 20 epp5 pr6|32,* 012353 aa 5 00406 3535 20 epp3 pr5|262,* oc_entry_ptr 012354 aa 3 00005 3521 00 epp2 pr3|5 oc_entry.device_idx 012355 aa 6 00142 2521 00 spri2 pr6|98 012356 aa 6 00136 3521 00 epp2 pr6|94 012357 aa 6 00144 2521 00 spri2 pr6|100 012360 aa 6 00140 6211 00 eax1 pr6|96 012361 aa 010000 4310 07 fld 4096,dl 012362 aa 6 00044 3701 20 epp4 pr6|36,* 012363 la 4 00120 3521 20 epp2 pr4|80,* io_manager$get_status 012364 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1854 unspec (log_message) = ""b; 012365 aa 6 00040 3735 20 epp7 pr6|32,* 012366 aa 000 100 100 400 mlr (),(pr),fill(000) 012367 aa 000000 00 0000 desc9a 0,0 012370 aa 7 00142 00 0054 desc9a pr7|98,44 STATEMENT 1 ON LINE 1856 log_message.level = "3"b3; 012371 aa 300000 2350 03 lda 98304,du 012372 aa 7 00142 6751 00 era pr7|98 log_message.level 012373 aa 0 00006 3751 00 ana pr0|6 = 700000000000 012374 aa 7 00142 6551 00 ersa pr7|98 log_message.level STATEMENT 1 ON LINE 1857 log_message.channel = oc_entry.channel; 012375 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 012376 aa 5 00003 2351 00 lda pr5|3 oc_entry.channel 012377 aa 5 00004 2361 00 ldq pr5|4 oc_entry.channel 012400 aa 7 00143 7551 00 sta pr7|99 log_message.channel 012401 aa 7 00144 7561 00 stq pr7|100 log_message.channel STATEMENT 1 ON LINE 1858 log_message.device = "00"b; 012402 aa 005204 2350 04 lda 2692,ic 017606 = 777700777777 012403 aa 7 00142 3551 00 ansa pr7|98 log_message.device STATEMENT 1 ON LINE 1859 log_message.time_out = console_io_timeout; 012404 aa 7 00125 2351 00 lda pr7|85 console_io_timeout 012405 aa 000022 7710 00 arl 18 012406 aa 7 00142 6751 00 era pr7|98 log_message.time_out 012407 aa 400000 3750 07 ana 131072,dl 012410 aa 7 00142 6551 00 ersa pr7|98 log_message.time_out STATEMENT 1 ON LINE 1860 log_message.type = oc_status.action_code; 012411 aa 7 00160 2351 00 lda pr7|112 oc_status.action_code 012412 aa 000003 7350 00 als 3 012413 aa 7 00142 6751 00 era pr7|98 log_message.type 012414 aa 300000 3750 07 ana 98304,dl 012415 aa 7 00142 6551 00 ersa pr7|98 log_message.type STATEMENT 1 ON LINE 1861 log_message.command = addr (oc_entry.dcw_list (oc_entry.dcw_list_idx)) -> idcw.command; 012416 aa 5 00006 7271 00 lxl7 pr5|6 oc_entry.dcw_list_idx 012417 aa 5 00012 2351 17 lda pr5|10,7 idcw.command 012420 aa 000025 7710 00 arl 21 012421 aa 7 00142 6751 00 era pr7|98 log_message.command 012422 aa 077000 3750 07 ana 32256,dl 012423 aa 7 00142 6551 00 ersa pr7|98 log_message.command STATEMENT 1 ON LINE 1862 log_message.status = oc_entry.status_word; 012424 aa 5 00012 2351 00 lda pr5|10 oc_entry.status_word 012425 aa 7 00145 7551 00 sta pr7|101 log_message.status STATEMENT 1 ON LINE 1863 log_message.devname = oc_entry.name; 012426 aa 5 00000 2351 00 lda pr5|0 oc_entry.name 012427 aa 7 00146 7551 00 sta pr7|102 log_message.devname STATEMENT 1 ON LINE 1865 call ioa_$rsnnl ("^[in_service^1x^]^[crash_on_crf^1x^]^[mc_io_enabled^1x^]^[list_consoles^1x^]^[printer_on^1x^]^[write_q_full^]", oc_data_flags, 0, oc_data.in_service, oc_data.crash_on_crf, oc_data.mc_io_enabled, oc_data.list_consoles, oc_data.printer_on, oc_data.write_q_full); 012430 aa 000 100 100 404 mlr (ic),(pr),fill(000) 012431 aa 766464 00 0160 desc9a -4812,112 001114 = 136133151156 012432 aa 6 00146 00 0160 desc9a pr6|102,112 012433 aa 6 00202 4501 00 stz pr6|130 012434 aa 6 00146 3521 00 epp2 pr6|102 012435 aa 6 00206 2521 00 spri2 pr6|134 012436 aa 7 00303 3521 00 epp2 pr7|195 oc_data_flags 012437 aa 6 00210 2521 00 spri2 pr6|136 012440 aa 6 00202 3521 00 epp2 pr6|130 012441 aa 6 00212 2521 00 spri2 pr6|138 012442 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 012443 aa 3 00003 3521 00 epp2 pr3|3 oc_data.in_service 012444 aa 6 00214 2521 00 spri2 pr6|140 012445 aa 000001 7260 07 lxl6 1,dl 012446 aa 3 00003 3521 00 epp2 pr3|3 oc_data.crash_on_crf 012447 aa 2 00000 5035 16 abd pr2|0,6 012450 aa 6 00216 2521 00 spri2 pr6|142 012451 aa 000002 7250 07 lxl5 2,dl 012452 aa 3 00003 3521 00 epp2 pr3|3 oc_data.mc_io_enabled 012453 aa 2 00000 5035 15 abd pr2|0,5 012454 aa 6 00220 2521 00 spri2 pr6|144 012455 aa 000003 7240 07 lxl4 3,dl 012456 aa 3 00003 3521 00 epp2 pr3|3 oc_data.list_consoles 012457 aa 2 00000 5035 14 abd pr2|0,4 012460 aa 6 00222 2521 00 spri2 pr6|146 012461 aa 000004 7230 07 lxl3 4,dl 012462 aa 3 00003 3521 00 epp2 pr3|3 oc_data.printer_on 012463 aa 2 00000 5035 13 abd pr2|0,3 012464 aa 6 00224 2521 00 spri2 pr6|148 012465 aa 000005 7220 07 lxl2 5,dl 012466 aa 3 00003 3521 00 epp2 pr3|3 oc_data.write_q_full 012467 aa 2 00000 5035 12 abd pr2|0,2 012470 aa 6 00226 2521 00 spri2 pr6|150 012471 aa 765354 3520 04 epp2 -5396,ic 000045 = 524000000155 012472 aa 6 00230 2521 00 spri2 pr6|152 012473 aa 765403 3520 04 epp2 -5373,ic 000076 = 526000000120 012474 aa 6 00232 2521 00 spri2 pr6|154 012475 aa 765400 3520 04 epp2 -5376,ic 000075 = 404000000005 012476 aa 6 00234 2521 00 spri2 pr6|156 012477 aa 765501 3520 04 epp2 -5311,ic 000200 = 516000000001 012500 aa 6 00236 2521 00 spri2 pr6|158 012501 aa 6 00240 2521 00 spri2 pr6|160 012502 aa 6 00242 2521 00 spri2 pr6|162 012503 aa 6 00244 2521 00 spri2 pr6|164 012504 aa 6 00246 2521 00 spri2 pr6|166 012505 aa 6 00250 2521 00 spri2 pr6|168 012506 aa 6 00204 6211 00 eax1 pr6|132 012507 aa 044000 4310 07 fld 18432,dl 012510 aa 6 00044 3701 20 epp4 pr6|36,* 012511 la 4 00026 3521 20 epp2 pr4|22,* ioa_$rsnnl 012512 aa 6 00203 7471 00 stx7 pr6|131 012513 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1870 call ioa_$rsnnl ("^[io_in_progress^1x^]^[prompt^1x^]^[got_special_int^1x^]^[oper_request^1x^]^[discard^1x^]^[discarded^]", oc_entry_flags, 0, oc_entry.io_in_progress, oc_entry.prompt, oc_entry.got_special_int, oc_entry.oper_request, oc_entry.discard, oc_entry.discarded); 012514 aa 000 100 100 404 mlr (ic),(pr),fill(000) 012515 aa 766346 00 0150 desc9a -4890,104 001062 = 136133151157 012516 aa 6 00146 00 0150 desc9a pr6|102,104 012517 aa 6 00202 4501 00 stz pr6|130 012520 aa 6 00146 3521 00 epp2 pr6|102 012521 aa 6 00206 2521 00 spri2 pr6|134 012522 aa 6 00040 3735 20 epp7 pr6|32,* 012523 aa 7 00327 3521 00 epp2 pr7|215 oc_entry_flags 012524 aa 6 00210 2521 00 spri2 pr6|136 012525 aa 6 00202 3521 00 epp2 pr6|130 012526 aa 6 00212 2521 00 spri2 pr6|138 012527 aa 000012 7270 07 lxl7 10,dl 012530 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 012531 aa 5 00002 3521 00 epp2 pr5|2 oc_entry.io_in_progress 012532 aa 2 00000 5035 17 abd pr2|0,7 012533 aa 6 00214 2521 00 spri2 pr6|140 012534 aa 000010 7260 07 lxl6 8,dl 012535 aa 5 00002 3521 00 epp2 pr5|2 oc_entry.prompt 012536 aa 2 00000 5035 16 abd pr2|0,6 012537 aa 6 00216 2521 00 spri2 pr6|142 012540 aa 000013 7250 07 lxl5 11,dl 012541 aa 5 00002 3521 00 epp2 pr5|2 oc_entry.got_special_int 012542 aa 2 00000 5035 15 abd pr2|0,5 012543 aa 6 00220 2521 00 spri2 pr6|144 012544 aa 000014 7240 07 lxl4 12,dl 012545 aa 5 00002 3521 00 epp2 pr5|2 oc_entry.oper_request 012546 aa 2 00000 5035 14 abd pr2|0,4 012547 aa 6 00222 2521 00 spri2 pr6|146 012550 aa 000015 7230 07 lxl3 13,dl 012551 aa 5 00002 3521 00 epp2 pr5|2 oc_entry.discard 012552 aa 2 00000 5035 13 abd pr2|0,3 012553 aa 6 00224 2521 00 spri2 pr6|148 012554 aa 000016 7220 07 lxl2 14,dl 012555 aa 5 00002 3521 00 epp2 pr5|2 oc_entry.discarded 012556 aa 2 00000 5035 12 abd pr2|0,2 012557 aa 6 00226 2521 00 spri2 pr6|150 012560 aa 765264 3520 04 epp2 -5452,ic 000044 = 524000000146 012561 aa 6 00230 2521 00 spri2 pr6|152 012562 aa 765314 3520 04 epp2 -5428,ic 000076 = 526000000120 012563 aa 6 00232 2521 00 spri2 pr6|154 012564 aa 765311 3520 04 epp2 -5431,ic 000075 = 404000000005 012565 aa 6 00234 2521 00 spri2 pr6|156 012566 aa 765412 3520 04 epp2 -5366,ic 000200 = 516000000001 012567 aa 6 00236 2521 00 spri2 pr6|158 012570 aa 6 00240 2521 00 spri2 pr6|160 012571 aa 6 00242 2521 00 spri2 pr6|162 012572 aa 6 00244 2521 00 spri2 pr6|164 012573 aa 6 00246 2521 00 spri2 pr6|166 012574 aa 6 00250 2521 00 spri2 pr6|168 012575 aa 6 00204 6211 00 eax1 pr6|132 012576 aa 044000 4310 07 fld 18432,dl 012577 aa 6 00044 3701 20 epp4 pr6|36,* 012600 la 4 00026 3521 20 epp2 pr4|22,* ioa_$rsnnl 012601 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1875 call ioa_$rsnnl ("^[alert^1x^]^[alerted^1x^]^[read^1x^]^[prompted^1x^]^[in_progress^1x^]^[completed^1x^]^[retry_reset^1x^]", console_io_flags, 0, console_io.alert, console_io.alerted, console_io.read, console_io.prompted, console_io.in_progress, console_io.completed, console_io.retry_reset); 012602 aa 000 100 100 404 mlr (ic),(pr),fill(000) 012603 aa 766226 00 0150 desc9a -4970,104 001030 = 136133141154 012604 aa 6 00146 00 0150 desc9a pr6|102,104 012605 aa 6 00202 4501 00 stz pr6|130 012606 aa 6 00146 3521 00 epp2 pr6|102 012607 aa 6 00254 2521 00 spri2 pr6|172 012610 aa 6 00040 3735 20 epp7 pr6|32,* 012611 aa 7 00202 3521 00 epp2 pr7|130 console_io_flags 012612 aa 6 00256 2521 00 spri2 pr6|174 012613 aa 6 00202 3521 00 epp2 pr6|130 012614 aa 6 00260 2521 00 spri2 pr6|176 012615 aa 7 00410 3715 20 epp5 pr7|264,* console_io_ptr 012616 aa 5 00006 3521 00 epp2 pr5|6 console_io.alert 012617 aa 6 00262 2521 00 spri2 pr6|178 012620 aa 000002 7270 07 lxl7 2,dl 012621 aa 5 00006 3521 00 epp2 pr5|6 console_io.alerted 012622 aa 2 00000 5035 17 abd pr2|0,7 012623 aa 6 00264 2521 00 spri2 pr6|180 012624 aa 000001 7260 07 lxl6 1,dl 012625 aa 5 00006 3521 00 epp2 pr5|6 console_io.read 012626 aa 2 00000 5035 16 abd pr2|0,6 012627 aa 6 00266 2521 00 spri2 pr6|182 012630 aa 000003 7250 07 lxl5 3,dl 012631 aa 5 00006 3521 00 epp2 pr5|6 console_io.prompted 012632 aa 2 00000 5035 15 abd pr2|0,5 012633 aa 6 00270 2521 00 spri2 pr6|184 012634 aa 000004 7240 07 lxl4 4,dl 012635 aa 5 00006 3521 00 epp2 pr5|6 console_io.in_progress 012636 aa 2 00000 5035 14 abd pr2|0,4 012637 aa 6 00272 2521 00 spri2 pr6|186 012640 aa 000005 7230 07 lxl3 5,dl 012641 aa 5 00006 3521 00 epp2 pr5|6 console_io.completed 012642 aa 2 00000 5035 13 abd pr2|0,3 012643 aa 6 00274 2521 00 spri2 pr6|188 012644 aa 000006 7220 07 lxl2 6,dl 012645 aa 5 00006 3521 00 epp2 pr5|6 console_io.retry_reset 012646 aa 2 00000 5035 12 abd pr2|0,2 012647 aa 6 00276 2521 00 spri2 pr6|190 012650 aa 765173 3520 04 epp2 -5509,ic 000043 = 524000000150 012651 aa 6 00300 2521 00 spri2 pr6|192 012652 aa 765224 3520 04 epp2 -5484,ic 000076 = 526000000120 012653 aa 6 00302 2521 00 spri2 pr6|194 012654 aa 765221 3520 04 epp2 -5487,ic 000075 = 404000000005 012655 aa 6 00304 2521 00 spri2 pr6|196 012656 aa 765322 3520 04 epp2 -5422,ic 000200 = 516000000001 012657 aa 6 00306 2521 00 spri2 pr6|198 012660 aa 6 00310 2521 00 spri2 pr6|200 012661 aa 6 00312 2521 00 spri2 pr6|202 012662 aa 6 00314 2521 00 spri2 pr6|204 012663 aa 6 00316 2521 00 spri2 pr6|206 012664 aa 6 00320 2521 00 spri2 pr6|208 012665 aa 6 00322 2521 00 spri2 pr6|210 012666 aa 6 00252 6211 00 eax1 pr6|170 012667 aa 050000 4310 07 fld 20480,dl 012670 aa 6 00044 3701 20 epp4 pr6|36,* 012671 la 4 00026 3521 20 epp2 pr4|22,* ioa_$rsnnl 012672 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1881 call syserr$binary (JUST_LOG, addr (log_message), SB_ocdcm_err, SBL_ocdcm_err, "ocdcm_ (log_console_error): I/O ^[timeout ^]error on ^a; status = ^.3b^/oc_data flags: ^a^/oc_entry flags: ^a^/console_io flags: ^a", console_io_timeout, oc_entry.name, substr (string (log_message.status), 1, 36), oc_data_flags, oc_entry_flags, console_io_flags); 012673 aa 6 00040 3735 20 epp7 pr6|32,* 012674 aa 7 00142 3735 00 epp7 pr7|98 log_message 012675 aa 6 00136 6535 00 spri7 pr6|94 012676 aa 000 100 100 404 mlr (ic),(pr),fill(000) 012677 aa 766252 00 0204 desc9a -4950,132 001150 = 157143144143 012700 aa 6 00204 00 0204 desc9a pr6|132,132 012701 aa 6 00040 3715 20 epp5 pr6|32,* 012702 aa 5 00145 2351 00 lda pr5|101 log_message.status 012703 aa 6 00202 7551 00 sta pr6|130 012704 aa 765264 3520 04 epp2 -5452,ic 000170 = 000000000005 012705 aa 6 00326 2521 00 spri2 pr6|214 012706 aa 6 00136 3521 00 epp2 pr6|94 012707 aa 6 00330 2521 00 spri2 pr6|216 012710 aa 765123 3520 04 epp2 -5549,ic 000033 = 000000000024 012711 aa 6 00332 2521 00 spri2 pr6|218 012712 aa 765256 3520 04 epp2 -5458,ic 000170 = 000000000005 012713 aa 6 00334 2521 00 spri2 pr6|220 012714 aa 6 00204 3521 00 epp2 pr6|132 012715 aa 6 00336 2521 00 spri2 pr6|222 012716 aa 5 00125 3521 00 epp2 pr5|85 console_io_timeout 012717 aa 6 00340 2521 00 spri2 pr6|224 012720 aa 5 00406 3521 20 epp2 pr5|262,* oc_entry.name 012721 aa 6 00342 2521 00 spri2 pr6|226 012722 aa 6 00202 3521 00 epp2 pr6|130 012723 aa 6 00344 2521 00 spri2 pr6|228 012724 aa 5 00303 3521 00 epp2 pr5|195 oc_data_flags 012725 aa 6 00346 2521 00 spri2 pr6|230 012726 aa 5 00327 3521 00 epp2 pr5|215 oc_entry_flags 012727 aa 6 00350 2521 00 spri2 pr6|232 012730 aa 5 00202 3521 00 epp2 pr5|130 console_io_flags 012731 aa 6 00352 2521 00 spri2 pr6|234 012732 aa 765240 3520 04 epp2 -5472,ic 000172 = 404000000021 012733 aa 6 00354 2521 00 spri2 pr6|236 012734 aa 6 00360 2521 00 spri2 pr6|240 012735 aa 6 00362 2521 00 spri2 pr6|242 012736 aa 765225 3520 04 epp2 -5483,ic 000163 = 464000000000 012737 aa 6 00356 2521 00 spri2 pr6|238 012740 aa 765102 3520 04 epp2 -5566,ic 000042 = 524000000203 012741 aa 6 00364 2521 00 spri2 pr6|244 012742 aa 765236 3520 04 epp2 -5474,ic 000200 = 516000000001 012743 aa 6 00366 2521 00 spri2 pr6|246 012744 aa 765232 3520 04 epp2 -5478,ic 000176 = 524000000004 012745 aa 6 00370 2521 00 spri2 pr6|248 012746 aa 765101 3520 04 epp2 -5567,ic 000047 = 514000000044 012747 aa 6 00372 2521 00 spri2 pr6|250 012750 aa 765126 3520 04 epp2 -5546,ic 000076 = 526000000120 012751 aa 6 00374 2521 00 spri2 pr6|252 012752 aa 6 00376 2521 00 spri2 pr6|254 012753 aa 6 00400 2521 00 spri2 pr6|256 012754 aa 6 00324 6211 00 eax1 pr6|212 012755 aa 054000 4310 07 fld 22528,dl 012756 aa 6 00044 3701 20 epp4 pr6|36,* 012757 la 4 00046 3521 20 epp2 pr4|38,* syserr$binary 012760 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1887 call log_console_event (LOGGED_ERROR, oc_data.io_ptr); 012761 aa 765047 3520 04 epp2 -5593,ic 000030 = 000000000030 012762 aa 6 00150 2521 00 spri2 pr6|104 012763 aa 6 00040 3735 20 epp7 pr6|32,* 012764 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 012765 aa 5 00022 3521 00 epp2 pr5|18 oc_data.io_ptr 012766 aa 6 00152 2521 00 spri2 pr6|106 012767 aa 000001 7270 07 lxl7 1,dl 012770 aa 6 00146 6211 00 eax1 pr6|102 012771 aa 010000 4310 07 fld 4096,dl 012772 aa 000004 3520 04 epp2 4,ic 012776 = 000120627000 012773 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1889 return; 012774 aa 6 00100 6101 00 rtcd pr6|64 STATEMENT 1 ON LINE 1891 end log_console_error; END PROCEDURE log_console_error BEGIN PROCEDURE log_console_event ENTRY TO log_console_event STATEMENT 1 ON LINE 1893 log_console_event: proc (event_no, event_io_ptr_parm); 012775 da 000732200000 012776 aa 000120 6270 00 eax7 80 012777 aa 7 00034 3521 20 epp2 pr7|28,* 013000 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 013001 aa 000004000000 013002 aa 000000000000 STATEMENT 1 ON LINE 1910 oc_data.event (oc_data.next_event).time = clock (); 013003 aa 6 00040 3735 20 epp7 pr6|32,* 013004 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 013005 aa 5 00040 2351 00 lda pr5|32 oc_data.next_event 013006 aa 000022 7350 00 als 18 013007 aa 000066 7330 00 lrs 54 013010 aa 000003 7360 00 qls 3 013011 aa 6 00100 7561 00 stq pr6|64 013012 aa 000340 2360 07 ldq 224,dl 013013 aa 6 00101 7561 00 stq pr6|65 013014 aa 000400 2360 07 ldq 256,dl 013015 aa 000003 0760 07 adq 3,dl 013016 aa 000002 7320 00 qrs 2 013017 aa 000012 0760 07 adq 10,dl 013020 aa 6 00102 7561 00 stq pr6|66 013021 aa 000001 0760 07 adq 1,dl 013022 aa 777776 3760 07 anq 262142,dl 013023 aa 000003 7360 00 qls 3 013024 aa 6 00103 7561 00 stq pr6|67 013025 aa 6 00102 2361 00 ldq pr6|66 013026 aa 000042 0760 07 adq 34,dl 013027 aa 000001 0760 07 adq 1,dl 013030 aa 777776 3760 07 anq 262142,dl 013031 aa 6 00102 0761 00 adq pr6|66 013032 aa 000001 0760 07 adq 1,dl 013033 aa 777776 3760 07 anq 262142,dl 013034 aa 000044 7770 00 llr 36 013035 aa 000044 7330 00 lrs 36 013036 aa 6 00103 0331 00 adl pr6|67 013037 aa 000012 0330 07 adl 10,dl 013040 aa 000001 0760 07 adq 1,dl 013041 aa 777776 3760 07 anq 262142,dl 013042 aa 6 00101 0761 00 adq pr6|65 013043 aa 000001 0760 07 adq 1,dl 013044 aa 777776 3760 07 anq 262142,dl 013045 aa 6 00101 7561 00 stq pr6|65 013046 aa 6 00100 0761 00 adq pr6|64 013047 aa 000000 6270 06 eax7 0,ql 013050 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 013051 aa 5 77770 7571 17 staq pr5|-8,7 oc_data.time STATEMENT 1 ON LINE 1911 oc_data.event (oc_data.next_event).process_id = pds$process_id; 013052 aa 6 00101 2361 00 ldq pr6|65 013053 aa 000004 0760 07 adq 4,dl 013054 aa 6 00100 0761 00 adq pr6|64 013055 aa 6 00044 3701 20 epp4 pr6|36,* 013056 la 4 00100 2351 20 lda pr4|64,* pds$process_id 013057 aa 5 77770 7551 06 sta pr5|-8,ql oc_data.process_id STATEMENT 1 ON LINE 1912 oc_data.event (oc_data.next_event).event_number = event_no; 013060 aa 6 00101 2361 00 ldq pr6|65 013061 aa 000005 0760 07 adq 5,dl 013062 aa 6 00100 0761 00 adq pr6|64 013063 aa 6 00032 3735 20 epp7 pr6|26,* 013064 aa 000000 6260 06 eax6 0,ql 013065 aa 7 00002 2361 20 ldq pr7|2,* event_no 013066 aa 5 77770 7561 16 stq pr5|-8,6 oc_data.event_number STATEMENT 1 ON LINE 1913 oc_data.event (oc_data.next_event).event_io_ptr = event_io_ptr_parm; 013067 aa 6 00101 2361 00 ldq pr6|65 013070 aa 000006 0760 07 adq 6,dl 013071 aa 6 00100 0761 00 adq pr6|64 013072 aa 7 00004 3535 20 epp3 pr7|4,* event_io_ptr_parm 013073 aa 3 00000 3535 20 epp3 pr3|0,* event_io_ptr_parm 013074 aa 5 77770 2535 06 spri3 pr5|-8,ql oc_data.event_io_ptr STATEMENT 1 ON LINE 1914 if oc_entry_ptr ^= null then do; 013075 aa 6 00040 3715 20 epp5 pr6|32,* 013076 aa 5 00406 2371 00 ldaq pr5|262 oc_entry_ptr 013077 aa 765121 6770 04 eraq -5551,ic 000220 = 077777000043 000001000000 013100 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 013101 aa 000023 6000 04 tze 19,ic 013124 STATEMENT 1 ON LINE 1915 oc_data.event (oc_data.next_event).opc_name = oc_entry.name; 013102 aa 5 00404 3515 20 epp1 pr5|260,* oc_data_ptr 013103 aa 1 00040 2351 00 lda pr1|32 oc_data.next_event 013104 aa 000022 7350 00 als 18 013105 aa 000066 7330 00 lrs 54 013106 aa 000003 7360 00 qls 3 013107 aa 6 00100 7561 00 stq pr6|64 013110 aa 6 00101 2361 00 ldq pr6|65 013111 aa 000002 0760 07 adq 2,dl 013112 aa 6 00100 0761 00 adq pr6|64 013113 aa 5 00406 2351 20 lda pr5|262,* oc_entry.name 013114 aa 1 77770 7551 06 sta pr1|-8,ql oc_data.opc_name STATEMENT 1 ON LINE 1916 oc_data.event (oc_data.next_event).opc_flags = oc_entry.flags; 013115 aa 6 00101 2361 00 ldq pr6|65 013116 aa 000003 0760 07 adq 3,dl 013117 aa 6 00100 0761 00 adq pr6|64 013120 aa 5 00406 3535 20 epp3 pr5|262,* oc_entry_ptr 013121 aa 3 00002 2351 00 lda pr3|2 oc_entry.flags 013122 aa 1 77770 7551 06 sta pr1|-8,ql oc_data.opc_flags STATEMENT 1 ON LINE 1917 end; 013123 aa 000177 7100 04 tra 127,ic 013322 STATEMENT 1 ON LINE 1918 else do; STATEMENT 1 ON LINE 1919 oc_data.event (oc_data.next_event).opc_name = ""; 013124 aa 5 00404 3515 20 epp1 pr5|260,* oc_data_ptr 013125 aa 1 00040 2351 00 lda pr1|32 oc_data.next_event 013126 aa 000022 7350 00 als 18 013127 aa 000066 7330 00 lrs 54 013130 aa 6 00100 7561 00 stq pr6|64 013131 aa 000003 7360 00 qls 3 013132 aa 6 00103 7561 00 stq pr6|67 013133 aa 6 00101 2361 00 ldq pr6|65 013134 aa 000002 0760 07 adq 2,dl 013135 aa 6 00103 0761 00 adq pr6|67 013136 aa 765002 2350 04 lda -5630,ic 000140 = 040040040040 013137 aa 1 77770 7551 06 sta pr1|-8,ql oc_data.opc_name STATEMENT 1 ON LINE 1920 oc_data.event (oc_data.next_event).opc_flags = ""b; 013140 aa 6 00101 2361 00 ldq pr6|65 013141 aa 000003 0760 07 adq 3,dl 013142 aa 6 00103 0761 00 adq pr6|67 013143 aa 004500 2350 04 lda 2368,ic 017643 = 377777777777 013144 aa 1 77770 3551 06 ansa pr1|-8,ql oc_data.active 013145 aa 6 00100 2361 00 ldq pr6|64 013146 aa 000003 7360 00 qls 3 013147 aa 000044 4020 07 mpy 36,dl 013150 aa 6 00100 7561 00 stq pr6|64 013151 aa 6 00101 2361 00 ldq pr6|65 013152 aa 000003 0760 07 adq 3,dl 013153 aa 000044 4020 07 mpy 36,dl 013154 aa 6 00101 7561 00 stq pr6|65 013155 aa 000001 0760 07 adq 1,dl 013156 aa 6 00100 0761 00 adq pr6|64 013157 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013160 aa 000000 00 0000 descb 0,0 013161 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.assigned 013162 aa 6 00101 2361 00 ldq pr6|65 013163 aa 000002 0760 07 adq 2,dl 013164 aa 6 00100 0761 00 adq pr6|64 013165 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013166 aa 000000 00 0000 descb 0,0 013167 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.bootload_console 013170 aa 6 00101 2361 00 ldq pr6|65 013171 aa 000003 0760 07 adq 3,dl 013172 aa 6 00100 0761 00 adq pr6|64 013173 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013174 aa 000000 00 0000 descb 0,0 013175 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.alternate 013176 aa 6 00101 2361 00 ldq pr6|65 013177 aa 000004 0760 07 adq 4,dl 013200 aa 6 00100 0761 00 adq pr6|64 013201 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013202 aa 000000 00 0000 descb 0,0 013203 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.inop_device 013204 aa 6 00101 2361 00 ldq pr6|65 013205 aa 000005 0760 07 adq 5,dl 013206 aa 6 00100 0761 00 adq pr6|64 013207 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013210 aa 000000 00 0000 descb 0,0 013211 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.io_device 013212 aa 6 00101 2361 00 ldq pr6|65 013213 aa 000006 0760 07 adq 6,dl 013214 aa 6 00100 0761 00 adq pr6|64 013215 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013216 aa 000000 00 0000 descb 0,0 013217 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.no_device 013220 aa 6 00101 2361 00 ldq pr6|65 013221 aa 000007 0760 07 adq 7,dl 013222 aa 6 00100 0761 00 adq pr6|64 013223 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013224 aa 000000 00 0000 descb 0,0 013225 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.config_change 013226 aa 6 00101 2361 00 ldq pr6|65 013227 aa 000010 0760 07 adq 8,dl 013230 aa 6 00100 0761 00 adq pr6|64 013231 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013232 aa 000000 00 0000 descb 0,0 013233 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.prompt 013234 aa 6 00101 2361 00 ldq pr6|65 013235 aa 000011 0760 07 adq 9,dl 013236 aa 6 00100 0761 00 adq pr6|64 013237 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013240 aa 000000 00 0000 descb 0,0 013241 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.pcw_io 013242 aa 6 00101 2361 00 ldq pr6|65 013243 aa 000012 0760 07 adq 10,dl 013244 aa 6 00100 0761 00 adq pr6|64 013245 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013246 aa 000000 00 0000 descb 0,0 013247 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.io_in_progress 013250 aa 6 00101 2361 00 ldq pr6|65 013251 aa 000013 0760 07 adq 11,dl 013252 aa 6 00100 0761 00 adq pr6|64 013253 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013254 aa 000000 00 0000 descb 0,0 013255 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.got_special_int 013256 aa 6 00101 2361 00 ldq pr6|65 013257 aa 000014 0760 07 adq 12,dl 013260 aa 6 00100 0761 00 adq pr6|64 013261 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013262 aa 000000 00 0000 descb 0,0 013263 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.oper_request 013264 aa 6 00101 2361 00 ldq pr6|65 013265 aa 000015 0760 07 adq 13,dl 013266 aa 6 00100 0761 00 adq pr6|64 013267 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013270 aa 000000 00 0000 descb 0,0 013271 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.discard 013272 aa 6 00101 2361 00 ldq pr6|65 013273 aa 000016 0760 07 adq 14,dl 013274 aa 6 00100 0761 00 adq pr6|64 013275 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013276 aa 000000 00 0000 descb 0,0 013277 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.discarded 013300 aa 6 00101 2361 00 ldq pr6|65 013301 aa 000017 0760 07 adq 15,dl 013302 aa 6 00100 0761 00 adq pr6|64 013303 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013304 aa 000000 00 0000 descb 0,0 013305 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.read_unechoed_option 013306 aa 6 00101 2361 00 ldq pr6|65 013307 aa 000020 0760 07 adq 16,dl 013310 aa 6 00100 0761 00 adq pr6|64 013311 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013312 aa 000000 00 0000 descb 0,0 013313 aa 1 77770 00 0001 descb pr1|-8,1 oc_data.imu 013314 aa 6 00101 2361 00 ldq pr6|65 013315 aa 000021 0760 07 adq 17,dl 013316 aa 6 00100 0761 00 adq pr6|64 013317 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 013320 aa 000000 00 0000 descb 0,0 013321 aa 1 77770 00 0023 descb pr1|-8,19 oc_data.pad_flag STATEMENT 1 ON LINE 1921 end; STATEMENT 1 ON LINE 1923 oc_data.next_event = oc_data.next_event + 1; 013322 aa 1 00040 2351 00 lda pr1|32 oc_data.next_event 013323 aa 000022 7350 00 als 18 013324 aa 000066 7330 00 lrs 54 013325 aa 000001 0760 07 adq 1,dl 013326 aa 1 00040 5521 14 stbq pr1|32,14 oc_data.next_event STATEMENT 1 ON LINE 1924 if oc_data.next_event > EVENT_QUEUE_SIZE then oc_data.next_event = 1; 013327 aa 000202 1160 07 cmpq 130,dl 013330 aa 000003 6044 04 tmoz 3,ic 013333 013331 aa 000001 2350 07 lda 1,dl 013332 aa 1 00040 5511 14 stba pr1|32,14 oc_data.next_event STATEMENT 1 ON LINE 1926 return; 013333 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1928 end log_console_event; END PROCEDURE log_console_event BEGIN PROCEDURE next_console_io ENTRY TO next_console_io STATEMENT 1 ON LINE 1930 next_console_io: proc () returns (ptr); 013334 da 000741220000 013335 aa 000120 6270 00 eax7 80 013336 aa 7 00034 3521 20 epp2 pr7|28,* 013337 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 013340 aa 000002000000 013341 aa 000000000000 STATEMENT 1 ON LINE 1941 if oc_data.read_io.in_progress then return (addr (oc_data.read_io)); 013342 aa 000400 2360 07 ldq 256,dl 013343 aa 000003 0760 07 adq 3,dl 013344 aa 000002 7320 00 qrs 2 013345 aa 000012 0760 07 adq 10,dl 013346 aa 6 00101 7561 00 stq pr6|65 013347 aa 000042 0760 07 adq 34,dl 013350 aa 000001 0760 07 adq 1,dl 013351 aa 777776 3760 07 anq 262142,dl 013352 aa 6 00102 7561 00 stq pr6|66 013353 aa 000006 0760 07 adq 6,dl 013354 aa 6 00103 7561 00 stq pr6|67 013355 aa 6 00040 3735 20 epp7 pr6|32,* 013356 aa 7 00404 2351 66 lda pr7|260,*ql oc_data.in_progress 013357 aa 020000 3150 03 cana 8192,du 013360 aa 000006 6000 04 tze 6,ic 013366 013361 aa 6 00102 7271 00 lxl7 pr6|66 013362 aa 7 00404 3715 77 epp5 pr7|260,*7 oc_data.read_io 013363 aa 6 00032 3535 20 epp3 pr6|26,* 013364 aa 3 00002 6515 20 spri5 pr3|2,* 013365 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1943 if ^oc_data.priority_io.completed then do; 013366 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 013367 aa 5 00050 2351 00 lda pr5|40 oc_data.completed 013370 aa 010000 3150 03 cana 4096,du 013371 aa 000020 6010 04 tnz 16,ic 013411 STATEMENT 1 ON LINE 1944 if oc_data.priority_io.read then do; 013372 aa 5 00050 2351 00 lda pr5|40 oc_data.read 013373 aa 200000 3150 03 cana 65536,du 013374 aa 000011 6000 04 tze 9,ic 013405 STATEMENT 1 ON LINE 1945 if ^oc_entry.oper_request then return (null); 013375 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 013376 aa 3 00002 2351 00 lda pr3|2 oc_entry.oper_request 013377 aa 000040 3150 03 cana 32,du 013400 aa 000005 6010 04 tnz 5,ic 013405 013401 aa 764617 2370 04 ldaq -5745,ic 000220 = 077777000043 000001000000 013402 aa 6 00032 3515 20 epp1 pr6|26,* 013403 aa 1 00002 7571 20 staq pr1|2,* 013404 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1946 end; STATEMENT 1 ON LINE 1947 return (addr (oc_data.priority_io)); 013405 aa 5 00042 3535 00 epp3 pr5|34 oc_data.priority_io 013406 aa 6 00032 3515 20 epp1 pr6|26,* 013407 aa 1 00002 2535 20 spri3 pr1|2,* 013410 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1948 end; STATEMENT 1 ON LINE 1950 if oc_data.write_q_full then do; 013411 aa 5 00003 2351 00 lda pr5|3 oc_data.write_q_full 013412 aa 010000 3150 03 cana 4096,du 013413 aa 000023 6000 04 tze 19,ic 013436 STATEMENT 1 ON LINE 1951 return (addr (oc_data.write_queue (oc_data.next_free_write))); 013414 aa 6 00101 2361 00 ldq pr6|65 013415 aa 000001 0760 07 adq 1,dl 013416 aa 777776 3760 07 anq 262142,dl 013417 aa 6 00103 7561 00 stq pr6|67 013420 aa 5 00040 2351 00 lda pr5|32 oc_data.next_free_write 013421 aa 000066 7330 00 lrs 54 013422 aa 6 00103 4021 00 mpy pr6|67 013423 aa 6 00103 1761 00 sbq pr6|67 013424 aa 6 00103 7561 00 stq pr6|67 013425 aa 6 00102 2361 00 ldq pr6|66 013426 aa 6 00101 0761 00 adq pr6|65 013427 aa 000001 0760 07 adq 1,dl 013430 aa 777776 3760 07 anq 262142,dl 013431 aa 6 00103 0761 00 adq pr6|67 013432 aa 5 00000 3535 06 epp3 pr5|0,ql oc_data.write_queue 013433 aa 6 00032 3515 20 epp1 pr6|26,* 013434 aa 1 00002 2535 20 spri3 pr1|2,* 013435 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1952 end; STATEMENT 1 ON LINE 1954 first_search_pass = true; 013436 aa 400000 2350 03 lda 131072,du 013437 aa 7 00117 7551 00 sta pr7|79 first_search_pass STATEMENT 1 ON LINE 1955 first_io_slot = oc_data.next_free_write + 1; 013440 aa 5 00040 2351 00 lda pr5|32 oc_data.next_free_write 013441 aa 000066 7330 00 lrs 54 013442 aa 000001 0760 07 adq 1,dl 013443 aa 7 00271 7561 00 stq pr7|185 first_io_slot STATEMENT 1 ON LINE 1956 if first_io_slot > WRITE_QUEUE_SIZE then first_io_slot = 1; 013444 aa 000010 1160 07 cmpq 8,dl 013445 aa 000003 6044 04 tmoz 3,ic 013450 013446 aa 000001 2360 07 ldq 1,dl 013447 aa 7 00271 7561 00 stq pr7|185 first_io_slot STATEMENT 1 ON LINE 1957 last_io_slot = WRITE_QUEUE_SIZE; 013450 aa 000010 2360 07 ldq 8,dl 013451 aa 7 00273 7561 00 stq pr7|187 last_io_slot STATEMENT 1 ON LINE 1959 SEARCH_WRITE_QUEUE: do idx = first_io_slot to last_io_slot; 013452 aa 6 00040 3735 20 epp7 pr6|32,* 013453 aa 7 00273 2361 00 ldq pr7|187 last_io_slot 013454 aa 6 00100 7561 00 stq pr6|64 013455 aa 7 00271 2361 00 ldq pr7|185 first_io_slot 013456 aa 7 00272 7561 00 stq pr7|186 idx 013457 aa 000000 0110 03 nop 0,du 013460 aa 6 00040 3735 20 epp7 pr6|32,* 013461 aa 7 00272 2361 00 ldq pr7|186 idx 013462 aa 6 00100 1161 00 cmpq pr6|64 013463 aa 000036 6054 04 tpnz 30,ic 013521 STATEMENT 1 ON LINE 1962 console_io_ptr = addr (oc_data.write_queue (idx)); 013464 aa 000400 2360 07 ldq 256,dl 013465 aa 000003 0760 07 adq 3,dl 013466 aa 000002 7320 00 qrs 2 013467 aa 000012 0760 07 adq 10,dl 013470 aa 6 00103 7561 00 stq pr6|67 013471 aa 000001 0760 07 adq 1,dl 013472 aa 777776 3760 07 anq 262142,dl 013473 aa 6 00101 7561 00 stq pr6|65 013474 aa 7 00272 4021 00 mpy pr7|186 idx 013475 aa 6 00101 1761 00 sbq pr6|65 013476 aa 6 00101 7561 00 stq pr6|65 013477 aa 6 00103 2361 00 ldq pr6|67 013500 aa 000042 0760 07 adq 34,dl 013501 aa 000001 0760 07 adq 1,dl 013502 aa 777776 3760 07 anq 262142,dl 013503 aa 6 00103 0761 00 adq pr6|67 013504 aa 000001 0760 07 adq 1,dl 013505 aa 777776 3760 07 anq 262142,dl 013506 aa 6 00101 0761 00 adq pr6|65 013507 aa 7 00404 3715 66 epp5 pr7|260,*ql oc_data.write_queue 013510 aa 7 00410 6515 00 spri5 pr7|264 console_io_ptr STATEMENT 1 ON LINE 1963 if ^console_io.completed then return (console_io_ptr); 013511 aa 5 00006 2351 00 lda pr5|6 console_io.completed 013512 aa 010000 3150 03 cana 4096,du 013513 aa 000004 6010 04 tnz 4,ic 013517 013514 aa 6 00032 3535 20 epp3 pr6|26,* 013515 aa 3 00002 6515 20 spri5 pr3|2,* 013516 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1964 end; 013517 aa 7 00272 0541 00 aos pr7|186 idx 013520 aa 777740 7100 04 tra -32,ic 013460 STATEMENT 1 ON LINE 1965 if first_search_pass then do; 013521 aa 7 00117 2351 00 lda pr7|79 first_search_pass 013522 aa 000011 6000 04 tze 9,ic 013533 STATEMENT 1 ON LINE 1966 first_search_pass = false; 013523 aa 7 00117 4501 00 stz pr7|79 first_search_pass STATEMENT 1 ON LINE 1967 first_io_slot = 1; 013524 aa 000001 2360 07 ldq 1,dl 013525 aa 7 00271 7561 00 stq pr7|185 first_io_slot STATEMENT 1 ON LINE 1968 last_io_slot = oc_data.next_free_write; 013526 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 013527 aa 5 00040 2351 00 lda pr5|32 oc_data.next_free_write 013530 aa 000066 7330 00 lrs 54 013531 aa 7 00273 7561 00 stq pr7|187 last_io_slot STATEMENT 1 ON LINE 1969 go to SEARCH_WRITE_QUEUE; 013532 aa 777720 7100 04 tra -48,ic 013452 STATEMENT 1 ON LINE 1970 end; STATEMENT 1 ON LINE 1972 if oc_entry.discarded then do; 013533 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 013534 aa 5 00002 2351 00 lda pr5|2 oc_entry.discarded 013535 aa 000010 3150 03 cana 8,du 013536 aa 000014 6000 04 tze 12,ic 013552 STATEMENT 1 ON LINE 1973 oc_entry.dcw_list_idx = DISCARD_DCW; 013537 aa 000015 2350 07 lda 13,dl 013540 aa 5 00006 5511 14 stba pr5|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 1974 call initiate_io (); 013541 aa 000001 7270 07 lxl7 1,dl 013542 aa 6 00056 6211 00 eax1 pr6|46 013543 aa 000000 4310 07 fld 0,dl 013544 aa 775335 3520 04 epp2 -1315,ic 011101 = 000120627000 013545 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 1975 return (null); 013546 aa 764452 2370 04 ldaq -5846,ic 000220 = 077777000043 000001000000 013547 aa 6 00032 3735 20 epp7 pr6|26,* 013550 aa 7 00002 7571 20 staq pr7|2,* 013551 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1976 end; STATEMENT 1 ON LINE 1978 if oc_entry.oper_request then do; 013552 aa 5 00002 2351 00 lda pr5|2 oc_entry.oper_request 013553 aa 000040 3150 03 cana 32,du 013554 aa 000031 6000 04 tze 25,ic 013605 STATEMENT 1 ON LINE 1979 if oc_data.stacked_read_cnt > 0 then do; 013555 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 013556 aa 3 00041 2351 00 lda pr3|33 oc_data.stacked_read_cnt 013557 aa 000066 7330 00 lrs 54 013560 aa 000025 6044 04 tmoz 21,ic 013605 STATEMENT 1 ON LINE 1980 if ^oc_data.read_io.in_progress & oc_data.read_io.completed /* if not in progress & last completed..*/ then return (addr (oc_data.read_io)); 013561 aa 000400 2360 07 ldq 256,dl 013562 aa 000003 0760 07 adq 3,dl 013563 aa 000002 7320 00 qrs 2 013564 aa 000054 0760 07 adq 44,dl 013565 aa 000001 0760 07 adq 1,dl 013566 aa 777776 3760 07 anq 262142,dl 013567 aa 6 00101 7561 00 stq pr6|65 013570 aa 000006 0760 07 adq 6,dl 013571 aa 6 00103 7561 00 stq pr6|67 013572 aa 3 00000 2351 06 lda pr3|0,ql oc_data.in_progress 013573 aa 020000 3150 03 cana 8192,du 013574 aa 000011 6010 04 tnz 9,ic 013605 013575 aa 3 00000 2351 06 lda pr3|0,ql oc_data.completed 013576 aa 010000 3150 03 cana 4096,du 013577 aa 000006 6000 04 tze 6,ic 013605 013600 aa 6 00101 7271 00 lxl7 pr6|65 013601 aa 3 00000 3515 17 epp1 pr3|0,7 oc_data.read_io 013602 aa 6 00032 3715 20 epp5 pr6|26,* 013603 aa 5 00002 2515 20 spri1 pr5|2,* 013604 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1982 end; STATEMENT 1 ON LINE 1983 end; STATEMENT 1 ON LINE 1985 return (null); 013605 aa 764413 2370 04 ldaq -5877,ic 000220 = 077777000043 000001000000 013606 aa 6 00032 3535 20 epp3 pr6|26,* 013607 aa 3 00002 7571 20 staq pr3|2,* 013610 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1987 end next_console_io; END PROCEDURE next_console_io BEGIN PROCEDURE poll_for_console ENTRY TO poll_for_console STATEMENT 1 ON LINE 1989 poll_for_console: proc (); 013611 aa 6 00130 6501 00 spri4 pr6|88 STATEMENT 1 ON LINE 1998 if oc_data.bootload_console_idx ^= 0 then do; 013612 aa 6 00040 3735 20 epp7 pr6|32,* 013613 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 013614 aa 5 00002 2351 00 lda pr5|2 oc_data.bootload_console_idx 013615 aa 000022 7350 00 als 18 013616 aa 000066 7330 00 lrs 54 013617 aa 000010 6000 04 tze 8,ic 013627 STATEMENT 1 ON LINE 1999 if console_responds_to_bell ((oc_data.bootload_console_idx)) then return; 013620 aa 6 00235 7561 00 stq pr6|157 013621 aa 003757 3520 04 epp2 2031,ic 017600 = 000004000000 013622 aa 773666 6700 04 tsp4 -2122,ic 007510 013623 aa 6 00236 2351 00 lda pr6|158 013624 aa 400000 3150 03 cana 131072,du 013625 aa 000002 6000 04 tze 2,ic 013627 013626 aa 6 00130 6101 00 rtcd pr6|88 STATEMENT 1 ON LINE 2000 end; STATEMENT 1 ON LINE 2002 call unassign_bootload_console (); 013627 aa 000001 7270 07 lxl7 1,dl 013630 aa 6 00056 6211 00 eax1 pr6|46 013631 aa 000000 4310 07 fld 0,dl 013632 aa 003427 3520 04 epp2 1815,ic 017261 = 000120627000 013633 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2004 do while (true); STATEMENT 1 ON LINE 2005 poll_idx = poll_idx + 1; 013634 aa 6 00040 3735 20 epp7 pr6|32,* 013635 aa 7 00355 0541 00 aos pr7|237 poll_idx STATEMENT 1 ON LINE 2006 if poll_idx > oc_data.console_cnt then poll_idx = 1; 013636 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 013637 aa 5 00002 2351 00 lda pr5|2 oc_data.console_cnt 013640 aa 000066 7330 00 lrs 54 013641 aa 7 00355 1161 00 cmpq pr7|237 poll_idx 013642 aa 000003 6050 04 tpl 3,ic 013645 013643 aa 000001 2360 07 ldq 1,dl 013644 aa 7 00355 7561 00 stq pr7|237 poll_idx STATEMENT 1 ON LINE 2007 if ^oc_data.opc (poll_idx).no_device then do; 013645 aa 000400 2360 07 ldq 256,dl 013646 aa 000003 0760 07 adq 3,dl 013647 aa 000002 7320 00 qrs 2 013650 aa 000012 0760 07 adq 10,dl 013651 aa 6 00236 7561 00 stq pr6|158 013652 aa 7 00355 2361 00 ldq pr7|237 poll_idx 013653 aa 000034 4020 07 mpy 28,dl 013654 aa 000044 4020 07 mpy 36,dl 013655 aa 6 00235 7561 00 stq pr6|157 013656 aa 6 00236 2361 00 ldq pr6|158 013657 aa 000001 0760 07 adq 1,dl 013660 aa 777776 3760 07 anq 262142,dl 013661 aa 000003 7360 00 qls 3 013662 aa 6 00237 7561 00 stq pr6|159 013663 aa 6 00236 2361 00 ldq pr6|158 013664 aa 000042 0760 07 adq 34,dl 013665 aa 000001 0760 07 adq 1,dl 013666 aa 777776 3760 07 anq 262142,dl 013667 aa 6 00236 0761 00 adq pr6|158 013670 aa 000001 0760 07 adq 1,dl 013671 aa 777776 3760 07 anq 262142,dl 013672 aa 000044 7770 00 llr 36 013673 aa 000044 7330 00 lrs 36 013674 aa 6 00237 0331 00 adl pr6|159 013675 aa 000012 0330 07 adl 10,dl 013676 aa 000001 0760 07 adq 1,dl 013677 aa 777776 3760 07 anq 262142,dl 013700 aa 000002 0760 07 adq 2,dl 013701 aa 000044 4020 07 mpy 36,dl 013702 aa 000006 0760 07 adq 6,dl 013703 aa 6 00235 0761 00 adq pr6|157 013704 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 013705 aa 5 77744 00 0001 descb pr5|-28,1 oc_data.no_device 013706 aa 000000 00 0000 descb 0,0 013707 aa 777725 6010 04 tnz -43,ic 013634 STATEMENT 1 ON LINE 2008 if console_responds_to_bell (poll_idx) then do; 013710 aa 7 00355 3521 00 epp2 pr7|237 poll_idx 013711 aa 6 00242 2521 00 spri2 pr6|162 013712 aa 6 00235 3521 00 epp2 pr6|157 013713 aa 6 00244 2521 00 spri2 pr6|164 013714 aa 6 00240 3521 00 epp2 pr6|160 013715 aa 010000 4310 07 fld 4096,dl 013716 aa 2 00000 7571 00 staq pr2|0 013717 aa 773571 6700 04 tsp4 -2183,ic 007510 013720 aa 6 00235 2351 00 lda pr6|157 013721 aa 400000 3150 03 cana 131072,du 013722 aa 777712 6000 04 tze -54,ic 013634 STATEMENT 1 ON LINE 2009 call assign_bootload_console (oc_data.opc (poll_idx).name, code); 013723 aa 6 00040 3735 20 epp7 pr6|32,* 013724 aa 7 00355 2361 00 ldq pr7|237 poll_idx 013725 aa 000034 4020 07 mpy 28,dl 013726 aa 6 00235 7561 00 stq pr6|157 013727 aa 000400 2360 07 ldq 256,dl 013730 aa 000003 0760 07 adq 3,dl 013731 aa 000002 7320 00 qrs 2 013732 aa 000012 0760 07 adq 10,dl 013733 aa 6 00237 7561 00 stq pr6|159 013734 aa 000001 0760 07 adq 1,dl 013735 aa 777776 3760 07 anq 262142,dl 013736 aa 000003 7360 00 qls 3 013737 aa 6 00236 7561 00 stq pr6|158 013740 aa 6 00237 2361 00 ldq pr6|159 013741 aa 000042 0760 07 adq 34,dl 013742 aa 000001 0760 07 adq 1,dl 013743 aa 777776 3760 07 anq 262142,dl 013744 aa 6 00237 0761 00 adq pr6|159 013745 aa 000001 0760 07 adq 1,dl 013746 aa 777776 3760 07 anq 262142,dl 013747 aa 000044 7770 00 llr 36 013750 aa 000044 7330 00 lrs 36 013751 aa 6 00236 0331 00 adl pr6|158 013752 aa 000012 0330 07 adl 10,dl 013753 aa 000001 0760 07 adq 1,dl 013754 aa 777776 3760 07 anq 262142,dl 013755 aa 6 00235 0761 00 adq pr6|157 013756 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 013757 aa 5 77744 3521 06 epp2 pr5|-28,ql oc_data.name 013760 aa 6 00242 2521 00 spri2 pr6|162 013761 aa 7 00414 3521 20 epp2 pr7|268,* code 013762 aa 6 00244 2521 00 spri2 pr6|164 013763 aa 000001 7270 07 lxl7 1,dl 013764 aa 6 00240 6211 00 eax1 pr6|160 013765 aa 010000 4310 07 fld 4096,dl 013766 aa 772313 3520 04 epp2 -2869,ic 006301 = 000140627000 013767 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2010 if code = 0 then return; 013770 aa 6 00040 3735 20 epp7 pr6|32,* 013771 aa 7 00414 2361 20 ldq pr7|268,* code 013772 aa 777642 6010 04 tnz -94,ic 013634 013773 aa 6 00130 6101 00 rtcd pr6|88 STATEMENT 1 ON LINE 2011 end; STATEMENT 1 ON LINE 2012 end; STATEMENT 1 ON LINE 2013 end; 013774 aa 777640 7100 04 tra -96,ic 013634 STATEMENT 1 ON LINE 2015 end poll_for_console; 013775 aa 6 00130 6101 00 rtcd pr6|88 END PROCEDURE poll_for_console BEGIN PROCEDURE process_io ENTRY TO process_io STATEMENT 1 ON LINE 2017 process_io: proc (); 013776 da 000747200000 013777 aa 000140 6270 00 eax7 96 014000 aa 7 00034 3521 20 epp2 pr7|28,* 014001 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 014002 aa 000000000000 014003 aa 000000000000 STATEMENT 1 ON LINE 2028 if oc_entry_ptr = null () then goto BAIL_OUT; 014004 aa 6 00040 3735 20 epp7 pr6|32,* 014005 aa 7 00406 2371 00 ldaq pr7|262 oc_entry_ptr 014006 aa 764212 6770 04 eraq -6006,ic 000220 = 077777000043 000001000000 014007 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 014010 aa 000004 6010 04 tnz 4,ic 014014 014011 aa 772217 3520 04 epp2 -2929,ic 006230 = 000000431007 014012 aa 000001 7270 07 lxl7 1,dl 014013 aa 0 00657 7101 00 tra pr0|431 tra_ext_1 STATEMENT 1 ON LINE 2030 if oc_entry.io_in_progress then return; 014014 aa 6 00040 3735 20 epp7 pr6|32,* 014015 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 014016 aa 5 00002 2351 00 lda pr5|2 oc_entry.io_in_progress 014017 aa 000200 3150 03 cana 128,du 014020 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 2032 console_io_ptr = next_console_io (); 014021 aa 7 00410 3521 00 epp2 pr7|264 console_io_ptr 014022 aa 6 00102 2521 00 spri2 pr6|66 014023 aa 000001 7270 07 lxl7 1,dl 014024 aa 6 00100 6211 00 eax1 pr6|64 014025 aa 004000 4310 07 fld 2048,dl 014026 aa 777307 3520 04 epp2 -313,ic 013335 = 000120627000 014027 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2033 if console_io_ptr = null then return; 014030 aa 6 00040 3735 20 epp7 pr6|32,* 014031 aa 7 00410 2371 00 ldaq pr7|264 console_io_ptr 014032 aa 764166 6770 04 eraq -6026,ic 000220 = 077777000043 000001000000 014033 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 014034 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 2035 if console_io.read then do; 014035 aa 7 00410 3715 20 epp5 pr7|264,* console_io_ptr 014036 aa 5 00006 2351 00 lda pr5|6 console_io.read 014037 aa 200000 3150 03 cana 65536,du 014040 aa 000127 6000 04 tze 87,ic 014167 STATEMENT 1 ON LINE 2036 oc_entry.discard = false; 014041 aa 003600 2350 04 lda 1920,ic 017641 = 777757777777 014042 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 014043 aa 3 00002 3551 00 ansa pr3|2 oc_entry.discard STATEMENT 1 ON LINE 2037 wired_hardcore_data$abort_request = false; 014044 aa 6 00044 3701 20 epp4 pr6|36,* 014045 la 4 00052 4501 20 stz pr4|42,* wired_hardcore_data$abort_request STATEMENT 1 ON LINE 2038 console_io.in_progress = true; 014046 aa 020000 2350 03 lda 8192,du 014047 aa 5 00006 2551 00 orsa pr5|6 console_io.in_progress STATEMENT 1 ON LINE 2039 console_io.completed = false; 014050 aa 003574 2350 04 lda 1916,ic 017644 = 767777777777 014051 aa 5 00006 3551 00 ansa pr5|6 console_io.completed STATEMENT 1 ON LINE 2040 if oc_entry.prompt & ^console_io.prompted then do; 014052 aa 3 00002 2351 00 lda pr3|2 oc_entry.prompt 014053 aa 001000 3150 03 cana 512,du 014054 aa 000022 6000 04 tze 18,ic 014076 014055 aa 5 00006 2351 00 lda pr5|6 console_io.prompted 014056 aa 040000 3150 03 cana 16384,du 014057 aa 000017 6010 04 tnz 15,ic 014076 STATEMENT 1 ON LINE 2041 oc_entry.dcw_list_idx = PROMPT_DCW; 014060 aa 000013 2350 07 lda 11,dl 014061 aa 3 00006 5511 14 stba pr3|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 2042 console_io.prompted = true; 014062 aa 040000 2350 03 lda 16384,du 014063 aa 5 00006 2551 00 orsa pr5|6 console_io.prompted STATEMENT 1 ON LINE 2043 call log_console_event (SENT_PROMPT, console_io_ptr); 014064 aa 764062 3520 04 epp2 -6094,ic 000146 = 000000000014 014065 aa 6 00110 2521 00 spri2 pr6|72 014066 aa 7 00410 3521 00 epp2 pr7|264 console_io_ptr 014067 aa 6 00112 2521 00 spri2 pr6|74 014070 aa 000001 7270 07 lxl7 1,dl 014071 aa 6 00106 6211 00 eax1 pr6|70 014072 aa 010000 4310 07 fld 4096,dl 014073 aa 776703 3520 04 epp2 -573,ic 012776 = 000120627000 014074 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2044 end; 014075 aa 000063 7100 04 tra 51,ic 014160 STATEMENT 1 ON LINE 2045 else do; STATEMENT 1 ON LINE 2046 if oc_data.flags.printer_on | ^oc_entry.read_unechoed_option then do; 014076 aa 7 00404 3515 20 epp1 pr7|260,* oc_data_ptr 014077 aa 1 00003 2351 00 lda pr1|3 oc_data.printer_on 014100 aa 020000 3150 03 cana 8192,du 014101 aa 000004 6010 04 tnz 4,ic 014105 014102 aa 3 00002 2351 00 lda pr3|2 oc_entry.read_unechoed_option 014103 aa 000004 3150 03 cana 4,du 014104 aa 000020 6010 04 tnz 16,ic 014124 STATEMENT 1 ON LINE 2047 oc_entry.dcw_list_idx = READ_DCW; 014105 aa 000007 2350 07 lda 7,dl 014106 aa 3 00006 5511 14 stba pr3|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 2048 dcwp = addr (oc_entry.dcw_list (READ_DCW + 1)); 014107 aa 000007 7270 07 lxl7 7,dl 014110 aa 3 00013 3715 17 epp5 pr3|11,7 oc_entry.dcw_list 014111 aa 7 00400 6515 00 spri5 pr7|256 dcwp STATEMENT 1 ON LINE 2049 call log_console_event (STARTED_READ, console_io_ptr); 014112 aa 764037 3520 04 epp2 -6113,ic 000151 = 000000000006 014113 aa 6 00110 2521 00 spri2 pr6|72 014114 aa 7 00410 3521 00 epp2 pr7|264 console_io_ptr 014115 aa 6 00112 2521 00 spri2 pr6|74 014116 aa 000001 7270 07 lxl7 1,dl 014117 aa 6 00106 6211 00 eax1 pr6|70 014120 aa 010000 4310 07 fld 4096,dl 014121 aa 776655 3520 04 epp2 -595,ic 012776 = 000120627000 014122 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2050 end; 014123 aa 000017 7100 04 tra 15,ic 014142 STATEMENT 1 ON LINE 2051 else do; STATEMENT 1 ON LINE 2052 oc_entry.dcw_list_idx = READ_UNECHOED_DCW; 014124 aa 000011 2350 07 lda 9,dl 014125 aa 3 00006 5511 14 stba pr3|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 2053 dcwp = addr (oc_entry.dcw_list (READ_UNECHOED_DCW + 1)); 014126 aa 000011 7270 07 lxl7 9,dl 014127 aa 3 00013 3715 17 epp5 pr3|11,7 oc_entry.dcw_list 014130 aa 7 00400 6515 00 spri5 pr7|256 dcwp STATEMENT 1 ON LINE 2054 call log_console_event (STARTED_UNECHOED_READ, console_io_ptr); 014131 aa 764023 3520 04 epp2 -6125,ic 000154 = 000000000007 014132 aa 6 00110 2521 00 spri2 pr6|72 014133 aa 7 00410 3521 00 epp2 pr7|264 console_io_ptr 014134 aa 6 00112 2521 00 spri2 pr6|74 014135 aa 000001 7270 07 lxl7 1,dl 014136 aa 6 00106 6211 00 eax1 pr6|70 014137 aa 010000 4310 07 fld 4096,dl 014140 aa 776636 3520 04 epp2 -610,ic 012776 = 000120627000 014141 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2055 end; STATEMENT 1 ON LINE 2056 dcw.address = bit (binary (oc_data.abs_addr + /* get absolute address of read buffer..*/ wordno (addr (console_io.text)), 18)); 014142 aa 6 00040 3735 20 epp7 pr6|32,* 014143 aa 7 00410 3715 20 epp5 pr7|264,* console_io_ptr 014144 aa 5 00012 3735 00 epp7 pr5|10 console_io.text 014145 aa 7 00000 6361 00 eaq pr7|0 014146 aa 000022 7720 00 qrl 18 014147 aa 6 00040 3535 20 epp3 pr6|32,* 014150 aa 3 00404 3515 20 epp1 pr3|260,* oc_data_ptr 014151 aa 1 00017 0761 00 adq pr1|15 oc_data.abs_addr 014152 aa 000003 6050 04 tpl 3,ic 014155 014153 aa 0 00110 6761 00 erq pr0|72 = 777777777777 014154 aa 000001 0760 07 adq 1,dl 014155 aa 000066 7370 00 lls 54 014156 aa 3 00400 3715 20 epp5 pr3|256,* dcw.address 014157 aa 5 00000 5511 60 stba pr5|0,60 dcw.address STATEMENT 1 ON LINE 2058 end; 014160 aa 6 00116 6535 00 spri7 pr6|78 STATEMENT 1 ON LINE 2059 call initiate_io (); 014161 aa 000001 7270 07 lxl7 1,dl 014162 aa 6 00056 6211 00 eax1 pr6|46 014163 aa 000000 4310 07 fld 0,dl 014164 aa 774715 3520 04 epp2 -1587,ic 011101 = 000120627000 014165 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2060 return; 014166 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2061 end; STATEMENT 1 ON LINE 2063 else do; STATEMENT 1 ON LINE 2064 if console_io.alert & ^console_io.alerted then do; 014167 aa 5 00006 2351 00 lda pr5|6 console_io.alert 014170 aa 400000 3150 03 cana 131072,du 014171 aa 000023 6000 04 tze 19,ic 014214 014172 aa 5 00006 2351 00 lda pr5|6 console_io.alerted 014173 aa 100000 3150 03 cana 32768,du 014174 aa 000020 6010 04 tnz 16,ic 014214 STATEMENT 1 ON LINE 2065 oc_entry.dcw_list_idx = ALERT_DCW; 014175 aa 000002 2350 07 lda 2,dl 014176 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 014177 aa 3 00006 5511 14 stba pr3|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 2066 console_io.alerted = true; 014200 aa 100000 2350 03 lda 32768,du 014201 aa 5 00006 2551 00 orsa pr5|6 console_io.alerted STATEMENT 1 ON LINE 2067 call log_console_event (SENT_ALERT, console_io_ptr); 014202 aa 763756 3520 04 epp2 -6162,ic 000160 = 000000000012 014203 aa 6 00110 2521 00 spri2 pr6|72 014204 aa 7 00410 3521 00 epp2 pr7|264 console_io_ptr 014205 aa 6 00112 2521 00 spri2 pr6|74 014206 aa 000001 7270 07 lxl7 1,dl 014207 aa 6 00106 6211 00 eax1 pr6|70 014210 aa 010000 4310 07 fld 4096,dl 014211 aa 776565 3520 04 epp2 -651,ic 012776 = 000120627000 014212 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2068 end; 014213 aa 000067 7100 04 tra 55,ic 014302 STATEMENT 1 ON LINE 2069 else do; STATEMENT 1 ON LINE 2070 console_io.in_progress = true; 014214 aa 020000 2350 03 lda 8192,du 014215 aa 5 00006 2551 00 orsa pr5|6 console_io.in_progress STATEMENT 1 ON LINE 2071 dcwp = addr (oc_entry.dcw_list (WRITE_DCW + 1)); 014216 aa 000003 7270 07 lxl7 3,dl 014217 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 014220 aa 3 00013 3535 17 epp3 pr3|11,7 oc_entry.dcw_list 014221 aa 7 00400 2535 00 spri3 pr7|256 dcwp STATEMENT 1 ON LINE 2072 dcw.tally = bit (binary (console_io.leng, 12), 12); 014222 aa 5 00010 2351 00 lda pr5|8 console_io.leng 014223 aa 000066 7330 00 lrs 54 014224 aa 000003 6050 04 tpl 3,ic 014227 014225 aa 0 00110 6761 00 erq pr0|72 = 777777777777 014226 aa 000001 0760 07 adq 1,dl 014227 aa 000074 7370 00 lls 60 014230 aa 000030 7730 00 lrl 24 014231 aa 3 00000 7511 03 stca pr3|0,03 dcw.tally STATEMENT 1 ON LINE 2073 dcw.address = bit (binary (oc_data.abs_addr + /* get absolute address of write buffer.*/ wordno (addr (console_io.text)), 18)); 014232 aa 5 00012 3515 00 epp1 pr5|10 console_io.text 014233 aa 1 00000 6361 00 eaq pr1|0 014234 aa 000022 7720 00 qrl 18 014235 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 014236 aa 3 00017 0761 00 adq pr3|15 oc_data.abs_addr 014237 aa 000003 6050 04 tpl 3,ic 014242 014240 aa 0 00110 6761 00 erq pr0|72 = 777777777777 014241 aa 000001 0760 07 adq 1,dl 014242 aa 000066 7370 00 lls 54 014243 aa 7 00400 3715 20 epp5 pr7|256,* dcw.address 014244 aa 5 00000 5511 60 stba pr5|0,60 dcw.address STATEMENT 1 ON LINE 2075 oc_entry.dcw_list_idx = WRITE_DCW; 014245 aa 000003 2350 07 lda 3,dl 014246 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 014247 aa 5 00006 5511 14 stba pr5|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 2076 if console_io_ptr = addr (oc_data.priority_io) then call log_console_event (PRIORITY_OUTPUT, console_io_ptr); 014250 aa 6 00120 2515 00 spri1 pr6|80 014251 aa 3 00042 3715 00 epp5 pr3|34 oc_data.priority_io 014252 aa 6 00122 6515 00 spri5 pr6|82 014253 aa 6 00122 2371 00 ldaq pr6|82 014254 aa 7 00410 6771 00 eraq pr7|264 console_io_ptr 014255 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 014256 aa 000013 6010 04 tnz 11,ic 014271 014257 aa 763714 3520 04 epp2 -6196,ic 000173 = 000000000003 014260 aa 6 00110 2521 00 spri2 pr6|72 014261 aa 7 00410 3521 00 epp2 pr7|264 console_io_ptr 014262 aa 6 00112 2521 00 spri2 pr6|74 014263 aa 000001 7270 07 lxl7 1,dl 014264 aa 6 00106 6211 00 eax1 pr6|70 014265 aa 010000 4310 07 fld 4096,dl 014266 aa 776510 3520 04 epp2 -696,ic 012776 = 000120627000 014267 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 014270 aa 000012 7100 04 tra 10,ic 014302 STATEMENT 1 ON LINE 2078 else call log_console_event (STARTED_WRITE, console_io_ptr); 014271 aa 763657 3520 04 epp2 -6225,ic 000150 = 000000000010 014272 aa 6 00110 2521 00 spri2 pr6|72 014273 aa 7 00410 3521 00 epp2 pr7|264 console_io_ptr 014274 aa 6 00112 2521 00 spri2 pr6|74 014275 aa 000001 7270 07 lxl7 1,dl 014276 aa 6 00106 6211 00 eax1 pr6|70 014277 aa 010000 4310 07 fld 4096,dl 014300 aa 776476 3520 04 epp2 -706,ic 012776 = 000120627000 014301 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2079 end; STATEMENT 1 ON LINE 2080 call initiate_io (); 014302 aa 000001 7270 07 lxl7 1,dl 014303 aa 6 00056 6211 00 eax1 pr6|46 014304 aa 000000 4310 07 fld 0,dl 014305 aa 774574 3520 04 epp2 -1668,ic 011101 = 000120627000 014306 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2081 return; 014307 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2082 end; STATEMENT 1 ON LINE 2084 end process_io; END PROCEDURE process_io BEGIN PROCEDURE process_io_status ENTRY TO process_io_status STATEMENT 1 ON LINE 2086 process_io_status: proc (); 014310 da 000757200000 014311 aa 000520 6270 00 eax7 336 014312 aa 7 00034 3521 20 epp2 pr7|28,* 014313 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 014314 aa 000000000000 014315 aa 000000000000 STATEMENT 1 ON LINE 2095 if oc_entry.got_special_int then do; 014316 aa 6 00040 3735 20 epp7 pr6|32,* 014317 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 014320 aa 5 00002 2351 00 lda pr5|2 oc_entry.got_special_int 014321 aa 000100 3150 03 cana 64,du 014322 aa 000040 6000 04 tze 32,ic 014362 STATEMENT 1 ON LINE 2096 call log_console_event (GOT_SPECIAL_INT, oc_data.io_ptr); 014323 aa 763654 3520 04 epp2 -6228,ic 000177 = 000000000002 014324 aa 6 00404 2521 00 spri2 pr6|260 014325 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 014326 aa 3 00022 3521 00 epp2 pr3|18 oc_data.io_ptr 014327 aa 6 00406 2521 00 spri2 pr6|262 014330 aa 000001 7270 07 lxl7 1,dl 014331 aa 6 00402 6211 00 eax1 pr6|258 014332 aa 010000 4310 07 fld 4096,dl 014333 aa 776443 3520 04 epp2 -733,ic 012776 = 000120627000 014334 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2097 oc_entry.got_special_int = false; 014335 aa 003302 2350 04 lda 1730,ic 017637 = 777677777777 014336 aa 6 00040 3735 20 epp7 pr6|32,* 014337 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 014340 aa 5 00002 3551 00 ansa pr5|2 oc_entry.got_special_int STATEMENT 1 ON LINE 2098 if oc_entry.oper_request then do; 014341 aa 5 00002 2351 00 lda pr5|2 oc_entry.oper_request 014342 aa 000040 3150 03 cana 32,du 014343 aa 000014 6000 04 tze 12,ic 014357 STATEMENT 1 ON LINE 2099 if ^oc_entry.discard then do; 014344 aa 5 00002 2351 00 lda pr5|2 oc_entry.discard 014345 aa 000020 3150 03 cana 16,du 014346 aa 000010 6010 04 tnz 8,ic 014356 STATEMENT 1 ON LINE 2100 oc_entry.discard = true; 014347 aa 000020 2350 03 lda 16,du 014350 aa 5 00002 2551 00 orsa pr5|2 oc_entry.discard STATEMENT 1 ON LINE 2101 oc_entry.discarded = false; 014351 aa 003267 2350 04 lda 1719,ic 017640 = 777767777777 014352 aa 5 00002 3551 00 ansa pr5|2 oc_entry.discarded STATEMENT 1 ON LINE 2102 wired_hardcore_data$abort_request = true; 014353 aa 400000 2350 03 lda 131072,du 014354 aa 6 00044 3701 20 epp4 pr6|36,* 014355 la 4 00052 7551 20 sta pr4|42,* wired_hardcore_data$abort_request STATEMENT 1 ON LINE 2103 end; STATEMENT 1 ON LINE 2104 return; 014356 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2105 end; STATEMENT 1 ON LINE 2106 else oc_entry.oper_request = true; 014357 aa 000040 2350 03 lda 32,du 014360 aa 5 00002 2551 00 orsa pr5|2 oc_entry.oper_request STATEMENT 1 ON LINE 2107 return; 014361 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2108 end; STATEMENT 1 ON LINE 2110 if ^oc_entry.io_in_progress then return; 014362 aa 5 00002 2351 00 lda pr5|2 oc_entry.io_in_progress 014363 aa 000200 3150 03 cana 128,du 014364 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 2112 if timeout () & ^io_status.t then do; 014365 aa 003207 3520 04 epp2 1671,ic 017574 = 000002000000 014366 aa 002565 6700 04 tsp4 1397,ic 017153 014367 aa 6 00040 3735 20 epp7 pr6|32,* 014370 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 014371 aa 5 00020 2351 20 lda pr5|16,* io_status.t 014372 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 014373 aa 0 00002 6751 00 era pr0|2 = 400000000000 014374 aa 6 00413 7551 00 sta pr6|267 014375 aa 6 00412 2351 00 lda pr6|266 014376 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 014377 aa 6 00413 3151 00 cana pr6|267 014400 aa 000013 6000 04 tze 11,ic 014413 STATEMENT 1 ON LINE 2113 call io_manager$mask (oc_entry.device_idx); 014401 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 014402 aa 3 00005 3521 00 epp2 pr3|5 oc_entry.device_idx 014403 aa 6 00404 2521 00 spri2 pr6|260 014404 aa 6 00402 6211 00 eax1 pr6|258 014405 aa 004000 4310 07 fld 2048,dl 014406 aa 6 00044 3701 20 epp4 pr6|36,* 014407 la 4 00122 3521 20 epp2 pr4|82,* io_manager$mask 014410 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2114 call retry_io (); 014411 aa 001765 6700 04 tsp4 1013,ic 016376 STATEMENT 1 ON LINE 2115 return; 014412 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2116 end; STATEMENT 1 ON LINE 2118 if ^io_status.t then return; 014413 aa 6 00413 2351 00 lda pr6|267 014414 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 2120 oc_entry.status_word = unspec (io_status); 014415 aa 5 00020 2351 20 lda pr5|16,* 014416 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 014417 aa 3 00012 7551 00 sta pr3|10 oc_entry.status_word STATEMENT 1 ON LINE 2121 io_status.t = false; 014420 aa 003223 2350 04 lda 1683,ic 017643 = 377777777777 014421 aa 5 00020 3551 20 ansa pr5|16,* io_status.t STATEMENT 1 ON LINE 2134 if ^entered_via_interrupt then do; 014422 aa 7 00122 2351 00 lda pr7|82 entered_via_interrupt 014423 aa 000020 6010 04 tnz 16,ic 014443 STATEMENT 1 ON LINE 2135 if io_status.initiate & ^oc_entry.pcw_io & ^oc_entry.imu then return; 014424 aa 5 00020 2351 20 lda pr5|16,* io_status.initiate 014425 aa 000002 3150 03 cana 2,du 014426 aa 000004 6000 04 tze 4,ic 014432 014427 aa 3 00002 2351 00 lda pr3|2 oc_entry.imu 014430 aa 000402 3150 03 cana 258,du 014431 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 2136 wait_timer = clock () + 5000; 014432 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 014433 aa 011610 0330 07 adl 5000,dl 014434 aa 6 00040 3735 20 epp7 pr6|32,* 014435 aa 7 00362 7571 00 staq pr7|242 wait_timer STATEMENT 1 ON LINE 2137 do while (clock () < wait_timer); 014436 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 014437 aa 6 00040 3735 20 epp7 pr6|32,* 014440 aa 7 00362 1171 00 cmpaq pr7|242 wait_timer 014441 aa 000002 6050 04 tpl 2,ic 014443 STATEMENT 1 ON LINE 2138 end; 014442 aa 777774 7100 04 tra -4,ic 014436 STATEMENT 1 ON LINE 2139 end; STATEMENT 1 ON LINE 2141 if io_status.power | io_status.channel_stat | io_status.central_stat then do; 014443 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 014444 aa 5 00020 2351 20 lda pr5|16,* io_status.central_stat 014445 aa 000025 7350 00 als 21 014446 aa 0 00006 3771 00 anaq pr0|6 = 700000000000 000000000000 014447 aa 6 00413 7551 00 sta pr6|267 io_status.central_stat 014450 aa 5 00020 2351 20 lda pr5|16,* io_status.channel_stat 014451 aa 000022 7350 00 als 18 014452 aa 0 00006 3771 00 anaq pr0|6 = 700000000000 000000000000 014453 aa 6 00412 7551 00 sta pr6|266 io_status.channel_stat 014454 aa 5 00020 2351 20 lda pr5|16,* io_status.power 014455 aa 000001 7350 00 als 1 014456 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 014457 aa 6 00412 2751 00 ora pr6|266 io_status.channel_stat 014460 aa 6 00413 2751 00 ora pr6|267 io_status.central_stat 014461 aa 000013 6000 04 tze 11,ic 014474 STATEMENT 1 ON LINE 2142 call io_manager$mask (oc_entry.device_idx); 014462 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 014463 aa 3 00005 3521 00 epp2 pr3|5 oc_entry.device_idx 014464 aa 6 00404 2521 00 spri2 pr6|260 014465 aa 6 00402 6211 00 eax1 pr6|258 014466 aa 004000 4310 07 fld 2048,dl 014467 aa 6 00044 3701 20 epp4 pr6|36,* 014470 la 4 00122 3521 20 epp2 pr4|82,* io_manager$mask 014471 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2143 call retry_io (); 014472 aa 001704 6700 04 tsp4 964,ic 016376 STATEMENT 1 ON LINE 2144 return; 014473 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2145 end; STATEMENT 1 ON LINE 2147 if io_status_overlay.major = "00"b3 then do; 014474 aa 5 00020 3535 20 epp3 pr5|16,* oc_data.status_ptr 014475 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 014476 aa 3 00000 00 0006 descb pr3|0,6 io_status_overlay.major 014477 aa 6 00413 00 0044 descb pr6|267,36 io_status_overlay.major 014500 aa 6 00413 2351 00 lda pr6|267 io_status_overlay.major 014501 aa 000012 6010 04 tnz 10,ic 014513 STATEMENT 1 ON LINE 2148 if io_status.initiate & ^oc_entry.pcw_io & ^oc_entry.imu then return; 014502 aa 3 00000 2351 00 lda pr3|0 io_status.initiate 014503 aa 000002 3150 03 cana 2,du 014504 aa 000005 6000 04 tze 5,ic 014511 014505 aa 7 00406 3515 20 epp1 pr7|262,* oc_entry_ptr 014506 aa 1 00002 2351 00 lda pr1|2 oc_entry.imu 014507 aa 000402 3150 03 cana 258,du 014510 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 2149 call terminate_io (); 014511 aa 002100 6700 04 tsp4 1088,ic 016611 STATEMENT 1 ON LINE 2150 return; 014512 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2151 end; STATEMENT 1 ON LINE 2153 if io_status_overlay.major = "01"b3 then do; 014513 aa 010000 1150 03 cmpa 4096,du 014514 aa 000003 6010 04 tnz 3,ic 014517 STATEMENT 1 ON LINE 2154 call retry_io (); 014515 aa 001661 6700 04 tsp4 945,ic 016376 STATEMENT 1 ON LINE 2155 return; 014516 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2156 end; STATEMENT 1 ON LINE 2158 if io_status_overlay.major = "02"b3 & /* if DEVICE_ATTENTION.. */ (oc_entry.dcw_list_idx = LOCK_MCA_DCW | oc_entry.dcw_list_idx = UNLOCK_MCA_DCW) then do; 014517 aa 7 00406 3515 20 epp1 pr7|262,* oc_entry_ptr 014520 aa 1 00006 2351 00 lda pr1|6 oc_entry.dcw_list_idx 014521 aa 000022 7350 00 als 18 014522 aa 000066 7330 00 lrs 54 014523 aa 6 00412 7561 00 stq pr6|266 oc_entry.dcw_list_idx 014524 aa 6 00413 2351 00 lda pr6|267 io_status_overlay.major 014525 aa 020000 1150 03 cmpa 8192,du 014526 aa 000007 6010 04 tnz 7,ic 014535 014527 aa 000017 1160 07 cmpq 15,dl 014530 aa 000003 6000 04 tze 3,ic 014533 014531 aa 000020 1160 07 cmpq 16,dl 014532 aa 000003 6010 04 tnz 3,ic 014535 STATEMENT 1 ON LINE 2161 call terminate_io (); 014533 aa 002056 6700 04 tsp4 1070,ic 016611 STATEMENT 1 ON LINE 2162 return; 014534 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2163 end; STATEMENT 1 ON LINE 2165 if io_status_overlay.major ^= "03"b3 | /* if ^DATA_ALERT... */ (oc_entry.dcw_list_idx ^= READ_DCW & oc_entry.dcw_list_idx ^= READ_UNECHOED_DCW) then do; 014535 aa 030000 1150 03 cmpa 12288,du 014536 aa 000005 6010 04 tnz 5,ic 014543 014537 aa 000007 1160 07 cmpq 7,dl 014540 aa 000014 6000 04 tze 12,ic 014554 014541 aa 000011 1160 07 cmpq 9,dl 014542 aa 000012 6000 04 tze 10,ic 014554 STATEMENT 1 ON LINE 2168 call io_manager$mask (oc_entry.device_idx); 014543 aa 1 00005 3521 00 epp2 pr1|5 oc_entry.device_idx 014544 aa 6 00404 2521 00 spri2 pr6|260 014545 aa 6 00402 6211 00 eax1 pr6|258 014546 aa 004000 4310 07 fld 2048,dl 014547 aa 6 00044 3701 20 epp4 pr6|36,* 014550 la 4 00122 3521 20 epp2 pr4|82,* io_manager$mask 014551 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2169 call retry_io (); 014552 aa 001624 6700 04 tsp4 916,ic 016376 STATEMENT 1 ON LINE 2170 return; 014553 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2171 end; STATEMENT 1 ON LINE 2173 console_io_ptr = oc_data.io_ptr; 014554 aa 5 00022 3535 20 epp3 pr5|18,* oc_data.io_ptr 014555 aa 7 00410 2535 00 spri3 pr7|264 console_io_ptr STATEMENT 1 ON LINE 2175 if io_status_overlay.sub = "10"b3 then do; 014556 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 014557 aa 5 00020 3515 20 epp1 pr5|16,* oc_data.status_ptr 014560 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 014561 aa 1 00000 06 0006 descb pr1|0(6),6 io_status_overlay.sub 014562 aa 6 00412 00 0044 descb pr6|266,36 io_status_overlay.sub 014563 aa 6 00412 2351 00 lda pr6|266 io_status_overlay.sub 014564 aa 100000 1150 03 cmpa 32768,du 014565 aa 000017 6010 04 tnz 15,ic 014604 STATEMENT 1 ON LINE 2176 oc_entry.oper_request = false; 014566 aa 003050 2350 04 lda 1576,ic 017636 = 777737777777 014567 aa 7 00406 3515 20 epp1 pr7|262,* oc_entry_ptr 014570 aa 1 00002 3551 00 ansa pr1|2 oc_entry.oper_request STATEMENT 1 ON LINE 2177 oc_entry.discard = false; 014571 aa 003050 2350 04 lda 1576,ic 017641 = 777757777777 014572 aa 1 00002 3551 00 ansa pr1|2 oc_entry.discard STATEMENT 1 ON LINE 2178 oc_entry.discarded = false; 014573 aa 003045 2350 04 lda 1573,ic 017640 = 777767777777 014574 aa 1 00002 3551 00 ansa pr1|2 oc_entry.discarded STATEMENT 1 ON LINE 2179 call reset_read (); 014575 aa 000001 7270 07 lxl7 1,dl 014576 aa 6 00056 6211 00 eax1 pr6|46 014577 aa 000000 4310 07 fld 0,dl 014600 aa 001533 3520 04 epp2 859,ic 016333 = 000100627000 014601 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2180 call send_newline (); 014602 aa 001762 6700 04 tsp4 1010,ic 016564 STATEMENT 1 ON LINE 2181 return; 014603 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2182 end; STATEMENT 1 ON LINE 2184 if io_status_overlay.sub = "04"b3 | /* if OPERATOR INPUT ERROR or... */ io_status_overlay.sub = "40"b3 then do; 014604 aa 040000 1150 03 cmpa 16384,du 014605 aa 000003 6000 04 tze 3,ic 014610 014606 aa 400000 1150 03 cmpa 131072,du 014607 aa 000010 6010 04 tnz 8,ic 014617 STATEMENT 1 ON LINE 2186 call reset_read (); 014610 aa 000001 7270 07 lxl7 1,dl 014611 aa 6 00056 6211 00 eax1 pr6|46 014612 aa 000000 4310 07 fld 0,dl 014613 aa 001520 3520 04 epp2 848,ic 016333 = 000100627000 014614 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2187 call send_newline (); 014615 aa 001747 6700 04 tsp4 999,ic 016564 STATEMENT 1 ON LINE 2188 return; 014616 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2189 end; STATEMENT 1 ON LINE 2191 call io_manager$mask (oc_entry.device_idx); 014617 aa 7 00406 3515 20 epp1 pr7|262,* oc_entry_ptr 014620 aa 1 00005 3521 00 epp2 pr1|5 oc_entry.device_idx 014621 aa 6 00404 2521 00 spri2 pr6|260 014622 aa 6 00402 6211 00 eax1 pr6|258 014623 aa 004000 4310 07 fld 2048,dl 014624 aa 6 00044 3701 20 epp4 pr6|36,* 014625 la 4 00122 3521 20 epp2 pr4|82,* io_manager$mask 014626 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2192 call retry_io (); 014627 aa 001547 6700 04 tsp4 871,ic 016376 STATEMENT 1 ON LINE 2194 return; 014630 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2196 end process_io_status; END PROCEDURE process_io_status BEGIN PROCEDURE queue_console_io ENTRY TO queue_console_io STATEMENT 1 ON LINE 2198 queue_console_io: proc () returns (fixed bin (71)); 014631 aa 6 00610 6501 00 spri4 pr6|392 014632 aa 6 00612 2521 00 spri2 pr6|394 STATEMENT 1 ON LINE 2209 local_io.in_progress = false; 014633 aa 002770 2350 04 lda 1528,ic 017623 = 757777777777 014634 aa 6 00416 3735 20 epp7 pr6|270,* 014635 aa 7 00006 3551 00 ansa pr7|6 local_io.in_progress STATEMENT 1 ON LINE 2210 local_io.completed = false; 014636 aa 003006 2350 04 lda 1542,ic 017644 = 767777777777 014637 aa 7 00006 3551 00 ansa pr7|6 local_io.completed STATEMENT 1 ON LINE 2211 local_io.alerted = false; 014640 aa 003006 2350 04 lda 1542,ic 017646 = 677777777777 014641 aa 7 00006 3551 00 ansa pr7|6 local_io.alerted STATEMENT 1 ON LINE 2212 local_io.prompted = false; 014642 aa 002760 2350 04 lda 1520,ic 017622 = 737777777777 014643 aa 7 00006 3551 00 ansa pr7|6 local_io.prompted STATEMENT 1 ON LINE 2213 local_io.retry_reset = false; 014644 aa 002750 2350 04 lda 1512,ic 017614 = 773777777777 014645 aa 7 00006 3551 00 ansa pr7|6 local_io.retry_reset STATEMENT 1 ON LINE 2214 local_io.console = ""; 014646 aa 763272 2350 04 lda -6470,ic 000140 = 040040040040 014647 aa 7 00005 7551 00 sta pr7|5 local_io.console STATEMENT 1 ON LINE 2216 if local_io.read then do; 014650 aa 7 00006 2351 00 lda pr7|6 local_io.read 014651 aa 200000 3150 03 cana 65536,du 014652 aa 000153 6000 04 tze 107,ic 015025 STATEMENT 1 ON LINE 2217 if oc_data.last_read_queued = -1 then do; 014653 aa 000001 3360 07 lcq 1,dl 014654 aa 000044 7770 00 llr 36 014655 aa 000044 7330 00 lrs 36 014656 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 014657 aa 5 00024 1171 00 cmpaq pr5|20 oc_data.last_read_queued 014660 aa 000004 6010 04 tnz 4,ic 014664 STATEMENT 1 ON LINE 2218 oc_data.reader_process_id = pds$process_id; 014661 aa 6 00044 3701 20 epp4 pr6|36,* 014662 la 4 00100 2351 20 lda pr4|64,* pds$process_id 014663 aa 5 00037 7551 00 sta pr5|31 oc_data.reader_process_id STATEMENT 1 ON LINE 2219 end; STATEMENT 1 ON LINE 2220 oc_data.stacked_read_cnt = oc_data.stacked_read_cnt + 1; 014664 aa 5 00041 2351 00 lda pr5|33 oc_data.stacked_read_cnt 014665 aa 000066 7330 00 lrs 54 014666 aa 000001 0760 07 adq 1,dl 014667 aa 000066 7370 00 lls 54 014670 aa 5 00041 5511 60 stba pr5|33,60 oc_data.stacked_read_cnt STATEMENT 1 ON LINE 2221 if oc_data.stacked_read_cnt > 1 then do; 014671 aa 5 00041 2351 00 lda pr5|33 oc_data.stacked_read_cnt 014672 aa 000066 7330 00 lrs 54 014673 aa 000001 1160 07 cmpq 1,dl 014674 aa 000053 6044 04 tmoz 43,ic 014747 STATEMENT 1 ON LINE 2222 call log_console_event (PUSHED_READ, addr (oc_data.read_io)); 014675 aa 000400 2360 07 ldq 256,dl 014676 aa 000003 0760 07 adq 3,dl 014677 aa 000002 7320 00 qrs 2 014700 aa 000054 0760 07 adq 44,dl 014701 aa 000001 0760 07 adq 1,dl 014702 aa 777776 3760 07 anq 262142,dl 014703 aa 5 00000 3535 06 epp3 pr5|0,ql oc_data.read_io 014704 aa 6 01400 2535 00 spri3 pr6|768 014705 aa 763125 3520 04 epp2 -6571,ic 000032 = 000000000025 014706 aa 6 01404 2521 00 spri2 pr6|772 014707 aa 6 01400 3521 00 epp2 pr6|768 014710 aa 6 01406 2521 00 spri2 pr6|774 014711 aa 6 01402 6211 00 eax1 pr6|770 014712 aa 010000 4310 07 fld 4096,dl 014713 aa 776063 3520 04 epp2 -973,ic 012776 = 000120627000 014714 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2223 oc_data.meters.pushed_read_cnt = oc_data.meters.pushed_read_cnt + 1; 014715 aa 000400 2360 07 ldq 256,dl 014716 aa 000003 0760 07 adq 3,dl 014717 aa 000002 7320 00 qrs 2 014720 aa 000012 0760 07 adq 10,dl 014721 aa 6 01412 7561 00 stq pr6|778 014722 aa 000001 0760 07 adq 1,dl 014723 aa 777776 3760 07 anq 262142,dl 014724 aa 000003 7360 00 qls 3 014725 aa 6 01413 7561 00 stq pr6|779 014726 aa 6 01412 2361 00 ldq pr6|778 014727 aa 000042 0760 07 adq 34,dl 014730 aa 000001 0760 07 adq 1,dl 014731 aa 777776 3760 07 anq 262142,dl 014732 aa 6 01412 0761 00 adq pr6|778 014733 aa 000001 0760 07 adq 1,dl 014734 aa 777776 3760 07 anq 262142,dl 014735 aa 6 01413 0761 00 adq pr6|779 014736 aa 000000 6270 06 eax7 0,ql 014737 aa 6 00404 2351 66 lda pr6|260,*ql oc_data.pushed_read_cnt 014740 aa 000044 7330 00 lrs 36 014741 aa 000001 0330 07 adl 1,dl 014742 aa 6 00404 7561 77 stq pr6|260,*7 oc_data.pushed_read_cnt STATEMENT 1 ON LINE 2224 return (0); 014743 aa 763253 2370 04 ldaq -6485,ic 000216 = 000000000000 000000000000 014744 aa 6 00612 3735 20 epp7 pr6|394,* 014745 aa 7 00002 7571 20 staq pr7|2,* 014746 aa 6 00610 6101 00 rtcd pr6|392 STATEMENT 1 ON LINE 2225 end; STATEMENT 1 ON LINE 2226 local_io.completed = true; 014747 aa 010000 2350 03 lda 4096,du 014750 aa 7 00006 2551 00 orsa pr7|6 local_io.completed STATEMENT 1 ON LINE 2227 local_io.leng = 0; 014751 aa 000000 2350 07 lda 0,dl 014752 aa 7 00010 5511 60 stba pr7|8,60 local_io.leng STATEMENT 1 ON LINE 2228 local_io.text = ""; 014753 aa 000400 7270 07 lxl7 256,dl 014754 aa 040 140 100 400 mlr (),(pr,rl),fill(040) 014755 aa 000000 00 0000 desc9a 0,0 014756 aa 7 00012 00 0017 desc9a pr7|10,x7 local_io.text STATEMENT 1 ON LINE 2229 local_io.sequence_no = 0; 014757 aa 7 00007 4501 00 stz pr7|7 local_io.sequence_no STATEMENT 1 ON LINE 2230 local_io.time_queued = clock (); 014760 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 014761 aa 6 00416 7571 20 staq pr6|270,* local_io.time_queued STATEMENT 1 ON LINE 2231 local_io.process_id = pds$process_id; 014762 aa 6 00044 3701 20 epp4 pr6|36,* 014763 la 4 00100 2351 20 lda pr4|64,* pds$process_id 014764 aa 6 00416 3735 20 epp7 pr6|270,* 014765 aa 7 00004 7551 00 sta pr7|4 local_io.process_id STATEMENT 1 ON LINE 2232 oc_data.read_io = local_io; 014766 aa 000400 2360 07 ldq 256,dl 014767 aa 000003 0760 07 adq 3,dl 014770 aa 000002 7320 00 qrs 2 014771 aa 000012 0760 07 adq 10,dl 014772 aa 6 01413 7561 00 stq pr6|779 014773 aa 000042 0760 07 adq 34,dl 014774 aa 000001 0760 07 adq 1,dl 014775 aa 777776 3760 07 anq 262142,dl 014776 aa 000000 6260 06 eax6 0,ql 014777 aa 6 01413 2361 00 ldq pr6|779 015000 aa 000002 7360 00 qls 2 015001 aa 5 00000 3535 16 epp3 pr5|0,6 oc_data.read_io 015002 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 015003 aa 7 00000 00 0006 desc9a pr7|0,ql local_io 015004 aa 3 00000 00 0006 desc9a pr3|0,ql oc_data.read_io STATEMENT 1 ON LINE 2233 oc_data.last_read_queued = local_io.time_queued; 015005 aa 7 00000 2371 00 ldaq pr7|0 local_io.time_queued 015006 aa 5 00024 7571 00 staq pr5|20 oc_data.last_read_queued STATEMENT 1 ON LINE 2234 call log_console_event (QUEUED_READ, addr (oc_data.read_io)); 015007 aa 5 00000 3515 16 epp1 pr5|0,6 oc_data.read_io 015010 aa 6 01400 2515 00 spri1 pr6|768 015011 aa 763160 3520 04 epp2 -6544,ic 000171 = 000000000004 015012 aa 6 01404 2521 00 spri2 pr6|772 015013 aa 6 01400 3521 00 epp2 pr6|768 015014 aa 6 01406 2521 00 spri2 pr6|774 015015 aa 6 01402 6211 00 eax1 pr6|770 015016 aa 010000 4310 07 fld 4096,dl 015017 aa 775757 3520 04 epp2 -1041,ic 012776 = 000120627000 015020 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2235 return (local_io.time_queued); 015021 aa 6 00416 2371 20 ldaq pr6|270,* local_io.time_queued 015022 aa 6 00612 3735 20 epp7 pr6|394,* 015023 aa 7 00002 7571 20 staq pr7|2,* 015024 aa 6 00610 6101 00 rtcd pr6|392 STATEMENT 1 ON LINE 2236 end; STATEMENT 1 ON LINE 2237 else do; STATEMENT 1 ON LINE 2238 if ^oc_data.write_queue (oc_data.next_free_write).completed then do; 015025 aa 000400 2360 07 ldq 256,dl 015026 aa 000003 0760 07 adq 3,dl 015027 aa 000002 7320 00 qrs 2 015030 aa 000012 0760 07 adq 10,dl 015031 aa 6 01412 7561 00 stq pr6|778 015032 aa 000001 0760 07 adq 1,dl 015033 aa 777776 3760 07 anq 262142,dl 015034 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 015035 aa 5 00040 2351 00 lda pr5|32 oc_data.next_free_write 015036 aa 6 01414 7561 00 stq pr6|780 015037 aa 000066 7330 00 lrs 54 015040 aa 6 01413 7561 00 stq pr6|779 015041 aa 6 01412 2361 00 ldq pr6|778 015042 aa 000042 0760 07 adq 34,dl 015043 aa 000001 0760 07 adq 1,dl 015044 aa 777776 3760 07 anq 262142,dl 015045 aa 6 01412 0761 00 adq pr6|778 015046 aa 000001 0760 07 adq 1,dl 015047 aa 777776 3760 07 anq 262142,dl 015050 aa 6 01415 7561 00 stq pr6|781 015051 aa 6 01414 2361 00 ldq pr6|780 015052 aa 6 01413 4021 00 mpy pr6|779 015053 aa 6 01414 1761 00 sbq pr6|780 015054 aa 000044 4020 07 mpy 36,dl 015055 aa 6 01416 7561 00 stq pr6|782 015056 aa 6 01415 2361 00 ldq pr6|781 015057 aa 000006 0760 07 adq 6,dl 015060 aa 000044 4020 07 mpy 36,dl 015061 aa 000005 0760 07 adq 5,dl 015062 aa 6 01416 0761 00 adq pr6|782 015063 aa 6 01416 7561 00 stq pr6|782 015064 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 015065 aa 5 00000 00 0001 descb pr5|0,1 oc_data.completed 015066 aa 000000 00 0000 descb 0,0 015067 aa 000016 6010 04 tnz 14,ic 015105 STATEMENT 1 ON LINE 2239 oc_data.meters.write_q_full_cnt = oc_data.meters.write_q_full_cnt + 1; 015070 aa 6 01414 2361 00 ldq pr6|780 015071 aa 000003 7360 00 qls 3 015072 aa 6 01415 0761 00 adq pr6|781 015073 aa 000000 6270 06 eax7 0,ql 015074 aa 5 00001 2351 06 lda pr5|1,ql oc_data.write_q_full_cnt 015075 aa 000044 7330 00 lrs 36 015076 aa 000001 0330 07 adl 1,dl 015077 aa 5 00001 7561 17 stq pr5|1,7 oc_data.write_q_full_cnt STATEMENT 1 ON LINE 2240 oc_data.write_q_full = true; 015100 aa 010000 2350 03 lda 4096,du 015101 aa 5 00003 2551 00 orsa pr5|3 oc_data.write_q_full STATEMENT 1 ON LINE 2241 return (0); 015102 aa 763114 2370 04 ldaq -6580,ic 000216 = 000000000000 000000000000 015103 aa 2 00002 7571 20 staq pr2|2,* 015104 aa 6 00610 6101 00 rtcd pr6|392 STATEMENT 1 ON LINE 2242 end; STATEMENT 1 ON LINE 2243 else do; STATEMENT 1 ON LINE 2244 local_io.time_queued = clock (); 015105 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 015106 aa 6 00416 7571 20 staq pr6|270,* local_io.time_queued STATEMENT 1 ON LINE 2245 local_io.process_id = pds$process_id; 015107 aa 6 00044 3701 20 epp4 pr6|36,* 015110 la 4 00100 2351 20 lda pr4|64,* pds$process_id 015111 aa 6 00416 3735 20 epp7 pr6|270,* 015112 aa 7 00004 7551 00 sta pr7|4 local_io.process_id STATEMENT 1 ON LINE 2246 console_io_ptr = addr (oc_data.write_queue (oc_data.next_free_write)); 015113 aa 6 01414 2361 00 ldq pr6|780 015114 aa 6 01413 4021 00 mpy pr6|779 015115 aa 6 01414 1761 00 sbq pr6|780 015116 aa 6 01415 0761 00 adq pr6|781 015117 aa 5 00000 3535 06 epp3 pr5|0,ql oc_data.write_queue 015120 aa 6 00410 2535 00 spri3 pr6|264 console_io_ptr STATEMENT 1 ON LINE 2247 console_io = local_io; 015121 aa 6 01412 2361 00 ldq pr6|778 015122 aa 000002 7360 00 qls 2 015123 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 015124 aa 7 00000 00 0006 desc9a pr7|0,ql local_io 015125 aa 3 00000 00 0006 desc9a pr3|0,ql console_io STATEMENT 1 ON LINE 2248 oc_data.last_write_queued = local_io.time_queued; 015126 aa 7 00000 2371 00 ldaq pr7|0 local_io.time_queued 015127 aa 6 00404 3715 20 epp5 pr6|260,* oc_data_ptr 015130 aa 5 00026 7571 00 staq pr5|22 oc_data.last_write_queued STATEMENT 1 ON LINE 2249 call log_console_event (QUEUED_WRITE, console_io_ptr); 015131 aa 763037 3520 04 epp2 -6625,ic 000170 = 000000000005 015132 aa 6 01404 2521 00 spri2 pr6|772 015133 aa 6 00410 3521 00 epp2 pr6|264 console_io_ptr 015134 aa 6 01406 2521 00 spri2 pr6|774 015135 aa 6 01402 6211 00 eax1 pr6|770 015136 aa 010000 4310 07 fld 4096,dl 015137 aa 775637 3520 04 epp2 -1121,ic 012776 = 000120627000 015140 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2250 oc_data.next_free_write = oc_data.next_free_write + 1; 015141 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 015142 aa 7 00040 2351 00 lda pr7|32 oc_data.next_free_write 015143 aa 000066 7330 00 lrs 54 015144 aa 000001 0760 07 adq 1,dl 015145 aa 000066 7370 00 lls 54 015146 aa 7 00040 5511 60 stba pr7|32,60 oc_data.next_free_write STATEMENT 1 ON LINE 2251 if oc_data.next_free_write > WRITE_QUEUE_SIZE then /* if past the end of the queue then... */ oc_data.next_free_write = 1; 015147 aa 7 00040 2351 00 lda pr7|32 oc_data.next_free_write 015150 aa 000066 7330 00 lrs 54 015151 aa 000010 1160 07 cmpq 8,dl 015152 aa 000003 6044 04 tmoz 3,ic 015155 015153 aa 000001 2350 03 lda 1,du 015154 aa 7 00040 5511 60 stba pr7|32,60 oc_data.next_free_write STATEMENT 1 ON LINE 2253 if ^oc_data.write_queue (oc_data.next_free_write).completed then do; 015155 aa 000400 2360 07 ldq 256,dl 015156 aa 000003 0760 07 adq 3,dl 015157 aa 000002 7320 00 qrs 2 015160 aa 000012 0760 07 adq 10,dl 015161 aa 6 01412 7561 00 stq pr6|778 015162 aa 000001 0760 07 adq 1,dl 015163 aa 777776 3760 07 anq 262142,dl 015164 aa 6 01415 7561 00 stq pr6|781 015165 aa 6 01412 2361 00 ldq pr6|778 015166 aa 000042 0760 07 adq 34,dl 015167 aa 000001 0760 07 adq 1,dl 015170 aa 777776 3760 07 anq 262142,dl 015171 aa 6 01412 0761 00 adq pr6|778 015172 aa 000001 0760 07 adq 1,dl 015173 aa 777776 3760 07 anq 262142,dl 015174 aa 7 00040 2351 00 lda pr7|32 oc_data.next_free_write 015175 aa 6 01412 7561 00 stq pr6|778 015176 aa 000066 7330 00 lrs 54 015177 aa 6 01415 4021 00 mpy pr6|781 015200 aa 6 01415 1761 00 sbq pr6|781 015201 aa 000044 4020 07 mpy 36,dl 015202 aa 6 01414 7561 00 stq pr6|780 015203 aa 6 01412 2361 00 ldq pr6|778 015204 aa 000006 0760 07 adq 6,dl 015205 aa 000044 4020 07 mpy 36,dl 015206 aa 000005 0760 07 adq 5,dl 015207 aa 6 01414 0761 00 adq pr6|780 015210 aa 6 01414 7561 00 stq pr6|780 015211 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 015212 aa 7 00000 00 0001 descb pr7|0,1 oc_data.completed 015213 aa 000000 00 0000 descb 0,0 015214 aa 000013 6010 04 tnz 11,ic 015227 STATEMENT 1 ON LINE 2254 oc_data.meters.write_q_full_cnt = oc_data.meters.write_q_full_cnt + 1; 015215 aa 6 01415 2361 00 ldq pr6|781 015216 aa 000003 7360 00 qls 3 015217 aa 6 01412 0761 00 adq pr6|778 015220 aa 000000 6270 06 eax7 0,ql 015221 aa 7 00001 2351 06 lda pr7|1,ql oc_data.write_q_full_cnt 015222 aa 000044 7330 00 lrs 36 015223 aa 000001 0330 07 adl 1,dl 015224 aa 7 00001 7561 17 stq pr7|1,7 oc_data.write_q_full_cnt STATEMENT 1 ON LINE 2255 oc_data.write_q_full = true; 015225 aa 010000 2350 03 lda 4096,du 015226 aa 7 00003 2551 00 orsa pr7|3 oc_data.write_q_full STATEMENT 1 ON LINE 2256 end; STATEMENT 1 ON LINE 2257 return (local_io.time_queued); 015227 aa 6 00416 2371 20 ldaq pr6|270,* local_io.time_queued 015230 aa 6 00612 3715 20 epp5 pr6|394,* 015231 aa 5 00002 7571 20 staq pr5|2,* 015232 aa 6 00610 6101 00 rtcd pr6|392 STATEMENT 1 ON LINE 2258 end; STATEMENT 1 ON LINE 2259 end; END PROCEDURE queue_console_io BEGIN PROCEDURE report_error ENTRY TO report_error STATEMENT 1 ON LINE 2263 report_error: proc options (variable); 015233 da 000766240000 015234 aa 000400 6270 00 eax7 256 015235 aa 7 00034 3521 20 epp2 pr7|28,* 015236 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 015237 aa 000000000000 015240 aa 000000000000 STATEMENT 1 ON LINE 2287 015241 aa 000400 2360 07 ldq 256,dl 015242 aa 000003 0760 07 adq 3,dl 015243 aa 000002 7320 00 qrs 2 015244 aa 000012 0760 07 adq 10,dl 015245 aa 0 00661 7001 00 tsx0 pr0|433 alloc_auto_adj 015246 aa 6 00314 2521 00 spri2 pr6|204 STATEMENT 1 ON LINE 2334 015247 aa 000400 2360 07 ldq 256,dl 015250 aa 524000 2760 03 orq 174080,du 015251 aa 6 00316 7561 00 stq pr6|206 STATEMENT 1 ON LINE 2293 arg_list_ptr = arg_list_ptr_ (); 015252 aa 6 00100 3521 00 epp2 pr6|64 arg_list_ptr 015253 aa 6 00322 2521 00 spri2 pr6|210 015254 aa 6 00320 6211 00 eax1 pr6|208 015255 aa 004000 4310 07 fld 2048,dl 015256 la 4 00014 3521 20 epp2 pr4|12,* arg_list_ptr_ 015257 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2295 severity = arg_list_ptr -> arg_list.arg_ptrs (1) -> based_severity; 015260 aa 6 00100 3735 20 epp7 pr6|64,* arg_list_ptr 015261 aa 7 00002 2361 20 ldq pr7|2,* based_severity 015262 aa 6 00312 7561 00 stq pr6|202 severity STATEMENT 1 ON LINE 2296 if arg_list_ptr -> arg_list.call_type = Envptr_supplied_call_type then entrypoint_name = substr (arg_list_ptr -> arg_list_with_envptr.arg_ptrs (2) -> based_epname, 1, arg_list_ptr -> arg_list_with_envptr.desc_ptrs (2) -> arg_descriptor.size); 015263 aa 000010 2350 03 lda 8,du 015264 aa 000066 7730 00 lrl 54 015265 aa 6 00317 7561 00 stq pr6|207 Envptr_supplied_call_type 015266 aa 7 00000 2361 00 ldq pr7|0 arg_list.call_type 015267 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 015270 aa 6 00317 1161 00 cmpq pr6|207 Envptr_supplied_call_type 015271 aa 000013 6010 04 tnz 11,ic 015304 015272 aa 7 00000 2351 00 lda pr7|0 arg_list_with_envptr.arg_count 015273 aa 000067 7730 00 lrl 55 015274 aa 000001 7360 00 qls 1 015275 aa 7 00006 2361 26 ldq pr7|6,ql* arg_descriptor.size 015276 aa 0 00360 3771 00 anaq pr0|240 = 000000000000 000077777777 015277 aa 7 00004 3715 20 epp5 pr7|4,* arg_list_with_envptr.arg_ptrs 015300 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 015301 aa 5 00000 00 0006 desc9a pr5|0,ql based_epname 015302 aa 6 00102 00 0040 desc9a pr6|66,32 entrypoint_name 015303 aa 000012 7100 04 tra 10,ic 015315 STATEMENT 1 ON LINE 2299 else entrypoint_name = substr (arg_list_ptr -> arg_list.arg_ptrs (2) -> based_epname, 1, arg_list_ptr -> arg_list.desc_ptrs (2) -> arg_descriptor.size); 015304 aa 7 00000 2351 00 lda pr7|0 arg_list.arg_count 015305 aa 000067 7730 00 lrl 55 015306 aa 000001 7360 00 qls 1 015307 aa 7 00004 2361 26 ldq pr7|4,ql* arg_descriptor.size 015310 aa 0 00360 3771 00 anaq pr0|240 = 000000000000 000077777777 015311 aa 7 00004 3715 20 epp5 pr7|4,* arg_list.arg_ptrs 015312 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 015313 aa 5 00000 00 0006 desc9a pr5|0,ql based_epname 015314 aa 6 00102 00 0040 desc9a pr6|66,32 entrypoint_name STATEMENT 1 ON LINE 2301 error_msg = ""; 015315 aa 040 100 100 400 mlr (),(pr),fill(040) 015316 aa 000000 00 0000 desc9a 0,0 015317 aa 6 00112 00 0400 desc9a pr6|74,256 error_msg STATEMENT 1 ON LINE 2303 call formline_ (3, 4, addr (error_msg), length (error_msg), 1, arg_list_ptr); 015320 aa 000003 2360 07 ldq 3,dl 015321 aa 6 00317 7561 00 stq pr6|207 015322 aa 000004 2360 07 ldq 4,dl 015323 aa 6 00324 7561 00 stq pr6|212 015324 aa 6 00112 3715 00 epp5 pr6|74 error_msg 015325 aa 6 00326 6515 00 spri5 pr6|214 015326 aa 000400 2360 07 ldq 256,dl 015327 aa 6 00325 7561 00 stq pr6|213 015330 aa 000001 2360 07 ldq 1,dl 015331 aa 6 00330 7561 00 stq pr6|216 015332 aa 6 00317 3521 00 epp2 pr6|207 015333 aa 6 00334 2521 00 spri2 pr6|220 015334 aa 6 00324 3521 00 epp2 pr6|212 015335 aa 6 00336 2521 00 spri2 pr6|222 015336 aa 6 00326 3521 00 epp2 pr6|214 015337 aa 6 00340 2521 00 spri2 pr6|224 015340 aa 6 00325 3521 00 epp2 pr6|213 015341 aa 6 00342 2521 00 spri2 pr6|226 015342 aa 6 00330 3521 00 epp2 pr6|216 015343 aa 6 00344 2521 00 spri2 pr6|228 015344 aa 6 00100 3521 00 epp2 pr6|64 arg_list_ptr 015345 aa 6 00346 2521 00 spri2 pr6|230 015346 aa 762527 3520 04 epp2 -6825,ic 000075 = 404000000005 015347 aa 6 00350 2521 00 spri2 pr6|232 015350 aa 6 00352 2521 00 spri2 pr6|234 015351 aa 6 00360 2521 00 spri2 pr6|240 015352 aa 762611 3520 04 epp2 -6775,ic 000163 = 464000000000 015353 aa 6 00354 2521 00 spri2 pr6|236 015354 aa 6 00362 2521 00 spri2 pr6|242 015355 aa 762464 3520 04 epp2 -6860,ic 000041 = 404000000013 015356 aa 6 00356 2521 00 spri2 pr6|238 015357 aa 6 00332 6211 00 eax1 pr6|218 015360 aa 030000 4310 07 fld 12288,dl 015361 aa 6 00044 3701 20 epp4 pr6|36,* 015362 la 4 00024 3521 20 epp2 pr4|20,* formline_ 015363 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 2305 error_msg = "ocdcm_ (" || rtrim (entrypoint_name) || "): " || rtrim (error_msg); 015364 aa 000 000 165 500 tctr (pr) 015365 aa 6 00112 00 0400 desc9a pr6|74,256 error_msg 015366 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 015367 aa 6 00056 0001 00 arg pr6|46 015370 aa 6 00056 2361 00 ldq pr6|46 015371 aa 0 00242 3761 00 anq pr0|162 = 000777777777 015372 aa 6 00330 7561 00 stq pr6|216 015373 aa 000400 2360 07 ldq 256,dl 015374 aa 6 00330 1761 00 sbq pr6|216 015375 aa 6 00330 7561 00 stq pr6|216 015376 aa 000 000 165 500 tctr (pr) 015377 aa 6 00102 00 0040 desc9a pr6|66,32 entrypoint_name 015400 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 015401 aa 6 00056 0001 00 arg pr6|46 015402 aa 6 00056 2361 00 ldq pr6|46 015403 aa 0 00242 3761 00 anq pr0|162 = 000777777777 015404 aa 6 00325 7561 00 stq pr6|213 015405 aa 000040 2360 07 ldq 32,dl 015406 aa 6 00325 1761 00 sbq pr6|213 015407 aa 6 00325 7561 00 stq pr6|213 015410 aa 000010 0760 07 adq 8,dl 015411 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 015412 aa 040 100 100 404 mlr (ic),(pr),fill(040) 015413 aa 763247 00 0010 desc9a -6489,8 000661 = 157143144143 015414 aa 2 00000 00 0010 desc9a pr2|0,8 015415 aa 6 00325 2351 00 lda pr6|213 015416 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 015417 aa 6 00102 00 0005 desc9a pr6|66,al entrypoint_name 015420 aa 2 00002 00 0005 desc9a pr2|2,al 015421 aa 6 00325 7561 00 stq pr6|213 015422 aa 000003 0760 07 adq 3,dl 015423 aa 6 00324 7561 00 stq pr6|212 015424 aa 0 00606 7001 00 tsx0 pr0|390 cat_realloc_chars 015425 aa 6 00325 2351 00 lda pr6|213 015426 aa 040 105 100 404 mlr (ic),(pr,al),fill(040) 015427 aa 762411 00 0003 desc9a -6903,3 000037 = 051072040000 015430 aa 2 00000 00 0003 desc9a pr2|0,3 015431 aa 6 00324 2361 00 ldq pr6|212 015432 aa 6 00330 0761 00 adq pr6|216 015433 aa 6 00325 7561 00 stq pr6|213 015434 aa 0 00606 7001 00 tsx0 pr0|390 cat_realloc_chars 015435 aa 6 00324 2351 00 lda pr6|212 015436 aa 6 00330 2361 00 ldq pr6|216 015437 aa 040 145 100 540 mlr (pr,rl),(pr,rl,al),fill(040) 015440 aa 6 00112 00 0006 desc9a pr6|74,ql error_msg 015441 aa 2 00000 00 0006 desc9a pr2|0,ql 015442 aa 6 00325 2351 00 lda pr6|213 015443 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 015444 aa 2 00000 00 0005 desc9a pr2|0,al 015445 aa 6 00112 00 0400 desc9a pr6|74,256 error_msg STATEMENT 1 ON LINE 2307 oc_entry_ptr = find_oc_entry (""); 015446 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 015447 aa 762471 2350 04 lda -6855,ic 000140 = 040040040040 015450 aa 6 00325 7551 00 sta pr6|213 015451 aa 6 00325 3521 00 epp2 pr6|213 015452 aa 6 00334 2521 00 spri2 pr6|220 015453 aa 6 00040 3735 20 epp7 pr6|32,* 015454 aa 7 00406 3521 00 epp2 pr7|262 oc_entry_ptr 015455 aa 6 00336 2521 00 spri2 pr6|222 015456 aa 000001 7270 07 lxl7 1,dl 015457 aa 6 00332 6211 00 eax1 pr6|218 015460 aa 010000 4310 07 fld 4096,dl 015461 aa 773254 3520 04 epp2 -2388,ic 010735 = 000140627000 015462 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2309 if severity = PANIC then do; 015463 aa 6 00312 2361 00 ldq pr6|202 severity 015464 aa 000006 1160 07 cmpq 6,dl 015465 aa 000017 6010 04 tnz 15,ic 015504 STATEMENT 1 ON LINE 2310 call unlock_oc_data (); 015466 aa 000001 7270 07 lxl7 1,dl 015467 aa 6 00056 6211 00 eax1 pr6|46 015470 aa 000000 4310 07 fld 0,dl 015471 aa 001700 3520 04 epp2 960,ic 017371 = 000140627000 015472 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2311 call syserr_real$panic (error_msg); 015473 aa 6 00112 3521 00 epp2 pr6|74 error_msg 015474 aa 6 00334 2521 00 spri2 pr6|220 015475 aa 762471 3520 04 epp2 -6855,ic 000166 = 526000000400 015476 aa 6 00336 2521 00 spri2 pr6|222 015477 aa 6 00332 6211 00 eax1 pr6|218 015500 aa 004000 4310 07 fld 2048,dl 015501 aa 6 00044 3701 20 epp4 pr6|36,* 015502 la 4 00050 3521 20 epp2 pr4|40,* syserr_real$panic 015503 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 2312 end; STATEMENT 1 ON LINE 2314 call syserr (JUST_LOG, error_msg); 015504 aa 762464 3520 04 epp2 -6860,ic 000170 = 000000000005 015505 aa 6 00334 2521 00 spri2 pr6|220 015506 aa 6 00112 3521 00 epp2 pr6|74 error_msg 015507 aa 6 00336 2521 00 spri2 pr6|222 015510 aa 762462 3520 04 epp2 -6862,ic 000172 = 404000000021 015511 aa 6 00340 2521 00 spri2 pr6|224 015512 aa 762454 3520 04 epp2 -6868,ic 000166 = 526000000400 015513 aa 6 00342 2521 00 spri2 pr6|226 015514 aa 6 00332 6211 00 eax1 pr6|218 015515 aa 010000 4310 07 fld 4096,dl 015516 aa 6 00044 3701 20 epp4 pr6|36,* 015517 la 4 00044 3521 20 epp2 pr4|36,* syserr 015520 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 2316 if severity = JUST_LOG then return; 015521 aa 6 00312 2361 00 ldq pr6|202 severity 015522 aa 000005 1160 07 cmpq 5,dl 015523 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 2318 if ^oc_data.in_service then do; 015524 aa 6 00040 3735 20 epp7 pr6|32,* 015525 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 015526 aa 5 00003 2351 00 lda pr5|3 oc_data.in_service 015527 aa 400000 3150 03 cana 131072,du 015530 aa 000042 6010 04 tnz 34,ic 015572 STATEMENT 1 ON LINE 2319 if sys_info$collection_1_phase > SERVICE_INITIALIZATION then do; 015531 aa 6 00044 3701 20 epp4 pr6|36,* 015532 la 4 00104 2361 20 ldq pr4|68,* sys_info$collection_1_phase 015533 aa 000003 1160 07 cmpq 3,dl 015534 aa 000011 6044 04 tmoz 9,ic 015545 STATEMENT 1 ON LINE 2320 oc_data.must_have_console = true; 015535 aa 004000 2350 03 lda 2048,du 015536 aa 5 00003 2551 00 orsa pr5|3 oc_data.must_have_console STATEMENT 1 ON LINE 2321 call console_recovery (); 015537 aa 000001 7270 07 lxl7 1,dl 015540 aa 6 00056 6211 00 eax1 pr6|46 015541 aa 000000 4310 07 fld 0,dl 015542 aa 771360 3520 04 epp2 -3344,ic 007122 = 000260627000 015543 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2322 end; 015544 aa 000026 7100 04 tra 22,ic 015572 STATEMENT 1 ON LINE 2323 else if oc_data.crash_on_crf | sys_info$collection_1_phase < SERVICE_INITIALIZATION then do; 015545 aa 5 00003 2351 00 lda pr5|3 oc_data.crash_on_crf 015546 aa 200000 3150 03 cana 65536,du 015547 aa 000003 6010 04 tnz 3,ic 015552 015550 aa 000003 1160 07 cmpq 3,dl 015551 aa 000020 6050 04 tpl 16,ic 015571 STATEMENT 1 ON LINE 2324 call unlock_oc_data (); 015552 aa 000001 7270 07 lxl7 1,dl 015553 aa 6 00056 6211 00 eax1 pr6|46 015554 aa 000000 4310 07 fld 0,dl 015555 aa 001614 3520 04 epp2 908,ic 017371 = 000140627000 015556 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2325 call syserr_real$panic (error_msg); 015557 aa 6 00112 3521 00 epp2 pr6|74 error_msg 015560 aa 6 00334 2521 00 spri2 pr6|220 015561 aa 762405 3520 04 epp2 -6907,ic 000166 = 526000000400 015562 aa 6 00336 2521 00 spri2 pr6|222 015563 aa 6 00332 6211 00 eax1 pr6|218 015564 aa 004000 4310 07 fld 2048,dl 015565 aa 6 00044 3701 20 epp4 pr6|36,* 015566 la 4 00050 3521 20 epp2 pr4|40,* syserr_real$panic 015567 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 2326 end; 015570 aa 000002 7100 04 tra 2,ic 015572 STATEMENT 1 ON LINE 2327 else return; 015571 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2328 end; STATEMENT 1 ON LINE 2330 if ^oc_data.priority_io.completed then do; 015572 aa 6 00040 3735 20 epp7 pr6|32,* 015573 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 015574 aa 5 00050 2351 00 lda pr5|40 oc_data.completed 015575 aa 010000 3150 03 cana 4096,du 015576 aa 000060 6010 04 tnz 48,ic 015656 STATEMENT 1 ON LINE 2331 i_saved_priority_io = true; 015577 aa 400000 2350 03 lda 131072,du 015600 aa 7 00121 7551 00 sta pr7|81 i_saved_priority_io STATEMENT 1 ON LINE 2332 if ^saved_priority_io.completed then do; 015601 aa 6 00314 3535 20 epp3 pr6|204,* 015602 aa 3 00006 2351 00 lda pr3|6 saved_priority_io.completed 015603 aa 010000 3150 03 cana 4096,du 015604 aa 000037 6010 04 tnz 31,ic 015643 STATEMENT 1 ON LINE 2333 call syserr (JUST_LOG, "ocdcm_ (report_error): LOST CONSOLE I/O. I/O follows..."); 015605 aa 000 100 100 404 mlr (ic),(pr),fill(000) 015606 aa 763071 00 0070 desc9a -6599,56 000676 = 157143144143 015607 aa 6 00332 00 0070 desc9a pr6|218,56 015610 aa 762360 3520 04 epp2 -6928,ic 000170 = 000000000005 015611 aa 6 00366 2521 00 spri2 pr6|246 015612 aa 6 00332 3521 00 epp2 pr6|218 015613 aa 6 00370 2521 00 spri2 pr6|248 015614 aa 762356 3520 04 epp2 -6930,ic 000172 = 404000000021 015615 aa 6 00372 2521 00 spri2 pr6|250 015616 aa 762317 3520 04 epp2 -6961,ic 000135 = 524000000067 015617 aa 6 00374 2521 00 spri2 pr6|252 015620 aa 6 00364 6211 00 eax1 pr6|244 015621 aa 010000 4310 07 fld 4096,dl 015622 aa 6 00044 3701 20 epp4 pr6|36,* 015623 la 4 00044 3521 20 epp2 pr4|36,* syserr 015624 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 2334 call syserr (JUST_LOG, saved_priority_io.text); 015625 aa 762343 3520 04 epp2 -6941,ic 000170 = 000000000005 015626 aa 6 00366 2521 00 spri2 pr6|246 015627 aa 6 00314 3735 20 epp7 pr6|204,* 015630 aa 7 00012 3521 00 epp2 pr7|10 saved_priority_io.text 015631 aa 6 00370 2521 00 spri2 pr6|248 015632 aa 762340 3520 04 epp2 -6944,ic 000172 = 404000000021 015633 aa 6 00372 2521 00 spri2 pr6|250 015634 aa 6 00316 3521 00 epp2 pr6|206 015635 aa 6 00374 2521 00 spri2 pr6|252 015636 aa 6 00364 6211 00 eax1 pr6|244 015637 aa 010000 4310 07 fld 4096,dl 015640 aa 6 00044 3701 20 epp4 pr6|36,* 015641 la 4 00044 3521 20 epp2 pr4|36,* syserr 015642 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 2335 end; STATEMENT 1 ON LINE 2336 saved_priority_io = oc_data.priority_io; 015643 aa 000400 2360 07 ldq 256,dl 015644 aa 000003 0760 07 adq 3,dl 015645 aa 000002 7320 00 qrs 2 015646 aa 000012 0760 07 adq 10,dl 015647 aa 000002 7360 00 qls 2 015650 aa 6 00314 3735 20 epp7 pr6|204,* 015651 aa 6 00040 3715 20 epp5 pr6|32,* 015652 aa 5 00404 3535 20 epp3 pr5|260,* oc_data_ptr 015653 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 015654 aa 3 00042 00 0006 desc9a pr3|34,ql oc_data.priority_io 015655 aa 7 00000 00 0006 desc9a pr7|0,ql saved_priority_io STATEMENT 1 ON LINE 2337 end; STATEMENT 1 ON LINE 2339 oc_data.priority_io.time_queued = clock (); 015656 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 015657 aa 6 00040 3735 20 epp7 pr6|32,* 015660 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 015661 aa 5 00042 7571 00 staq pr5|34 oc_data.time_queued STATEMENT 1 ON LINE 2340 oc_data.priority_io.process_id = pds$process_id; 015662 aa 6 00044 3701 20 epp4 pr6|36,* 015663 la 4 00100 2351 20 lda pr4|64,* pds$process_id 015664 aa 5 00046 7551 00 sta pr5|38 oc_data.process_id STATEMENT 1 ON LINE 2341 oc_data.priority_io.event_chan = 0; 015665 aa 762331 2370 04 ldaq -6951,ic 000216 = 000000000000 000000000000 015666 aa 5 00044 7571 00 staq pr5|36 oc_data.event_chan STATEMENT 1 ON LINE 2342 oc_data.priority_io.in_progress = false; 015667 aa 001734 2350 04 lda 988,ic 017623 = 757777777777 015670 aa 5 00050 3551 00 ansa pr5|40 oc_data.in_progress STATEMENT 1 ON LINE 2343 oc_data.priority_io.alert = (severity <= BEEP); 015671 aa 6 00312 2361 00 ldq pr6|202 severity 015672 aa 000003 1160 07 cmpq 3,dl 015673 aa 0 00520 7001 00 tsx0 pr0|336 r_le_a 015674 aa 5 00050 6751 00 era pr5|40 oc_data.alert 015675 aa 0 00002 3751 00 ana pr0|2 = 400000000000 015676 aa 5 00050 6551 00 ersa pr5|40 oc_data.alert STATEMENT 1 ON LINE 2345 if oc_data.mc_io_enabled then do; 015677 aa 5 00003 2351 00 lda pr5|3 oc_data.mc_io_enabled 015700 aa 100000 3150 03 cana 32768,du 015701 aa 000020 6000 04 tze 16,ic 015721 STATEMENT 1 ON LINE 2346 call bump_io_to_mc ((oc_data.priority_io.sequence_no)); 015702 aa 5 00051 2351 00 lda pr5|41 oc_data.sequence_no 015703 aa 000044 7330 00 lrs 36 015704 aa 6 00326 7571 00 staq pr6|214 015705 aa 6 00326 3521 00 epp2 pr6|214 015706 aa 6 00366 2521 00 spri2 pr6|246 015707 aa 000001 7270 07 lxl7 1,dl 015710 aa 6 00364 6211 00 eax1 pr6|244 015711 aa 004000 4310 07 fld 2048,dl 015712 aa 770545 3520 04 epp2 -3739,ic 006457 = 000160627000 015713 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2347 oc_data.priority_io.completed = true; 015714 aa 010000 2350 03 lda 4096,du 015715 aa 6 00040 3735 20 epp7 pr6|32,* 015716 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 015717 aa 5 00050 2551 00 orsa pr5|40 oc_data.completed STATEMENT 1 ON LINE 2348 return; 015720 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2349 end; STATEMENT 1 ON LINE 2351 if oc_entry_ptr = null then return; 015721 aa 7 00406 2371 00 ldaq pr7|262 oc_entry_ptr 015722 aa 762276 6770 04 eraq -6978,ic 000220 = 077777000043 000001000000 015723 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 015724 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 2352 to_write_ptr = addr (error_msg); 015725 aa 6 00112 3535 00 epp3 pr6|74 error_msg 015726 aa 7 00104 2535 00 spri3 pr7|68 to_write_ptr STATEMENT 1 ON LINE 2353 to_write_length = length (rtrim (error_msg)); 015727 aa 000 000 165 500 tctr (pr) 015730 aa 6 00112 00 0400 desc9a pr6|74,256 error_msg 015731 aa 0 76605 0001 00 arg pr0|-635 = 777777777777 015732 aa 6 00056 0001 00 arg pr6|46 015733 aa 6 00056 2361 00 ldq pr6|46 015734 aa 0 00242 3761 00 anq pr0|162 = 000777777777 015735 aa 6 00325 7561 00 stq pr6|213 015736 aa 000400 2360 07 ldq 256,dl 015737 aa 6 00325 1761 00 sbq pr6|213 015740 aa 7 00365 7561 00 stq pr7|245 to_write_length STATEMENT 1 ON LINE 2354 continue_flag = false; 015741 aa 7 00115 4501 00 stz pr7|77 continue_flag STATEMENT 1 ON LINE 2355 this_part_length = 0; 015742 aa 7 00364 4501 00 stz pr7|244 this_part_length STATEMENT 1 ON LINE 2356 console_line_length = oc_entry.line_leng; 015743 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 015744 aa 5 00006 2351 00 lda pr5|6 oc_entry.line_leng 015745 aa 000066 7330 00 lrs 54 015746 aa 7 00226 7561 00 stq pr7|150 console_line_length STATEMENT 1 ON LINE 2358 do while (to_write_length > 0); 015747 aa 000000 0110 03 nop 0,du 015750 aa 6 00040 3735 20 epp7 pr6|32,* 015751 aa 7 00365 2361 00 ldq pr7|245 to_write_length 015752 aa 000106 6044 04 tmoz 70,ic 016060 STATEMENT 1 ON LINE 2359 oc_data.priority_io.completed = false; 015753 aa 001671 2350 04 lda 953,ic 017644 = 767777777777 015754 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 015755 aa 5 00050 3551 00 ansa pr5|40 oc_data.completed STATEMENT 1 ON LINE 2360 oc_data.priority_io.in_progress = false; 015756 aa 001645 2350 04 lda 933,ic 017623 = 757777777777 015757 aa 5 00050 3551 00 ansa pr5|40 oc_data.in_progress STATEMENT 1 ON LINE 2361 error_buffer = ""; 015760 aa 040 100 100 400 mlr (),(pr),fill(040) 015761 aa 000000 00 0000 desc9a 0,0 015762 aa 6 00212 00 0400 desc9a pr6|138,256 error_buffer STATEMENT 1 ON LINE 2362 call oc_trans_output_ (to_write_ptr, to_write_length, this_part_length, addr (error_buffer), word_length, console_line_length, continue_flag); 015763 aa 6 00212 3535 00 epp3 pr6|138 error_buffer 015764 aa 6 00326 2535 00 spri3 pr6|214 015765 aa 7 00104 3521 00 epp2 pr7|68 to_write_ptr 015766 aa 6 00334 2521 00 spri2 pr6|220 015767 aa 7 00365 3521 00 epp2 pr7|245 to_write_length 015770 aa 6 00336 2521 00 spri2 pr6|222 015771 aa 7 00364 3521 00 epp2 pr7|244 this_part_length 015772 aa 6 00340 2521 00 spri2 pr6|224 015773 aa 6 00326 3521 00 epp2 pr6|214 015774 aa 6 00342 2521 00 spri2 pr6|226 015775 aa 7 00354 3521 00 epp2 pr7|236 word_length 015776 aa 6 00344 2521 00 spri2 pr6|228 015777 aa 7 00226 3521 00 epp2 pr7|150 console_line_length 016000 aa 6 00346 2521 00 spri2 pr6|230 016001 aa 7 00115 3521 00 epp2 pr7|77 continue_flag 016002 aa 6 00350 2521 00 spri2 pr6|232 016003 aa 6 00332 6211 00 eax1 pr6|218 016004 aa 034000 4310 07 fld 14336,dl 016005 aa 6 00044 3701 20 epp4 pr6|36,* 016006 la 4 00034 3521 20 epp2 pr4|28,* oc_trans_output_ 016007 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2364 oc_data.priority_io.leng = word_length; 016010 aa 6 00040 3735 20 epp7 pr6|32,* 016011 aa 7 00354 2361 00 ldq pr7|236 word_length 016012 aa 000066 7370 00 lls 54 016013 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 016014 aa 5 00052 5511 60 stba pr5|42,60 oc_data.leng STATEMENT 1 ON LINE 2365 oc_data.priority_io.text = substr (error_buffer, 1, multiply (word_length, 4, 17)); 016015 aa 7 00354 2361 00 ldq pr7|236 word_length 016016 aa 000002 7360 00 qls 2 016017 aa 000400 7270 07 lxl7 256,dl 016020 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 016021 aa 6 00212 00 0006 desc9a pr6|138,ql error_buffer 016022 aa 5 00054 00 0017 desc9a pr5|44,x7 oc_data.text STATEMENT 1 ON LINE 2367 oc_data.priority_io.completed = false; 016023 aa 001621 2350 04 lda 913,ic 017644 = 767777777777 016024 aa 5 00050 3551 00 ansa pr5|40 oc_data.completed STATEMENT 1 ON LINE 2369 do while (^oc_data.priority_io.completed & oc_data.in_service); 016025 aa 000000 0110 03 nop 0,du 016026 aa 6 00040 3735 20 epp7 pr6|32,* 016027 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 016030 aa 5 00050 2351 00 lda pr5|40 oc_data.completed 016031 aa 010000 3150 03 cana 4096,du 016032 aa 000017 6010 04 tnz 15,ic 016051 016033 aa 5 00003 2351 00 lda pr5|3 oc_data.in_service 016034 aa 400000 3150 03 cana 131072,du 016035 aa 000014 6000 04 tze 12,ic 016051 STATEMENT 1 ON LINE 2370 call process_io (); 016036 aa 000001 7270 07 lxl7 1,dl 016037 aa 6 00056 6211 00 eax1 pr6|46 016040 aa 000000 4310 07 fld 0,dl 016041 aa 775736 3520 04 epp2 -1058,ic 013777 = 000140627000 016042 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2371 call process_io_status (); 016043 aa 000001 7270 07 lxl7 1,dl 016044 aa 6 00056 6211 00 eax1 pr6|46 016045 aa 000000 4310 07 fld 0,dl 016046 aa 776243 3520 04 epp2 -861,ic 014311 = 000520627000 016047 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2372 end; 016050 aa 777756 7100 04 tra -18,ic 016026 STATEMENT 1 ON LINE 2373 to_write_ptr = addcharno (to_write_ptr, (this_part_length)); 016051 aa 7 00104 3521 20 epp2 pr7|68,* to_write_ptr 016052 aa 7 00364 2361 00 ldq pr7|244 this_part_length 016053 aa 2 00000 5005 06 a9bd pr2|0,ql 016054 aa 7 00104 2521 00 spri2 pr7|68 to_write_ptr STATEMENT 1 ON LINE 2374 to_write_length = to_write_length - this_part_length; 016055 aa 7 00364 3361 00 lcq pr7|244 this_part_length 016056 aa 7 00365 0561 00 asq pr7|245 to_write_length STATEMENT 1 ON LINE 2375 end; 016057 aa 777671 7100 04 tra -71,ic 015750 STATEMENT 1 ON LINE 2377 if i_saved_priority_io then priority_io = saved_priority_io; 016060 aa 7 00121 2351 00 lda pr7|81 i_saved_priority_io 016061 aa 000013 6000 04 tze 11,ic 016074 016062 aa 000400 2360 07 ldq 256,dl 016063 aa 000003 0760 07 adq 3,dl 016064 aa 000002 7320 00 qrs 2 016065 aa 000012 0760 07 adq 10,dl 016066 aa 000002 7360 00 qls 2 016067 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 016070 aa 6 00314 3535 20 epp3 pr6|204,* 016071 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 016072 aa 3 00000 00 0006 desc9a pr3|0,ql saved_priority_io 016073 aa 5 00042 00 0006 desc9a pr5|34,ql oc_data.priority_io STATEMENT 1 ON LINE 2378 saved_priority_io.completed = true; 016074 aa 010000 2350 03 lda 4096,du 016075 aa 6 00314 3715 20 epp5 pr6|204,* 016076 aa 5 00006 2551 00 orsa pr5|6 saved_priority_io.completed STATEMENT 1 ON LINE 2380 end report_error; 016077 aa 0 00631 7101 00 tra pr0|409 return_mac END PROCEDURE report_error BEGIN PROCEDURE reset_channel ENTRY TO reset_channel STATEMENT 1 ON LINE 2382 reset_channel: proc (); 016100 da 000775200000 016101 aa 000120 6270 00 eax7 80 016102 aa 7 00034 3521 20 epp2 pr7|28,* 016103 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 016104 aa 000000000000 016105 aa 000000000000 STATEMENT 1 ON LINE 2392 if true then return; 016106 aa 400000 2350 03 lda 131072,du 016107 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 2394 oc_entry.dcw_list_idx = RESET_DCW; 016110 aa 000001 2350 07 lda 1,dl 016111 aa 6 00040 3735 20 epp7 pr6|32,* 016112 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 016113 aa 5 00006 5511 14 stba pr5|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 2396 call log_console_event (RESET_CHANNEL, oc_data.io_ptr); 016114 aa 762045 3520 04 epp2 -7131,ic 000161 = 000000000011 016115 aa 6 00102 2521 00 spri2 pr6|66 016116 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 016117 aa 3 00022 3521 00 epp2 pr3|18 oc_data.io_ptr 016120 aa 6 00104 2521 00 spri2 pr6|68 016121 aa 000001 7270 07 lxl7 1,dl 016122 aa 6 00100 6211 00 eax1 pr6|64 016123 aa 010000 4310 07 fld 4096,dl 016124 aa 774652 3520 04 epp2 -1622,ic 012776 = 000120627000 016125 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2398 call initiate_io (); 016126 aa 000001 7270 07 lxl7 1,dl 016127 aa 6 00056 6211 00 eax1 pr6|46 016130 aa 000000 4310 07 fld 0,dl 016131 aa 772750 3520 04 epp2 -2584,ic 011101 = 000120627000 016132 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2400 return; 016133 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2402 end reset_channel; END PROCEDURE reset_channel BEGIN PROCEDURE reset_console ENTRY TO reset_console STATEMENT 1 ON LINE 2404 reset_console: proc (); 016134 aa 6 00616 6501 00 spri4 pr6|398 STATEMENT 1 ON LINE 2413 entrypoint = "reset_console"; 016135 aa 040 100 100 404 mlr (ic),(pr),fill(040) 016136 aa 762104 00 0015 desc9a -7100,13 000241 = 162145163145 016137 aa 6 00234 00 0040 desc9a pr6|156,32 entrypoint STATEMENT 1 ON LINE 2415 oc_data.in_service = true; 016140 aa 400000 2350 03 lda 131072,du 016141 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 016142 aa 7 00003 2551 00 orsa pr7|3 oc_data.in_service STATEMENT 1 ON LINE 2416 oc_data.mc_io_enabled = false; 016143 aa 001503 2350 04 lda 835,ic 017646 = 677777777777 016144 aa 7 00003 3551 00 ansa pr7|3 oc_data.mc_io_enabled STATEMENT 1 ON LINE 2418 do idx = 1 to WRITE_QUEUE_SIZE; 016145 aa 000010 2360 07 ldq 8,dl 016146 aa 6 00624 7561 00 stq pr6|404 016147 aa 000001 2360 07 ldq 1,dl 016150 aa 6 00272 7561 00 stq pr6|186 idx 016151 aa 000000 0110 03 nop 0,du 016152 aa 6 00272 2361 00 ldq pr6|186 idx 016153 aa 6 00624 1161 00 cmpq pr6|404 016154 aa 000036 6054 04 tpnz 30,ic 016212 STATEMENT 1 ON LINE 2419 oc_data.write_queue (idx).completed = true; 016155 aa 000400 2360 07 ldq 256,dl 016156 aa 000003 0760 07 adq 3,dl 016157 aa 000002 7320 00 qrs 2 016160 aa 000012 0760 07 adq 10,dl 016161 aa 6 01417 7561 00 stq pr6|783 016162 aa 000001 0760 07 adq 1,dl 016163 aa 777776 3760 07 anq 262142,dl 016164 aa 6 01420 7561 00 stq pr6|784 016165 aa 6 00272 4021 00 mpy pr6|186 idx 016166 aa 6 01420 1761 00 sbq pr6|784 016167 aa 000044 4020 07 mpy 36,dl 016170 aa 6 01420 7561 00 stq pr6|784 016171 aa 6 01417 2361 00 ldq pr6|783 016172 aa 000042 0760 07 adq 34,dl 016173 aa 000001 0760 07 adq 1,dl 016174 aa 777776 3760 07 anq 262142,dl 016175 aa 6 01417 0761 00 adq pr6|783 016176 aa 000001 0760 07 adq 1,dl 016177 aa 777776 3760 07 anq 262142,dl 016200 aa 000006 0760 07 adq 6,dl 016201 aa 000044 4020 07 mpy 36,dl 016202 aa 000005 0760 07 adq 5,dl 016203 aa 6 01420 0761 00 adq pr6|784 016204 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 016205 aa 403 106 060 400 csl (),(pr,ql),fill(1),bool(move) 016206 aa 000000 00 0000 descb 0,0 016207 aa 7 00000 00 0001 descb pr7|0,1 oc_data.completed STATEMENT 1 ON LINE 2420 end; 016210 aa 6 00272 0541 00 aos pr6|186 idx 016211 aa 777741 7100 04 tra -31,ic 016152 STATEMENT 1 ON LINE 2421 oc_data.write_q_full = false; 016212 aa 001432 2350 04 lda 794,ic 017644 = 767777777777 016213 aa 6 00404 3735 20 epp7 pr6|260,* oc_data_ptr 016214 aa 7 00003 3551 00 ansa pr7|3 oc_data.write_q_full STATEMENT 1 ON LINE 2423 oc_data.stacked_read_cnt = 1; 016215 aa 000001 2350 03 lda 1,du 016216 aa 7 00041 5511 60 stba pr7|33,60 oc_data.stacked_read_cnt STATEMENT 1 ON LINE 2424 call reset_read (); 016217 aa 6 00056 6211 00 eax1 pr6|46 016220 aa 000000 4310 07 fld 0,dl 016221 aa 000112 3520 04 epp2 74,ic 016333 = 000100627000 016222 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2426 call unassign_bootload_console (); 016223 aa 6 00056 6211 00 eax1 pr6|46 016224 aa 000000 4310 07 fld 0,dl 016225 aa 001034 3520 04 epp2 540,ic 017261 = 000120627000 016226 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2428 if oc_entry_ptr = null then do; 016227 aa 6 00406 2371 00 ldaq pr6|262 oc_entry_ptr 016230 aa 761770 6770 04 eraq -7176,ic 000220 = 077777000043 000001000000 016231 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 016232 aa 000006 6010 04 tnz 6,ic 016240 STATEMENT 1 ON LINE 2429 call console_recovery (); 016233 aa 6 00056 6211 00 eax1 pr6|46 016234 aa 000000 4310 07 fld 0,dl 016235 aa 770665 3520 04 epp2 -3659,ic 007122 = 000260627000 016236 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2430 return; 016237 aa 6 00616 6101 00 rtcd pr6|398 STATEMENT 1 ON LINE 2431 end; STATEMENT 1 ON LINE 2433 oc_entry.io_in_progress = false; 016240 aa 001402 2350 04 lda 770,ic 017642 = 777577777777 016241 aa 6 00406 3735 20 epp7 pr6|262,* oc_entry_ptr 016242 aa 7 00002 3551 00 ansa pr7|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 2434 oc_entry.discard = false; 016243 aa 001376 2350 04 lda 766,ic 017641 = 777757777777 016244 aa 7 00002 3551 00 ansa pr7|2 oc_entry.discard STATEMENT 1 ON LINE 2435 oc_entry.discarded = false; 016245 aa 001373 2350 04 lda 763,ic 017640 = 777767777777 016246 aa 7 00002 3551 00 ansa pr7|2 oc_entry.discarded STATEMENT 1 ON LINE 2436 oc_entry.got_special_int = false; 016247 aa 001370 2350 04 lda 760,ic 017637 = 777677777777 016250 aa 7 00002 3551 00 ansa pr7|2 oc_entry.got_special_int STATEMENT 1 ON LINE 2437 oc_entry.oper_request = false; 016251 aa 001365 2350 04 lda 757,ic 017636 = 777737777777 016252 aa 7 00002 3551 00 ansa pr7|2 oc_entry.oper_request STATEMENT 1 ON LINE 2438 oc_entry.retry_cnt = 0; 016253 aa 000000 2350 07 lda 0,dl 016254 aa 7 00007 5511 60 stba pr7|7,60 oc_entry.retry_cnt STATEMENT 1 ON LINE 2439 oc_entry.io_time = 0; 016255 aa 761741 2370 04 ldaq -7199,ic 000216 = 000000000000 000000000000 016256 aa 7 00010 7571 00 staq pr7|8 oc_entry.io_time STATEMENT 1 ON LINE 2441 call assign_bootload_console (oc_entry.name, err_code); 016257 aa 7 00000 3521 00 epp2 pr7|0 oc_entry.name 016260 aa 6 01424 2521 00 spri2 pr6|788 016261 aa 6 00244 3521 00 epp2 pr6|164 err_code 016262 aa 6 01426 2521 00 spri2 pr6|790 016263 aa 6 01422 6211 00 eax1 pr6|786 016264 aa 010000 4310 07 fld 4096,dl 016265 aa 770014 3520 04 epp2 -4084,ic 006301 = 000140627000 016266 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2442 if err_code ^= 0 then do; 016267 aa 6 00244 2361 00 ldq pr6|164 err_code 016270 aa 000006 6000 04 tze 6,ic 016276 STATEMENT 1 ON LINE 2443 call console_recovery (); 016271 aa 6 00056 6211 00 eax1 pr6|46 016272 aa 000000 4310 07 fld 0,dl 016273 aa 770627 3520 04 epp2 -3689,ic 007122 = 000260627000 016274 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2444 return; 016275 aa 6 00616 6101 00 rtcd pr6|398 STATEMENT 1 ON LINE 2445 end; STATEMENT 1 ON LINE 2447 call reset_channel (); 016276 aa 6 00056 6211 00 eax1 pr6|46 016277 aa 000000 4310 07 fld 0,dl 016300 aa 777601 3520 04 epp2 -127,ic 016101 = 000120627000 016301 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 2449 call report_error (BEEP, entrypoint, "Reset bootload console for ^a.", pds$process_group_id); 016302 aa 000 100 100 404 mlr (ic),(pr),fill(000) 016303 aa 762072 00 0040 desc9a -7110,32 000374 = 122145163145 016304 aa 6 01422 00 0040 desc9a pr6|786,32 016305 aa 761666 3520 04 epp2 -7242,ic 000173 = 000000000003 016306 aa 6 01434 2521 00 spri2 pr6|796 016307 aa 6 00234 3521 00 epp2 pr6|156 entrypoint 016310 aa 6 01436 2521 00 spri2 pr6|798 016311 aa 6 01422 3521 00 epp2 pr6|786 016312 aa 6 01440 2521 00 spri2 pr6|800 016313 aa 6 00044 3701 20 epp4 pr6|36,* 016314 la 4 00102 3521 20 epp2 pr4|66,* pds$process_group_id 016315 aa 6 01442 2521 00 spri2 pr6|802 016316 aa 761654 3520 04 epp2 -7252,ic 000172 = 404000000021 016317 aa 6 01446 2521 00 spri2 pr6|806 016320 aa 761616 3520 04 epp2 -7282,ic 000136 = 526000000040 016321 aa 6 01450 2521 00 spri2 pr6|808 016322 aa 6 01454 2521 00 spri2 pr6|812 016323 aa 761513 3520 04 epp2 -7349,ic 000036 = 524000000036 016324 aa 6 01452 2521 00 spri2 pr6|810 016325 aa 6 01432 6211 00 eax1 pr6|794 016326 aa 020000 4310 07 fld 8192,dl 016327 aa 776705 3520 04 epp2 -571,ic 015234 = 000400627000 016330 aa 0 00624 7001 00 tsx0 pr0|404 call_int_this_desc STATEMENT 1 ON LINE 2451 return; 016331 aa 6 00616 6101 00 rtcd pr6|398 STATEMENT 1 ON LINE 2453 end reset_console; END PROCEDURE reset_console BEGIN PROCEDURE reset_read ENTRY TO reset_read STATEMENT 1 ON LINE 2455 reset_read: proc (); 016332 da 001003200000 016333 aa 000100 6270 00 eax7 64 016334 aa 7 00034 3521 20 epp2 pr7|28,* 016335 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 016336 aa 000000000000 016337 aa 000000000000 STATEMENT 1 ON LINE 2464 if oc_data.priority_io.read then read_io_ptr = addr (oc_data.priority_io); 016340 aa 6 00040 3735 20 epp7 pr6|32,* 016341 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 016342 aa 5 00050 2351 00 lda pr5|40 oc_data.read 016343 aa 200000 3150 03 cana 65536,du 016344 aa 000004 6000 04 tze 4,ic 016350 016345 aa 5 00042 3535 00 epp3 pr5|34 oc_data.priority_io 016346 aa 7 00102 2535 00 spri3 pr7|66 read_io_ptr 016347 aa 000011 7100 04 tra 9,ic 016360 STATEMENT 1 ON LINE 2465 else read_io_ptr = addr (oc_data.read_io); 016350 aa 000400 2360 07 ldq 256,dl 016351 aa 000003 0760 07 adq 3,dl 016352 aa 000002 7320 00 qrs 2 016353 aa 000054 0760 07 adq 44,dl 016354 aa 000001 0760 07 adq 1,dl 016355 aa 777776 3760 07 anq 262142,dl 016356 aa 5 00000 3535 06 epp3 pr5|0,ql oc_data.read_io 016357 aa 7 00102 2535 00 spri3 pr7|66 read_io_ptr STATEMENT 1 ON LINE 2467 unspec (read_io_ptr -> console_io.flags) = ""b; 016360 aa 3 00006 4501 00 stz pr3|6 STATEMENT 1 ON LINE 2468 read_io_ptr -> console_io.read = true; 016361 aa 200000 2350 03 lda 65536,du 016362 aa 3 00006 2551 00 orsa pr3|6 console_io.read STATEMENT 1 ON LINE 2469 read_io_ptr -> console_io.completed = true; 016363 aa 010000 2350 03 lda 4096,du 016364 aa 3 00006 2551 00 orsa pr3|6 console_io.completed STATEMENT 1 ON LINE 2470 read_io_ptr -> console_io.console = ""; 016365 aa 761553 2350 04 lda -7317,ic 000140 = 040040040040 016366 aa 3 00005 7551 00 sta pr3|5 console_io.console STATEMENT 1 ON LINE 2471 read_io_ptr -> console_io.leng = 0; 016367 aa 000000 2350 07 lda 0,dl 016370 aa 3 00010 5511 60 stba pr3|8,60 console_io.leng STATEMENT 1 ON LINE 2472 read_io_ptr -> console_io.text = ""; 016371 aa 000400 7270 07 lxl7 256,dl 016372 aa 040 140 100 400 mlr (),(pr,rl),fill(040) 016373 aa 000000 00 0000 desc9a 0,0 016374 aa 3 00012 00 0017 desc9a pr3|10,x7 console_io.text STATEMENT 1 ON LINE 2474 return; 016375 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2476 end reset_read; END PROCEDURE reset_read BEGIN PROCEDURE retry_io ENTRY TO retry_io STATEMENT 1 ON LINE 2478 retry_io: proc (); 016376 aa 6 00106 6501 00 spri4 pr6|70 STATEMENT 1 ON LINE 2489 console_io_ptr = oc_data.io_ptr; 016377 aa 6 00040 3735 20 epp7 pr6|32,* 016400 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 016401 aa 5 00022 3735 20 epp7 pr5|18,* oc_data.io_ptr 016402 aa 6 00040 3535 20 epp3 pr6|32,* 016403 aa 3 00410 6535 00 spri7 pr3|264 console_io_ptr STATEMENT 1 ON LINE 2491 if oc_entry.retry_cnt = 0 then call log_console_error (); 016404 aa 3 00406 3715 20 epp5 pr3|262,* oc_entry_ptr 016405 aa 5 00007 2351 00 lda pr5|7 oc_entry.retry_cnt 016406 aa 000066 7330 00 lrs 54 016407 aa 000002 6010 04 tnz 2,ic 016411 016410 aa 773736 6700 04 tsp4 -2082,ic 012346 STATEMENT 1 ON LINE 2493 call log_console_event (RETRY_IO, oc_data.io_ptr); 016411 aa 761415 3520 04 epp2 -7411,ic 000026 = 000000000032 016412 aa 6 00416 2521 00 spri2 pr6|270 016413 aa 6 00040 3735 20 epp7 pr6|32,* 016414 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 016415 aa 5 00022 3521 00 epp2 pr5|18 oc_data.io_ptr 016416 aa 6 00420 2521 00 spri2 pr6|272 016417 aa 000001 7270 07 lxl7 1,dl 016420 aa 6 00414 6211 00 eax1 pr6|268 016421 aa 010000 4310 07 fld 4096,dl 016422 aa 774354 3520 04 epp2 -1812,ic 012776 = 000120627000 016423 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2495 if oc_entry.retry_cnt = MAX_RETRIES then do; 016424 aa 6 00040 3735 20 epp7 pr6|32,* 016425 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 016426 aa 5 00007 2351 00 lda pr5|7 oc_entry.retry_cnt 016427 aa 000066 7330 00 lrs 54 016430 aa 6 00424 7561 00 stq pr6|276 oc_entry.retry_cnt 016431 aa 000002 1160 07 cmpq 2,dl 016432 aa 000070 6010 04 tnz 56,ic 016522 STATEMENT 1 ON LINE 2496 call console_recovery (); 016433 aa 000001 7270 07 lxl7 1,dl 016434 aa 6 00056 6211 00 eax1 pr6|46 016435 aa 000000 4310 07 fld 0,dl 016436 aa 770464 3520 04 epp2 -3788,ic 007122 = 000260627000 016437 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2497 if ^oc_data.in_service then do; 016440 aa 6 00040 3735 20 epp7 pr6|32,* 016441 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 016442 aa 5 00003 2351 00 lda pr5|3 oc_data.in_service 016443 aa 400000 3150 03 cana 131072,du 016444 aa 000005 6010 04 tnz 5,ic 016451 STATEMENT 1 ON LINE 2498 console_io.completed = true; 016445 aa 010000 2350 03 lda 4096,du 016446 aa 7 00410 3535 20 epp3 pr7|264,* console_io_ptr 016447 aa 3 00006 2551 00 orsa pr3|6 console_io.completed STATEMENT 1 ON LINE 2499 return; 016450 aa 6 00106 6101 00 rtcd pr6|70 STATEMENT 1 ON LINE 2500 end; STATEMENT 1 ON LINE 2501 else if oc_data.mc_io_enabled then do; 016451 aa 5 00003 2351 00 lda pr5|3 oc_data.mc_io_enabled 016452 aa 100000 3150 03 cana 32768,du 016453 aa 000110 6000 04 tze 72,ic 016563 STATEMENT 1 ON LINE 2502 local_io = console_io; 016454 aa 000400 2360 07 ldq 256,dl 016455 aa 000003 0760 07 adq 3,dl 016456 aa 000002 7320 00 qrs 2 016457 aa 000012 0760 07 adq 10,dl 016460 aa 000002 7360 00 qls 2 016461 aa 7 00416 3535 20 epp3 pr7|270,* 016462 aa 7 00410 3515 20 epp1 pr7|264,* console_io_ptr 016463 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 016464 aa 1 00000 00 0006 desc9a pr1|0,ql console_io 016465 aa 3 00000 00 0006 desc9a pr3|0,ql local_io STATEMENT 1 ON LINE 2503 if local_io.sequence_no > 0 then do; 016466 aa 3 00007 2361 00 ldq pr3|7 local_io.sequence_no 016467 aa 000020 6044 04 tmoz 16,ic 016507 STATEMENT 1 ON LINE 2504 call bump_io_to_mc ((local_io.sequence_no)); 016470 aa 000044 7770 00 llr 36 016471 aa 000044 7330 00 lrs 36 016472 aa 6 00426 7571 00 staq pr6|278 016473 aa 6 00426 3521 00 epp2 pr6|278 016474 aa 6 00416 2521 00 spri2 pr6|270 016475 aa 000001 7270 07 lxl7 1,dl 016476 aa 6 00414 6211 00 eax1 pr6|268 016477 aa 004000 4310 07 fld 2048,dl 016500 aa 767757 3520 04 epp2 -4113,ic 006457 = 000160627000 016501 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2505 console_io.completed = true; 016502 aa 010000 2350 03 lda 4096,du 016503 aa 6 00040 3735 20 epp7 pr6|32,* 016504 aa 7 00410 3715 20 epp5 pr7|264,* console_io_ptr 016505 aa 5 00006 2551 00 orsa pr5|6 console_io.completed STATEMENT 1 ON LINE 2506 end; 016506 aa 000012 7100 04 tra 10,ic 016520 STATEMENT 1 ON LINE 2507 else call bump_io_to_mc (-(local_io.time_queued)); 016507 aa 3 00000 3371 00 lcaq pr3|0 local_io.time_queued 016510 aa 6 00426 7571 00 staq pr6|278 016511 aa 6 00426 3521 00 epp2 pr6|278 016512 aa 6 00416 2521 00 spri2 pr6|270 016513 aa 000001 7270 07 lxl7 1,dl 016514 aa 6 00414 6211 00 eax1 pr6|268 016515 aa 004000 4310 07 fld 2048,dl 016516 aa 767741 3520 04 epp2 -4127,ic 006457 = 000160627000 016517 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2508 return; 016520 aa 6 00106 6101 00 rtcd pr6|70 STATEMENT 1 ON LINE 2509 end; STATEMENT 1 ON LINE 2510 end; 016521 aa 000042 7100 04 tra 34,ic 016563 STATEMENT 1 ON LINE 2512 else do; STATEMENT 1 ON LINE 2513 oc_entry.retry_cnt = oc_entry.retry_cnt + 1; 016522 aa 000001 0760 07 adq 1,dl 016523 aa 000066 7370 00 lls 54 016524 aa 5 00007 5511 60 stba pr5|7,60 oc_entry.retry_cnt STATEMENT 1 ON LINE 2514 if console_io.read then do; 016525 aa 7 00410 3535 20 epp3 pr7|264,* console_io_ptr 016526 aa 3 00006 2351 00 lda pr3|6 console_io.read 016527 aa 200000 3150 03 cana 65536,du 016530 aa 000020 6000 04 tze 16,ic 016550 STATEMENT 1 ON LINE 2515 oc_entry.oper_request = false; 016531 aa 001105 2350 04 lda 581,ic 017636 = 777737777777 016532 aa 5 00002 3551 00 ansa pr5|2 oc_entry.oper_request STATEMENT 1 ON LINE 2516 oc_entry.discard = false; 016533 aa 001106 2350 04 lda 582,ic 017641 = 777757777777 016534 aa 5 00002 3551 00 ansa pr5|2 oc_entry.discard STATEMENT 1 ON LINE 2517 oc_entry.discarded = false; 016535 aa 001103 2350 04 lda 579,ic 017640 = 777767777777 016536 aa 5 00002 3551 00 ansa pr5|2 oc_entry.discarded STATEMENT 1 ON LINE 2518 oc_entry.io_in_progress = false; 016537 aa 001103 2350 04 lda 579,ic 017642 = 777577777777 016540 aa 5 00002 3551 00 ansa pr5|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 2519 call reset_read (); 016541 aa 000001 7270 07 lxl7 1,dl 016542 aa 6 00056 6211 00 eax1 pr6|46 016543 aa 000000 4310 07 fld 0,dl 016544 aa 777567 3520 04 epp2 -137,ic 016333 = 000100627000 016545 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2520 call send_newline (); 016546 aa 000016 6700 04 tsp4 14,ic 016564 STATEMENT 1 ON LINE 2521 return; 016547 aa 6 00106 6101 00 rtcd pr6|70 STATEMENT 1 ON LINE 2522 end; STATEMENT 1 ON LINE 2523 call reset_channel (); 016550 aa 000001 7270 07 lxl7 1,dl 016551 aa 6 00056 6211 00 eax1 pr6|46 016552 aa 000000 4310 07 fld 0,dl 016553 aa 777326 3520 04 epp2 -298,ic 016101 = 000120627000 016554 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2524 call initiate_io (); 016555 aa 000001 7270 07 lxl7 1,dl 016556 aa 6 00056 6211 00 eax1 pr6|46 016557 aa 000000 4310 07 fld 0,dl 016560 aa 772321 3520 04 epp2 -2863,ic 011101 = 000120627000 016561 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2525 return; 016562 aa 6 00106 6101 00 rtcd pr6|70 STATEMENT 1 ON LINE 2526 end; STATEMENT 1 ON LINE 2528 return; 016563 aa 6 00106 6101 00 rtcd pr6|70 STATEMENT 1 ON LINE 2530 end retry_io; END PROCEDURE retry_io BEGIN PROCEDURE send_newline ENTRY TO send_newline STATEMENT 1 ON LINE 2532 send_newline: proc (); 016564 aa 6 00114 6501 00 spri4 pr6|76 STATEMENT 1 ON LINE 2541 oc_entry.dcw_list_idx = NEWLINE_DCW; 016565 aa 000005 2350 07 lda 5,dl 016566 aa 6 00040 3735 20 epp7 pr6|32,* 016567 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 016570 aa 5 00006 5511 14 stba pr5|6,14 oc_entry.dcw_list_idx STATEMENT 1 ON LINE 2543 call log_console_event (SENT_NEWLINE, oc_data.io_ptr); 016571 aa 761356 3520 04 epp2 -7442,ic 000147 = 000000000013 016572 aa 6 00432 2521 00 spri2 pr6|282 016573 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 016574 aa 3 00022 3521 00 epp2 pr3|18 oc_data.io_ptr 016575 aa 6 00434 2521 00 spri2 pr6|284 016576 aa 000001 7270 07 lxl7 1,dl 016577 aa 6 00430 6211 00 eax1 pr6|280 016600 aa 010000 4310 07 fld 4096,dl 016601 aa 774175 3520 04 epp2 -1923,ic 012776 = 000120627000 016602 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2545 call initiate_io (); 016603 aa 000001 7270 07 lxl7 1,dl 016604 aa 6 00056 6211 00 eax1 pr6|46 016605 aa 000000 4310 07 fld 0,dl 016606 aa 772273 3520 04 epp2 -2885,ic 011101 = 000120627000 016607 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2547 return; 016610 aa 6 00114 6101 00 rtcd pr6|76 STATEMENT 1 ON LINE 2549 end send_newline; END PROCEDURE send_newline BEGIN PROCEDURE terminate_io ENTRY TO terminate_io STATEMENT 1 ON LINE 2551 terminate_io: proc (); 016611 aa 6 00122 6501 00 spri4 pr6|82 STATEMENT 1 ON LINE 2560 oc_entry.io_in_progress = false; 016612 aa 001030 2350 04 lda 536,ic 017642 = 777577777777 016613 aa 6 00040 3735 20 epp7 pr6|32,* 016614 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 016615 aa 5 00002 3551 00 ansa pr5|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 2561 oc_entry.retry_cnt = 0; 016616 aa 000000 2350 07 lda 0,dl 016617 aa 5 00007 5511 60 stba pr5|7,60 oc_entry.retry_cnt STATEMENT 1 ON LINE 2563 if oc_entry.dcw_list_idx = NEWLINE_DCW then do; 016620 aa 5 00006 2351 00 lda pr5|6 oc_entry.dcw_list_idx 016621 aa 000022 7350 00 als 18 016622 aa 000066 7330 00 lrs 54 016623 aa 6 00440 7561 00 stq pr6|288 oc_entry.dcw_list_idx 016624 aa 000005 1160 07 cmpq 5,dl 016625 aa 000014 6010 04 tnz 12,ic 016641 STATEMENT 1 ON LINE 2564 call log_console_event (TERMINATED_NEWLINE, oc_data.io_ptr); 016626 aa 761327 3520 04 epp2 -7465,ic 000155 = 000000000017 016627 aa 6 00444 2521 00 spri2 pr6|292 016630 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 016631 aa 3 00022 3521 00 epp2 pr3|18 oc_data.io_ptr 016632 aa 6 00446 2521 00 spri2 pr6|294 016633 aa 000001 7270 07 lxl7 1,dl 016634 aa 6 00442 6211 00 eax1 pr6|290 016635 aa 010000 4310 07 fld 4096,dl 016636 aa 774140 3520 04 epp2 -1952,ic 012776 = 000120627000 016637 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2565 return; 016640 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2566 end; STATEMENT 1 ON LINE 2568 if oc_entry.dcw_list_idx = LOCK_MCA_DCW then do; 016641 aa 000017 1160 07 cmpq 15,dl 016642 aa 000015 6010 04 tnz 13,ic 016657 STATEMENT 1 ON LINE 2569 call log_console_event (TERMINATED_MCA_LOCK, null); 016643 aa 761355 3534 24 epp3 -7443,ic* 016644 aa 6 00452 2535 00 spri3 pr6|298 016645 aa 761312 3520 04 epp2 -7478,ic 000157 = 000000000044 016646 aa 6 00444 2521 00 spri2 pr6|292 016647 aa 6 00452 3521 00 epp2 pr6|298 016650 aa 6 00446 2521 00 spri2 pr6|294 016651 aa 000001 7270 07 lxl7 1,dl 016652 aa 6 00442 6211 00 eax1 pr6|290 016653 aa 010000 4310 07 fld 4096,dl 016654 aa 774122 3520 04 epp2 -1966,ic 012776 = 000120627000 016655 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2570 return; 016656 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2571 end; STATEMENT 1 ON LINE 2573 if oc_entry.dcw_list_idx = UNLOCK_MCA_DCW then do; 016657 aa 000020 1160 07 cmpq 16,dl 016660 aa 000015 6010 04 tnz 13,ic 016675 STATEMENT 1 ON LINE 2574 call log_console_event (TERMINATED_MCA_UNLOCK, null); 016661 aa 761337 3534 24 epp3 -7457,ic* 016662 aa 6 00452 2535 00 spri3 pr6|298 016663 aa 761136 3520 04 epp2 -7586,ic 000021 = 000000000045 016664 aa 6 00444 2521 00 spri2 pr6|292 016665 aa 6 00452 3521 00 epp2 pr6|298 016666 aa 6 00446 2521 00 spri2 pr6|294 016667 aa 000001 7270 07 lxl7 1,dl 016670 aa 6 00442 6211 00 eax1 pr6|290 016671 aa 010000 4310 07 fld 4096,dl 016672 aa 774104 3520 04 epp2 -1980,ic 012776 = 000120627000 016673 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2575 return; 016674 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2576 end; STATEMENT 1 ON LINE 2578 if oc_entry.dcw_list_idx = DISCARD_DCW then do; 016675 aa 000015 1160 07 cmpq 13,dl 016676 aa 000006 6010 04 tnz 6,ic 016704 STATEMENT 1 ON LINE 2579 oc_entry.discard = false; 016677 aa 000742 2350 04 lda 482,ic 017641 = 777757777777 016700 aa 5 00002 3551 00 ansa pr5|2 oc_entry.discard STATEMENT 1 ON LINE 2580 oc_entry.discarded = false; 016701 aa 000737 2350 04 lda 479,ic 017640 = 777767777777 016702 aa 5 00002 3551 00 ansa pr5|2 oc_entry.discarded STATEMENT 1 ON LINE 2581 return; 016703 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2582 end; STATEMENT 1 ON LINE 2584 console_io_ptr = oc_data.io_ptr; 016704 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 016705 aa 3 00022 3535 20 epp3 pr3|18,* oc_data.io_ptr 016706 aa 7 00410 2535 00 spri3 pr7|264 console_io_ptr STATEMENT 1 ON LINE 2586 if oc_entry.dcw_list_idx = RESET_DCW then do; 016707 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 016710 aa 5 00006 2351 00 lda pr5|6 oc_entry.dcw_list_idx 016711 aa 000022 7350 00 als 18 016712 aa 000066 7330 00 lrs 54 016713 aa 6 00440 7561 00 stq pr6|288 oc_entry.dcw_list_idx 016714 aa 000001 1160 07 cmpq 1,dl 016715 aa 000014 6010 04 tnz 12,ic 016731 STATEMENT 1 ON LINE 2587 call log_console_event (TERMINATED_RESET, oc_data.io_ptr); 016716 aa 761227 3520 04 epp2 -7529,ic 000145 = 000000000015 016717 aa 6 00444 2521 00 spri2 pr6|292 016720 aa 7 00404 3515 20 epp1 pr7|260,* oc_data_ptr 016721 aa 1 00022 3521 00 epp2 pr1|18 oc_data.io_ptr 016722 aa 6 00446 2521 00 spri2 pr6|294 016723 aa 000001 7270 07 lxl7 1,dl 016724 aa 6 00442 6211 00 eax1 pr6|290 016725 aa 010000 4310 07 fld 4096,dl 016726 aa 774050 3520 04 epp2 -2008,ic 012776 = 000120627000 016727 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2588 return; 016730 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2589 end; STATEMENT 1 ON LINE 2591 if oc_entry.dcw_list_idx = ALERT_DCW then do; 016731 aa 000002 1160 07 cmpq 2,dl 016732 aa 000014 6010 04 tnz 12,ic 016746 STATEMENT 1 ON LINE 2592 call log_console_event (TERMINATED_ALERT, oc_data.io_ptr); 016733 aa 761211 3520 04 epp2 -7543,ic 000144 = 000000000016 016734 aa 6 00444 2521 00 spri2 pr6|292 016735 aa 7 00404 3515 20 epp1 pr7|260,* oc_data_ptr 016736 aa 1 00022 3521 00 epp2 pr1|18 oc_data.io_ptr 016737 aa 6 00446 2521 00 spri2 pr6|294 016740 aa 000001 7270 07 lxl7 1,dl 016741 aa 6 00442 6211 00 eax1 pr6|290 016742 aa 010000 4310 07 fld 4096,dl 016743 aa 774033 3520 04 epp2 -2021,ic 012776 = 000120627000 016744 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2593 return; 016745 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2594 end; STATEMENT 1 ON LINE 2596 if oc_entry.dcw_list_idx = PROMPT_DCW then do; 016746 aa 000013 1160 07 cmpq 11,dl 016747 aa 000014 6010 04 tnz 12,ic 016763 STATEMENT 1 ON LINE 2597 call log_console_event (TERMINATED_PROMPT, oc_data.io_ptr); 016750 aa 761173 3520 04 epp2 -7557,ic 000143 = 000000000020 016751 aa 6 00444 2521 00 spri2 pr6|292 016752 aa 7 00404 3515 20 epp1 pr7|260,* oc_data_ptr 016753 aa 1 00022 3521 00 epp2 pr1|18 oc_data.io_ptr 016754 aa 6 00446 2521 00 spri2 pr6|294 016755 aa 000001 7270 07 lxl7 1,dl 016756 aa 6 00442 6211 00 eax1 pr6|290 016757 aa 010000 4310 07 fld 4096,dl 016760 aa 774016 3520 04 epp2 -2034,ic 012776 = 000120627000 016761 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2598 return; 016762 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2599 end; STATEMENT 1 ON LINE 2601 if oc_entry.dcw_list_idx = WRITE_DCW then do; 016763 aa 000003 1160 07 cmpq 3,dl 016764 aa 000022 6010 04 tnz 18,ic 017006 STATEMENT 1 ON LINE 2602 oc_data.write_q_full = false; 016765 aa 000657 2350 04 lda 431,ic 017644 = 767777777777 016766 aa 7 00404 3515 20 epp1 pr7|260,* oc_data_ptr 016767 aa 1 00003 3551 00 ansa pr1|3 oc_data.write_q_full STATEMENT 1 ON LINE 2603 console_io.completed = true; 016770 aa 010000 2350 03 lda 4096,du 016771 aa 3 00006 2551 00 orsa pr3|6 console_io.completed STATEMENT 1 ON LINE 2604 console_io.in_progress = false; 016772 aa 000631 2350 04 lda 409,ic 017623 = 757777777777 016773 aa 3 00006 3551 00 ansa pr3|6 console_io.in_progress STATEMENT 1 ON LINE 2605 call log_console_event (TERMINATED_WRITE, oc_data.io_ptr); 016774 aa 761162 3520 04 epp2 -7566,ic 000156 = 000000000022 016775 aa 6 00444 2521 00 spri2 pr6|292 016776 aa 1 00022 3521 00 epp2 pr1|18 oc_data.io_ptr 016777 aa 6 00446 2521 00 spri2 pr6|294 017000 aa 000001 7270 07 lxl7 1,dl 017001 aa 6 00442 6211 00 eax1 pr6|290 017002 aa 010000 4310 07 fld 4096,dl 017003 aa 773773 3520 04 epp2 -2053,ic 012776 = 000120627000 017004 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2606 return; 017005 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2607 end; STATEMENT 1 ON LINE 2609 if (oc_entry.dcw_list_idx = READ_DCW | /* READ termination... */ oc_entry.dcw_list_idx = READ_UNECHOED_DCW) then do; 017006 aa 000007 1160 07 cmpq 7,dl 017007 aa 000003 6000 04 tze 3,ic 017012 017010 aa 000011 1160 07 cmpq 9,dl 017011 aa 000141 6010 04 tnz 97,ic 017152 STATEMENT 1 ON LINE 2611 console_io.in_progress = false; 017012 aa 000611 2350 04 lda 393,ic 017623 = 757777777777 017013 aa 3 00006 3551 00 ansa pr3|6 console_io.in_progress STATEMENT 1 ON LINE 2612 call io_manager$get_status (oc_entry.device_idx, addr (oc_status)); 017014 aa 7 00155 3515 00 epp1 pr7|109 oc_status 017015 aa 6 00452 2515 00 spri1 pr6|298 017016 aa 5 00005 3521 00 epp2 pr5|5 oc_entry.device_idx 017017 aa 6 00444 2521 00 spri2 pr6|292 017020 aa 6 00452 3521 00 epp2 pr6|298 017021 aa 6 00446 2521 00 spri2 pr6|294 017022 aa 6 00442 6211 00 eax1 pr6|290 017023 aa 010000 4310 07 fld 4096,dl 017024 aa 6 00044 3701 20 epp4 pr6|36,* 017025 la 4 00120 3521 20 epp2 pr4|80,* io_manager$get_status 017026 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2613 console_io.leng = multiply ((divide (MAX_IO_LENGTH, 4, 17) - oc_status.tally_residue), 4, 17); 017027 aa 6 00040 3735 20 epp7 pr6|32,* 017030 aa 7 00160 2361 00 ldq pr7|112 oc_status.tally_residue 017031 aa 0 00410 3771 00 anaq pr0|264 = 000000000000 000000007777 017032 aa 6 00440 7561 00 stq pr6|288 oc_status.tally_residue 017033 aa 000400 2360 07 ldq 256,dl 017034 aa 000004 5060 07 div 4,dl 017035 aa 6 00440 1761 00 sbq pr6|288 oc_status.tally_residue 017036 aa 000002 7360 00 qls 2 017037 aa 000066 7370 00 lls 54 017040 aa 7 00410 3715 20 epp5 pr7|264,* console_io_ptr 017041 aa 5 00010 5511 60 stba pr5|8,60 console_io.leng STATEMENT 1 ON LINE 2615 if oc_status.character_position > 0 then console_io.leng = console_io.leng + oc_status.character_position - 4; 017042 aa 7 00160 2351 00 lda pr7|112 oc_status.character_position 017043 aa 000022 7350 00 als 18 017044 aa 000105 7730 00 lrl 69 017045 aa 6 00440 7561 00 stq pr6|288 oc_status.character_position 017046 aa 000007 6044 04 tmoz 7,ic 017055 017047 aa 5 00010 2351 00 lda pr5|8 console_io.leng 017050 aa 000066 7330 00 lrs 54 017051 aa 6 00440 0761 00 adq pr6|288 oc_status.character_position 017052 aa 000004 1760 07 sbq 4,dl 017053 aa 000066 7370 00 lls 54 017054 aa 5 00010 5511 60 stba pr5|8,60 console_io.leng STATEMENT 1 ON LINE 2617 call log_console_event (TERMINATED_READ, oc_data.io_ptr); 017055 aa 761065 3520 04 epp2 -7627,ic 000142 = 000000000021 017056 aa 6 00444 2521 00 spri2 pr6|292 017057 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 017060 aa 3 00022 3521 00 epp2 pr3|18 oc_data.io_ptr 017061 aa 6 00446 2521 00 spri2 pr6|294 017062 aa 000001 7270 07 lxl7 1,dl 017063 aa 6 00442 6211 00 eax1 pr6|290 017064 aa 010000 4310 07 fld 4096,dl 017065 aa 773711 3520 04 epp2 -2103,ic 012776 = 000120627000 017066 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2618 call send_newline (); 017067 aa 777475 6700 04 tsp4 -195,ic 016564 STATEMENT 1 ON LINE 2619 if console_io.leng = 0 then do; 017070 aa 6 00040 3735 20 epp7 pr6|32,* 017071 aa 7 00410 3715 20 epp5 pr7|264,* console_io_ptr 017072 aa 5 00010 2351 00 lda pr5|8 console_io.leng 017073 aa 000066 7330 00 lrs 54 017074 aa 000012 6010 04 tnz 10,ic 017106 STATEMENT 1 ON LINE 2620 oc_entry.oper_request = false; 017075 aa 000541 2350 04 lda 353,ic 017636 = 777737777777 017076 aa 7 00406 3535 20 epp3 pr7|262,* oc_entry_ptr 017077 aa 3 00002 3551 00 ansa pr3|2 oc_entry.oper_request STATEMENT 1 ON LINE 2621 call reset_read (); 017100 aa 000001 7270 07 lxl7 1,dl 017101 aa 6 00056 6211 00 eax1 pr6|46 017102 aa 000000 4310 07 fld 0,dl 017103 aa 777230 3520 04 epp2 -360,ic 016333 = 000100627000 017104 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2622 return; 017105 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2623 end; STATEMENT 1 ON LINE 2624 if console_io_ptr = addr (oc_data.priority_io) then do; 017106 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 017107 aa 3 00042 3535 00 epp3 pr3|34 oc_data.priority_io 017110 aa 6 00452 2535 00 spri3 pr6|298 017111 aa 6 00452 2371 00 ldaq pr6|298 017112 aa 7 00410 6771 00 eraq pr7|264 console_io_ptr 017113 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 017114 aa 000004 6010 04 tnz 4,ic 017120 STATEMENT 1 ON LINE 2625 console_io.completed = true; 017115 aa 010000 2350 03 lda 4096,du 017116 aa 5 00006 2551 00 orsa pr5|6 console_io.completed STATEMENT 1 ON LINE 2626 return; 017117 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2627 end; STATEMENT 1 ON LINE 2628 call pxss$ring_0_wakeup (oc_data.reader_process_id, /* tell reader to come get his mail... */ console_io.event_chan, console_io.time_queued, (0)); 017120 aa 6 00440 4501 00 stz pr6|288 017121 aa 7 00404 3515 20 epp1 pr7|260,* oc_data_ptr 017122 aa 1 00037 3521 00 epp2 pr1|31 oc_data.reader_process_id 017123 aa 6 00456 2521 00 spri2 pr6|302 017124 aa 5 00002 3521 00 epp2 pr5|2 console_io.event_chan 017125 aa 6 00460 2521 00 spri2 pr6|304 017126 aa 5 00000 3521 00 epp2 pr5|0 console_io.time_queued 017127 aa 6 00462 2521 00 spri2 pr6|306 017130 aa 6 00440 3521 00 epp2 pr6|288 017131 aa 6 00464 2521 00 spri2 pr6|308 017132 aa 6 00454 6211 00 eax1 pr6|300 017133 aa 020000 4310 07 fld 8192,dl 017134 aa 6 00044 3701 20 epp4 pr6|36,* 017135 la 4 00042 3521 20 epp2 pr4|34,* pxss$ring_0_wakeup 017136 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2630 call log_console_event (SENT_WAKEUP, oc_data.io_ptr); 017137 aa 760675 3520 04 epp2 -7747,ic 000034 = 000000000023 017140 aa 6 00444 2521 00 spri2 pr6|292 017141 aa 6 00040 3735 20 epp7 pr6|32,* 017142 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 017143 aa 5 00022 3521 00 epp2 pr5|18 oc_data.io_ptr 017144 aa 6 00446 2521 00 spri2 pr6|294 017145 aa 000001 7270 07 lxl7 1,dl 017146 aa 6 00442 6211 00 eax1 pr6|290 017147 aa 010000 4310 07 fld 4096,dl 017150 aa 773626 3520 04 epp2 -2154,ic 012776 = 000120627000 017151 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2631 end; STATEMENT 1 ON LINE 2633 return; 017152 aa 6 00122 6101 00 rtcd pr6|82 STATEMENT 1 ON LINE 2635 end terminate_io; END PROCEDURE terminate_io BEGIN PROCEDURE timeout ENTRY TO timeout STATEMENT 1 ON LINE 2637 timeout: proc () returns (bit (1)); 017153 aa 6 00130 6501 00 spri4 pr6|88 017154 aa 6 00132 2521 00 spri2 pr6|90 STATEMENT 1 ON LINE 2646 console_io_timeout = false; 017155 aa 000466 2350 04 lda 310,ic 017643 = 377777777777 017156 aa 6 00040 3735 20 epp7 pr6|32,* 017157 aa 7 00125 3551 00 ansa pr7|85 console_io_timeout STATEMENT 1 ON LINE 2647 if oc_entry.imu then if (clock () > (oc_entry.io_time + 1e06 * MAX_IMU_IO_TIME)) then goto console_timed_out; 017160 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 017161 aa 5 00002 2351 00 lda pr5|2 oc_entry.imu 017162 aa 000002 3150 03 cana 2,du 017163 aa 000025 6000 04 tze 21,ic 017210 017164 aa 000226 2360 07 ldq 150,dl 017165 aa 0 00465 7001 00 tsx0 pr0|309 fx1_to_fl2 017166 aa 760751 4610 04 fmp -7703,ic 000137 = 050750220000 017167 aa 6 00466 4551 00 fst pr6|310 017170 aa 5 00010 2371 00 ldaq pr5|8 oc_entry.io_time 017171 aa 216000 4110 03 lde 72704,du 017172 aa 400000 4750 03 fad 131072,du 017173 aa 6 00466 4751 00 fad pr6|310 017174 aa 6 00470 4571 00 dfst pr6|312 017175 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 017176 aa 216000 4110 03 lde 72704,du 017177 aa 400000 4750 03 fad 131072,du 017200 aa 6 00470 5171 00 dfcmp pr6|312 017201 aa 000026 6054 04 tpnz 22,ic 017227 STATEMENT 1 ON LINE 2650 else return (false); 017202 aa 6 00132 3735 20 epp7 pr6|90,* 017203 aa 7 00002 3535 20 epp3 pr7|2,* 017204 aa 003 100 060 400 csl (),(pr),fill(0),bool(move) 017205 aa 000000 00 0000 descb 0,0 017206 aa 3 00000 00 0001 descb pr3|0,1 017207 aa 6 00130 6101 00 rtcd pr6|88 STATEMENT 1 ON LINE 2651 else if (clock () > (oc_entry.io_time + 1e06 * MAX_IO_TIME (oc_entry.dcw_list_idx))) then do; 017210 aa 5 00006 7271 00 lxl7 pr5|6 oc_entry.dcw_list_idx 017211 ta 777777 2360 17 ldq -1,7 017212 aa 0 00465 7001 00 tsx0 pr0|309 fx1_to_fl2 017213 aa 760724 4610 04 fmp -7724,ic 000137 = 050750220000 017214 aa 6 00467 4551 00 fst pr6|311 017215 aa 5 00010 2371 00 ldaq pr5|8 oc_entry.io_time 017216 aa 216000 4110 03 lde 72704,du 017217 aa 400000 4750 03 fad 131072,du 017220 aa 6 00467 4751 00 fad pr6|311 017221 aa 6 00470 4571 00 dfst pr6|312 017222 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 017223 aa 216000 4110 03 lde 72704,du 017224 aa 400000 4750 03 fad 131072,du 017225 aa 6 00470 5171 00 dfcmp pr6|312 017226 aa 000024 6044 04 tmoz 20,ic 017252 STATEMENT 1 ON LINE 2652 console_timed_out: console_io_timeout = true; 017227 aa 400000 2350 03 lda 131072,du 017230 aa 6 00040 3735 20 epp7 pr6|32,* 017231 aa 7 00125 2551 00 orsa pr7|85 console_io_timeout STATEMENT 1 ON LINE 2654 call log_console_event (IO_TIMEOUT, oc_data.io_ptr); 017232 aa 760575 3520 04 epp2 -7811,ic 000027 = 000000000031 017233 aa 6 00474 2521 00 spri2 pr6|316 017234 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 017235 aa 3 00022 3521 00 epp2 pr3|18 oc_data.io_ptr 017236 aa 6 00476 2521 00 spri2 pr6|318 017237 aa 000001 7270 07 lxl7 1,dl 017240 aa 6 00472 6211 00 eax1 pr6|314 017241 aa 010000 4310 07 fld 4096,dl 017242 aa 773534 3520 04 epp2 -2212,ic 012776 = 000120627000 017243 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2655 return (true); 017244 aa 6 00132 3735 20 epp7 pr6|90,* 017245 aa 7 00002 3715 20 epp5 pr7|2,* 017246 aa 403 100 060 400 csl (),(pr),fill(1),bool(move) 017247 aa 000000 00 0000 descb 0,0 017250 aa 5 00000 00 0001 descb pr5|0,1 017251 aa 6 00130 6101 00 rtcd pr6|88 STATEMENT 1 ON LINE 2656 end; STATEMENT 1 ON LINE 2658 return (false); 017252 aa 6 00132 3735 20 epp7 pr6|90,* 017253 aa 7 00002 3535 20 epp3 pr7|2,* 017254 aa 003 100 060 400 csl (),(pr),fill(0),bool(move) 017255 aa 000000 00 0000 descb 0,0 017256 aa 3 00000 00 0001 descb pr3|0,1 017257 aa 6 00130 6101 00 rtcd pr6|88 STATEMENT 1 ON LINE 2660 end timeout; END PROCEDURE timeout BEGIN PROCEDURE unassign_bootload_console ENTRY TO unassign_bootload_console STATEMENT 1 ON LINE 2662 unassign_bootload_console: proc (); 017260 da 001015200000 017261 aa 000120 6270 00 eax7 80 017262 aa 7 00034 3521 20 epp2 pr7|28,* 017263 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 017264 aa 000000000000 017265 aa 000000000000 STATEMENT 1 ON LINE 2673 oc_entry_ptr = null; 017266 aa 760732 2370 04 ldaq -7718,ic 000220 = 077777000043 000001000000 017267 aa 6 00040 3735 20 epp7 pr6|32,* 017270 aa 7 00406 7571 00 staq pr7|262 oc_entry_ptr STATEMENT 1 ON LINE 2675 if oc_data.bootload_console_idx = 0 then do; 017271 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 017272 aa 5 00002 2351 00 lda pr5|2 oc_data.bootload_console_idx 017273 aa 000022 7350 00 als 18 017274 aa 000066 7330 00 lrs 54 017275 aa 6 00100 7561 00 stq pr6|64 oc_data.bootload_console_idx 017276 aa 000004 6010 04 tnz 4,ic 017302 STATEMENT 1 ON LINE 2676 old_console_name = ""; 017277 aa 760641 2350 04 lda -7775,ic 000140 = 040040040040 017300 aa 7 00353 7551 00 sta pr7|235 old_console_name STATEMENT 1 ON LINE 2677 return; 017301 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2678 end; STATEMENT 1 ON LINE 2680 oc_entry_ptr = addr (oc_data.opc (oc_data.bootload_console_idx)); 017302 aa 000034 4020 07 mpy 28,dl 017303 aa 6 00100 7561 00 stq pr6|64 017304 aa 000400 2360 07 ldq 256,dl 017305 aa 000003 0760 07 adq 3,dl 017306 aa 000002 7320 00 qrs 2 017307 aa 000012 0760 07 adq 10,dl 017310 aa 6 00101 7561 00 stq pr6|65 017311 aa 000001 0760 07 adq 1,dl 017312 aa 777776 3760 07 anq 262142,dl 017313 aa 000003 7360 00 qls 3 017314 aa 6 00102 7561 00 stq pr6|66 017315 aa 6 00101 2361 00 ldq pr6|65 017316 aa 000042 0760 07 adq 34,dl 017317 aa 000001 0760 07 adq 1,dl 017320 aa 777776 3760 07 anq 262142,dl 017321 aa 6 00101 0761 00 adq pr6|65 017322 aa 000001 0760 07 adq 1,dl 017323 aa 777776 3760 07 anq 262142,dl 017324 aa 000044 7770 00 llr 36 017325 aa 000044 7330 00 lrs 36 017326 aa 6 00102 0331 00 adl pr6|66 017327 aa 000012 0330 07 adl 10,dl 017330 aa 000001 0760 07 adq 1,dl 017331 aa 777776 3760 07 anq 262142,dl 017332 aa 6 00100 0761 00 adq pr6|64 017333 aa 5 77744 3535 06 epp3 pr5|-28,ql oc_data.opc 017334 aa 7 00406 2535 00 spri3 pr7|262 oc_entry_ptr STATEMENT 1 ON LINE 2681 old_console_name = oc_entry.name; 017335 aa 3 00000 2351 00 lda pr3|0 oc_entry.name 017336 aa 7 00353 7551 00 sta pr7|235 old_console_name STATEMENT 1 ON LINE 2682 oc_entry.io_in_progress = false; 017337 aa 000303 2350 04 lda 195,ic 017642 = 777577777777 017340 aa 3 00002 3551 00 ansa pr3|2 oc_entry.io_in_progress STATEMENT 1 ON LINE 2684 call io_manager$unassign (oc_entry.device_idx, (0)); 017341 aa 6 00100 4501 00 stz pr6|64 017342 aa 3 00005 3521 00 epp2 pr3|5 oc_entry.device_idx 017343 aa 6 00106 2521 00 spri2 pr6|70 017344 aa 6 00100 3521 00 epp2 pr6|64 017345 aa 6 00110 2521 00 spri2 pr6|72 017346 aa 6 00104 6211 00 eax1 pr6|68 017347 aa 010000 4310 07 fld 4096,dl 017350 la 4 00114 3521 20 epp2 pr4|76,* io_manager$unassign 017351 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2685 oc_entry.assigned = false; 017352 aa 000273 2350 04 lda 187,ic 017645 = 577777777777 017353 aa 6 00040 3735 20 epp7 pr6|32,* 017354 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 017355 aa 5 00002 3551 00 ansa pr5|2 oc_entry.assigned STATEMENT 1 ON LINE 2686 oc_data.bootload_console_idx = 0; 017356 aa 000000 2350 03 lda 0,du 017357 aa 7 00404 3535 20 epp3 pr7|260,* oc_data_ptr 017360 aa 3 00002 5511 14 stba pr3|2,14 oc_data.bootload_console_idx STATEMENT 1 ON LINE 2687 oc_entry.bootload_console = false; 017361 aa 000265 2350 04 lda 181,ic 017646 = 677777777777 017362 aa 5 00002 3551 00 ansa pr5|2 oc_entry.bootload_console STATEMENT 1 ON LINE 2688 oc_entry.io_device = true; 017363 aa 010000 2350 03 lda 4096,du 017364 aa 5 00002 2551 00 orsa pr5|2 oc_entry.io_device STATEMENT 1 ON LINE 2689 oc_entry.config_change = true; 017365 aa 002000 2350 03 lda 1024,du 017366 aa 5 00002 2551 00 orsa pr5|2 oc_entry.config_change STATEMENT 1 ON LINE 2691 return; 017367 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2693 end unassign_bootload_console; END PROCEDURE unassign_bootload_console BEGIN PROCEDURE unlock_oc_data ENTRY TO unlock_oc_data STATEMENT 1 ON LINE 2695 unlock_oc_data: proc (); 017370 da 001024200000 017371 aa 000140 6270 00 eax7 96 017372 aa 7 00034 3521 20 epp2 pr7|28,* 017373 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 017374 aa 000000000000 017375 aa 000000000000 STATEMENT 1 ON LINE 2710 do while (oc_data.no_lock_flags.got_special_int); 017376 aa 6 00040 3735 20 epp7 pr6|32,* 017377 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 017400 aa 5 00004 2351 00 lda pr5|4 oc_data.got_special_int 017401 aa 400000 3150 03 cana 131072,du 017402 aa 000050 6000 04 tze 40,ic 017452 STATEMENT 1 ON LINE 2711 oc_data.no_lock_flags.got_special_int = false; 017403 aa 000240 2350 04 lda 160,ic 017643 = 377777777777 017404 aa 5 00004 3551 00 ansa pr5|4 oc_data.got_special_int STATEMENT 1 ON LINE 2712 oc_entry_ptr = find_oc_entry (""); 017405 aa 760533 2350 04 lda -7845,ic 000140 = 040040040040 017406 aa 6 00100 7551 00 sta pr6|64 017407 aa 6 00100 3521 00 epp2 pr6|64 017410 aa 6 00104 2521 00 spri2 pr6|68 017411 aa 7 00406 3521 00 epp2 pr7|262 oc_entry_ptr 017412 aa 6 00106 2521 00 spri2 pr6|70 017413 aa 000001 7270 07 lxl7 1,dl 017414 aa 6 00102 6211 00 eax1 pr6|66 017415 aa 010000 4310 07 fld 4096,dl 017416 aa 771317 3520 04 epp2 -3377,ic 010735 = 000140627000 017417 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2713 if oc_entry_ptr ^= null then do; 017420 aa 6 00040 3735 20 epp7 pr6|32,* 017421 aa 7 00406 2371 00 ldaq pr7|262 oc_entry_ptr 017422 aa 760576 6770 04 eraq -7810,ic 000220 = 077777000043 000001000000 017423 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 017424 aa 000017 6000 04 tze 15,ic 017443 STATEMENT 1 ON LINE 2714 oc_entry.got_special_int = true; 017425 aa 000100 2350 03 lda 64,du 017426 aa 7 00406 3715 20 epp5 pr7|262,* oc_entry_ptr 017427 aa 5 00002 2551 00 orsa pr5|2 oc_entry.got_special_int STATEMENT 1 ON LINE 2715 call process_io_status (); 017430 aa 000001 7270 07 lxl7 1,dl 017431 aa 6 00056 6211 00 eax1 pr6|46 017432 aa 000000 4310 07 fld 0,dl 017433 aa 774656 3520 04 epp2 -1618,ic 014311 = 000520627000 017434 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2716 call process_io (); 017435 aa 000001 7270 07 lxl7 1,dl 017436 aa 6 00056 6211 00 eax1 pr6|46 017437 aa 000000 4310 07 fld 0,dl 017440 aa 774337 3520 04 epp2 -1825,ic 013777 = 000140627000 017441 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2717 end; 017442 aa 777734 7100 04 tra -36,ic 017376 STATEMENT 1 ON LINE 2718 else if ^oc_data.mc_io_enabled then oc_data.in_service = false; 017443 aa 7 00404 3715 20 epp5 pr7|260,* oc_data_ptr 017444 aa 5 00003 2351 00 lda pr5|3 oc_data.mc_io_enabled 017445 aa 100000 3150 03 cana 32768,du 017446 aa 777730 6010 04 tnz -40,ic 017376 017447 aa 000174 2350 04 lda 124,ic 017643 = 377777777777 017450 aa 5 00003 3551 00 ansa pr5|3 oc_data.in_service STATEMENT 1 ON LINE 2720 end; 017451 aa 777725 7100 04 tra -43,ic 017376 STATEMENT 1 ON LINE 2722 if ^stacq (oc_data.lock, ""b, pds$process_id) then do; 017452 aa 000000 4310 07 fld 0,dl 017453 aa 5 00000 3521 00 epp2 pr5|0 oc_data.lock 017454 aa 6 00044 3701 20 epp4 pr6|36,* 017455 la 4 00100 2361 20 ldq pr4|64,* pds$process_id 017456 aa 0 01434 7001 00 tsx0 pr0|796 stacq_mac 017457 aa 000037 6010 04 tnz 31,ic 017516 STATEMENT 1 ON LINE 2723 if oc_data.lock ^= ""b then /* not ours, if not free crash... */ call report_error (PANIC, "unlock_oc_data", "Lock not mine."); 017460 aa 5 00000 2351 00 lda pr5|0 oc_data.lock 017461 aa 000035 6000 04 tze 29,ic 017516 017462 aa 760577 2350 04 lda -7809,ic 000261 = 165156154157 017463 aa 760577 2360 04 ldq -7809,ic 000262 = 143153137157 017464 aa 6 00102 7571 00 staq pr6|66 017465 aa 760576 2350 04 lda -7810,ic 000263 = 143137144141 017466 aa 164141 2360 03 ldq 59489,du 017467 aa 6 00104 7571 00 staq pr6|68 017470 aa 760565 2350 04 lda -7819,ic 000255 = 114157143153 017471 aa 760565 2360 04 ldq -7819,ic 000256 = 040156157164 017472 aa 6 00112 7571 00 staq pr6|74 017473 aa 760564 2350 04 lda -7820,ic 000257 = 040155151156 017474 aa 145056 2360 03 ldq 51758,du 017475 aa 6 00114 7571 00 staq pr6|76 017476 aa 760453 3520 04 epp2 -7893,ic 000151 = 000000000006 017477 aa 6 00120 2521 00 spri2 pr6|80 017500 aa 6 00102 3521 00 epp2 pr6|66 017501 aa 6 00122 2521 00 spri2 pr6|82 017502 aa 6 00112 3521 00 epp2 pr6|74 017503 aa 6 00124 2521 00 spri2 pr6|84 017504 aa 760466 3520 04 epp2 -7882,ic 000172 = 404000000021 017505 aa 6 00130 2521 00 spri2 pr6|88 017506 aa 760404 3520 04 epp2 -7932,ic 000112 = 524000000016 017507 aa 6 00132 2521 00 spri2 pr6|90 017510 aa 6 00134 2521 00 spri2 pr6|92 017511 aa 000001 7270 07 lxl7 1,dl 017512 aa 6 00116 6211 00 eax1 pr6|78 017513 aa 014000 4310 07 fld 6144,dl 017514 aa 775520 3520 04 epp2 -1200,ic 015234 = 000400627000 017515 aa 0 00626 7001 00 tsx0 pr0|406 call_int_other_desc STATEMENT 1 ON LINE 2725 end; STATEMENT 1 ON LINE 2727 call unwire_and_unmask; 017516 aa 000001 7270 07 lxl7 1,dl 017517 aa 6 00056 6211 00 eax1 pr6|46 017520 aa 000000 4310 07 fld 0,dl 017521 aa 000027 3520 04 epp2 23,ic 017550 = 000120627000 017522 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other STATEMENT 1 ON LINE 2729 return; 017523 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2731 end unlock_oc_data; END PROCEDURE unlock_oc_data BEGIN PROCEDURE wire_and_mask ENTRY TO wire_and_mask STATEMENT 1 ON LINE 2733 wire_and_mask: proc (); 017524 da 001027200000 017525 aa 000120 6270 00 eax7 80 017526 aa 7 00034 3521 20 epp2 pr7|28,* 017527 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 017530 aa 000000000000 017531 aa 000000000000 STATEMENT 1 ON LINE 2736 call privileged_mode_ut$wire_and_mask (wire_mask, wire_ptw_ptr); 017532 aa 6 00040 3735 20 epp7 pr6|32,* 017533 aa 7 00366 3521 00 epp2 pr7|246 wire_mask 017534 aa 6 00102 2521 00 spri2 pr6|66 017535 aa 7 00106 3521 00 epp2 pr7|70 wire_ptw_ptr 017536 aa 6 00104 2521 00 spri2 pr6|68 017537 aa 6 00100 6211 00 eax1 pr6|64 017540 aa 010000 4310 07 fld 4096,dl 017541 la 4 00036 3521 20 epp2 pr4|30,* privileged_mode_ut$wire_and_mask 017542 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2737 wired_and_masked = true; 017543 aa 400000 2350 03 lda 131072,du 017544 aa 6 00040 3735 20 epp7 pr6|32,* 017545 aa 7 00126 7551 00 sta pr7|86 wired_and_masked STATEMENT 1 ON LINE 2738 return; 017546 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO unwire_and_unmask STATEMENT 1 ON LINE 2740 unwire_and_unmask: entry; 017547 da 001037200000 017550 aa 000120 6270 00 eax7 80 017551 aa 7 00034 3521 20 epp2 pr7|28,* 017552 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 017553 aa 000000000000 017554 aa 000000000000 STATEMENT 1 ON LINE 2742 if wired_and_masked then do; 017555 aa 6 00040 3735 20 epp7 pr6|32,* 017556 aa 7 00126 2351 00 lda pr7|86 wired_and_masked 017557 aa 000014 6000 04 tze 12,ic 017573 STATEMENT 1 ON LINE 2743 call privileged_mode_ut$unwire_unmask (wire_mask, wire_ptw_ptr); 017560 aa 7 00366 3521 00 epp2 pr7|246 wire_mask 017561 aa 6 00102 2521 00 spri2 pr6|66 017562 aa 7 00106 3521 00 epp2 pr7|70 wire_ptw_ptr 017563 aa 6 00104 2521 00 spri2 pr6|68 017564 aa 6 00100 6211 00 eax1 pr6|64 017565 aa 010000 4310 07 fld 4096,dl 017566 aa 6 00044 3701 20 epp4 pr6|36,* 017567 la 4 00040 3521 20 epp2 pr4|32,* privileged_mode_ut$unwire_unmask 017570 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 2744 wired_and_masked = false; 017571 aa 6 00040 3735 20 epp7 pr6|32,* 017572 aa 7 00126 4501 00 stz pr7|86 wired_and_masked STATEMENT 1 ON LINE 2745 end; STATEMENT 1 ON LINE 2746 return; 017573 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 2748 end wire_and_mask; END PROCEDURE wire_and_mask END PROCEDURE ocdcm_ ----------------------------------------------------------- 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