home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 53
/
Amiga_Dream_53.iso
/
Amiga
/
Emulateurs
/
AmiSuper2.lha
/
6502.ASM
next >
Wrap
Assembly Source File
|
1998-06-08
|
59KB
|
3,798 lines
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