Microinstruction Summary

Fields:
		0-4		RSELECT
		5-8		ALUF
		9-11	BS
		12-15	F1*
		16-19	F2*
		20		LOAD T
		21		LOAD L & M*
		22-31	NEXT

			* High-order bit complemented in RDRAM and WRTRAM

ALUF:
		0:	BUS				4: BUS XOR T	10: BUS - T			14: BUS . T*
		1:	T				5: BUS + 1*		11: BUS - T -1		15: BUS AND NOT T
		2:	BUS OR T*		6: BUS -1*		12:	BUS + T +1*		16:	--undef--
		3:	BUS AND T		7: BUS +T		13: BUS + SKIP*		17: --undef--
		* Loads T from ALU output

BUS SOURCE (standard):
		0:	<-RLOCATION		4: (task specific)
		1:	RLOCATION<-		5: <-MD
		2:	None(BUS<- -1)	6: <-MOUSE
		3:	(task specific)	7: <-DISP

BUS SOURCE (task-specific):

		0 (cpu)			4,16 (ksec,kwd)		7 (ether)	ram related
		3: <-SLOCATION	<-KSTAT				-			<-SLOCATION
		4: SLOCATION<-	<-KDATA				EIDFCT		SLOCATION<-
		
F1 (standard)

		0: -				4:	<- L LSH 1
		1: MAR<-			5:	<- L RSH 1
		2: TASK				6:	<- L LCY 8
		3: BLOCK			7:	<- CONSTANT

F1 (task-specific)

		0			4,16		7		11		12		13			14			ram related
		cpu			ksec,kwd	ether	dwt		curt	dht			dvt
10:		SWMODE		-			-		-		-		-			-			(SWMODE)
11:		WRTRAM		STROBE		-		-		-		-			-			WRTRAM
12:		RDRAM		KSTAT<-		-		-		-		-			-			RDRAM
13:		RMR<-		INCRECNO	ELFCT	-		-		-			-			SRB<-
14:		-			CLRSTAT		EPFCT	-		-		-			-			-
15:		ESRB<-		KCOMM<-		EWFCT	-		-		-			-			-
16:		RSNF		KADR<-		-		-		-		-			-			-
17:		STARTF		KDATA<-		-		-		-		-			-			-

F2 (standard)

		0: -				4:	BUS
		1: BUS = 0			5:	ALUCY
		2: SH < 0			6:	MD<-
		3: SH = 0			7:	<-CONSTANT

F2 (task-specific)

		0			4,16		7		11		12		13			14			ram related
		cpu			ksec,kwd	ether	dwt		curt	dht			dvt
10:		BUSODD		INIT		EODFCT	DDR<-	XPREG<-	EVENFIELD	EVENFIELD	-
11:		MAGIC		RWC			EOSFCT	-		CSR<-	SETMODE		-			-
12:		DNS<-		RECNO		ERBFCT	-		-		-			-			-
13:		ACDEST		XFRDAT		EEFCT	-		-		-			-			-
14:		IR<-		SWRNRDY		EBFCT	-		-		-			-			-
15:		IDISP		NFER		ECBFCT	-		-		-			-			-
16:		ACSOURCE	STROBON		EISFCT	-		-		-			-			-
17:		-			-			-		-		-		-			-			-

R Registers R0  - R37
S Registers R40 - R77

NOVA Emulator
-------------

R0		AC3
R1		AC2
R2		AC1
R3		AC0
R4		NWW
R5		SAD
R6		PC
R7		XREG
R10		XH

R35		DWAX
R36		SWA
R40		LREG
R41		NLINES
R42		RAST1
R43		SRCX
R44		SRCY
R45		CONST
R46		HCNT
R47		HINC
R50		NWORDS
R51		MASK2

model 31 disc
-------------

R31		xKWDCT
R32		xCKSUMR
R33		xKNMAR
R34		xDCBR

display
-------

R20		CURX
R21		CURDATA
R22		xCBA
R23		xAECL
R24		xSLC
R25		xMTEMP
R26		xHTAB
R27		xYPOS
R30		xDWA

ethernet
--------

R12		xECNTR
R13		xEPNTR

memory refresh
--------------

R11		xCLOCKTEMP
R37		xR37

audio (obsolete)
----------------

R71		xAudioWdCt
R72		xAudioData


-- registers used by Mesa emulator
; R registers

R35		temp			(also used by bitblt)
R36		temp2			(also used by bitblt)
R15		mpc				Mesa PC
R16		stkp			stack pointer [0-10] 0 empty, 10 full
R17		XTSreg			xfer trap state

R0		brkbyte			(AC3) bytecode to execute after breakpoint
R1		mx				(AC2) x register for XFER
R2		saveret			(AC1) r-temporary for return indices and values
R3		newfield		(AC0) new field bits for WF and friends

R5		count			scratch R register for counting
R7		taskhole		pigeonhole for saving things across TASKs

R10		ib				instruction byte
R37		clockreg		low order bits of real time clock

; S registers, coan't shift into them, BUS not zero while storing.

R51		my				y register for XFER
R52		lp				local pointer
R53		gp				global pointer
R54		cp				code pointer
R55		ATPreg			allocation trap parameter
R56		OTPreg			other trap parameter
R57		XTPreg			xfer trap parameter
R70		wdc				wakeup disable counter

; Mesa evaluation stack

R60		stk0			stack (bottom)
R61		stk1
R62		stk2
R63		stk3
R64		stk4
R65		stk5
R66		stk6
R67		stk7			stack (top)

; Miscellaneous S registers

R41		mask			used by string instructions
R42		unused1			not safe across call to BITBLT
R43		unused2			not safe across call to BITBLT
R44		alpha			alpha byte (among other things)
R45		index			frame size index (among other things)
R46		entry			allocation table entry address (among other things)
R47		frame			allocated frame pointer (among other things)
R41		righthalf		right 4 bits of alpha or beta
R45		lefthalf		left 4 bits of alpha or beta
R50		unused3			not safe across call to BITBLT


Reserved memory locations

location			name			contents

Page 0:

0-17								Set to 77400B by OS (Swat)

Page 1:

400-412								Used by standard bootstrap operation
420					DASTART			Display list header (Std. Microcode)
421					-				Display vertical field interrupt bitword (Std Microcode)
422					ITQUAN			Interval timer stored quantitiy (Std. Microcode)
423					ITBITS			Interval timer bitword 	(Std. Microcode)
424					MOUSEX			Mouse X coordinate (Std. Microcode)
425					MOUSEY			Mouse Y coordinate (Std. Microcode)
426					CURSORX			Cursor X coordinate (Std. Microcode)
427					CURSORY			Cursor Y coordinate (Std. Microcode)
430					RTC				Real Time Clock (Std. Microcode)
431-450				CURMAP			Cursor bitmap (Std. Microcode)
452					WW				Interrupt wakeups waiting (Std. Microcode)
453					ACTIVE			Active interrupt bitword (Std. Microcode)
457					-				Zero (Extension of MASKTAB by convention; set by OS)
460-477				MASKTAB			Mask table for convert (Std. Microcode; set by OS)
500					PCLOC			Saved interrupt PC (Std. Microcode)
501-517				INTVEC			Interrupt Transfer Vector (Std. Microcode)

521					KBLK			Disk command block address (Std. Microcode)
522					KSTAT			Disk status at start of current sector (Std. Microcode)
523					KADDR			Disk address of latest disk command (Std. Microcode)
524					-				Sector interrupt bit mask (Std. Microcode)

525					ITTIME			Interval timer time (Std. Microcode)
527					TRAPPC			Trap saved PC (Std. Microcode)

530-567				TRAPVEC			Trap Vector (Std. Microcode)

570-577				-				Timer data (OS)
600					EPLOC			Ethernet post location (Std. Microcode)
601					EBLOC			Ethernet interrupt bit mask (Std. Microcode)
602					EELOC			Ethernet ending count (Std. Microcode)
603					ELLOC			Ethernet load location (Std. Microcode)
604					EICLOC			Ethernet input buffer count (Std. Microcode)
605					EIPLOC			Ethernet input buffer pointer (Std. Microcode)
606					EOCLOC			Ethernet output buffer count (Std. Microcode)
607					EOPLOC			Ethernet output buffer pointer (Std. Microcode)
610					EHLOC			Ethernet host address (Std. Microcode)
611-612				-				Reserved for Ethernet expansion (Std. Microcode)
613					-				Alto I/II indication that microcode can interrogate (0=Alto, -1=AltoII)
614					DCBR			Posted by parity task when a main memory parity error is detected
615					KNMAR			"" (Std. Microcode)
616					DWA				"" (Std. Microcode)
617					CBA				"" (Std. Microcode)
620					PC				"" (Std. Microcode)
621					SAD				"" (Std. Microcode)

(Note: Disk and Ethernet bootstrap loaders run in 622-777)

700-707				-				Saved registers (Swat)

Page 376B:

177016 - 177017		UTILOUT			Printer output (Std. Hardware)
177020 - 177023		XBUS			Utility input bus (Alto II Std. Hardware)
177024				MEAR			Memory Error Address Register (Alto II Std. Hardware)
177025				MESR			Memory error status register (Alto II Std. Hardware)
177026				MECR			Memory error control register (Alto II Std. Hardware)
177030 - 177033		UTILIN			Printer status, mouse, keyset (all 4 locations return same thing)
177034 - 177037		KBDAD			Undecoded keyboard (Std. Hardware)

Page 377B:

177740 - 177757		BANKREGS		Extended memory option bank registers

PARC / SDD Reserved Locations

Page 0:

451					-				Color map pointer
456					-				Mesa disaster flag
526					-				SmallTalk trap exit instruction
622					-				Tape control block list
630 - 640			-				Second Ethernet control block
631 - 661			-				Hexadecimal floating-point microcode

640 - 644			-				Trident disk control block
									640 = pointer to first disk command block
									641 = number of currently selected drive
									642 = cylinder position used for the last command
									643 = status of current drive at last sector pulse
									644 = error which caused the last transfer to be aborted
									
640 - 651			-				Third Ethernet control block
720 - 777			-				SLOT devices
776 - 777			-				Music

Page 376B:

177100				-				Sumagraphics tablet X
177101				-				Sumagraphics tablet Y
177140 - 177157		-				Organ keyboard
177200 - 177204		-				PROM programmer
177234 - 177237		-				Experimental ursor control
177240 - 177257		-				Alto II debugger
177244 - 177247		-				Graphics keyboard

Page 377B:

177400 - 177405		-				Maxc2 maintenance interface
177400				-				Alto DLS input
177420				-				""
177440				-				""
177460				-				""
177600 - 177677		-				Alto DLS output
177700				-				EIA interface output bit
177701				EIALOC			EIA interface input bit
177720 - 177737		-				TV Camera Interface
177764 - 177773		-				Redactron tape drive
177776				-				Digital-Analog Converter
177776				-				Digital-Analog Converter, Joystick
177777				-				Digital-Analog Converter, Joystick

S-Group Instruction Summary

Opcode			Trap Location		Name
60000 - 60377	--					CYCLE
60400 - 60777	531					RAM trap
61000 - 61377	532					Parameterless opcodes to 61026, ROM trap for rest
61400 - 61777	533					RAM trap
62000 - 62377	534					RAM trap
62400 - 62777	535					RAM trap
63000 - 63377	536					RAM trap
63400 - 63777	536					RAM trap
64000 - 64377	537					RAM trap
64400 - 64777	--					JSRII
65000 - 65377	--					JSRIS
65400 - 65777	543					RAM trap
66000 - 66377	544					RAM trap
66400 - 66777	545					RAM trap
67000 - 67377	--					CONVERT
67400 - 67777	547					RAM trap
70000 - 70377	550					RAM trap
70400 - 70777	551					RAM trap
71000 - 71377	552					RAM trap
71400 - 71777	553					RAM trap
72000 - 72377	554					RAM trap
72400 - 72777	555					RAM trap
73000 - 73377	556					RAM trap
73400 - 73777	557					RAM trap
74000 - 74377	560					RAM trap
74400 - 74777	561					RAM trap
75000 - 75377	562					RAM trap
75400 - 75777	563					RAM trap
76000 - 76377	564					RAM trap
76400 - 76777	565					RAM trap
77000 - 77377	566					RAM trap
77400 - 77777	567					RAM trap

