COMPILATION LISTING OF SEGMENT alm_definitions_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 1010.0 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-10-01,JRGray), approve(86-10-01,MCR7507), 17* audit(86-10-27,RWaters), install(86-11-12,MR12.0-1202): 18* Modified to support the new "init"link" pseudo and to allow for 19* blocks that are to be joined to the definition section. 20* 2) change(86-11-14,JRGray), approve(86-11-14,MCR7568), 21* audit(86-11-21,RWaters), install(86-11-26,MR12.0-1228): 22* Modified to backpatch the address of definitions into entry sequences 23* associated with the 'ext_entry' pseudo-operation. 24* END HISTORY COMMENTS */ 25 26 27 alm_definitions_$assign_definitions: procedure; 28 29 /* Separated from postp2_, November 1970, R H Campbell. */ 30 /* Modified 2 December 1970, R H Campbell. */ 31 /* Modified for new object segment format March 31 1972, R F Mabee. */ 32 /* Entry fix_entries added 6 May 1972 by R F Mabee. */ 33 /* Last modified on 06/13/72 at 21:06:41 by R F Mabee. */ 34 /* This procedure is called to put out the 35* symbolic definition region (to either text or link). 36* The arrangement of the output information is determined by the 37* two flags tprot (for transfer vector and error call) and 38* tmvdef (for moving definitions to the linkage file). 39* Tprot should imply tmvdef. 40* If the definitions are to go in the linkage file, 41* a pre-pass must be made to assign locations 42* before the information is put out 43* because the links must be assigned first. */ 44 45 dcl (addr, bin, bit, convert, divide, index, hbound, length, mod, null, pointer, rel, string, substr, unspec) builtin; 46 /* AUTOMATIC VARIABLES */ 47 dcl iright fixed bin (18); 48 dcl irword; 49 dcl itemp; 50 dcl code fixed bin (35); 51 dcl cleanup condition; 52 dcl lnkorg; 53 dcl ndefs fixed bin static; 54 dcl htc fixed bin; 55 dcl htp (1) ptr; 56 dcl no_items bit (1); /* Flag to show no detail items printed for heading. */ 57 dcl nwrds fixed bin (26); 58 dcl rlkdef fixed bin; 59 dcl rright fixed bin (26); 60 dcl (j, k) pointer; 61 dcl (namlnk, symlnk) pointer; 62 dcl (rsydef, trp, val) fixed bin (26); 63 dcl (seg, xnam) bit (18); 64 65 dcl text_word(0:261119) fixed bin(35) based(eb_data_$segnfo.text); 66 67 dcl 1 symht based (htp (1)) aligned, 68 2 size fixed bin, 69 2 table (0 refer (symht.size)), 70 (3 defp bit (18), 71 3 pad bit (18)) unal; 72 73 declare 1 segname aligned, 74 2 acc_length bit (9) unaligned, 75 2 acc_string char (32) unaligned; 76 declare segname_overlay bit (297) aligned based (addr (segname)); 77 78 declare (backward_thread, zero_word_ptr, segname_def_blk) fixed bin; 79 /* Headings placed in listing (watch for form-feeds). */ 80 dcl ff_NAME_DEFINITIONS_FOR_ENTRY_POINTS_AND_SEGDEFS_nl static character (47) 81 aligned initial (" NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 82 "); 83 dcl nl_EXTERNAL_NAMES_nl static character (16) aligned initial (" 84 EXTERNAL NAMES 85 "); 86 dcl nl_HASH_TABLE_nl static char (24) aligned initial (" 87 DEFINITIONS HASH TABLE 88 "); 89 dcl nl_INTERNAL_EXPRESSION_WORDS_nl static character (27) aligned initial (" 90 INTERNAL EXPRESSION WORDS 91 "); 92 dcl nl_NO_EXTERNAL_NAMES static character (18) aligned initial (" 93 NO EXTERNAL NAMES"); 94 dcl nl_NO_TRAP_POINTER_WORDS static character (22) aligned initial (" 95 NO TRAP POINTER WORDS"); 96 dcl nl_TRAP_POINTER_WORDS_nl static character (20) aligned initial (" 97 TRAP POINTER WORDS 98 "); 99 dcl nl_TYPE_PAIR_BLOCKS_nl static character (18) aligned initial (" 100 TYPE PAIR BLOCKS 101 "); 102 /* EXTERNAL DATA */ 103 dcl (eb_data_$stnam, eb_data_$typr2 (5)) external fixed bin (26); 104 dcl eb_data_$lavptr external pointer; 105 /* EXTERNAL ENTRIES */ 106 dcl prlst_$prlst_ entry (character (*) aligned); 107 dcl prnam_$prnam_ entry (pointer); 108 dcl putout_$putblk entry (fixed bin (26), pointer, fixed bin (26), fixed bin (26), pointer); 109 dcl putout_$putwrd entry (fixed bin (26), fixed bin (26), fixed bin (26), fixed bin (26)); 110 dcl (get_temp_segments_, release_temp_segments_) entry (char (*), dim (*) ptr, fixed bin (35)); 111 dcl prnter_ entry (char (*)); 112 dcl prnter_$abort1 entry; 113 /* EXTERNAL FUNCTIONS */ 114 dcl twop18 static fixed bin (26) initial (1000000000000000000b); 115 /* INCLUDE FILES */ 116 1 1 /* Begin include file alm_lc.incl.pl1. */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-10-01,JRGray), approve(86-10-01,MCR7507), 1 5* audit(86-10-27,RWaters), install(86-11-12,MR12.0-1202): 1 6* Modified to add definition lc used to join blocks to the definition 1 7* section. 1 8* END HISTORY COMMENTS */ 1 9 1 10 /* Edited from several separate files, 4 November 1970, R H Campbell. */ 1 11 /* Modified 23 November 1970, R H Campbell. */ 1 12 /* Added location counter "lpentries" for new object segment format, 27 March 1972, R F Mabee. */ 1 13 /* Last modified on 03/27/72 at 23:16:58 by R F Mabee. */ 1 14 1 15 declare 1 eb_data_$curlc external, 1 16 2 curlc fixed bin (26); 1 17 1 18 declare 1 eb_data_$lccall external, 1 19 2 lpcall fixed bin (26), 1 20 2 lccall (2) fixed bin (26); 1 21 1 22 declare 1 eb_data_$lccom external, 1 23 2 ulclst fixed bin (26), 1 24 2 ulcend fixed bin (26), 1 25 2 tlclst fixed bin (26), 1 26 2 llclst fixed bin (26), 1 27 2 slclst fixed bin (26), 1 28 2 dlclst fixed bin (26); 1 29 1 30 declare 1 eb_data_$lcdefs external, 1 31 2 lpdefs fixed bin (26), 1 32 2 lcdefs (2) fixed bin (26); 1 33 1 34 declare 1 eb_data_$lcentries external, 1 35 2 lpentries fixed bin(26), 1 36 2 lcentries (2) fixed bin (26); 1 37 1 38 declare 1 eb_data_$lchead external, 1 39 2 lphead fixed bin (26), 1 40 2 lchead (2) fixed bin (26); 1 41 1 42 declare 1 eb_data_$lclit external, 1 43 2 lplit fixed bin (26), 1 44 2 lclit (2) fixed bin (26); 1 45 1 46 declare 1 eb_data_$lcrlk external, 1 47 2 lprlk fixed bin (26), 1 48 2 lcrlk (2) fixed bin (26); 1 49 1 50 declare 1 eb_data_$lcrst external, 1 51 2 lprst fixed bin (26), 1 52 2 lcrst (2) fixed bin (26); 1 53 1 54 declare 1 eb_data_$lcrtx external, 1 55 2 lprtx fixed bin (26), 1 56 2 lcrtx (2) fixed bin (26); 1 57 1 58 declare 1 eb_data_$lcsect external, 1 59 2 lpsect fixed bin(26), 1 60 2 lcsect (2) fixed bin(26); 1 61 1 62 declare 1 eb_data_$lcst external, 1 63 2 lpst fixed bin (26), 1 64 2 lcst (2) fixed bin (26); 1 65 1 66 declare 1 eb_data_$lctext external, 1 67 2 lptext fixed bin (26), 1 68 2 lctext (2) fixed bin (26); 1 69 1 70 declare 1 eb_data_$lctv external, 1 71 2 lptv fixed bin (26), 1 72 2 lctv (2) fixed bin (26); 1 73 1 74 /* End of include file alm_lc.incl.pl1. */ 117 118 2 1 /* Begin include file alm_list_beads.incl.pl1. */ 2 2 /* Created 19 November 1970, R H Campbell. */ 2 3 /* Modified 25 November 1970, R H Campbell. */ 2 4 /* Added entry_bead_ptr to external_definition_bead for new object segment format, 30 April 1972, R F Mabee. */ 2 5 /* Last modified on 04/30/72 at 23:40:00 by R F Mabee. */ 2 6 2 7 declare 1 acc based aligned, /* ACC format string for symbol name. */ 2 8 2 lg bit (9) unaligned, /* The length. */ 2 9 2 cs character (31) unaligned; /* The string. */ 2 10 2 11 declare 1 call_out_bead based aligned, /* Mastermode callout link list bead. */ 2 12 2 (kind, next) bit (18) unaligned, /* Kind of bead (3), rel ptr to next bead. */ 2 13 2 (expression, modifier) bit (18) unaligned, /* Rel ptr to expression bead, modifier. */ 2 14 2 (type_pair, transfer_vector_no) bit (18) unaligned, /* Rel ptr to type pair bead, ? */ 2 15 2 (call_pc, crh) bit (18) unaligned, /* Location of call, ? */ 2 16 2 (clh, inhibit) bit (18) unaligned; /* ? inhibit bit. */ 2 17 2 18 declare 1 entry_bead based aligned, /* Entry interlude link list bead. */ 2 19 2 (kind, next) bit (18) unaligned, /* Kind of bead (2), rel ptr to next bead. */ 2 20 2 (link_no, transfer_vector_no) bit (18) unaligned, /* ? */ 2 21 2 (transfer_vector, inhibit) bit (18) unaligned; /* Rel ptr to transfer vector bead, inhibit bit. */ 2 22 2 23 declare 1 expression_bead based aligned, /* Expression list bead. */ 2 24 2 (location, next) bit (18) unaligned, /* Location of output expression word, rel ptr to next bead. */ 2 25 2 (type_pair, expression) bit (18) unaligned, /* Rel ptr to type pair bead, expression value. */ 2 26 2 (clh, location_counter) bit (18) unaligned; /* ? */ 2 27 2 28 declare 1 external_definition_bead based aligned, /* External definition list bead. */ 2 29 2 (name, next) bit (18) unaligned, /* Rel ptr to name list bead, rel ptr to next bead. */ 2 30 2 (location, class) bit (18) unaligned, /* ? */ 2 31 2 (trap, location_counter) bit (18) unaligned, /* Rel ptr to trap list bead, ? */ 2 32 2 entry_bead_ptr bit (18) unaligned; /* Non-zero if defines entry. */ 2 33 2 34 declare 1 link_bead based aligned, /* Element of link list. */ 2 35 2 (kind, next) bit (18) unaligned, /* Kind of bead (1), rel ptr to next bead. */ 2 36 2 (expression, modifier) bit (18) unaligned; /* Rel ptr to expression bead, modifier field. */ 2 37 2 38 declare 1 literal_bead based aligned, /* Literal list bead. */ 2 39 2 (location, next) bit (18) unaligned, /* "Load address" of literal, rel ptr to next bead. */ 2 40 2 (location_counters, size) bit (18) unaligned, /* Rel ptr to location counter rel ptrs, size in words. */ 2 41 2 words (10), /* The literal. */ 2 42 3 (left, right) bit (18) unaligned; /* Separate relocatable halves. */ 2 43 2 44 declare 1 location_counter_bead based aligned, /* Symbol table bucket list bead for location counter name. */ 2 45 2 (symbol, next) bit (18) unaligned, /* Rel ptr to symbol name, rel ptr to next bead. */ 2 46 2 (flags, value) bit (18) unaligned, /* Symbol flags, current value. */ 2 47 2 (left_join, right_join) bit (18) unaligned, /* Rel ptrs to joined location counter beads. */ 2 48 2 (origin, max_value) bit (18) unaligned, /* Lowest value, highest value. */ 2 49 2 (mod_value, section) bit (18) unaligned; /* Indicator for rounding origin, section in which it occurs. */ 2 50 2 51 declare 1 location_counters (10) based aligned, /* Location counter rel ptrs for relocatable literals. */ 2 52 2 (left, right) bit (18) unaligned; /* One for each half word. */ 2 53 2 54 declare 1 name_bead based aligned, /* Name list bead. */ 2 55 2 (name, next) bit (18) unaligned, /* Rel ptr to name, rel ptr to next bead. */ 2 56 2 (section, location) bit (18) unaligned; /* ? */ 2 57 2 58 declare 1 statement_bead based aligned, /* "Collation tape" list bead. */ 2 59 2 (value, next) bit (18) unaligned, /* Value of current location counter, rel ptr to next bead. */ 2 60 2 flags bit (36), /* Flags for this statement. */ 2 61 2 location_counter bit (18); /* Rel ptr to active location counter bead. */ 2 62 2 63 declare 1 symbol_bead based aligned, /* Symbol table hashcode bucket list bead. */ 2 64 2 (symbol, next) bit (18) unaligned, /* Rel ptr to symbol name, rel ptr to next bead. */ 2 65 2 (flags, value) bit (18) unaligned, /* Symbol flags, symbol value. */ 2 66 2 location_counter bit (18); /* Rel ptr to related location counter bead. */ 2 67 2 68 declare 1 transfer_vector_bead based aligned, /* Transfer vector list bead. */ 2 69 2 (clh, next) bit (18) unaligned, /* ?, rel ptr to next bead. */ 2 70 2 (transfer_vector_no, location) bit (18) unaligned, /* ? */ 2 71 2 (location_counter, inhibit) bit (18) unaligned; /* ? inhibit bit. */ 2 72 2 73 declare 1 trap_bead based aligned, /* Trap list bead. */ 2 74 2 (location, next) bit (18) unaligned, /* Location of output trap word, rel ptr to next bead. */ 2 75 2 (call, argument) bit (18) unaligned; /* Rel ptr to call link bead, rel ptr to argument link bead. */ 2 76 2 77 declare 1 type_pair_bead based aligned, /* Type pair list bead. */ 2 78 2 (location, next) bit (18) unaligned, /* Location of output type pair words, rel ptr to next bead. */ 2 79 2 (type, trap) bit (18) unaligned, /* Type of link, rel ptr to trap list bead. */ 2 80 2 (segment, symbol) bit (18) unaligned; /* Rel ptrs to name list beads for segment, symbol. */ 2 81 2 82 /* End of include file alm_list_beads.incl.pl1. */ 119 120 121 /* miscellaneous whole words for use with relocation processing */ 122 3 1 /* Begin include file alm_relocation_bits.incl.pl1. */ 3 2 /* Created 5 November 1970, R H Campbell. */ 3 3 /* Modified 19 November 1970, R H Campbell. */ 3 4 /* Last modified on 04/30/72 at 23:54:51 by R F Mabee. */ 3 5 3 6 declare (iabsol initial (0b), /* Absolute. */ 3 7 itext initial (10000b), /* Text. */ 3 8 imtext initial (10001b), /* Negative text. */ 3 9 ilink initial (10010b), /* Link segment. */ 3 10 imlink initial (10011b), /* Negative link segment. */ 3 11 ilkptr initial (10100b), /* Linkage pointer. */ 3 12 idefpt initial (10101b), /* Definitialion pointer. */ 3 13 isymbl initial (10110b), /* Symbol. */ 3 14 imsymb initial (10111b), /* Negative symbol. */ 3 15 ilblok initial (11000b), /* Linkage block. */ 3 16 imblok initial (11001b), /* Negative linkage block. */ 3 17 iselfr initial (11010b), /* Self relative. */ 3 18 iresv1 initial (11011b), /* Unused. */ 3 19 iresv2 initial (11100b), /* Unused. */ 3 20 iresv3 initial (11101b), /* Unused. */ 3 21 iresv4 initial (11110b), /* Unused. */ 3 22 iescap initial (11111b)) static fixed bin; /* Escape. */ 3 23 3 24 declare (iltext initial (10000000000000000000000b), /* glwrd (itext, 0) */ 3 25 illink initial (10010000000000000000000b), /* glwrd (ilink, 0) */ 3 26 ilmlnk initial (10011000000000000000000b), /* glwrd (imlink, 0) */ 3 27 ilsymb initial (10110000000000000000000b), /* glwrd (isymbl, 0) */ 3 28 ildefs initial (10101000000000000000000b)) static fixed bin (26); /* glwrd (idefpt, 0) */ 3 29 3 30 declare ibits (0: 2) static fixed bin initial (10000b, 10010b, 10110b); /* itext, ilink, isymbl */ 3 31 3 32 /* end alm_relocation_bits. */ 123 124 4 1 4 2 4 3 4 4 /* include file for CONCOM */ 4 5 4 6 declare 1 eb_data_$concom ext aligned, 4 7 2 (ap, ab, bp, bb, lp, lb, sp, sb, 4 8 clunk, clint, clext, clbas, clstk, clndx, clmlc, fdef, 4 9 fmul, fphs, fset, frel, fabs, fbol, fcom, find, 4 10 flocrf, fequrf, fbolrf, fsetrf, fbasrf, fsegrf, fstkrf, fndxrf, 4 11 fmlcrf, onesev, twosev, thrsev, forsev, fivsev, sixsev, allsev, 4 12 symbas(8),mir, mri, mdu, mdl, mx0, mx1, mpc, 4 13 mpci, mfi, mits, mitb, ixtern, intern, iassgn, iserch, 4 14 ixvrvl, ixvrvp, invrvl, invrvp, ibvrvl, ibvrvp, iaccvl, iacivl, 4 15 mcmpq, mcmpx0, mldaq, mldq, mldx0, mnopdu, mstcd, mtra, 4 16 mtnc, mtnz, meabsp, meapap, meapbp, meaplp, meapsp, mstpap, 4 17 mstpbp, mstplp, mstpsp, i1542, i642, i3333, i66, ibb, 4 18 ibsp, nullf, smxer(2), sentry(2),sretrn(2), dzero(2) ) fixed bin (26) aligned ; 4 19 4 20 /* end of the include file for CONCOM */ 125 126 5 1 /* BEGIN INCLUDE FILE segnfo.incl.pl1 for alm (see also segnfo.incl.alm) */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(86-10-01,JRGray), approve(86-10-01,MCR7507), 5 6* audit(86-10-27,RWaters), install(86-11-12,MR12.0-1202): 5 7* Modified to keep a ptr to the list FCB. This is part of the fix that 5 8* removes PAD characters from the listing segment. 5 9* END HISTORY COMMENTS */ 5 10 5 11 declare 1 eb_data_$segnfo ext aligned, 5 12 2 (text, source, list, list_fcb, scrtch) ptr aligned, 5 13 2 (txtlen, srclen, lstlen) fixed bin (26) aligned; 5 14 5 15 /* END INCLUDE FILE segnfo.incl.pl1 */ 127 128 129 /* common for symbol table header processing. */ 130 6 1 /* Include file sthedr.incl.pl1. 6 2* This file declares old and new versions of symbol table headers. 6 3* Last modified on 06/20/72 at 18:51:18 by R F Mabee. */ 6 4 6 5 6 6 6 7 /****^ HISTORY COMMENTS: 6 8* 1) change(88-08-02,JRGray), approve(88-08-05,MCR7952), 6 9* audit(88-09-30,WAAnderson), install(88-10-17,MR12.2-1169): 6 10* Modified to make area_offset externally available. This is part of 6 11* Symbol Table Support. 6 12* END HISTORY COMMENTS */ 6 13 6 14 6 15 /* Declarations for old object segment format symbol table header. */ 6 16 6 17 declare sthedr_$sthedr_ ext aligned; 6 18 6 19 declare (sthedr_$alm_creation_date, sthedr_$time_of_translation) ext fixed bin (71) aligned; 6 20 6 21 declare sthedr_$seg_name ext char (32) aligned; 6 22 6 23 declare 1 sthedr_$text_and_link_lengths ext aligned, 6 24 2 text_length bit (18) unaligned, 6 25 2 link_length bit (18) unaligned; 6 26 6 27 declare sthedr_$hdrlen ext fixed bin (26) aligned; 6 28 6 29 /* Declarations for new object segment format symbol table header. */ 6 30 6 31 declare new_sthedr_$new_sthedr_ ext aligned; 6 32 6 33 declare (new_sthedr_$alm_creation_date, new_sthedr_$time_of_translation) ext fixed bin (71) aligned; 6 34 6 35 declare new_sthedr_$alm_version_name ext char (32) aligned; 6 36 6 37 declare new_sthedr_$user_id ext char (32) aligned; 6 38 6 39 declare new_sthedr_$comment ext char (64) aligned; 6 40 6 41 declare 1 new_sthedr_$text_and_link_boundaries ext aligned, 6 42 2 text_boundary bit (18) unaligned, 6 43 2 link_boundary bit (18) unaligned; 6 44 6 45 declare 1 new_sthedr_$source_and_area ext aligned, 6 46 2 source_map_offset bit (18) unaligned, 6 47 2 area_offset bit (18) unaligned; 6 48 6 49 declare 1 new_sthedr_$block_size ext aligned, 6 50 2 padding bit (18) unaligned, 6 51 2 block_size bit (18) unaligned; 6 52 6 53 declare 1 new_sthedr_$rel_bits_ptrs ext aligned, 6 54 2 padding bit (18) unaligned, 6 55 2 rel_text bit (18) unaligned, 6 56 2 rel_def bit (18) unaligned, 6 57 2 rel_link bit (18) unaligned, 6 58 2 rel_symbol bit (18) unaligned, 6 59 2 other_bits bit (18) unaligned; 6 60 6 61 declare 1 new_sthedr_$truncate_info ext aligned, 6 62 2 padding bit (18) unaligned, 6 63 2 default_truncate bit (18) unaligned, 6 64 2 optional_truncate bit (18) unaligned, 6 65 2 other_bits bit (18) unaligned; 6 66 6 67 declare new_sthedr_$hdrlen ext fixed bin (26) aligned; 6 68 6 69 declare new_sthedr_$relocinfo ext aligned; 6 70 6 71 /* End of the include file sthedr.incl.pl1 */ 131 132 7 1 /* Begin include file varcom.incl.pl1. */ 7 2 /* RHG added new variables 9/7/70. */ 7 3 /* RFM added new cells for new object segment format and first-reference trap, 27 March 1972. */ 7 4 /* RFM added include file stuff, then cross referencer stuff, 23 July 1972. */ 7 5 /* Last modified on 07/23/72 at 04:19:25 by R F Mabee. */ 7 6 7 7 declare 1 eb_data_$varcom external aligned, 7 8 2 (brk(2), nbrk(2), sym(8), dsym(8),old_locsym, pc, spc, tpc, 7 9 pclst, p2pcl, old_ndpcls, tvorg, tvcnt, tvlth, litorg, 7 10 litc, deforg, defc, defcnt, stkc, lnkc, lnkno, 7 11 litlst, old_ndltls, lnklst, old_ndlkls, explst, blklst, namlst, 7 12 trplst, xdflst, tvlst, begin_line, tpass1, tpass2, tpostp, 7 13 tinhib, tmmode, txonly, tmm2, txo2, tprot, tcall, 7 14 tmvdef, tpulnk, tfatal, calrho, lreter, passwd, binlin, 7 15 nboxes, box(0:210), myfil, mynam, myblk, mylnk, tpost1 ) fixed bin (26) , 7 16 2 source_printed bit(1) aligned, 7 17 2 (ndpcls, ndltls, ndlkls, ndtvls) ptr, 7 18 2 (basno, value, admod, b29, iaddr, symlnk ) fixed bin (26), 7 19 2 (itxtmod, ilnkmod, entrieslc, include_file_list, include_index, 7 20 first_ref_trap_proc_linkno, first_ref_trap_arg_linkno, 7 21 text_section_length) fixed binary (26), 7 22 2 (include_info_stack, include_name_list_base, include_name_list_top) pointer, 7 23 2 symbol_tree_rel fixed binary (26); 7 24 7 25 /* End of the include file varcom.incl.pl1. */ 133 134 135 /* END OF DECLARATIONS */ 136 /* */ 137 /* initialize defc to 21 */ 138 /* to account for the 21 words required by symbol table, */ 139 /* rel_text, rel_link, and rel_symbol definitions. */ 140 defc = 21; 141 /* put code of 1 in 5th word of lpdefs node since now */ 142 /* in link segment - as defs are in .link. */ 143 pointer (eb_data_$lavptr, lpdefs) -> location_counter_bead.section = "000000000000000001"b; /* eb_data_$ilink */ 144 /* assign map, entries, and segdefs. */ 145 j = pointer (eb_data_$lavptr, xdflst); 146 do while (rel (j)); 147 defc = defc + 2; 148 j = pointer (eb_data_$lavptr, j -> external_definition_bead.next); 149 end; 150 defc = defc + 1; 151 /* Assign other names in name list. */ 152 j = pointer (eb_data_$lavptr, namlst); 153 do while (rel (j)); 154 defc = defc + divide (bin (pointer (eb_data_$lavptr, j -> name_bead.name) -> acc.lg, 9) + 4, 4, 26, 0); 155 j = pointer (eb_data_$lavptr, j -> name_bead.next); 156 end; 157 /* assign trap words. */ 158 j = pointer (eb_data_$lavptr, trplst); 159 do while (rel (j)); 160 j -> trap_bead.location = bit (bin (defc, 18), 18); 161 defc = defc + 1; 162 j = pointer (eb_data_$lavptr, j -> trap_bead.next); 163 end; 164 /* assign type - pair blocks. */ 165 j = pointer (eb_data_$lavptr, blklst); 166 do while (rel (j)); 167 defc = defc + 2; 168 j = pointer (eb_data_$lavptr, j -> type_pair_bead.next); 169 end; 170 /* assign expression words. */ 171 j = pointer (eb_data_$lavptr, explst); 172 do while (rel (j)); 173 j -> expression_bead.location = bit (bin (defc, 18), 18); 174 defc = defc + 1; 175 j = pointer (eb_data_$lavptr, j -> expression_bead.next); 176 end; 177 /* set defcnt, and go to put out links. */ 178 defcnt = defc; 179 return; /* Return to caller. */ 180 /* */ 181 alm_definitions_$fix_entries: entry; 182 183 /* This entry is used to calculate where definitions for entry points will be placed 184* so the entry sequences can reference them as required by new object segment format. */ 185 186 defc = 7; /* 3-header, 3-segname def'n, 1-first word of acc segname string. */ 187 itemp = index (sthedr_$seg_name, " ") - 1; 188 if itemp < 0 then itemp = length (sthedr_$seg_name); 189 defc = defc + divide (itemp, 4, 26, 0); /* Rest of acc segname string. */ 190 191 j = pointer (eb_data_$lavptr, xdflst); 192 ndefs = 0; 193 do while (rel (j)); 194 k = pointer (eb_data_$lavptr, j -> external_definition_bead.entry_bead_ptr); 195 if rel (k) then k -> entry_bead.link_no = bit (bin (defc, 18)); 196 defc = defc + 3; 197 k = pointer (eb_data_$lavptr, j -> external_definition_bead.name); 198 k = pointer (eb_data_$lavptr, k -> name_bead.name); 199 defc = defc + divide (bin (k -> acc.lg, 9) + 4, 4, 26, 0); 200 j = pointer (eb_data_$lavptr, j -> external_definition_bead.next); 201 ndefs = ndefs + 1; 202 end; 203 204 defc = defc + 7; /* 7 words for symbol_table def */ 205 return; 206 /* */ 207 alm_definitions_$emit_definitions: /* part 2, put out definition words. */ 208 entry (lnkorg, rlkdef, rsydef); /* Returns place to store defs. of rel_link and rel_symbol. */ 209 call prlst_$prlst_ (ff_NAME_DEFINITIONS_FOR_ENTRY_POINTS_AND_SEGDEFS_nl); 210 htc = defc; 211 defc = 0; 212 curlc = lpdefs; 213 214 call putout_$putwrd (defc, (defc + 3) * twop18, i66, ildefs); /* definitions header. */ 215 call putout_$putwrd (defc, htc * twop18 + 110000000000000000b, i66, ildefs); 216 /* Unused bits in definitions header must have ignore flag. */ 217 218 zero_word_ptr = defc; /* Convenient word full of zeros. */ 219 call putout_$putwrd (defc, 0, i66, 0); 220 221 backward_thread = zero_word_ptr; /* End of thread, zero word. */ 222 223 segname_def_blk = defc; /* Address of class-3 segname definition. */ 224 segname_overlay = ""b; 225 itemp = index (sthedr_$seg_name, " ") - 1; 226 if itemp < 0 then itemp = length (sthedr_$seg_name); 227 segname.acc_length = bit (bin (itemp, 9)); 228 substr (segname.acc_string, 1, itemp) = sthedr_$seg_name; 229 nwrds = divide (itemp, 4, 26, 0) + 1; 230 call putout_$putwrd (defc, (3 + nwrds + defc) * twop18 + backward_thread, i66, ildefs + idefpt); 231 /* class-3, segname definition. */ 232 call putout_$putwrd (defc, zero_word_ptr * twop18 + 100000000000000011b, i66, ildefs); 233 call putout_$putwrd (defc, (defc + 1) * twop18 + defc + 1 + nwrds, i66, ildefs + idefpt); 234 call putout_$putblk (defc, addr (segname), i3333, nwrds, null ()); 235 236 /* create the definitions hash table tmeplate */ 237 on cleanup 238 call release_temp_segments_ ("ALM definitions hash table", htp, code); 239 call get_temp_segments_ ("ALM definitions hash table", htp, code); 240 if code ^= 0 then do; 241 call prnter_ (" 242 Unable to make definitions hash table template segment. 243 "); 244 call prnter_$abort1 (); 245 end; 246 symht.size = hlen (ndefs); 247 248 /* put out map and entry and segdef names. */ 249 backward_thread = segname_def_blk; 250 j = pointer (eb_data_$lavptr, xdflst); 251 do while (rel (j)); 252 namlnk = pointer (eb_data_$lavptr, j -> external_definition_bead.name); 253 symlnk = pointer (eb_data_$lavptr, namlnk -> name_bead.name); 254 nwrds = divide (bin (symlnk -> acc.lg, 9) + 4, 4, 17); 255 val = convert (val, j -> external_definition_bead.location); 256 k = pointer (eb_data_$lavptr, j -> external_definition_bead.location_counter); 257 if rel (k) then 258 do; 259 val = val + bin (k -> location_counter_bead.origin, 18); 260 irword = bin (k -> location_counter_bead.section, 18); 261 end; 262 263 if bin(j -> external_definition_bead.class, 18) > 7 then do; 264 text_word(val-1) = text_word(val-1) + twop18 * defc; 265 end; 266 val = val * twop18 + bin (j -> external_definition_bead.class, 18); 267 268 trp = backward_thread + twop18; 269 backward_thread = defc; 270 rright = idefpt; 271 val = val + 100000000000000000b; 272 if j -> external_definition_bead.entry_bead_ptr then val = val + 001000000000000000b; 273 274 call hash (); 275 276 call putout_$putwrd (defc, (2 + nwrds + defc) * twop18 + trp, i66, ildefs + rright); 277 call putout_$putwrd (defc, val, i66, ibits (irword) * twop18); 278 call putout_$putwrd (defc, (defc + 1) * twop18 + segname_def_blk, i66, ildefs + idefpt); 279 280 /* Save name address in case it is used in a link reference. See "EXTERNAL NAMES" stuff. */ 281 namlnk -> name_bead.section = "000000000000000001"b; 282 namlnk -> name_bead.location = bit (bin (defc, 18), 18); 283 284 call prnam_$prnam_ (symlnk); 285 call putout_$putblk (defc, symlnk, i3333, nwrds, null); 286 j = pointer (eb_data_$lavptr, j -> external_definition_bead.next); 287 end; 288 289 /* produce the header definition. */ 290 symlnk = addr (eb_data_$stnam); 291 call hash (); 292 293 val = zero_word_ptr * twop18 + backward_thread; 294 rright = idefpt; 295 call putout_$putwrd (defc, val, i66, ildefs + rright); 296 val = bin (pointer (eb_data_$lavptr, lprtx) -> location_counter_bead.origin, 18) * twop18 + 2; 297 val = val + 100000000000000000b; 298 call putout_$putwrd (defc, val, i66, ilsymb); 299 call putout_$putwrd (defc, (defc + 1) * twop18 + segname_def_blk, i66, ildefs + idefpt); 300 call prnam_$prnam_ (symlnk); 301 call putout_$putblk (defc, symlnk, i3333, 4, null); 302 303 /* put out the definitions hash table */ 304 call prlst_$prlst_ (nl_HASH_TABLE_nl); 305 call putout_$putwrd (defc, bin (symht.size, 26), i66, 0); 306 do itemp = 1 to symht.size; 307 unspec (val) = string (symht.table (itemp)); 308 if symht.defp (itemp) then 309 call putout_$putwrd (defc, val, i66, ildefs); 310 else 311 call putout_$putwrd (defc, val, i66, 0); 312 end; 313 call release_temp_segments_ ("ALM definitions hash table", htp, code); 314 315 /* punch out all other assigned names. */ 316 no_items = "1"b; /* Set flag: we haven't printed anything yet. */ 317 j = pointer (eb_data_$lavptr, namlst); 318 do while (rel (j)); 319 if j -> name_bead.section = ""b then /* Was name already put out in segdef's? If not, put it out now. */ 320 do; 321 if no_items then /* Have we printed the heading yet? */ 322 call prlst_$prlst_ (nl_EXTERNAL_NAMES_nl); 323 no_items = ""b; /* Clear flag. */ 324 symlnk = pointer (eb_data_$lavptr, j -> name_bead.name); 325 nwrds = divide (bin (symlnk -> acc.lg, 9) + 4, 4, 17); 326 j -> name_bead.location = bit (bin (defc, 18), 18); 327 call prnam_$prnam_ (symlnk); 328 call putout_$putblk (defc, symlnk, i3333, nwrds, null); 329 end; 330 j = pointer (eb_data_$lavptr, j -> name_bead.next); 331 end; 332 if no_items then /* Were any names printed? */ 333 call prlst_$prlst_ (nl_NO_EXTERNAL_NAMES); 334 335 /* punch out trap pointer words. */ 336 if (trplst = 0) then 337 call prlst_$prlst_ (nl_NO_TRAP_POINTER_WORDS); 338 else 339 do; 340 call prlst_$prlst_ (nl_TRAP_POINTER_WORDS_nl); 341 j = pointer (eb_data_$lavptr, trplst); 342 do while (rel (j)); 343 iright = convert (iright, j -> trap_bead.argument); /* Get link number of argument. */ 344 rright = 0; /* Assume no argument supplied. */ 345 if iright ^= 0 then /* Was there, in fact, one? */ 346 do; /* Yes. */ 347 iright = iright + lnkorg; /* Yes make up pointer to link location. */ 348 rright = ilblok; /* Set up relocation bits. */ 349 end; 350 j -> trap_bead.location = bit (bin (defc, 18), 18); 351 call putout_$putwrd (defc, 352 (bin (j -> trap_bead.call, 18) + lnkorg) * twop18 + iright, 353 i66, ilblok * twop18 + rright); 354 j = pointer (eb_data_$lavptr, j -> trap_bead.next); 355 end; 356 end; 357 358 /* punch out type - pair blocks. */ 359 call prlst_$prlst_ (nl_TYPE_PAIR_BLOCKS_nl); 360 j = pointer (eb_data_$lavptr, blklst); 361 do while (rel (j)); 362 j -> type_pair_bead.location = bit (bin (defc, 18), 18); 363 trp = convert (trp, j -> type_pair_bead.trap); 364 rright = 0; 365 if (trp ^= 0) then do; 366 rright = idefpt; 367 if (fixed(j->type_pair_bead.type,18) = 5) then do; 368 rright = 27; /* 33 octal special defn reloc */ 369 trp = trp - 1; /* 1 was added to allow for special rel of 0 */ 370 end; 371 else trp = convert (trp, pointer (eb_data_$lavptr, trp) -> trap_bead.location); 372 end; 373 itemp = convert (itemp, j -> type_pair_bead.type); 374 call putout_$putwrd (defc, itemp * twop18 + trp, i66, rright); 375 seg = j -> type_pair_bead.segment; 376 if itemp = 3 then 377 go to type_3_or_4; 378 if itemp = 4 then /* */ 379 type_3_or_4: seg = pointer (eb_data_$lavptr, seg) -> name_bead.location; 380 xnam = j -> type_pair_bead.symbol; 381 if xnam then 382 xnam = pointer (eb_data_$lavptr, xnam) -> name_bead.location; 383 call putout_$putwrd (defc, bin (seg || xnam, 26), i66, eb_data_$typr2 (itemp)); 384 j = pointer (eb_data_$lavptr, j -> type_pair_bead.next); 385 end; 386 387 /* punch out internal expression words. */ 388 call prlst_$prlst_ (nl_INTERNAL_EXPRESSION_WORDS_nl); 389 j = pointer (eb_data_$lavptr, explst); 390 do while (rel (j)); 391 j -> expression_bead.location = bit (bin (defc, 18), 18); 392 val = convert (val, j -> expression_bead.expression); 393 k = pointer (eb_data_$lavptr, j -> expression_bead.location_counter); 394 rright = 0; 395 if rel (k) then 396 do; 397 val = val + bin (k -> location_counter_bead.origin, 18); 398 rright = ibits (bin (k -> location_counter_bead.section, 18)); 399 end; 400 call putout_$putwrd (defc, 401 bin (pointer (eb_data_$lavptr, 402 j -> expression_bead.type_pair) -> type_pair_bead.location, 18) * twop18 + val, 403 i66, ildefs + rright); 404 j = pointer (eb_data_$lavptr, j -> expression_bead.next); 405 end; 406 407 /* */ 408 409 hlen: proc (s) returns (fixed bin); 410 411 dcl s fixed bin; /* required hash buckets */ 412 413 dcl s1 fixed bin, /* minimum hash table size desired */ 414 i fixed bin; /* iteration variable */ 415 416 dcl sizes (11) fixed bin static options (constant) init 417 (13, 27, 53, 89, 157, 307, 503, 733, 1009, 1451, 2003); 418 419 420 s1 = s * 1.25e0; /* Allow for 25% of buckets to be empty. */ 421 do i = 1 to hbound (sizes, 1); /* Pick an appropriate sizes. */ 422 if s1 <= sizes (i) then 423 return (sizes (i)); 424 end; 425 return (s1); /* Default for very large hash tables. */ 426 427 428 end hlen; 429 430 431 432 hash: proc; 433 434 dcl word fixed bin (35) based; /* first word of name */ 435 436 437 itemp = mod (symlnk -> word, symht.size) + 1; 438 do while (symht.defp (itemp)); 439 itemp = mod (itemp, symht.size) + 1; 440 end; 441 symht.defp (itemp) = bit (bin (defc, 18)); 442 443 444 end hash; 445 446 447 448 end alm_definitions_$assign_definitions; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 0938.3 alm_definitions_.pl1 >spec>install>1170>alm_definitions_.pl1 117 1 11/12/86 1103.0 alm_lc.incl.pl1 >ldd>include>alm_lc.incl.pl1 119 2 01/12/79 1050.3 alm_list_beads.incl.pl1 >ldd>include>alm_list_beads.incl.pl1 123 3 10/21/74 1243.0 alm_relocation_bits.incl.pl1 >ldd>include>alm_relocation_bits.incl.pl1 125 4 10/21/74 1243.0 concom.incl.pl1 >ldd>include>concom.incl.pl1 127 5 11/12/86 1103.0 segnfo.incl.pl1 >ldd>include>segnfo.incl.pl1 131 6 10/17/88 0926.0 sthedr.incl.pl1 >ldd>include>sthedr.incl.pl1 133 7 10/21/74 1242.9 varcom.incl.pl1 >ldd>include>varcom.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. acc based structure level 1 dcl 2-7 acc_length 000136 automatic bit(9) level 2 packed packed unaligned dcl 73 set ref 227* acc_string 0(09) 000136 automatic char(32) level 2 packed packed unaligned dcl 73 set ref 228* addr builtin function dcl 45 ref 224 234 234 290 argument 1(18) based bit(18) level 2 packed packed unaligned dcl 2-73 ref 343 backward_thread 000147 automatic fixed bin(17,0) dcl 78 set ref 221* 230 249* 268 269* 293 bin builtin function dcl 45 ref 154 160 173 195 199 227 254 259 260 263 266 282 296 305 305 325 326 350 351 362 383 383 391 397 398 400 441 bit builtin function dcl 45 ref 160 173 195 227 282 326 350 362 391 441 blklst 53 000140 external static fixed bin(26,0) level 2 dcl 7-7 ref 165 360 call 1 based bit(18) level 2 packed packed unaligned dcl 2-73 ref 351 class 1(18) based bit(18) level 2 packed packed unaligned dcl 2-28 ref 263 266 cleanup 000104 stack reference condition dcl 51 ref 237 code 000103 automatic fixed bin(35,0) dcl 50 set ref 237* 239* 240 313* convert builtin function dcl 45 ref 255 343 363 371 373 392 curlc 000124 external static fixed bin(26,0) level 2 dcl 1-15 set ref 212* defc 41 000140 external static fixed bin(26,0) level 2 dcl 7-7 set ref 140* 147* 147 150* 150 154* 154 160 161* 161 167* 167 173 174* 174 178 186* 189* 189 195 196* 196 199* 199 204* 204 210 211* 214* 214 215* 218 219* 223 230* 230 232* 233* 233 233 234* 264 269 276* 276 277* 278* 278 282 285* 295* 298* 299* 299 301* 305* 308* 310* 326 328* 350 351* 362 374* 383* 391 400* 441 defcnt 42 000140 external static fixed bin(26,0) level 2 dcl 7-7 set ref 178* defp 1 based bit(18) array level 3 packed packed unaligned dcl 67 set ref 308 438 441* divide builtin function dcl 45 ref 154 189 199 229 254 325 eb_data_$concom 000132 external static structure level 1 dcl 4-6 eb_data_$curlc 000124 external static structure level 1 unaligned dcl 1-15 eb_data_$lavptr 000102 external static pointer dcl 104 ref 143 145 148 152 154 155 158 162 165 168 171 175 191 194 197 198 200 250 252 253 256 286 296 317 324 330 341 354 360 371 378 381 384 389 393 400 404 eb_data_$lcdefs 000126 external static structure level 1 unaligned dcl 1-30 eb_data_$lcrtx 000130 external static structure level 1 unaligned dcl 1-54 eb_data_$segnfo 000134 external static structure level 1 dcl 5-11 eb_data_$stnam 000076 external static fixed bin(26,0) dcl 103 set ref 290 eb_data_$typr2 000100 external static fixed bin(26,0) array dcl 103 set ref 383* eb_data_$varcom 000140 external static structure level 1 dcl 7-7 entry_bead based structure level 1 dcl 2-18 entry_bead_ptr 3 based bit(18) level 2 packed packed unaligned dcl 2-28 ref 194 272 explst 52 000140 external static fixed bin(26,0) level 2 dcl 7-7 ref 171 389 expression 1(18) based bit(18) level 2 packed packed unaligned dcl 2-23 ref 392 expression_bead based structure level 1 dcl 2-23 external_definition_bead based structure level 1 dcl 2-28 ff_NAME_DEFINITIONS_FOR_ENTRY_POINTS_AND_SEGDEFS_nl 000011 internal static char(47) initial dcl 80 set ref 209* get_temp_segments_ 000114 constant entry external dcl 110 ref 239 hbound builtin function dcl 45 ref 421 htc 000112 automatic fixed bin(17,0) dcl 54 set ref 210* 215 htp 000114 automatic pointer array dcl 55 set ref 237* 239* 246 305 305 306 307 308 313* 437 438 439 441 i 000163 automatic fixed bin(17,0) dcl 413 set ref 421* 422 422* i3333 134 000132 external static fixed bin(26,0) level 2 dcl 4-6 set ref 234* 285* 301* 328* i66 135 000132 external static fixed bin(26,0) level 2 dcl 4-6 set ref 214* 215* 219* 230* 232* 233* 276* 277* 278* 295* 298* 299* 305* 308* 310* 351* 374* 383* 400* ibits 000013 constant fixed bin(17,0) initial array dcl 3-30 ref 277 398 idefpt constant fixed bin(17,0) initial dcl 3-6 ref 230 233 270 278 294 299 366 ilblok constant fixed bin(17,0) initial dcl 3-6 ref 348 351 ildefs 000074 internal static fixed bin(26,0) initial dcl 3-24 set ref 214* 215* 230 232* 233 276 278 295 299 308* 400 ilsymb 000073 internal static fixed bin(26,0) initial dcl 3-24 set ref 298* index builtin function dcl 45 ref 187 225 iright 000100 automatic fixed bin(18,0) dcl 47 set ref 343* 343 345 347* 347 351 irword 000101 automatic fixed bin(17,0) dcl 48 set ref 260* 277 itemp 000102 automatic fixed bin(17,0) dcl 49 set ref 187* 188 188* 189 225* 226 226* 227 228 229 306* 307 308* 373* 373 374 376 378 383 437* 438 439* 439 441 j 000122 automatic pointer dcl 60 set ref 145* 146 148* 148 152* 153 154 155* 155 158* 159 160 162* 162 165* 166 168* 168 171* 172 173 175* 175 191* 193 194 197 200* 200 250* 251 252 255 256 263 266 272 286* 286 317* 318 319 324 326 330* 330 341* 342 343 350 351 354* 354 360* 361 362 363 367 373 375 380 384* 384 389* 390 391 392 393 400 404* 404 k 000124 automatic pointer dcl 60 set ref 194* 195 195 197* 198* 198 199 256* 257 259 260 393* 395 397 398 length builtin function dcl 45 ref 188 226 lg based bit(9) level 2 packed packed unaligned dcl 2-7 ref 154 199 254 325 link_no 1 based bit(18) level 2 packed packed unaligned dcl 2-18 set ref 195* lnkorg parameter fixed bin(17,0) dcl 52 ref 207 347 351 location based bit(18) level 2 in structure "expression_bead" packed packed unaligned dcl 2-23 in procedure "alm_definitions_$assign_definitions" set ref 173* 391* location 1 based bit(18) level 2 in structure "external_definition_bead" packed packed unaligned dcl 2-28 in procedure "alm_definitions_$assign_definitions" ref 255 location 1(18) based bit(18) level 2 in structure "name_bead" packed packed unaligned dcl 2-54 in procedure "alm_definitions_$assign_definitions" set ref 282* 326* 378 381 location based bit(18) level 2 in structure "trap_bead" packed packed unaligned dcl 2-73 in procedure "alm_definitions_$assign_definitions" set ref 160* 350* 371 location based bit(18) level 2 in structure "type_pair_bead" packed packed unaligned dcl 2-77 in procedure "alm_definitions_$assign_definitions" set ref 362* 400 location_counter 2(18) based bit(18) level 2 in structure "expression_bead" packed packed unaligned dcl 2-23 in procedure "alm_definitions_$assign_definitions" ref 393 location_counter 2(18) based bit(18) level 2 in structure "external_definition_bead" packed packed unaligned dcl 2-28 in procedure "alm_definitions_$assign_definitions" ref 256 location_counter_bead based structure level 1 dcl 2-44 lpdefs 000126 external static fixed bin(26,0) level 2 dcl 1-30 ref 143 212 lprtx 000130 external static fixed bin(26,0) level 2 dcl 1-54 ref 296 mod builtin function dcl 45 ref 437 439 name based bit(18) level 2 in structure "name_bead" packed packed unaligned dcl 2-54 in procedure "alm_definitions_$assign_definitions" ref 154 198 253 324 name based bit(18) level 2 in structure "external_definition_bead" packed packed unaligned dcl 2-28 in procedure "alm_definitions_$assign_definitions" ref 197 252 name_bead based structure level 1 dcl 2-54 namlnk 000126 automatic pointer dcl 61 set ref 252* 253 281 282 namlst 54 000140 external static fixed bin(26,0) level 2 dcl 7-7 ref 152 317 ndefs 000010 internal static fixed bin(17,0) dcl 53 set ref 192* 201* 201 246* next 0(18) based bit(18) level 2 in structure "expression_bead" packed packed unaligned dcl 2-23 in procedure "alm_definitions_$assign_definitions" ref 175 404 next 0(18) based bit(18) level 2 in structure "trap_bead" packed packed unaligned dcl 2-73 in procedure "alm_definitions_$assign_definitions" ref 162 354 next 0(18) based bit(18) level 2 in structure "type_pair_bead" packed packed unaligned dcl 2-77 in procedure "alm_definitions_$assign_definitions" ref 168 384 next 0(18) based bit(18) level 2 in structure "external_definition_bead" packed packed unaligned dcl 2-28 in procedure "alm_definitions_$assign_definitions" ref 148 200 286 next 0(18) based bit(18) level 2 in structure "name_bead" packed packed unaligned dcl 2-54 in procedure "alm_definitions_$assign_definitions" ref 155 330 nl_EXTERNAL_NAMES_nl 000025 internal static char(16) initial dcl 83 set ref 321* nl_HASH_TABLE_nl 000031 internal static char(24) initial dcl 86 set ref 304* nl_INTERNAL_EXPRESSION_WORDS_nl 000037 internal static char(27) initial dcl 89 set ref 388* nl_NO_EXTERNAL_NAMES 000046 internal static char(18) initial dcl 92 set ref 332* nl_NO_TRAP_POINTER_WORDS 000053 internal static char(22) initial dcl 94 set ref 336* nl_TRAP_POINTER_WORDS_nl 000061 internal static char(20) initial dcl 96 set ref 340* nl_TYPE_PAIR_BLOCKS_nl 000066 internal static char(18) initial dcl 99 set ref 359* no_items 000116 automatic bit(1) packed unaligned dcl 56 set ref 316* 321 323* 332 null builtin function dcl 45 ref 234 234 285 285 301 301 328 328 nwrds 000117 automatic fixed bin(26,0) dcl 57 set ref 229* 230 233 234* 254* 276 285* 325* 328* origin 3 based bit(18) level 2 packed packed unaligned dcl 2-44 ref 259 296 397 pointer builtin function dcl 45 ref 143 145 148 152 154 155 158 162 165 168 171 175 191 194 197 198 200 250 252 253 256 286 296 317 324 330 341 354 360 371 378 381 384 389 393 400 404 prlst_$prlst_ 000104 constant entry external dcl 106 ref 209 304 321 332 336 340 359 388 prnam_$prnam_ 000106 constant entry external dcl 107 ref 284 300 327 prnter_ 000120 constant entry external dcl 111 ref 241 prnter_$abort1 000122 constant entry external dcl 112 ref 244 putout_$putblk 000110 constant entry external dcl 108 ref 234 285 301 328 putout_$putwrd 000112 constant entry external dcl 109 ref 214 215 219 230 232 233 276 277 278 295 298 299 305 308 310 351 374 383 400 rel builtin function dcl 45 ref 146 153 159 166 172 193 195 251 257 318 342 361 390 395 release_temp_segments_ 000116 constant entry external dcl 110 ref 237 313 rlkdef parameter fixed bin(17,0) dcl 58 ref 207 rright 000120 automatic fixed bin(26,0) dcl 59 set ref 270* 276 294* 295 344* 348* 351 364* 366* 368* 374* 394* 398* 400 rsydef parameter fixed bin(26,0) dcl 62 ref 207 s parameter fixed bin(17,0) dcl 411 ref 409 420 s1 000162 automatic fixed bin(17,0) dcl 413 set ref 420* 422 425 section 1 based bit(18) level 2 in structure "name_bead" packed packed unaligned dcl 2-54 in procedure "alm_definitions_$assign_definitions" set ref 281* 319 section 4(18) based bit(18) level 2 in structure "location_counter_bead" packed packed unaligned dcl 2-44 in procedure "alm_definitions_$assign_definitions" set ref 143* 260 398 seg 000134 automatic bit(18) packed unaligned dcl 63 set ref 375* 378* 378 383 383 segment 2 based bit(18) level 2 packed packed unaligned dcl 2-77 ref 375 segname 000136 automatic structure level 1 dcl 73 set ref 224 234 234 segname_def_blk 000151 automatic fixed bin(17,0) dcl 78 set ref 223* 249 278 299 segname_overlay based bit(297) dcl 76 set ref 224* size based fixed bin(17,0) level 2 dcl 67 set ref 246* 305 305 306 437 439 sizes 000000 constant fixed bin(17,0) initial array dcl 416 ref 421 422 422 sthedr_$seg_name 000136 external static char(32) dcl 6-21 ref 187 188 225 226 228 string builtin function dcl 45 ref 307 substr builtin function dcl 45 set ref 228* symbol 2(18) based bit(18) level 2 packed packed unaligned dcl 2-77 ref 380 symht based structure level 1 dcl 67 symlnk 000130 automatic pointer dcl 61 set ref 253* 254 284* 285* 290* 300* 301* 324* 325 327* 328* 437 table 1 based structure array level 2 dcl 67 set ref 307 text 000134 external static pointer level 2 dcl 5-11 ref 264 264 text_word based fixed bin(35,0) array dcl 65 set ref 264* 264 trap 1(18) based bit(18) level 2 packed packed unaligned dcl 2-77 ref 363 trap_bead based structure level 1 dcl 2-73 trp 000132 automatic fixed bin(26,0) dcl 62 set ref 268* 276 363* 363 365 369* 369 371* 371 371 374 trplst 55 000140 external static fixed bin(26,0) level 2 dcl 7-7 ref 158 336 341 twop18 constant fixed bin(26,0) initial dcl 114 ref 214 215 230 232 233 264 266 268 276 277 278 293 296 299 351 351 374 400 type 1 based bit(18) level 2 packed packed unaligned dcl 2-77 ref 367 373 type_pair 1 based bit(18) level 2 packed packed unaligned dcl 2-23 ref 400 type_pair_bead based structure level 1 dcl 2-77 unspec builtin function dcl 45 set ref 307* val 000133 automatic fixed bin(26,0) dcl 62 set ref 255* 255 259* 259 264 264 266* 266 271* 271 272* 272 277* 293* 295* 296* 297* 297 298* 307* 308* 310* 392* 392 397* 397 400 word based fixed bin(35,0) dcl 434 ref 437 xdflst 56 000140 external static fixed bin(26,0) level 2 dcl 7-7 ref 145 191 250 xnam 000135 automatic bit(18) packed unaligned dcl 63 set ref 380* 381 381* 381 383 383 zero_word_ptr 000150 automatic fixed bin(17,0) dcl 78 set ref 218* 221 232 293 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. call_out_bead based structure level 1 dcl 2-11 eb_data_$lccall external static structure level 1 unaligned dcl 1-18 eb_data_$lccom external static structure level 1 unaligned dcl 1-22 eb_data_$lcentries external static structure level 1 unaligned dcl 1-34 eb_data_$lchead external static structure level 1 unaligned dcl 1-38 eb_data_$lclit external static structure level 1 unaligned dcl 1-42 eb_data_$lcrlk external static structure level 1 unaligned dcl 1-46 eb_data_$lcrst external static structure level 1 unaligned dcl 1-50 eb_data_$lcsect external static structure level 1 unaligned dcl 1-58 eb_data_$lcst external static structure level 1 unaligned dcl 1-62 eb_data_$lctext external static structure level 1 unaligned dcl 1-66 eb_data_$lctv external static structure level 1 unaligned dcl 1-70 iabsol internal static fixed bin(17,0) initial dcl 3-6 iescap internal static fixed bin(17,0) initial dcl 3-6 ilink internal static fixed bin(17,0) initial dcl 3-6 ilkptr internal static fixed bin(17,0) initial dcl 3-6 illink internal static fixed bin(26,0) initial dcl 3-24 ilmlnk internal static fixed bin(26,0) initial dcl 3-24 iltext internal static fixed bin(26,0) initial dcl 3-24 imblok internal static fixed bin(17,0) initial dcl 3-6 imlink internal static fixed bin(17,0) initial dcl 3-6 imsymb internal static fixed bin(17,0) initial dcl 3-6 imtext internal static fixed bin(17,0) initial dcl 3-6 iresv1 internal static fixed bin(17,0) initial dcl 3-6 iresv2 internal static fixed bin(17,0) initial dcl 3-6 iresv3 internal static fixed bin(17,0) initial dcl 3-6 iresv4 internal static fixed bin(17,0) initial dcl 3-6 iselfr internal static fixed bin(17,0) initial dcl 3-6 isymbl internal static fixed bin(17,0) initial dcl 3-6 itext internal static fixed bin(17,0) initial dcl 3-6 link_bead based structure level 1 dcl 2-34 literal_bead based structure level 1 dcl 2-38 location_counters based structure array level 1 dcl 2-51 new_sthedr_$alm_creation_date external static fixed bin(71,0) dcl 6-33 new_sthedr_$alm_version_name external static char(32) dcl 6-35 new_sthedr_$block_size external static structure level 1 dcl 6-49 new_sthedr_$comment external static char(64) dcl 6-39 new_sthedr_$hdrlen external static fixed bin(26,0) dcl 6-67 new_sthedr_$new_sthedr_ external static fixed bin(17,0) dcl 6-31 new_sthedr_$rel_bits_ptrs external static structure level 1 dcl 6-53 new_sthedr_$relocinfo external static fixed bin(17,0) dcl 6-69 new_sthedr_$source_and_area external static structure level 1 dcl 6-45 new_sthedr_$text_and_link_boundaries external static structure level 1 dcl 6-41 new_sthedr_$time_of_translation external static fixed bin(71,0) dcl 6-33 new_sthedr_$truncate_info external static structure level 1 dcl 6-61 new_sthedr_$user_id external static char(32) dcl 6-37 statement_bead based structure level 1 dcl 2-58 sthedr_$alm_creation_date external static fixed bin(71,0) dcl 6-19 sthedr_$hdrlen external static fixed bin(26,0) dcl 6-27 sthedr_$sthedr_ external static fixed bin(17,0) dcl 6-17 sthedr_$text_and_link_lengths external static structure level 1 dcl 6-23 sthedr_$time_of_translation external static fixed bin(71,0) dcl 6-19 symbol_bead based structure level 1 dcl 2-63 transfer_vector_bead based structure level 1 dcl 2-68 NAMES DECLARED BY EXPLICIT CONTEXT. alm_definitions_$assign_definitions 000071 constant entry external dcl 27 alm_definitions_$emit_definitions 000431 constant entry external dcl 207 alm_definitions_$fix_entries 000304 constant entry external dcl 181 hash 002507 constant entry internal dcl 432 ref 274 291 hlen 002454 constant entry internal dcl 409 ref 246 type_3_or_4 002255 constant label dcl 378 ref 376 NAME DECLARED BY CONTEXT OR IMPLICATION. fixed builtin function ref 367 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3034 3176 2541 3044 Length 3634 2541 142 421 273 66 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME alm_definitions_$assign_definitions 185 external procedure is an external procedure. on unit on line 237 86 on unit hlen internal procedure shares stack frame of external procedure alm_definitions_$assign_defin hash internal procedure shares stack frame of external procedure alm_definitions_$assign_defin STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 ndefs alm_definitions_$assign_definitions 000011 ff_NAME_DEFINITIONS_FOR_ENTRY_POINTS_AND_SEGDEFS_nl alm_definitions_$assign_definitions 000025 nl_EXTERNAL_NAMES_nl alm_definitions_$assign_definitions 000031 nl_HASH_TABLE_nl alm_definitions_$assign_definitions 000037 nl_INTERNAL_EXPRESSION_WORDS_nl alm_definitions_$assign_definitions 000046 nl_NO_EXTERNAL_NAMES alm_definitions_$assign_definitions 000053 nl_NO_TRAP_POINTER_WORDS alm_definitions_$assign_definitions 000061 nl_TRAP_POINTER_WORDS_nl alm_definitions_$assign_definitions 000066 nl_TYPE_PAIR_BLOCKS_nl alm_definitions_$assign_definitions 000073 ilsymb alm_definitions_$assign_definitions 000074 ildefs alm_definitions_$assign_definitions STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME alm_definitions_$assign_definitions 000100 iright alm_definitions_$assign_definitions 000101 irword alm_definitions_$assign_definitions 000102 itemp alm_definitions_$assign_definitions 000103 code alm_definitions_$assign_definitions 000112 htc alm_definitions_$assign_definitions 000114 htp alm_definitions_$assign_definitions 000116 no_items alm_definitions_$assign_definitions 000117 nwrds alm_definitions_$assign_definitions 000120 rright alm_definitions_$assign_definitions 000122 j alm_definitions_$assign_definitions 000124 k alm_definitions_$assign_definitions 000126 namlnk alm_definitions_$assign_definitions 000130 symlnk alm_definitions_$assign_definitions 000132 trp alm_definitions_$assign_definitions 000133 val alm_definitions_$assign_definitions 000134 seg alm_definitions_$assign_definitions 000135 xnam alm_definitions_$assign_definitions 000136 segname alm_definitions_$assign_definitions 000147 backward_thread alm_definitions_$assign_definitions 000150 zero_word_ptr alm_definitions_$assign_definitions 000151 segname_def_blk alm_definitions_$assign_definitions 000162 s1 hlen 000163 i hlen THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 call_ext_out_desc call_ext_out return_mac fl2_to_fx1 mdfx1 enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_temp_segments_ prlst_$prlst_ prnam_$prnam_ prnter_ prnter_$abort1 putout_$putblk putout_$putwrd release_temp_segments_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. eb_data_$concom eb_data_$curlc eb_data_$lavptr eb_data_$lcdefs eb_data_$lcrtx eb_data_$segnfo eb_data_$stnam eb_data_$typr2 eb_data_$varcom sthedr_$seg_name LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000070 140 000076 143 000101 145 000107 146 000114 147 000116 148 000122 149 000130 150 000131 152 000134 153 000141 154 000144 155 000160 156 000166 158 000167 159 000176 160 000200 161 000210 162 000211 163 000217 165 000220 166 000227 167 000232 168 000236 169 000244 171 000245 172 000254 173 000256 174 000266 175 000267 176 000275 178 000276 179 000302 181 000303 186 000311 187 000315 188 000326 189 000331 191 000333 192 000340 193 000341 194 000344 195 000354 196 000364 197 000367 198 000375 199 000403 200 000410 201 000416 202 000417 204 000420 205 000424 207 000425 209 000436 210 000447 211 000453 212 000454 214 000456 215 000477 218 000522 219 000526 221 000545 223 000547 224 000553 225 000556 226 000567 227 000572 228 000577 229 000602 230 000605 232 000632 233 000655 234 000706 237 000733 239 000774 240 001020 241 001022 244 001036 246 001043 249 001054 250 001056 251 001065 252 001070 253 001077 254 001105 255 001112 256 001116 257 001124 259 001126 260 001131 263 001134 264 001141 266 001151 268 001155 269 001160 270 001163 271 001165 272 001167 274 001174 276 001175 277 001225 278 001250 281 001277 282 001302 284 001311 285 001317 286 001342 287 001351 290 001352 291 001355 293 001356 294 001362 295 001364 296 001405 297 001417 298 001421 299 001437 300 001466 301 001475 304 001522 305 001533 306 001555 307 001565 308 001567 310 001612 312 001632 313 001634 316 001660 317 001662 318 001671 319 001674 321 001700 323 001713 324 001714 325 001723 326 001730 327 001737 328 001745 330 001770 331 001777 332 002000 336 002013 340 002030 341 002040 342 002047 343 002052 344 002056 345 002057 347 002061 348 002064 350 002066 351 002075 354 002125 355 002134 359 002135 360 002146 361 002155 362 002160 363 002170 364 002174 365 002175 366 002177 367 002201 368 002205 369 002207 370 002211 371 002212 373 002221 374 002224 375 002244 376 002250 378 002253 380 002264 381 002267 383 002277 384 002324 385 002333 388 002334 389 002345 390 002354 391 002356 392 002366 393 002372 394 002400 395 002401 397 002403 398 002406 400 002411 404 002443 405 002452 448 002453 409 002454 420 002456 421 002463 422 002471 424 002501 425 002503 432 002507 437 002510 438 002515 439 002522 440 002527 441 002530 444 002540 ----------------------------------------------------------- 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