// Raid.decl - Declarations of Lisp data structures used only by Raid
// 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 ConsCell:
[ Qfield byte = [ ibit bit 1
dfield bit 7 ]
]
manifest// address space constants used by ShowRealCore
[
MDSLo = #1
MDSHi = #15
PncLo = #30
PncHi = #37
ArrayLo = #40
ArrayHi = #72
GCMainspace = #73
GCCollspace = #74
]