COMPILATION LISTING OF SEGMENT load_disk_mpcs 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 0951.4 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* *********************************************************** */ 8 9 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 10 11 load_disk_mpcs: proc; 12 13 /* get firmware into (non-bootload) disk mpcs 14*Keith Loepere, March 1984 */ 15 /* Modified 10/84 by Allen Ball to check all channels before deciding an mpc is 16*dead. Also to handle -chnl option of bce_fwload. */ 17 /* Modified 11/84 by Keith Loepere to understand controllers with all deleted channels. */ 18 19 20 /****^ HISTORY COMMENTS: 21* 1) change(86-04-22,Farley), approve(86-07-18,MCR7439), 22* audit(86-08-18,Fawcett), install(86-10-20,MR12.0-1189): 23* Changed to initialize all possible ss_info.flags. 24* END HISTORY COMMENTS */ 25 26 27 dcl addr builtin; 28 dcl bce_command_processor_ entry (char (*), entry (ptr, char (*), fixed bin (35)) returns (entry), ptr, fixed bin (35)); 29 dcl bce_fwload entry (ptr); 30 dcl bce_query entry options (variable); 31 dcl code fixed bin (35); 32 dcl config_$find entry (char (4) aligned, ptr); 33 dcl dimension builtin; 34 dcl divide builtin; 35 dcl error_table_$io_not_configured fixed bin (35) ext; 36 dcl hc_load_mpc$test_controller entry (char (8) aligned, fixed bin (35)); 37 dcl io_chnl_util$iom_to_name entry (fixed bin (3), fixed bin (7), char (8) aligned, fixed bin (35)); 38 dcl ioa_ entry () options (variable); 39 dcl max builtin; 40 dcl me char (14) init ("load_disk_mpcs") static options (constant); 41 dcl mpc_chanid char (8) aligned; 42 dcl mpc_names char (128) var; 43 dcl 1 my_ss_info aligned like ss_info; 44 dcl line char (80); 45 dcl null builtin; 46 dcl rtrim builtin; 47 dcl string builtin; 48 dcl substr builtin; 49 dcl syserr entry options (variable); 50 51 ss_info_ptr = addr (my_ss_info); 52 ss_info.request_table_ptr = null; 53 ss_info.abort_label = RE_ASK; 54 ss_info.name = me; 55 ss_info.arg_list_ptr = null; 56 ss_info.info_ptr = null; 57 string (ss_info.flags) = ""b; 58 ss_info.flags.forbid_semicolons = "1"b; 59 60 RE_CHECK: 61 call check_mpcs; 62 if mpc_names = "" then return; 63 64 RE_ASK: 65 call bce_query (line, "Enter disk mpc names to be loaded, 66 or ""none"" or ""abort"" or ""all"": "); 67 68 if line = "none" then return; 69 else if line = "abort" then call syserr (CRASH, "load_disk_mpcs: Operator aborted disk MPC loading."); 70 else if line = "all" then line = "load " || mpc_names; /* command of all names */ 71 else line = "load " || rtrim (line); /* make it a command */ 72 call bce_command_processor_ (line, command_finder, ss_info_ptr, code); 73 if code ^= 0 then do; 74 if code ^= 100 then call ioa_ ("Bad syntax in line."); 75 go to RE_ASK; 76 end; 77 78 go to RE_CHECK; 79 80 command_finder: proc (Info_ptr, command, code) returns (entry); 81 82 dcl Info_ptr pointer; 83 dcl command char (*); 84 dcl code fixed bin (35); 85 86 code = 0; 87 return (bce_fwload); 88 end; 89 90 check_mpcs: proc; 91 92 dcl all_channels_deleted bit (1); 93 dcl mpc_card_array_index fixed bin; 94 dcl running bit (1); 95 96 /* Generate list of names of dead mpcs. */ 97 98 mpc_names = ""; 99 mpc_cardp = null; 100 call config_$find (MPC_CARD_WORD, mpc_cardp); 101 do while (mpc_cardp ^= null); 102 if substr (mpc_card.name, 1, 3) = "msp" then do; 103 running = "0"b; 104 all_channels_deleted = "1"b; /* if all channels get io_not_configured then mpc is not connected anyway */ 105 do mpc_card_array_index = 1 to dimension (mpc_card_array.port, 1) while (^running); 106 call io_chnl_util$iom_to_name ((mpc_card_array.port.iom (mpc_card_array_index)), (mpc_card_array.port.chan (mpc_card_array_index)), mpc_chanid, code); 107 if code = 0 then do; 108 call hc_load_mpc$test_controller (mpc_chanid, code); 109 if code = 0 then running = "1"b; 110 if code ^= error_table_$io_not_configured then all_channels_deleted = "0"b; 111 end; 112 end; 113 if ^all_channels_deleted then 114 if ^running then mpc_names = mpc_names || mpc_card.name || " "; /* add to list needing firmware */ 115 end; 116 call config_$find (MPC_CARD_WORD, mpc_cardp); 117 end; 118 if mpc_names ^= "" then call syserr (ANNOUNCE, "load_disk_mpcs: Disk mpc(s): ^a 119 appear not to be operating.", mpc_names); 120 return; 121 end; 122 /* Begin include file bce_subsystem_info_.incl.pl1 BIM 11/82 */ 1 2 1 3 /* format: style3 */ 1 4 1 5 /* Deleted unused items, Keith Loepere, 5/84 */ 1 6 1 7 1 8 /****^ HISTORY COMMENTS: 1 9* 1) change(86-04-22,Farley), approve(86-07-18,MCR7439), 1 10* audit(86-10-08,Fawcett), install(86-10-20,MR12.0-1189): 1 11* Added request_handling_opr_aborts flag for save/restore. 1 12* END HISTORY COMMENTS */ 1 13 1 14 declare ss_info_ptr pointer; 1 15 declare 1 ss_info aligned based (ss_info_ptr), 1 16 2 request_table_ptr 1 17 pointer, 1 18 2 abort_label label, 1 19 2 name char (32) unaligned, 1 20 2 arg_list_ptr pointer, 1 21 2 info_ptr pointer, 1 22 2 flags aligned, 1 23 3 forbid_semicolons bit (1) unaligned, 1 24 3 request_handling_opr_aborts bit (1) unaligned; 1 25 1 26 /* End include file bce_subsystem_info_ */ 122 123 /* BEGIN INCLUDE FILE ... config_mpc_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 2 2 2 3 dcl mpc_cardp ptr; /* Pointer to an MPC card. */ 2 4 2 5 dcl 1 mpc_card aligned based (mpc_cardp), 2 6 2 word char (4), /* "mpc" */ 2 7 2 name char (4), /* Name of this MPC - e.g., "mspa" */ 2 8 2 model fixed bin, /* Model of this MPC - e.g., 601. */ 2 9 2 port (4), /* Per port information. 12 fields total */ 2 10 3 iom fixed bin (3), /* IOM number */ 2 11 3 chan fixed bin (8), /* Channel number. */ 2 12 3 nchan fixed bin, /* Number of logical channels on this channel. */ 2 13 2 14 2 type_word aligned, 2 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 2 16 3 pad1 bit (4) unaligned, 2 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 2 18 2 19 dcl 1 mpc_card_array aligned based (mpc_cardp), /* Overlay for MPC port array */ 2 20 2 pad1 (3) bit (36) aligned, 2 21 2 port (divide (max (0, (mpc_card.n_fields - 2)), 3, 17, 0)), 2 22 3 iom fixed bin (3), /* IOM number */ 2 23 3 chan fixed bin (8), /* Channel number. */ 2 24 3 nchan fixed bin; /* Number of logical channels on this channel. */ 2 25 2 26 dcl MPC_CARD_WORD char (4) aligned internal static options (constant) init ("mpc"); 2 27 2 28 /* END INCLUDE FILE ... config_mpc_card.incl.pl1 */ 123 124 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 3 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 3 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 3 4 3 5 /* This include file has an ALM version. Keep 'em in sync! */ 3 6 3 7 dcl ( 3 8 3 9 /* The following constants define the message action codes. This indicates 3 10*how a message is to be handled. */ 3 11 3 12 SYSERR_CRASH_SYSTEM init (1), 3 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 3 14 3 15 SYSERR_TERMINATE_PROCESS init (2), 3 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 3 17 3 18 SYSERR_PRINT_WITH_ALARM init (3), 3 19 BEEP init (3), /* Beep and print the message on the console. */ 3 20 3 21 SYSERR_PRINT_ON_CONSOLE init (0), 3 22 ANNOUNCE init (0), /* Just print the message on the console. */ 3 23 3 24 SYSERR_LOG_OR_PRINT init (4), 3 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 3 26 3 27 SYSERR_LOG_OR_DISCARD init (5), 3 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 3 29 3 30 3 31 /* The following constants are added to the normal severities to indicate 3 32*different sorting classes of messages. */ 3 33 3 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 3 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 3 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 3 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 3 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 3 39 ) fixed bin internal static options (constant); 3 40 3 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 124 125 126 /* BEGIN MESSAGE DOCUMENTATION 127* 128* Message: 129* load_disk_mpcs: Disk mpc(s): NAMES 130* appear not to be operating. 131* 132* S: $announce 133* 134* T: $init 135* 136* M: The named disk mpcs, listed in the config deck, did not respond to 137* a "request status" control order. They are believed not to be operating; 138* in particular, firmware should probably be loaded into them. 139* 140* Message: 141* load_disk_mpcs: Operator aborted disk MPC loading. 142* 143* S: $crash 144* 145* T: $init 146* 147* M: The operator answered "abort" when requested to supply disk mpcs to be 148* loaded. This will cause a return to the previous bce command level. 149* 150* END MESSAGE DOCUMENTATION */ 151 152 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0816.1 load_disk_mpcs.pl1 >spec>install>1112>load_disk_mpcs.pl1 122 1 10/21/86 1251.6 bce_subsystem_info_.incl.pl1 >ldd>include>bce_subsystem_info_.incl.pl1 123 2 05/08/81 1853.6 config_mpc_card.incl.pl1 >ldd>include>config_mpc_card.incl.pl1 124 3 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.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. ANNOUNCE 000022 constant fixed bin(17,0) initial dcl 3-7 set ref 118* CRASH 000023 constant fixed bin(17,0) initial dcl 3-7 set ref 69* Info_ptr parameter pointer dcl 82 ref 80 MPC_CARD_WORD 000000 constant char(4) initial dcl 2-26 set ref 100* 116* abort_label 2 based label variable level 2 dcl 1-15 set ref 53* addr builtin function dcl 27 ref 51 all_channels_deleted 000230 automatic bit(1) packed unaligned dcl 92 set ref 104* 110* 113 arg_list_ptr 16 based pointer level 2 dcl 1-15 set ref 55* bce_command_processor_ 000010 constant entry external dcl 28 ref 72 bce_fwload 000012 constant entry external dcl 29 ref 87 bce_query 000014 constant entry external dcl 30 ref 64 chan 4 based fixed bin(8,0) array level 3 dcl 2-19 ref 106 code parameter fixed bin(35,0) dcl 84 in procedure "command_finder" set ref 80 86* code 000100 automatic fixed bin(35,0) dcl 31 in procedure "load_disk_mpcs" set ref 72* 73 74 106* 107 108* 109 110 command parameter char packed unaligned dcl 83 ref 80 config_$find 000016 constant entry external dcl 32 ref 100 116 dimension builtin function dcl 33 ref 105 divide builtin function dcl 34 ref 105 error_table_$io_not_configured 000020 external static fixed bin(35,0) dcl 35 ref 110 flags 22 based structure level 2 dcl 1-15 set ref 57* forbid_semicolons 22 based bit(1) level 3 packed packed unaligned dcl 1-15 set ref 58* hc_load_mpc$test_controller 000022 constant entry external dcl 36 ref 108 info_ptr 20 based pointer level 2 dcl 1-15 set ref 56* io_chnl_util$iom_to_name 000024 constant entry external dcl 37 ref 106 ioa_ 000026 constant entry external dcl 38 ref 74 iom 3 based fixed bin(3,0) array level 3 dcl 2-19 ref 106 line 000171 automatic char(80) packed unaligned dcl 44 set ref 64* 68 69 70 70* 71* 71 72* max builtin function dcl 39 ref 105 me 000001 constant char(14) initial packed unaligned dcl 40 ref 54 mpc_card based structure level 1 dcl 2-5 mpc_card_array based structure level 1 dcl 2-19 mpc_card_array_index 000231 automatic fixed bin(17,0) dcl 93 set ref 105* 106 106* mpc_cardp 000220 automatic pointer dcl 2-3 set ref 99* 100* 101 102 105 105 106 106 113 116* mpc_chanid 000102 automatic char(8) dcl 41 set ref 106* 108* mpc_names 000104 automatic varying char(128) dcl 42 set ref 62 70 98* 113* 113 118 118* my_ss_info 000146 automatic structure level 1 dcl 43 set ref 51 n_fields 17(32) based fixed bin(4,0) level 3 packed packed unsigned unaligned dcl 2-5 ref 105 name 6 based char(32) level 2 in structure "ss_info" packed packed unaligned dcl 1-15 in procedure "load_disk_mpcs" set ref 54* name 1 based char(4) level 2 in structure "mpc_card" dcl 2-5 in procedure "load_disk_mpcs" ref 102 113 null builtin function dcl 45 ref 52 55 56 99 101 port 3 based structure array level 2 dcl 2-19 ref 105 request_table_ptr based pointer level 2 dcl 1-15 set ref 52* rtrim builtin function dcl 46 ref 71 running 000232 automatic bit(1) packed unaligned dcl 94 set ref 103* 105 109* 113 ss_info based structure level 1 dcl 1-15 ss_info_ptr 000216 automatic pointer dcl 1-14 set ref 51* 52 53 54 55 56 57 58 72* string builtin function dcl 47 set ref 57* substr builtin function dcl 48 ref 102 syserr 000030 constant entry external dcl 49 ref 69 118 type_word 17 based structure level 2 dcl 2-5 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BEEP internal static fixed bin(17,0) initial dcl 3-7 JUST_LOG internal static fixed bin(17,0) initial dcl 3-7 LOG internal static fixed bin(17,0) initial dcl 3-7 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 3-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 3-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 3-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 3-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 3-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 3-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 3-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 3-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 3-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 3-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 3-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 3-7 NAMES DECLARED BY EXPLICIT CONTEXT. RE_ASK 000151 constant label dcl 64 ref 53 75 RE_CHECK 000143 constant label dcl 60 ref 78 check_mpcs 000375 constant entry internal dcl 90 ref 60 command_finder 000352 constant entry internal dcl 80 ref 72 72 load_disk_mpcs 000117 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 772 1024 627 1002 Length 1262 627 32 221 142 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME load_disk_mpcs 252 external procedure is an external procedure. command_finder 65 internal procedure is assigned to an entry variable. check_mpcs internal procedure shares stack frame of external procedure load_disk_mpcs. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME load_disk_mpcs 000100 code load_disk_mpcs 000102 mpc_chanid load_disk_mpcs 000104 mpc_names load_disk_mpcs 000146 my_ss_info load_disk_mpcs 000171 line load_disk_mpcs 000216 ss_info_ptr load_disk_mpcs 000220 mpc_cardp load_disk_mpcs 000230 all_channels_deleted check_mpcs 000231 mpc_card_array_index check_mpcs 000232 running check_mpcs THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bce_command_processor_ bce_fwload bce_query config_$find hc_load_mpc$test_controller io_chnl_util$iom_to_name ioa_ syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$io_not_configured LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000116 51 000124 52 000126 53 000130 54 000133 55 000136 56 000137 57 000140 58 000141 60 000143 62 000144 64 000151 68 000171 69 000175 70 000222 71 000244 72 000273 73 000324 74 000326 75 000347 78 000350 80 000351 86 000365 87 000367 90 000375 98 000376 99 000377 100 000401 101 000412 102 000416 103 000423 104 000424 105 000426 106 000445 107 000471 108 000473 109 000504 110 000510 112 000514 113 000516 115 000556 116 000557 117 000570 118 000571 120 000622 ----------------------------------------------------------- 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