COMPILATION LISTING OF SEGMENT get_runtime_address Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/24/88 1527.6 mst Mon Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 /* procedure to return the address of a datum given ptr to its symbol node 11* 12* Initial Version: 22 January 1973 by BLW 13* Modified: 8 December 1978 by RAB to ignore fault bits in LOT & ISOT 14* Re-written: 14 Mar 79 BY James R. Davis for beauty and packed decimal 15* Modified: 5 November 1982 by T Oke to add VLA 255/256 support. 16* Modified: June 83 JMAthane to replace references to "runtime_symbol" structure 17* by calls to runtime_symbol_info_ subroutine and use extended set of encoded values. 18* Modified: 05 July 83 by S. Herbst, excised reference to data_ptr as instructed by JMAthane. 19* Modified: 26 July 1983 by T Oke to delete superfluous use of 20* arg_list_arg_count. We neither define, nor require it. 21* Modified: 06 Oct 83 by S. Herbst, added version strings to runtime_symbol_info_ structures. */ 22 /* Modified: 17 Oct 83 by S. Herbst, removed Version 1 symbol table support */ 23 24 get_runtime_address: proc (block_pt, symbol_pt, stack_pt, link_pt, text_pt, ref_pt, subs_pt) returns (ptr); 25 26 dcl block_pt ptr, /* ptr to block node */ 27 symbol_pt ptr, /* ptr to symbol node */ 28 stack_pt ptr, /* ptr to stack frame */ 29 link_pt ptr, /* ptr to linkage section */ 30 text_pt ptr, /* ptr to object segment */ 31 ref_pt ptr, /* ref ptr for based variable */ 32 subs_pt ptr; /* ptr to subscript vector */ 33 34 dcl blk_pt ptr init (block_pt); 35 dcl sym_pt ptr init (symbol_pt); 36 dcl sp ptr init (stack_pt); 37 dcl lp ptr init (link_pt); 38 dcl tp ptr init (text_pt); 39 dcl rp ptr init (ref_pt); 40 41 dcl data_ptr ptr; /* hold address as we calculate it */ 42 dcl bo fixed bin (35); /* bit offset of data */ 43 dcl subscript (n_dims) fixed bin based (subs_pt); /* the subscripts supplied */ 44 dcl 1 address_info like runtime_address_info; 45 dcl code fixed bin (35); 46 dcl arg_list_arg_count fixed bin; 47 dcl sum fixed bin (35); /* holds array offset as calc'ed */ 48 dcl subs_x fixed bin; /* index into subscripts */ 49 dcl address fixed bin (35); /* logical address */ 50 dcl bit_offset fixed bin (6); /* bit offset of pointer */ 51 dcl word_offset fixed bin (35); /* word offset of pointer */ 52 dcl segno fixed bin; /* segment number of pointer */ 53 54 dcl pp ptr unaligned; /* packed pointer */ 55 dcl 1 packed_pointer unaligned based (addr (pp)), /* packed pointer overlay */ 56 2 bit_offset fixed bin (6) unsigned unaligned, 57 2 address fixed bin (30) unsigned unaligned; 58 59 dcl pl1_operators_$VLA_words_per_seg_ fixed bin (19) external; 60 61 62 dcl (addr, addrel, baseno, bin, divide, mod, multiply, null, ptr, stackbaseptr) builtin; 63 64 dcl off fixed bin (35); 65 66 address_info.version = RUNTIME_ADDRESS_INFO_VERSION_1; 67 68 call runtime_symbol_info_$address (sym_pt, addr (address_info), code); 69 if code ^= 0 then return (null); 70 71 data_ptr = get_basic_address (); 72 73 if address_info.offset_is_encoded then 74 off = decode_value (address_info.offset); 75 else off = address_info.offset; 76 bo = convert_units (off, (address_info.units), (address_info.use_digit)); 77 n_dims = runtime_symbol_info_$array_dims (sym_pt); 78 if (n_dims > 0) & (subs_pt ^= null) then do; 79 begin; 80 dcl 1 array_info like runtime_array_info; 81 82 array_info.version = RUNTIME_ARRAY_INFO_VERSION_1; 83 84 call runtime_symbol_info_$array (sym_pt, addr (array_info), code); 85 if code ^= 0 then return (null); 86 87 sum = 0; 88 do subs_x = 1 to n_dims; 89 if array_info.bounds (subs_x).multiplier_is_encoded then 90 sum = sum + (subscript (subs_x) * 91 decode_value (array_info.bounds.multiplier (subs_x))); 92 else sum = sum + (subscript (subs_x) * array_info.bounds.multiplier (subs_x)); 93 end; 94 if array_info.virtual_origin_is_encoded then 95 sum = sum - decode_value (array_info.virtual_origin); 96 else 97 sum = sum - array_info.virtual_origin; 98 bo = bo + convert_units (sum, (array_info.array_units), 99 (array_info.use_digit)); 100 end; 101 end; /* subscript hacking */ 102 /* Modification for 255 and 256K Very Large Arrays in Fortran. 103* This uses the new CLASS type "1010"b to indicate 'VLA_based'. The address conversion 104* factor is taken from the external 'pl1_operators_$VLA_words_per_seg_'. All address 105* calculations will permit segment skipping. */ 106 107 if address_info.class = 10 /* VLA_based */ 108 then do; 109 pp = data_ptr; /* pack pointer */ 110 111 /* Determine bit_offset and word_offset of original pointer */ 112 113 bit_offset = packed_pointer.bit_offset + bo; 114 word_offset = divide (bit_offset, 36, 35, 0); 115 packed_pointer.bit_offset = mod (bit_offset, 36); 116 117 /* do specific 255/256K addressing */ 118 if pl1_operators_$VLA_words_per_seg_ = 262144 119 then packed_pointer.address = packed_pointer.address + word_offset; 120 else do; 121 address = packed_pointer.address; 122 segno = divide (address, 262144, 17, 0); 123 address = mod (address, 262144) + 124 segno * pl1_operators_$VLA_words_per_seg_ + word_offset; 125 packed_pointer.address = 126 divide (address, pl1_operators_$VLA_words_per_seg_, 17, 0) * 127 262144 + mod (address, pl1_operators_$VLA_words_per_seg_); 128 end; 129 data_ptr = pp; /* unpack */ 130 return (data_ptr); 131 end; 132 return (bitrel (data_ptr, (bo))); 133 134 convert_units: proc (value, unit_code, unit_msb) returns (fixed bin (35)); 135 dcl value fixed bin (35) parameter; /* offset in raw */ 136 dcl unit_code fixed bin (2) parameter unsigned; 137 dcl unit_msb fixed bin (1) parameter unsigned; 138 139 dcl unit_type fixed bin (3); 140 141 unit_type = (unit_msb * 4) + unit_code; 142 goto units_case (unit_type); 143 144 units_case (0): return (value * bits_per_word); /* word */ 145 units_case (1): return (value); /* bit */ 146 units_case (2): return (value * bits_per_character); /* char */ 147 units_case (3): return (value * bits_per_half); /* halfword */ 148 units_case (4): return (value * bits_per_word); 149 units_case (5): return (value); 150 units_case (6): return (value * bits_per_character); 151 units_case (7): return (divide (multiply (value, 9, 24, 0) + 1, 2, 24, 0)); /* digits 4.5 bits */ 152 end convert_units; 153 154 155 decode_value: proc (ev) returns (fixed bin (35)); 156 dcl ev fixed bin (35) parameter; /* an encoded value */ 157 dcl stu_$decode_runtime_value_extended entry 158 (fixed bin (35), ptr, ptr, ptr, ptr, ptr, ptr, fixed bin) returns (fixed bin (35)); 159 dcl drv fixed bin (35); 160 dcl ns_code fixed bin; 161 drv = stu_$decode_runtime_value_extended (ev, blk_pt, sp, lp, tp, data_ptr, sym_pt, ns_code); 162 return (drv); 163 end decode_value; 164 165 166 167 no: return (null); 168 169 get_basic_address: proc returns (ptr); 170 171 /* common work for both versions of symbol - branch depending on the storage class, 172* each handled its own way. The parts of the symbol node used are the same for both versions, so this is OK 173* For "non-simple" symbols an additional offset will be calculated */ 174 175 dcl storage_offset fixed bin (35); 176 dcl based_ptr ptr based; 177 dcl based_thing fixed bin based; /* used in based addr calc */ 178 dcl ap ptr; /* to arg list */ 179 dcl temp ptr; 180 dcl sw fixed bin (4); 181 dcl 1 type_info like runtime_type_info; 182 dcl stu_$get_implicit_qualifier entry (ptr, ptr, ptr, ptr, ptr) returns (ptr); 183 184 sw = address_info.class; 185 186 storage_offset = address_info.location; 187 goto case (sw); 188 189 case (0): goto no; /* unused */ 190 191 case (1): /* automatic */ 192 if sp = null then goto no; 193 return (addrel (sp, storage_offset)); 194 195 case (2): /* automatic adjustable */ 196 if sp = null then goto no; 197 return (addrel (sp, storage_offset) -> based_ptr); 198 199 case (10): /* VLA_based */ 200 case (3): /* based */ 201 if ref_pt ^= null then temp = ref_pt; 202 else do; 203 temp = stu_$get_implicit_qualifier (blk_pt, sym_pt, sp, lp, tp); 204 if temp = null then goto no; 205 end; 206 return (temp); 207 208 case (4): /* internal static */ 209 return (addrel (get_static_ptr (), storage_offset)); 210 211 case (5): /* external static */ 212 /* extra level of indirection is to snap link */ 213 return (addr (addrel (get_lp (), storage_offset) -> based_ptr -> based_thing)); 214 215 case (6): /* controlled internal */ 216 return (addrel (get_static_ptr (), storage_offset) -> ctl_block.data); 217 218 case (7): /* controlled external */ 219 return (addrel (get_lp (), storage_offset) -> based_ptr -> ctl_block.data); 220 221 case (8): /* parameter, not always in same place */ 222 if sp = null then goto no; 223 return (addrel (sp, storage_offset) -> based_ptr); 224 225 case (9): /* parameter */ 226 if sp = null then goto no; 227 ap = get_arglist_ptr (); 228 229 230 if storage_offset > bin (ap -> arg_list.arg_count, 17) then goto no; /* argrange condition ! */ 231 temp = convert_ptr (ap -> arg_list.arg_ptrs (storage_offset)); 232 233 /* check for varying string that is not a member - in which case the addr is 234* for the string and not the length part */ 235 236 if blk_pt -> runtime_block.flag then do; /* version 2 only */ 237 type_info.version = RUNTIME_TYPE_INFO_VERSION_1; 238 239 call runtime_symbol_info_$type (sym_pt, addr (type_info), code); 240 if code ^= 0 then return (null); 241 242 if type_info.type = varying_bit_dtype 243 | type_info.type = varying_char_dtype 244 then if runtime_symbol_info_$level (sym_pt) = 0 /* and not a member */ 245 then temp = addrel (temp, -1); /* back it up */ 246 end; 247 return (temp); 248 249 250 case (11): ; /* relative in symbol */ 251 return (addrel (symbol_pt, storage_offset)); 252 253 254 case (12): /* text ref */ 255 return (ptr (get_tp (), storage_offset)); 256 257 case (13): /* link reference */ 258 return (addrel (get_lp (), storage_offset)); 259 260 case (14): goto no; /* unused */ 261 262 case (15): goto no; /* unused */ 263 264 convert_ptr: proc (P_ptr) returns (ptr); 265 266 /* given a pointer which may be an ITS, ITP, or text-relative ptr, convert to ITS - 267* This is needed because for certain quick blocks, the compiler will generate constant argument lists with ITP pointers 268* An ITP ptr can only be evaluated using a pointer register, which we get from the proc */ 269 270 dcl P_ptr ptr parameter; /* may be ITS or ITP ptr */ 271 dcl 1 an_itp_ptr aligned like itp; 272 dcl reg fixed bin; 273 dcl basep ptr; /* a temp */ 274 dcl 1 embedded_text_ptr aligned, 275 2 off bit (18) unal, 276 2 pad bit (18) unal; 277 dcl (string, unspec) builtin; 278 279 string (an_itp_ptr) = unspec (P_ptr); 280 281 if an_itp_ptr.itp_mod = "43"b3 /* ITS */ 282 then return (P_ptr); 283 284 if an_itp_ptr.itp_mod = "00"b /* text ptr */ 285 then do; 286 string (embedded_text_ptr) = unspec (P_ptr); 287 return (ptr (get_tp (), embedded_text_ptr.off)); 288 end; 289 290 291 if an_itp_ptr.itp_mod = "41"b3 /* ITP */ 292 then do; 293 reg = bin (an_itp_ptr.pr_no, 3); 294 if reg = 6 then basep = sp; 295 else if reg = 4 then basep = get_static_ptr (); 296 else goto no; /* other pr, cant guess what value it had */ 297 return (bitrel (addrel (basep, an_itp_ptr.offset), bin (an_itp_ptr.bit_offset, 6))); 298 end; 299 300 goto no; /* some other modification - yechh ! */ 301 1 1 /* BEGIN INCLUDE FILE its.incl.pl1 1 2* modified 27 July 79 by JRDavis to add its_unsigned 1 3* Internal format of ITS pointer, including ring-number field for follow-on processor */ 1 4 1 5 dcl 1 its based aligned, /* declaration for ITS type pointer */ 1 6 2 pad1 bit (3) unaligned, 1 7 2 segno bit (15) unaligned, /* segment number within the pointer */ 1 8 2 ringno bit (3) unaligned, /* ring number within the pointer */ 1 9 2 pad2 bit (9) unaligned, 1 10 2 its_mod bit (6) unaligned, /* should be 43(8) */ 1 11 1 12 2 offset bit (18) unaligned, /* word offset within the addressed segment */ 1 13 2 pad3 bit (3) unaligned, 1 14 2 bit_offset bit (6) unaligned, /* bit offset within the word */ 1 15 2 pad4 bit (3) unaligned, 1 16 2 mod bit (6) unaligned; /* further modification */ 1 17 1 18 dcl 1 itp based aligned, /* declaration for ITP type pointer */ 1 19 2 pr_no bit (3) unaligned, /* number of pointer register to use */ 1 20 2 pad1 bit (27) unaligned, 1 21 2 itp_mod bit (6) unaligned, /* should be 41(8) */ 1 22 1 23 2 offset bit (18) unaligned, /* word offset from pointer register word offset */ 1 24 2 pad2 bit (3) unaligned, 1 25 2 bit_offset bit (6) unaligned, /* bit offset relative to new word offset */ 1 26 2 pad3 bit (3) unaligned, 1 27 2 mod bit (6) unaligned; /* further modification */ 1 28 1 29 1 30 dcl 1 its_unsigned based aligned, /* just like its, but with unsigned binary */ 1 31 2 pad1 bit (3) unaligned, 1 32 2 segno fixed bin (15) unsigned unaligned, 1 33 2 ringno fixed bin (3) unsigned unaligned, 1 34 2 pad2 bit (9) unaligned, 1 35 2 its_mod bit (6) unaligned, 1 36 1 37 2 offset fixed bin (18) unsigned unaligned, 1 38 2 pad3 bit (3) unaligned, 1 39 2 bit_offset fixed bin (6) unsigned unaligned, 1 40 2 pad4 bit (3) unaligned, 1 41 2 mod bit (6) unaligned; 1 42 1 43 dcl 1 itp_unsigned based aligned, /* just like itp, but with unsigned binary where appropriate */ 1 44 2 pr_no fixed bin (3) unsigned unaligned, 1 45 2 pad1 bit (27) unaligned, 1 46 2 itp_mod bit (6) unaligned, 1 47 1 48 2 offset fixed bin (18) unsigned unaligned, 1 49 2 pad2 bit (3) unaligned, 1 50 2 bit_offset fixed bin (6) unsigned unaligned, 1 51 2 pad3 bit (3) unaligned, 1 52 2 mod bit (6) unaligned; 1 53 1 54 1 55 dcl ITS_MODIFIER bit (6) unaligned internal static options (constant) init ("43"b3); 1 56 dcl ITP_MODIFIER bit (6) unaligned internal static options (constant) init ("41"b3); 1 57 1 58 /* END INCLUDE FILE its.incl.pl1 */ 302 303 end convert_ptr; 304 305 get_arglist_ptr: proc () returns (ptr); 306 307 dcl ap ptr; 308 if blk_pt = null 309 then ap = (sp -> frame.argptr); /* no block, assume frame owner's arg list */ 310 else if blk_pt -> runtime_block.quick /* if quick, use entry info */ 311 then do; 312 if blk_pt -> runtime_block.entry_info = (18)"0"b then goto no; /* no entry info */ 313 ap = (addrel (sp, blk_pt -> runtime_block.entry_info) -> quick_entry.argptr); 314 end; 315 else ap = (sp -> frame.argptr); 316 arg_list_arg_count = ap -> arg_list.arg_count; 317 return (ap); 318 end get_arglist_ptr; 319 320 321 322 get_lp: proc () returns (ptr); 323 324 dcl ilp ptr unal; 325 326 if lp ^= null then return (lp); 327 ilp = stackbaseptr () -> stack_header.lot_ptr -> lot.lp (bin (baseno (get_tp ()), 18)); 328 if faulty_ptr (ilp) then goto no; 329 return (ilp); 330 end get_lp; 331 332 333 get_tp: proc () returns (ptr); /* to base of object seg */ 334 335 if tp ^= null then return (tp); 336 if sp ^= null then return (ptr (sp -> frame.entry, 0)); 337 if blk_pt ^= null then return (ptr (blk_pt, 0)); 338 goto no; /* nothing left to try */ 339 end get_tp; 340 341 342 get_static_ptr: proc () returns (ptr); 343 dcl isp ptr unal; 344 isp = stackbaseptr () -> stack_header.isot_ptr -> isot.isp (bin (baseno (get_tp ()), 18)); 345 if faulty_ptr (isp) then goto no; 346 return (isp); 347 end get_static_ptr; 348 349 350 faulty_ptr: proc (P_unal_ptr) returns (bit (1)); 351 dcl P_unal_ptr ptr unal parameter; 352 return (baseno (P_unal_ptr) = "0"b); 353 end faulty_ptr; 354 355 end get_basic_address; 356 357 bitrel: proc (P_ptr, P_bit_offset) returns (ptr); 358 dcl P_ptr ptr parameter; 359 dcl P_bit_offset fixed bin (24) parameter; 360 361 dcl 1 str aligned based (P_ptr), 362 2 filler unal bit (P_bit_offset), 363 2 target unal bit (1); 364 365 if P_bit_offset < 0 then goto no; 366 return (addr (str.target)); 367 end bitrel; 368 2 1 dcl 1 frame aligned based, 2 2 2 pointers(0:7) ptr, 2 3 2 back ptr, 2 4 2 next ptr, 2 5 2 return ptr, 2 6 2 entry ptr, 2 7 2 operator ptr, 2 8 2 argptr ptr, 2 9 2 skip1(2) fixed bin, 2 10 2 on_unit_info(2) bit(18) unaligned, 2 11 2 translator_id bit(18) unaligned, 2 12 2 operator_return bit(18) unaligned, 2 13 2 display ptr, 2 14 2 skip2(2) fixed bin, 2 15 2 linkage ptr; 369 370 3 1 dcl 1 symbol_node aligned based, 3 2 2 type unal bit(12), /* data type */ 3 3 2 level unal bit(6), /* structure level */ 3 4 2 ndims unal bit(6), /* number of dimensions */ 3 5 2 bits unal, 3 6 3 aligned bit(1), 3 7 3 packed bit(1), 3 8 3 simple bit(1), 3 9 3 decimal bit(1), 3 10 2 scale unal bit(8), /* arithmetic scale factor */ 3 11 2 name unal bit(18), /* rel ptr to acc name */ 3 12 2 brother unal bit(18), /* rel ptr to brother entry */ 3 13 2 father unal bit(18), /* rel ptr to father entry */ 3 14 2 son unal bit(18), /* rel ptr to son entry */ 3 15 2 address unal, 3 16 3 offset bit(18), /* offset in storage class */ 3 17 3 class bit(4), /* storage class */ 3 18 3 next bit(14), /* rel ptr to next of same class */ 3 19 2 size fixed bin(35), /* encoded string|arith size */ 3 20 2 word_offset fixed bin(35), /* encoded offset from address */ 3 21 2 bit_offset fixed bin(35), 3 22 2 virtual_org fixed bin(35), 3 23 2 bounds(1), 3 24 3 lower fixed bin(35), /* encoded lower bound */ 3 25 3 upper fixed bin(35), /* encoded upper bound */ 3 26 3 multiplier fixed bin(35); /* encoded multiplier */ 3 27 3 28 dcl 1 sym_bound based, 3 29 2 lower fixed bin(35), 3 30 2 upper fixed bin(35), 3 31 2 multiplier fixed bin(35); 3 32 3 33 dcl 1 symbol_block aligned based, 3 34 2 type unal bit(12), /* = 0 for a block node */ 3 35 2 number unal bit(6), /* begin block number */ 3 36 2 start unal bit(18), /* rel ptr to start of symbols */ 3 37 2 name unal bit(18), /* rel ptr to name of proc */ 3 38 2 brother unal bit(18), /* rel ptr to brother block */ 3 39 2 father unal bit(18), /* rel ptr to father block */ 3 40 2 son unal bit(18), /* rel ptr to son block */ 3 41 2 map unal, 3 42 3 first bit(18), /* rel ptr to first word of map */ 3 43 3 last bit(18), /* rel ptr to last word of map */ 3 44 2 bits unal bit(18), 3 45 2 header unal bit(18), /* rel ptr to symbol header */ 3 46 2 chain(4) unal bit(18), /* chain(i) is rel ptr to first symbol 3 47* on start list with length >= 2**i */ 3 48 2 class_list(0:15) unal bit(18); /* rel ptrs to first symbol of given 3 49* storage class */ 371 372 4 1 /* BEGIN INCLUDE FILE ... runtime_symbol.incl.pl1 ... Modified 07/79 */ 4 2 4 3 dcl 1 runtime_symbol aligned based, 4 4 2 flag unal bit(1), /* always "1"b for Version II */ 4 5 2 use_digit unal bit(1), /* if "1"b and units are half words units are really digits */ 4 6 2 array_units unal bit(2), 4 7 2 units unal bit(2), /* addressing units */ 4 8 2 type unal bit(6), /* data type */ 4 9 2 level unal bit(6), /* structure level */ 4 10 2 ndims unal bit(6), /* number of dimensions */ 4 11 2 bits unal, 4 12 3 aligned bit(1), 4 13 3 packed bit(1), 4 14 3 simple bit(1), 4 15 2 skip unal bit(1), 4 16 2 scale unal bit(8), /* arithmetic scale factor */ 4 17 2 name unal bit(18), /* rel ptr to acc name */ 4 18 2 brother unal bit(18), /* rel ptr to brother entry */ 4 19 2 father unal bit(18), /* rel ptr to father entry */ 4 20 2 son unal bit(18), /* rel ptr to son entry */ 4 21 2 address unal, 4 22 3 location bit(18), /* location in storage class */ 4 23 3 class bit(4), /* storage class */ 4 24 3 next bit(14), /* rel ptr to next of same class */ 4 25 2 size fixed bin(35), /* encoded string|arith size */ 4 26 2 offset fixed bin(35), /* encoded offset from address */ 4 27 2 virtual_org fixed bin(35), 4 28 2 bounds(1), 4 29 3 lower fixed bin(35), /* encoded lower bound */ 4 30 3 upper fixed bin(35), /* encoded upper bound */ 4 31 3 multiplier fixed bin(35); /* encoded multiplier */ 4 32 4 33 dcl 1 runtime_bound based, 4 34 2 lower fixed bin(35), 4 35 2 upper fixed bin(35), 4 36 2 multiplier fixed bin(35); 4 37 4 38 dcl 1 runtime_block aligned based, 4 39 2 flag unal bit(1), /* always "1"b for Version II */ 4 40 2 quick unal bit(1), /* "1"b if quick block */ 4 41 2 fortran unal bit(1), /* "1"b if fortran program */ 4 42 2 standard unal bit(1), /* "1"b if program has std obj segment */ 4 43 2 owner_flag unal bit(1), /* "1"b if block has valid owner field */ 4 44 2 skip unal bit(1), 4 45 2 type unal bit(6), /* = 0 for a block node */ 4 46 2 number unal bit(6), /* begin block number */ 4 47 2 start unal bit(18), /* rel ptr to start of symbols */ 4 48 2 name unal bit(18), /* rel ptr to name of proc */ 4 49 2 brother unal bit(18), /* rel ptr to brother block */ 4 50 2 father unal bit(18), /* rel ptr to father block */ 4 51 2 son unal bit(18), /* rel ptr to son block */ 4 52 2 map unal, 4 53 3 first bit(18), /* rel ptr to first word of map */ 4 54 3 last bit(18), /* rel ptr to last word of map */ 4 55 2 entry_info unal bit(18), /* info about entry of quick block */ 4 56 2 header unal bit(18), /* rel ptr to symbol header */ 4 57 2 chain(4) unal bit(18), /* chain(i) is rel ptr to first symbol 4 58* on start list with length >= 2**i */ 4 59 2 token(0:5) unal bit(18), /* token(i) is rel ptr to first token 4 60* on list with length >= 2 ** i */ 4 61 2 owner unal bit(18); /* rel ptr to owner block */ 4 62 4 63 dcl 1 runtime_token aligned based, 4 64 2 next unal bit(18), /* rel ptr to next token */ 4 65 2 dcl unal bit(18), /* rel ptr to first dcl of this token */ 4 66 2 name, /* ACC */ 4 67 3 size unal unsigned fixed bin (9), /* number of chars in token */ 4 68 3 string unal char(n refer(runtime_token.size)); 4 69 4 70 dcl 1 encoded_value aligned based, 4 71 2 flag bit (2) unal, 4 72 2 code bit (4) unal, 4 73 2 n1 bit (6) unal, 4 74 2 n2 bit (6) unal, 4 75 2 n3 bit (18) unal; 4 76 4 77 /* END INCLUDE FILE ... runtime_symbol.incl.pl1 */ 373 374 375 376 5 1 dcl 1 quick_entry aligned based, 5 2 2 return ptr, 5 3 2 argptr ptr, 5 4 2 descptr ptr; 377 378 379 6 1 dcl 1 ctl_block aligned based, 6 2 2 data ptr, 6 3 2 descriptor ptr, 6 4 2 previous ptr; 380 381 7 1 /* BEGIN INCLUDE FILE ... stack_header.incl.pl1 .. 3/72 Bill Silver */ 7 2 /* modified 7/76 by M. Weaver for *system links and more system use of areas */ 7 3 /* modified 3/77 by M. Weaver to add rnt_ptr */ 7 4 /* Modified April 1983 by C. Hornig for tasking */ 7 5 7 6 /****^ HISTORY COMMENTS: 7 7* 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), 7 8* audit(86-08-05,Schroth), install(86-11-03,MR12.0-1206): 7 9* added the heap_header_ptr definition. 7 10* 2) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 7 11* audit(86-10-10,Fawcett), install(86-11-03,MR12.0-1206): 7 12* Modified to support control point management. These changes were actually 7 13* made in February 1985 by G. Palter. 7 14* 3) change(86-10-22,Fawcett), approve(86-10-22,MCR7473), 7 15* audit(86-10-22,Farley), install(86-11-03,MR12.0-1206): 7 16* Remove the old_lot pointer and replace it with cpm_data_ptr. Use the 18 7 17* bit pad after cur_lot_size for the cpm_enabled. This was done to save some 7 18* space int the stack header and change the cpd_ptr unal to cpm_data_ptr 7 19* (ITS pair). 7 20* END HISTORY COMMENTS */ 7 21 7 22 /* format: style2 */ 7 23 7 24 dcl sb ptr; /* the main pointer to the stack header */ 7 25 7 26 dcl 1 stack_header based (sb) aligned, 7 27 2 pad1 (4) fixed bin, /* (0) also used as arg list by outward_call_handler */ 7 28 2 cpm_data_ptr ptr, /* (4) pointer to control point which owns this stack */ 7 29 2 combined_stat_ptr ptr, /* (6) pointer to area containing separate static */ 7 30 2 clr_ptr ptr, /* (8) pointer to area containing linkage sections */ 7 31 2 max_lot_size fixed bin (17) unal, /* (10) DU number of words allowed in lot */ 7 32 2 main_proc_invoked fixed bin (11) unal, /* (10) DL nonzero if main procedure invoked in run unit */ 7 33 2 have_static_vlas bit (1) unal, /* (10) DL "1"b if (very) large arrays are being used in static */ 7 34 2 pad4 bit (2) unal, 7 35 2 run_unit_depth fixed bin (2) unal, /* (10) DL number of active run units stacked */ 7 36 2 cur_lot_size fixed bin (17) unal, /* (11) DU number of words (entries) in lot */ 7 37 2 cpm_enabled bit (18) unal, /* (11) DL non-zero if control point management is enabled */ 7 38 2 system_free_ptr ptr, /* (12) pointer to system storage area */ 7 39 2 user_free_ptr ptr, /* (14) pointer to user storage area */ 7 40 2 null_ptr ptr, /* (16) */ 7 41 2 stack_begin_ptr ptr, /* (18) pointer to first stack frame on the stack */ 7 42 2 stack_end_ptr ptr, /* (20) pointer to next useable stack frame */ 7 43 2 lot_ptr ptr, /* (22) pointer to the lot for the current ring */ 7 44 2 signal_ptr ptr, /* (24) pointer to signal procedure for current ring */ 7 45 2 bar_mode_sp ptr, /* (26) value of sp before entering bar mode */ 7 46 2 pl1_operators_ptr ptr, /* (28) pointer to pl1_operators_$operator_table */ 7 47 2 call_op_ptr ptr, /* (30) pointer to standard call operator */ 7 48 2 push_op_ptr ptr, /* (32) pointer to standard push operator */ 7 49 2 return_op_ptr ptr, /* (34) pointer to standard return operator */ 7 50 2 return_no_pop_op_ptr 7 51 ptr, /* (36) pointer to standard return / no pop operator */ 7 52 2 entry_op_ptr ptr, /* (38) pointer to standard entry operator */ 7 53 2 trans_op_tv_ptr ptr, /* (40) pointer to translator operator ptrs */ 7 54 2 isot_ptr ptr, /* (42) pointer to ISOT */ 7 55 2 sct_ptr ptr, /* (44) pointer to System Condition Table */ 7 56 2 unwinder_ptr ptr, /* (46) pointer to unwinder for current ring */ 7 57 2 sys_link_info_ptr ptr, /* (48) pointer to *system link name table */ 7 58 2 rnt_ptr ptr, /* (50) pointer to Reference Name Table */ 7 59 2 ect_ptr ptr, /* (52) pointer to event channel table */ 7 60 2 assign_linkage_ptr ptr, /* (54) pointer to storage for (obsolete) hcs_$assign_linkage */ 7 61 2 heap_header_ptr ptr, /* (56) pointer to the heap header for this ring */ 7 62 2 trace, 7 63 3 frames, 7 64 4 count fixed bin, /* (58) number of trace frames */ 7 65 4 top_ptr ptr unal, /* (59) pointer to last trace frame */ 7 66 3 in_trace bit (36) aligned, /* (60) trace antirecursion flag */ 7 67 2 pad2 bit (36), /* (61) */ 7 68 2 pad5 pointer; /* (62) pointer to future stuff */ 7 69 7 70 /* The following offset refers to a table within the pl1 operator table. */ 7 71 7 72 dcl tv_offset fixed bin init (361) internal static; 7 73 /* (551) octal */ 7 74 7 75 7 76 /* The following constants are offsets within this transfer vector table. */ 7 77 7 78 dcl ( 7 79 call_offset fixed bin init (271), 7 80 push_offset fixed bin init (272), 7 81 return_offset fixed bin init (273), 7 82 return_no_pop_offset fixed bin init (274), 7 83 entry_offset fixed bin init (275) 7 84 ) internal static; 7 85 7 86 7 87 7 88 7 89 7 90 /* The following declaration is an overlay of the whole stack header. Procedures which 7 91* move the whole stack header should use this overlay. 7 92**/ 7 93 7 94 dcl stack_header_overlay (size (stack_header)) fixed bin based (sb); 7 95 7 96 7 97 7 98 /* END INCLUDE FILE ... stack_header.incl.pl1 */ 382 383 8 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 8 2* 8 3* James R. Davis 10 May 79 */ 8 4 8 5 8 6 8 7 /****^ HISTORY COMMENTS: 8 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 8 9* audit(86-07-15,Schroth): 8 10* added command_name_arglist declaration to allow the storage of the 8 11* command name given to the command processor 8 12* END HISTORY COMMENTS */ 8 13 8 14 dcl 1 arg_list aligned based, 8 15 2 header, 8 16 3 arg_count fixed bin (17) unsigned unal, 8 17 3 pad1 bit (1) unal, 8 18 3 call_type fixed bin (18) unsigned unal, 8 19 3 desc_count fixed bin (17) unsigned unal, 8 20 3 pad2 bit (19) unal, 8 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 8 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 8 23 8 24 8 25 dcl 1 command_name_arglist aligned based, 8 26 2 header, 8 27 3 arg_count fixed bin (17) unsigned unal, 8 28 3 pad1 bit (1) unal, 8 29 3 call_type fixed bin (18) unsigned unal, 8 30 3 desc_count fixed bin (17) unsigned unal, 8 31 3 mbz bit(1) unal, 8 32 3 has_command_name bit(1) unal, 8 33 3 pad2 bit (17) unal, 8 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 8 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 8 36 2 name, 8 37 3 command_name_ptr pointer, 8 38 3 command_name_length fixed bin (21); 8 39 8 40 8 41 8 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 8 43 2 header, 8 44 3 arg_count fixed bin (17) unsigned unal, 8 45 3 pad1 bit (1) unal, 8 46 3 call_type fixed bin (18) unsigned unal, 8 47 3 desc_count fixed bin (17) unsigned unal, 8 48 3 pad2 bit (19) unal, 8 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 8 50 2 envptr ptr, 8 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 8 52 8 53 8 54 dcl ( 8 55 Quick_call_type init (0), 8 56 Interseg_call_type init (4), 8 57 Envptr_supplied_call_type 8 58 init (8) 8 59 ) fixed bin (18) unsigned unal int static options (constant); 8 60 8 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 8 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 8 63* an argument list of the proper size in the user's stack 8 64* 8 65**/ 8 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 384 385 9 1 /* BEGIN INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 9 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 9 7* Added pascal_string_type_dtype descriptor type. Its number is 87. 9 8* Objects of this type are PASCAL string types. 9 9* 2) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 9 10* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 9 11* Added the new C types. 9 12* END HISTORY COMMENTS */ 9 13 9 14 /* This include file defines mnemonic names for the Multics 9 15* standard descriptor types, using both pl1 and cobol terminology. 9 16* PG 780613 9 17* JRD 790530 9 18* JRD 791016 9 19* MBW 810731 9 20* TGO 830614 Add hex types. 9 21* Modified June 83 JMAthane to add PASCAL data types 9 22* TGO 840120 Add float dec extended and generic, float binary generic 9 23**/ 9 24 9 25 dcl (real_fix_bin_1_dtype init (1), 9 26 real_fix_bin_2_dtype init (2), 9 27 real_flt_bin_1_dtype init (3), 9 28 real_flt_bin_2_dtype init (4), 9 29 cplx_fix_bin_1_dtype init (5), 9 30 cplx_fix_bin_2_dtype init (6), 9 31 cplx_flt_bin_1_dtype init (7), 9 32 cplx_flt_bin_2_dtype init (8), 9 33 real_fix_dec_9bit_ls_dtype init (9), 9 34 real_flt_dec_9bit_dtype init (10), 9 35 cplx_fix_dec_9bit_ls_dtype init (11), 9 36 cplx_flt_dec_9bit_dtype init (12), 9 37 pointer_dtype init (13), 9 38 offset_dtype init (14), 9 39 label_dtype init (15), 9 40 entry_dtype init (16), 9 41 structure_dtype init (17), 9 42 area_dtype init (18), 9 43 bit_dtype init (19), 9 44 varying_bit_dtype init (20), 9 45 char_dtype init (21), 9 46 varying_char_dtype init (22), 9 47 file_dtype init (23), 9 48 real_fix_dec_9bit_ls_overp_dtype init (29), 9 49 real_fix_dec_9bit_ts_overp_dtype init (30), 9 50 real_fix_bin_1_uns_dtype init (33), 9 51 real_fix_bin_2_uns_dtype init (34), 9 52 real_fix_dec_9bit_uns_dtype init (35), 9 53 real_fix_dec_9bit_ts_dtype init (36), 9 54 real_fix_dec_4bit_uns_dtype init (38), /* digit-aligned */ 9 55 real_fix_dec_4bit_ts_dtype init (39), /* byte-aligned */ 9 56 real_fix_dec_4bit_bytealigned_uns_dtype init (40), /* COBOL */ 9 57 real_fix_dec_4bit_ls_dtype init (41), /* digit-aligned */ 9 58 real_flt_dec_4bit_dtype init (42), /* digit-aligned */ 9 59 real_fix_dec_4bit_bytealigned_ls_dtype init (43), 9 60 real_flt_dec_4bit_bytealigned_dtype init (44), 9 61 cplx_fix_dec_4bit_bytealigned_ls_dtype init (45), 9 62 cplx_flt_dec_4bit_bytealigned_dtype init (46), 9 63 real_flt_hex_1_dtype init (47), 9 64 real_flt_hex_2_dtype init (48), 9 65 cplx_flt_hex_1_dtype init (49), 9 66 cplx_flt_hex_2_dtype init (50), 9 67 c_typeref_dtype init (54), 9 68 c_enum_dtype init (55), 9 69 c_enum_const_dtype init (56), 9 70 c_union_dtype init (57), 9 71 algol68_straight_dtype init (59), 9 72 algol68_format_dtype init (60), 9 73 algol68_array_descriptor_dtype init (61), 9 74 algol68_union_dtype init (62), 9 75 9 76 cobol_comp_6_dtype init (1), 9 77 cobol_comp_7_dtype init (1), 9 78 cobol_display_ls_dtype init (9), 9 79 cobol_structure_dtype init (17), 9 80 cobol_char_string_dtype init (21), 9 81 cobol_display_ls_overp_dtype init (29), 9 82 cobol_display_ts_overp_dtype init (30), 9 83 cobol_display_uns_dtype init (35), 9 84 cobol_display_ts_dtype init (36), 9 85 cobol_comp_8_uns_dtype init (38), /* digit aligned */ 9 86 cobol_comp_5_ts_dtype init (39), /* byte aligned */ 9 87 cobol_comp_5_uns_dtype init (40), 9 88 cobol_comp_8_ls_dtype init (41), /* digit aligned */ 9 89 real_flt_dec_extended_dtype init (81), /* 9-bit exponent */ 9 90 cplx_flt_dec_extended_dtype init (82), /* 9-bit exponent */ 9 91 real_flt_dec_generic_dtype init (83), /* generic float decimal */ 9 92 cplx_flt_dec_generic_dtype init (84), 9 93 real_flt_bin_generic_dtype init (85), /* generic float binary */ 9 94 cplx_flt_bin_generic_dtype init (86)) fixed bin internal static options (constant); 9 95 9 96 dcl (ft_integer_dtype init (1), 9 97 ft_real_dtype init (3), 9 98 ft_double_dtype init (4), 9 99 ft_complex_dtype init (7), 9 100 ft_complex_double_dtype init (8), 9 101 ft_external_dtype init (16), 9 102 ft_logical_dtype init (19), 9 103 ft_char_dtype init (21), 9 104 ft_hex_real_dtype init (47), 9 105 ft_hex_double_dtype init (48), 9 106 ft_hex_complex_dtype init (49), 9 107 ft_hex_complex_double_dtype init (50) 9 108 ) fixed bin internal static options (constant); 9 109 9 110 dcl (algol68_short_int_dtype init (1), 9 111 algol68_int_dtype init (1), 9 112 algol68_long_int_dtype init (2), 9 113 algol68_real_dtype init (3), 9 114 algol68_long_real_dtype init (4), 9 115 algol68_compl_dtype init (7), 9 116 algol68_long_compl_dtype init (8), 9 117 algol68_bits_dtype init (19), 9 118 algol68_bool_dtype init (19), 9 119 algol68_char_dtype init (21), 9 120 algol68_byte_dtype init (21), 9 121 algol68_struct_struct_char_dtype init (22), 9 122 algol68_struct_struct_bool_dtype init (20) 9 123 ) fixed bin internal static options (constant); 9 124 9 125 dcl (label_constant_runtime_dtype init (24), 9 126 int_entry_runtime_dtype init (25), 9 127 ext_entry_runtime_dtype init (26), 9 128 ext_procedure_runtime_dtype init (27), 9 129 picture_runtime_dtype init (63) 9 130 ) fixed bin internal static options (constant); 9 131 9 132 dcl (pascal_integer_dtype init (1), 9 133 pascal_real_dtype init (4), 9 134 pascal_label_dtype init (24), 9 135 pascal_internal_procedure_dtype init (25), 9 136 pascal_exportable_procedure_dtype init (26), 9 137 pascal_imported_procedure_dtype init (27), 9 138 pascal_typed_pointer_type_dtype init (64), 9 139 pascal_char_dtype init (65), 9 140 pascal_boolean_dtype init (66), 9 141 pascal_record_file_type_dtype init (67), 9 142 pascal_record_type_dtype init (68), 9 143 pascal_set_dtype init (69), 9 144 pascal_enumerated_type_dtype init (70), 9 145 pascal_enumerated_type_element_dtype init (71), 9 146 pascal_enumerated_type_instance_dtype init (72), 9 147 pascal_user_defined_type_dtype init (73), 9 148 pascal_user_defined_type_instance_dtype init (74), 9 149 pascal_text_file_dtype init (75), 9 150 pascal_procedure_type_dtype init (76), 9 151 pascal_variable_formal_parameter_dtype init (77), 9 152 pascal_value_formal_parameter_dtype init (78), 9 153 pascal_entry_formal_parameter_dtype init (79), 9 154 pascal_parameter_procedure_dtype init (80), 9 155 pascal_string_type_dtype init (87)) fixed bin int static options (constant); 9 156 9 157 9 158 /* END INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 386 387 10 1 /* BEGIN INCLUDE FILE ... system.incl.pl1 */ 10 2 10 3 /* Modified: 25 Apr 1979 by PCK to implemnt 4-bit decimal */ 10 4 10 5 dcl ( max_p_flt_bin_1 initial(27), 10 6 max_p_flt_bin_2 initial(63), 10 7 max_p_fix_bin_1 initial(35), 10 8 max_p_fix_bin_2 initial(71), 10 9 10 10 max_p_dec initial(59), 10 11 max_p_bin_or_dec initial (71), /* max (max_p_fix_bin_2, max_p_dec) */ 10 12 10 13 min_scale initial(-128), 10 14 max_scale initial(+127), 10 15 max_bit_string initial(9437184), 10 16 max_char_string initial(1048576), 10 17 max_area_size initial(262144), 10 18 min_area_size initial(28), 10 19 10 20 max_bit_string_constant initial (253), /* max length of bit literals */ 10 21 max_char_string_constant initial (254), /* max length of character literals */ 10 22 max_identifier_length initial (256), 10 23 max_number_of_dimensions initial (127), 10 24 10 25 max_length_precision initial(24), 10 26 max_offset_precision initial(24), /* 18 bits for word offset + 6 bits for bit offset */ 10 27 10 28 max_words_per_variable initial (262144), 10 29 10 30 bits_per_word initial(36), 10 31 bits_per_double initial(72), 10 32 packed_digits_per_character initial(2), 10 33 characters_per_half initial(2), 10 34 characters_per_word initial(4), 10 35 characters_per_double initial(8), 10 36 10 37 bits_per_character initial(9), 10 38 bits_per_half initial(18), 10 39 bits_per_decimal_digit initial(9), 10 40 bits_per_binary_exponent initial(8), 10 41 bits_per_packed_ptr initial(36), 10 42 words_per_packed_pointer initial(1), 10 43 10 44 words_per_fix_bin_1 initial(1), 10 45 words_per_fix_bin_2 initial(2), 10 46 words_per_flt_bin_1 initial(1), 10 47 words_per_flt_bin_2 initial(2), 10 48 words_per_varying_string_header initial(1), 10 49 words_per_offset initial(1), 10 50 words_per_pointer initial(2), 10 51 words_per_label_var initial(4), 10 52 words_per_entry_var initial(4), 10 53 words_per_file_var initial(4), 10 54 words_per_format initial(4), 10 55 words_per_condition_var initial(6), 10 56 10 57 max_index_register_value initial(262143), 10 58 max_signed_index_register_value initial(131071), 10 59 10 60 max_signed_xreg_precision initial(17), 10 61 max_uns_xreg_precision initial(18), 10 62 10 63 default_area_size initial(1024), 10 64 default_flt_bin_p initial(27), 10 65 default_fix_bin_p initial(17), 10 66 default_flt_dec_p initial(10), 10 67 default_fix_dec_p initial(7)) fixed bin(31) internal static options(constant); 10 68 10 69 dcl bits_per_digit initial(4.5) fixed bin(31,1) internal static options(constant); 10 70 10 71 dcl ( integer_type initial("010000000000000000000100000001100000"b), 10 72 dec_integer_type initial("010000000000000000000100000010100000"b), 10 73 pointer_type initial("000001000000000000000100000000000000"b), 10 74 real_type initial("001000000000000000000100000001100000"b), 10 75 complex_type initial("001000000000000000000100000001010000"b), 10 76 builtin_type initial("000000000000000010000000000000000000"b), 10 77 storage_block_type initial("000000000000100000000000000000000000"b), 10 78 arg_desc_type initial("000000000001000000000000000000000000"b), 10 79 local_label_var_type initial("000000001000000000000100000100001000"b), 10 80 entry_var_type initial("000000000100000000000000000000001000"b), 10 81 bit_type initial("000100000000000000000000000000000000"b), 10 82 char_type initial("000010000000000000000000000000000000"b)) bit(36) aligned int static 10 83 options(constant); 10 84 10 85 /* END INCLUDE FILE ... system.incl.pl1 */ 388 389 11 1 /* BEGIN INCLUDE FILE -- lot.incl.pl1 S.Webber 9/74, Modified by R. Bratt 04/76, modified by M. Weaver 7/76 */ 11 2 /* modified by M. Weaver 3/77 */ 11 3 11 4 dcl lotp ptr; 11 5 11 6 dcl 1 lot based (lotp) aligned, 11 7 2 lp (0:9999) ptr unaligned; /* array of packed pointers to linkage sections */ 11 8 11 9 dcl lot_fault bit (36) aligned static options (constant) init ("111000000000000000000000000000000000"b); 11 10 /* lot fault has fault code = 0 and offset = 0 */ 11 11 11 12 dcl isotp ptr; 11 13 dcl 1 isot based (isotp) aligned, 11 14 2 isp (0:9999) ptr unaligned; 11 15 11 16 dcl 1 isot1 (0 :9999) aligned based, 11 17 2 flags unaligned, 11 18 3 fault bit (2) unaligned, 11 19 3 system bit (1) unaligned, 11 20 3 mbz bit (6) unaligned, 11 21 2 fault_code fixed bin (8) unaligned, 11 22 2 static_offset bit (18) unaligned; 11 23 11 24 11 25 /* END INCLUDE FILE lot.incl.pl1 */ 390 391 12 1 /* BEGIN INCLUDE FILE runtime_symbol_info_.incl.pl1 */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 12 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 12 7* Added runtime_symbol_info_$subrange entry which was missing. Added 12 8* has_dimensions and has subrange_limits fields in type_info record. 12 9* Structure version numbers have not been changed since this change does not 12 10* affect existing programs. 12 11* END HISTORY COMMENTS */ 12 12 12 13 /* Declarations for using the various entry points in runtime_symbol_info_ */ 12 14 /* NOTE: These entries do not support PL/1 version 1. */ 12 15 12 16 /* Made structures aligned, removed variable extent from runtime_array_info.bounds 08/25/83 S. Herbst */ 12 17 /* Added version strings to structures 10/05/83 S. Herbst */ 12 18 /* Added has_dimensions and has_subrange_limits bits in type_info 12 19*Added subrange entry. JMAthane 08/31/84 */ 12 20 12 21 12 22 dcl runtime_symbol_info_$type entry (ptr, ptr, fixed bin (35)); 12 23 12 24 dcl 1 runtime_type_info aligned based, 12 25 2 version char (8), /* = "RUNTYP_1" */ 12 26 2 flags, 12 27 3 aligned bit (1) unal, 12 28 3 packed bit (1) unal, 12 29 3 size_is_encoded bit (1) unal, 12 30 3 has_dimensions bit (1) unal, 12 31 3 has_subrange_limits bit (1) unal, 12 32 3 pad bit (23) unal, 12 33 2 scale fixed bin (7) unal, 12 34 2 (type, base_type) fixed bin (18) unsigned unal, 12 35 2 (type_addr, base_type_addr) ptr, 12 36 2 size fixed bin (35); 12 37 12 38 dcl runtime_symbol_info_$father entry (ptr) returns (ptr); 12 39 12 40 dcl runtime_symbol_info_$brother entry (ptr) returns (ptr); 12 41 12 42 dcl runtime_symbol_info_$father_type entry (ptr) returns (ptr); 12 43 12 44 dcl runtime_symbol_info_$son entry (ptr) returns (ptr); 12 45 12 46 dcl runtime_symbol_info_$successor entry (ptr) returns (ptr); 12 47 12 48 dcl runtime_symbol_info_$name entry (ptr) returns (ptr); 12 49 12 50 dcl runtime_symbol_info_$level entry (ptr) returns (fixed bin); 12 51 12 52 dcl runtime_symbol_info_$next entry (ptr) returns (ptr); 12 53 12 54 dcl runtime_symbol_info_$address entry (ptr, ptr, fixed bin (35)); 12 55 12 56 dcl 1 runtime_address_info aligned based, 12 57 2 version char (8), /* = "RUNADR_1" */ 12 58 2 location fixed bin (18) unsigned unal, 12 59 2 class fixed bin (6) unsigned unal, 12 60 2 use_digit fixed bin (1) unsigned unal, 12 61 2 units fixed bin (2) unsigned unal, 12 62 2 offset_is_encoded bit (1) unal, 12 63 2 pad bit (8) unal, 12 64 2 offset fixed bin (35); 12 65 12 66 dcl runtime_symbol_info_$array_dims entry (ptr) returns (fixed bin); 12 67 12 68 dcl runtime_symbol_info_$array entry (ptr, ptr, fixed bin (35)); 12 69 12 70 dcl 1 runtime_array_info aligned based, 12 71 2 version char (8), /* = "RUNARY_1" */ 12 72 2 access_info aligned, 12 73 3 ndims fixed bin (6) unsigned unaligned, /* number of dimensions */ 12 74 3 use_digit fixed bin (1) unsigned unaligned, /* if "1"b and units are half words, 12 75* units are really digits */ 12 76 3 array_units fixed bin (2) unsigned unaligned, 12 77 3 virtual_origin_is_encoded 12 78 bit (1) unaligned, 12 79 3 pad bit (26) unaligned, 12 80 2 virtual_origin fixed bin (35), 12 81 2 bounds (16) 12 82 aligned, 12 83 3 flags aligned, 12 84 4 lower_is_encoded 12 85 bit (1) unaligned, 12 86 4 upper_is_encoded 12 87 bit (1) unaligned, 12 88 4 multiplier_is_encoded 12 89 bit (1) unaligned, 12 90 4 pad bit (33) unaligned, 12 91 3 lower fixed bin (35), 12 92 3 upper fixed bin (35), 12 93 3 multiplier fixed bin (35), 12 94 3 subscript_type fixed bin (35), 12 95 3 subscript_type_addr ptr; 12 96 12 97 dcl n_dims fixed bin; 12 98 12 99 dcl runtime_symbol_info_$n_variants entry (ptr) returns (fixed bin (35)); 12 100 12 101 dcl runtime_symbol_info_$variant entry (ptr, ptr, fixed bin (35)); 12 102 12 103 dcl 1 runtime_variant_info aligned based, 12 104 2 version char (8), /* = "RUNVAR_1" */ 12 105 2 number_of_variants fixed bin, 12 106 2 first_value_in_set fixed bin (35), /* value corresponding to the first bit in set stings */ 12 107 2 case (n_variants), 12 108 3 set_addr ptr, /* bit string specifies cases; 12 109* set's base type is this node's type */ 12 110 3 brother_addr ptr; /* ptr to brother for this variant */ 12 111 12 112 dcl n_variants fixed bin (35); 12 113 12 114 dcl runtime_symbol_info_$subrange entry (ptr, ptr, fixed bin (35)); 12 115 12 116 dcl 1 runtime_subrange_info based, 12 117 2 version char (8), /* = "RUNSUB_1" */ 12 118 2 flags aligned, 12 119 3 has_subrange_limits bit (1) unal, 12 120 3 lower_bound_is_encoded bit (1) unal, 12 121 3 upper_bound_is_encoded bit (1) unal, 12 122 3 pad bit (33) unal, 12 123 2 subrange_lower_bound fixed bin (35), 12 124 2 subrange_upper_bound fixed bin (35); 12 125 12 126 12 127 dcl RUNTIME_TYPE_INFO_VERSION_1 char (8) int static options (constant) init ("RUNTYP_1"); 12 128 dcl RUNTIME_ADDRESS_INFO_VERSION_1 char (8) int static options (constant) init ("RUNADR_1"); 12 129 dcl RUNTIME_ARRAY_INFO_VERSION_1 char (8) int static options (constant) init ("RUNARY_1"); 12 130 dcl RUNTIME_VARIANT_INFO_VERSION_1 char (8) int static options (constant) init ("RUNVAR_1"); 12 131 dcl RUNTIME_SUBRANGE_INFO_VERSION_1 char (8) int static options (constant) init ("RUNSUB_1"); 12 132 12 133 12 134 /* END INCLUDE FILE runtime_symbol_info_.incl.pl1 */ 392 393 394 395 end get_runtime_address; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/24/88 1400.3 get_runtime_address.pl1 >special_ldd>install>MR12.2-1184>get_runtime_address.pl1 302 1 11/26/79 1320.6 its.incl.pl1 >ldd>include>its.incl.pl1 369 2 05/06/74 1752.6 stu_frame.incl.pl1 >ldd>include>stu_frame.incl.pl1 371 3 05/06/74 1752.6 symbol_node.incl.pl1 >ldd>include>symbol_node.incl.pl1 373 4 11/26/79 1320.6 runtime_symbol.incl.pl1 >ldd>include>runtime_symbol.incl.pl1 377 5 05/06/74 1743.0 quick_entry.incl.pl1 >ldd>include>quick_entry.incl.pl1 380 6 05/06/74 1741.0 ctl_block.incl.pl1 >ldd>include>ctl_block.incl.pl1 382 7 11/07/86 1550.3 stack_header.incl.pl1 >ldd>include>stack_header.incl.pl1 384 8 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 386 9 10/24/88 1336.9 std_descriptor_types.incl.pl1 >special_ldd>install>MR12.2-1184>std_descriptor_types.incl.pl1 388 10 12/07/83 1701.7 system.incl.pl1 >ldd>include>system.incl.pl1 390 11 08/05/77 1022.4 lot.incl.pl1 >ldd>include>lot.incl.pl1 392 12 11/12/86 1748.0 runtime_symbol_info_.incl.pl1 >ldd>include>runtime_symbol_info_.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. P_bit_offset parameter fixed bin(24,0) dcl 359 ref 357 365 366 P_ptr parameter pointer dcl 358 in procedure "bitrel" ref 357 366 P_ptr parameter pointer dcl 270 in procedure "convert_ptr" ref 264 279 281 286 P_unal_ptr parameter pointer packed unaligned dcl 351 ref 350 352 RUNTIME_ADDRESS_INFO_VERSION_1 000032 constant char(8) initial packed unaligned dcl 12-128 ref 66 RUNTIME_ARRAY_INFO_VERSION_1 000030 constant char(8) initial packed unaligned dcl 12-129 ref 82 RUNTIME_TYPE_INFO_VERSION_1 000034 constant char(8) initial packed unaligned dcl 12-127 ref 237 access_info 2 000136 automatic structure level 2 dcl 80 addr builtin function dcl 62 ref 68 68 84 84 113 115 118 118 121 125 211 239 239 366 addrel builtin function dcl 62 ref 193 197 208 211 215 218 223 242 251 257 297 297 313 address 000127 automatic fixed bin(35,0) dcl 49 in procedure "get_runtime_address" set ref 121* 122 123* 123 125 125 address 0(06) based fixed bin(30,0) level 2 in structure "packed_pointer" packed packed unsigned unaligned dcl 55 in procedure "get_runtime_address" set ref 118* 118 121 125* address_info 000117 automatic structure level 1 unaligned dcl 44 set ref 68 68 an_itp_ptr 000422 automatic structure level 1 dcl 271 set ref 279* ap 000440 automatic pointer dcl 307 in procedure "get_arglist_ptr" set ref 308* 313* 315* 316 317 ap 000374 automatic pointer dcl 178 in procedure "get_basic_address" set ref 227* 230 231 arg_count based fixed bin(17,0) level 3 packed packed unsigned unaligned dcl 8-14 ref 230 316 arg_list based structure level 1 dcl 8-14 arg_list_arg_count 000124 automatic fixed bin(17,0) dcl 46 set ref 316* arg_ptrs 2 based pointer array level 2 dcl 8-14 set ref 231* argptr 32 based pointer level 2 in structure "frame" dcl 2-1 in procedure "get_runtime_address" ref 308 315 argptr 2 based pointer level 2 in structure "quick_entry" dcl 5-1 in procedure "get_runtime_address" ref 313 array_info 000136 automatic structure level 1 unaligned dcl 80 set ref 84 84 array_units 2(07) 000136 automatic fixed bin(2,0) level 3 packed packed unsigned unaligned dcl 80 set ref 98 based_ptr based pointer dcl 176 ref 197 211 218 223 based_thing based fixed bin(17,0) dcl 177 set ref 211 baseno builtin function dcl 62 ref 327 344 352 basep 000426 automatic pointer dcl 273 set ref 294* 295* 297 297 bin builtin function dcl 62 ref 230 293 297 297 327 344 bit_offset 1(21) 000422 automatic bit(6) level 2 in structure "an_itp_ptr" packed packed unaligned dcl 271 in procedure "convert_ptr" set ref 297 297 bit_offset based fixed bin(6,0) level 2 in structure "packed_pointer" packed packed unsigned unaligned dcl 55 in procedure "get_runtime_address" set ref 113 115* bit_offset 000130 automatic fixed bin(6,0) dcl 50 in procedure "get_runtime_address" set ref 113* 114 115 bits_per_character constant fixed bin(31,0) initial dcl 10-5 ref 146 150 bits_per_half constant fixed bin(31,0) initial dcl 10-5 ref 147 bits_per_word constant fixed bin(31,0) initial dcl 10-5 ref 144 148 blk_pt 000100 automatic pointer initial dcl 34 set ref 34* 161* 203* 236 308 310 312 313 337 337 block_pt parameter pointer dcl 26 ref 24 34 bo 000116 automatic fixed bin(35,0) dcl 42 set ref 76* 98* 98 113 132 bounds 4 000136 automatic structure array level 2 dcl 80 class 2(18) 000117 automatic fixed bin(6,0) level 2 packed packed unsigned unaligned dcl 44 set ref 107 184 code 000123 automatic fixed bin(35,0) dcl 45 set ref 68* 69 84* 85 239* 240 ctl_block based structure level 1 dcl 6-1 data based pointer level 2 dcl 6-1 ref 215 218 data_ptr 000114 automatic pointer dcl 41 set ref 71* 109 129* 130 132* 161* divide builtin function dcl 62 ref 114 122 125 151 drv 000362 automatic fixed bin(35,0) dcl 159 set ref 161* 162 embedded_text_ptr 000430 automatic structure level 1 dcl 274 set ref 286* entry 26 based pointer level 2 dcl 2-1 ref 336 entry_info 4 based bit(18) level 2 packed packed unaligned dcl 4-38 ref 312 313 ev parameter fixed bin(35,0) dcl 156 set ref 155 161* flag based bit(1) level 2 packed packed unaligned dcl 4-38 ref 236 flags 4 000136 automatic structure array level 3 dcl 80 frame based structure level 1 dcl 2-1 header based structure level 2 dcl 8-14 ilp 000450 automatic pointer packed unaligned dcl 324 set ref 327* 328* 329 isot based structure level 1 dcl 11-13 isot_ptr 52 based pointer level 2 dcl 7-26 ref 344 isp based pointer array level 2 in structure "isot" packed packed unaligned dcl 11-13 in procedure "get_runtime_address" ref 344 isp 000466 automatic pointer packed unaligned dcl 343 in procedure "get_static_ptr" set ref 344* 345* 346 itp based structure level 1 dcl 1-18 itp_mod 0(30) 000422 automatic bit(6) level 2 packed packed unaligned dcl 271 set ref 281 284 291 link_pt parameter pointer dcl 26 ref 24 37 location 2 000117 automatic fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 44 set ref 186 lot based structure level 1 dcl 11-6 lot_ptr 26 based pointer level 2 dcl 7-26 ref 327 lp based pointer array level 2 in structure "lot" packed packed unaligned dcl 11-6 in procedure "get_runtime_address" ref 327 lp 000106 automatic pointer initial dcl 37 in procedure "get_runtime_address" set ref 37* 161* 203* 326 326 mod builtin function dcl 62 ref 115 123 125 multiplier 7 000136 automatic fixed bin(35,0) array level 3 dcl 80 set ref 89* 92 multiplier_is_encoded 4(02) 000136 automatic bit(1) array level 4 packed packed unaligned dcl 80 set ref 89 multiply builtin function dcl 62 ref 151 n_dims 000135 automatic fixed bin(17,0) dcl 12-97 set ref 77* 78 88 ns_code 000363 automatic fixed bin(17,0) dcl 160 set ref 161* null builtin function dcl 62 ref 69 78 85 167 191 195 199 204 221 225 240 308 326 335 336 337 off 000430 automatic bit(18) level 2 in structure "embedded_text_ptr" packed packed unaligned dcl 274 in procedure "convert_ptr" set ref 287 off 000134 automatic fixed bin(35,0) dcl 64 in procedure "get_runtime_address" set ref 73* 75* 76* offset 3 000117 automatic fixed bin(35,0) level 2 in structure "address_info" dcl 44 in procedure "get_runtime_address" set ref 73* 75 offset 1 000422 automatic bit(18) level 2 in structure "an_itp_ptr" packed packed unaligned dcl 271 in procedure "convert_ptr" set ref 297 297 offset_is_encoded 2(27) 000117 automatic bit(1) level 2 packed packed unaligned dcl 44 set ref 73 packed_pointer based structure level 1 packed packed unaligned dcl 55 pl1_operators_$VLA_words_per_seg_ 000010 external static fixed bin(19,0) dcl 59 ref 118 123 125 125 pp 000133 automatic pointer packed unaligned dcl 54 set ref 109* 113 115 118 118 121 125 129 pr_no 000422 automatic bit(3) level 2 packed packed unaligned dcl 271 set ref 293 ptr builtin function dcl 62 ref 254 287 336 337 quick 0(01) based bit(1) level 2 packed packed unaligned dcl 4-38 ref 310 quick_entry based structure level 1 dcl 5-1 ref_pt parameter pointer dcl 26 ref 24 39 199 199 reg 000424 automatic fixed bin(17,0) dcl 272 set ref 293* 294 295 rp 000112 automatic pointer initial dcl 39 set ref 39* runtime_address_info based structure level 1 dcl 12-56 runtime_array_info based structure level 1 dcl 12-70 runtime_block based structure level 1 dcl 4-38 runtime_symbol_info_$address 000016 constant entry external dcl 12-54 ref 68 runtime_symbol_info_$array 000022 constant entry external dcl 12-68 ref 84 runtime_symbol_info_$array_dims 000020 constant entry external dcl 12-66 ref 77 runtime_symbol_info_$level 000014 constant entry external dcl 12-50 ref 242 runtime_symbol_info_$type 000012 constant entry external dcl 12-22 ref 239 runtime_type_info based structure level 1 dcl 12-24 segno 000132 automatic fixed bin(17,0) dcl 52 set ref 122* 123 sp 000104 automatic pointer initial dcl 36 set ref 36* 161* 191 193 195 197 203* 221 223 225 294 308 313 315 336 336 stack_header based structure level 1 dcl 7-26 stack_pt parameter pointer dcl 26 ref 24 36 stackbaseptr builtin function dcl 62 ref 327 344 storage_offset 000372 automatic fixed bin(35,0) dcl 175 set ref 186* 193 197 208 211 215 218 223 230 231 251 254 257 str based structure level 1 dcl 361 string builtin function dcl 277 set ref 279* 286* stu_$decode_runtime_value_extended 000024 constant entry external dcl 157 ref 161 stu_$get_implicit_qualifier 000026 constant entry external dcl 182 ref 203 subs_pt parameter pointer dcl 26 ref 24 78 89 92 subs_x 000126 automatic fixed bin(17,0) dcl 48 set ref 88* 89 89 89 92 92* subscript based fixed bin(17,0) array dcl 43 ref 89 92 sum 000125 automatic fixed bin(35,0) dcl 47 set ref 87* 89* 89 92* 92 94* 94 96* 96 98* sw 000400 automatic fixed bin(4,0) dcl 180 set ref 184* 187 sym_pt 000102 automatic pointer initial dcl 35 set ref 35* 68* 77* 84* 161* 203* 239* 242* symbol_pt parameter pointer dcl 26 ref 24 35 251 target based bit(1) level 2 packed packed unaligned dcl 361 set ref 366 temp 000376 automatic pointer dcl 179 set ref 199* 203* 204 206 231* 242* 242 247 text_pt parameter pointer dcl 26 ref 24 38 tp 000110 automatic pointer initial dcl 38 set ref 38* 161* 203* 335 335 type 3 000402 automatic fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 181 set ref 242 242 type_info 000402 automatic structure level 1 unaligned dcl 181 set ref 239 239 unit_code parameter fixed bin(2,0) unsigned dcl 136 ref 134 141 unit_msb parameter fixed bin(1,0) unsigned dcl 137 ref 134 141 unit_type 000352 automatic fixed bin(3,0) dcl 139 set ref 141* 142 units 2(25) 000117 automatic fixed bin(2,0) level 2 packed packed unsigned unaligned dcl 44 set ref 76 unspec builtin function dcl 277 ref 279 286 use_digit 2(06) 000136 automatic fixed bin(1,0) level 3 in structure "array_info" packed packed unsigned unaligned dcl 80 in begin block on line 79 set ref 98 use_digit 2(24) 000117 automatic fixed bin(1,0) level 2 in structure "address_info" packed packed unsigned unaligned dcl 44 in procedure "get_runtime_address" set ref 76 value parameter fixed bin(35,0) dcl 135 ref 134 144 145 146 147 148 149 150 151 varying_bit_dtype constant fixed bin(17,0) initial dcl 9-25 ref 242 varying_char_dtype constant fixed bin(17,0) initial dcl 9-25 ref 242 version 000136 automatic char(8) level 2 in structure "array_info" packed packed unaligned dcl 80 in begin block on line 79 set ref 82* version 000117 automatic char(8) level 2 in structure "address_info" packed packed unaligned dcl 44 in procedure "get_runtime_address" set ref 66* version 000402 automatic char(8) level 2 in structure "type_info" packed packed unaligned dcl 181 in procedure "get_basic_address" set ref 237* virtual_origin 3 000136 automatic fixed bin(35,0) level 2 dcl 80 set ref 94* 96 virtual_origin_is_encoded 2(09) 000136 automatic bit(1) level 3 packed packed unaligned dcl 80 set ref 94 word_offset 000131 automatic fixed bin(35,0) dcl 51 set ref 114* 118 123 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Envptr_supplied_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 8-54 ITP_MODIFIER internal static bit(6) initial packed unaligned dcl 1-56 ITS_MODIFIER internal static bit(6) initial packed unaligned dcl 1-55 Interseg_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 8-54 Quick_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 8-54 RUNTIME_SUBRANGE_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 12-131 RUNTIME_VARIANT_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 12-130 algol68_array_descriptor_dtype internal static fixed bin(17,0) initial dcl 9-25 algol68_bits_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_bool_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_byte_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_char_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_compl_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_format_dtype internal static fixed bin(17,0) initial dcl 9-25 algol68_int_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_long_compl_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_long_int_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_long_real_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_real_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_short_int_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_straight_dtype internal static fixed bin(17,0) initial dcl 9-25 algol68_struct_struct_bool_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_struct_struct_char_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_union_dtype internal static fixed bin(17,0) initial dcl 9-25 area_dtype internal static fixed bin(17,0) initial dcl 9-25 arg_desc_type internal static bit(36) initial dcl 10-71 arg_list_with_envptr based structure level 1 dcl 8-42 bit_dtype internal static fixed bin(17,0) initial dcl 9-25 bit_type internal static bit(36) initial dcl 10-71 bits_per_binary_exponent internal static fixed bin(31,0) initial dcl 10-5 bits_per_decimal_digit internal static fixed bin(31,0) initial dcl 10-5 bits_per_digit internal static fixed bin(31,1) initial dcl 10-69 bits_per_double internal static fixed bin(31,0) initial dcl 10-5 bits_per_packed_ptr internal static fixed bin(31,0) initial dcl 10-5 builtin_type internal static bit(36) initial dcl 10-71 c_enum_const_dtype internal static fixed bin(17,0) initial dcl 9-25 c_enum_dtype internal static fixed bin(17,0) initial dcl 9-25 c_typeref_dtype internal static fixed bin(17,0) initial dcl 9-25 c_union_dtype internal static fixed bin(17,0) initial dcl 9-25 call_offset internal static fixed bin(17,0) initial dcl 7-78 char_dtype internal static fixed bin(17,0) initial dcl 9-25 char_type internal static bit(36) initial dcl 10-71 characters_per_double internal static fixed bin(31,0) initial dcl 10-5 characters_per_half internal static fixed bin(31,0) initial dcl 10-5 characters_per_word internal static fixed bin(31,0) initial dcl 10-5 cobol_char_string_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_5_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_5_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_6_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_7_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_8_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_8_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ls_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ts_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_structure_dtype internal static fixed bin(17,0) initial dcl 9-25 command_name_arglist based structure level 1 dcl 8-25 complex_type internal static bit(36) initial dcl 10-71 cplx_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 9-25 dec_integer_type internal static bit(36) initial dcl 10-71 default_area_size internal static fixed bin(31,0) initial dcl 10-5 default_fix_bin_p internal static fixed bin(31,0) initial dcl 10-5 default_fix_dec_p internal static fixed bin(31,0) initial dcl 10-5 default_flt_bin_p internal static fixed bin(31,0) initial dcl 10-5 default_flt_dec_p internal static fixed bin(31,0) initial dcl 10-5 encoded_value based structure level 1 dcl 4-70 entry_dtype internal static fixed bin(17,0) initial dcl 9-25 entry_offset internal static fixed bin(17,0) initial dcl 7-78 entry_var_type internal static bit(36) initial dcl 10-71 ext_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 ext_procedure_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 file_dtype internal static fixed bin(17,0) initial dcl 9-25 ft_char_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_complex_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_complex_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_external_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_complex_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_complex_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_real_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_integer_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_logical_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_real_dtype internal static fixed bin(17,0) initial dcl 9-96 int_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 integer_type internal static bit(36) initial dcl 10-71 isot1 based structure array level 1 dcl 11-16 isotp automatic pointer dcl 11-12 itp_unsigned based structure level 1 dcl 1-43 its based structure level 1 dcl 1-5 its_unsigned based structure level 1 dcl 1-30 label_constant_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 label_dtype internal static fixed bin(17,0) initial dcl 9-25 local_label_var_type internal static bit(36) initial dcl 10-71 lot_fault internal static bit(36) initial dcl 11-9 lotp automatic pointer dcl 11-4 max_area_size internal static fixed bin(31,0) initial dcl 10-5 max_bit_string internal static fixed bin(31,0) initial dcl 10-5 max_bit_string_constant internal static fixed bin(31,0) initial dcl 10-5 max_char_string internal static fixed bin(31,0) initial dcl 10-5 max_char_string_constant internal static fixed bin(31,0) initial dcl 10-5 max_identifier_length internal static fixed bin(31,0) initial dcl 10-5 max_index_register_value internal static fixed bin(31,0) initial dcl 10-5 max_length_precision internal static fixed bin(31,0) initial dcl 10-5 max_number_of_dimensions internal static fixed bin(31,0) initial dcl 10-5 max_offset_precision internal static fixed bin(31,0) initial dcl 10-5 max_p_bin_or_dec internal static fixed bin(31,0) initial dcl 10-5 max_p_dec internal static fixed bin(31,0) initial dcl 10-5 max_p_fix_bin_1 internal static fixed bin(31,0) initial dcl 10-5 max_p_fix_bin_2 internal static fixed bin(31,0) initial dcl 10-5 max_p_flt_bin_1 internal static fixed bin(31,0) initial dcl 10-5 max_p_flt_bin_2 internal static fixed bin(31,0) initial dcl 10-5 max_scale internal static fixed bin(31,0) initial dcl 10-5 max_signed_index_register_value internal static fixed bin(31,0) initial dcl 10-5 max_signed_xreg_precision internal static fixed bin(31,0) initial dcl 10-5 max_uns_xreg_precision internal static fixed bin(31,0) initial dcl 10-5 max_words_per_variable internal static fixed bin(31,0) initial dcl 10-5 min_area_size internal static fixed bin(31,0) initial dcl 10-5 min_scale internal static fixed bin(31,0) initial dcl 10-5 n_variants automatic fixed bin(35,0) dcl 12-112 offset_dtype internal static fixed bin(17,0) initial dcl 9-25 packed_digits_per_character internal static fixed bin(31,0) initial dcl 10-5 pascal_boolean_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_char_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_entry_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_enumerated_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_enumerated_type_element_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_enumerated_type_instance_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_exportable_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_imported_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_integer_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_internal_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_label_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_parameter_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_procedure_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_real_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_record_file_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_record_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_set_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_string_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_text_file_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_typed_pointer_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_user_defined_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_user_defined_type_instance_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_value_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_variable_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 9-132 picture_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 pointer_dtype internal static fixed bin(17,0) initial dcl 9-25 pointer_type internal static bit(36) initial dcl 10-71 push_offset internal static fixed bin(17,0) initial dcl 7-78 real_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_bin_1_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_bin_2_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_bytealigned_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ls_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ts_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_4bit_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 9-25 real_type internal static bit(36) initial dcl 10-71 return_no_pop_offset internal static fixed bin(17,0) initial dcl 7-78 return_offset internal static fixed bin(17,0) initial dcl 7-78 runtime_bound based structure level 1 unaligned dcl 4-33 runtime_subrange_info based structure level 1 unaligned dcl 12-116 runtime_symbol based structure level 1 dcl 4-3 runtime_symbol_info_$brother 000000 constant entry external dcl 12-40 runtime_symbol_info_$father 000000 constant entry external dcl 12-38 runtime_symbol_info_$father_type 000000 constant entry external dcl 12-42 runtime_symbol_info_$n_variants 000000 constant entry external dcl 12-99 runtime_symbol_info_$name 000000 constant entry external dcl 12-48 runtime_symbol_info_$next 000000 constant entry external dcl 12-52 runtime_symbol_info_$son 000000 constant entry external dcl 12-44 runtime_symbol_info_$subrange 000000 constant entry external dcl 12-114 runtime_symbol_info_$successor 000000 constant entry external dcl 12-46 runtime_symbol_info_$variant 000000 constant entry external dcl 12-101 runtime_token based structure level 1 dcl 4-63 runtime_variant_info based structure level 1 dcl 12-103 sb automatic pointer dcl 7-24 stack_header_overlay based fixed bin(17,0) array dcl 7-94 storage_block_type internal static bit(36) initial dcl 10-71 structure_dtype internal static fixed bin(17,0) initial dcl 9-25 sym_bound based structure level 1 unaligned dcl 3-28 symbol_block based structure level 1 dcl 3-33 symbol_node based structure level 1 dcl 3-1 tv_offset internal static fixed bin(17,0) initial dcl 7-72 words_per_condition_var internal static fixed bin(31,0) initial dcl 10-5 words_per_entry_var internal static fixed bin(31,0) initial dcl 10-5 words_per_file_var internal static fixed bin(31,0) initial dcl 10-5 words_per_fix_bin_1 internal static fixed bin(31,0) initial dcl 10-5 words_per_fix_bin_2 internal static fixed bin(31,0) initial dcl 10-5 words_per_flt_bin_1 internal static fixed bin(31,0) initial dcl 10-5 words_per_flt_bin_2 internal static fixed bin(31,0) initial dcl 10-5 words_per_format internal static fixed bin(31,0) initial dcl 10-5 words_per_label_var internal static fixed bin(31,0) initial dcl 10-5 words_per_offset internal static fixed bin(31,0) initial dcl 10-5 words_per_packed_pointer internal static fixed bin(31,0) initial dcl 10-5 words_per_pointer internal static fixed bin(31,0) initial dcl 10-5 words_per_varying_string_header internal static fixed bin(31,0) initial dcl 10-5 NAMES DECLARED BY EXPLICIT CONTEXT. bitrel 001353 constant entry internal dcl 357 ref 132 297 case 000010 constant label array(0:15) dcl 189 ref 187 convert_ptr 001071 constant entry internal dcl 264 ref 231 convert_units 000450 constant entry internal dcl 134 ref 76 98 decode_value 000517 constant entry internal dcl 155 ref 73 89 94 faulty_ptr 001334 constant entry internal dcl 350 ref 328 345 get_arglist_ptr 001163 constant entry internal dcl 305 ref 227 get_basic_address 000554 constant entry internal dcl 169 ref 71 get_lp 001222 constant entry internal dcl 322 ref 211 218 257 get_runtime_address 000057 constant entry external dcl 24 get_static_ptr 001307 constant entry internal dcl 342 ref 208 215 295 get_tp 001256 constant entry internal dcl 333 ref 254 287 327 344 no 000444 constant label dcl 167 ref 189 191 195 204 221 225 230 260 262 295 300 312 328 338 345 365 units_case 000000 constant label array(0:7) dcl 144 set ref 142 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1646 1676 1516 1656 Length 2320 1516 30 406 130 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME get_runtime_address 405 external procedure is an external procedure. begin block on line 79 begin block shares stack frame of external procedure get_runtime_address. convert_units internal procedure shares stack frame of external procedure get_runtime_address. decode_value internal procedure shares stack frame of external procedure get_runtime_address. get_basic_address internal procedure shares stack frame of external procedure get_runtime_address. convert_ptr internal procedure shares stack frame of external procedure get_runtime_address. get_arglist_ptr internal procedure shares stack frame of external procedure get_runtime_address. get_lp internal procedure shares stack frame of external procedure get_runtime_address. get_tp internal procedure shares stack frame of external procedure get_runtime_address. get_static_ptr internal procedure shares stack frame of external procedure get_runtime_address. faulty_ptr internal procedure shares stack frame of external procedure get_runtime_address. bitrel internal procedure shares stack frame of external procedure get_runtime_address. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_runtime_address 000100 blk_pt get_runtime_address 000102 sym_pt get_runtime_address 000104 sp get_runtime_address 000106 lp get_runtime_address 000110 tp get_runtime_address 000112 rp get_runtime_address 000114 data_ptr get_runtime_address 000116 bo get_runtime_address 000117 address_info get_runtime_address 000123 code get_runtime_address 000124 arg_list_arg_count get_runtime_address 000125 sum get_runtime_address 000126 subs_x get_runtime_address 000127 address get_runtime_address 000130 bit_offset get_runtime_address 000131 word_offset get_runtime_address 000132 segno get_runtime_address 000133 pp get_runtime_address 000134 off get_runtime_address 000135 n_dims get_runtime_address 000136 array_info begin block on line 79 000352 unit_type convert_units 000362 drv decode_value 000363 ns_code decode_value 000372 storage_offset get_basic_address 000374 ap get_basic_address 000376 temp get_basic_address 000400 sw get_basic_address 000402 type_info get_basic_address 000422 an_itp_ptr convert_ptr 000424 reg convert_ptr 000426 basep convert_ptr 000430 embedded_text_ptr convert_ptr 000440 ap get_arglist_ptr 000450 ilp get_lp 000466 isp get_static_ptr THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out begin_return_mac return_mac mdfx1 ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. runtime_symbol_info_$address runtime_symbol_info_$array runtime_symbol_info_$array_dims runtime_symbol_info_$level runtime_symbol_info_$type stu_$decode_runtime_value_extended stu_$get_implicit_qualifier THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. pl1_operators_$VLA_words_per_seg_ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000050 34 000064 35 000070 36 000073 37 000076 38 000101 39 000104 66 000107 68 000112 69 000126 71 000134 73 000136 75 000144 76 000146 77 000160 78 000171 82 000200 84 000202 85 000217 87 000226 88 000227 89 000237 92 000265 93 000276 94 000300 96 000314 98 000322 107 000340 109 000345 113 000347 114 000355 115 000357 118 000364 121 000401 122 000404 123 000406 125 000417 129 000427 130 000431 132 000434 167 000444 134 000450 141 000452 142 000456 144 000457 145 000463 146 000466 147 000472 148 000476 149 000502 150 000505 151 000511 155 000517 161 000521 162 000550 169 000554 184 000556 186 000562 187 000565 189 000567 191 000570 193 000574 195 000601 197 000605 199 000613 203 000624 204 000645 206 000651 208 000655 211 000665 215 000676 218 000707 221 000721 223 000725 225 000733 227 000737 230 000741 231 000745 236 000757 237 000762 239 000764 240 001001 242 001007 247 001034 250 001040 251 001041 254 001047 257 001057 260 001067 262 001070 264 001071 279 001073 281 001077 284 001110 286 001112 287 001114 291 001125 293 001127 294 001132 295 001137 297 001143 300 001162 305 001163 308 001165 310 001175 312 001200 313 001204 314 001210 315 001211 316 001214 317 001217 322 001222 326 001224 327 001233 328 001245 329 001252 333 001256 335 001260 336 001267 337 001277 338 001306 342 001307 344 001311 345 001323 346 001330 350 001334 352 001336 357 001353 365 001355 366 001357 ----------------------------------------------------------- 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