COMPILATION LISTING OF SEGMENT find_config_card_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1636.3 mst Mon 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 /* FIND_CONFIG_CARD_ - Procedure to find a card in the config deck */ 12 /* Adapted January 1980 by Larry Johnson from hardcore procedure 'config', written 3/12/74 by N. I. Morris */ 13 /* Modified September 1982 by C. Hornig to remove common code to config_. */ 14 15 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend */ 16 find_config_card_: 17 procedure; 18 19 dcl p ptr parameter; /* pointer to config card */ 20 dcl a_iom fixed bin (3) parameter; 21 dcl a_chan fixed bin (6) parameter; 22 23 dcl config_$find entry (char (4) aligned, ptr); 24 dcl config_$find_periph entry (char (4) aligned, ptr); 25 26 dcl card_iom fixed bin (3); 27 dcl card_chan fixed bin (8); 28 dcl card_nchan fixed bin; 29 dcl i fixed bin; /* iteration variable */ 30 31 dcl (hbound, null, substr) builtin; 32 33 /* PRPH_FOR_CHANNEL - Given an iom and channel, this entry returns 34* the prph card for the device connected to the channel. 35* 36* calling sequence: 37* 38* call find_config_card_$prph_for_channel (iom, chann, p); */ 39 40 prph_for_channel: 41 entry (a_iom, a_chan, p); 42 43 prph_cardp = null (); 44 do while ("1"b); 45 call config_$find ("prph", prph_cardp); 46 if prph_cardp = null () then goto no_prph; 47 if substr (prph_card.name, 1, 3) = "tap" then do; 48 prph_tap_cardp = prph_cardp; 49 card_iom = prph_tap_card.iom; 50 card_chan = prph_tap_card.chan; 51 card_nchan = prph_tap_card.nchan; 52 end; 53 else if substr (prph_card.name, 1, 3) = "dsk" then do; 54 prph_dsk_cardp = prph_cardp; 55 card_iom = prph_dsk_card.iom; 56 57 card_chan = prph_dsk_card.chan; 58 card_nchan = prph_dsk_card.nchan; 59 end; 60 else do; 61 card_iom = prph_card.iom; 62 card_chan = prph_card.chan; 63 card_nchan = 1; 64 end; 65 if (card_iom = a_iom) & (card_chan <= a_chan) & (card_chan + card_nchan > a_chan) then do; 66 p = prph_cardp; 67 return; 68 end; 69 end; 70 71 no_prph: 72 chnl_cardp = null (); 73 do while ("1"b); 74 call config_$find ("chnl", chnl_cardp); 75 if chnl_cardp = null () then do; 76 p = null (); 77 return; 78 end; 79 do i = 1 to hbound (chnl_card.group, 1) while (chnl_card.iom (i) ^= -1); 80 if (chnl_card.iom (i) = a_iom) & (chnl_card.chan (i) <= a_chan) 81 & (chnl_card.chan (i) + chnl_card.nchan (i) > a_chan) then do; 82 call config_$find_periph (chnl_card.name, p); 83 /* Get associated prph card */ 84 return; 85 end; 86 end; 87 end; 88 89 /* MPC_FOR_CHANNEL - Given an iom and channel, this entry returns 90* the mpc card for the controller connected to the channel. 91* 92* calling sequence: 93* 94* call find_config_card_$mpc_for_channel (iom, chann, p); */ 95 96 mpc_for_channel: 97 entry (a_iom, a_chan, p); 98 99 mpc_cardp = null (); 100 do while ("1"b); 101 call config_$find ("mpc", mpc_cardp); 102 if mpc_cardp = null () then do; 103 p = null (); 104 return; 105 end; 106 do i = 1 to hbound (mpc_card.port, 1) while (mpc_card.port (i).iom ^= -1); 107 if (a_iom = mpc_card.port (i).iom) & (a_chan >= mpc_card.port (i).chan) 108 & (a_chan < mpc_card.port (i).chan + mpc_card.port (i).nchan) then do; 109 p = mpc_cardp; 110 return; 111 end; 112 end; 113 end; 114 1 1 /* BEGIN INCLUDE FILE ... config_chnl_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 1 2 1 3 dcl chnl_cardp ptr; /* Pointer to a CHNL card. */ 1 4 1 5 dcl 1 chnl_card based (chnl_cardp) aligned, /* CHNL card declaration */ 1 6 2 word char (4), /* "chnl" */ 1 7 2 name char (4), /* subsystem name */ 1 8 2 group (3), /* Channel groups for this subsystem -- 9 fields total */ 1 9 3 iom fixed bin (3), /* IOM number */ 1 10 3 chan fixed bin (8), /* channel number */ 1 11 3 nchan fixed bin, /* number of channels */ 1 12 1 13 2 pad (4) bit (36) aligned, /* pad to 15 fields */ 1 14 1 15 2 type_word aligned, 1 16 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 1 17 3 pad1 bit (4) unaligned, 1 18 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 1 19 1 20 dcl 1 chnl_card_array aligned based (chnl_cardp), /* Overlay for channel group array */ 1 21 2 pad1 (2) bit (36) aligned, 1 22 2 group (min (3, divide (max (0, (chnl_card.n_fields - 1)), 3, 17, 0))), 1 23 3 iom fixed bin (3), /* IOM number */ 1 24 3 chan fixed bin (8), /* Channel number. */ 1 25 3 nchan fixed bin; /* Number of logical channels on this channel. */ 1 26 1 27 dcl CHNL_CARD_WORD char (4) aligned internal static options (constant) init ("chnl"); 1 28 1 29 /* END INCLUDE FILE ... config_chnl_card.incl.pl1 */ 115 2 1 /* 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 */ 116 3 1 /* BEGIN INCLUDE FILE ... config_prph_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 3 2 3 3 dcl prph_cardp ptr; /* Pointer to a PRPH card. */ 3 4 3 5 dcl 1 prph_card based (prph_cardp) aligned, /* PRPH card declaration */ 3 6 2 word char (4), /* "prph" */ 3 7 2 name char (4), /* subsystem name */ 3 8 2 iom fixed bin (3), /* IOM number */ 3 9 2 chan fixed bin (8), /* channel number */ 3 10 2 model fixed bin, /* model number */ 3 11 3 12 2 pad (10) bit (36) aligned, /* pad to 15 fields */ 3 13 3 14 2 type_word aligned, 3 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 3 16 3 pad1 bit (4) unaligned, 3 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 3 18 3 19 dcl PRPH_CARD_WORD char (4) aligned internal static options (constant) init ("prph"); 3 20 3 21 /* END INCLUDE FILE ... config_prph_card.incl.pl1 */ 117 4 1 /* BEGIN INCLUDE FILE ... config_prph_dsk_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 4 2 4 3 dcl prph_dsk_cardp ptr; /* Pointer to a PRPH DSKx card. */ 4 4 4 5 dcl 1 prph_dsk_card based (prph_dsk_cardp) aligned, /* PRPH DSKx card declaration */ 4 6 2 word char (4), /* "prph" */ 4 7 2 name char (4), /* "dskX" */ 4 8 2 iom fixed bin (3), /* IOM number */ 4 9 2 chan fixed bin (8), /* channel number */ 4 10 2 nchan fixed bin, /* number of channels */ 4 11 4 12 2 group (5), 4 13 3 model fixed bin, /* model number */ 4 14 3 ndrives fixed bin, /* number of drives */ 4 15 4 16 2 type_word aligned, 4 17 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 4 18 3 pad1 bit (4) unaligned, 4 19 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 4 20 4 21 dcl 1 prph_dsk_card_array aligned based (prph_dsk_cardp), /* Overlay for drive group array */ 4 22 2 pad1 (5) bit (36) aligned, 4 23 2 group (divide (max (0, (prph_dsk_card.n_fields - 4)), 2, 17, 0)), 4 24 3 model fixed bin, /* model number */ 4 25 3 ndrives fixed bin; /* number of drives */ 4 26 4 27 /* END INCLUDE FILE ... config_prph_dsk_card.incl.pl1 */ 118 5 1 /* BEGIN INCLUDE FILE ... config_prph_tap_card.incl.pl1 */ 5 2 5 3 dcl prph_tap_cardp ptr; /* Pointer to a PRPH TAPx card. */ 5 4 5 5 dcl 1 prph_tap_card based (prph_tap_cardp) aligned, /* PRPH TAPx card declaration */ 5 6 2 word char (4), /* "prph" */ 5 7 2 name char (4), /* "tapX" */ 5 8 2 iom fixed bin (3), /* IOM number */ 5 9 2 chan fixed bin (8), /* channel number */ 5 10 2 nchan fixed bin, /* number of channels */ 5 11 5 12 2 group (5), 5 13 3 model fixed bin, /* model number */ 5 14 3 ndrives fixed bin, /* number of drives */ 5 15 5 16 2 type_word aligned, 5 17 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 5 18 3 pad1 bit (4) unaligned, 5 19 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 5 20 5 21 dcl 1 prph_tap_card_array aligned based (prph_tap_cardp), /* Overlay for drive group array */ 5 22 2 pad1 (5) bit (36) aligned, 5 23 2 group (divide (max (0, (prph_tap_card.n_fields - 4)), 2, 17, 0)), 5 24 3 model fixed bin, /* model number */ 5 25 3 ndrives fixed bin; /* number of drives */ 5 26 5 27 /* END INCLUDE FILE ... config_prph_tap_card.incl.pl1 */ 119 120 121 end find_config_card_; 122 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1450.1 find_config_card_.pl1 >dumps>old>recomp>find_config_card_.pl1 115 1 05/08/81 1853.6 config_chnl_card.incl.pl1 >ldd>include>config_chnl_card.incl.pl1 116 2 05/08/81 1853.6 config_mpc_card.incl.pl1 >ldd>include>config_mpc_card.incl.pl1 117 3 05/08/81 1853.7 config_prph_card.incl.pl1 >ldd>include>config_prph_card.incl.pl1 118 4 05/08/81 1853.7 config_prph_dsk_card.incl.pl1 >ldd>include>config_prph_dsk_card.incl.pl1 119 5 11/08/82 1005.8 config_prph_tap_card.incl.pl1 >ldd>include>config_prph_tap_card.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. a_chan parameter fixed bin(6,0) dcl 21 ref 40 65 65 80 80 96 107 107 a_iom parameter fixed bin(3,0) dcl 20 ref 40 65 80 96 107 card_chan 000101 automatic fixed bin(8,0) dcl 27 set ref 50* 57* 62* 65 65 card_iom 000100 automatic fixed bin(3,0) dcl 26 set ref 49* 55* 61* 65 card_nchan 000102 automatic fixed bin(17,0) dcl 28 set ref 51* 58* 63* 65 chan 3 based fixed bin(8,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "find_config_card_" ref 80 80 chan 3 based fixed bin(8,0) level 2 in structure "prph_tap_card" dcl 5-5 in procedure "find_config_card_" ref 50 chan 4 based fixed bin(8,0) array level 3 in structure "mpc_card" dcl 2-5 in procedure "find_config_card_" ref 107 107 chan 3 based fixed bin(8,0) level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "find_config_card_" ref 57 chan 3 based fixed bin(8,0) level 2 in structure "prph_card" dcl 3-5 in procedure "find_config_card_" ref 62 chnl_card based structure level 1 dcl 1-5 chnl_cardp 000104 automatic pointer dcl 1-3 set ref 71* 74* 75 79 79 80 80 80 80 82 config_$find 000010 constant entry external dcl 23 ref 45 74 101 config_$find_periph 000012 constant entry external dcl 24 ref 82 group 2 based structure array level 2 dcl 1-5 ref 79 hbound builtin function dcl 31 ref 79 106 i 000103 automatic fixed bin(17,0) dcl 29 set ref 79* 79* 80 80 80 80* 106* 106* 107 107 107 107* iom 2 based fixed bin(3,0) level 2 in structure "prph_card" dcl 3-5 in procedure "find_config_card_" ref 61 iom 2 based fixed bin(3,0) level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "find_config_card_" ref 55 iom 2 based fixed bin(3,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "find_config_card_" ref 79 80 iom 3 based fixed bin(3,0) array level 3 in structure "mpc_card" dcl 2-5 in procedure "find_config_card_" ref 106 107 iom 2 based fixed bin(3,0) level 2 in structure "prph_tap_card" dcl 5-5 in procedure "find_config_card_" ref 49 mpc_card based structure level 1 dcl 2-5 mpc_cardp 000106 automatic pointer dcl 2-3 set ref 99* 101* 102 106 106 107 107 107 107 109 name 1 based char(4) level 2 in structure "prph_card" dcl 3-5 in procedure "find_config_card_" ref 47 53 name 1 based char(4) level 2 in structure "chnl_card" dcl 1-5 in procedure "find_config_card_" set ref 82* nchan 4 based fixed bin(17,0) level 2 in structure "prph_tap_card" dcl 5-5 in procedure "find_config_card_" ref 51 nchan 5 based fixed bin(17,0) array level 3 in structure "mpc_card" dcl 2-5 in procedure "find_config_card_" ref 107 nchan 4 based fixed bin(17,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "find_config_card_" ref 80 nchan 4 based fixed bin(17,0) level 2 in structure "prph_dsk_card" dcl 4-5 in procedure "find_config_card_" ref 58 null builtin function dcl 31 ref 43 46 71 75 76 99 102 103 p parameter pointer dcl 19 set ref 40 66* 76* 82* 96 103* 109* port 3 based structure array level 2 dcl 2-5 ref 106 prph_card based structure level 1 dcl 3-5 prph_cardp 000110 automatic pointer dcl 3-3 set ref 43* 45* 46 47 48 53 54 61 62 66 prph_dsk_card based structure level 1 dcl 4-5 prph_dsk_cardp 000112 automatic pointer dcl 4-3 set ref 54* 55 57 58 prph_tap_card based structure level 1 dcl 5-5 prph_tap_cardp 000114 automatic pointer dcl 5-3 set ref 48* 49 50 51 substr builtin function dcl 31 ref 47 53 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHNL_CARD_WORD internal static char(4) initial dcl 1-27 MPC_CARD_WORD internal static char(4) initial dcl 2-26 PRPH_CARD_WORD internal static char(4) initial dcl 3-19 chnl_card_array based structure level 1 dcl 1-20 mpc_card_array based structure level 1 dcl 2-19 prph_dsk_card_array based structure level 1 dcl 4-21 prph_tap_card_array based structure level 1 dcl 5-21 NAMES DECLARED BY EXPLICIT CONTEXT. find_config_card_ 000013 constant entry external dcl 16 mpc_for_channel 000222 constant entry external dcl 96 no_prph 000130 constant label dcl 71 ref 46 prph_for_channel 000025 constant entry external dcl 40 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 374 410 311 404 Length 672 311 14 246 62 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME find_config_card_ 86 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME find_config_card_ 000100 card_iom find_config_card_ 000101 card_chan find_config_card_ 000102 card_nchan find_config_card_ 000103 i find_config_card_ 000104 chnl_cardp find_config_card_ 000106 mpc_cardp find_config_card_ 000110 prph_cardp find_config_card_ 000112 prph_dsk_cardp find_config_card_ 000114 prph_tap_cardp find_config_card_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. config_$find config_$find_periph NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000012 40 000020 43 000032 45 000034 46 000047 47 000053 48 000061 49 000062 50 000065 51 000067 52 000071 53 000072 54 000074 55 000075 57 000100 58 000102 59 000104 61 000105 62 000107 63 000111 65 000113 66 000125 67 000126 69 000127 71 000130 74 000132 75 000145 76 000151 77 000154 79 000155 80 000170 82 000202 84 000213 86 000214 87 000216 96 000217 99 000227 101 000231 102 000244 103 000250 104 000253 106 000254 107 000266 109 000302 110 000303 112 000304 113 000306 121 000307 ----------------------------------------------------------- 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