COMPILATION LISTING OF SEGMENT get_tpr_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0958.9 mst Sat Options: optimize map 1 /****^ ****************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright (c) 1987 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* * Copyright (c) 1972 by Massachusetts Institute of * 9* * Technology and Honeywell Information Systems, Inc. * 10* * * 11* ****************************************************** */ 12 13 /* Modified April 1981 by B. Margulies for quiet_restart, null_pointer, 14* include file for find_pathname_info */ 15 /* Further modified in August to fix the segfault-garbage bug */ 16 /* Changed to use interpret_link_info.incl.pl1 05/12/83 S. Herbst */ 17 /* format: style4,insnl,delnl */ 18 19 get_tpr_: 20 proc (asp, sptr, a_mtep, tname1, tname2); 21 22 dcl a_mtep ptr; 23 dcl (tname1, tname2) char (500) aligned; 24 dcl ptemp character (500) aligned; 25 dcl ename char (256) aligned; 26 dcl op_seg_name char (32) aligned; 27 dcl lang char (8) aligned; 28 29 dcl (asp, tpr, sptr, sp, last_ptr, linkp, entryp) ptr; 30 31 dcl lng fixed bin; 32 dcl segno fixed bin (18); 33 dcl code fixed bin (35); 34 35 /* Entries */ 36 37 dcl find_pathname_ entry (ptr, ptr, fixed bin (35)); 38 dcl ( 39 ioa_$rsnnl 40 ) entry options (variable); 41 dcl stack_frame_exit_ entry (ptr, ptr, ptr, bit (1), ptr, char (32) aligned, ptr); 42 dcl get_link_ptr_ entry (ptr, ptr, ptr); 43 dcl get_entry_name_ entry (ptr, char (*) aligned, fixed bin (18), char (8) aligned, fixed bin (35)); 44 dcl interpret_link_ entry (ptr, ptr, fixed bin (35)); 45 46 dcl (addr, baseno, baseptr, bin, hbound, lbound, null, ptr, substr) builtin; 47 1 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 1 2 1 3 /* Structure for find_condition_info_. 1 4* 1 5* Written 1-Mar-79 by M. N. Davidoff. 1 6**/ 1 7 1 8 /* automatic */ 1 9 1 10 declare condition_info_ptr pointer; 1 11 1 12 /* based */ 1 13 1 14 declare 1 condition_info aligned based (condition_info_ptr), 1 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 1 16 2 version fixed binary, /* Must be 1 */ 1 17 2 condition_name char (32) varying, /* name of condition */ 1 18 2 info_ptr pointer, /* pointer to the condition data structure */ 1 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 1 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 1 21 2 flags unaligned, 1 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 1 23 3 pad1 bit (35), 1 24 2 pad2 bit (36), 1 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 1 26 2 pad3 (4) bit (36); 1 27 1 28 /* internal static */ 1 29 1 30 declare condition_info_version_1 1 31 fixed binary internal static options (constant) initial (1); 1 32 1 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 48 49 declare 1 cond_info aligned like condition_info based (sptr); 50 2 1 /* BEGIN INCLUDE FILE find_pathname_info.incl.pl1 BIM April 1981 */ 2 2 /* format: style2 */ 2 3 2 4 declare find_pathname_info_ptr pointer; 2 5 2 6 declare 1 find_pathname_info aligned based (find_pathname_info_ptr), 2 7 2 strings unaligned, 2 8 3 component_ename character (32), 2 9 3 adjusted_offset character (7), 2 10 3 dirname character (168), 2 11 3 gt_char character (1), 2 12 3 real_ename character (32), 2 13 3 real_offset character (7), 2 14 3 pdir_string character (17), 2 15 3 offset_msg character (40), 2 16 2 bin_adjusted_off fixed bin (18), 2 17 2 bin_real_off fixed bin (18); 2 18 2 19 /* END INCLUDE FILE find_pathname_info */ 51 52 declare 1 name_info aligned like find_pathname_info; 53 3 1 /* BEGIN INCLUDE FILE interpret_link_info.incl.pl1 */ 3 2 3 3 /* Written 05/12/83 by S. Herbst */ 3 4 3 5 dcl 1 interpret_link_info aligned based (interpret_link_info_ptr), 3 6 2 version char (8), 3 7 2 segment_name char (32) aligned, 3 8 2 entry_point_name char (260) aligned, 3 9 2 expression char (8) aligned, 3 10 2 modifier char (4) aligned, 3 11 2 trap char (48) aligned; 3 12 3 13 dcl INTERPRET_LINK_INFO_VERSION_1 char (8) int static options (constant) init ("ILI 1.0"); 3 14 3 15 dcl interpret_link_info_ptr ptr; 3 16 3 17 /* END INCLUDE FILE interpret_link_info.incl.pl1 */ 54 55 56 dcl 1 auto_interpret_link_info aligned like interpret_link_info; 57 58 dcl 1 situation aligned, /* structure from stack_frame_exit_ */ 59 ( 60 2 bad_frame, 61 2 exists_ppr, 62 2 ppr_is_owner, 63 2 ppr_is_ops, 64 2 caller_is_owner, 65 2 entry_ptr_invalid, 66 2 ret_ptr_is_ops 67 ) bit (1) unal, 68 2 pad bit (29) unal; 69 70 tname1, tname2, ptemp = ""; 71 sp = asp; 72 mtep = a_mtep; 73 74 /* get referenced proc name if relevant and if it exists */ 75 76 if mte.with_tpr 77 then if cond_info.mc_ptr ^= null then do; 78 scup = addr (cond_info.mc_ptr -> mc.scu (0)); 79 tpr = ptr (baseptr (bin (bin (scup -> scu.tpr.tsr, 15), 18)), scup -> scu.ca); 80 if cond_info.crawlout then do; /* can't do anything fancy */ 81 call find_pathname_ (tpr, addr (name_info), code); 82 ename = ""; /* not used here */ 83 call format_name (tname1); 84 end; 85 else call try (cond_info.mc_ptr, tname1); 86 /* see if we can get a better name from a link */ 87 end; 88 89 if cond_info.crawlout then do; /* get last proc referenced in current ring */ 90 if cond_info.wc_ptr ^= null 91 then call try (cond_info.wc_ptr, ptemp); 92 else do; /* see if proc was called through link */ 93 call stack_frame_exit_ (sp, null, null, cond_info.crawlout, last_ptr, op_seg_name, addr (situation)); 94 if last_ptr = null 95 then return; /* don't know where frame was left */ 96 ename = ""; 97 call get_link_ptr_ (last_ptr, linkp, entryp); 98 if linkp ^= null then do; /* found a link */ 99 100 auto_interpret_link_info.version = INTERPRET_LINK_INFO_VERSION_1; 101 102 call interpret_link_ (addr (auto_interpret_link_info), linkp, code); 103 /* get name of link target */ 104 if code = 0 105 then call ioa_$rsnnl ("^a^a^a^a^a", ename, lng, auto_interpret_link_info.segment_name, 106 auto_interpret_link_info.entry_point_name, auto_interpret_link_info.expression, 107 auto_interpret_link_info.modifier, auto_interpret_link_info.trap); 108 end; 109 else if entryp ^= null /* text-text transfer; highly unlikely */ 110 then call get_entry_name_ (entryp, ename, segno, lang, code); 111 112 ptemp = ename; 113 end; 114 115 if ptemp ^= "" 116 then tname2 = " 117 referencing " || ptemp; 118 end; 119 120 return; 121 122 format_name: 123 proc (tname); 124 125 dcl tname char (500) aligned; 126 127 if name_info.component_ename ^= "" then do; /* use name from bindmap */ 128 call ioa_$rsnnl ("^a^a^a (^a^a^a^a^a)^a", tname, lng, name_info.component_ename, ename, 129 name_info.adjusted_offset, name_info.dirname, name_info.gt_char, name_info.real_ename, 130 name_info.real_offset, name_info.pdir_string, name_info.offset_msg); 131 end; 132 133 else do; 134 call ioa_$rsnnl ("^a^a^a^a^a^a^a", tname, lng, name_info.dirname, name_info.gt_char, name_info.real_ename, 135 ename, name_info.real_offset, name_info.pdir_string, name_info.offset_msg); 136 end; 137 138 return; 139 end; 140 141 try: 142 proc (mp, tname); 143 144 dcl no_name bit (1) aligned; 145 146 dcl mp ptr; 147 148 dcl error_table_$invalidsegno ext fixed bin (35); 149 dcl i fixed bin; 150 dcl op_code bit (10) aligned; 151 dcl tname char (500) aligned; 152 153 dcl tr_insts (35) bit (10) aligned 154 init ("1110010110"b, "1100011000"b, "1100011010"b, "1100001000"b, "1100000100"b, "1100000010"b, "1100011110"b, 155 "1100001010"b, "1100000110"b, "1110010000"b, "1100000000"b, "0101110000"b, "0101110010"b, "0101110100"b, 156 "0101110110"b, "1101110000"b, "1101110010"b, "1101110100"b, "1101110110"b, "1110011010"b, "1110000000"b, 157 "1110000010"b, "1110000100"b, "1110000110"b, "1110001000"b, "1110001010"b, "1110001100"b, "1110001110"b, 158 "1100001110"b, "1100001100"b, "1100000011"b, "1100001001"b, "1100001011"b, "1100001101"b, "1100000001"b) 159 internal static options (constant); 160 161 dcl is_cls_ entry (ptr) returns (bit (1) aligned); 162 163 4 1 /* BEGIN INCLUDE FILE ... db_inst.incl.pl1 Last modified Nov 72 - WSS. */ 4 2 4 3 4 4 /* PL/I definitions of an instruction word. There are two definitions. 4 5** One defines a full 18 bit offset field (now meaningful with 256K segments) 4 6** and the other defines an instruction with a pointer register field and a 4 7** 15 bit offset field. 4 8**/ 4 9 4 10 dcl ilc_ptr ptr; /* Pointer to the instruction word. */ 4 11 4 12 4 13 dcl 1 instr based (ilc_ptr) aligned, 4 14 (2 offset fixed bin (17), /* Full 18 bit offset. No pr field. */ 4 15 2 opcode bit (10), /* Instruction opcode. */ 4 16 2 inhibit bit (1), /* ON => interrupts inhibitted. */ 4 17 2 pr_bit bit (1), /* ON => instruction has pr field. */ 4 18 2 tag bit (6)) unaligned; /* Tag field. */ 4 19 4 20 4 21 dcl 1 instr_pr based (ilc_ptr) aligned, 4 22 (2 pr bit (3), /* Pointer register field. */ 4 23 2 offset fixed bin (14), /* 15 bit offset due to pr field. */ 4 24 2 pad bit (18)) unaligned; 4 25 4 26 4 27 /* END OF INCLUDE FILE ... db_inst.incl.pl1 */ 164 165 166 /* */ 167 ename = ""; 168 no_name = "0"b; 169 scup = addr (mp -> mc.scu (0)); 170 tpr = ptr (baseptr (bin (bin (scup -> scu.tpr.tsr, 15), 18)), scup -> scu.ca); 171 172 if mte.segferr & (mp -> mc.errcode = error_table_$invalidsegno) then do; 173 /* symbolic name no longer available */ 174 print_ptr: 175 call ioa_$rsnnl ("^p", tname, lng, tpr); 176 no_name = "1"b; 177 end; 178 179 else do; /* get basic name info */ 180 call find_pathname_ (tpr, addr (name_info), code); 181 if code ^= 0 182 then go to print_ptr; 183 end; 184 185 /* see if an inter-segment transfer was involved to see if it's worth looking for a link */ 186 187 if scup -> scu.ppr.psr = scup -> scu.tpr.tsr 188 then go to simple; /* same segment */ 189 190 op_code = addr (scup -> scux.instr (bin (substr (scup -> scu.ilc, 18, 1), 1))) -> instr.opcode; 191 do i = lbound (tr_insts, 1) to hbound (tr_insts, 1); 192 /* see if a transfer instruction was being executed */ 193 if op_code = tr_insts (i) 194 then if ^is_cls_ (cond_info.loc_ptr) then do;/* cond_info.loc_ptr might be near link ref */ 195 call get_link_ptr_ (cond_info.loc_ptr, linkp, entryp); 196 if entryp = null 197 then go to simple; /* no snapped link */ 198 call get_entry_name_ (entryp, ename, segno, lang, code); 199 /* this name should be good enough */ 200 if code ^= 0 201 then go to simple; /* don't bother looking for unsnapped link */ 202 if segno ^= bin (baseno (tpr), 18) 203 then ename = ""; /* not same seg */ 204 else if no_name 205 then go to add; /* can't do normal formatting */ 206 else do; /* print name if not redundant */ 207 if name_info.component_ename ^= "" & ename = name_info.component_ename 208 then ename = ""; 209 else if name_info.real_ename ^= "" & ename = name_info.real_ename 210 then ename = ""; 211 else ename = "$" || ename; 212 end; 213 end; 214 end; 215 216 simple: 217 if no_name 218 then return; /* have nothing to add */ 219 call format_name (tname); 220 221 return; 222 223 add: /* could not find real symbolic name but found a name heuristically */ 224 if linkp ^= null then do; /* if possible, replace ename with names from link */ 225 226 auto_interpret_link_info.version = INTERPRET_LINK_INFO_VERSION_1; 227 228 call interpret_link_ (addr (auto_interpret_link_info), linkp, code); 229 if code ^= 0 230 then call ioa_$rsnnl ("^a^a", ename, lng, auto_interpret_link_info.segment_name, 231 auto_interpret_link_info.entry_point_name); 232 end; 233 call ioa_$rsnnl ("^a^/(probably referencing ^a)", tname, lng, tname, ename); 234 235 return; 236 end; 237 5 1 /* */ 5 2 /* BEGIN INCLUDE FILE mc.incl.pl1 Created Dec 72 for 6180 - WSS. */ 5 3 /* Modified 06/07/76 by Greenberg for mc.resignal */ 5 4 /* Modified 07/07/76 by Morris for fault register data */ 5 5 /* Modified 08/28/80 by J. A. Bush for the DPS8/70M CVPU */ 5 6 /* Modified '82 to make values constant */ 5 7 5 8 /* words 0-15 pointer registers */ 5 9 5 10 dcl mcp ptr; 5 11 5 12 dcl 1 mc based (mcp) aligned, 5 13 2 prs (0:7) ptr, /* POINTER REGISTERS */ 5 14 (2 regs, /* registers */ 5 15 3 x (0:7) bit (18), /* index registers */ 5 16 3 a bit (36), /* accumulator */ 5 17 3 q bit (36), /* q-register */ 5 18 3 e bit (8), /* exponent */ 5 19 3 pad1 bit (28), 5 20 3 t bit (27), /* timer register */ 5 21 3 pad2 bit (6), 5 22 3 ralr bit (3), /* ring alarm register */ 5 23 5 24 2 scu (0:7) bit (36), 5 25 5 26 2 mask bit (72), /* mem controller mask at time of fault */ 5 27 2 ips_temp bit (36), /* Temporary storage for IPS info */ 5 28 2 errcode fixed bin (35), /* fault handler's error code */ 5 29 2 fim_temp, 5 30 3 unique_index bit (18) unal, /* unique index for restarting faults */ 5 31 3 resignal bit (1) unal, /* recompute signal name with fcode below */ 5 32 3 fcode bit (17) unal, /* fault code used as index to FIM table and SCT */ 5 33 2 fault_reg bit (36), /* fault register */ 5 34 2 pad2 bit (1), 5 35 2 cpu_type fixed bin (2) unsigned, /* L68 = 0, DPS8/70M = 1 */ 5 36 2 ext_fault_reg bit (15), /* extended fault reg for DPS8/70M CPU */ 5 37 2 fault_time bit (54), /* time of fault */ 5 38 5 39 2 eis_info (0:7) bit (36)) unaligned; 5 40 5 41 5 42 dcl (apx fixed bin init (0), 5 43 abx fixed bin init (1), 5 44 bpx fixed bin init (2), 5 45 bbx fixed bin init (3), 5 46 lpx fixed bin init (4), 5 47 lbx fixed bin init (5), 5 48 spx fixed bin init (6), 5 49 sbx fixed bin init (7)) internal static options (constant); 5 50 5 51 5 52 5 53 5 54 dcl scup ptr; 5 55 5 56 dcl 1 scu based (scup) aligned, /* SCU DATA */ 5 57 5 58 5 59 /* WORD (0) */ 5 60 5 61 (2 ppr, /* PROCEDURE POINTER REGISTER */ 5 62 3 prr bit (3), /* procedure ring register */ 5 63 3 psr bit (15), /* procedure segment register */ 5 64 3 p bit (1), /* procedure privileged bit */ 5 65 5 66 2 apu, /* APPENDING UNIT STATUS */ 5 67 3 xsf bit (1), /* ext seg flag - IT modification */ 5 68 3 sdwm bit (1), /* match in SDW Ass. Mem. */ 5 69 3 sd_on bit (1), /* SDW Ass. Mem. ON */ 5 70 3 ptwm bit (1), /* match in PTW Ass. Mem. */ 5 71 3 pt_on bit (1), /* PTW Ass. Mem. ON */ 5 72 3 pi_ap bit (1), /* Instr Fetch or Append cycle */ 5 73 3 dsptw bit (1), /* Fetch of DSPTW */ 5 74 3 sdwnp bit (1), /* Fetch of SDW non paged */ 5 75 3 sdwp bit (1), /* Fetch of SDW paged */ 5 76 3 ptw bit (1), /* Fetch of PTW */ 5 77 3 ptw2 bit (1), /* Fetch of pre-paged PTW */ 5 78 3 fap bit (1), /* Fetch of final address paged */ 5 79 3 fanp bit (1), /* Fetch of final address non-paged */ 5 80 3 fabs bit (1), /* Fetch of final address absolute */ 5 81 5 82 2 fault_cntr bit (3), /* number of retrys of EIS instructions */ 5 83 5 84 5 85 /* WORD (1) */ 5 86 5 87 2 fd, /* FAULT DATA */ 5 88 3 iro bit (1), /* illegal ring order */ 5 89 3 oeb bit (1), /* out of execute bracket */ 5 90 3 e_off bit (1), /* no execute */ 5 91 3 orb bit (1), /* out of read bracket */ 5 92 3 r_off bit (1), /* no read */ 5 93 3 owb bit (1), /* out of write bracket */ 5 94 3 w_off bit (1), /* no write */ 5 95 3 no_ga bit (1), /* not a gate */ 5 96 3 ocb bit (1), /* out of call bracket */ 5 97 3 ocall bit (1), /* outward call */ 5 98 3 boc bit (1), /* bad outward call */ 5 99 3 inret bit (1), /* inward return */ 5 100 3 crt bit (1), /* cross ring transfer */ 5 101 3 ralr bit (1), /* ring alarm register */ 5 102 3 am_er bit (1), /* associative memory fault */ 5 103 3 oosb bit (1), /* out of segment bounds */ 5 104 3 paru bit (1), /* processor parity upper */ 5 105 3 parl bit (1), /* processor parity lower */ 5 106 3 onc_1 bit (1), /* op not complete type 1 */ 5 107 3 onc_2 bit (1), /* op not complete type 2 */ 5 108 5 109 2 port_stat, /* PORT STATUS */ 5 110 3 ial bit (4), /* illegal action lines */ 5 111 3 iac bit (3), /* illegal action channel */ 5 112 3 con_chan bit (3), /* connect channel */ 5 113 5 114 2 fi_num bit (5), /* (fault/interrupt) number */ 5 115 2 fi_flag bit (1), /* 1 => fault, 0 => interrupt */ 5 116 5 117 5 118 /* WORD (2) */ 5 119 5 120 2 tpr, /* TEMPORARY POINTER REGISTER */ 5 121 3 trr bit (3), /* temporary ring register */ 5 122 3 tsr bit (15), /* temporary segment register */ 5 123 5 124 2 pad2 bit (9), 5 125 5 126 2 cpu_no bit (3), /* CPU number */ 5 127 5 128 2 delta bit (6), /* tally modification DELTA */ 5 129 5 130 5 131 /* WORD (3) */ 5 132 5 133 2 word3 bit (18), 5 134 5 135 2 tsr_stat, /* TSR STATUS for 1,2,&3 word instructions */ 5 136 3 tsna, /* Word 1 status */ 5 137 4 prn bit (3), /* Word 1 PR number */ 5 138 4 prv bit (1), /* Word 1 PR valid bit */ 5 139 3 tsnb, /* Word 2 status */ 5 140 4 prn bit (3), /* Word 2 PR number */ 5 141 4 prv bit (1), /* Word 2 PR valid bit */ 5 142 3 tsnc, /* Word 3 status */ 5 143 4 prn bit (3), /* Word 3 PR number */ 5 144 4 prv bit (1), /* Word 3 PR valid bit */ 5 145 5 146 2 tpr_tbr bit (6), /* TPR.TBR field */ 5 147 5 148 5 149 /* WORD (4) */ 5 150 5 151 2 ilc bit (18), /* INSTRUCTION COUNTER */ 5 152 5 153 2 ir, /* INDICATOR REGISTERS */ 5 154 3 zero bit (1), /* zero indicator */ 5 155 3 neg bit (1), /* negative indicator */ 5 156 3 carry bit (1), /* carryry indicator */ 5 157 3 ovfl bit (1), /* overflow indicator */ 5 158 3 eovf bit (1), /* eponent overflow */ 5 159 3 eufl bit (1), /* exponent underflow */ 5 160 3 oflm bit (1), /* overflow mask */ 5 161 3 tro bit (1), /* tally runout */ 5 162 3 par bit (1), /* parity error */ 5 163 3 parm bit (1), /* parity mask */ 5 164 3 bm bit (1), /* ^bar mode */ 5 165 3 tru bit (1), /* truncation mode */ 5 166 3 mif bit (1), /* multi-word instruction mode */ 5 167 3 abs bit (1), /* absolute mode */ 5 168 3 hex bit (1), /* hexadecimal exponent mode */ 5 169 3 pad bit (3), 5 170 5 171 5 172 /* WORD (5) */ 5 173 5 174 2 ca bit (18), /* COMPUTED ADDRESS */ 5 175 5 176 2 cu, /* CONTROL UNIT STATUS */ 5 177 3 rf bit (1), /* on first cycle of repeat instr */ 5 178 3 rpt bit (1), /* repeat instruction */ 5 179 3 rd bit (1), /* repeat double instruction */ 5 180 3 rl bit (1), /* repeat link instruciton */ 5 181 3 pot bit (1), /* IT modification */ 5 182 3 pon bit (1), /* return type instruction */ 5 183 3 xde bit (1), /* XDE from Even location */ 5 184 3 xdo bit (1), /* XDE from Odd location */ 5 185 3 poa bit (1), /* operation preparation */ 5 186 3 rfi bit (1), /* tells CPU to refetch instruction */ 5 187 3 its bit (1), /* ITS modification */ 5 188 3 if bit (1), /* fault occured during instruction fetch */ 5 189 5 190 2 cpu_tag bit (6)) unaligned, /* computed tag field */ 5 191 5 192 5 193 /* WORDS (6,7) */ 5 194 5 195 2 even_inst bit (36), /* even instruction of faulting pair */ 5 196 5 197 2 odd_inst bit (36); /* odd instruction of faulting pair */ 5 198 5 199 5 200 5 201 5 202 5 203 5 204 /* ALTERNATE SCU DECLARATION */ 5 205 5 206 5 207 dcl 1 scux based (scup) aligned, 5 208 5 209 (2 pad0 bit (36), 5 210 5 211 2 fd, /* GROUP II FAULT DATA */ 5 212 3 isn bit (1), /* illegal segment number */ 5 213 3 ioc bit (1), /* illegal op code */ 5 214 3 ia_am bit (1), /* illegal address - modifier */ 5 215 3 isp bit (1), /* illegal slave procedure */ 5 216 3 ipr bit (1), /* illegal procedure */ 5 217 3 nea bit (1), /* non existent address */ 5 218 3 oobb bit (1), /* out of bounds */ 5 219 3 pad bit (29), 5 220 5 221 2 pad2 bit (36), 5 222 5 223 2 pad3a bit (18), 5 224 5 225 2 tsr_stat (0:2), /* TSR STATUS as an ARRAY */ 5 226 3 prn bit (3), /* PR number */ 5 227 3 prv bit (1), /* PR valid bit */ 5 228 5 229 2 pad3b bit (6)) unaligned, 5 230 5 231 2 pad45 (0:1) bit (36), 5 232 5 233 2 instr (0:1) bit (36); /* Instruction ARRAY */ 5 234 5 235 5 236 5 237 /* END INCLUDE FILE mc.incl.pl1 */ 238 6 1 /* BEGIN INCLUDE FILE message_table_entry.incl.pl1 8-17-77 S. Webber */ 6 2 /* modified BIM April 81 for removal of just return, simfault, finish */ 6 3 6 4 dcl mtep ptr; 6 5 dcl 1 mte aligned based (mtep), 6 6 2 group unaligned, 6 7 3 pad1 bit (1), /* not used */ 6 8 3 query_error bit (1), 6 9 3 active_func bit (1), 6 10 3 no_tpr bit (1), 6 11 3 with_tpr bit (1), 6 12 3 io_err bit (1), 6 13 3 undefined bit (1), 6 14 3 unwind_err bit (1), 6 15 3 pad2 bit (1), 6 16 3 ignore bit (1), 6 17 3 pad bit (8), 6 18 2 action_ind unaligned, 6 19 3 no_special bit (1), 6 20 3 sub_err bit (1), 6 21 3 sig_error bit (1), 6 22 3 storage bit (1), 6 23 3 endpage bit (1), 6 24 3 linkerr bit (1), 6 25 3 cur_inst bit (1), 6 26 3 pad_undefined bit (1), /* obsolete bit */ 6 27 3 gaterr bit (1), 6 28 3 segferr bit (1), 6 29 3 pagerr bit (1), 6 30 3 store bit (1), 6 31 3 outbounds bit (1), 6 32 3 lotfault bit (1), 6 33 3 pad bit (4), 6 34 2 format_x fixed bin, 6 35 2 string_relp (4) bit (18) aligned, 6 36 2 cond_id_relp bit (18) aligned; 6 37 6 38 /* END INCLUDE FILE message_table_entry.incl.pl1 */ 239 240 end get_tpr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0839.0 get_tpr_.pl1 >special_ldd>install>MR12.3-1114>get_tpr_.pl1 48 1 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 51 2 07/18/81 1100.0 find_pathname_info.incl.pl1 >ldd>include>find_pathname_info.incl.pl1 54 3 06/06/83 0917.4 interpret_link_info.incl.pl1 >ldd>include>interpret_link_info.incl.pl1 164 4 05/06/74 1741.6 db_inst.incl.pl1 >ldd>include>db_inst.incl.pl1 238 5 12/15/83 1100.4 mc.incl.pl1 >ldd>include>mc.incl.pl1 239 6 07/18/81 1100.0 message_table_entry.incl.pl1 >ldd>include>message_table_entry.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. INTERPRET_LINK_INFO_VERSION_1 000044 constant char(8) initial packed unaligned dcl 3-13 ref 100 226 a_mtep parameter pointer dcl 22 ref 19 72 action_ind 0(18) based structure level 2 packed packed unaligned dcl 6-5 addr builtin function dcl 46 ref 78 81 81 93 93 102 102 169 180 180 190 228 228 adjusted_offset 10 000425 automatic char(7) level 3 packed packed unaligned dcl 52 set ref 128* asp parameter pointer dcl 29 ref 19 71 auto_interpret_link_info 000543 automatic structure level 1 dcl 56 set ref 102 102 228 228 baseno builtin function dcl 46 ref 202 baseptr builtin function dcl 46 ref 79 170 bin builtin function dcl 46 ref 79 79 170 170 190 202 ca 5 based bit(18) level 2 packed packed unaligned dcl 5-56 ref 79 170 code 000424 automatic fixed bin(35,0) dcl 33 set ref 81* 102* 104 109* 180* 181 198* 200 228* 229 component_ename 000425 automatic char(32) level 3 packed packed unaligned dcl 52 set ref 127 128* 207 207 cond_info based structure level 1 dcl 49 condition_info based structure level 1 dcl 1-14 crawlout 22 based bit(1) level 3 packed packed unaligned dcl 49 set ref 80 89 93* dirname 11(27) 000425 automatic char(168) level 3 packed packed unaligned dcl 52 set ref 128* 134* ename 000275 automatic char(256) dcl 25 set ref 82* 96* 104* 109* 112 128* 134* 167* 198* 202* 207 207* 209 209* 211* 211 229* 233* entry_point_name 12 000543 automatic char(260) level 2 dcl 56 set ref 104* 229* entryp 000420 automatic pointer dcl 29 set ref 97* 109 109* 195* 196 198* errcode 43 based fixed bin(35,0) level 2 packed packed unaligned dcl 5-12 ref 172 error_table_$invalidsegno 000024 external static fixed bin(35,0) dcl 148 ref 172 expression 113 000543 automatic char(8) level 2 dcl 56 set ref 104* find_pathname_ 000010 constant entry external dcl 37 ref 81 180 find_pathname_info based structure level 1 dcl 2-6 flags 22 based structure level 2 packed packed unaligned dcl 49 get_entry_name_ 000020 constant entry external dcl 43 ref 109 198 get_link_ptr_ 000016 constant entry external dcl 42 ref 97 195 group based structure level 2 packed packed unaligned dcl 6-5 gt_char 63(27) 000425 automatic char(1) level 3 packed packed unaligned dcl 52 set ref 128* 134* hbound builtin function dcl 46 ref 191 i 000717 automatic fixed bin(17,0) dcl 149 set ref 191* 193* ilc 4 based bit(18) level 2 packed packed unaligned dcl 5-56 ref 190 instr 6 based bit(36) array level 2 in structure "scux" dcl 5-207 in procedure "get_tpr_" set ref 190 instr based structure level 1 dcl 4-13 in procedure "try" interpret_link_ 000022 constant entry external dcl 44 ref 102 228 interpret_link_info based structure level 1 dcl 3-5 ioa_$rsnnl 000012 constant entry external dcl 38 ref 104 128 134 174 229 233 is_cls_ 000026 constant entry external dcl 161 ref 193 lang 000406 automatic char(8) dcl 27 set ref 109* 198* last_ptr 000414 automatic pointer dcl 29 set ref 93* 94 97* lbound builtin function dcl 46 ref 191 linkp 000416 automatic pointer dcl 29 set ref 97* 98 102* 195* 223 228* lng 000422 automatic fixed bin(17,0) dcl 31 set ref 104* 128* 134* 174* 229* 233* loc_ptr 20 based pointer level 2 dcl 49 set ref 193* 195* mc based structure level 1 dcl 5-12 mc_ptr based pointer level 2 dcl 49 set ref 76 78 85* modifier 115 000543 automatic char(4) level 2 dcl 56 set ref 104* mp parameter pointer dcl 146 ref 141 169 172 mte based structure level 1 dcl 6-5 mtep 000700 automatic pointer dcl 6-4 set ref 72* 76 172 name_info 000425 automatic structure level 1 dcl 52 set ref 81 81 180 180 no_name 000716 automatic bit(1) dcl 144 set ref 168* 176* 204 216 null builtin function dcl 46 ref 76 90 93 93 93 93 94 98 109 196 223 offset_msg 102 000425 automatic char(40) level 3 packed packed unaligned dcl 52 set ref 128* 134* op_code 000720 automatic bit(10) dcl 150 set ref 190* 193 op_seg_name 000375 automatic char(32) dcl 26 set ref 93* opcode 0(18) based bit(10) level 2 packed packed unaligned dcl 4-13 ref 190 pdir_string 75(27) 000425 automatic char(17) level 3 packed packed unaligned dcl 52 set ref 128* 134* ppr based structure level 2 packed packed unaligned dcl 5-56 psr 0(03) based bit(15) level 3 packed packed unaligned dcl 5-56 ref 187 ptemp 000100 automatic char(500) dcl 24 set ref 70* 90* 112* 115 115 ptr builtin function dcl 46 ref 79 170 real_ename 64 000425 automatic char(32) level 3 packed packed unaligned dcl 52 set ref 128* 134* 209 209 real_offset 74 000425 automatic char(7) level 3 packed packed unaligned dcl 52 set ref 128* 134* scu based structure level 1 dcl 5-56 in procedure "get_tpr_" scu 30 based bit(36) array level 2 in structure "mc" packed packed unaligned dcl 5-12 in procedure "get_tpr_" set ref 78 169 scup 000676 automatic pointer dcl 5-54 set ref 78* 79 79 169* 170 170 187 187 190 190 scux based structure level 1 dcl 5-207 segferr 0(27) based bit(1) level 3 packed packed unaligned dcl 6-5 ref 172 segment_name 2 000543 automatic char(32) level 2 dcl 56 set ref 104* 229* segno 000423 automatic fixed bin(18,0) dcl 32 set ref 109* 198* 202 situation 000675 automatic structure level 1 dcl 58 set ref 93 93 sp 000412 automatic pointer dcl 29 set ref 71* 93* sptr parameter pointer dcl 29 ref 19 76 78 80 85 89 90 90 93 193 195 stack_frame_exit_ 000014 constant entry external dcl 41 ref 93 strings 000425 automatic structure level 2 packed packed unaligned dcl 52 substr builtin function dcl 46 ref 190 tname parameter char(500) dcl 125 in procedure "format_name" set ref 122 128* 134* tname parameter char(500) dcl 151 in procedure "try" set ref 141 174* 219* 233* 233* tname1 parameter char(500) dcl 23 set ref 19 70* 83* 85* tname2 parameter char(500) dcl 23 set ref 19 70* 115* tpr 000410 automatic pointer dcl 29 in procedure "get_tpr_" set ref 79* 81* 170* 174* 180* 202 tpr 2 based structure level 2 in structure "scu" packed packed unaligned dcl 5-56 in procedure "get_tpr_" tr_insts 000000 constant bit(10) initial array dcl 153 ref 191 191 193 trap 116 000543 automatic char(48) level 2 dcl 56 set ref 104* tsr 2(03) based bit(15) level 3 packed packed unaligned dcl 5-56 ref 79 170 187 version 000543 automatic char(8) level 2 dcl 56 set ref 100* 226* wc_ptr 16 based pointer level 2 dcl 49 set ref 90 90* with_tpr 0(04) based bit(1) level 3 packed packed unaligned dcl 6-5 ref 76 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. abx internal static fixed bin(17,0) initial dcl 5-42 apx internal static fixed bin(17,0) initial dcl 5-42 bbx internal static fixed bin(17,0) initial dcl 5-42 bpx internal static fixed bin(17,0) initial dcl 5-42 condition_info_ptr automatic pointer dcl 1-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 1-30 find_pathname_info_ptr automatic pointer dcl 2-4 ilc_ptr automatic pointer dcl 4-10 instr_pr based structure level 1 dcl 4-21 interpret_link_info_ptr automatic pointer dcl 3-15 lbx internal static fixed bin(17,0) initial dcl 5-42 lpx internal static fixed bin(17,0) initial dcl 5-42 mcp automatic pointer dcl 5-10 sbx internal static fixed bin(17,0) initial dcl 5-42 spx internal static fixed bin(17,0) initial dcl 5-42 NAMES DECLARED BY EXPLICIT CONTEXT. add 001266 constant label dcl 223 ref 204 format_name 000537 constant entry internal dcl 122 ref 83 219 get_tpr_ 000136 constant entry external dcl 19 print_ptr 000770 constant label dcl 174 ref 181 simple 001253 constant label dcl 216 ref 187 196 200 try 000732 constant entry internal dcl 141 ref 85 90 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1524 1554 1405 1534 Length 2060 1405 30 267 117 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME get_tpr_ 634 external procedure is an external procedure. format_name internal procedure shares stack frame of external procedure get_tpr_. try internal procedure shares stack frame of external procedure get_tpr_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_tpr_ 000100 ptemp get_tpr_ 000275 ename get_tpr_ 000375 op_seg_name get_tpr_ 000406 lang get_tpr_ 000410 tpr get_tpr_ 000412 sp get_tpr_ 000414 last_ptr get_tpr_ 000416 linkp get_tpr_ 000420 entryp get_tpr_ 000422 lng get_tpr_ 000423 segno get_tpr_ 000424 code get_tpr_ 000425 name_info get_tpr_ 000543 auto_interpret_link_info get_tpr_ 000675 situation get_tpr_ 000676 scup get_tpr_ 000700 mtep get_tpr_ 000716 no_name try 000717 i try 000720 op_code try THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. find_pathname_ get_entry_name_ get_link_ptr_ interpret_link_ ioa_$rsnnl is_cls_ stack_frame_exit_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalidsegno LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000131 70 000143 71 000157 72 000162 76 000165 78 000175 79 000201 80 000213 81 000220 82 000234 83 000237 84 000246 85 000247 89 000257 90 000265 93 000302 94 000332 96 000336 97 000341 98 000354 100 000360 102 000363 104 000400 108 000453 109 000454 112 000511 115 000514 118 000535 120 000536 122 000537 127 000541 128 000545 131 000640 134 000641 138 000731 141 000732 167 000734 168 000737 169 000740 170 000744 172 000756 174 000770 176 001020 177 001022 180 001023 181 001040 187 001042 190 001054 191 001065 193 001073 195 001115 196 001133 198 001137 200 001170 202 001172 204 001203 207 001205 209 001221 211 001235 212 001250 214 001251 216 001253 219 001256 221 001265 223 001266 226 001272 228 001275 229 001312 233 001347 235 001403 ----------------------------------------------------------- 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