COMPILATION LISTING OF SEGMENT lisp_prelinker_ Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 06/30/83 0848.1 mst Thu Options: map single_symbol_list 1 /* ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1974 * 4* * * 5* ************************************************************** */ 6 lisp_prelinker_: procedure; 7 8 /* This module is called by (sstatus uuolinks t) to cause pre-snapping 9* of as many subr-links as possible. 10* Written 74.07.07 by DAM 11* */ 12 13 dcl (lisp_static_vars_$subr, lisp_static_vars_$lsubr, lisp_static_vars_$fsubr, 14 lisp_static_vars_$expr, lisp_static_vars_$fexpr) fixed bin(71) external, 15 lisp_static_vars_$subr_block_list external pointer, 16 (subr defined lisp_static_vars_$subr, 17 lsubr defined lisp_static_vars_$lsubr, 18 fsubr defined lisp_static_vars_$fsubr, 19 expr defined lisp_static_vars_$expr, 20 fexpr defined lisp_static_vars_$fexpr) fixed bin(71); 21 22 dcl blockp pointer, 23 i fixed bin, 24 fcn fixed bin(71), 25 fcnp pointer aligned based(addr(fcn)), 26 type fixed bin, /* 0=not known yet, 1=subr, 2=lsubr, -1=fsubr */ 27 (SUBR init(1), LSUBR init(2), FSUBR init(-1)) fixed bin static, 28 plist fixed bin(71), 29 plistp pointer aligned based(addr(plist)), 30 linkp pointer; 31 32 dcl (addr, null, divide) builtin; 33 34 dcl ITP bit(6) static init("100001"b); /* hardware ITP modifier */ 35 36 dcl 1 link_info unaligned, /* format of 27 info bits in an ITP link */ 37 2 fcn_offset fixed bin(14), /* signed offset from ap or lp of function */ 38 2 snap bit(1), /* 1 if link can (should) be snapped */ 39 2 constant bit(1), /* 1 if fcn_offset is offset from lp of atom */ 40 2 fsubr bit(1), /* 1 for fsubr, 0 for subr/lsubr */ 41 2 nargs bit(9); /* 777 if arg count is in x5, else arg count */ 42 43 dcl 1 subr_info aligned based, 44 2 cruft bit(9) unaligned, 45 2 nargs bit(9) unaligned, 46 2 more_cruft bit(18) unaligned, 47 2 entry_point; 48 1 1 /* MACLISP Compiled SUBR Block */ 1 2 1 3 dcl 1 subr_block_head based aligned, /* this is the first part of the subr block */ 1 4 2 next_compiled_block ptr, /* for xctblt */ 1 5 2 instructions(4) bit(36), /* the common entry code */ 1 6 2 subr_code_link_offset bin(17) unal, /* points to subr code link */ 1 7 2 rest_of_tsplp bit(18) unal, /* tsplp ,ic* */ 1 8 2 gcmark bit(18) unal, /* for garbage collector to remember seeing this block */ 1 9 2 gc_length fixed bin(17) unal, /* number garbage collectable objects */ 1 10 2 constants(1000) fixed bin(71); /* the compiled constants */ 1 11 1 12 /* alternate declaration of above */ 1 13 1 14 dcl 1 subr_block_head_overlay based aligned, 1 15 2 first_word bit(36), 1 16 2 second_word aligned, 1 17 3 padding bit(28) unaligned, 1 18 3 no_links_are_snapped bit(1) unaligned, /* "1"b if no itp links in this block have been snapped */ 1 19 3 more_padding bit(7) unaligned; 1 20 1 21 1 22 1 23 dcl 1 lisp_subr_links(1000) based aligned, /* the subr links follow the constants, and are the last gc'ed items */ 1 24 2 itp_base bit(3) unal, 1 25 2 itp_info bit(27) unal, /* produced by compiler */ 1 26 2 itp_mod bit(6) unal, 1 27 2 link_opr_tv_offset bit(18) unal, 1 28 2 mbz bit(12) unal, 1 29 2 further_mod bit(6) unal; /* when itp; this is indirect */ 1 30 1 31 1 32 dcl 1 subr_entries(1000) based aligned, /* these are next in block, not gc'able */ 1 33 2 nargs bit(18) unal, 1 34 2 code_offset bit(18) unal, /* offset of entrypoint in object segment */ 1 35 2 head_offset bin(17) unal, /* offset to common entry sequence in subr_block_head */ 1 36 2 rest_of_tsx0 bit(18) unal; /* tsx0 ,ic */ 1 37 1 38 1 39 dcl 1 link_to_subr_code based aligned, /* used by lisp_linker_ to find object segment */ 1 40 2 itp_to_linker ptr, /* points to linker, reset by linker to point to base of object seg */ 1 41 2 compilation_time fixed bin(71), /* used to verify linking to correct segment */ 1 42 2 name_length fixed bin(24), /* length of subroutines name...both segname and ename */ 1 43 2 name char(0 refer(link_to_subr_code.name_length)) unal; 1 44 1 45 dcl instructions_for_subr (4) bit(36) static init("000000000000000100110010111000001111"b, 1 46 "001111111111111100110101000001001111"b, 1 47 "001111111111111110010101010001001111"b, 1 48 "111111111111111110111010000000001000"b), 1 49 tsplp_ic_ind bit(18) static init("110111000000010100"b), 1 50 tsx0_ic bit(18) static init("111000000000000100"b); 1 51 1 52 dcl 1 array_links (1000) aligned based, /* come after entries, before link_to_subr_code */ 1 53 2 instruction bit(36) aligned, /* tspbp to array_link_snap operator 1 54* or eppbb *+2,* when snapped */ 1 55 2 control_word unaligned, /* controls what to snap to */ 1 56 3 type fixed bin(8), /* 0=S-expr, 2=fixnum, 3=flonum */ 1 57 3 ndims fixed bin(8), 1 58 3 atomic_symbol fixed bin(17), /* offset in constants to symbol which names array */ 1 59 2 pointer pointer; /* -> array_info block when snapped */ 1 60 1 61 dcl 1 array_link_count aligned based, /* comes after array_links, before link_to_subr_code */ 1 62 2 unused bit(36), 1 63 2 number_of_array_links fixed bin(17) unaligned, 1 64 2 must_be_zero bit(18) unaligned; /* 0 to distinguish from tsx0 in subr block with no array links */ 1 65 1 66 /* End of description of Compiled SUBR Block */ 49 2 1 /* Include file lisp_ptr_fmt.incl.pl1; 2 2* describes the format of lisp pointers as 2 3* a bit string overlay on the double word ITS pair 2 4* which allows lisp to access some unused bits in 2 5* the standard ITS pointer format. It should be noted that 2 6* this is somewhat of a kludge, since 2 7* it is quite machine dependent. However, to store type 2 8* fields in the pointer, saves 2 words in each cons, 2 9* plus some efficiency problems. 2 10* 2 11* D.Reed 4/1/71 */ 2 12 /* modified to move type field to other half of ptr */ 2 13 /* D.Reed 5/31/72 */ 2 14 2 15 2 16 dcl based_ptr ptr aligned based; /* for dealing with lisp values as pointers */ 2 17 dcl lisp_ptr_type bit(36) aligned based, /* for more efficient checking of type bits */ 2 18 1 lisp_ptr based aligned, /* structure of double word pointer in lisp */ 2 19 2 segno bit(18) unaligned, /* segment number pointed to by pointer */ 2 20 2 ringnum bit(3) unaligned, /* ring mumber for validation */ 2 21 2 type bit(9) unaligned, /* type field */ 2 22 2 itsmod bit(6) unaligned, 2 23 2 offset fixed bin(17) unaligned, /* offset in segment of object pointed to */ 2 24 2 chain bit(18) unaligned, /* normally 0, but may be set to chain pointers together */ 2 25 2 26 /* manifest constant strings for testing above type field */ 2 27 2 28 ( 2 29 Cons init("000000000"b), /* a pointer to a list has a zero type field */ 2 30 Fixed init("100000000"b), /* a fixed point number, stored in second word of the ptr */ 2 31 Float init("010000000"b), /* a floating number, also stored in the second word of the ptr */ 2 32 Atsym init("001000000"b), /* this bit on means a ptr to an atomic symbol */ 2 33 Atomic init("111111111"b), /* any bit on means an atomic data type */ 2 34 Bignum init("000001000"b), /* a multiple-precision number */ 2 35 Bigfix init("000001000"b), /* a fixed point bignum (only kind for now) */ 2 36 Numeric init("110000000"b), /* either type immediate number. Both bits on 2 37* means a special internal uncollectable weird object */ 2 38 Uncollectable init("110000000"b), /* not looked through by garbage collector */ 2 39 String init("000100000"b), /* pointer to lisp character string - length word, chars */ 2 40 Subr init("000010000"b), /* pointer to compiled (or builtin) subroutine (linkage) code */ 2 41 System_Subr init("000000100"b), /* Subr bit must be on too, indicates ptr into lisp_subr_tv_ */ 2 42 Array init("000000010"b), /* Subr bit must be on too, indicates ptr to a lisp array */ 2 43 File init("000000001"b) /* pointer to a file object (iochan block) */ 2 44 ) bit(9) static, 2 45 2 46 /* 36 bit manifest constant strings for testing lisp_ptr_type */ 2 47 2 48 2 49 ( 2 50 Cons36 init("000000000000000000000000000000"b), 2 51 Fixed36 init("000000000000000000000100000000"b), 2 52 Float36 init("000000000000000000000010000000"b), 2 53 Atsym36 init("000000000000000000000001000000"b), 2 54 Atomic36 init("000000000000000000000111111100"b), 2 55 Bignum36 init("000000000000000000000000001000"b), 2 56 System_Subr36 2 57 init("000000000000000000000000000100"b), 2 58 Bigfix36 init("000000000000000000000000001000"b), 2 59 Numeric36 init("000000000000000000000110000000"b), /* does not check for bignum */ 2 60 NotConsOrAtsym36 2 61 init("000000000000000000000110111111"b), 2 62 SubrNumeric36 2 63 init("000000000000000000000110010000"b), /* used in garbage collector, for quick check */ 2 64 String36 init("000000000000000000000000100000"b), 2 65 Subr36 init("000000000000000000000000010000"b), 2 66 File36 init("000000000000000000000000000001"b), 2 67 Array36 init("000000000000000000000000000010"b)) bit(36) aligned static, 2 68 2 69 /* undefined pointer value is double word of zeros */ 2 70 2 71 Undefined bit(72) static init(""b); 2 72 2 73 /* end of include file lisp_ptr_fmt.incl.pl1 */ 50 3 1 /* Include file lisp_atom_fmt.incl.pl1; 3 2* describes internal format of atoms in the lisp system 3 3* D.Reed 4/1/71 */ 3 4 3 5 dcl 1 atom aligned based, /* overlay for atom fomat */ 3 6 2 value fixed bin(71), /* atom's value */ 3 7 2 plist fixed bin(71), /* property list */ 3 8 2 pnamel fixed bin, /* length of print name */ 3 9 2 pname char(1 refer(pnamel)), /* print name of atom */ 3 10 3 11 1 atom_ptrs based aligned, /* for use of plist and value of atom as ptrs */ 3 12 2 value ptr, 3 13 2 plist ptr, 3 14 3 15 1 atom_double_words based aligned, /* overlay for atom pointer checking */ 3 16 2 value bit(72), 3 17 2 plist bit(72); 3 18 3 19 /* end of include file lisp_atom_fmt.incl.pl1 */ 51 4 1 /* Include file lisp_cons_fmt.incl.pl1; 4 2* defines the format for a cons within the lisp system 4 3* D.Reed 4/1/71 */ 4 4 4 5 dcl consptr ptr, 4 6 1 cons aligned based (consptr), /* structure defining format for cons */ 4 7 2 car fixed bin(71), 4 8 2 cdr fixed bin(71), 4 9 4 10 1 cons_ptrs aligned based (consptr), /* for using car and cdr as pointers */ 4 11 2 car ptr, 4 12 2 cdr ptr, 4 13 4 14 4 15 1 cons_types aligned based (consptr), /* structure for extracting types out of cons */ 4 16 2 padding bit(21) unaligned, 4 17 2 car bit(9) unaligned, 4 18 2 padding2 bit(63) unaligned, 4 19 2 cdr bit(9) unaligned, 4 20 2 padend bit(42) unaligned; 4 21 4 22 dcl 1 cons_types36 aligned based, 4 23 2 car bit(36), 4 24 2 pada bit(36), 4 25 2 cdr bit(36), 4 26 2 padd bit(36); 4 27 4 28 4 29 /* end include file lisp_cons_fmt.incl.pl1 */ 52 5 1 /* Include file lisp_common_vars.incl.pl1; 5 2* describes the external static variables which may be referenced 5 3* by lisp routines. 5 4* D. Reed 4/1/71 */ 5 5 5 6 dcl 1 lisp_static_vars_$lisp_static_vars_ external, 5 7 2 cclist_ptr ptr, /* pointer to list of constants kept 5 8* by compiled programs */ 5 9 2 garbage_collect_soon bit(1) aligned, /* if this is on we should garbage collect soon */ 5 10 5 11 lisp_static_vars_$err_recp ptr ext aligned, /* pointer to error data */ 5 12 err_recp ptr defined (lisp_static_vars_$err_recp), 5 13 eval_frame ptr defined (lisp_static_vars_$eval_frame), /* info kept by eval if *rset t */ 5 14 lisp_static_vars_$eval_frame ptr ext static, 5 15 lisp_static_vars_$prog_frame ptr ext aligned, 5 16 lisp_static_vars_$err_frame ptr ext aligned, 5 17 lisp_static_vars_$catch_frame ptr ext aligned, 5 18 lisp_static_vars_$unwp_frame ptr ext aligned, 5 19 lisp_static_vars_$stack_ptr ptr ext aligned, 5 20 lisp_static_vars_$t_atom fixed bin(71) ext aligned, 5 21 lisp_static_vars_$top_level label ext, /* top level read_eval_print loop */ 5 22 lisp_static_vars_$unmkd_ptr ptr ext aligned, 5 23 lisp_static_vars_$binding_top ptr ext aligned, 5 24 lisp_static_vars_$obarray fixed bin(71) aligned ext, 5 25 obarray fixed bin(71) defined (lisp_static_vars_$obarray), 5 26 lisp_static_vars_$array_atom fixed bin(71) aligned ext, 5 27 array_atom fixed bin(71) defined (lisp_static_vars_$array_atom), 5 28 binding_top ptr defined (lisp_static_vars_$binding_top), 5 29 unmkd_ptr ptr defined (lisp_static_vars_$unmkd_ptr), 5 30 stack_ptr ptr defined (lisp_static_vars_$stack_ptr), 5 31 lisp_static_vars_$nil ext static fixed bin(71) aligned, 5 32 nil fixed bin(71) defined (lisp_static_vars_$nil), 5 33 lisp_static_vars_$tty_input_chan ext static ptr, /* used by the reader */ 5 34 lisp_static_vars_$tty_output_chan ext static ptr, /*used by print*/ 5 35 tty_input_chan ptr def (lisp_static_vars_$tty_input_chan), 5 36 tty_output_chan ptr def (lisp_static_vars_$tty_output_chan), 5 37 lisp_static_vars_$iochan_list external pointer, /* list of all open iochans */ 5 38 nil_ptr ptr based(addr(lisp_static_vars_$nil)) aligned, 5 39 prog_frame ptr def (lisp_static_vars_$prog_frame), /* 3 ptrs for use of lisp_prog_fns_ */ 5 40 err_frame ptr def (lisp_static_vars_$err_frame), /* they point out frames in unmkd pdl */ 5 41 catch_frame ptr def (lisp_static_vars_$catch_frame), 5 42 unwp_frame ptr def (lisp_static_vars_$unwp_frame), 5 43 t_atom_ptr ptr aligned based(addr(lisp_static_vars_$t_atom)), 5 44 t_atom fixed bin(71) defined (lisp_static_vars_$t_atom); /* pointer to atom t */ 5 45 dcl lisp_static_vars_$user_intr_array(20) fixed bin(71) aligned ext static, /* -> atoms whose values are intr service functions */ 5 46 user_intr_array (20) fixed bin(71) aligned def (lisp_static_vars_$user_intr_array), 5 47 lisp_static_vars_$star_rset fixed bin(71) aligned ext static, 5 48 star_rset fixed bin(71) aligned def (lisp_static_vars_$star_rset); 5 49 5 50 5 51 /* end include file lisp_common_vars.incl.pl1 */ 53 54 55 do blockp = lisp_static_vars_$subr_block_list 56 repeat(blockp -> subr_block_head.next_compiled_block) 57 while(blockp ^= null); /* look at all compiled subr blocks */ 58 59 do i = 1 to blockp -> subr_block_head.gc_length; /* look at all constants and subr links */ 60 linkp = addr(blockp -> subr_block_head.constants(i)); /* -> link or constant */ 61 if linkp -> lisp_subr_links(1).itp_mod ^= ITP then go to cant_snap_this_link; 62 /* not an unsnapped link */ 63 unspec(link_info) = linkp -> lisp_subr_links(1).itp_info; 64 if ^ link_info.snap then go to cant_snap_this_link; 65 if ^ link_info.constant then go to cant_snap_this_link; 66 fcn = blockp -> subr_block_head.constants(divide(link_info.fcn_offset+1,2,17,0)); 67 if addr(fcn)->lisp_ptr_type & Atsym36 then; 68 else go to cant_snap_this_link; 69 70 /* found symbol to which to snap link. search its property list */ 71 72 type = 0; 73 do plist = fcnp -> atom.plist 74 repeat(plistp -> cons_ptrs.cdr -> cons.cdr) 75 while(addr(plist)->lisp_ptr.type = Cons); 76 if plistp -> cons.car = subr then type = SUBR; 77 else if plistp -> cons.car = lsubr then type = LSUBR; 78 else if plistp -> cons.car = fsubr then type = FSUBR; 79 else if plistp -> cons.car = expr then go to cant_snap_this_link; 80 else if plistp -> cons.car = fexpr then go to cant_snap_this_link; 81 if type ^= 0 then go to exitloop; 82 end; 83 go to cant_snap_this_link; /* no functional property */ 84 exitloop: 85 if type = FSUBR then if ^ link_info.fsubr then go to cant_snap_this_link; 86 else; 87 else if link_info.fsubr then go to cant_snap_this_link; 88 else; 89 if type = LSUBR then if link_info.nargs ^= "111111111"b then go to cant_snap_this_link; 90 if type = SUBR then if link_info.nargs ^= 91 plistp -> cons_ptrs.cdr -> cons_ptrs.car -> subr_info.nargs 92 then go to cant_snap_this_link; 93 94 /* have demonstrated that the link is snappable */ 95 96 blockp -> subr_block_head_overlay.no_links_are_snapped = "0"b; 97 blockp -> subr_block_head.constants(i) = 98 plistp -> cons_ptrs.cdr -> cons.car + 262144; /* -> entry_point */ 99 cant_snap_this_link: 100 end; 101 end; 102 end lisp_prelinker_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/29/83 1542.3 lisp_prelinker_.pl1 >special_ldd>on>06/27/83>lisp_prelinker_.pl1 49 1 03/27/82 0437.0 lisp_comp_subr_block.incl.pl1 >ldd>include>lisp_comp_subr_block.incl.pl1 50 2 03/27/82 0437.0 lisp_ptr_fmt.incl.pl1 >ldd>include>lisp_ptr_fmt.incl.pl1 51 3 03/27/82 0437.1 lisp_atom_fmt.incl.pl1 >ldd>include>lisp_atom_fmt.incl.pl1 52 4 03/27/82 0437.0 lisp_cons_fmt.incl.pl1 >ldd>include>lisp_cons_fmt.incl.pl1 53 5 03/27/82 0437.0 lisp_common_vars.incl.pl1 >ldd>include>lisp_common_vars.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) Array internal static bit(9) initial unaligned dcl 2-17 Array36 internal static bit(36) initial dcl 2-17 Atomic internal static bit(9) initial unaligned dcl 2-17 Atomic36 internal static bit(36) initial dcl 2-17 Atsym internal static bit(9) initial unaligned dcl 2-17 Atsym36 constant bit(36) initial dcl 2-17 ref 67 Bigfix internal static bit(9) initial unaligned dcl 2-17 Bigfix36 internal static bit(36) initial dcl 2-17 Bignum internal static bit(9) initial unaligned dcl 2-17 Bignum36 internal static bit(36) initial dcl 2-17 Cons constant bit(9) initial unaligned dcl 2-17 ref 73 Cons36 internal static bit(36) initial dcl 2-17 FSUBR 000233 constant fixed bin(17,0) initial dcl 22 ref 78 84 File internal static bit(9) initial unaligned dcl 2-17 File36 internal static bit(36) initial dcl 2-17 Fixed internal static bit(9) initial unaligned dcl 2-17 Fixed36 internal static bit(36) initial dcl 2-17 Float internal static bit(9) initial unaligned dcl 2-17 Float36 internal static bit(36) initial dcl 2-17 ITP constant bit(6) initial unaligned dcl 34 ref 61 LSUBR constant fixed bin(17,0) initial dcl 22 ref 77 89 NotConsOrAtsym36 internal static bit(36) initial dcl 2-17 Numeric internal static bit(9) initial unaligned dcl 2-17 Numeric36 internal static bit(36) initial dcl 2-17 SUBR constant fixed bin(17,0) initial dcl 22 ref 76 90 String internal static bit(9) initial unaligned dcl 2-17 String36 internal static bit(36) initial dcl 2-17 Subr internal static bit(9) initial unaligned dcl 2-17 Subr36 internal static bit(36) initial dcl 2-17 SubrNumeric36 internal static bit(36) initial dcl 2-17 System_Subr internal static bit(9) initial unaligned dcl 2-17 System_Subr36 internal static bit(36) initial dcl 2-17 Uncollectable internal static bit(9) initial unaligned dcl 2-17 Undefined internal static bit(72) initial unaligned dcl 2-17 addr builtin function dcl 32 ref 60 67 73 73 76 77 78 79 80 82 90 97 array_atom defined fixed bin(71,0) dcl 5-6 array_link_count based structure level 1 dcl 1-61 array_links based structure array level 1 dcl 1-52 atom based structure level 1 dcl 3-5 atom_double_words based structure level 1 dcl 3-5 atom_ptrs based structure level 1 dcl 3-5 based_ptr based pointer dcl 2-16 binding_top defined pointer dcl 5-6 blockp 000100 automatic pointer dcl 22 set ref 55* 55* 59 60 66 96 97* 101 cant_snap_this_link 000223 constant label dcl 99 ref 61 64 65 68 79 80 83 84 87 89 90 car based pointer level 2 in structure "cons_ptrs" dcl 4-5 in procedure "lisp_prelinker_" ref 90 car based fixed bin(71,0) level 2 in structure "cons" dcl 4-5 in procedure "lisp_prelinker_" ref 76 77 78 79 80 97 catch_frame defined pointer dcl 5-6 cdr 2 based pointer level 2 in structure "cons_ptrs" dcl 4-5 in procedure "lisp_prelinker_" ref 82 90 97 cdr 2 based fixed bin(71,0) level 2 in structure "cons" dcl 4-5 in procedure "lisp_prelinker_" ref 82 cons based structure level 1 dcl 4-5 cons_ptrs based structure level 1 dcl 4-5 cons_types based structure level 1 dcl 4-5 cons_types36 based structure level 1 dcl 4-22 consptr automatic pointer dcl 4-5 constant 0(16) 000114 automatic bit(1) level 2 packed unaligned dcl 36 set ref 65 constants 10 based fixed bin(71,0) array level 2 dcl 1-3 set ref 60 66 97* divide builtin function dcl 32 ref 66 err_frame defined pointer dcl 5-6 err_recp defined pointer dcl 5-6 eval_frame defined pointer dcl 5-6 exitloop 000147 constant label dcl 84 ref 81 expr defined fixed bin(71,0) dcl 13 ref 79 fcn 000104 automatic fixed bin(71,0) dcl 22 set ref 66* 67 73 fcn_offset 000114 automatic fixed bin(14,0) level 2 packed unaligned dcl 36 set ref 66 fcnp based pointer dcl 22 ref 73 fexpr defined fixed bin(71,0) dcl 13 ref 80 fsubr 0(17) 000114 automatic bit(1) level 2 in structure "link_info" packed unaligned dcl 36 in procedure "lisp_prelinker_" set ref 84 87 fsubr defined fixed bin(71,0) dcl 13 in procedure "lisp_prelinker_" ref 78 gc_length 7(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-3 ref 59 i 000102 automatic fixed bin(17,0) dcl 22 set ref 59* 60 97* instructions_for_subr internal static bit(36) initial array unaligned dcl 1-45 itp_info 0(03) based bit(27) array level 2 packed unaligned dcl 1-23 ref 63 itp_mod 0(30) based bit(6) array level 2 packed unaligned dcl 1-23 ref 61 link_info 000114 automatic structure level 1 packed unaligned dcl 36 set ref 63* link_to_subr_code based structure level 1 dcl 1-39 linkp 000112 automatic pointer dcl 22 set ref 60* 61 63 lisp_prelinker_ 000003 constant entry external dcl 6 lisp_ptr based structure level 1 dcl 2-17 lisp_ptr_type based bit(36) dcl 2-17 ref 67 lisp_static_vars_$array_atom external static fixed bin(71,0) dcl 5-6 lisp_static_vars_$binding_top external static pointer dcl 5-6 lisp_static_vars_$catch_frame external static pointer dcl 5-6 lisp_static_vars_$err_frame external static pointer dcl 5-6 lisp_static_vars_$err_recp external static pointer dcl 5-6 lisp_static_vars_$eval_frame external static pointer dcl 5-6 lisp_static_vars_$expr 000016 external static fixed bin(71,0) dcl 13 ref 79 79 lisp_static_vars_$fexpr 000020 external static fixed bin(71,0) dcl 13 ref 80 80 lisp_static_vars_$fsubr 000014 external static fixed bin(71,0) dcl 13 ref 78 78 lisp_static_vars_$iochan_list external static pointer dcl 5-6 lisp_static_vars_$lisp_static_vars_ external static structure level 1 unaligned dcl 5-6 lisp_static_vars_$lsubr 000012 external static fixed bin(71,0) dcl 13 ref 77 77 lisp_static_vars_$nil external static fixed bin(71,0) dcl 5-6 lisp_static_vars_$obarray external static fixed bin(71,0) dcl 5-6 lisp_static_vars_$prog_frame external static pointer dcl 5-6 lisp_static_vars_$stack_ptr external static pointer dcl 5-6 lisp_static_vars_$star_rset external static fixed bin(71,0) dcl 5-45 lisp_static_vars_$subr 000010 external static fixed bin(71,0) dcl 13 ref 76 76 lisp_static_vars_$subr_block_list 000022 external static pointer dcl 13 ref 55 lisp_static_vars_$t_atom external static fixed bin(71,0) dcl 5-6 lisp_static_vars_$top_level external static label variable dcl 5-6 lisp_static_vars_$tty_input_chan external static pointer dcl 5-6 lisp_static_vars_$tty_output_chan external static pointer dcl 5-6 lisp_static_vars_$unmkd_ptr external static pointer dcl 5-6 lisp_static_vars_$unwp_frame external static pointer dcl 5-6 lisp_static_vars_$user_intr_array external static fixed bin(71,0) array dcl 5-45 lisp_subr_links based structure array level 1 dcl 1-23 lsubr defined fixed bin(71,0) dcl 13 ref 77 nargs 0(09) based bit(9) level 2 in structure "subr_info" packed unaligned dcl 43 in procedure "lisp_prelinker_" ref 90 nargs 0(18) 000114 automatic bit(9) level 2 in structure "link_info" packed unaligned dcl 36 in procedure "lisp_prelinker_" set ref 89 90 next_compiled_block based pointer level 2 dcl 1-3 ref 101 nil defined fixed bin(71,0) dcl 5-6 nil_ptr based pointer dcl 5-6 no_links_are_snapped 1(28) based bit(1) level 3 packed unaligned dcl 1-14 set ref 96* null builtin function dcl 32 ref 55 obarray defined fixed bin(71,0) dcl 5-6 plist 000110 automatic fixed bin(71,0) dcl 22 in procedure "lisp_prelinker_" set ref 73* 73* 76 77 78 79 80* 82 90 97 plist 2 based fixed bin(71,0) level 2 in structure "atom" dcl 3-5 in procedure "lisp_prelinker_" ref 73 plistp based pointer dcl 22 ref 76 77 78 79 80 82 90 97 prog_frame defined pointer dcl 5-6 second_word 1 based structure level 2 dcl 1-14 snap 0(15) 000114 automatic bit(1) level 2 packed unaligned dcl 36 set ref 64 stack_ptr defined pointer dcl 5-6 star_rset defined fixed bin(71,0) dcl 5-45 subr defined fixed bin(71,0) dcl 13 ref 76 subr_block_head based structure level 1 dcl 1-3 subr_block_head_overlay based structure level 1 dcl 1-14 subr_entries based structure array level 1 dcl 1-32 subr_info based structure level 1 dcl 43 t_atom defined fixed bin(71,0) dcl 5-6 t_atom_ptr based pointer dcl 5-6 tsplp_ic_ind internal static bit(18) initial unaligned dcl 1-45 tsx0_ic internal static bit(18) initial unaligned dcl 1-45 tty_input_chan defined pointer dcl 5-6 tty_output_chan defined pointer dcl 5-6 type 0(21) based bit(9) level 2 in structure "lisp_ptr" packed unaligned dcl 2-17 in procedure "lisp_prelinker_" ref 73 type 000106 automatic fixed bin(17,0) dcl 22 in procedure "lisp_prelinker_" set ref 72* 76* 77* 78* 81 84 89 90 unmkd_ptr defined pointer dcl 5-6 unspec builtin function ref 63 unwp_frame defined pointer dcl 5-6 user_intr_array defined fixed bin(71,0) array dcl 5-45 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 326 352 234 336 Length 634 234 24 246 72 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lisp_prelinker_ 96 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME lisp_prelinker_ 000100 blockp lisp_prelinker_ 000102 i lisp_prelinker_ 000104 fcn lisp_prelinker_ 000106 type lisp_prelinker_ 000110 plist lisp_prelinker_ 000112 linkp lisp_prelinker_ 000114 link_info lisp_prelinker_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. lisp_static_vars_$expr lisp_static_vars_$fexpr lisp_static_vars_$fsubr lisp_static_vars_$lsubr lisp_static_vars_$subr lisp_static_vars_$subr_block_list LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000002 55 000010 59 000020 60 000033 61 000037 63 000044 64 000047 65 000053 66 000057 67 000066 68 000072 72 000073 73 000074 76 000103 77 000112 78 000120 79 000126 80 000132 81 000136 82 000141 83 000146 84 000147 86 000155 87 000156 89 000162 90 000172 96 000211 97 000214 99 000223 101 000225 102 000231 ----------------------------------------------------------- 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