COMPILATION LISTING OF SEGMENT dump_mpc_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/08/84 1237.9 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* DUMP_MPC_ - Print Memory Image for MPC. 7* coded 7/8/75 by Noel I. Morris */ 8 /* 9* Modified June 1984 by Paul Farley for DAU support, use a pointer 10* parameter to reference the MPC memory image and implement duplicate 11* output line supression (i.e. "===='s"). 12**/ 13 14 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend */ 15 16 /* ****************************************************** 17* * * 18* * * 19* * Copyright (c) 1972 by Massachusetts Institute of * 20* * Technology and Honeywell Information Systems, Inc. * 21* * * 22* * * 23* ****************************************************** */ 24 25 26 dump_mpc_: 27 proc (image_ptr, sw, mpc_datap, short_sw); 28 29 dcl image_ptr ptr parameter; 30 dcl image (0:4095) bit (16) unal based (image_ptr); /* MPC memory image */ 31 dcl sw ptr, /* IOX_ switch for output */ 32 short_sw bit (1); /* Switch for short line */ 33 34 dcl loc fixed bin (16), /* current location in trace */ 35 dt char (24); /* current date and time */ 36 37 dcl sub_image_ptr ptr; /* pointer to data printed of current line */ 38 dcl sub_image (16) bit (16) unal based (sub_image_ptr); /* Portion of data that fits on 1 line */ 39 dcl eurc_sub_image (32) bit (8) unal based (sub_image_ptr);/* ditto for EURC */ 40 dcl match_image bit (256) unal based (match_image_ptr); 41 dcl check_image bit (256) unal based (check_image_ptr); 42 dcl (match_image_ptr, check_image_ptr) ptr; 43 dcl (duplicate, displayed_equal) bit (1); 44 dcl (line_count, page_count) fixed bin; 45 dcl ioa_$ioa_switch entry options (variable); 46 dcl date_time_ entry (fixed bin (52), char (*)); 47 dcl urp_sw bit (1) init ("0"b); 48 dcl eurc_addr fixed bin (16) uns; 49 dcl dau_addr fixed bin (16) uns; 50 dcl (addr, bit, clock, hbound, substr) builtin; 51 52 53 54 55 call date_time_ (clock (), dt); /* Get current date and time. */ 56 57 if substr (mpc_data.type, 1, 3) = "urp" then urp_sw = "1"b; 58 line_count = 56; 59 page_count = 0; 60 duplicate, displayed_equal = "0"b; 61 do loc = 0 to hbound (image, 1) by 16; /* Iterate through the memory image. */ 62 if line_count = 56 then do; /* Every 56 lines, start a new page. */ 63 page_count = page_count + 1; 64 call ioa_$ioa_switch (sw, "^|^5xDump of ^a controller. ^[FW Rev. ^a^;^s^]^3x^a^2xPage: ^d^/", 65 mpc_data.name, ^urp_sw, mpc_data.fw_rev, dt, page_count); 66 line_count = 0; 67 end; 68 69 /* get pointer to data for current line */ 70 sub_image_ptr, check_image_ptr = addr (image (loc)); 71 if ^duplicate & loc ^= 0 then match_image_ptr = addr (image (loc - 16)); 72 duplicate = "0"b; 73 if loc ^= 0 & loc + 16 < hbound (image, 1) 74 then if match_image = check_image then duplicate = "1"b; 75 if duplicate 76 then if ^displayed_equal 77 then if (line_count > 0 & line_count < 55) then do; 78 call ioa_$ioa_switch (sw, "===="); 79 line_count = line_count + 1; 80 displayed_equal = "1"b; 81 end; 82 else goto display_line; 83 else ; 84 else do; 85 display_line: 86 if short_sw 87 then call ioa_$ioa_switch (sw, "^4.4b ^8( ^2(^4.4b^)^)", bit (loc, 16), sub_image); 88 else call ioa_$ioa_switch (sw, "^4.4b ^2( ^4( ^2( ^4.4b^)^)^)", bit (loc, 16), sub_image); 89 line_count = line_count + 1; 90 duplicate, displayed_equal = "0"b; 91 end; 92 end; 93 return; 94 95 dump_mpc_$eurc: 96 entry (image_ptr, sw, mpc_datap, short_sw); 97 dcl eurc_image (0:3071) bit (16) unal based (image_ptr); 98 99 100 call date_time_ (clock (), dt); /* Get current date and time. */ 101 102 eurc_addr = 32768; /* thats 8000Hex */ 103 line_count = 56; 104 page_count = 0; 105 duplicate, displayed_equal = "0"b; 106 do loc = 0 to hbound (eurc_image, 1) by 16; /* Iterate through the memory image. */ 107 if line_count = 56 then do; /* Every 56 lines, start a new page. */ 108 page_count = page_count + 1; 109 call ioa_$ioa_switch (sw, "^|^5xDump of ^a controller.^3x^a^2xPage: ^d^/", mpc_data.name, dt, 110 page_count); 111 line_count = 0; 112 end; 113 114 /* get pointer to data for current line */ 115 sub_image_ptr, check_image_ptr = addr (eurc_image (loc)); 116 if ^duplicate & loc ^= 0 then match_image_ptr = addr (eurc_image (loc - 16)); 117 duplicate = "0"b; 118 if loc ^= 0 & loc + 16 < hbound (eurc_image, 1) 119 then if match_image = check_image then duplicate = "1"b; 120 if duplicate 121 then if ^displayed_equal 122 then if (line_count > 0 & line_count < 55) then do; 123 call ioa_$ioa_switch (sw, "===="); 124 line_count = line_count + 1; 125 displayed_equal = "1"b; 126 end; 127 else goto eurc_display; 128 else ; 129 else do; 130 eurc_display: 131 if short_sw 132 then call ioa_$ioa_switch (sw, "^4.4b ^8( ^4(^2.4b^)^)", bit (eurc_addr, 16), eurc_sub_image); 133 else call ioa_$ioa_switch (sw, "^4.4b ^2( ^8( ^2(^2.4b^)^)^)", bit (eurc_addr, 16), eurc_sub_image); 134 line_count = line_count + 1; 135 duplicate, displayed_equal = "0"b; 136 end; 137 eurc_addr = eurc_addr + 32; 138 end; 139 return; 140 141 142 dump_mpc_$dau: 143 entry (image_ptr, sw, mpc_datap, short_sw); 144 dcl dau_image (0:16383) bit (16) unal based (image_ptr); 145 146 147 call date_time_ (clock (), dt); /* Get current date and time. */ 148 line_count = 56; 149 page_count = 0; 150 dau_addr = 0; 151 duplicate, displayed_equal = "0"b; 152 do loc = 0 to hbound (dau_image, 1) by 16; /* Iterate through the memory image. */ 153 if line_count = 56 then do; /* Every 56 lines, start a new page. */ 154 page_count = page_count + 1; 155 call ioa_$ioa_switch (sw, "^|^5xDump of DAU ^a. FW Rev. ^a, HW Rev. ^2.4b(hex)^3x^a^2xPage: ^d^/", 156 mpc_data.name, mpc_data.fw_rev, mpc_data.dau_rev, dt, page_count); 157 line_count = 0; 158 end; 159 160 /* get pointer to data for current line */ 161 sub_image_ptr, check_image_ptr = addr (dau_image (loc)); 162 if ^duplicate & loc ^= 0 then match_image_ptr = addr (dau_image (loc - 16)); 163 duplicate = "0"b; 164 if loc ^= 0 & loc + 16 < hbound (dau_image, 1) 165 then if match_image = check_image then duplicate = "1"b; 166 if duplicate 167 then if ^displayed_equal 168 then if (line_count > 0 & line_count < 55) then do; 169 call ioa_$ioa_switch (sw, "===="); 170 line_count = line_count + 1; 171 displayed_equal = "1"b; 172 end; 173 else goto dau_display; 174 else ; 175 else do; 176 dau_display: 177 if short_sw 178 then call ioa_$ioa_switch (sw, "^4.4b ^8( ^2(^4.4b^)^)", bit (dau_addr, 16), sub_image); 179 else call ioa_$ioa_switch (sw, "^4.4b ^2( ^4( ^2( ^4.4b^)^)^)", bit (dau_addr, 16), sub_image); 180 line_count = line_count + 1; 181 duplicate, displayed_equal = "0"b; 182 end; 183 if loc < hbound (dau_image, 1) - 16 then dau_addr = dau_addr + 32; 184 end; 185 return; 186 187 1 1 /* Begin include file ..... dump_mpc_data.incl.pl1 */ 1 2 1 3 /* Structure of data used by the dump_mpc command */ 1 4 1 5 /* Written March 1977 by Larry Johnson */ 1 6 /* Modified Jan 1981 by Rich Coppola to add additional info about mpc's */ 1 7 /* Modified May 1982 by Rich Coppola to add structure for EURC statistics */ 1 8 /* 1 9* Modified June 1984 by Paul Farley to add MSP800(DAU) support. 1 10**/ 1 11 1 12 dcl mpc_datap ptr; 1 13 1 14 dcl 1 mpc_data aligned based (mpc_datap), 1 15 2 type char (4), /* Type of mpc: tape, disk, or urc */ 1 16 2 name char (32), /* Name of device, suitable for headings */ 1 17 2 model fixed bin, /* Model of device, from rcp_ */ 1 18 2 fw_rev char (2), /* Revision level of current firmware */ 1 19 2 trace_start fixed bin, /* Address of first trace table entry */ 1 20 2 trace_size fixed bin, /* Total number of mpc words in trace table */ 1 21 2 trace_cur fixed bin, /* Address of next available trace entry */ 1 22 2 mpc_stat_addr fixed bin, /* Address of mpc error counters */ 1 23 2 mpc_err_int_ctr_addr fixed bin, /* Address of the err int ctr */ 1 24 2 mpc_err_data_reg_addr fixed bin, /* Address of error data register */ 1 25 2 dev_stat_addr fixed bin, /* Address of device statistics table */ 1 26 2 config_sw bit (16), /* Settings of switches on maintaince panel */ 1 27 2 dau_rev bit (8); /* Revision of DAU hardware */ 1 28 1 29 1 30 /* structure of data collected on mpc statistics */ 1 31 1 32 dcl mpc_stat_infop ptr; 1 33 1 34 dcl 1 mpc_stat_info aligned based (mpc_stat_infop), 1 35 2 mpc_name char (4), 1 36 2 stat_counters (12) fixed bin, 1 37 2 error_data, 1 38 3 pad bit (8), 1 39 3 int_counter fixed bin (8) uns, 1 40 3 register bit (16), 1 41 3 auxar bit (16), 1 42 3 intar bit (16), 1 43 2 eurc_data, 1 44 3 uptime_clock fixed bin (32) uns, 1 45 3 prom_revision, 1 46 4 core bit (8), 1 47 4 iom bit (8), 1 48 4 special_controller bit (8), 1 49 4 link_edit bit (8), 1 50 4 pdsi_application bit (8), 1 51 4 self_test bit (8), 1 52 4 dai_application bit (8), 1 53 2 ndev fixed bin, 1 54 2 dev_info (64) like dev_stat_info; 1 55 1 56 dcl dev_stat_infop ptr; 1 57 1 58 dcl 1 dev_stat_info aligned based (dev_stat_infop), 1 59 2 subsystem char (4), 1 60 2 model char (6), 1 61 2 driveno fixed bin, 1 62 2 opi bit (1), 1 63 2 port fixed bin, 1 64 2 ca fixed bin, 1 65 2 stat (16) fixed bin (16) uns; 1 66 1 67 dcl mpc_stat_analp ptr; 1 68 1 69 dcl 1 mpc_stat_anal based (mpc_stat_analp), 1 70 2 num_interps fixed bin, 1 71 2 interpretation (16), 1 72 3 message char (43) var, 1 73 3 HINT char (21) var, 1 74 2 auxar bit (16), 1 75 2 intar bit (16), 1 76 2 err_ctr fixed bin, 1 77 2 mpc_stat_ctrs, 1 78 3 num_ctr_interps fixed bin, 1 79 3 interp_stat_ctrs (20) char (20) var, 1 80 3 stat_cntr_cnt (20) fixed bin; 1 81 1 82 /* End include file ..... dump_mpc_data.incl.pl1 */ 188 189 190 end dump_mpc_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/08/84 1229.8 dump_mpc_.pl1 >special_ldd>online>6953>dump_mpc_.pl1 188 1 10/08/84 1229.8 dump_mpc_data.incl.pl1 >special_ldd>online>6953>dump_mpc_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. addr builtin function dcl 50 ref 70 71 115 116 161 162 bit builtin function dcl 50 ref 85 85 88 88 130 130 133 133 176 176 179 179 check_image based bit(256) unaligned dcl 41 ref 73 118 164 check_image_ptr 000114 automatic pointer dcl 42 set ref 70* 73 115* 118 161* 164 clock builtin function dcl 50 ref 55 55 100 100 147 147 date_time_ 000012 constant entry external dcl 46 ref 55 100 147 dau_addr 000124 automatic fixed bin(16,0) unsigned dcl 49 set ref 150* 176 176 179 179 183* 183 dau_image based bit(16) array unaligned dcl 144 set ref 152 161 162 164 183 dau_rev 23 based bit(8) level 2 dcl 1-14 set ref 155* dev_stat_info based structure level 1 dcl 1-58 displayed_equal 000117 automatic bit(1) unaligned dcl 43 set ref 60* 75 80* 90* 105* 120 125* 135* 151* 166 171* 181* dt 000101 automatic char(24) unaligned dcl 34 set ref 55* 64* 100* 109* 147* 155* duplicate 000116 automatic bit(1) unaligned dcl 43 set ref 60* 71 72* 73* 75 90* 105* 116 117* 118* 120 135* 151* 162 163* 164* 166 181* eurc_addr 000123 automatic fixed bin(16,0) unsigned dcl 48 set ref 102* 130 130 133 133 137* 137 eurc_image based bit(16) array unaligned dcl 97 set ref 106 115 116 118 eurc_sub_image based bit(8) array unaligned dcl 39 set ref 130* 133* fw_rev 12 based char(2) level 2 dcl 1-14 set ref 64* 155* hbound builtin function dcl 50 ref 61 73 106 118 152 164 183 image based bit(16) array unaligned dcl 30 set ref 61 70 71 73 image_ptr parameter pointer dcl 29 ref 26 61 70 71 73 95 106 115 116 118 142 152 161 162 164 183 ioa_$ioa_switch 000010 constant entry external dcl 45 ref 64 78 85 88 109 123 130 133 155 169 176 179 line_count 000120 automatic fixed bin(17,0) dcl 44 set ref 58* 62 66* 75 75 79* 79 89* 89 103* 107 111* 120 120 124* 124 134* 134 148* 153 157* 166 166 170* 170 180* 180 loc 000100 automatic fixed bin(16,0) dcl 34 set ref 61* 70 71 71 73 73 85 85 88 88* 106* 115 116 116 118 118* 152* 161 162 162 164 164 183* match_image based bit(256) unaligned dcl 40 ref 73 118 164 match_image_ptr 000112 automatic pointer dcl 42 set ref 71* 73 116* 118 162* 164 mpc_data based structure level 1 dcl 1-14 mpc_datap parameter pointer dcl 1-12 ref 26 57 64 64 95 109 142 155 155 155 name 1 based char(32) level 2 dcl 1-14 set ref 64* 109* 155* page_count 000121 automatic fixed bin(17,0) dcl 44 set ref 59* 63* 63 64* 104* 108* 108 109* 149* 154* 154 155* short_sw parameter bit(1) unaligned dcl 31 ref 26 85 95 130 142 176 sub_image based bit(16) array unaligned dcl 38 set ref 85* 88* 176* 179* sub_image_ptr 000110 automatic pointer dcl 37 set ref 70* 85 88 115* 130 133 161* 176 179 substr builtin function dcl 50 ref 57 sw parameter pointer dcl 31 set ref 26 64* 78* 85* 88* 95 109* 123* 130* 133* 142 155* 169* 176* 179* type based char(4) level 2 dcl 1-14 ref 57 urp_sw 000122 automatic bit(1) initial unaligned dcl 47 set ref 47* 57* 64 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. dev_stat_infop automatic pointer dcl 1-56 mpc_stat_anal based structure level 1 unaligned dcl 1-69 mpc_stat_analp automatic pointer dcl 1-67 mpc_stat_info based structure level 1 dcl 1-34 mpc_stat_infop automatic pointer dcl 1-32 NAMES DECLARED BY EXPLICIT CONTEXT. dau_display 001234 constant label dcl 176 ref 166 display_line 000401 constant label dcl 85 ref 75 dump_mpc_ 000156 constant entry external dcl 26 dump_mpc_$dau 001023 constant entry external dcl 142 dump_mpc_$eurc 000512 constant entry external dcl 95 eurc_display 000714 constant label dcl 130 ref 120 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1436 1452 1344 1446 Length 1652 1344 14 164 71 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dump_mpc_ 180 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dump_mpc_ 000100 loc dump_mpc_ 000101 dt dump_mpc_ 000110 sub_image_ptr dump_mpc_ 000112 match_image_ptr dump_mpc_ 000114 check_image_ptr dump_mpc_ 000116 duplicate dump_mpc_ 000117 displayed_equal dump_mpc_ 000120 line_count dump_mpc_ 000121 page_count dump_mpc_ 000122 urp_sw dump_mpc_ 000123 eurc_addr dump_mpc_ 000124 dau_addr dump_mpc_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. date_time_ ioa_$ioa_switch NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 47 000146 26 000151 55 000164 57 000203 58 000213 59 000215 60 000216 61 000220 62 000225 63 000230 64 000231 66 000303 70 000304 71 000315 72 000330 73 000331 75 000346 78 000356 79 000375 80 000376 83 000400 85 000401 88 000444 89 000501 90 000502 92 000504 93 000507 95 000510 100 000520 102 000537 103 000541 104 000543 105 000544 106 000546 107 000553 108 000556 109 000557 111 000616 115 000617 116 000630 117 000643 118 000644 120 000661 123 000671 124 000710 125 000711 128 000713 130 000714 133 000755 134 001010 135 001011 137 001013 138 001015 139 001020 142 001021 147 001031 148 001050 149 001052 150 001053 151 001054 152 001056 153 001063 154 001066 155 001067 157 001136 161 001137 162 001150 163 001163 164 001164 166 001201 169 001211 170 001230 171 001231 174 001233 176 001234 179 001275 180 001330 181 001331 183 001333 184 001340 185 001343 ----------------------------------------------------------- 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