COMPILATION LISTING OF SEGMENT lisp_subroutine_maker_ Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 06/30/83 0852.5 mst Thu Options: map single_symbol_list 1 /* ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1973 * 4* * * 5* ************************************************************** */ 6 lisp_subroutine_maker_: procedure; 7 8 /* Subroutines which belong to the lisp system proper are entered 9* through a transfer vector in the segment lisp_subr_tv_. 10* This routine is called in the lisp bootstrap phase to make 11* the appropriate atom properties so that lisp subroutines are 12* defined in the initial environment. */ 13 14 /* Automatic variables */ 15 16 dcl types(0:3) fixed bin(71) aligned, /* these are lisp objects for the atoms "subr", "lsubr", "fsubr" */ 17 atomic_symbol fixed bin(71) aligned, /* lisp object to hold onto current atom to be defined */ 18 atsym_ptr ptr based(addr(atomic_symbol)), /* overlay to treat the above as a pointer */ 19 name_ptr ptr, /* pointer to acc string name of subr to be defined */ 20 plist_ptr ptr, /* pointer to space allocated for atom property list */ 21 plist_cdr_ptr ptr, /* pointer to cdr of that. */ 22 tvidx fixed bin; /* index into transfer vector */ 23 24 /* transfer vector structure */ 25 26 dcl 1 lisp_subr_tv_$lisp_subr_tv_ (0 : 1000) ext aligned, 27 2 header_word, 28 3 n_args fixed bin(17) unal, 29 3 subr_type fixed bin(17) unal, 30 2 instructions(0:1) bit(36) aligned, 31 2 init_data, 32 3 name_offset fixed bin(17) unal, 33 3 type fixed bin(17) unal, 34 35 lisp_subr_tv_$tv_entry_count fixed bin ext; 36 37 dcl 1 name_string based(name_ptr) aligned, 38 2 namel fixed bin(8) unal, 39 2 name char(0 refer(name_string.namel)) unal; 40 41 42 /* Subroutines called */ 43 44 dcl lisp_alloc_ entry(fixed bin, ptr), /* subroutine to allocate space */ 45 lisp_get_atom_ entry(char(*) aligned,fixed bin(71) aligned); 46 47 /* Builtins */ 48 49 dcl (addr, addrel, hbound) builtin; 50 51 /* Include files */ 52 1 1 /* Include file lisp_ptr_fmt.incl.pl1; 1 2* describes the format of lisp pointers as 1 3* a bit string overlay on the double word ITS pair 1 4* which allows lisp to access some unused bits in 1 5* the standard ITS pointer format. It should be noted that 1 6* this is somewhat of a kludge, since 1 7* it is quite machine dependent. However, to store type 1 8* fields in the pointer, saves 2 words in each cons, 1 9* plus some efficiency problems. 1 10* 1 11* D.Reed 4/1/71 */ 1 12 /* modified to move type field to other half of ptr */ 1 13 /* D.Reed 5/31/72 */ 1 14 1 15 1 16 dcl based_ptr ptr aligned based; /* for dealing with lisp values as pointers */ 1 17 dcl lisp_ptr_type bit(36) aligned based, /* for more efficient checking of type bits */ 1 18 1 lisp_ptr based aligned, /* structure of double word pointer in lisp */ 1 19 2 segno bit(18) unaligned, /* segment number pointed to by pointer */ 1 20 2 ringnum bit(3) unaligned, /* ring mumber for validation */ 1 21 2 type bit(9) unaligned, /* type field */ 1 22 2 itsmod bit(6) unaligned, 1 23 2 offset fixed bin(17) unaligned, /* offset in segment of object pointed to */ 1 24 2 chain bit(18) unaligned, /* normally 0, but may be set to chain pointers together */ 1 25 1 26 /* manifest constant strings for testing above type field */ 1 27 1 28 ( 1 29 Cons init("000000000"b), /* a pointer to a list has a zero type field */ 1 30 Fixed init("100000000"b), /* a fixed point number, stored in second word of the ptr */ 1 31 Float init("010000000"b), /* a floating number, also stored in the second word of the ptr */ 1 32 Atsym init("001000000"b), /* this bit on means a ptr to an atomic symbol */ 1 33 Atomic init("111111111"b), /* any bit on means an atomic data type */ 1 34 Bignum init("000001000"b), /* a multiple-precision number */ 1 35 Bigfix init("000001000"b), /* a fixed point bignum (only kind for now) */ 1 36 Numeric init("110000000"b), /* either type immediate number. Both bits on 1 37* means a special internal uncollectable weird object */ 1 38 Uncollectable init("110000000"b), /* not looked through by garbage collector */ 1 39 String init("000100000"b), /* pointer to lisp character string - length word, chars */ 1 40 Subr init("000010000"b), /* pointer to compiled (or builtin) subroutine (linkage) code */ 1 41 System_Subr init("000000100"b), /* Subr bit must be on too, indicates ptr into lisp_subr_tv_ */ 1 42 Array init("000000010"b), /* Subr bit must be on too, indicates ptr to a lisp array */ 1 43 File init("000000001"b) /* pointer to a file object (iochan block) */ 1 44 ) bit(9) static, 1 45 1 46 /* 36 bit manifest constant strings for testing lisp_ptr_type */ 1 47 1 48 1 49 ( 1 50 Cons36 init("000000000000000000000000000000"b), 1 51 Fixed36 init("000000000000000000000100000000"b), 1 52 Float36 init("000000000000000000000010000000"b), 1 53 Atsym36 init("000000000000000000000001000000"b), 1 54 Atomic36 init("000000000000000000000111111100"b), 1 55 Bignum36 init("000000000000000000000000001000"b), 1 56 System_Subr36 1 57 init("000000000000000000000000000100"b), 1 58 Bigfix36 init("000000000000000000000000001000"b), 1 59 Numeric36 init("000000000000000000000110000000"b), /* does not check for bignum */ 1 60 NotConsOrAtsym36 1 61 init("000000000000000000000110111111"b), 1 62 SubrNumeric36 1 63 init("000000000000000000000110010000"b), /* used in garbage collector, for quick check */ 1 64 String36 init("000000000000000000000000100000"b), 1 65 Subr36 init("000000000000000000000000010000"b), 1 66 File36 init("000000000000000000000000000001"b), 1 67 Array36 init("000000000000000000000000000010"b)) bit(36) aligned static, 1 68 1 69 /* undefined pointer value is double word of zeros */ 1 70 1 71 Undefined bit(72) static init(""b); 1 72 1 73 /* end of include file lisp_ptr_fmt.incl.pl1 */ 53 2 1 /* Include file lisp_cons_fmt.incl.pl1; 2 2* defines the format for a cons within the lisp system 2 3* D.Reed 4/1/71 */ 2 4 2 5 dcl consptr ptr, 2 6 1 cons aligned based (consptr), /* structure defining format for cons */ 2 7 2 car fixed bin(71), 2 8 2 cdr fixed bin(71), 2 9 2 10 1 cons_ptrs aligned based (consptr), /* for using car and cdr as pointers */ 2 11 2 car ptr, 2 12 2 cdr ptr, 2 13 2 14 2 15 1 cons_types aligned based (consptr), /* structure for extracting types out of cons */ 2 16 2 padding bit(21) unaligned, 2 17 2 car bit(9) unaligned, 2 18 2 padding2 bit(63) unaligned, 2 19 2 cdr bit(9) unaligned, 2 20 2 padend bit(42) unaligned; 2 21 2 22 dcl 1 cons_types36 aligned based, 2 23 2 car bit(36), 2 24 2 pada bit(36), 2 25 2 cdr bit(36), 2 26 2 padd bit(36); 2 27 2 28 2 29 /* end include file lisp_cons_fmt.incl.pl1 */ 54 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 */ 55 4 1 /* Include file lisp_common_vars.incl.pl1; 4 2* describes the external static variables which may be referenced 4 3* by lisp routines. 4 4* D. Reed 4/1/71 */ 4 5 4 6 dcl 1 lisp_static_vars_$lisp_static_vars_ external, 4 7 2 cclist_ptr ptr, /* pointer to list of constants kept 4 8* by compiled programs */ 4 9 2 garbage_collect_soon bit(1) aligned, /* if this is on we should garbage collect soon */ 4 10 4 11 lisp_static_vars_$err_recp ptr ext aligned, /* pointer to error data */ 4 12 err_recp ptr defined (lisp_static_vars_$err_recp), 4 13 eval_frame ptr defined (lisp_static_vars_$eval_frame), /* info kept by eval if *rset t */ 4 14 lisp_static_vars_$eval_frame ptr ext static, 4 15 lisp_static_vars_$prog_frame ptr ext aligned, 4 16 lisp_static_vars_$err_frame ptr ext aligned, 4 17 lisp_static_vars_$catch_frame ptr ext aligned, 4 18 lisp_static_vars_$unwp_frame ptr ext aligned, 4 19 lisp_static_vars_$stack_ptr ptr ext aligned, 4 20 lisp_static_vars_$t_atom fixed bin(71) ext aligned, 4 21 lisp_static_vars_$top_level label ext, /* top level read_eval_print loop */ 4 22 lisp_static_vars_$unmkd_ptr ptr ext aligned, 4 23 lisp_static_vars_$binding_top ptr ext aligned, 4 24 lisp_static_vars_$obarray fixed bin(71) aligned ext, 4 25 obarray fixed bin(71) defined (lisp_static_vars_$obarray), 4 26 lisp_static_vars_$array_atom fixed bin(71) aligned ext, 4 27 array_atom fixed bin(71) defined (lisp_static_vars_$array_atom), 4 28 binding_top ptr defined (lisp_static_vars_$binding_top), 4 29 unmkd_ptr ptr defined (lisp_static_vars_$unmkd_ptr), 4 30 stack_ptr ptr defined (lisp_static_vars_$stack_ptr), 4 31 lisp_static_vars_$nil ext static fixed bin(71) aligned, 4 32 nil fixed bin(71) defined (lisp_static_vars_$nil), 4 33 lisp_static_vars_$tty_input_chan ext static ptr, /* used by the reader */ 4 34 lisp_static_vars_$tty_output_chan ext static ptr, /*used by print*/ 4 35 tty_input_chan ptr def (lisp_static_vars_$tty_input_chan), 4 36 tty_output_chan ptr def (lisp_static_vars_$tty_output_chan), 4 37 lisp_static_vars_$iochan_list external pointer, /* list of all open iochans */ 4 38 nil_ptr ptr based(addr(lisp_static_vars_$nil)) aligned, 4 39 prog_frame ptr def (lisp_static_vars_$prog_frame), /* 3 ptrs for use of lisp_prog_fns_ */ 4 40 err_frame ptr def (lisp_static_vars_$err_frame), /* they point out frames in unmkd pdl */ 4 41 catch_frame ptr def (lisp_static_vars_$catch_frame), 4 42 unwp_frame ptr def (lisp_static_vars_$unwp_frame), 4 43 t_atom_ptr ptr aligned based(addr(lisp_static_vars_$t_atom)), 4 44 t_atom fixed bin(71) defined (lisp_static_vars_$t_atom); /* pointer to atom t */ 4 45 dcl lisp_static_vars_$user_intr_array(20) fixed bin(71) aligned ext static, /* -> atoms whose values are intr service functions */ 4 46 user_intr_array (20) fixed bin(71) aligned def (lisp_static_vars_$user_intr_array), 4 47 lisp_static_vars_$star_rset fixed bin(71) aligned ext static, 4 48 star_rset fixed bin(71) aligned def (lisp_static_vars_$star_rset); 4 49 4 50 4 51 /* end include file lisp_common_vars.incl.pl1 */ 56 57 58 59 /* Initialize the type array */ 60 61 call lisp_get_atom_("subr", types(0)); 62 call lisp_get_atom_("lsubr",types(1)); 63 call lisp_get_atom_("fsubr",types(2)); 64 65 /* Loop through all of the entries in the transfer vector, initializing them */ 66 67 do tvidx = 0 to lisp_subr_tv_$tv_entry_count; 68 69 name_ptr = addrel(addr(lisp_subr_tv_$lisp_subr_tv_), init_data(tvidx).name_offset); 70 71 call lisp_get_atom_((name_ptr -> name_string.name), atomic_symbol); /* get the atom */ 72 73 call lisp_alloc_(8, plist_ptr); /* make space for a property list */ 74 75 atsym_ptr -> atom_ptrs.plist = plist_ptr; /* remember, atsym_ptr is ptr part of atomic_symbol */ 76 77 plist_cdr_ptr = addrel(plist_ptr,4); /* get ptr to cdr of plist */ 78 79 plist_cdr_ptr-> cons.cdr = nil; 80 plist_ptr -> cons_ptrs.cdr = plist_cdr_ptr; /* make up the property list */ 81 82 plist_ptr -> cons.car = types(lisp_subr_tv_$lisp_subr_tv_.init_data(tvidx).type); 83 plist_cdr_ptr -> cons_ptrs.car = addr(lisp_subr_tv_$lisp_subr_tv_(tvidx)); 84 plist_cdr_ptr -> cons_types.car = Subr|System_Subr; 85 86 end; 87 88 end lisp_subroutine_maker_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/29/83 1542.6 lisp_subroutine_maker_.pl1 >special_ldd>on>06/27/83>lisp_subroutine_maker_.pl1 53 1 03/27/82 0437.0 lisp_ptr_fmt.incl.pl1 >ldd>include>lisp_ptr_fmt.incl.pl1 54 2 03/27/82 0437.0 lisp_cons_fmt.incl.pl1 >ldd>include>lisp_cons_fmt.incl.pl1 55 3 03/27/82 0437.1 lisp_atom_fmt.incl.pl1 >ldd>include>lisp_atom_fmt.incl.pl1 56 4 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 1-17 Array36 internal static bit(36) initial dcl 1-17 Atomic internal static bit(9) initial unaligned dcl 1-17 Atomic36 internal static bit(36) initial dcl 1-17 Atsym internal static bit(9) initial unaligned dcl 1-17 Atsym36 internal static bit(36) initial dcl 1-17 Bigfix internal static bit(9) initial unaligned dcl 1-17 Bigfix36 internal static bit(36) initial dcl 1-17 Bignum internal static bit(9) initial unaligned dcl 1-17 Bignum36 internal static bit(36) initial dcl 1-17 Cons internal static bit(9) initial unaligned dcl 1-17 Cons36 internal static bit(36) initial dcl 1-17 File internal static bit(9) initial unaligned dcl 1-17 File36 internal static bit(36) initial dcl 1-17 Fixed internal static bit(9) initial unaligned dcl 1-17 Fixed36 internal static bit(36) initial dcl 1-17 Float internal static bit(9) initial unaligned dcl 1-17 Float36 internal static bit(36) initial dcl 1-17 NotConsOrAtsym36 internal static bit(36) initial dcl 1-17 Numeric internal static bit(9) initial unaligned dcl 1-17 Numeric36 internal static bit(36) initial dcl 1-17 String internal static bit(9) initial unaligned dcl 1-17 String36 internal static bit(36) initial dcl 1-17 Subr constant bit(9) initial unaligned dcl 1-17 ref 84 Subr36 internal static bit(36) initial dcl 1-17 SubrNumeric36 internal static bit(36) initial dcl 1-17 System_Subr constant bit(9) initial unaligned dcl 1-17 ref 84 System_Subr36 internal static bit(36) initial dcl 1-17 Uncollectable internal static bit(9) initial unaligned dcl 1-17 Undefined internal static bit(72) initial unaligned dcl 1-17 addr builtin function dcl 49 ref 69 75 83 addrel builtin function dcl 49 ref 69 77 array_atom defined fixed bin(71,0) dcl 4-6 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 atomic_symbol 000110 automatic fixed bin(71,0) dcl 16 set ref 71* 75 atsym_ptr based pointer dcl 16 ref 75 based_ptr based pointer dcl 1-16 binding_top defined pointer dcl 4-6 car 0(21) based bit(9) level 2 in structure "cons_types" packed unaligned dcl 2-5 in procedure "lisp_subroutine_maker_" set ref 84* car based pointer level 2 in structure "cons_ptrs" dcl 2-5 in procedure "lisp_subroutine_maker_" set ref 83* car based fixed bin(71,0) level 2 in structure "cons" dcl 2-5 in procedure "lisp_subroutine_maker_" set ref 82* catch_frame defined pointer dcl 4-6 cdr 2 based pointer level 2 in structure "cons_ptrs" dcl 2-5 in procedure "lisp_subroutine_maker_" set ref 80* cdr 2 based fixed bin(71,0) level 2 in structure "cons" dcl 2-5 in procedure "lisp_subroutine_maker_" set ref 79* cons based structure level 1 dcl 2-5 cons_ptrs based structure level 1 dcl 2-5 cons_types based structure level 1 dcl 2-5 cons_types36 based structure level 1 dcl 2-22 consptr automatic pointer dcl 2-5 err_frame defined pointer dcl 4-6 err_recp defined pointer dcl 4-6 eval_frame defined pointer dcl 4-6 hbound builtin function dcl 49 init_data 3 000010 external static structure array level 2 dcl 26 lisp_alloc_ 000014 constant entry external dcl 44 ref 73 lisp_get_atom_ 000016 constant entry external dcl 44 ref 61 62 63 71 lisp_ptr based structure level 1 dcl 1-17 lisp_ptr_type based bit(36) dcl 1-17 lisp_static_vars_$array_atom external static fixed bin(71,0) dcl 4-6 lisp_static_vars_$binding_top external static pointer dcl 4-6 lisp_static_vars_$catch_frame external static pointer dcl 4-6 lisp_static_vars_$err_frame external static pointer dcl 4-6 lisp_static_vars_$err_recp external static pointer dcl 4-6 lisp_static_vars_$eval_frame external static pointer dcl 4-6 lisp_static_vars_$iochan_list external static pointer dcl 4-6 lisp_static_vars_$lisp_static_vars_ external static structure level 1 unaligned dcl 4-6 lisp_static_vars_$nil 000020 external static fixed bin(71,0) dcl 4-6 ref 79 79 lisp_static_vars_$obarray external static fixed bin(71,0) dcl 4-6 lisp_static_vars_$prog_frame external static pointer dcl 4-6 lisp_static_vars_$stack_ptr external static pointer dcl 4-6 lisp_static_vars_$star_rset external static fixed bin(71,0) dcl 4-45 lisp_static_vars_$t_atom external static fixed bin(71,0) dcl 4-6 lisp_static_vars_$top_level external static label variable dcl 4-6 lisp_static_vars_$tty_input_chan external static pointer dcl 4-6 lisp_static_vars_$tty_output_chan external static pointer dcl 4-6 lisp_static_vars_$unmkd_ptr external static pointer dcl 4-6 lisp_static_vars_$unwp_frame external static pointer dcl 4-6 lisp_static_vars_$user_intr_array external static fixed bin(71,0) array dcl 4-45 lisp_subr_tv_$lisp_subr_tv_ 000010 external static structure array level 1 dcl 26 set ref 69 83 lisp_subr_tv_$tv_entry_count 000012 external static fixed bin(17,0) dcl 26 ref 67 lisp_subroutine_maker_ 000013 constant entry external dcl 6 name 0(09) based char level 2 packed unaligned dcl 37 ref 71 name_offset 3 000010 external static fixed bin(17,0) array level 3 packed unaligned dcl 26 set ref 69 name_ptr 000112 automatic pointer dcl 16 set ref 69* 71 name_string based structure level 1 dcl 37 namel based fixed bin(8,0) level 2 packed unaligned dcl 37 ref 71 nil defined fixed bin(71,0) dcl 4-6 ref 79 nil_ptr based pointer dcl 4-6 obarray defined fixed bin(71,0) dcl 4-6 plist 2 based pointer level 2 dcl 3-5 set ref 75* plist_cdr_ptr 000116 automatic pointer dcl 16 set ref 77* 79 80 83 84 plist_ptr 000114 automatic pointer dcl 16 set ref 73* 75 77 80 82 prog_frame defined pointer dcl 4-6 stack_ptr defined pointer dcl 4-6 star_rset defined fixed bin(71,0) dcl 4-45 t_atom defined fixed bin(71,0) dcl 4-6 t_atom_ptr based pointer dcl 4-6 tty_input_chan defined pointer dcl 4-6 tty_output_chan defined pointer dcl 4-6 tvidx 000120 automatic fixed bin(17,0) dcl 16 set ref 67* 69 82 83* type 3(18) 000010 external static fixed bin(17,0) array level 3 packed unaligned dcl 26 set ref 82 types 000100 automatic fixed bin(71,0) array dcl 16 set ref 61* 62* 63* 82 unmkd_ptr defined pointer dcl 4-6 unwp_frame defined pointer dcl 4-6 user_intr_array defined fixed bin(71,0) array dcl 4-45 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 310 332 215 320 Length 604 215 22 236 73 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lisp_subroutine_maker_ 96 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME lisp_subroutine_maker_ 000100 types lisp_subroutine_maker_ 000110 atomic_symbol lisp_subroutine_maker_ 000112 name_ptr lisp_subroutine_maker_ 000114 plist_ptr lisp_subroutine_maker_ 000116 plist_cdr_ptr lisp_subroutine_maker_ 000120 tvidx lisp_subroutine_maker_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. lisp_alloc_ lisp_get_atom_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. lisp_static_vars_$nil lisp_subr_tv_$lisp_subr_tv_ lisp_subr_tv_$tv_entry_count LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000012 61 000020 62 000036 63 000055 67 000074 69 000103 71 000113 73 000141 75 000155 77 000160 79 000163 80 000166 82 000167 83 000200 84 000204 86 000212 88 000214 ----------------------------------------------------------- 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