// D0.d -- Definitions for D0-dependent parts of Midas
//	Last edited: 20 October 1981

structure HWStatus:
[	HaltConditions	word
	ConnectedMachine	word
]

//Layout of DVx
structure srbus:
[	
	aluresult		bit 4
	blank		bit 4
	saluf		byte

	sstkp		byte
	stkp		byte

	memsyndrome	word

	cyclecontrol	byte
	pcxreg		bit 4
	pcfreg		bit 4

	blank		bit 4
	dbreg		bit 6
	sbreg		bit 6

	mnbr		word

	apctask		bit 4
	apc		bit 12

	ctask		bit 4
	ncia		bit 12

	page		bit 4
	parity		bit 4
	bootreason		byte
]

structure replmi:
[	w0		word
	w1		word
	w2		word
	[ blank		bit 2
	  Added		bit 1
	  InUse		bit 1
	  Addr		bit 12	//m-i addr
	]
      =	[ w3		word
	]
]

structure BP↑0,37 : @replmi

//Layout of AAtab and VAtab entries
structure IMV:
[	Brkp	bit 2
	blank	bit
	Undef	bit	//This location not defined in VM
	Addr	bit 12	//Absolute address
]

manifest
[
	//bits and addresses for the tester
	strobe= #100000
	nmems = 2
	isend = #100000
	iack = #40000
	bootbit = #20000
	stopbit = #10000
	usend = #4000
	uack = #2000
]

manifest
[	//d0 registers known to Midas
	RXALU  = #376 //These are the volatile registers saved by the kernel on a fault.
	RXAPC  = #375
	RXCTASK= #374
	RXPPB  = #373
	RXSTK  = #372

	stack0 = #360 //These are used by the microcode overlays.
	stack1 = #361
	stack2 = #362
	stack3 = #363
	stack4 = #364
	stack5 = #365
]

manifest [

BpI0 = #147	//first word of breakpoint m-i
BpI1 = #17000	//second word of breakpoint m-i


//manifest of MIDAS to D0 communication codes
	EXOVLcode	= 0b
	WRTMIcode	= 2b
	READRcode	= 4b
	WRITRcode	= 6b
	READMsubcode	= 4b
	WRITEMsubcode	= 5b
	XMAPsubcode	= 6b

// Run and Step codes
	GoStep	= 1 //for step
	GoRunbp	= 2 //for run from bp
	GoRun	= 3 //for run from non-bp

// Kernel Stop codes
	BPstop		= 100 //for normal bp stop
	FAULTstop	= 101 //for fault stop
]

//MidasSwat calls have args 2000 up for machine-dependent code
//Strings are in Midas.Errors
manifest [
BadLoadRam = 2000
BadConstants = 2001
MIMovf = 2002
UndGRegX = 2003
UndPRegX = 2004
KernelBP = 2005
KernelOvf = 2006
KernelRM = 2007
GoVecErr = 2008
PrCCVMemXErr = 2009
PrCCVAAErr = 2010
CantUndoBP = 2011
CantGetBPInst = 2012
CantSetBP = 2013
BadPrintIMMemX = 2014
OVecBug = 2015
NonXVABlock = 2016
NonXAABlock = 2017
BPTableOvf = 2018
BadEngNum = 2019
]