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 *****/