COMPILATION LISTING OF SEGMENT db_fnp_opblock_util_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1618.0 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 /* DB_FNP_OPBLOCK_UTIL_ - Procedure to display fnp memory in opblock format */ 12 13 /* Written March 1977 by Larry Johnson */ 14 15 db_fnp_opblock_util_: proc; 16 17 /* Parameters */ 18 19 dcl arg_corep ptr; /* Pointer to segment contining core image */ 20 dcl arg_fnp fixed bin; /* Number of a running fnp */ 21 dcl arg_fnp_addr fixed bin; /* The starting address being displayed */ 22 dcl arg_fnp_len fixed bin; /* The number of words */ 23 dcl arg_data_ptr ptr; /* Pointer to the words to display */ 24 dcl arg_code fixed bin (35); 25 dcl arg_opname char (*); 26 dcl arg_opval bit (18); 27 28 /* Automatic */ 29 30 dcl corep ptr; 31 dcl fnp fixed bin; 32 dcl fnp_addr fixed bin; 33 dcl fnp_len fixed bin; 34 dcl data_ptr ptr; 35 dcl code fixed bin (35); 36 dcl i fixed bin; 37 dcl edited_addr char (32) var; 38 dcl opblock_addr char (32) var; 39 dcl opval bit (18); 40 dcl opname char (6); 41 42 dcl fnp_mem (fnp_len) bit (18) unal based (data_ptr); 43 44 45 /* External stuff */ 46 47 dcl ioa_ entry options (variable); 48 dcl db_fnp_util_$edit_module_addr entry (ptr, fixed bin, fixed bin, char (*) var, fixed bin (35)); 49 50 dcl error_table_$noentry ext fixed bin (35); 51 52 dcl (addr, bin, bit, hbound, lbound, rtrim, substr) builtin; 53 54 55 /* Entry to display memory in opblock format */ 56 57 display: entry (arg_corep, arg_fnp, arg_fnp_addr, arg_fnp_len, arg_data_ptr, arg_code); 58 59 corep = arg_corep; 60 fnp = arg_fnp; 61 fnp_addr = arg_fnp_addr; 62 fnp_len = arg_fnp_len; 63 data_ptr = arg_data_ptr; 64 opblock_tablep = addr (db_fnp_opblocks_$); 65 66 /* Loop thru all the words */ 67 68 do i = 1 to fnp_len; 69 if substr (fnp_mem (i), 1, 9) = "777"b3 then do; 70 call get_name (fnp_mem (i), opname); 71 edited_addr = rtrim (opname); 72 end; 73 else do; 74 call db_fnp_util_$edit_module_addr (corep, fnp, bin (fnp_mem (i)), edited_addr, code); 75 if code ^= 0 then edited_addr = ""; 76 else edited_addr = " " || edited_addr; 77 end; 78 call db_fnp_util_$edit_module_addr (corep, fnp, fnp_addr, opblock_addr, code); 79 if code ^= 0 then opblock_addr = ""; 80 call ioa_ ("^5w ^13a ^.3b ^a", fnp_addr, opblock_addr, fnp_mem (i), edited_addr); 81 fnp_addr = fnp_addr + 1; 82 end; 83 84 arg_code = 0; 85 return; 86 87 88 /* Entry to lookup a symbol and returns its value as an opblock number */ 89 90 lookup: entry (arg_opname, arg_opval, arg_code); 91 92 opblock_tablep = addr (db_fnp_opblocks_$); 93 do i = lbound (opblock_table.name, 1) to hbound (opblock_table.name, 1); 94 if opblock_table.name (i) = arg_opname then do; 95 substr (opval, 1, 9) = "777"b3; 96 substr (opval, 10, 9) = bit (bin (i, 9), 9); 97 arg_opval = opval; 98 arg_code = 0; 99 return; 100 end; 101 end; 102 arg_opval = "0"b; 103 arg_code = error_table_$noentry; 104 return; 105 106 107 /* Entry that given an opblock, returns its name */ 108 109 get_name: entry (arg_opval, arg_opname); 110 111 opval = arg_opval; 112 arg_opname = ""; 113 114 opblock_tablep = addr (db_fnp_opblocks_$); 115 if substr (opval, 1, 9) ^= "777"b3 then return; 116 i = bin (substr (opval, 10, 9)); 117 if i < lbound (opblock_table.name, 1) | i > hbound (opblock_table.name, 1) then return; 118 arg_opname = opblock_table.name (i); 119 return; 120 121 /* Debugging entry that will print the opblock table. This is just used as a 122* command to check that the procedure that constructs the table works */ 123 /* This entry is not retained. */ 124 125 print_table: entry; 126 127 opblock_tablep = addr (db_fnp_opblocks_$); 128 do i = lbound (opblock_table.name, 1) to hbound (opblock_table.name, 1); 129 call ioa_ ("^2o ^a", i, opblock_table.name (i)); 130 end; 131 return; 132 1 1 /* Begin include file ..... debug_fnp_data.incl.pl1 */ 1 2 1 3 /* Describes various structures used by the debug_fnp command */ 1 4 1 5 /* Written February 1977 by Larry Johnson */ 1 6 1 7 /* Structures describing a symbol table used by the debug_fnp command, 1 8* to find values for common FNP symbols. */ 1 9 1 10 dcl db_fnp_symbols_$db_fnp_symbols_ ext; 1 11 1 12 dcl symbol_tablep ptr; 1 13 1 14 dcl 1 symbol_table aligned based (symbol_tablep), 1 15 2 cnt fixed bin, /* Number of entries */ 1 16 2 maxcnt fixed bin, /* Max count */ 1 17 2 entry (symbol_table.cnt) unal, 1 18 3 one_symbol like sym unal; 1 19 1 20 dcl symp ptr; /* Pointer to one symbol */ 1 21 1 22 dcl 1 sym unal based (symp), 1 23 2 name char (6), 1 24 2 value fixed bin (17), 1 25 2 len fixed bin (17), /* Number of words */ 1 26 2 reloc fixed bin (17), 1 27 2 type fixed bin (17), 1 28 2 flag_mem char (6), /* If non blank, name of word in which this is a flag */ 1 29 2 explain bit (18), /* Offset to explanation for symbol */ 1 30 2 pad bit (18); 1 31 1 32 dcl exptextp ptr; 1 33 1 34 dcl 1 exptext aligned based (exptextp), /* Symbol explanation entry */ 1 35 2 len fixed bin (8) unal, 1 36 2 data char (exptext.len) unal; 1 37 1 38 /* Values for sym.reloc, which is relocation required to find the symbol */ 1 39 1 40 dcl (reloc_abs init (0), /* Value is absolute */ 1 41 reloc_tib init (1), /* Value is relative to current tib addr */ 1 42 reloc_hwcm init (2), /* Value is relative to current hwcm */ 1 43 reloc_sfcm init (3), /* Value is relative to software comm region */ 1 44 reloc_meters init (4)) /* Value is relative to tib meters */ 1 45 int static options (constant); 1 46 1 47 /* Values for sym.type, which is the mode to be used in displaying symbol */ 1 48 1 49 dcl (type_oct init (0), /* Octal, default for most symbols */ 1 50 type_char init (1), /* Ascii characters */ 1 51 type_addr init (2), /* Address to be converted to mod|offset */ 1 52 type_clock init (3), /* Multics clock value */ 1 53 type_inst init (4), /* Machine instruction */ 1 54 type_op init (5), /* Interpreter opblock format */ 1 55 type_dec init (6), /* Decimal */ 1 56 type_bit init (7), /* In bits */ 1 57 type_ebcdic init (8)) /* 8-bit ebcdic characters */ 1 58 int static options (constant); 1 59 1 60 dcl long_type_names (0:8) char (12) int static options (constant) init ( 1 61 "octal", "character", "address", "clock", "instruction", "opblock", "decimal", "bit", "ebcdic"); 1 62 dcl short_type_names (0:8) char (4) int static options (constant) init ( 1 63 "oct", "ch", "addr", "ck", "inst", "op", "dec", "bit", "ebc"); 1 64 1 65 1 66 /* Structure of suplmental data used in evaluating expressions */ 1 67 1 68 dcl expr_infop ptr; 1 69 1 70 dcl 1 expr_info aligned based (expr_infop), 1 71 2 flags, 1 72 3 star_known bit (1) unal, /* Value of "*" is known */ 1 73 3 tib_known bit (1) unal, /* TIB addresses may be used */ 1 74 3 hwcm_known bit (1) unal, /* HWCM address may be used */ 1 75 3 sfcm_known bit (1) unal, /* SFCM address may be used */ 1 76 3 pad bit (32) unal, 1 77 2 star_addr fixed bin, /* Value of "*" */ 1 78 2 tib_addr fixed bin, /* Address of TIB */ 1 79 2 hwcm_addr fixed bin, /* Address of HWCM */ 1 80 2 sfcm_addr fixed bin, /* Address of SFCM */ 1 81 2 type fixed bin, /* Expression type (mode for printing) */ 1 82 2 len fixed bin, /* Implied length of expression */ 1 83 2 user_tablep ptr; /* Pointer to a user symbol table */ 1 84 1 85 1 86 /* Structure of opcode table of machine instructions */ 1 87 1 88 dcl db_fnp_opcodes_$ ext; 1 89 1 90 dcl optablep ptr; 1 91 1 92 dcl 1 optable aligned based (optablep), 1 93 2 cnt fixed bin, 1 94 2 entry (optable.cnt) unal, 1 95 3 one_op like op; 1 96 1 97 dcl opp ptr; 1 98 1 99 dcl 1 op unal based (opp), 1 100 2 name char (6), /* The mneumonic */ 1 101 2 code bit (12), /* The opcode */ 1 102 2 mask bit (12), /* Mask that says where the opcode is */ 1 103 2 type fixed bin (11), /* Type of display required */ 1 104 2 pad bit (18); 1 105 1 106 /* Values for op.type are: 1 107* 0 - storage reference 1 108* 1 - non-storage reference (immediate), 1 109* 2 - non-storage reference (iacxn only), 1 110* 3 - non-storage reference (shifts), 1 111* 4 - non-storage reference (no operands) */ 1 112 1 113 1 114 /* Stuctures used while parsing commands into operands */ 1 115 1 116 dcl cmd_infop ptr; 1 117 1 118 dcl 1 cmd_info aligned based (cmd_infop), 1 119 2 inbuf char (256), /* For reading lines */ 1 120 2 opbuf char (256), /* Used for operand in undoubling quotes */ 1 121 2 commandp ptr, /* Address of unparsed part of command */ 1 122 2 commandl fixed bin, /* Length of unparsed part */ 1 123 2 operandp ptr, /* Address of current operand */ 1 124 2 operandl fixed bin, /* And its length */ 1 125 2 error bit (1), /* Set if error parsing operand */ 1 126 2 endline bit (1), /* Set if no more operands on line */ 1 127 2 opstring bit (1), /* Set if operand was unquoted string */ 1 128 2 flush bit (1), /* If set, rest of input line will be ignored */ 1 129 2 envp ptr; /* Pointer to the debug_fnp environment structure */ 1 130 1 131 dcl command char (cmd_info.commandl) based (cmd_info.commandp); 1 132 dcl operand char (cmd_info.operandl) based (cmd_info.operandp); 1 133 1 134 /* The following structure describes the current debug_fnp environment. */ 1 135 /* It specifies whether we are working on a dump, fnp, core image, etc. */ 1 136 1 137 dcl envp ptr; 1 138 1 139 dcl 1 env aligned based (envp), 1 140 2 corep ptr, /* Ptr to current dump or core-image. Null means live FNP */ 1 141 2 fnp fixed bin, /* Current fnp number */ 1 142 2 dump_dir char (168) unal, /* Directory where dumps are found */ 1 143 2 dir char (168) unal, /* Directory for current dump or core image */ 1 144 2 ename char (32) unal, /* Ename for current dump or core image */ 1 145 2 tty_name char (32), /* Name of current channel */ 1 146 2 segp ptr, /* Pointer to base of current segment */ 1 147 2 flags unal, 1 148 3 fnps_configured bit (8), /* Says which FNP's appear in config deck */ 1 149 3 fnp_sw bit (1), /* 1 if currently working on fnp */ 1 150 3 image_sw bit (1), /* 1 if currently working on a core-image */ 1 151 3 dump_sw bit (1), /* 1 if current working on a dump */ 1 152 3 fdump_sw bit (1), /* 1 if current dump is a fdump */ 1 153 3 pad bit (24), 1 154 2 dump_time fixed bin (71); /* Clock time dump occured */ 1 155 1 156 /* Structure of data defining table of interpreter opblock names */ 1 157 1 158 dcl db_fnp_opblocks_$ ext; 1 159 1 160 dcl opblock_tablep ptr; 1 161 1 162 dcl 1 opblock_table aligned based (opblock_tablep), 1 163 2 cnt fixed bin, 1 164 2 name (0:opblock_table.cnt) char (6) unal; 1 165 1 166 /* End include file ..... debug_fnp_data.incl.pl1 */ 133 134 135 end db_fnp_opblock_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1502.0 db_fnp_opblock_util_.pl1 >dumps>old>recomp>db_fnp_opblock_util_.pl1 133 1 06/19/81 2115.0 debug_fnp_data.incl.pl1 >ldd>include>debug_fnp_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 52 ref 64 92 114 127 arg_code parameter fixed bin(35,0) dcl 24 set ref 57 84* 90 98* 103* arg_corep parameter pointer dcl 19 ref 57 59 arg_data_ptr parameter pointer dcl 23 ref 57 63 arg_fnp parameter fixed bin(17,0) dcl 20 ref 57 60 arg_fnp_addr parameter fixed bin(17,0) dcl 21 ref 57 61 arg_fnp_len parameter fixed bin(17,0) dcl 22 ref 57 62 arg_opname parameter char unaligned dcl 25 set ref 90 94 109 112* 118* arg_opval parameter bit(18) unaligned dcl 26 set ref 90 97* 102* 109 111 bin builtin function dcl 52 ref 74 74 96 116 bit builtin function dcl 52 ref 96 cnt based fixed bin(17,0) level 2 dcl 1-162 ref 93 117 128 code 000110 automatic fixed bin(35,0) dcl 35 set ref 74* 75 78* 79 corep 000100 automatic pointer dcl 30 set ref 59* 74* 78* data_ptr 000106 automatic pointer dcl 34 set ref 63* 69 70 74 74 80 db_fnp_opblocks_$ 000016 external static fixed bin(17,0) dcl 1-158 set ref 64 92 114 127 db_fnp_util_$edit_module_addr 000012 constant entry external dcl 48 ref 74 78 edited_addr 000112 automatic varying char(32) dcl 37 set ref 71* 74* 75* 76* 76 80* error_table_$noentry 000014 external static fixed bin(35,0) dcl 50 ref 103 fnp 000102 automatic fixed bin(17,0) dcl 31 set ref 60* 74* 78* fnp_addr 000103 automatic fixed bin(17,0) dcl 32 set ref 61* 78* 80* 81* 81 fnp_len 000104 automatic fixed bin(17,0) dcl 33 set ref 62* 68 fnp_mem based bit(18) array unaligned dcl 42 set ref 69 70* 74 74 80* hbound builtin function dcl 52 ref 93 117 128 i 000111 automatic fixed bin(17,0) dcl 36 set ref 68* 69 70 74 74 80* 93* 94 96* 116* 117 117 118 128* 129* 129* ioa_ 000010 constant entry external dcl 47 ref 80 129 lbound builtin function dcl 52 ref 93 117 128 name 1 based char(6) array level 2 packed unaligned dcl 1-162 set ref 93 93 94 117 117 118 128 128 129* op based structure level 1 packed unaligned dcl 1-99 opblock_addr 000123 automatic varying char(32) dcl 38 set ref 78* 79* 80* opblock_table based structure level 1 dcl 1-162 opblock_tablep 000140 automatic pointer dcl 1-160 set ref 64* 92* 93 93 93 94 114* 117 117 117 118 127* 128 128 128 129 opname 000136 automatic char(6) unaligned dcl 40 set ref 70* 71 opval 000134 automatic bit(18) unaligned dcl 39 set ref 95* 96* 97 111* 115 116 rtrim builtin function dcl 52 ref 71 substr builtin function dcl 52 set ref 69 95* 96* 115 116 sym based structure level 1 packed unaligned dcl 1-22 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. cmd_info based structure level 1 dcl 1-118 cmd_infop automatic pointer dcl 1-116 command based char unaligned dcl 1-131 db_fnp_opcodes_$ external static fixed bin(17,0) dcl 1-88 db_fnp_symbols_$db_fnp_symbols_ external static fixed bin(17,0) dcl 1-10 env based structure level 1 dcl 1-139 envp automatic pointer dcl 1-137 expr_info based structure level 1 dcl 1-70 expr_infop automatic pointer dcl 1-68 exptext based structure level 1 dcl 1-34 exptextp automatic pointer dcl 1-32 long_type_names internal static char(12) initial array unaligned dcl 1-60 operand based char unaligned dcl 1-132 opp automatic pointer dcl 1-97 optable based structure level 1 dcl 1-92 optablep automatic pointer dcl 1-90 reloc_abs internal static fixed bin(17,0) initial dcl 1-40 reloc_hwcm internal static fixed bin(17,0) initial dcl 1-40 reloc_meters internal static fixed bin(17,0) initial dcl 1-40 reloc_sfcm internal static fixed bin(17,0) initial dcl 1-40 reloc_tib internal static fixed bin(17,0) initial dcl 1-40 short_type_names internal static char(4) initial array unaligned dcl 1-62 symbol_table based structure level 1 dcl 1-14 symbol_tablep automatic pointer dcl 1-12 symp automatic pointer dcl 1-20 type_addr internal static fixed bin(17,0) initial dcl 1-49 type_bit internal static fixed bin(17,0) initial dcl 1-49 type_char internal static fixed bin(17,0) initial dcl 1-49 type_clock internal static fixed bin(17,0) initial dcl 1-49 type_dec internal static fixed bin(17,0) initial dcl 1-49 type_ebcdic internal static fixed bin(17,0) initial dcl 1-49 type_inst internal static fixed bin(17,0) initial dcl 1-49 type_oct internal static fixed bin(17,0) initial dcl 1-49 type_op internal static fixed bin(17,0) initial dcl 1-49 NAMES DECLARED BY EXPLICIT CONTEXT. db_fnp_opblock_util_ 000022 constant entry external dcl 15 display 000036 constant entry external dcl 57 get_name 000441 constant entry external dcl 109 ref 70 lookup 000340 constant entry external dcl 90 print_table 000523 constant entry external dcl 125 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 716 736 577 726 Length 1136 577 20 164 117 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME db_fnp_opblock_util_ 146 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME db_fnp_opblock_util_ 000100 corep db_fnp_opblock_util_ 000102 fnp db_fnp_opblock_util_ 000103 fnp_addr db_fnp_opblock_util_ 000104 fnp_len db_fnp_opblock_util_ 000106 data_ptr db_fnp_opblock_util_ 000110 code db_fnp_opblock_util_ 000111 i db_fnp_opblock_util_ 000112 edited_addr db_fnp_opblock_util_ 000123 opblock_addr db_fnp_opblock_util_ 000134 opval db_fnp_opblock_util_ 000136 opname db_fnp_opblock_util_ 000140 opblock_tablep db_fnp_opblock_util_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_in_desc call_ext_out_desc return shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. db_fnp_util_$edit_module_addr ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. db_fnp_opblocks_$ error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000021 57 000027 59 000046 60 000052 61 000054 62 000056 63 000060 64 000063 68 000065 69 000073 70 000102 71 000123 72 000143 74 000144 75 000202 76 000206 77 000227 78 000230 79 000260 80 000263 81 000327 82 000330 84 000332 85 000333 90 000334 92 000357 93 000362 94 000370 95 000405 96 000407 97 000415 98 000421 99 000422 101 000423 102 000425 103 000431 104 000434 109 000435 111 000456 112 000462 114 000472 115 000475 116 000502 117 000506 118 000513 119 000521 125 000522 127 000530 128 000533 129 000541 130 000572 131 000574 ----------------------------------------------------------- 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