COMPILATION LISTING OF SEGMENT analyze_system_fault_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1919.36_Mon_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* Procedure to analyze IOM system fault status. */ 12 /* Coded 10/31/74 by Noel I. Morris */ 13 /* Modified 1 July 1982 by Chris Jones to add rsnnl entry. */ 14 15 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 16 analyze_system_fault_: 17 proc (p_devname, p_fword); 18 19 dcl p_description char (*) varying parameter;/* English description of fault */ 20 dcl p_devname char (*) parameter; /* device name */ 21 dcl p_fword bit (36) aligned parameter;/* system fault word */ 22 23 dcl fword bit (36) aligned; /* copy of faultword */ 24 dcl message char (64) var; /* error message */ 25 dcl rs_sw bit (1) aligned; /* whether we return a description or output it */ 26 27 dcl com_err_ entry options (variable); 28 29 dcl (addr, substr) builtin; 30 31 rs_sw = "0"b; /* don't return the message, just output it */ 32 goto COMMON; 33 34 rsnnl: 35 entry (p_fword, p_description); 36 37 rs_sw = "1"b; 38 39 COMMON: 40 fword = p_fword; 41 statp = addr (fword); /* Get pointer to system fault word. */ 42 43 if ^rs_sw then 44 call com_err_ (0, p_devname, "IOM system fault on channel ^2.3b.", substr (faultword.channel, 4)); 45 46 47 if (faultword.serv_req & "11100"b) = "00000"b then 48 message = "Invalid"; 49 else if faultword.serv_req = "00110"b then 50 message = "First list"; 51 else if (faultword.serv_req & "11110"b) = "00100"b then 52 message = "Second list"; 53 else if faultword.serv_req = "00111"b then 54 message = "Backup list"; 55 else if (faultword.serv_req & "11100"b) = "01000"b then 56 message = "Status"; 57 else if (faultword.serv_req & "11100"b) = "01100"b then 58 message = "Program interrupt"; 59 else if faultword.serv_req = "10000"b then 60 message = "Indirect single precision data load"; 61 else if faultword.serv_req = "10001"b then 62 message = "Indirect double precision data load"; 63 else if faultword.serv_req = "10100"b then 64 message = "Indirect single precision data store"; 65 else if faultword.serv_req = "10101"b then 66 message = "Indirect double precision data store"; 67 else if faultword.serv_req = "11000"b then 68 message = "Direct single precision data load"; 69 else if faultword.serv_req = "11001"b then 70 message = "Direct double precision data load"; 71 else if faultword.serv_req = "11010"b then 72 message = "Direct read clear"; 73 else if faultword.serv_req = "11100"b then 74 message = "Direct single precision data store"; 75 else if faultword.serv_req = "11101"b then 76 message = "Direct double precision data store"; 77 78 if rs_sw then 79 p_description = "System fault during """ || message || """ service."; 80 else call com_err_ (0, p_devname, "Operation was ""^a service"".", message); 81 82 83 if faultword.controller_fault = "0010"b then 84 message = "Non-existent address"; 85 else if faultword.controller_fault = "0011"b then 86 message = "Fault on condition"; 87 else if faultword.controller_fault = "0101"b then 88 message = "Data parity, store to SC"; 89 else if faultword.controller_fault = "0110"b then 90 message = "Data parity in store"; 91 else if faultword.controller_fault = "0111"b then 92 message = "Data parity, store to SC and in store"; 93 else if faultword.controller_fault = "1000"b then 94 message = "Not control port"; 95 else if faultword.controller_fault = "1001"b then 96 message = "Port not enabled"; 97 else if faultword.controller_fault = "1010"b then 98 message = "Illegal instruction"; 99 else if faultword.controller_fault = "1011"b then 100 message = "Store not ready"; 101 else if faultword.controller_fault = "1100"b then 102 message = "ZAC parity, active module to SC"; 103 else if faultword.controller_fault = "1101"b then 104 message = "Data parity, active module to SC"; 105 else if faultword.controller_fault = "1110"b then 106 message = "ZAC parity, SC to store"; 107 else if faultword.controller_fault = "1111"b then 108 message = "Data parity, SC to store"; 109 110 if faultword.controller_fault then do; 111 if rs_sw then 112 p_description = p_description || " System controller fault was """ || message || """."; 113 else call com_err_ (0, p_devname, "System controller fault was ""^a"".", message); 114 end; 115 116 if faultword.io_fault = "000001"b then 117 message = "Illegal channel number"; 118 else if faultword.io_fault = "000010"b then 119 message = "Illegal service request"; 120 else if faultword.io_fault = "000011"b then 121 message = "Parity error reading from scratchpad"; 122 else if faultword.io_fault = "000100"b then 123 message = "Attempt to cross 256K boundary"; 124 else if faultword.io_fault = "000101"b then 125 message = "Tally runout on connect channel LPW"; 126 else if faultword.io_fault = "000110"b then 127 message = "Attempt to connect to illegal PCW"; 128 else if faultword.io_fault = "000111"b then 129 message = "IDCW found when DCW or TDCW expected"; 130 else if faultword.io_fault = "001000"b then 131 message = "Illegal character position"; 132 else if faultword.io_fault = "001001"b then 133 message = "No memory response"; 134 else if faultword.io_fault = "001010"b then 135 message = "Parity error accessing SC"; 136 else if faultword.io_fault = "001011"b then 137 message = "Illegal connect channel LPW tally"; 138 else if faultword.io_fault = "001100"b then 139 message = "Attempt to use REL bit in Multics mode"; 140 else if faultword.io_fault = "001101"b then 141 message = "Attempt to use mod64 DCW in GCOS mode"; 142 else if faultword.io_fault = "001110"b then 143 message = "LPW extension bit ON in standard GCOS mode"; 144 else if faultword.io_fault = "001111"b then 145 message = "No memory port selected"; 146 147 if faultword.io_fault then do; 148 if rs_sw then 149 p_description = p_description || " I/O fault was """ || message || """."; 150 else call com_err_ (0, p_devname, "I/O fault was ""^a"".", message); 151 end; 152 153 return; 154 1 1 1 2 /* Begin include file ...... iom_stat.incl.pl1 */ 1 3 /* Last modified on 10/31/74 by Noel I. Morris */ 1 4 1 5 dcl statp ptr; /* pointer to status */ 1 6 1 7 dcl 1 status based (statp) aligned, /* IOM status information */ 1 8 (2 t bit (1), /* set to "1"b by IOM */ 1 9 2 power bit (1), /* non-zero if peripheral absent or power off */ 1 10 2 major bit (4), /* major status */ 1 11 2 sub bit (6), /* substatus */ 1 12 2 eo bit (1), /* even/odd bit */ 1 13 2 marker bit (1), /* non-zero if marker status */ 1 14 2 soft bit (2), /* software status */ 1 15 2 initiate bit (1), /* initiate bit */ 1 16 2 abort bit (1), /* software abort bit */ 1 17 2 channel_stat bit (3), /* IOM channel status */ 1 18 2 central_stat bit (3), /* IOM central status */ 1 19 2 mbz bit (6), 1 20 2 rcount bit (6), /* record count residue */ 1 21 2 address bit (18), /* DCW address residue */ 1 22 2 char_pos bit (3), /* character position residue */ 1 23 2 r bit (1), /* non-zero if reading */ 1 24 2 type bit (2), /* type of last DCW */ 1 25 2 tally bit (12)) unal; /* DCW tally residue */ 1 26 1 27 dcl 1 faultword based (statp) aligned, /* system fault word */ 1 28 (2 mbz1 bit (9), 1 29 2 channel bit (9), /* channel number */ 1 30 2 serv_req bit (5), /* service request */ 1 31 2 mbz2 bit (3), 1 32 2 controller_fault bit (4), /* system controller fault code */ 1 33 2 io_fault bit (6)) unal; /* I/O fault code */ 1 34 1 35 dcl 1 special_status based (statp) aligned, /* special status from PSIA */ 1 36 (2 t bit (1), /* entry present bit */ 1 37 2 channel bit (8), /* channel number */ 1 38 2 pad1 bit (3), 1 39 2 device bit (6), /* device address */ 1 40 2 pad2 bit (1), 1 41 2 byte2 bit (8), /* device dependent information */ 1 42 2 pad3 bit (1), 1 43 2 byte3 bit (8)) unal; /* device dependent information */ 1 44 1 45 /* End of include file iom_stat.incl.pl1 */ 1 46 155 156 157 end analyze_system_fault_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1919.3 analyze_system_fault_.pl1 >udd>sm>ds>w>ml>analyze_system_fault_.pl1 155 1 01/10/75 1443.6 iom_stat.incl.pl1 >ldd>incl>iom_stat.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. addr builtin function dcl 29 ref 41 channel 0(09) based bit(9) level 2 packed packed unaligned dcl 1-27 ref 43 43 com_err_ 000010 constant entry external dcl 27 ref 43 80 113 150 controller_fault 0(26) based bit(4) level 2 packed packed unaligned dcl 1-27 ref 83 85 87 89 91 93 95 97 99 101 103 105 107 110 faultword based structure level 1 dcl 1-27 fword 000100 automatic bit(36) dcl 23 set ref 39* 41 io_fault 0(30) based bit(6) level 2 packed packed unaligned dcl 1-27 ref 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 147 message 000101 automatic varying char(64) dcl 24 set ref 47* 49* 51* 53* 55* 57* 59* 61* 63* 65* 67* 69* 71* 73* 75* 78 80* 83* 85* 87* 89* 91* 93* 95* 97* 99* 101* 103* 105* 107* 111 113* 116* 118* 120* 122* 124* 126* 128* 130* 132* 134* 136* 138* 140* 142* 144* 148 150* p_description parameter varying char dcl 19 set ref 34 78* 111* 111 148* 148 p_devname parameter char packed unaligned dcl 20 set ref 16 43* 80* 113* 150* p_fword parameter bit(36) dcl 21 ref 16 34 39 rs_sw 000122 automatic bit(1) dcl 25 set ref 31* 37* 43 78 111 148 serv_req 0(18) based bit(5) level 2 packed packed unaligned dcl 1-27 ref 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 statp 000124 automatic pointer dcl 1-5 set ref 41* 43 43 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 83 85 87 89 91 93 95 97 99 101 103 105 107 110 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 147 substr builtin function dcl 29 ref 43 43 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. special_status based structure level 1 dcl 1-35 status based structure level 1 dcl 1-7 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000612 constant label dcl 39 ref 32 analyze_system_fault_ 000546 constant entry external dcl 16 rsnnl 000572 constant entry external dcl 34 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2004 2016 1741 2014 Length 2202 1741 12 150 42 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME analyze_system_fault_ 120 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME analyze_system_fault_ 000100 fword analyze_system_fault_ 000101 message analyze_system_fault_ 000122 rs_sw analyze_system_fault_ 000124 statp analyze_system_fault_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc return_mac shorten_stack ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000542 31 000564 32 000565 34 000566 37 000610 39 000612 41 000614 43 000616 47 000657 49 000673 51 000704 53 000715 55 000726 57 000736 59 000746 61 000757 63 000767 65 000777 67 001007 69 001017 71 001027 73 001037 75 001047 78 001056 80 001115 83 001151 85 001165 87 001175 89 001205 91 001215 93 001225 95 001235 97 001245 99 001255 101 001265 103 001275 105 001305 107 001315 110 001324 111 001326 113 001377 116 001433 118 001446 120 001456 122 001466 124 001476 126 001506 128 001516 130 001526 132 001536 134 001546 136 001556 138 001566 140 001576 142 001606 144 001616 147 001625 148 001627 150 001700 153 001737 ----------------------------------------------------------- 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