COMPILATION LISTING OF SEGMENT heals_scan_config_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 09/27/84 0746.3 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 heals_scan_config_: proc (heals_ior_args_p, r_code); 7 8 /* ****************************************************************************** 9* * * 10* * Comments: * 11* * * 12* * Written by RH Morrison Nov. 19, 1976 * 13* * Last modified by C. Hornig, October 1982 14* * * 15* ****************************************************************************** */ 16 17 /* FF */ 18 /* ******** DECLARATIONS ******** */ 19 20 /* **** PROCEDURE ARGUMENTS **** */ 21 dcl heals_ior_args_p ptr; 22 dcl r_code fixed bin (35); 23 24 25 /* **** EXTERNAL STATIC **** */ 26 dcl config_deck$ ext; 27 28 /* **** ENTRIES **** */ 29 dcl ioa_ entry options (variable); 30 dcl clock_ entry returns (fixed bin (71)); 31 dcl date_time_ entry (fixed bin (71), char (*)); 32 33 /* **** POINTERS **** */ 34 dcl ch_data_p ptr; /* Pointer to channel data */ 35 dcl config_deck_p ptr; /* Pointer to config deck */ 36 dcl flags_p ptr init (null); 37 38 /* pointers declared elsewhere: 39* ior_flags_p 40* ior_parms_p 41* ior_avars_p 42* ch_nfo_p 43**/ 44 45 46 /* **** CHARACTER STRING VARIABLES **** */ 47 dcl date_time char (16); 48 dcl date char (8); 49 dcl time char (6); 50 51 /* Arguments */ 52 dcl whoami char (18) init ("heals_scan_config_"); 53 dcl version_date char (8) init ("12/15/76"); 54 55 /* **** ARITHMETIC VARIABLES **** */ 56 dcl code fixed bin (35); 57 dcl deck_stopper fixed bin based (config_deck_p); /* flag at end of deck */ 58 dcl ch_data_stop fixed bin based (ch_data_p); /* flag at end of channel data */ 59 dcl nb_ch fixed bin (6); 60 dcl clock_time fixed bin (71); 61 dcl (i, j) fixed bin; 62 dcl bulk_port fixed bin; 63 64 /* Arguments */ 65 dcl version_nb fixed bin init (1); 66 67 /* **** BIT STRING VARIABLES **** */ 68 dcl flags_word bit (36) aligned; 69 70 /* **** ARRAY VARIABLES **** */ 71 dcl tag_ar (0:8) char (1) init ("", "a", "b", "c", "d", "e", "f", "g", "h"); 72 73 /* **** BASED VARIABLES **** */ 74 dcl 1 flags aligned based (flags_p), 75 (2 trace bit (1), 76 2 db bit (1), 77 2 fill bit (1) 78 ) unal; 79 80 dcl 1 ch_nfo_ar (1:max_iom_nb_a) aligned based (ch_nfo_ar_p), 81 2 ch_entry (0:max_ch_nb_a) like ch_nfo; 82 83 /* Declarations of config deck cards. */ 84 dcl 1 prph aligned based (config_deck_p), /* A prph card */ 85 2 word char (4), /* The word "prph" */ 86 2 name char (4), /* Name of device */ 87 2 iom fixed bin (3), /* Iom number */ 88 2 chan fixed bin (6), /* Channel number */ 89 2 model fixed bin, /* Model number */ 90 2 nchan fixed bin (6); /* Number of channels available */ 91 92 dcl 1 dsk_prph aligned based (config_deck_p), /* A disk subsystem prph card */ 93 2 word char (4), 94 2 name char (4), 95 2 iom fixed bin (3), 96 2 chan fixed bin (6), 97 2 nchan fixed bin (6), 98 2 model fixed bin; 99 100 dcl 1 fnp aligned based (config_deck_p), /* A d355 card */ 101 2 word char (4), 102 2 tag fixed bin, 103 2 chan fixed bin (6), 104 2 iom fixed bin (3); 105 106 dcl 1 bulk_card aligned based (config_deck_p), /* A bulk store card */ 107 2 word char (4), 108 2 frec fixed bin, 109 2 nrec fixed bin, 110 2 port fixed bin, 111 2 int0 fixed bin; 112 113 dcl 1 chan_card aligned based (config_deck_p), /* A chnl card */ 114 2 word char (4), 115 2 name char (4), 116 2 ch_entry like ch_data; 117 118 dcl 1 ch_data aligned based (ch_data_p), /* channel data on a chnl card */ 119 2 iom fixed bin (3), 120 2 chan fixed bin (6), 121 2 nchan fixed bin (6); 122 123 /* **** MISC. DECLARATIONS **** */ 124 125 dcl (addr, addrel, null, substr) builtin; 126 dcl cleanup condition; 127 128 /* FF */ 129 /* **** INCLUDE FILES **** */ 1 1 /* BEGIN INCLUDE FILE heals_io_report_args.incl.pl1 */ 1 2 /* Created by RH Morrison Dec. 9,1976 */ 1 3 /* Last modified by RH Morrison 12/13/76 */ 1 4 1 5 dcl 1 ior_ptrs aligned based (heals_ior_args_p), 1 6 2 ior_flags_p ptr, 1 7 2 ior_prms_p ptr, 1 8 2 ch_nfo_ar_p ptr, 1 9 2 ioerr_log_sw_p ptr, 1 10 2 ior_avars_p ptr; 1 11 1 12 dcl 1 ior_flags aligned based (ior_ptrs.ior_flags_p), 1 13 (2 trace bit (1), 1 14 2 db bit (1), 1 15 2 no_recs bit (1) 1 16 ) unal; 1 17 1 18 dcl 1 ior_prms aligned based (ior_ptrs.ior_prms_p), 1 19 (2 max_iom_nb_a fixed bin, 1 20 2 max_ch_nb_a fixed bin, 1 21 2 max_tape_nb_a fixed bin, 1 22 2 max_line_cnt_a fixed bin) unal; 1 23 1 24 dcl ch_nfo_p ptr; 1 25 dcl 1 ch_nfo aligned based (ch_nfo_p), 1 26 (2 dev_nam char (4), 1 27 2 model fixed bin, 1 28 2 lchan fixed bin (6), 1 29 2 uchan fixed bin (6), 1 30 2 i_set bit (1) 1 31 ) unal; 1 32 1 33 dcl 1 ior_avars aligned based (ior_ptrs.ior_avars_p), 1 34 2 bulk_port fixed bin; 1 35 1 36 /* END INCLUDE FILE heals_io_report_args.incl.pl1 */ 130 131 /* **** END OF DECLARATIONS **** */ 132 /* FF */ 133 /* ******** PROCEDURE ******** */ 134 135 /* **** Procedure Initialization **** */ 136 137 on cleanup call clean_up; 138 139 /* Init returns. */ 140 r_code = 0; 141 142 /* Init pointers. */ 143 flags_p = addr (flags_word); 144 145 /* Init procedure constants. */ 146 147 /* Init control flags. */ 148 flags_word = "0"b; 149 150 /* Init all else. */ 151 code = 0; 152 153 do i = 1 to max_iom_nb_a; /* init ch_nfo_ar */ 154 do j = 0 to max_ch_nb_a; 155 ch_nfo_ar.ch_entry.i_set (i, j) = "0"b; /* if used, set to 1 by scan_config */ 156 end; 157 end; 158 159 160 /* **** End Procedure Initialization **** */ 161 162 /* Run information. */ 163 clock_time = clock_ (); 164 call date_time_ (clock_time, date_time); 165 date = substr (date_time, 1, 8); 166 time = substr (date_time, 11, 6); 167 if flags.trace 168 | ior_flags.trace 169 then call ioa_ ("^a run info: date ^a, time ^a, version ^d of ^a.", 170 whoami, date, time, version_nb, version_date); 171 172 /* Scan the config deck and put peripheral info in ch_nfo_ar. */ 173 174 config_deck_p = addr (config_deck$); /* Start in beginning */ 175 do while (deck_stopper ^= -1); /* And scan til end */ 176 if prph.word = "prph" 177 then do; ch_nfo_p = addr (ch_nfo_ar.ch_entry (prph.iom, prph.chan)); /* set pointer to array entry */ 178 ch_nfo.i_set = "1"b; /* mark entry as initialized */ 179 ch_nfo.dev_nam = prph.name; /* fill in values from config_deck */ 180 ch_nfo.lchan = prph.chan; 181 ch_nfo.uchan = prph.chan; 182 if substr (prph.name, 1, 3) = "tap" | 183 substr (prph.name, 1, 3) = "dsk" /* multiple channels */ then do; 184 nb_ch = dsk_prph.nchan; 185 ch_nfo.uchan = ch_nfo.lchan + nb_ch -1; 186 ch_nfo.model = dsk_prph.model; 187 if nb_ch >1 /* copy data to other channels */ 188 then do i = 1 to nb_ch-1; 189 ch_nfo_ar.ch_entry (prph.iom, prph.chan+i) = ch_nfo_ar.ch_entry (prph.iom, prph.chan); 190 end; 191 end; 192 else ch_nfo.model = prph.model; 193 if ch_nfo.model > 9999 then ch_nfo.model = 9999; /* dummy model number */ 194 end; 195 else if chan_card.word = "chnl" 196 then do; ch_data_p = addrel (config_deck_p, 2); 197 do while (ch_data_stop ^= -1); 198 ch_nfo_p = addr (ch_nfo_ar.ch_entry (ch_data.iom, ch_data.chan)); 199 ch_nfo.i_set = "1"b; 200 ch_nfo.dev_nam = chan_card.name; 201 ch_nfo.model = 9999; 202 ch_nfo.lchan = ch_data.chan; 203 ch_nfo.uchan = ch_data.chan + ch_data.nchan -1; 204 if ch_data.nchan > 1 205 then do i = 1 to ch_data.nchan -1; 206 ch_nfo_ar.ch_entry (ch_data.iom, ch_data.chan + i) 207 = ch_nfo_ar.ch_entry (ch_data.iom, ch_data.chan); 208 end; 209 ch_data_p = addrel (ch_data_p, 3); 210 end; 211 end; 212 else if fnp.word = "d355" /* datanet */ 213 then do; ch_nfo_p = addr (ch_nfo_ar.ch_entry (fnp.iom, fnp.chan)); 214 ch_nfo.i_set = "1"b; 215 if fnp.tag < 0 | fnp.tag > 8 then fnp.tag = 0; 216 ch_nfo.dev_nam = "355" || tag_ar (fnp.tag); /* use character tag */ 217 ch_nfo.lchan = fnp.chan; 218 ch_nfo.uchan = fnp.chan; 219 ch_nfo.model = 9999; 220 end; 221 else if bulk_card.word = "bulk" then bulk_port = bulk_card.port; 222 223 config_deck_p = addrel (config_deck_p, 16); /* To next card */ 224 end; 225 return; 226 227 /* FF */ 228 clean_up: proc; 229 return; 230 end clean_up; 231 232 err_return: return; 233 234 235 end heals_scan_config_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/27/84 0745.3 heals_scan_config_.pl1 >spec>on>heals>heals_scan_config_.pl1 130 1 10/25/77 1258.3 heals_io_report_args.incl.pl1 >ldd>include>heals_io_report_args.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 125 ref 143 174 177 198 213 addrel builtin function dcl 125 ref 196 209 223 bulk_card based structure level 1 dcl 106 bulk_port 000134 automatic fixed bin(17,0) dcl 62 set ref 221* ch_data based structure level 1 dcl 118 ch_data_p 000100 automatic pointer dcl 34 set ref 196* 197 198 198 202 203 203 204 204 206 206 206 206 209* 209 ch_data_stop based fixed bin(17,0) dcl 58 ref 197 ch_entry based structure array level 2 dcl 80 set ref 177 189* 189 198 206* 206 213 ch_nfo based structure level 1 dcl 1-25 ch_nfo_ar based structure array level 1 dcl 80 ch_nfo_ar_p 4 based pointer level 2 dcl 1-5 ref 155 177 189 189 198 206 206 213 ch_nfo_p 000150 automatic pointer dcl 1-24 set ref 177* 178 179 180 181 185 185 186 192 193 193 198* 199 200 201 202 203 213* 214 216 217 218 219 chan 1 based fixed bin(6,0) level 2 in structure "ch_data" dcl 118 in procedure "heals_scan_config_" ref 198 202 203 206 206 chan 3 based fixed bin(6,0) level 2 in structure "prph" dcl 84 in procedure "heals_scan_config_" ref 177 180 181 189 189 chan 2 based fixed bin(6,0) level 2 in structure "fnp" dcl 100 in procedure "heals_scan_config_" ref 213 217 218 chan_card based structure level 1 dcl 113 cleanup 000142 stack reference condition dcl 126 ref 137 clock_ 000014 constant entry external dcl 30 ref 163 clock_time 000130 automatic fixed bin(71,0) dcl 60 set ref 163* 164* code 000126 automatic fixed bin(35,0) dcl 56 set ref 151* config_deck$ 000010 external static fixed bin(17,0) dcl 26 set ref 174 config_deck_p 000102 automatic pointer dcl 35 set ref 174* 175 176 177 177 179 180 181 182 182 184 186 189 189 189 189 192 195 196 200 212 213 213 215 215 215 216 217 218 221 221 223* 223 date 000112 automatic char(8) unaligned dcl 48 set ref 165* 167* date_time 000106 automatic char(16) unaligned dcl 47 set ref 164* 165 166 date_time_ 000016 constant entry external dcl 31 ref 164 deck_stopper based fixed bin(17,0) dcl 57 ref 175 dev_nam based char(4) level 2 packed unaligned dcl 1-25 set ref 179* 200* 216* dsk_prph based structure level 1 dcl 92 flags based structure level 1 dcl 74 flags_p 000104 automatic pointer initial dcl 36 set ref 36* 143* 167 flags_word 000136 automatic bit(36) dcl 68 set ref 143 148* fnp based structure level 1 dcl 100 heals_ior_args_p parameter pointer dcl 21 ref 6 153 154 155 155 155 167 177 177 177 189 189 189 189 189 189 198 198 198 206 206 206 206 206 206 213 213 213 i 000132 automatic fixed bin(17,0) dcl 61 set ref 153* 155* 187* 189* 204* 206* i_set 1(32) based bit(1) array level 3 in structure "ch_nfo_ar" packed unaligned dcl 80 in procedure "heals_scan_config_" set ref 155* i_set 1(32) based bit(1) level 2 in structure "ch_nfo" packed unaligned dcl 1-25 in procedure "heals_scan_config_" set ref 178* 199* 214* ioa_ 000012 constant entry external dcl 29 ref 167 iom 2 based fixed bin(3,0) level 2 in structure "prph" dcl 84 in procedure "heals_scan_config_" ref 177 189 189 iom 3 based fixed bin(3,0) level 2 in structure "fnp" dcl 100 in procedure "heals_scan_config_" ref 213 iom based fixed bin(3,0) level 2 in structure "ch_data" dcl 118 in procedure "heals_scan_config_" ref 198 206 206 ior_flags based structure level 1 dcl 1-12 ior_flags_p based pointer level 2 dcl 1-5 ref 167 ior_prms based structure level 1 dcl 1-18 ior_prms_p 2 based pointer level 2 dcl 1-5 ref 153 154 155 155 177 177 189 189 189 189 198 198 206 206 206 206 213 213 ior_ptrs based structure level 1 dcl 1-5 j 000133 automatic fixed bin(17,0) dcl 61 set ref 154* 155* lchan 1(18) based fixed bin(6,0) level 2 packed unaligned dcl 1-25 set ref 180* 185 202* 217* max_ch_nb_a 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-18 ref 154 155 155 177 177 189 189 189 189 198 198 206 206 206 206 213 213 max_iom_nb_a based fixed bin(17,0) level 2 packed unaligned dcl 1-18 ref 153 model 5 based fixed bin(17,0) level 2 in structure "dsk_prph" dcl 92 in procedure "heals_scan_config_" ref 186 model 1 based fixed bin(17,0) level 2 in structure "ch_nfo" packed unaligned dcl 1-25 in procedure "heals_scan_config_" set ref 186* 192* 193 193* 201* 219* model 4 based fixed bin(17,0) level 2 in structure "prph" dcl 84 in procedure "heals_scan_config_" ref 192 name 1 based char(4) level 2 in structure "chan_card" dcl 113 in procedure "heals_scan_config_" ref 200 name 1 based char(4) level 2 in structure "prph" dcl 84 in procedure "heals_scan_config_" ref 179 182 182 nb_ch 000127 automatic fixed bin(6,0) dcl 59 set ref 184* 185 187 187 nchan 2 based fixed bin(6,0) level 2 in structure "ch_data" dcl 118 in procedure "heals_scan_config_" ref 203 204 204 nchan 4 based fixed bin(6,0) level 2 in structure "dsk_prph" dcl 92 in procedure "heals_scan_config_" ref 184 null builtin function dcl 125 ref 36 port 3 based fixed bin(17,0) level 2 dcl 106 ref 221 prph based structure level 1 dcl 84 r_code parameter fixed bin(35,0) dcl 22 set ref 6 140* substr builtin function dcl 125 ref 165 166 182 182 tag 1 based fixed bin(17,0) level 2 dcl 100 set ref 215 215 215* 216 tag_ar 000137 automatic char(1) initial array unaligned dcl 71 set ref 71* 71* 71* 71* 71* 71* 71* 71* 71* 216 time 000114 automatic char(6) unaligned dcl 49 set ref 166* 167* trace based bit(1) level 2 in structure "ior_flags" packed unaligned dcl 1-12 in procedure "heals_scan_config_" ref 167 trace based bit(1) level 2 in structure "flags" packed unaligned dcl 74 in procedure "heals_scan_config_" ref 167 uchan 1(25) based fixed bin(6,0) level 2 packed unaligned dcl 1-25 set ref 181* 185* 203* 218* version_date 000124 automatic char(8) initial unaligned dcl 53 set ref 53* 167* version_nb 000135 automatic fixed bin(17,0) initial dcl 65 set ref 65* 167* whoami 000116 automatic char(18) initial unaligned dcl 52 set ref 52* 167* word based char(4) level 2 in structure "prph" dcl 84 in procedure "heals_scan_config_" ref 176 word based char(4) level 2 in structure "bulk_card" dcl 106 in procedure "heals_scan_config_" ref 221 word based char(4) level 2 in structure "fnp" dcl 100 in procedure "heals_scan_config_" ref 212 word based char(4) level 2 in structure "chan_card" dcl 113 in procedure "heals_scan_config_" ref 195 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ior_avars based structure level 1 dcl 1-33 NAMES DECLARED BY EXPLICIT CONTEXT. clean_up 000771 constant entry internal dcl 228 ref 137 err_return 000770 constant label dcl 232 heals_scan_config_ 000053 constant entry external dcl 6 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1060 1100 775 1070 Length 1270 775 20 154 62 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME heals_scan_config_ 200 external procedure is an external procedure. on unit on line 137 70 on unit clean_up internal procedure shares stack frame of on unit on line 137. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME heals_scan_config_ 000100 ch_data_p heals_scan_config_ 000102 config_deck_p heals_scan_config_ 000104 flags_p heals_scan_config_ 000106 date_time heals_scan_config_ 000112 date heals_scan_config_ 000114 time heals_scan_config_ 000116 whoami heals_scan_config_ 000124 version_date heals_scan_config_ 000126 code heals_scan_config_ 000127 nb_ch heals_scan_config_ 000130 clock_time heals_scan_config_ 000132 i heals_scan_config_ 000133 j heals_scan_config_ 000134 bulk_port heals_scan_config_ 000135 version_nb heals_scan_config_ 000136 flags_word heals_scan_config_ 000137 tag_ar heals_scan_config_ 000150 ch_nfo_p heals_scan_config_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ date_time_ ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. config_deck$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000047 36 000060 52 000062 53 000070 65 000072 71 000074 137 000153 140 000171 143 000173 148 000175 151 000176 153 000177 154 000211 155 000225 156 000247 157 000251 163 000253 164 000262 165 000277 166 000301 167 000304 174 000354 175 000357 176 000363 177 000366 178 000410 179 000412 180 000414 181 000421 182 000426 184 000435 185 000437 186 000450 187 000453 189 000465 190 000521 191 000523 192 000524 193 000527 194 000536 195 000537 196 000542 197 000545 198 000551 199 000573 200 000575 201 000600 202 000602 203 000607 204 000616 206 000631 208 000665 209 000667 210 000672 211 000673 212 000674 213 000677 214 000721 215 000723 216 000730 217 000740 218 000745 219 000752 220 000754 221 000755 223 000763 224 000766 225 000767 232 000770 228 000771 229 000772 ----------------------------------------------------------- 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