// AltoDefs.d - Definitions of places and things peculiar to Altos
// Copyright Xerox Corporation 1979
// Last modified January 22, 1979  12:28 AM by Boggs

manifest
[
// page 1
displayListHead = 420b
displayInterrupt = 421b
mouseX = 424b
mouseY = 425b
cursorX = 426b
cursorY = 427b
realTimeClock = 430b
cursorBitMap = 431b	// through 450b
wakeupsWaiting = 452b
activeInterrupts = 453b
maskTable = 460b
interruptPC = 500b
interruptVector = 501b	// through 520b
diskCommand = 521b
diskStatus = 522b
diskAddress = 523b
trapPC = 527b
trapVector = 530b	// through 567b
timeParams = 570b	// through 577b

// page 376
utilOut = 177016b
XBus = 177020b		// through 177023b (Alto II only)
MEAR = 177024b		// Memory Error Address Register (Alto II only)
MESR = 177025b		// Memory Error Status Register (Alto II only)
MECR = 177026b		// Memory Error Control Register (Alto II only)
utilIn = 177030b	// through 177033b
kbdAd = 177034b		// through 177037b

// page 377
EIAOut = 177700b
EIAIn = 177701b
bankRegs = 177740b	// through 177757 (Alto II only)
]

//----------------------------------------------------------------------------
structure UtilIn:	// format of UtilIn word (177030b)
//----------------------------------------------------------------------------
[
blank bit 6 
memConfig bit		// 0 = normal; 1 = alternate
blank bit
keyset bit 5 =		// 0 = depressed
   [
   ks0 bit		// left most
   ks1 bit
   ks2 bit
   ks3 bit
   ks4 bit		// right most
   ]
mouse bit 3 =		// 0 = depressed
   [
   red bit		// top or left button
   blue bit		// bottom or right button
   yellow bit		// middle button
   ]
]

//----------------------------------------------------------------------------
structure LTP:		// Local Time Parameters
//----------------------------------------------------------------------------
[
sign bit 1		// Zero if west of Greenwich, one if east
zoneH bit 4		// Local time zone in hours from Greenwich
blank bit 2
beginDST bit 9		// Day of year on or before which DST starts
blank bit 1
zoneM bit 6		// Additional minutes of local time zone
endDST bit 9		// Day of year on or before which DST ends
]

//----------------------------------------------------------------------------
structure VERS:		// format of value returned by VERS instruction
//----------------------------------------------------------------------------
[
eng bit 4		// 0 or 1 => Alto I; 2 => Alto II; 3 => Alto II XM
build bit 4
microcode bit 8
]

//----------------------------------------------------------------------------
structure BBT:		// BitBlt Table
//----------------------------------------------------------------------------
[
function word =
   [
   blank bit 10		// must be zero
   sBank bit		// source is in alternate bank
   dBank bit		// destination is in alternate bank
   sType bit 2		// source type
   op bit 2		// operation
   ]
blank word		// unused (software stashes AC2 here)
dbca word		// destination bitmap core address
dbmr word		// destination bitmap raster
dlx word		// destination left X coordinate
dty word		// destination top Y coordinate
dw word			// destination block width
dh word			// destination block height
sbca word		// source bitmap core address
sbmr word		// source bitmap raster
slx word		// source left X
sty word		// source top y
gray↑0,3 word		// gray block
]
manifest lBBT = size BBT/16

//----------------------------------------------------------------------------
structure DCB:		// Display Control Block
//----------------------------------------------------------------------------
[
next word		// -> next DCB; 0 if last
parwd word =
   [
   resolution bit 1	// 0 = high; 1 = low
   background bit 1	// 0 = white; 1 = black
   indwidth bit 14 =
      [
      indentation bit 6	// indent 16*indentation bits on the left
      width bit 8	// in words; must be even; zero is OK
      ]
   ]
bitmap word		// -> bit map; must be even
height word		// scan lines = 2*height (height in each field)
]
manifest lDCB = size DCB/16