// SwatDisk.decl
// Copyright Xerox Corporation 1979, 1982
// Last modified March 21, 1982  2:24 PM by Boggs

manifest
[
hsp = 375B		// Highest swapped user page number
maxKBs = 8		// max # of disk buffers in cache

// disk commands
readD = 44120b		// check header, check label, read data
readHLD = 44000b	// read header, read label, read data
writeD = 44130b		// check header, check label, write data
restore = 44002b	// address cylinder 0 with a restore
]

//----------------------------------------------------------------------------
structure KVM:		// Disk Virtual Memory
//----------------------------------------------------------------------------
[
@VM			// standard object
fp @FP			// fp of file
hits word		// # of cache hits
misses word		// # of cache misses
kbQ:			// a queue of KBs
   [
   head word
   tail word
   ]
DAs↑-1,hsp+5 word	// DAs!userPage = real disk address
]
manifest lenKVM = size KVM/16

//----------------------------------------------------------------------------
structure KB:		// Disk Buffer
//----------------------------------------------------------------------------
[
link word		// must be first
userPage word		// user page number
dirty word		// true if dirty
kcb word 8 =
   [
   next word
   status word		// completion status
   command word
   header word		// -> header record address
   label word		// -> label record address
   data word		// -> data record address 
   blank word 2		// (interrupt bit masks)
   ]
headerRec word 2 =
   [
   blank word 
   address word		// disk address 
   ]
labelRec word 8 =
   [
   nextP word		// -> next page on disk
   backP word		// -> previous page on disk
   blank word
   numChars word
   filePage word	// file page number
   vn word 		// version number
   sn1 word		// serial number word 1
   sn2 word		// serial number word 2
   ]
dataRec word 256
]
manifest lenKB = size KB/16