

; Class definitions
; These are equates for classes used in the table

INH	equ	$01
IMM	equ	$02
LGEN	equ	$85
INDEX	equ	$04
GEN	equ	$05
REL	equ	$06
P2LREL	equ	$86			; long relative branches (page 2)	
PAGE2	equ	$18
P2INH	equ	$07			; page 2 inherent 
andcci	equ	$08			; instructions that translate to ANDCC
orcci	equ	$14			; instructions that translate to ORCC
SPEC	equ	$09			; "special" instructions that lack any
					; organization in the mnem table
SPEC2	equ	$10			; these are a class of special instructions that
					; are in col 7 of the table on p. A-20
					; they share addr modes and numbering

					; Notice, each table entry is 6 bytes
					; the mnemonic is ALWAYS 4 bytes, with a space
					; added to make it so. the next two bytes are
					; the class and the opcode

mnemtable:
	dc.b	'aba '			; mnemonic
	dc.b	P2INH			; class
	dc.b	$06			; opcode

	dc.b	'abx '
	dc.b	INDEX		
	dc.b	$1a

	dc.b	'aby '
	dc.b	INDEX
	dc.b	$19

	dc.b	'adca'
	dc.b	GEN
	dc.b	$89

	dc.b	'adcb'
	dc.b	GEN
	dc.b	$c9

	dc.b	'adda'
	dc.b	GEN
	dc.b	$8b

	dc.b	'addb'
	dc.b	GEN
	dc.b	$cb

	dc.b	'addd'
	dc.b	LGEN
	dc.b	$c3

	dc.b	'anda'
	dc.b	GEN
	dc.b	$84

	dc.b	'andb'
	dc.b	GEN
	dc.b	$c4

	dc.b	'andc'		; ANDCC
	dc.b	IMM
	dc.b	$10

	dc.b	'asl '
	dc.b	SPEC2	
	dc.b	$68

	dc.b	'asla'
	dc.b	INH
	dc.b	$48

	dc.b	'aslb'
	dc.b	INH
	dc.b	$58

	dc.b	'asld'
	dc.b	INH
	dc.b	$59

	dc.b	'asr '
	dc.b	SPEC2
	dc.b	$67

	dc.b	'asra'
	dc.b	INH	
	dc.b	$47

	dc.b	'asrb'
	dc.b	INH
	dc.b	$57

	dc.b	'bcc '
	dc.b	REL
	dc.b	$24

	dc.b	'bclr'
	dc.b	SPEC
	dc.b	$0d

	dc.b	'bcs '
	dc.b	REL
	dc.b	$25

	dc.b	'beq '
	dc.b	REL
	dc.b	$27

	dc.b	'bge '
	dc.b	REL
	dc.b	$2c

	dc.b	'bgnd'
	dc.b	INH
	dc.b	$00

	dc.b	'bgt '
	dc.b	REL
	dc.b	$2e

	dc.b	'bhi '
	dc.b	REL
	dc.b	$22

	dc.b	'bhs '
	dc.b	REL	
	dc.b	$24

	dc.b	'bita'
	dc.b	GEN
	dc.b	$85

	dc.b	'bitb'
	dc.b	GEN
	dc.b	$c5

	dc.b	'ble '
	dc.b	REL
	dc.b	$2f

	dc.b	'blo '
	dc.b	REL
	dc.b	$25
	
	dc.b	'bls '
	dc.b	REL
	dc.b	$23

	dc.b	'blt '
	dc.b	REL
	dc.b	$2d

	dc.b	'bmi '
	dc.b	REL
	dc.b	$2b

	dc.b	'bne '
	dc.b	REL
	dc.b	$26

	dc.b	'bpl '
	dc.b	REL
	dc.b	$2a

	dc.b	'bra '
	dc.b	REL
	dc.b	$20

	dc.b	'brcl'		; BRCLR
	dc.b	SPEC
	dc.b	$4f

	dc.b	'brn '
	dc.b	REL
	dc.b	$21

	dc.b	'brse'		; BRSET
	dc.b	SPEC
	dc.b	$4e

	dc.b	'bset'
	dc.b	GEN
	dc.b	$4c

	dc.b	'bsr '
	dc.b	REL
	dc.b	$07

	dc.b	'bvc '
	dc.b	REL
	dc.b	$28

	dc.b	'bvs '
	dc.b	REL
	dc.b	$29

	dc.b	'call'
	dc.b	SPEC
	dc.b	$4a

	dc.b	'cba '
	dc.b	P2INH
	dc.b	$17

	dc.b	'clc '
	dc.b	andcci
	dc.b	$fe

	dc.b	'cli '
	dc.b	andcci
	dc.b	$ef
	
	dc.b	'clr '
	dc.b	SPEC2
	dc.b	$69

	dc.b	'clra'
	dc.b	INH
	dc.b	$87

	dc.b	'clrb'
	dc.b	INH
	dc.b	$c7

	dc.b	'clv '
	dc.b	andcci
	dc.b	$fd

	dc.b	'cmpa'
	dc.b	GEN
	dc.b	$81

	dc.b	'cmpb'
	dc.b	GEN
	dc.b	$c1

	dc.b	'com '
	dc.b	SPEC2
	dc.b	$61
	
	dc.b	'coma'
	dc.b	INH	
	dc.b	$41

	dc.b	'comb'
	dc.b	INH
	dc.b	$51

	dc.b	'cpd '
	dc.b	GEN
	dc.b	$8c

;	dc.b	'cps '
;	dc.b
;	dc.b

;	dc.b	'cpx '
;	dc.b
;	dc.b
	
;	dc.b	'cpy '
;	dc.b
;	dc.b

	dc.b	'daa '
	dc.b	P2INH
	dc.b	$07

;	dc.b	'dbeq'
;	dc.b
;	dc.b
	
;	dc.b	'dbne'
;	dc.b
;	dc.b

	dc.b	'dec '
	dc.b	SPEC2
	dc.b	$63
	
	dc.b	'deca'
	dc.b	INH
	dc.b	$43

	dc.b	'decb'
	dc.b	INH
	dc.b	$53

	dc.b	'des '
	dc.b	INDEX
	dc.b	$1b

	dc.b	'dex '
	dc.b	INH
	dc.b	$09

	dc.b	'dey '
	dc.b	INH
	dc.b	$03

	dc.b	'ediv'
	dc.b	INH
	dc.b	$11

	dc.b	'edvs'			; EDIVS
	dc.b	P2INH
	dc.b	$14

	; skipping EMACS, EMAXD, EMAXM, EMIND, EMINM, EMUL, EMULS, ETBL

	dc.b	'eora'
	dc.b	GEN
	dc.b	$88

	dc.b	'eorb'
	dc.b	GEN
	dc.b	$c8
	
;	dc.b	'exg '
;	dc.b
;	dc.b

	dc.b	'fdiv'
	dc.b	P2INH
	dc.b	$11

	; skipping IBEQ, IBNE

	dc.b	'idiv'
	dc.b	P2INH
	dc.b	$10

	dc.b	'idvs'		; IDIVS
	dc.b	P2INH
	dc.b	$15

	dc.b	'inc '
	dc.b	SPEC2
	dc.b	$62

	dc.b	'inca'
	dc.b	INH	
	dc.b	$42

	dc.b	'incb'
	dc.b	INH
	dc.b	$52

	dc.b	'ins '
	dc.b	INDEX
	dc.b	$1b

	dc.b	'inx '
	dc.b	INH
	dc.b	$08

	dc.b	'iny '
	dc.b	INH
	dc.b	$02

	; skipping JMP

jsr_mnem	dc.b	'jsr '
	dc.b	SPEC
jsr_op	dc.b	$15


	dc.b	'lbcc'
	dc.b	P2LREL
	dc.b	$24

	dc.b	'lbcs'
	dc.b	P2LREL
	dc.b	$25

	dc.b	'lbeq'
	dc.b	P2LREL
	dc.b	$27

	dc.b	'lbge'
	dc.b	P2LREL
	dc.b	$2c

	dc.b	'lbgt'
	dc.b	P2LREL
	dc.b	$2e

	dc.b	'lbhi'
	dc.b	P2LREL
	dc.b	$22

	dc.b	'lbhs'			; this compiles to LBCC!
	dc.b	P2LREL
	dc.b	$24

	dc.b	'lble'
	dc.b	P2LREL
	dc.b	$2f

	dc.b	'lblo'
	dc.b	P2LREL
	dc.b	$25			; this compiles to LBCS!

	dc.b	'lbls'
	dc.b	P2LREL
	dc.b	$23

	dc.b	'lbne'	
	dc.b	P2LREL
	dc.b	$26
	
	dc.b	'lbpl'
	dc.b	P2LREL
	dc.b	$2a

	dc.b	'lbra'
	dc.b	P2LREL
	dc.b	$20

	dc.b	'lbrn'
	dc.b	P2LREL
	dc.b	$21

	dc.b	'lbvc'
	dc.b	P2LREL
	dc.b	$28

	dc.b	'lbvs'
	dc.b	P2LREL
	dc.b	$29

	dc.b	'ldaa'
	dc.b	GEN
	dc.b	$86

	dc.b	'ldab'
	dc.b	GEN
	dc.b	$c6

	dc.b	'ldd '
	dc.b	LGEN
	dc.b	$cc

	dc.b	'lds '
	dc.b	LGEN
	dc.b	$cf

	dc.b	'ldx '
	dc.b	LGEN
	dc.b	$ce
	
	dc.b	'ldy '
	dc.b	LGEN
	dc.b	$cd

	; skipping LEAS, LEAX, LEAY

	dc.b	'lsl '				; BAD!
	dc.b	GEN	
	dc.b	$68

	dc.b	'lsla'
	dc.b	INH
	dc.b	$48

	dc.b	'lslb'
	dc.b	INH
	dc.b	$58

	dc.b	'lsld'
	dc.b	INH
	dc.b	$59
		
	dc.b	'lsr '				; BAD!
	dc.b	SPEC2
	dc.b	$64

	dc.b	'lsra'
	dc.b	INH
	dc.b	$44

	dc.b	'lsrb'
	dc.b	INH
	dc.b	$54

	dc.b	'lsrd'
	dc.b	INH
	dc.b	$49

	; skipping MAXA, MAXM, MEM, MINA, MINM

	; need to do MOVB, MOVW

	dc.b	'mul '
	dc.b	INH
	dc.b	$12

	dc.b	'neg '
	dc.b	SPEC2
	dc.b	$60				; BAD!

	dc.b	'nega'
	dc.b	INH
	dc.b	$40

	dc.b	'negb'
	dc.b	INH
	dc.b	$50

	dc.b	'nop '
	dc.b	INH
	dc.b	$a7
	
	dc.b	'oraa'
	dc.b	GEN
	dc.b	$8a

	dc.b	'orab'
	dc.b	GEN
	dc.b	$ca

	dc.b	'orcc'
	dc.b	IMM
	dc.b	$14

	dc.b	'psha'
	dc.b	INH
	dc.b	$36

	dc.b	'pshb'
	dc.b	INH
	dc.b	$37

	dc.b	'pshc'
	dc.b	INH
	dc.b	$39

	dc.b	'pshd'
	dc.b	INH
	dc.b	$3b

	dc.b	'pshx'
	dc.b	INH
	dc.b	$34

	dc.b	'pshy'
	dc.b	INH
	dc.b	$35

	dc.b	'pula'
	dc.b	INH
	dc.b	$32

	dc.b	'pulb'
	dc.b	INH
	dc.b	$33
	
	dc.b	'pulc'
	dc.b	INH
	dc.b	$38

	dc.b 	'puld'
	dc.b	INH
	dc.b	$3a

	dc.b	'pulx'
	dc.b	INH
	dc.b	$30

	dc.b	'puly'
	dc.b	INH
	dc.b	$31

	; skip REV, REVW

	dc.b	'rol '		; BAD
	dc.b	SPEC2
	dc.b	$65		

	dc.b	'rola'
	dc.b	INH
	dc.b	$45

	dc.b	'rolb'
	dc.b	INH
	dc.b	$55

	dc.b	'ror '		; BAD!
	dc.b	SPEC2
	dc.b	$66

	dc.b	'rora'
	dc.b	INH
	dc.b	$46
	
	dc.b	'rorb'
	dc.b	INH
	dc.b	$56
	
	dc.b	'rtc '
	dc.b	INH
	dc.b	$0a

	dc.b	'rti '
	dc.b	INH
	dc.b	$08

	dc.b	'rts '
	dc.b	INH
	dc.b	$3d
	
	dc.b	'sba '
	dc.b	P2INH
	dc.b	$16

	dc.b	'sbca'
	dc.b	GEN
	dc.b	$82

	dc.b	'sbcb'
	dc.b	GEN
	dc.b	$c2

	dc.b	'sec '
	dc.b	orcci
	dc.b	$01

	dc.b	'sei '
	dc.b	orcci
	dc.b	$10

	dc.b	'sev '
	dc.b	orcci
	dc.b	$02

;	dc.b	'sex '
;	dc.b	INH
;	dc.b	??

	dc.b	'staa'
	dc.b	GEN
	dc.b	$5a

	dc.b	'stab'
	dc.b	GEN
	dc.b	$5b

	dc.b	'std '
	dc.b	LGEN
	dc.b	$5c

	dc.b	'stop'
	dc.b	P2INH
	dc.b	$3e

	dc.b	'sts '
	dc.b	LGEN
	dc.b	$5f

	dc.b	'stx '
	dc.b	LGEN
	dc.b	$5e

	dc.b	'sty '
	dc.b	LGEN
	dc.b	$5d

	dc.b	'suba'
	dc.b	GEN
	dc.b	$80

	dc.b	'subb'
	dc.b	GEN
	dc.b	$c0
	
	dc.b	'subd'
	dc.b	LGEN
	dc.b	$83

	dc.b	'swi '
	dc.b	INH
	dc.b	$3f

	dc.b	'tab '
	dc.b	P2INH
	dc.b	$0e

	; skip TAP

	dc.b	'tba '
	dc.b	P2INH
	dc.b	$0f

	; skip TBEQ, TBL, TBNE, TFR, TPA

	; note that TRAP isn't really an opcode! how to test for it?

	dc.b	'tst '		; BAD!
	dc.b	GEN
	dc.b	$f7

	dc.b	'tsta'
	dc.b	INH
	dc.b	$97

	dc.b	'tstb'
	dc.b	INH
	dc.b	$d7

	; skip TSX, TSY, TXS, TYS

	dc.b	'wai '
	dc.b	INH
	dc.b	$3e

	; skip WAV, XGDX, XGDY

tblend		dc.b	'end '
lastclass	dc.b	$ff

	
