// Raid.decl - Declarations of Lisp data structures used only by Raid
// added onedarray structure October 6, 1986 by Bill van Melle
// Changed address constants December 14, 1984 by Bill van Melle
// Last edited August 29, 1981 11:53 PM by Bill van Melle
// Allegro change August 2, 1981 11:20 PM by Beau Sheil
// Last edited March 4, 1981 12:49 PM by Beau Sheil
// Last edited February 24, 1981 5:39 PM by Beau Sheil
// Last edited August 6, 1980 6:40 PM by Beau Sheil

get "LispBcpl.decl"

// *** The truth for all these declarations is the Lisp ***

manifest
[
DEL = #177// DEL char code
// offsets for stack frames
flagword = 0
// offsets for last word of a basic frame
BFIvar = 1// ptr to start of BF
BFRmask = #1000
BFPmask = #400
// offsets and masks for a frame extension
FXalink = 1
FXblink = 8
FXclink = 9
FXPvar = 10
FXFHlo = 2
FXFHhi = 3
FXnxt = 4
FXNTlo = 6
FXNThi = 7
FXNMask = #1 lshift 8// These are in the flag word
FXVMask = #2 lshift 8
FXCMask = #4 lshift 8
FXLMask = #10 lshift 8
FXFMask = #20 lshift 8
FXXMask = #1// in the Alink word

// offsets and masks for guard and free blks
FreeBlkLen = 1
GrdBlkLen = 1
// name table offsets
NTPV = 2
NTfname = 4
NTnPV = 7
offNtSize = 6
ntOvheadWords = 8
// name table codes
fvarCode = #140000
pvarCode = #100000
ivarCode = 0

fvarmask = #1// tells if fvar is looked up
]

structure [
// atom pointer - used to extract number
blank word
// lhbyte not used; rhbyte zero
AtomNumber word ]// atom number

structure [
// generalized array (sequence) descriptor
Sorig bit// indexing origin (0 or 1)
Salgn bit// alignment flag (0 or 1)
Sro bit// read-only flag (0 or 1)
blank bit// padding
Styp bit 4// type number
blank byte 3// = ptr to first data word
Slength word// # of elements
Soffst word// offset of first element from base
]

structure [
// cml oned array descriptor
blank word 2// = ptr to first data word
ODFlagWord word// see below
ODOffset word// offset of first element from base
ODFillPointer word// # of elements
]

structure [
// Flag word for cml oned array descriptor
ODReadOnly bit// read-only flag (0 or 1)
ODIndirect bit// true if base points to another array
ODBitP bit// true if bit array
ODStringP bit// true if string
ODAdjustableP bit// true if adjustable array
ODDisplacedP bit//
ODFilePointerP bit//
ODExtendableP bit//
ODtyp bit 8// type number
]

structure ConsCell:
[ Qfield byte = [ ibit bit 1
dfield bit 7 ]
]
manifest// address space constants used by ShowRealCore
[
PncLo = #72
PncHi = #77
ArrayLo = #23
ArrayHi = #377
GCMainspace = HTMAINspace
GCCollspace = HTMAINspace+1
]