(c) 1996 by H. Robbers @ Amsterdam the Netherlands

For those familiar with MC68000 family processors who desparately want
to go around any other way but cant.


SZ=00:B, 01:W, 10:L     defenitely NOT 11

column 1:
' ' = 68000 family
*   = higher than 68000
1=68010/12, 2=68020, 3=68030, 4=68040, 6=68060, 5=68551, 8=68881,
S=privileged

<.....> = effective address:
 .....  = restrictions on addressing mode:
								 x = 1 octal digit for a register number
c_alt	control alterable		        2x       5x 6x 70 71
c_add	control addressable		        2x       5x 6x 70 71 72 73 74
m_alt	memory alterable		        2x 3x 4x 5x 6x 70 71
d_alt	data alterable			0x      2x 3x 4x 5x 6x 70 71
d_add	data addressable		0x      2x 3x 4x 5x 6x 70 71 72 73 74
alter	all alterable			0x 1xWL 2x 3x 4x 5x 6x 70 71
all								0x 1xWL 2x 3x 4x 5x 6x 70 71 72 73 74
+ 		includes (An)+
-		includes -(An)
D		includes Dn direct

					1	   0				1     0
					5432 109 876 543 210	54321098 76543210
						 r1  m1  m0  r0
	ori  -> ccr		0000 000 000 111 100	00000000 ########	B
S	ori  -> sr		0000 000 001 111 100	######## ########	W
	ori				0000 000 0SZ <d_alt>	#data				B,W,L
	andi -> ccr		0000 001 000 111 100	00000000 ########	B
S	andi -> sr		0000 001 001 111 100	######## ########	W
	andi			0000 001 0SZ <d_alt>	#data				B,W,L
*	cmp2			0000 0SZ 011 <c_add>	Txxx0000 00000000
*	chk2			0000 0SZ 011 <c_add>	Txxx1000 00000000
	subi			0000 010 0SZ <d_alt>	#data				B,W,L
	addi			0000 011 0SZ <d_alt>	#data				B,W,L
2	callm			0000 011 011 <c_add>	00000000 ########
	btst  #n,ea		0000 100 000 <d_add>	00000000 ########
	bchg  #n,ea		0000 100 001 <d_alt>	00000000 ########
	bclr  #n,ea		0000 100 010 <d_alt>	00000000 ########
	bset  #n,ea		0000 100 011 <d_alt>	00000000 ########
	eori -> ccr		0000 101 000 111 100	00000000 ########	B
S	eori -> sr		0000 101 001 111 100	######## ########	W
	eori			0000 101 0SZ <d_alt>	#data				B,W,L
	cmpi			0000 110 0SZ <d_add>	#data				B,W,L
*S	moves			0000 111 0SZ <m_alt>	txxxr000 00000000
*	cas				0000 1ss 011 <m_alt>	0000000u uu000ccc
											ss=01:B, 10:W, 11:L
*	cas2			0000 1ss 011 111 100		zie boek		       
											ss=      10:W, 11:L
	movep			0000 xxx 1rm 001 aaa	
	btst  Dn,ea		0000 xxx 100 <d_add>
	bchg  Dn,ea		0000 xxx 101 <d_alt>
	bclr  Dn,ea		0000 xxx 110 <d_alt>
	bset  Dn,ea		0000 xxx 111 <d_alt>
--------------------------------------------------------------------------------
	move			00ss <d_alt> < all > 	ss=01: B, 11:W, 10:L
	movea			00ss aaa 001 < all >	ss=       11:W, 10:L
					1	   0				1     0
					5432 109 876 543 210	54321098 76543210
						 r1  m1  m0  r0
	negx			0100 000 0SZ <d_alt>
S	move <- sr		0100 000 011 <d_alt>
	clr				0100 001 0SZ <d_alt>
*	move <- ccr		0100 001 011 <d_alt>
	neg				0100 010 0SZ <d_alt>
	move -> ccr		0100 010 011 <d_add>
	not				0100 011 0SZ <d_alt>
S	move -> sr		0100 011 011 <d_add>

*	link.l			0100 100 000 001 aaa	32 bit displ
	nbcd			0100 100 000 <d_alt>
	swap			0100 100 001 000 ddd
*	bkpt			0100 100 001 001 ###
	pea				0100 100 001 <c_add>
	ext				0100 100 0ss 000 ddd	ss=10:W, 11:L
	movem ->mem		0100 100 01s <-c_alt>	mmmmmmmm mmmmmmmm	s=0:W,1:L
	extb.l			0100 100 111 000 ddd						(lea Dn,A4)

	tst				0100 101 0SZ <d_alt>
*	tst				0100 101 0SZ < all >
	tas				0100 101 011 <d_alt>
	illegal			0100 101 011 111 100

*	mulu.l			0100 110 000 <d_add>	0lll0s00 00000hhh
*	muls.l			0100 110 000 <d_add>	0lll1s00 00000hhh
*	divu.l			0100 110 001 <d_add>	0qqq0s00 00000rrr
*	divs.l			0100 110 001 <d_add>	0qqq1s00 00000rrr
	movem ->reg		0100 110 01s <c_add+>	mmmmmmmm mmmmmmmm	s=0:W,1:L

	trap			0100 111 001 00# ###
	link			0100 111 001 010 aaa	dddddddd dddddddd
	unlk			0100 111 001 011 aaa
S	move An,usp		0100 111 001 100 aaa
S	move usp,An		0100 111 001 101 aaa
S	reset			0100 111 001 110 000
	nop				0100 111 001 110 001
S	stop			0100 111 001 110 010	######## ########
S	rte				0100 111 001 110 011
*	rtd				0100 111 001 110 100	dddddddd dddddddd
	rts				0100 111 001 110 101
2	rtm	Dn			0100 111 001 110 ddd
	trapv			0100 111 001 110 110
	rtr				0100 111 001 110 111
*S	movec Rc,Rn		0100 111 001 111 010	txxxcccc cccccccc
*S	movec Rn,Rc		0100 111 001 111 011	txxxcccc cccccccc
*	rtm	An			0100 111 001 111 aaa
	jsr				0100 111 010 <c_add>
	jmp				0100 111 011 <c_add>

*	chk.l			0100 xxx 100 <d_add>
	chk.w			0100 xxx 110 <d_add>
	lea				0100 aaa 111 <c_add>
					1	   0				1     0
					5432 109 876 543 210	54321098 76543210
						 r1  m1  m0  r0
	addq			0101 ### 0SZ <alter>
	subq			0101 ### 1SZ <alter>
	dbcc			0101 cccc 11 001 ddd	dddddddd dddddddd
	scc				0101 cccc 11 <d_alt>
*	trapcc.w #		0101 cccc 11 111 010    ######## ########
*	trapcc.l #		0101 cccc 11 111 011	32 bit data
*	trapcc			0101 cccc 11 111 100
--------------------------------------------------------------------------------
					1	   0				1     0
					5432 1098  7654 3210	54321098 76543210
	bra.b			0110 0000  dddd dddd
	bra.w			0110 0000  0000 0000	dddddddd dddddddd
*	bra.l			0110 0000  1111 1111	32 bits displ
	bsr.b			0110 0001  dddd dddd
	bsr.w			0110 0001  0000 0000	dddddddd dddddddd
*	bsr.l			0110 0001  1111 1111	32 bits displ
	bcc.b			0110 cccc  dddd dddd
	bcc.w			0110 cccc  0000 0000	dddddddd dddddddd
*	bcc.l			0110 cccc  1111 1111	32 bits displ
--------------------------------------------------------------------------------
	moveq			0111 ddd0  #### ####
--------------------------------------------------------------------------------
					1	   0				1     0
					5432 109 876 543 210	54321098 76543210
						 r1  m1  m0  r0
	or  ea,Dn		1000 ddd 0SZ <d_add>
	divu			1000 ddd 011 <d_add>
	sbcd Dx,Dy		1000 yyy 100 000 ddd
	sbcd -(Ax),-(Ay)1000 yyy 100 001 aaa
*	pack Dx,Dy		1000 yyy 101 000 ddd	jjjjjjjj jjjjjjjj
*	pack -(Ax),-(Ay)1000 yyy 101 001 aaa	jjjjjjjj jjjjjjjj
*	unpk Dx,Dy		1000 yyy 110 000 ddd	jjjjjjjj jjjjjjjj
*	unpk -(Ax),-(Ay)1000 yyy 110 001 aaa	jjjjjjjj jjjjjjjj
	or  Dn,ea		1000 ddd 1SZ <m_alt>
	divs			1000 ddd 111 <d_add>
--------------------------------------------------------------------------------
						 r1  m1  m0  r0
	sub	ea,Dn		1001 xxx 0SZ < all >
	suba.w			1001 aaa 011 < all >
	subx Dx,Dy		1001 yyy 1SZ 000 ddd
	subx -(Ax),-(Ay)1001 yyy 1SZ 001 aaa
	sub	Dn,ea		1001 ddd 1SZ <m_alt> 
	suba.l			1001 aaa 111 < all >
--------------------------------------------------------------------------------
	Linea			1010 ### ### ### ###	Line_a emulator
					1	   0				1     0
					5432 109 876 543 210	54321098 76543210
						 r1  m1  m0  r0
	cmp	ea,Dn		1011 ddd 0SZ < all >
	cmpa.w			1011 aaa 011 < all >
	cmpm			1011 xxx 1SZ 001 yyy
	eor	Dn,ea		1011 ddd 1SZ <d_alt>				(cmp Dn,ea misbruikt)
	cmpa.l			1011 aaa 111 < all >
--------------------------------------------------------------------------------
						 r1  m1  m0  r0
	and	 ea,Dn		1100 ddd 0SZ <d_add>
	mulu			1100 ddd 011 <d_add>
	abcd Dx,Dy		1100 yyy 100 000 ddd
	abcd -(Ax),-(Ay)1100 yyy 100 001 aaa
	and	 Dn,ea		1100 ddd 1SZ <m_alt>
	muls			1100 ddd 111 <d_add>
	exg  Dx,Dy		1100 xxx 101 000 yyy
	exg  Ax,Ay		1100 xxx 101 001 yyy
	exg  Dx,Ay		1100 xxx 110 001 yyy
--------------------------------------------------------------------------------
	add	ea,Dn		1101 ddd 0SZ < all >
	adda.w			1101 aaa 011 < all >
	addx Dx,Dy		1101 yyy 1SZ 000 ddd
	addx -(Ax),-(Ay)1101 yyy 1SZ 001 aaa
	add	Dn,ea		1101 ddd 1SZ <m_alt> 
	adda.l			1101 aaa 111 < all >
--------------------------------------------------------------------------------
	asl,asr #,Dn	1110 ### rSZ 000 ddd	shifts: r=0:right,1=left
	lsl,lsr			1110 ### rSZ 001 ddd
	roxl,roxr		1110 ### rSZ 010 ddd
	rol,ror			1110 ### rSZ 011 ddd

	asl,asr Dx,Dy	1110 xxx rSZ 100 yyy
	lsl,lsr			1110 xxx rSZ 101 yyy
	roxl,roxr 		1110 xxx rSZ 110 yyy
	rol,ror			1110 xxx rSZ 111 yyy

	asl,asr <ea>	1110 000 r11 <m_alt>	B
	lsl,lsr			1110 001 r11 <m_alt>	B
	roxl,roxr		1110 010 r11 <m_alt>	B
	rol,ror			1110 011 r11 <m_alt>	B

*	bftst			1110 100 011 <Dc_add>	0000dooo ooDwwwww
*	bfextu			1110 100 111 <Dc_add>	0xxxdooo ooDwwwww
*	bfchg			1110 101 011 <Dc_alt>	0000dooo ooDwwwww
*	bfexts			1110 101 111 <Dc_add>	0xxxdooo ooDwwwww
*	bfclr			1110 110 011 <Dc_alt>	0000dooo ooDwwwww
*	bfffo			1110 110 111 <Dc_add>	0xxxdooo ooDwwwww
*	bfset			1110 111 011 <Dc_alt>	0000dooo ooDwwwww
*	bfins			1110 111 111 <Dc_alt>	0xxxdooo ooDwwwww
					1	   0				1     0
					5432 109 876 543 210	54321098 76543210
						 r1  m1  m0  r0
35S	pload			1111 000 000 <c_alt>	001000r0 000FFFFF zie boek	
5	pvalid			1111 000 000 <c_alt>	00101000 00000rrr	"
3S	pflush			1111 000 000 <c_alt>	001mmm00 MMMFFFFF	"
5S	pflush			1111 000 000 <c_alt>	001mmm0M MMMFFFFF	"	
3S	pmove ea,MRn	1111 000 000 <c_alt>	010ppp00 00000000 for srp,crp&tc
3S	pmove.. MRn,ea	1111 000 000 <c_alt>	010ppp1f 00000000 		"
											011000r0 00000000 for mmusr
											000010rf 00000000 for TT0
											000011rf 00000000 for TT1
												   f = 1: .. = fd

5S	pmove			1111 000 000 < ')  >	010pppr0 00000000 for tc,drp,srp,
															  crp,cal,val,scc,
															  ac
											011pppr0 000num00 for bad,bac
											011pppr0 00000000 for psr,pcsr
					') r=1: alter, r=0: all

3S	ptest			1111 000 000 <c_alt>	100lllra xxxFFFFF
5S	ptest			1111 000 000 <c_alt>	100lllra aaaFFFFF
5S	pflushr			1111 000 000 <m_add>	10100000 00000000	"

5S	pdbcc			1111 000 001 001 ddd	00000000 00cccccc
5S	pscc			1111 000 001 <d_alt>	00000000 00cccccc
5S	ptrapcc			1111 000 001 111 ooo	00000000 00cccccc
5S	pbcc.w			1111 000 010 ccc ccc	dddddddd dddddddd
5S	pbcc.l			1111 000 011 ccc ccc	32 bit displ
5S	psave			1111 000 100 <-c_alt>
5S	prestore		1111 000 101 <c_add+>

*8S fsave			1111 001 100 <-c_alt>
*8S frestore		1111 001 101 <c_add+>

very special are:
*8 fmovem ea,m		1111 001 000 <c_add+>	110-0000 mmmmmmmm
*8 fmovem ea,Dn		1111 001 000 <c_add+>	110-1000 0ddd0000
*8 fmovem m,ea		1111 001 000 <-c_alt>	111+0000 mmmmmmmm
*8 fmovem Dn,ea		1111 001 000 <-c_alt>	111+1000 0ddd0000
					1	   0				1     0
					5432 109 876 543 210	54321098 76543210
						 r1  m1  m0  r0
46S	cinv			1111 010 0cc 0sc aaa	zie boek
46S	cpush			1111 010 0cc 1sc aaa		"
46S	pflush			1111 010 100 0oo aaa		"
4S	ptestw			1111 010 101 001 aaa        "
4S	ptestr			1111 010 101 101 aaa        "
6S	plpa			1111 010 11r 001 aaa        "

46	move16 (Ay)+,L	1111 011 000 000 yyy	32 bit address
46	move16 L,(Ay)+	1111 011 000 001 yyy	32 bit address
46	move16 (Ay),L	1111 011 000 010 yyy	32 bit address
46	move16 L,(Ay)	1111 011 000 011 yyy	32 bit address
46	move16 Ax+,Ay+	1111 011 000 100 xxx	1yyy0000 00000000

6S	lpstop			1111 100 000 000 000	00000001 11000000 #### #### #### ####

General coprocessor instructions:
23	cpGEN			1111 cpi 000 <.....>	command&extensions
23	cpDBcc			1111 cpi 001 001 ddd	00000000 00cccccc
23	cpScc			1111 cpi 001 <d_alt>	00000000 00cccccc
23	cpTRAPcc		1111 cpi 001 111 ooo	00000000 00cccccc + word|long
23	cpBcc.w			1111 cpi 010 ccc ccc
23	cpBcc.l			1111 cpi 011 ccc ccc
23S cpSAVE			1111 cpi 100 <-c_alt>
23S cpRESTORE		1111 cpi 101 <c_add+>

On the 68040 and 68060 the following floating point opcodes
have the fs.... and fd.... variants:
				s		d
fabs	0x18	0x58	0x5c
fadd	0x22	0x62	0x66
fdiv	0x20	0x60	0x64
fmove	0x00	0x40	0x44
fmul	0x23	0x63	0x67
fneg	0x1a	0x5a	0x5e
fsqrt	0x04	0x41	0x45
fsub	0x28	0x68	0x6c
