	MACHINE 68020

	SECTION 6502,CODE

	XDEF	_JUMPTBL
	XDEF	_START00
	XDEF	_RESET00
	XDEF	_PAUSE00
	XREF	_rom
	XREF	_scrn
	XREF	_chars
	XDEF	_screenwrite
	XREF	_SIGMASK
	XREF	_PROGCOUNT
	XREF	_CINST
	XREF	_READY
	XREF	_TRACE
	XREF	_CA
	XREF	_CX
	XREF	_CY
	XREF	_CSP
	XREF	_CP
	XREF	_keyrows

DEEBUG	EQU	1		; MAKE 0 TO DISABLE DEBUG CODE
P65C02	EQU	0		; MAKE 1 TO ALLOW 65C02 OPCODES


_START00:
	MOVEM.L	A0-A6/D0-D7,-(SP)

	MOVE.L	4,A6
	MOVE.B	#-1,D0
	JSR	-$014A(A6)	; ALLOCSIGNAL
	MOVEQ	#0,D1
	BSET	D0,D1
	MOVE.L	D1,_SIGMASK	; SAVE IN _SIGMASK IN MAIN PROG

	BSR.B	RESTRT		; SET UP 6502 JUMPS
	move.l	_JUMPTBL,a3
	adda.l	#$20000,a3
	MOVE.L	#_rom,a0
	MOVE.L	#FLAGTABL,A6	; SET UP FLAG CONVERSION TABLE
	MOVEQ.L	#0,D0		; A=0  ZERO ALL REGS
	MOVEQ.L	#0,D1
	MOVEQ.L	#0,D2		; X=0
	MOVEQ.L	#0,D3		; Y=0
	MOVEQ.L	#0,D4		; SP=0
	MOVEQ.L	#0,D5		; FLAGS=00
	MOVEQ.L	#0,D6		; EXT FLAGS =00

	MOVE.W	($0000FFFC,A0),D7	; GET RESET VECTOR
	ROR.W	#8,D7
	MOVE.L	D7,A2
	ADDA.L	A0,A2
	MOVE.L	A0,a4
	ADDA.L	#$100,A4	; SET SP BASE TO ADD $0100
	move.w	(a2)+,d1	; LOAD INSTRUCTION
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


NMI:				; RESET BUTTON COMES HERE
	BSR.B	RESTRT		; SET UP 6502 JUMPS
	move.l	_JUMPTBL,a3
	adda.l	#$20000,a3
	MOVE.L	#_rom,a0
	MOVE.L	#FLAGTABL,A6	; SET UP FLAG CONVERSION TABLE

	MOVE.L	A0,a4		; 
	ADDA.L	#$100,A4	; SET SP BASE TO ADD $0100

	MOVEQ.L	#0,D0		; A=0  ZERO ALL REGS
	MOVEQ.L	#0,D1
	MOVEQ.L	#0,D2		; X=0
	MOVEQ.L	#0,D3		; Y=0
	MOVEQ.L	#0,D4		; SP=0
	MOVEQ.L	#0,D5		; FLAGS=00
	MOVEQ.L	#0,D6		; EXT FLAGS =00
	MOVE.W	($0000FFFC,A0),D7	; GET RESET VECTOR
	ROR.W	#8,D7
	MOVE.L	D7,A2
	ADDA.L	A0,A2

	move.w	(a2)+,d1	; LOAD INSTRUCTION AT 0000
	JMP	([A3,D1.W*4])	; AND AWAY WE GO!!!!!!

PAUSE:				; PAUSE BUTTON COMES HERE

	MOVEM.L	A0-A6/D0-D7,-(SP);SAVE ALL REGS

	SUBQ.L	#2,A2		; SET PC BACK BEFORE THIS INST.
	SUBA.L	A0,A2		; REMOVE AMIGA BASE ADD.
	MOVE.W	A2,_PROGCOUNT

	BSR.B	RESTRT		; SET UP 6502 JUMPS

	MOVE.L	4,A6
	MOVE.L	_SIGMASK,D0
	JSR	-$013E(A6)	; WAIT FOR SIG FROM MAIN PROG

	MOVEM.L	(SP)+,A0-A6/D0-D7

	MOVEQ	#0,D7
	MOVE.W	_PROGCOUNT,D7
	MOVE.L	A0,A2
	ADDA.L	D7,A2
	MOVE.W	(A2)+,D1

	JMP	([A3,D1.W*4])	; AND AWAY WE GO!!!!!!

	IF	DEEBUG
DEBUG:				; SINGLESTEP DEBUG CODE

	MOVEM.L	A0-A6/D0-D7,-(SP);SAVE ALL REGS

	SUBQ.L	#2,A2		; SET PC BACK BEFORE THIS INST.
	MOVE.L	(A2),_CINST	; SAVE 4 BYTES AT 6502 PC FOR DEBUGGING
	SUBA.L	A0,A2		; REMOVE AMIGA BASE ADD.
	MOVE.W	A2,_PROGCOUNT

	MOVE.B	D0,_CA
	MOVE.B	D2,_CX
	MOVE.B	D3,_CY
	MOVE.W	D4,_CSP

	MOVE.B	(A6,D5.W),D7	; GET 6502 EQUIV OF 680X0 REGS
	OR.B	D6,D7
	MOVE.B	D7,_CP

	MOVEQ	#1,D7
	MOVE.W	D7,_READY	; READY TO READ VARIABLES

	MOVE.W	_TRACE,D7	; IS SINGLESTEP ON?
	BEQ.S	NOTRCE

	MOVE.L	4,A6
	MOVE.L	_SIGMASK,D0
	JSR	-$013E(A6)	; WAIT FOR SIG FROM MAIN PROG

NOTRCE:	MOVEM.L	(SP)+,A0-A6/D0-D7 ; RESTORE ALL REGS

	JMP	([A3,D1.W*4])	; AND AWAY WE GO!!!!!!
	ENDIF



*	A0 = amiga address of 6502 $0000 (CONSTANT)
*	A2 = amiga address of current 6502 PC (not the actual 6502 PC)
*	A3 = base address of instruction vector table
*	A4 = AMIGA address of SP BASE $0100
*	A6 = BASE ADDRESS OF LOOKUP TABLES FOR FLAGS,H FLAG,PARITY.


*	D1.W = current opcode + following single byte operand
*	(ALSO AVAILABLE FOR TEMPORARY USE WITHIN AN EMULATED INSTRUCTION) 
*	D0.B = current A  value
*	D2.B = current X  value
*	D3.B = current Y  value
*	D4.B = CURRENT SP value
*	D5.B = FLAGS (680X0 FLAGS NOT 6502)
*	D6.L = FLAGS (EXTENDED 6502 B,D,I)
*	D7.L = TEMPORARY WORK REGISTER 2

*			    7   6   5   4   3   2   1   0

*	680x0 FLAG BITS	    -   -   -   X   N   Z   V   C

*	6502  FLAG BITS     N   V   -   B   D   I   Z   C

*	B,D,I are saved in D6.B


RESTRT:	MOVE.L	4,A6
	JSR	-$0084(A6)	; Forbid()
	MOVE.L	#MNTBL,A0	; SET UP MAIN INSTRUCTION VECTORS
	MOVE.L	_JUMPTBL,A1
	MOVE.W	#$00FF,D1
.L1:	MOVE.W	#$00FF,D0
	MOVE.L	(A0)+,A5
.L2:	MOVE.L	A5,(A1)+
	DBRA	D0,.L2
	DBRA	D1,.L1

.L3:	MOVE.L	4,A6
	JSR	-$008A(A6)	; Permit()
	RTS


_RESET00:	; RESETS THE 6502 AFTER THE CURRENT INSTRUCTION (CALLED FROM MAIN PROCESS)

	MOVEM.L	A0-A6/D0-D7,-(SP)	
	MOVE.L	4,A6
	JSR	-$0084(A6)	; Forbid()
	MOVE.L	_JUMPTBL,A1
	MOVE.W	#$00FF,D1
.L1:	MOVE.W	#$00FF,D0
	MOVE.L	#NMI,A5
.L2:	MOVE.L	A5,(A1)+
	DBRA	D0,.L2
	DBRA	D1,.L1
	MOVE.L	4,A6
	JSR	-$008A(A6)	; Permit()
	MOVEM.L	(SP)+,A0-A6/D0-D7
	RTS

_PAUSE00:	; PAUSES THE 6502 AFTER THE CURRENT INSTRUCTION (CALLED FROM MAIN PROCESS)

	MOVEM.L	A0-A6/D0-D7,-(SP)	
	MOVE.L	4,A6
	JSR	-$0084(A6)	; Forbid()
	MOVE.L	_JUMPTBL,A1
	MOVE.W	#$00FF,D1
.L1:	MOVE.W	#$00FF,D0
	MOVE.L	#PAUSE,A5
.L2:	MOVE.L	A5,(A1)+
	DBRA	D0,.L2
	DBRA	D1,.L1
	MOVE.L	4,A6
	JSR	-$008A(A6)	; Permit()
	MOVEM.L	(SP)+,A0-A6/D0-D7
	RTS	


_screenwrite: *************************************************

*	ON ENTRY D1.W	HOLDS #$XXXX (D000-D3FF) (D000-D7FF FOR 64x32)
*		 D7.B	HOLDS ASCII CHAR 00-FF

              MOVEM.L        A0/A2,-(A7)        ;
	      ANDI.W	     #$03FF,D1		; GET SCREEN POS

              LEA            _scrn,A0
              MOVE.L         (A0,D1.L*4),A0	;PTR FOR CURRENT CHAR SCREEN LINE
              MOVEQ.L        #$0,D1                   ; 
              MOVE.B         D7,D1                    ;CURRENT CHAR VAL 
              EXT.L          D1                       ; MULTIPLY BY 8 TO GET INTO CHARS 
              ASL.L          #$3,D1                   ; ARRAY
              LEA            _chars,A2		;CHARS ARRAY PTR
	      ADDA.L	     D1,A2
	      MOVE.W	     #$40,D1		; 64 CHARS / LINE
              MOVE.B         (A2)+,(A0)         ;MOVE TO SCREEN MEM 
              ADD.W          D1,A0                  
              MOVE.B         (A2)+,(A0)         
              ADD.W          D1,A0                  
              MOVE.B         (A2)+,(A0)         
              ADD.W          D1,A0                  
              MOVE.B         (A2)+,(A0)         
              ADD.W          D1,A0                  
              MOVE.B         (A2)+,(A0)         
              ADD.W          D1,A0                  
              MOVE.B         (A2)+,(A0)         
              ADD.W          D1,A0                  
              MOVE.B         (A2)+,(A0)         
              ADD.W          D1,A0                  
              MOVE.B         (A2)+,(A0)         

              MOVEM.L        (A7)+,A0/A2         
              RTS  

GETKEY:   ********************************************************************************

*	GETS VALUE TO STORE IN $DF00 FOR THE KEY(S) PRESSED
*	DEPENDING ON VAL IN D0 (A) RETURNS VALUE IN D7.B

	MOVEM.L	A0/D0,-(A7)	; SAVE REGS

	MOVE.B	#$FF,D7		; START WITH NO KEYS PRESSED
	LEA	_keyrows,A0	; START OF 8 BYTE ARRAY
	
	LSR.B	#1,D0		; HAS THIS KBD ROW BEEN SELECTED?
	BCS.B	.1		; CARRY BIT CLEAR IF THIS ROW IS SELECTED
	AND.B	(A0),D7		; MASK ANY SELECTED ROWS IN D7

.1:	ADDQ.L	#1,A0
	LSR.B	#1,D0		; AND DO IT 8 TIMES 
	BCS.B	.2		; ONCE FOR EACH ROW
	AND.B	(A0),D7
.2:	ADDQ.L	#1,A0
	LSR.B	#1,D0
	BCS.B	.3
	AND.B	(A0),D7
.3:	ADDQ.L	#1,A0
	LSR.B	#1,D0
	BCS.B	.4
	AND.B	(A0),D7
.4:	ADDQ.L	#1,A0
	LSR.B	#1,D0
	BCS.B	.5
	AND.B	(A0),D7
.5:	ADDQ.L	#1,A0
	LSR.B	#1,D0
	BCS.B	.6
	AND.B	(A0),D7
.6:	ADDQ.L	#1,A0
	LSR.B	#1,D0
	BCS.B	.7
	AND.B	(A0),D7
.7:	ADDQ.L	#1,A0
	LSR.B	#1,D0
	BCS.B	.8
	AND.B	(A0),D7		; D7 NOW HOLDS VAL TO STORE IN $DF00


.8:	MOVEM.L	 (A7)+,A0/D0 ; RESTORE
	RTS
                                
******************************************************************************************

ILLEGAL:			; ILLEGAL INSTRUCTION
	MOVEM.L	(SP)+,A0-A6/D0-D7	
	rts



MAIN00:				; 6502 BRK

	ORI.B	#$14,D6		; SET B,I IN FLAGS
	SUBQ.L	#1,A2		; POSITION PC TO NEXT INSTR.
	SUBA.L	A0,A2
	MOVE.L	A2,D7
	ROL.W	#8,D7
	MOVE.B	D7,(A4,D4.W)	; PUSH MSB
	SUBQ.B	#1,D4
	ROL.W	#8,D7
	MOVE.B	D7,(A4,D4.W)	; PUSH LSB
	SUBQ.B	#1,D4

	MOVE.B	(A6,D5.W),D7	; GET 6502 EQUIV OF 680X0 REGS
	OR.B	D6,D7
	MOVE.B	D7,(A4,D4.W)	; PUSH FLAGS
	SUBQ.B	#1,D4

	MOVE.W	($0000FFFE,A0),D7	; GET IRQ VECTOR
	ROR.W	#8,D7
	MOVE.L	D7,A2
	ADDA.L	A0,A2

	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN01:				; 6502 ORA (n,X)
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	OR.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN05:				; 6502 ORA n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	OR.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN06:				; 6502 ASL n
	ANDI.B	#$E2,D5
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	LSL.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN08:				; 6502 PHP
	MOVE.B	(A6,D5.W),D7	; GET 6502 EQUIV OF 680X0 REGS
	OR.B	D6,D7
	MOVE.B	D7,(A4,D4.W)
	SUBQ.B	#1,D4
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN09:				; 6502 ORA #n
	ANDI.B	#$F3,D5
	OR.B	D1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN0A:				; 6502 ASL A
	ANDI.B	#$E2,D5
	LSL.B	#1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN0D:				; 6502 ORA nn
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.B	#$F3,D5
	OR.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN0E:				; 6502 ASL nn  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	ANDI.B	#$E2,D5		; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.B	(A0,D1.L),D7
	ASL.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	ANDI.B	#$E2,D5
	SWAP	D4
	MOVE.B	(A0,D1.L),D4		
	ASL.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


MAIN10:				; 6502 BPL n
	EXT.W	D1
	MOVE.W	D5,CCR
	BMI.B	M101
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

M101:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN11:				; 6502 ORA (n),Y
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	OR.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN15:				; 6502 ORA n,X
	ANDI.B	#$F3,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	OR.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN16:				; 6502 ASL n,X
	ANDI.B	#$E2,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	LSL.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN18:				; 6502 CLC
	ANDI.B	#$EE,D5		; CLEAR X,C IN D5 (CCR)
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN19:				; 6502 ORA nn,Y
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D3,D1
	ANDI.B	#$F3,D5
	OR.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	IF	P65C02
MAIN1A:				; 6502 INA A (65C02 ONLY)
	ANDI.B	#$F3,D5
	ADDQ.B	#1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	ENDIF

MAIN1D:				; 6502 ORA nn,X
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	ANDI.B	#$F3,D5
	OR.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN1E:				; 6502 ASL nn,X  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	BPL.B	.1

	ANDI.B	#$E2,D5		; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.B	(A0,D1.L),D7
	ASL.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	ANDI.B	#$E2,D5
	SWAP	D4
	MOVE.B	(A0,D1.L),D4		
	ASL.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN20:				; 6502 JSR nn 
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	SUBQ.L	#1,A2
	SUBA.L	A0,A2
	MOVE.L	A2,D7

	ROL.W	#8,D7
	MOVE.B	D7,(A4,D4.W)	; PUSH MSB
	SUBQ.B	#1,D4

	ROL.W	#8,D7
	MOVE.B	D7,(A4,D4.W)	; PUSH LSB
	SUBQ.B	#1,D4

	MOVE.L	A0,A2
	MOVE.W	D1,D7
	ADDA.L	D7,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN21:				; 6502 AND (n,X)
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	AND.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN24:				; 6502 BIT n
	ANDI.B	#$F1,D5		; CLEAR N,Z,V
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D1
	AND.B	D0,D1
	MOVE.W	CCR,D7		; SET Z IF RESULT OF AND =0
	ANDI.B	#$04,D7		; MASK ALL BUT Z
	OR.B	D7,D5

	MOVE.B	D1,D7
	ANDI.B	#$40,D7		; GET BIT 6 TO MOVE TO V FLG
	LSR.B	#5,D7		; MOVE TO 680X0 V FLG POSITION
	OR.B	D7,D5		; SET V FLG IF BIT6 WAS SET

	ANDI.B	#$80,D1		; GET BIT 7 TO MOVE TO N FLG
	LSR.B	#4,D1		; MOVE TO 680X0 N FLG POSITION
	OR.B	D1,D5		; SET N FLG IF BIT7 WAS SET

	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN25:				; 6502 AND n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	AND.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN26:				; 6502 ROL n
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	MOVE.W	D5,CCR
	ROXL.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN28:				; 6502 PLP
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D6
	MOVE.B	$20(A6,D6.W),D5	; GET 680X0 EQUIV OF 6502 REGS
	ANDI.W	#$1C,D6
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN29:				; 6502 AND #n
	ANDI.B	#$F3,D5
	AND.B	D1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN2A:				; 6502 ROL A
	MOVE.W	D5,CCR
	ROXL.B	#1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN2C:				; 6502 BIT nn
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1		; GET nn IN D1.W

	ANDI.B	#$F1,D5		; CLEAR N,Z,V
	MOVE.B	(A0,D1.L),D1
	AND.B	D0,D1
	MOVE.W	CCR,D7		; SET Z IF RESULT OF AND =0
	ANDI.B	#$04,D7		; MASK ALL BUT Z
	OR.B	D7,D5

	MOVE.B	D1,D7
	ANDI.B	#$40,D7		; GET BIT 6 TO MOVE TO V FLG
	LSR.B	#5,D7		; MOVE TO 680X0 V FLG POSITION
	OR.B	D7,D5		; SET V FLG IF BIT6 WAS SET

	ANDI.B	#$80,D1		; GET BIT 7 TO MOVE TO N FLG
	LSR.B	#4,D1		; MOVE TO 680X0 N FLG POSITION
	OR.B	D1,D5		; SET N FLG IF BIT7 WAS SET

	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN2D:				; 6502 AND nn
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.B	#$F3,D5
	AND.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN2E:				; 6502 ROL nn  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.W	D5,CCR
	ROXL.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$E2,D5		
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	SWAP	D4
	MOVE.B	(A0,D1.L),D4
	MOVE.W	D5,CCR
	ROXL.B	#1,D4	
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN30:				; 6502 BMI n
	EXT.W	D1
	MOVE.W	D5,CCR
	BPL.B	M301
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

M301:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN31:				; 6502 AND (n),Y
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	AND.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN35:				; 6502 AND n,X
	ANDI.B	#$F3,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	AND.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN36:				; 6502 ROL n,X
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	MOVE.W	D5,CCR
	ROXL.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN38:				; 6502 SEC
	ORI.B	#$11,D5		; SET X,C IN D5.B (CCR)
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN39:				; 6502 AND nn,Y
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D3,D1
	ANDI.B	#$F3,D5
	AND.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	IF	P65C02
MAIN3A:				; 6502 DEA A (65C02 ONLY)
	ANDI.B	#$F3,D5
	SUBQ.B	#1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	ENDIF

MAIN3D:				; 6502 AND nn,X
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	ANDI.B	#$F3,D5
	AND.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN3E:				; 6502 ROL nn,X  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.W	D5,CCR
	ROXL.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	SWAP	D4
	MOVE.B	(A0,D1.L),D4
	MOVE.W	D5,CCR
	ROXL.B	#1,D4	
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN40:				; 6502 RTI 

	ADDQ.B	#1,D4		; POP FLAGS
	MOVE.B	(A4,D4.W),D6
	MOVE.B	$20(A6,D6.W),D5	; GET 680X0 EQUIV OF 6502 REGS
	ANDI.W	#$1C,D6

	MOVEQ	#0,D7
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D7	; PULL LSB
	ROL.W	#8,D7
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D7	; PULL MSB
	ROL.W	#8,D7

	MOVE.L	A0,A2		; DONT INC PC AS ALREADY AT RIGHT PLACE
	ADDA.L	D7,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN41:				; 6502 EOR (n,X)
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	MOVE.B	(A0,D1.L),D7
	EOR.B	D7,D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN45:				; 6502 EOR n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.L),D7
	EOR.B	D7,D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN46:				; 6502 LSR n
	ANDI.B	#$E2,D5
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	LSR.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN48:				; 6502 PHA
	MOVE.B	D0,(A4,D4.W)
	SUBQ.B	#1,D4
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN49:				; 6502 EOR #n
	ANDI.B	#$F3,D5
	EOR.B	D1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN4A:				; 6502 LSR A
	ANDI.B	#$E2,D5
	LSR.B	#1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN4C:				; 6502 JMP XXXX
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	MOVEQ	#0,D7
	MOVE.W	D1,D7
	MOVE.L	A0,A2
	ADDA.L	D7,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN4D:				; 6502 EOR nn
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.B	#$F3,D5
	MOVE.B	(A0,D1.L),D7
	EOR.B	D7,D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN4E:				; 6502 LSR nn  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	ANDI.B	#$E2,D5		; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.B	(A0,D1.L),D7
	LSR.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	ANDI.B	#$E2,D5
	SWAP	D4
	MOVE.B	(A0,D1.L),D4		
	LSR.B	#1,D4		
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN50:				; 6502 BVC n
	EXT.W	D1
	MOVE.W	D5,CCR
	BVS.B	M501
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

M501:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN51:				; 6502 EOR (n),Y
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	MOVE.B	(A0,D1.L),D7
	EOR.B	D7,D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN55:				; 6502 EOR n,X
	ANDI.B	#$F3,D5
	ADD.B	D2,D1
	MOVE.B	(A0,D1.L),D7
	EOR.B	D7,D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN56:				; 6502 LSR n,X
	ANDI.B	#$E2,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	LSR.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN58:				; 6502 CLI
	ANDI.B	#$FB,D6
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN59:				; 6502 EOR nn,Y
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D3,D1
	ANDI.B	#$F3,D5
	MOVE.B	(A0,D1.L),D7
	EOR.B	D7,D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	IF	P65C02
MAIN5A:				; 6502 PHY (65C02 ONLY)
	MOVE.B	D3,(A4,D4.W)
	SUBQ.B	#1,D4
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	ENDIF

MAIN5D:				; 6502 EOR nn,X
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	ANDI.B	#$F3,D5
	MOVE.B	(A0,D1.L),D7
	EOR.B	D7,D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN5E:				; 6502 LSR nn,X  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	BPL.B	.1

	ANDI.B	#$E2,D5		; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.B	(A0,D1.L),D7
	LSR.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	ANDI.B	#$E2,D5
	SWAP	D4
	MOVE.B	(A0,D1.L),D4		
	LSR.B	#1,D4		
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN60:				; 6502 RTS 
	MOVEQ	#0,D7
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D7	; PULL LSB
	ROL.W	#8,D7
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D7	; PULL MSB
	ROL.W	#8,D7

	MOVE.L	A0,A2
	ADDA.L	D7,A2
	ADDQ.L	#1,A2		; ADD 1 TO GET NEXT INSTRUCTION
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN61:				; 6502 ADC (n,X)

	ORI.B	#$04,D5		; SET Z 
	ANDI.L	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1
	ROL.W	#8,D1
	MOVE.B	(A0,D1.L),D7
	MOVE.W	D5,CCR
	ADDX.B	D7,D0	
	MOVE.W	CCR,D5		; NO NEED TO MASK ALL REGS ARE AFFECTED
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN65:				; 6502 ADC n
	ORI.B	#$04,D5		; SET Z 
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D7
	MOVE.W	D5,CCR
	ADDX.B	D7,D0	
	MOVE.W	CCR,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN66:				; 6502 ROR n
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	MOVE.W	D5,CCR
	ROXR.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN68:				; 6502 PLA
	ANDI.B	#$F3,D5		; zero N and Z
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7		; find N and Z only
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN69:				; 6502 ADC #n
	ORI.B	#$04,D5		; SET Z 
	MOVE.W	D5,CCR
	ADDX.B	D1,D0
	MOVE.W	CCR,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN6A:				; 6502 ROR A
	MOVE.W	D5,CCR
	ROXR.B	#1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN6C:				; 6502 JMP (nn)
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	MOVEQ	#0,D7
	MOVE.W	D1,D7
	MOVE.W	(A0,D7.L),D7
	ROL.W	#8,D7
	MOVE.L	A0,A2
	ADDA.L	D7,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN6D:				; 6502 ADC nn
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ORI.B	#$04,D5		; SET Z 
	MOVE.B	(A0,D1.L),D7
	MOVE.W	D5,CCR
	ADDX.B	D7,D0	
	MOVE.W	CCR,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN6E:				; 6502 ROR nn  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.W	D5,CCR
	ROXR.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	SWAP	D4
	MOVE.B	(A0,D1.L),D4
	MOVE.W	D5,CCR
	ROXR.B	#1,D4	
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN70:				; 6502 BVS n
	EXT.W	D1
	MOVE.W	D5,CCR
	BVC.B	M701
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

M701:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN71:				; 6502 ADC (n),Y
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	ORI.B	#$04,D5		; SET Z 
	MOVE.B	(A0,D1.L),D7
	MOVE.W	D5,CCR
	ADDX.B	D7,D0	
	MOVE.W	CCR,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN75:				; 6502 ADC n,X
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	ORI.B	#$04,D5		; SET Z 
	MOVE.B	(A0,D1.L),D7
	MOVE.W	D5,CCR
	ADDX.B	D7,D0	
	MOVE.W	CCR,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN76:				; 6502 ROR n,X
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	SWAP	D4
	MOVE.B	(A0,D1.W),D4
	MOVE.W	D5,CCR
	ROXR.B	#1,D4
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.W)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN78:				; 6502 SEI
	ORI.B	#$04,D6
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN79:				; 6502 ADC nn,Y
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D3,D1
	ORI.B	#$04,D5		; SET Z 
	MOVE.B	(A0,D1.L),D7
	MOVE.W	D5,CCR
	ADDX.B	D7,D0	
	MOVE.W	CCR,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	IF	P65C02
MAIN7A:				; 6502 PLY (65C02 ONLY)
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D3
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	ENDIF

MAIN7D:				; 6502 ADC nn,X
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	ORI.B	#$04,D5		; SET Z 
	MOVE.B	(A0,D1.L),D7
	MOVE.W	D5,CCR
	ADDX.B	D7,D0	
	MOVE.W	CCR,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN7E:				; 6502 ROR nn,X  ***************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; ADDRESS IS 8000-FFFF COND FLAGS BUT DONT CHANGE MEM
	MOVE.W	D5,CCR
	ROXR.B	#1,D7		
	MOVE.W	CCR,D7
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	SWAP	D4
	MOVE.B	(A0,D1.L),D4
	MOVE.W	D5,CCR
	ROXR.B	#1,D4	
	MOVE.W	CCR,D7
	MOVE.B	D4,(A0,D1.L)
	SWAP	D4
	ANDI.B	#$E2,D5
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


	IF	P65C02
MAIN80:				; 6502 BRA n (65C02 ONLY)
	EXT.W	D1
	MOVE.W	D5,CCR
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	ENDIF

MAIN81:				; 6502 STA (n,X)************************* KBD
	ANDI.L	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	BPL.B	.1

	CMPI.W	#$D400,D1
	BCC.B	.2
	CMPI.W	#$CFFF,D1
	BHI.B	.3

.2:	MOVE.W	(A2)+,D1	; pointing at ROM do nothing
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.3:	MOVE.B	D0,D7		; MOVE A TO D7 FOR SCREENWRITE
	MOVE.B	D0,(A0,D1.L)	; SAVE BYTE TO REAL MEM
	BSR	_screenwrite
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	MOVE.B	D0,(A0,D1.L)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN84:					; 6502 STY n
	ANDI.W	#$FF,D1
	MOVE.B	D3,(A0,D1.W)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN85:					; 6502 STA n
	ANDI.W	#$FF,D1
	MOVE.B	D0,(A0,D1.W)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN86:					; 6502 STX n
	ANDI.W	#$FF,D1
	MOVE.B	D2,(A0,D1.W)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN88:				; 6502 DEY
	ANDI.B	#$F3,D5
	SUBQ.B	#1,D3
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN8A:				; 6502 TXA  
	ANDI.B	#$F3,D5
	MOVE.B	D2,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN8C:				; 6502 STY nn********************* no kbd
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	CMPI.W	#$D400,D1	; check for screen mem
	BCC.B	.2
	CMPI.W	#$CFFF,D1
	BHI.B	.3

.2:	MOVE.W	(A2)+,D1	; pointing at ROM do nothing
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.3:	MOVE.B	D3,D7		; MOVE Y TO D7 FOR SCREENWRITE
	MOVE.B	D3,(A0,D1.L)	; SAVE BYTE TO REAL MEM
	BSR	_screenwrite
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	MOVE.B	D3,(A0,D1.L)
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN8D:				; 6502 STA nn****************** still no KBD support.
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1		; branch if <$8000 (in ram)

	CMPI.W	#$D400,D1
	BCC.B	.2
	CMPI.W	#$CFFF,D1
	BHI.B	.3

.2:	CMPI.W	#$DF00,D1	; POINTING AT KEYBOARD LOC?
	BNE.B	.4

	BSR	GETKEY		; GET KEYPRESSES
	MOVE.B	D7,(A0,D1.L)	; SAVE BYTE TO REAL MEM


.4:	MOVE.W	(A2)+,D1	; pointing at ROM do nothing
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.3:	MOVE.B	D0,D7		; MOVE A TO D7 FOR SCREENWRITE
	MOVE.B	D0,(A0,D1.L)	; SAVE BYTE TO REAL MEM
	BSR	_screenwrite
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


.1:	MOVE.B	D0,(A0,D1.L)	; pointing at RAM do normal STA
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN8E:				; 6502 STX nn************* NO KBD
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	CMPI.W	#$D400,D1
	BCC.B	.2
	CMPI.W	#$CFFF,D1
	BHI.B	.3

.2:	MOVE.W	(A2)+,D1	; pointing at ROM do nothing
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.3:	MOVE.B	D2,D7		; MOVE X TO D7 FOR SCREENWRITE
	MOVE.B	D2,(A0,D1.L)	; SAVE BYTE TO REAL MEM
	BSR	_screenwrite
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	MOVE.B	D2,(A0,D1.L)
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN90:				; 6502 BCC n
	EXT.W	D1
	MOVE.W	D5,CCR
	BCS.B	M901
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

M901:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN91:				; 6502 STA (n),Y****************** KBD
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	BPL.B	.1

	CMPI.W	#$D400,D1
	BCC.B	.2
	CMPI.W	#$CFFF,D1
	BHI.B	.3

.2:	MOVE.W	(A2)+,D1	; pointing at ROM do nothing
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.3:	MOVE.B	D0,D7		; MOVE A TO D7 FOR SCREENWRITE
	MOVE.B	D0,(A0,D1.L)	; SAVE BYTE TO REAL MEM
	BSR	_screenwrite
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	MOVE.B	D0,(A0,D1.L)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN94:				; 6502 STY n,X
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	MOVE.B	D3,(A0,D1.W)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN95:				; 6502 STA n,X
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	MOVE.B	D0,(A0,D1.W)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN96:				; 6502 STX n,Y
	ADD.B	D3,D1
	ANDI.W	#$FF,D1
	MOVE.B	D2,(A0,D1.W)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN98:				; 6502 TYA  
	ANDI.B	#$F3,D5
	MOVE.B	D3,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN99:				; 6502 STA nn,Y************** KBD
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D3,D1
	BPL.B	.1

	CMPI.W	#$D400,D1
	BCC.B	.2
	CMPI.W	#$CFFF,D1
	BHI.B	.3

.2:	MOVE.W	(A2)+,D1	; pointing at ROM do nothing
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.3:	MOVE.B	D0,D7		; MOVE A TO D7 FOR SCREENWRITE
	MOVE.B	D0,(A0,D1.L)	; SAVE BYTE TO REAL MEM
	BSR	_screenwrite
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	MOVE.B	D0,(A0,D1.L)	
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN9A:				; 6502 TXS  
	MOVE.B	D2,D4
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIN9D:				; 6502 STA nn,X**************
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	BPL.B	.1

	CMPI.W	#$D400,D1
	BCC.B	.2
	CMPI.W	#$CFFF,D1
	BHI.B	.3

.2:	MOVE.W	(A2)+,D1	; pointing at ROM do nothing
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.3:	MOVE.B	D0,D7		; MOVE A TO D7 FOR SCREENWRITE
	MOVE.B	D0,(A0,D1.L)	; SAVE BYTE TO REAL MEM
	BSR	_screenwrite
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	MOVE.B	D0,(A0,D1.L)	; POINTING AT RAM -> DO INST
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA0:				; 6502 LDY #n
	ANDI.B	#$F3,D5
	MOVE.B	D1,D3
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA1:				; 6502 LDA (n,X)
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	MOVE.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA2:				; 6502 LDX #n
	ANDI.B	#$F3,D5
	MOVE.B	D1,D2
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA4:				; 6502 LDY n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D3	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA5:				; 6502 LDA n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA6:				; 6502 LDX n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D2	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA8:				; 6502 TAY  
	ANDI.B	#$F3,D5
	MOVE.B	D0,D3
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINA9:				; 6502 LDA #n
	ANDI.B	#$F3,D5
	MOVE.B	D1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINAA:				; 6502 TAX  
	ANDI.B	#$F3,D5
	MOVE.B	D0,D2
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINAC:				; 6502 LDY nn
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.L	#$FFFF,D1
	MOVE.B	(A0,D1.L),D3
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINAD:				; 6502 LDA nn
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.L	#$FFFF,D1
	MOVE.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINAE:				; 6502 LDX nn
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.L	#$FFFF,D1
	MOVE.B	(A0,D1.L),D2	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINB0:				; 6502 BCS n
	EXT.W	D1
	MOVE.W	D5,CCR
	BCC.B	MB01
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MB01:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINB1:				; 6502 LDA (n),Y
	ANDI.B	#$F3,D5
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	MOVE.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINB4:				; 6502 LDY n,X
	ANDI.B	#$F3,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D3	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINB5:				; 6502 LDA n,X
	ANDI.B	#$F3,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINB6:				; 6502 LDX n,Y
	ANDI.B	#$F3,D5
	ADD.B	D3,D1
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D2	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINB8:				; 6502 CLV
	ANDI.B	#$FD,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINB9:				; 6502 LDA nn,Y
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.L	#$FFFF,D1
	ADD.W	D3,D1
	MOVE.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINBA:				; 6502 TSX  
	ANDI.B	#$F3,D5
	MOVE.B	D4,D2
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINBC:				; 6502 LDY nn,X
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.L	#$FFFF,D1
	ADD.W	D2,D1
	MOVE.B	(A0,D1.L),D3	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINBD:				; 6502 LDA nn,X
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.L	#$FFFF,D1
	ADD.W	D2,D1
	MOVE.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINBE:				; 6502 LDX nn,Y
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ANDI.L	#$FFFF,D1
	ADD.W	D3,D1
	MOVE.B	(A0,D1.L),D2	
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINC0:				; 6502 CPY #n
	ANDI.B	#$E2,D5
	CMP.B	D1,D3
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINC1:				; 6502 CMP (n,X)
	ANDI.B	#$E2,D5
	ANDI.L	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	CMP.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINC4:				; 6502 CPY n
	ANDI.B	#$E2,D5
	ANDI.W	#$FF,D1
	CMP.B	(A0,D1.W),D3	
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINC5:				; 6502 CMP n
	ANDI.B	#$E2,D5
	ANDI.W	#$FF,D1
	CMP.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINC6:				; 6502 DEC n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	SUBI.B	#1,(A0,D1.W)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINC8:				; 6502 INY
	ANDI.B	#$F3,D5
	ADDQ.B	#1,D3
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINC9:				; 6502 CMP #n
	ANDI.B	#$E2,D5
	CMP.B	D1,D0
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINCA:				; 6502 DEX
	ANDI.B	#$F3,D5
	SUBQ.B	#1,D2
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINCC:				; 6502 CPY nn
	ANDI.B	#$E2,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	CMP.B	(A0,D1.L),D3
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINCD:				; 6502 CMP nn
	ANDI.B	#$E2,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	CMP.B	(A0,D1.L),D0
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


MAINCE:				; 6502 DEC nn*********************
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; COND FLAGS BUT DONT CHANGE BYTE
	SUBQ.B	#1,D7		; AS ADD IS 8000-FFFF
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	SUBI.B	#1,(A0,D1.L)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIND0:				; 6502 BNE n
	EXT.W	D1
	MOVE.W	D5,CCR
	BEQ.B	MD01
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MD01:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIND1:				; 6502 CMP (n),Y
	ANDI.B	#$E2,D5
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	CMP.B	(A0,D1.L),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


MAIND5:				; 6502 CMP n,X
	ANDI.B	#$E2,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	CMP.B	(A0,D1.W),D0	
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIND6:				; 6502 DEC n,X
	ANDI.B	#$F3,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	SUBI.B	#1,(A0,D1.W)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIND8:				; 6502 CLD
	ANDI.B	#$F7,D6
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAIND9:				; 6502 CMP nn,Y
	ANDI.B	#$E2,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D3,D1
	CMP.B	(A0,D1.L),D0
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	IF	P65C02
MAINDA:				; 6502 PHX (65C02 ONLY)
	MOVE.B	D2,(A4,D4.W)
	SUBQ.B	#1,D4
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	ENDIF

MAINDD:				; 6502 CMP nn,X
	ANDI.B	#$E2,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	CMP.B	(A0,D1.L),D0
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


MAINDE:				; 6502 DEC nn,X*********************
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; COND FLAGS BUT DONT CHANGE BYTE
	SUBQ.B	#1,D7		; AS ADD IS 8000-FFFF
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	SUBI.B	#1,(A0,D1.L)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINE0:				; 6502 CPX #n
	ANDI.B	#$E2,D5
	CMP.B	D1,D2
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


MAINE1:				; 6502 SBC (n,X)
	ANDI.W	#$FF,D1
	ADD.B	D2,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	MOVE.B	(A0,D1.L),D7	; GET (n,X)
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D7,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINE4:				; 6502 CPX n
	ANDI.B	#$E2,D5
	ANDI.W	#$FF,D1
	CMP.B	(A0,D1.W),D2
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


MAINE5:				; 6502 SBC n 
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D7	; GET (n)
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D7,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINE6:				; 6502 INC n
	ANDI.B	#$F3,D5
	ANDI.W	#$FF,D1
	ADDI.B	#1,(A0,D1.W)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINE8:				; 6502 INX
	ANDI.B	#$F3,D5
	ADDQ.B	#1,D2
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINE9:				; 6502 SBC #n 
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D1,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINEA:				; 6502 NOP
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINEC:				; 6502 CPX nn
	ANDI.B	#$E2,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	CMP.B	(A0,D1.L),D2
	MOVE.W	CCR,D7
	ANDI.B	#$1D,D7
	OR.B	D7,D5
	ANDI.B	#$01,D7		; SET X IF C IS SET
	ROL.B	#4,D7
	OR.B	D7,D5
	EORI.B	#$11,D5		; INVERT X,C FOR 6502
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINED:				; 6502 SBC nn
	ROL.W	#8,D1		; GET nn
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	MOVE.B	(A0,D1.L),D7	; GET (nn)
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D7,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINEE:				; 6502 INC nn*********************
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; COND FLAGS BUT DONT CHANGE BYTE
	ADDQ.B	#1,D7		; AS ADD IS 8000-FFFF
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	ADDI.B	#1,(A0,D1.L)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINF0:				; 6502 BEQ n
	EXT.W	D1
	MOVE.W	D5,CCR
	BNE.B	MF01
	ADDA.W	D1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MF01:	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINF1:				; 6502 SBC (n),Y
	ANDI.L	#$FF,D1
	MOVE.W	(A0,D1.W),D1	
	ROL.W	#8,D1
	ADD.W	D3,D1
	MOVE.B	(A0,D1.L),D7	; GET (n,X)
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D7,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINF5:				; 6502 SBC n,X
	ADD.B	D2,D1		; compute n,X
	ANDI.W	#$FF,D1
	MOVE.B	(A0,D1.W),D7	; GET (n,X)
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D7,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINF6:				; 6502 INC n,X
	ANDI.B	#$F3,D5
	ADD.B	D2,D1
	ANDI.W	#$FF,D1
	ADDI.B	#1,(A0,D1.W)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINF8:				; 6502 SED
	ORI.B	#$08,D6
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINF9:				; 6502 SBC nn,Y
	ROL.W	#8,D1		; GET nn
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D3,D1		; ADD Y
	MOVE.B	(A0,D1.L),D7	; GET (nn,Y)
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D7,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE 
	JMP	([A3,D1.W*4])
	ENDIF

	IF	P65C02
MAINFA:				; 6502 PLX (65C02 ONLY)
	ADDQ.B	#1,D4
	MOVE.B	(A4,D4.W),D2
	SUBQ.L	#1,A2
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

	ENDIF

MAINFD:				; 6502 SBC nn,X
	ROL.W	#8,D1		; GET nn
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1		; ADD X
	MOVE.B	(A0,D1.L),D7	; GET (nn,X)
	ORI.B	#$04,D5		; SET Z FOR SUBX INSTR
	EORI.B	#$11,D5		; INVERT X,C TO SUIT 680x0
	MOVE.W	D5,CCR
	SUBX.B	D7,D0
	MOVE.W	CCR,D5		; ALL 6502 FLAGS AFFECTED
	EORI.B	#$11,D5		; INVERT X,C AS 6502 HAS REVERSED MEANING
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

MAINFE:				; 6502 INC nn,X *********************
	ANDI.B	#$F3,D5
	ROL.W	#8,D1
	MOVE.B	(A2)+,D1
	ROL.W	#8,D1
	ADD.W	D2,D1
	BPL.B	.1

	MOVE.B	(A0,D1.L),D7	; COND FLAGS BUT DONT CHANGE BYTE
	ADDQ.B	#1,D7		; AS ADD IS 8000-FFFF
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF

.1:	ADDI.B	#1,(A0,D1.L)
	MOVE.W	CCR,D7
	ANDI.B	#$0C,D7
	OR.B	D7,D5
	MOVE.W	(A2)+,D1
	IF	DEEBUG
	BRA	DEBUG
	ELSE
	JMP	([A3,D1.W*4])
	ENDIF


	SECTION 6502DATA,DATA

MNTBL:

	IF P65C02

	DC.L	MAIN80		; 65C02 JMP TABLE
	DC.L	MAIN81
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN84
	DC.L	MAIN85
	DC.L	MAIN86
	DC.L	ILLEGAL
	DC.L	MAIN88
	DC.L	ILLEGAL
	DC.L	MAIN8A
	DC.L	ILLEGAL
	DC.L	MAIN8C
	DC.L	MAIN8D
	DC.L	MAIN8E
	DC.L	ILLEGAL
	DC.L	MAIN90
	DC.L	MAIN91
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN94
	DC.L	MAIN95
	DC.L	MAIN96
	DC.L	ILLEGAL
	DC.L	MAIN98
	DC.L	MAIN99
	DC.L	MAIN9A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN9D
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINA0
	DC.L	MAINA1
	DC.L	MAINA2
	DC.L	ILLEGAL
	DC.L	MAINA4
	DC.L	MAINA5
	DC.L	MAINA6
	DC.L	ILLEGAL
	DC.L	MAINA8
	DC.L	MAINA9
	DC.L	MAINAA
	DC.L	ILLEGAL
	DC.L	MAINAC
	DC.L	MAINAD
	DC.L	MAINAE
	DC.L	ILLEGAL
	DC.L	MAINB0
	DC.L	MAINB1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINB4
	DC.L	MAINB5
	DC.L	MAINB6
	DC.L	ILLEGAL
	DC.L	MAINB8
	DC.L	MAINB9
	DC.L	MAINBA
	DC.L	ILLEGAL
	DC.L	MAINBC
	DC.L	MAINBD
	DC.L	MAINBE
	DC.L	ILLEGAL
	DC.L	MAINC0
	DC.L	MAINC1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINC4
	DC.L	MAINC5
	DC.L	MAINC6
	DC.L	ILLEGAL
	DC.L	MAINC8
	DC.L	MAINC9
	DC.L	MAINCA
	DC.L	ILLEGAL
	DC.L	MAINCC
	DC.L	MAINCD
	DC.L	MAINCE
	DC.L	ILLEGAL
	DC.L	MAIND0
	DC.L	MAIND1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIND5
	DC.L	MAIND6
	DC.L	ILLEGAL
	DC.L	MAIND8
	DC.L	MAIND9
	DC.L	MAINDA
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINDD
	DC.L	MAINDE
	DC.L	ILLEGAL
	DC.L	MAINE0
	DC.L	MAINE1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINE4
	DC.L	MAINE5
	DC.L	MAINE6
	DC.L	ILLEGAL
	DC.L	MAINE8
	DC.L	MAINE9
	DC.L	MAINEA
	DC.L	ILLEGAL
	DC.L	MAINEC
	DC.L	MAINED
	DC.L	MAINEE
	DC.L	ILLEGAL
	DC.L	MAINF0
	DC.L	MAINF1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINF5
	DC.L	MAINF6
	DC.L	ILLEGAL
	DC.L	MAINF8
	DC.L	MAINF9
	DC.L	MAINFA
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINFD
	DC.L	MAINFE
	DC.L	ILLEGAL
	DC.L	MAIN00
	DC.L	MAIN01
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN05
	DC.L	MAIN06
	DC.L	ILLEGAL
	DC.L	MAIN08
	DC.L	MAIN09
	DC.L	MAIN0A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN0D
	DC.L	MAIN0E
	DC.L	ILLEGAL
	DC.L	MAIN10
	DC.L	MAIN11
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN15
	DC.L	MAIN16
	DC.L	ILLEGAL
	DC.L	MAIN18
	DC.L	MAIN19
	DC.L	MAIN1A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN1D
	DC.L	MAIN1E
	DC.L	ILLEGAL
	DC.L	MAIN20
	DC.L	MAIN21
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN24
	DC.L	MAIN25
	DC.L	MAIN26
	DC.L	ILLEGAL
	DC.L	MAIN28
	DC.L	MAIN29
	DC.L	MAIN2A
	DC.L	ILLEGAL
	DC.L	MAIN2C
	DC.L	MAIN2D
	DC.L	MAIN2E
	DC.L	ILLEGAL
	DC.L	MAIN30
	DC.L	MAIN31
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN35
	DC.L	MAIN36
	DC.L	ILLEGAL
	DC.L	MAIN38
	DC.L	MAIN39
	DC.L	MAIN3A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN3D
	DC.L	MAIN3E
	DC.L	ILLEGAL
	DC.L	MAIN40
	DC.L	MAIN41
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN45
	DC.L	MAIN46
	DC.L	ILLEGAL
	DC.L	MAIN48
	DC.L	MAIN49
	DC.L	MAIN4A
	DC.L	ILLEGAL
	DC.L	MAIN4C
	DC.L	MAIN4D
	DC.L	MAIN4E
	DC.L	ILLEGAL
	DC.L	MAIN50
	DC.L	MAIN51
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN55
	DC.L	MAIN56
	DC.L	ILLEGAL
	DC.L	MAIN58
	DC.L	MAIN59
	DC.L	MAIN5A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN5D
	DC.L	MAIN5E
	DC.L	ILLEGAL
	DC.L	MAIN60
	DC.L	MAIN61
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN65
	DC.L	MAIN66
	DC.L	ILLEGAL
	DC.L	MAIN68
	DC.L	MAIN69
	DC.L	MAIN6A
	DC.L	ILLEGAL
	DC.L	MAIN6C
	DC.L	MAIN6D
	DC.L	MAIN6E
	DC.L	ILLEGAL
	DC.L	MAIN70
	DC.L	MAIN71
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN75
	DC.L	MAIN76
	DC.L	ILLEGAL
	DC.L	MAIN78
	DC.L	MAIN79
	DC.L	MAIN7A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN7D
	DC.L	MAIN7E
	DC.L	ILLEGAL

	ELSE

	DC.L	ILLEGAL		; STANDARD 6502 JMP TABLE
	DC.L	MAIN81
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN84
	DC.L	MAIN85
	DC.L	MAIN86
	DC.L	ILLEGAL
	DC.L	MAIN88
	DC.L	ILLEGAL
	DC.L	MAIN8A
	DC.L	ILLEGAL
	DC.L	MAIN8C
	DC.L	MAIN8D
	DC.L	MAIN8E
	DC.L	ILLEGAL
	DC.L	MAIN90
	DC.L	MAIN91
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN94
	DC.L	MAIN95
	DC.L	MAIN96
	DC.L	ILLEGAL
	DC.L	MAIN98
	DC.L	MAIN99
	DC.L	MAIN9A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN9D
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINA0
	DC.L	MAINA1
	DC.L	MAINA2
	DC.L	ILLEGAL
	DC.L	MAINA4
	DC.L	MAINA5
	DC.L	MAINA6
	DC.L	ILLEGAL
	DC.L	MAINA8
	DC.L	MAINA9
	DC.L	MAINAA
	DC.L	ILLEGAL
	DC.L	MAINAC
	DC.L	MAINAD
	DC.L	MAINAE
	DC.L	ILLEGAL
	DC.L	MAINB0
	DC.L	MAINB1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINB4
	DC.L	MAINB5
	DC.L	MAINB6
	DC.L	ILLEGAL
	DC.L	MAINB8
	DC.L	MAINB9
	DC.L	MAINBA
	DC.L	ILLEGAL
	DC.L	MAINBC
	DC.L	MAINBD
	DC.L	MAINBE
	DC.L	ILLEGAL
	DC.L	MAINC0
	DC.L	MAINC1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINC4
	DC.L	MAINC5
	DC.L	MAINC6
	DC.L	ILLEGAL
	DC.L	MAINC8
	DC.L	MAINC9
	DC.L	MAINCA
	DC.L	ILLEGAL
	DC.L	MAINCC
	DC.L	MAINCD
	DC.L	MAINCE
	DC.L	ILLEGAL
	DC.L	MAIND0
	DC.L	MAIND1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIND5
	DC.L	MAIND6
	DC.L	ILLEGAL
	DC.L	MAIND8
	DC.L	MAIND9
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINDD
	DC.L	MAINDE
	DC.L	ILLEGAL
	DC.L	MAINE0
	DC.L	MAINE1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINE4
	DC.L	MAINE5
	DC.L	MAINE6
	DC.L	ILLEGAL
	DC.L	MAINE8
	DC.L	MAINE9
	DC.L	MAINEA
	DC.L	ILLEGAL
	DC.L	MAINEC
	DC.L	MAINED
	DC.L	MAINEE
	DC.L	ILLEGAL
	DC.L	MAINF0
	DC.L	MAINF1
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINF5
	DC.L	MAINF6
	DC.L	ILLEGAL
	DC.L	MAINF8
	DC.L	MAINF9
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAINFD
	DC.L	MAINFE
	DC.L	ILLEGAL
	DC.L	MAIN00
	DC.L	MAIN01
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN05
	DC.L	MAIN06
	DC.L	ILLEGAL
	DC.L	MAIN08
	DC.L	MAIN09
	DC.L	MAIN0A
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN0D
	DC.L	MAIN0E
	DC.L	ILLEGAL
	DC.L	MAIN10
	DC.L	MAIN11
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN15
	DC.L	MAIN16
	DC.L	ILLEGAL
	DC.L	MAIN18
	DC.L	MAIN19
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN1D
	DC.L	MAIN1E
	DC.L	ILLEGAL
	DC.L	MAIN20
	DC.L	MAIN21
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN24
	DC.L	MAIN25
	DC.L	MAIN26
	DC.L	ILLEGAL
	DC.L	MAIN28
	DC.L	MAIN29
	DC.L	MAIN2A
	DC.L	ILLEGAL
	DC.L	MAIN2C
	DC.L	MAIN2D
	DC.L	MAIN2E
	DC.L	ILLEGAL
	DC.L	MAIN30
	DC.L	MAIN31
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN35
	DC.L	MAIN36
	DC.L	ILLEGAL
	DC.L	MAIN38
	DC.L	MAIN39
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN3D
	DC.L	MAIN3E
	DC.L	ILLEGAL
	DC.L	MAIN40
	DC.L	MAIN41
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN45
	DC.L	MAIN46
	DC.L	ILLEGAL
	DC.L	MAIN48
	DC.L	MAIN49
	DC.L	MAIN4A
	DC.L	ILLEGAL
	DC.L	MAIN4C
	DC.L	MAIN4D
	DC.L	MAIN4E
	DC.L	ILLEGAL
	DC.L	MAIN50
	DC.L	MAIN51
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN55
	DC.L	MAIN56
	DC.L	ILLEGAL
	DC.L	MAIN58
	DC.L	MAIN59
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN5D
	DC.L	MAIN5E
	DC.L	ILLEGAL
	DC.L	MAIN60
	DC.L	MAIN61
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN65
	DC.L	MAIN66
	DC.L	ILLEGAL
	DC.L	MAIN68
	DC.L	MAIN69
	DC.L	MAIN6A
	DC.L	ILLEGAL
	DC.L	MAIN6C
	DC.L	MAIN6D
	DC.L	MAIN6E
	DC.L	ILLEGAL
	DC.L	MAIN70
	DC.L	MAIN71
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN75
	DC.L	MAIN76
	DC.L	ILLEGAL
	DC.L	MAIN78
	DC.L	MAIN79
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	ILLEGAL
	DC.L	MAIN7D
	DC.L	MAIN7E
	DC.L	ILLEGAL

	ENDIF



_JUMPTBL:	DS.L	1
FLAGTABL:			; 680x0 -> 6502 flag conversion ($00-$1F)

	DC.B	$20,$21,$60,$61,$22,$23,$62,$63,$A0,$A1,$E0,$E1,$A2,$A3,$E2,$E3 ; SET UNUSED FLAG BIT 5
	DC.B	$20,$21,$60,$61,$22,$23,$62,$63,$A0,$A1,$E0,$E1,$A2,$A3,$E2,$E3

				; 6502 -> 680x0 FLAG CONVERSION ($00-$FF)

	DC.B	$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15
	DC.B	$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15
	DC.B	$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15
	DC.B	$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15,$00,$11,$04,$15
	DC.B	$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17
	DC.B	$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17
	DC.B	$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17
	DC.B	$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17,$02,$13,$06,$17

	DC.B	$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D
	DC.B	$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D
	DC.B	$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D
	DC.B	$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D,$08,$19,$0C,$1D
	DC.B	$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F
	DC.B	$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F
	DC.B	$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F
	DC.B	$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F,$0A,$1B,$0E,$1F

