/* Include file lisp_ptr_fmt.incl.pl1; describes the format of lisp pointers as a bit string overlay on the double word ITS pair which allows lisp to access some unused bits in the standard ITS pointer format. It should be noted that this is somewhat of a kludge, since it is quite machine dependent. However, to store type fields in the pointer, saves 2 words in each cons, plus some efficiency problems. D.Reed 4/1/71 */ /* modified to move type field to other half of ptr */ /* D.Reed 5/31/72 */ dcl based_ptr ptr aligned based; /* for dealing with lisp values as pointers */ dcl lisp_ptr_type bit(36) aligned based, /* for more efficient checking of type bits */ 1 lisp_ptr based aligned, /* structure of double word pointer in lisp */ 2 segno bit(18) unaligned, /* segment number pointed to by pointer */ 2 ringnum bit(3) unaligned, /* ring mumber for validation */ 2 type bit(9) unaligned, /* type field */ 2 itsmod bit(6) unaligned, 2 offset fixed bin(17) unaligned, /* offset in segment of object pointed to */ 2 chain bit(18) unaligned, /* normally 0, but may be set to chain pointers together */ /* manifest constant strings for testing above type field */ ( Cons init("000000000"b), /* a pointer to a list has a zero type field */ Fixed init("100000000"b), /* a fixed point number, stored in second word of the ptr */ Float init("010000000"b), /* a floating number, also stored in the second word of the ptr */ Atsym init("001000000"b), /* this bit on means a ptr to an atomic symbol */ Atomic init("111111111"b), /* any bit on means an atomic data type */ Bignum init("000001000"b), /* a multiple-precision number */ Bigfix init("000001000"b), /* a fixed point bignum (only kind for now) */ Numeric init("110000000"b), /* either type immediate number. Both bits on means a special internal uncollectable weird object */ Uncollectable init("110000000"b), /* not looked through by garbage collector */ String init("000100000"b), /* pointer to lisp character string - length word, chars */ Subr init("000010000"b), /* pointer to compiled (or builtin) subroutine (linkage) code */ System_Subr init("000000100"b), /* Subr bit must be on too, indicates ptr into lisp_subr_tv_ */ Array init("000000010"b), /* Subr bit must be on too, indicates ptr to a lisp array */ File init("000000001"b) /* pointer to a file object (iochan block) */ ) bit(9) static, /* 36 bit manifest constant strings for testing lisp_ptr_type */ ( Cons36 init("000000000000000000000000000000"b), Fixed36 init("000000000000000000000100000000"b), Float36 init("000000000000000000000010000000"b), Atsym36 init("000000000000000000000001000000"b), Atomic36 init("000000000000000000000111111100"b), Bignum36 init("000000000000000000000000001000"b), System_Subr36 init("000000000000000000000000000100"b), Bigfix36 init("000000000000000000000000001000"b), Numeric36 init("000000000000000000000110000000"b), /* does not check for bignum */ NotConsOrAtsym36 init("000000000000000000000110111111"b), SubrNumeric36 init("000000000000000000000110010000"b), /* used in garbage collector, for quick check */ String36 init("000000000000000000000000100000"b), Subr36 init("000000000000000000000000010000"b), File36 init("000000000000000000000000000001"b), Array36 init("000000000000000000000000000010"b)) bit(36) aligned static, /* undefined pointer value is double word of zeros */ Undefined bit(72) static init(""b); /* end of include file lisp_ptr_fmt.incl.pl1 */ */ ----------------------------------------------------------- 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 */