1           /***** BEGIN INCLUDE FILE lisp_array_fmt.incl.pl1 *****/
 2 
 3 /* This include file defines the format of the "new" LISP arrays.
 4    Written 74.05.13 by DAM */
 5 
 6           /* Info block in static space.  pointed at by array ptr */
 7 
 8 dcl 1 array_info aligned based structure,                   /* 8 words long */
 9     2 ndims fixed bin(17) unaligned,                        /* number of dimensions */
10     2 gc_mark bit(18) unaligned,                            /* alternating bits for garbage coll. */
11     2 call_array_operator bit(36),                          /* tspbp instruction to array opr */
12     2 array_data_ptr pointer,                               /* -> array_data structure */
13     2 array_load_sequence(3) bit(36),                       /* lda, ldq, tra bp|0 */
14     2 type fixed bin(17) unaligned,                         /* type of array, see dcl below */
15     2 minus_2_times_ndims fixed bin(17) unaligned;          /* for convenience of array opr */
16 
17           /* Codes for the different types of arrays:
18      Name           Value               arg to *array to create one      */
19 
20 dcl (S_expr_array init(0),              /* t */
21      Un_gc_array init(1),               /* nil */
22      Fixnum_array init(2),              /* fixnum */
23      Flonum_array init(3),              /* flonum */
24      Readtable_array init(4),           /* readtable */
25      Obarray_array init(5),             /* obarray */
26      Dead_array init(6)                 /* (*rearray a) */
27     ) fixed bin(17) static;
28 
29           /* Block of array data and dimensions, in garbage-collected Lists space */
30 
31 dcl 1 array_data aligned based structure,
32       2 dope_vector(ZERO),              /* address by dope_vector(i-ndims).  no way to dcl in PL/I */
33         3 bounds fixed bin(35),         /* 0 <^H_ subscript < bounds */
34         3 multiplier fixed bin(35),     /* multiplier in polynomial-type subscript calc. */
35       2 data(0:1000) fixed bin(71);     /* single or double words depending on type of array */
36 
37 dcl ZERO fixed bin static init(0);      /* Circumvent a compiler bug causing reference through null pointer in get_array_size$multf */
38 
39           /***** END INCLUDE FILE lisp_array_fmt.incl.pl1 *****/