Files
ZSNES/zsnes/src/cpu/e65816c.inc
2001-04-02 22:30:58 +00:00

1987 lines
34 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
;Copyright (C) 1997-2001 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com )
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either
;version 2 of the License, or (at your option) any later
;version.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;
;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
EXTSYM brkv,brkv8,changeexecloop,copv,copv8,curexecstate,curnmi,execloop
EXTSYM initaddrl,intrset,membank0r16,membank0r8
EXTSYM membank0w16,membank0w8,memtabler16,memtabler8,memtablew16,memtablew8
EXTSYM nmistatus,regaccessbankr8,snesmap2,snesmmap,stackand,stackor
EXTSYM wramdata,xa,xd,xdb,xe,xirqb,xpb,xpc,xs,xx,xy
EXTSYM switchtovirq,UpdateDPage
EXTSYM DPageR8,DPageW8,DPageR16,DPageW16
; B = ( or )
; C = ,
; L = [ or ]
; I = #
COp61m8nd: ; ADC(d,x)
addr_BdCxB_8br
ADCMacro8bnd
COp61m16nd: ; ADC(d,x)
addr_BdCxB_16br
ADCMacro16bnd
COp61m8d: ; ADC(d,x)
addr_BdCxB_8br
ADCMacro8bd
COp61m16d: ; ADC(d,x)
addr_BdCxB_16br
ADCMacro16bd
COp63m8nd: ; ADC d,s
addr_dCs_8br
ADCMacro8bnd
COp63m16nd: ; ADC d,s
addr_dCs_16br
ADCMacro16bnd
COp63m8d: ; ADC d,s
addr_dCs_8br
ADCMacro8bd
COp63m16d: ; ADC d,s
addr_dCs_16br
ADCMacro16bd
COp65m8nd: ; ADC d
addr_d_8br
ADCMacro8bnd
COp65m16nd: ; ADC d
addr_d_16br
ADCMacro16bnd
COp65m8d: ; ADC d
addr_d_8br
ADCMacro8bd
COp65m16d: ; ADC d
addr_d_16br
ADCMacro16bd
COp67m8nd: ; ADC [d]
addr_LdL_8br
ADCMacro8bnd
COp67m16nd: ; ADC [d]
addr_LdL_16br
ADCMacro16bnd
COp67m8d: ; ADC [d]
addr_LdL_8br
ADCMacro8bd
COp67m16d: ; ADC [d]
addr_LdL_16br
ADCMacro16bd
COp69m8nd: ; ADC #
addr_I_8br
ADCMacro8bnd
COp69m16nd: ; ADC #
addr_I_16br
ADCMacro16bnd
COp69m8d: ; ADC #
addr_I_8br
ADCMacro8bd
COp69m16d: ; ADC #
addr_I_16br
ADCMacro16bd
COp6Dm8nd: ; ADC a
addr_a_8br
ADCMacro8bnd
COp6Dm16nd: ; ADC a
addr_a_16br
ADCMacro16bnd
COp6Dm8d: ; ADC a
addr_a_8br
ADCMacro8bd
COp6Dm16d: ; ADC a
addr_a_16br
ADCMacro16bd
COp6Fm8nd: ; ADC al
addr_al_8br
ADCMacro8bnd
COp6Fm16nd: ; ADC al
addr_al_16br
ADCMacro16bnd
COp6Fm8d: ; ADC al
addr_al_8br
ADCMacro8bd
COp6Fm16d: ; ADC al
addr_al_16br
ADCMacro16bd
COp71m8nd: ; ADC(d),y
addr_BdBCy_8br
ADCMacro8bnd
COp71m16nd: ; ADC(d),y
addr_BdBCy_16br
ADCMacro16bnd
COp71m8d: ; ADC(d),y
addr_BdBCy_8br
ADCMacro8bd
COp71m16d: ; ADC(d),y
addr_BdBCy_16br
ADCMacro16bd
COp72m8nd: ; ADC (d)
addr_BdB_8br
ADCMacro8bnd
COp72m16nd: ; ADC (d)
addr_BdB_16br
ADCMacro16bnd
COp72m8d: ; ADC (d)
addr_BdB_8br
ADCMacro8bd
COp72m16d: ; ADC (d)
addr_BdB_16br
ADCMacro16bd
COp73m8nd: ; ADC(d,s),y
addr_BdCsBCy_8br
ADCMacro8bnd
COp73m16nd: ; ADC(d,s),y
addr_BdCsBCy_16br
ADCMacro16bnd
COp73m8d: ; ADC(d,s),y
addr_BdCsBCy_8br
ADCMacro8bd
COp73m16d: ; ADC(d,s),y
addr_BdCsBCy_16br
ADCMacro16bd
COp75m8nd: ; ADC d,x
addr_dCx_8br
ADCMacro8bnd
COp75m16nd: ; ADC d,x
addr_dCx_16br
ADCMacro16bnd
COp75m8d: ; ADC d,x
addr_dCx_8br
ADCMacro8bd
COp75m16d: ; ADC d,x
addr_dCx_16br
ADCMacro16bd
COp77m8nd: ; ADC [d],y
addr_LdLCy_8br
ADCMacro8bnd
COp77m16nd: ; ADC [d],y
addr_LdLCy_16br
ADCMacro16bnd
COp77m8d: ; ADC [d],y
addr_LdLCy_8br
ADCMacro8bd
COp77m16d: ; ADC [d],y
addr_LdLCy_16br
ADCMacro16bd
COp79m8nd: ; ADC a,y
addr_aCy_8br
ADCMacro8bnd
COp79m16nd: ; ADC a,y
addr_aCy_16br
ADCMacro16bnd
COp79m8d: ; ADC a,y
addr_aCy_8br
ADCMacro8bd
COp79m16d: ; ADC a,y
addr_aCy_16br
ADCMacro16bd
COp7Dm8nd: ; ADC a,x
addr_aCx_8br
ADCMacro8bnd
COp7Dm16nd: ; ADC a,x
addr_aCx_16br
ADCMacro16bnd
COp7Dm8d: ; ADC a,x
addr_aCx_8br
ADCMacro8bd
COp7Dm16d: ; ADC a,x
addr_aCx_16br
ADCMacro16bd
COp7Fm8nd: ; ADC al,x
addr_alCx_8br
ADCMacro8bnd
COp7Fm16nd: ; ADC al,x
addr_alCx_16br
ADCMacro16bnd
COp7Fm8d: ; ADC al,x
addr_alCx_8br
ADCMacro8bd
COp7Fm16d: ; ADC al,x
addr_alCx_16br
ADCMacro16bd
COp21m8: ; AND(d,x)
addr_BdCxB_8br
ANDMacro8b
COp21m16:; AND(d,x)
addr_BdCxB_16br
ANDMacro16b
COp23m8: ; AND d,s
addr_dCs_8br
ANDMacro8b
COp23m16:; AND d,s
addr_dCs_16br
ANDMacro16b
COp25m8: ; AND d
addr_d_8br
ANDMacro8b
COp25m16:; AND d
addr_d_16br
ANDMacro16b
COp27m8: ; AND [d]
addr_LdL_8br
ANDMacro8b
COp27m16:; AND [d]
addr_LdL_16br
ANDMacro16b
COp29m8: ; AND #
addr_I_8br
ANDMacro8b
COp29m16:; AND #
addr_I_16br
ANDMacro16b
COp2Dm8: ; AND a
addr_a_8br
ANDMacro8b
COp2Dm16:; AND a
addr_a_16br
ANDMacro16b
COp2Fm8: ; AND al
addr_al_8br
ANDMacro8b
COp2Fm16:; AND al
addr_al_16br
ANDMacro16b
COp31m8: ; AND(d),y
addr_BdBCy_8br
ANDMacro8b
COp31m16:; AND(d),y
addr_BdBCy_16br
ANDMacro16b
COp32m8: ; AND (d)
addr_BdB_8br
ANDMacro8b
COp32m16:; AND (d)
addr_BdB_16br
ANDMacro16b
COp33m8: ; AND(d,s),y
addr_BdCsBCy_8br
ANDMacro8b
COp33m16:; AND(d,s),y
addr_BdCsBCy_16br
ANDMacro16b
COp35m8: ; AND d,x
addr_dCx_8br
ANDMacro8b
COp35m16:; AND d,x
addr_dCx_16br
ANDMacro16b
COp37m8: ; AND [d],y
addr_LdLCy_8br
ANDMacro8b
COp37m16:; AND [d],y
addr_LdLCy_16br
ANDMacro16b
COp39m8: ; AND a,y
addr_aCy_8br
ANDMacro8b
COp39m16:; AND a,y
addr_aCy_16br
ANDMacro16b
COp3Dm8: ; AND a,x
addr_aCx_8br
ANDMacro8b
COp3Dm16:; AND a,x
addr_aCx_16br
ANDMacro16b
COp3Fm8: ; AND al,x
addr_alCx_8br
ANDMacro8b
COp3Fm16:; AND al,x
addr_alCx_16br
ANDMacro16b
COp06m8: ; ASL d
addr_d_8brni
ASLMacro8b
addr_d_8bw
endloop
COp06m16:; ASL d
addr_d_16brni
ASLMacro16b
addr_d_16bw
endloop
COp0Am8: ; ASL A
addr_A_8brni
ASLMacro8b
addr_A_8bw
endloop
COp0Am16:; ASL A
addr_A_16brni
ASLMacro16b
addr_A_16bw
endloop
COp0Em8: ; ASL a
addr_a_8brni
ASLMacro8b
addr_a_8bw
endloop
COp0Em16:; ASL a
addr_a_16brni
ASLMacro16b
addr_a_16bw
endloop
COp16m8: ; ASL d,x
addr_dCx_8brni
ASLMacro8b
addr_dCx_8bw
endloop
COp16m16:; ASL d,x
addr_dCx_16brni
ASLMacro16b
addr_dCx_16bw
endloop
COp1Em8: ; ASL a,x
addr_aCx_8brni
ASLMacro8b
addr_aCx_8bw
endloop
COp1Em16:; ASL a,x
addr_aCx_16brni
ASLMacro16b
addr_aCx_16bw
endloop
COp90: ; BCC r
test byte[flagc],01h
jnz .skip
JumpMacro
COpB0: ; BCS r
test byte[flagc],01h
jz .skip
JumpMacro
COpF0: ; BEQ r
test dword[flagnz],0FFFFh
jnz .skip
JumpMacro
COp30: ; BMI r
test dword[flagnz],018000h
jz .skip
JumpMacro
COpD0: ; BNE r
test dword[flagnz],0FFFFh
jz .skip
JumpMacro
COp10: ; BPL r
test dword[flagnz],018000h
jnz .skip
JumpMacro
COp80: ; BRA r
movsx eax,byte[esi]
inc esi
add esi,eax
endloop
COp50: ; BVC r
test dword[flago],0FFh
jnz .skip
JumpMacro
COp70: ; BVS r
test dword[flago],0FFh
jz .skip
JumpMacro
; BIT instruction does not affect N and V flags when using immediate
; addressing mode. When using other addressing modes, the N and V flags
COp89m8: ; BIT #
BITMacroim8b
COp89m16:; BIT #
BITMacroim16b
COp24m8: ; BIT d
addr_d_8br
BITMacro8b
COp24m16:; BIT d
addr_d_16br
BITMacro16b
COp2Cm8: ; BIT a
addr_a_8br
BITMacro8b
COp2Cm16:; BIT a
addr_a_16br
BITMacro16b
COp34m8: ; BIT d,x
addr_dCx_8br
BITMacro8b
COp34m16:; BIT d,x
addr_dCx_16br
BITMacro16b
COp3Cm8: ; BIT a,x
addr_aCx_8br
BITMacro8b
COp3Cm16:; BIT a,x
addr_aCx_16br
BITMacro16b
COp00: ; BRK s
BRKMacro
COp82: ; BRL rl
BRLMacro
COp18: ; CLC i
mov dword[flagc],0
endloop
COpD8: ; CLD i
and dl,0F7h
mov bl,dl
mov edi,[tableadc+ebx*4]
endloop
COp58: ; CLI i
and dl,0FBh
endloop
COpB8: ; CLV i
mov dword[flago],0
endloop
COpC1m8: ; CMP(d,x)
addr_BdCxB_8br
CMPMacro8b
COpC1m16:; CMP(d,x)
addr_BdCxB_16br
CMPMacro16b
COpC3m8: ; CMP d,s
addr_dCs_8br
CMPMacro8b
COpC3m16:; CMP d,s
addr_dCs_16br
CMPMacro16b
COpC5m8: ; CMP d
addr_d_8br
CMPMacro8b
COpC5m16:; CMP d
addr_d_16br
CMPMacro16b
COpC7m8: ; CMP [d]
addr_LdL_8br
CMPMacro8b
COpC7m16:; CMP [d]
addr_LdL_16br
CMPMacro16b
COpC9m8: ; CMP #
addr_I_8br
CMPMacro8b
COpC9m16:; CMP #
addr_I_16br
CMPMacro16b
COpCDm8: ; CMP a
addr_a_8br
CMPMacro8b
COpCDm16:; CMP a
addr_a_16br
CMPMacro16b
COpCFm8: ; CMP al
addr_al_8br
CMPMacro8b
COpCFm16:; CMP al
addr_al_16br
CMPMacro16b
COpD1m8: ; CMP(d),y
addr_BdBCy_8br
CMPMacro8b
COpD1m16:; CMP(d),y
addr_BdBCy_16br
CMPMacro16b
COpD2m8: ; CMP (d)
addr_BdB_8br
CMPMacro8b
COpD2m16:; CMP (d)
addr_BdB_16br
CMPMacro16b
COpD3m8: ; CMP(d,s),y
addr_BdCsBCy_8br
CMPMacro8b
COpD3m16:; CMP(d,s),y
addr_BdCsBCy_16br
CMPMacro16b
COpD5m8: ; CMP d,x
addr_dCx_8br
CMPMacro8b
COpD5m16:; CMP d,x
addr_dCx_16br
CMPMacro16b
COpD7m8: ; CMP [d],y
addr_LdLCy_8br
CMPMacro8b
COpD7m16:; CMP [d],y
addr_LdLCy_16br
CMPMacro16b
COpD9m8: ; CMP a,y
addr_aCy_8br
CMPMacro8b
COpD9m16:; CMP a,y
addr_aCy_16br
CMPMacro16b
COpDDm8: ; CMP a,x
addr_aCx_8br
CMPMacro8b
COpDDm16:; CMP a,x
addr_aCx_16br
CMPMacro16b
COpDFm8: ; CMP al,x
addr_alCx_8br
CMPMacro8b
COpDFm16:; CMP al,x
addr_alCx_16br
CMPMacro16b
COp02: ; COP s
COPMacro
COpE0x8: ; CPX #
addr_I_8br
CPXMacro8b
COpE0x16:; CPX #
addr_I_16br
CPXMacro16b
COpE4x8: ; CPX d
addr_d_8br
CPXMacro8b
COpE4x16:; CPX d
addr_d_16br
CPXMacro16b
COpECx8: ; CPX a
addr_a_8br
CPXMacro8b
COpECx16:; CPX a
addr_a_16br
CPXMacro16b
COpC0x8: ; CPY #
addr_I_8br
CPYMacro8b
COpC0x16:; CPY #
addr_I_16br
CPYMacro16b
COpC4x8: ; CPY d
addr_d_8br
CPYMacro8b
COpC4x16:; CPY d
addr_d_16br
CPYMacro16b
COpCCx8: ; CPY a
addr_a_8br
CPYMacro8b
COpCCx16:; CPY a
addr_a_16br
CPYMacro16b
COp3Am8: ; DEC A
addr_A_8brni
dec al
flagsetnz8bnel
addr_A_8bw
endloop
COp3Am16:; DEC A
addr_A_16brni
dec ax
flagsetnz16bnel
addr_A_16bw
endloop
COpCEm8: ; DEC a
addr_a_8brni
dec al
flagsetnz8bnel
addr_a_8bw
endloop
COpCEm16:; DEC a
addr_a_16brni
dec ax
flagsetnz16bnel
addr_a_16bw
endloop
COpC6m8: ; DEC d
addr_d_8brni
dec al
flagsetnz8bnel
addr_d_8bw
endloop
COpC6m16:; DEC d
addr_d_16brni
dec ax
flagsetnz16bnel
addr_d_16bw
endloop
COpD6m8: ; DEC d,x
addr_dCx_8brni
dec al
flagsetnz8bnel
addr_dCx_8bw
endloop
COpD6m16:; DEC d,x
addr_dCx_16brni
dec ax
flagsetnz16bnel
addr_dCx_16bw
endloop
COpDEm8: ; DEC a,x
addr_aCx_8brni
dec al
flagsetnz8bnel
addr_aCx_8bw
endloop
COpDEm16:; DEC a,x
addr_aCx_16brni
dec ax
flagsetnz16bnel
addr_aCx_16bw
endloop
COpCAx8: ; DEX i
dec byte[xx]
mov al,[xx]
flagsetnz8b
endloop
COpCAx16:; DEX i
dec word[xx]
mov ax,[xx]
flagsetnz16b
endloop
COp88x8: ; DEY i
dec byte[xy]
mov al,[xy]
flagsetnz8b
endloop
COp88x16:; DEY i
dec word[xy]
mov ax,[xy]
flagsetnz16b
endloop
COp41m8: ; EOR(d,x)
addr_BdCxB_8br
EORMacro8b
COp41m16:; EOR(d,x)
addr_BdCxB_16br
EORMacro16b
COp43m8: ; EOR d,s
addr_dCs_8br
EORMacro8b
COp43m16:; EOR d,s
addr_dCs_16br
EORMacro16b
COp45m8: ; EOR d
addr_d_8br
EORMacro8b
COp45m16:; EOR d
addr_d_16br
EORMacro16b
COp47m8: ; EOR [d]
addr_LdL_8br
EORMacro8b
COp47m16:; EOR [d]
addr_LdL_16br
EORMacro16b
COp49m8: ; EOR #
addr_I_8br
EORMacro8b
COp49m16:; EOR #
addr_I_16br
EORMacro16b
COp4Dm8: ; EOR a
addr_a_8br
EORMacro8b
COp4Dm16:; EOR a
addr_a_16br
EORMacro16b
COp4Fm8: ; EOR al
addr_al_8br
EORMacro8b
COp4Fm16:; EOR al
addr_al_16br
EORMacro16b
COp51m8: ; EOR(d),y
addr_BdBCy_8br
EORMacro8b
COp51m16:; EOR(d),y
addr_BdBCy_16br
EORMacro16b
COp52m8: ; EOR (d)
addr_BdB_8br
EORMacro8b
COp52m16:; EOR (d)
addr_BdB_16br
EORMacro16b
COp53m8: ; EOR(d,s),y
addr_BdCsBCy_8br
EORMacro8b
COp53m16:; EOR(d,s),y
addr_BdCsBCy_16br
EORMacro16b
COp55m8: ; EOR d,x
addr_dCx_8br
EORMacro8b
COp55m16:; EOR d,x
addr_dCx_16br
EORMacro16b
COp57m8: ; EOR [d],y
addr_LdLCy_8br
EORMacro8b
COp57m16:; EOR [d],y
addr_LdLCy_16br
EORMacro16b
COp59m8: ; EOR a,y
addr_aCy_8br
EORMacro8b
COp59m16:; EOR a,y
addr_aCy_16br
EORMacro16b
COp5Dm8: ; EORa,x
addr_aCx_8br
EORMacro8b
COp5Dm16:; EORa,x
addr_aCx_16br
EORMacro16b
COp5Fm8: ; EOR al,x
addr_alCx_8br
EORMacro8b
COp5Fm16:; EOR al,x
addr_alCx_16br
EORMacro16b
COp1Am8: ; INC A
addr_A_8brni
inc al
flagsetnz8bnel
addr_A_8bw
endloop
COp1Am16:; INC A
addr_A_16brni
inc ax
flagsetnz16bnel
addr_A_16bw
endloop
COpEEm8: ; INC a
addr_a_8brni
inc al
flagsetnz8bnel
addr_a_8bw
endloop
COpEEm16:; INC a
addr_a_16brni
inc ax
flagsetnz16bnel
addr_a_16bw
endloop
COpE6m8: ; INC d
addr_d_8brni
inc al
flagsetnz8bnel
addr_d_8bw
endloop
COpE6m16:; INC d
addr_d_16brni
inc ax
flagsetnz16bnel
addr_d_16bw
endloop
COpF6m8: ; INC d,x
addr_dCx_8brni
inc al
flagsetnz8bnel
addr_dCx_8bw
endloop
COpF6m16:; INC d,x
addr_dCx_16brni
inc ax
flagsetnz16bnel
addr_dCx_16bw
endloop
COpFEm8: ; INC a,x
addr_aCx_8brni
inc al
flagsetnz8bnel
addr_aCx_8bw
endloop
COpFEm16:; INC a,x
addr_aCx_16brni
inc ax
flagsetnz16bnel
addr_aCx_16bw
endloop
COpE8x8: ; INX i
inc byte[xx]
mov al,[xx]
flagsetnz8b
endloop
COpE8x16:; INX i
inc word[xx]
mov ax,[xx]
flagsetnz16b
endloop
COpC8x8: ; INY i
inc byte[xy]
mov al,[xy]
flagsetnz8b
endloop
COpC8x16:; INY i
inc word[xy]
mov ax,[xy]
flagsetnz16b
endloop
COpDC: ; JML (a)
JMLMacro
COp4C: ; JMP a
JMPMacro4C
COp6C: ; JMP (a)
JMPMacro6C
COp7C: ; JMP(a,x)
JMPMacro7C
COp5C: ; JMP al
JMPMacro5C
COp22: ; JSL al
JSLMacro
COp20: ; JSR a
JSRMacro20
COpFC: ; JSR(a,x)
JSRMacroFC
COpA1m8: ; LDA(d,x)
addr_BdCxB_8br
LDAMacro8b
COpA1m16:; LDA(d,x)
addr_BdCxB_16br
LDAMacro16b
COpA3m8: ; LDA d,s
addr_dCs_8br
LDAMacro8b
COpA3m16:; LDA d,s
addr_dCs_16br
LDAMacro16b
COpA5m8: ; LDA d
addr_d_8br
LDAMacro8b
COpA5m16:; LDA d
addr_d_16br
LDAMacro16b
COpA7m8: ; LDA [d]
addr_LdL_8br
LDAMacro8b
COpA7m16:; LDA [d]
addr_LdL_16br
LDAMacro16b
COpA9m8: ; LDA #
addr_I_8br
LDAMacro8b
COpA9m16:; LDA #
addr_I_16br
LDAMacro16b
COpADm8: ; LDA a
addr_a_8br
LDAMacro8b
COpADm16:; LDA a
addr_a_16br
LDAMacro16b
COpAFm8: ; LDA al
addr_al_8br
LDAMacro8b
COpAFm16:; LDA al
addr_al_16br
LDAMacro16b
COpB1m8: ; LDA(d),y
addr_BdBCy_8br
LDAMacro8b
COpB1m16:; LDA(d),y
addr_BdBCy_16br
LDAMacro16b
COpB2m8: ; LDA (d)
addr_BdB_8br
LDAMacro8b
COpB2m16:; LDA (d)
addr_BdB_16br
LDAMacro16b
COpB3m8: ; LDA(d,s),y
addr_BdCsBCy_8br
LDAMacro8b
COpB3m16:; LDA(d,s),y
addr_BdCsBCy_16br
LDAMacro16b
COpB5m8: ; LDA d,x
addr_dCx_8br
LDAMacro8b
COpB5m16:; LDA d,x
addr_dCx_16br
LDAMacro16b
COpB7m8: ; LDA [d],y
addr_LdLCy_8br
LDAMacro8b
COpB7m16:; LDA [d],y
addr_LdLCy_16br
LDAMacro16b
COpB9m8: ; LDA a,y
addr_aCy_8br
LDAMacro8b
COpB9m16:; LDA a,y
addr_aCy_16br
LDAMacro16b
COpBDm8: ; LDA a,x
addr_aCx_8br
LDAMacro8b
COpBDm16:; LDA a,x
addr_aCx_16br
LDAMacro16b
COpBFm8: ; LDA al,x
addr_alCx_8br
LDAMacro8b
COpBFm16:; LDA al,x
addr_alCx_16br
LDAMacro16b
COpA2x8: ; LDX #
addr_I_8br
LDXMacro8b
COpA2x16:; LDX #
addr_I_16br
LDXMacro16b
COpA6x8: ; LDX d
addr_d_8br
LDXMacro8b
COpA6x16:; LDX d
addr_d_16br
LDXMacro16b
COpAEx8: ; LDX a
addr_a_8br
LDXMacro8b
COpAEx16:; LDX a
addr_a_16br
LDXMacro16b
COpB6x8: ; LDX d,y
addr_dCy_8br
LDXMacro8b
COpB6x16:; LDX d,y
addr_dCy_16br
LDXMacro16b
COpBEx8: ; LDX a,y
addr_aCy_8br
LDXMacro8b
COpBEx16:; LDX a,y
addr_aCy_16br
LDXMacro16b
COpA0x8: ; LDY #
addr_I_8br
LDYMacro8b
COpA0x16:; LDY #
addr_I_16br
LDYMacro16b
COpA4x8: ; LDY d
addr_d_8br
LDYMacro8b
COpA4x16:; LDY d
addr_d_16br
LDYMacro16b
COpACx8: ; LDY a
addr_a_8br
LDYMacro8b
COpACx16:; LDY a
addr_a_16br
LDYMacro16b
COpB4x8: ; LDY d,x
addr_dCx_8br
LDYMacro8b
COpB4x16:; LDY d,x
addr_dCx_16br
LDYMacro16b
COpBCx8: ; LDY a,x
addr_aCx_8br
LDYMacro8b
COpBCx16:; LDY a,x
addr_aCx_16br
LDYMacro16b
COp46m8: ; LSR d
addr_d_8brni
LSRMacro8b
addr_d_8bw
endloop
COp46m16:; LSR d
addr_d_16brni
LSRMacro16b
addr_d_16bw
endloop
COp4Am8: ; LSR A
addr_A_8brni
LSRMacro8b
addr_A_8bw
endloop
COp4Am16:; LSR A
addr_A_16brni
LSRMacro16b
addr_A_16bw
endloop
COp4Em8: ; LSR a
addr_a_8brni
LSRMacro8b
addr_a_8bw
endloop
COp4Em16:; LSR a
addr_a_16brni
LSRMacro16b
addr_a_16bw
endloop
COp56m8: ; LSR d,x
addr_dCx_8brni
LSRMacro8b
addr_dCx_8bw
endloop
COp56m16:; LSR d,x
addr_dCx_16brni
LSRMacro16b
addr_dCx_16bw
endloop
COp5Em8: ; LSRa,x
addr_aCx_8brni
LSRMacro8b
addr_aCx_8bw
endloop
COp5Em16:; LSRa,x
addr_aCx_16brni
LSRMacro16b
addr_aCx_16bw
endloop
COp54: ; MVN xya
MVNMacro
COp44: ; MVP xya
MVPMacro
COpEA: ; NOP i
endloop
COp01m8: ; ORA(d,x)
addr_BdCxB_8br
ORAMacro8b
COp01m16:; ORA(d,x)
addr_BdCxB_16br
ORAMacro16b
COp03m8: ; ORA d,s
addr_dCs_8br
ORAMacro8b
COp03m16:; ORA d,s
addr_dCs_16br
ORAMacro16b
COp05m8: ; ORA d
addr_d_8br
ORAMacro8b
COp05m16:; ORA d
addr_d_16br
ORAMacro16b
COp07m8: ; ORA [d]
addr_LdL_8br
ORAMacro8b
COp07m16:; ORA [d]
addr_LdL_16br
ORAMacro16b
COp09m8: ; ORA #
addr_I_8br
ORAMacro8b
COp09m16:; ORA #
addr_I_16br
ORAMacro16b
COp0Dm8: ; ORA a
addr_a_8br
ORAMacro8b
COp0Dm16:; ORA a
addr_a_16br
ORAMacro16b
COp0Fm8: ; ORA al
addr_al_8br
ORAMacro8b
COp0Fm16:; ORA al
addr_al_16br
ORAMacro16b
COp11m8: ; ORA(d),y
addr_BdBCy_8br
ORAMacro8b
COp11m16:; ORA(d),y
addr_BdBCy_16br
ORAMacro16b
COp12m8: ; ORA(d)
addr_BdB_8br
ORAMacro8b
COp12m16:; ORA(d)
addr_BdB_16br
ORAMacro16b
COp13m8: ; ORA(d,s),y
addr_BdCsBCy_8br
ORAMacro8b
COp13m16:; ORA(d,s),y
addr_BdCsBCy_16br
ORAMacro16b
COp15m8: ; ORA d,x
addr_dCx_8br
ORAMacro8b
COp15m16:; ORA d,x
addr_dCx_16br
ORAMacro16b
COp17m8: ; ORA [d],y
addr_LdLCy_8br
ORAMacro8b
COp17m16:; ORA [d],y
addr_LdLCy_16br
ORAMacro16b
COp19m8: ; ORA a,y
addr_aCy_8br
ORAMacro8b
COp19m16:; ORA a,y
addr_aCy_16br
ORAMacro16b
COp1Dm8: ; ORA a,x
addr_aCx_8br
ORAMacro8b
COp1Dm16:; ORA a,x
addr_aCx_16br
ORAMacro16b
COp1Fm8: ; ORA al,x
addr_alCx_8br
ORAMacro8b
COp1Fm16:; ORA al,x
addr_alCx_16br
ORAMacro16b
COpF4: ; PEA s
PEAMacro
COpD4: ; PEI s
PEIMacro
COp62: ; PER s
PERMacro
COp48m8: ; PHA s
PUSHMacro8b [xa]
COp48m16:; PHA s
PUSHMacro16b [xa], [xa+1]
COp8B: ; PHB s
PUSHMacro8b [xdb]
COp0B: ; PHD s
PUSHMacro16b [xd], [xd+1]
COp4B: ; PHK s
PUSHMacro8b [xpb]
COp08: ; PHP s
PUSHMacro8bp
COpDAx8: ; PHX s
PUSHMacro8b [xx]
COpDAx16:; PHX s
PUSHMacro16b [xx], [xx+1]
COp5Ax8: ; PHY s
PUSHMacro8b [xy]
COp5Ax16:; PHY s
PUSHMacro16b [xy], [xy+1]
COp68m8: ; PLA s
POPMacro8b [xa]
COp68m16:; PLA s
POPMacro16b [xa], [xa+1]
COpAB: ; PLB s
POPMacro8b [xdb]
COp2B: ; PLD s
POPMacro16bd [xd], [xd+1]
COp28: ; PLP s
POPMacroP
COpFAx8: ; PLX s
POPMacro8b [xx]
COpFAx16:; PLX s
POPMacro16b [xx], [xx+1]
COp7Ax8: ; PLY s
POPMacro8b [xy]
COp7Ax16:; PLY s
POPMacro16b [xy], [xy+1]
COpC2: ; REP #
REPMacro
COp26m8: ; ROL d
addr_d_8brni
ROLMacro8b
addr_d_8bw
endloop
COp26m16:; ROL d
addr_d_16brni
ROLMacro16b
addr_d_16bw
endloop
COp2Am8: ; ROL A
addr_A_8brni
ROLMacro8b
addr_A_8bw
endloop
COp2Am16:; ROL A
addr_A_16brni
ROLMacro16b
addr_A_16bw
endloop
COp2Em8: ; ROL a
addr_a_8brni
ROLMacro8b
addr_a_8bw
endloop
COp2Em16:; ROL a
addr_a_16brni
ROLMacro16b
addr_a_16bw
endloop
COp36m8: ; ROL d,x
addr_dCx_8brni
ROLMacro8b
addr_dCx_8bw
endloop
COp36m16:; ROL d,x
addr_dCx_16brni
ROLMacro16b
addr_dCx_16bw
endloop
COp3Em8: ; ROL a,x
addr_aCx_8brni
ROLMacro8b
addr_aCx_8bw
endloop
COp3Em16:; ROL a,x
addr_aCx_16brni
ROLMacro16b
addr_aCx_16bw
endloop
COp66m8: ; ROR d
addr_d_8brni
RORMacro8b
addr_d_8bw
endloop
COp66m16:; ROR d
addr_d_16brni
RORMacro16b
addr_d_16bw
endloop
COp6Am8: ; ROR A
addr_A_8brni
RORMacro8b
addr_A_8bw
endloop
COp6Am16:; ROR A
addr_A_16brni
RORMacro16b
addr_A_16bw
endloop
COp6Em8: ; ROR a
addr_a_8brni
RORMacro8b
addr_a_8bw
endloop
COp6Em16:; ROR a
addr_a_16brni
RORMacro16b
addr_a_16bw
endloop
COp76m8: ; ROR d,x
addr_dCx_8brni
RORMacro8b
addr_dCx_8bw
endloop
COp76m16:; ROR d,x
addr_dCx_16brni
RORMacro16b
addr_dCx_16bw
endloop
COp7Em8: ; ROR a,x
addr_aCx_8brni
RORMacro8b
addr_aCx_8bw
endloop
COp7Em16:; ROR a,x
addr_aCx_16brni
RORMacro16b
addr_aCx_16bw
endloop
COp40: ; RTI s
RTIMacro
COp6B: ; RTL s
RTLMacro
COp60: ; RTS s
RTSMacro
COpE1m8nd: ; SBC(d,x)
addr_BdCxB_8br
SBCMacro8bnd
COpE1m16nd: ; SBC(d,x)
addr_BdCxB_16br
SBCMacro16bnd
COpE1m8d: ; SBC(d,x)
addr_BdCxB_8br
SBCMacro8bd
COpE1m16d: ; SBC(d,x)
addr_BdCxB_16br
SBCMacro16bd
COpE3m8nd: ; SBC d,s
addr_dCs_8br
SBCMacro8bnd
COpE3m16nd: ; SBC d,s
addr_dCs_16br
SBCMacro16bnd
COpE3m8d: ; SBC d,s
addr_dCs_8br
SBCMacro8bd
COpE3m16d: ; SBC d,s
addr_dCs_16br
SBCMacro16bd
COpE5m8nd: ; SBC d
addr_d_8br
SBCMacro8bnd
COpE5m16nd: ; SBC d
addr_d_16br
SBCMacro16bnd
COpE5m8d: ; SBC d
addr_d_8br
SBCMacro8bd
COpE5m16d: ; SBC d
addr_d_16br
SBCMacro16bd
COpE7m8nd: ; SBC [d]
addr_LdL_8br
SBCMacro8bnd
COpE7m16nd: ; SBC [d]
addr_LdL_16br
SBCMacro16bnd
COpE7m8d: ; SBC [d]
addr_LdL_8br
SBCMacro8bd
COpE7m16d: ; SBC [d]
addr_LdL_16br
SBCMacro16bd
COpE9m8nd: ; SBC #
addr_I_8br
SBCMacro8bnd
COpE9m16nd: ; SBC #
addr_I_16br
SBCMacro16bnd
COpE9m8d: ; SBC #
addr_I_8br
SBCMacro8bd
COpE9m16d: ; SBC #
addr_I_16br
SBCMacro16bd
COpEDm8nd: ; SBC a
addr_a_8br
SBCMacro8bnd
COpEDm16nd: ; SBC a
addr_a_16br
SBCMacro16bnd
COpEDm8d: ; SBC a
addr_a_8br
SBCMacro8bd
COpEDm16d: ; SBC a
addr_a_16br
SBCMacro16bd
COpEFm8nd: ; SBC al
addr_al_8br
SBCMacro8bnd
COpEFm16nd: ; SBC al
addr_al_16br
SBCMacro16bnd
COpEFm8d: ; SBC al
addr_al_8br
SBCMacro8bd
COpEFm16d: ; SBC al
addr_al_16br
SBCMacro16bd
COpF1m8nd: ; SBC(d),y
addr_BdBCy_8br
SBCMacro8bnd
COpF1m16nd: ; SBC(d),y
addr_BdBCy_16br
SBCMacro16bnd
COpF1m8d: ; SBC(d),y
addr_BdBCy_8br
SBCMacro8bd
COpF1m16d: ; SBC(d),y
addr_BdBCy_16br
SBCMacro16bd
COpF2m8nd: ; SBC (d)
addr_BdB_8br
SBCMacro8bnd
COpF2m16nd: ; SBC (d)
addr_BdB_16br
SBCMacro16bnd
COpF2m8d: ; SBC (d)
addr_BdB_8br
SBCMacro8bd
COpF2m16d: ; SBC (d)
addr_BdB_16br
SBCMacro16bd
COpF3m8nd: ; SBC(d,s),y
addr_BdCsBCy_8br
SBCMacro8bnd
COpF3m16nd: ; SBC(d,s),y
addr_BdCsBCy_16br
SBCMacro16bnd
COpF3m8d: ; SBC(d,s),y
addr_BdCsBCy_8br
SBCMacro8bd
COpF3m16d: ; SBC(d,s),y
addr_BdCsBCy_16br
SBCMacro16bd
COpF5m8nd: ; SBC d,x
addr_dCx_8br
SBCMacro8bnd
COpF5m16nd: ; SBC d,x
addr_dCx_16br
SBCMacro16bnd
COpF5m8d: ; SBC d,x
addr_dCx_8br
SBCMacro8bd
COpF5m16d: ; SBC d,x
addr_dCx_16br
SBCMacro16bd
COpF7m8nd: ; SBC [d],y
addr_LdLCy_8br
SBCMacro8bnd
COpF7m16nd: ; SBC [d],y
addr_LdLCy_16br
SBCMacro16bnd
COpF7m8d: ; SBC [d],y
addr_LdLCy_8br
SBCMacro8bd
COpF7m16d: ; SBC [d],y
addr_LdLCy_16br
SBCMacro16bd
COpF9m8nd: ; SBC a,y
addr_aCy_8br
SBCMacro8bnd
COpF9m16nd: ; SBC a,y
addr_aCy_16br
SBCMacro16bnd
COpF9m8d: ; SBC a,y
addr_aCy_8br
SBCMacro8bd
COpF9m16d: ; SBC a,y
addr_aCy_16br
SBCMacro16bd
COpFDm8nd: ; SBC a,x
addr_aCx_8br
SBCMacro8bnd
COpFDm16nd: ; SBC a,x
addr_aCx_16br
SBCMacro16bnd
COpFDm8d: ; SBC a,x
addr_aCx_8br
SBCMacro8bd
COpFDm16d: ; SBC a,x
addr_aCx_16br
SBCMacro16bd
COpFFm8nd: ; SBC al,x
addr_alCx_8br
SBCMacro8bnd
COpFFm16nd: ; SBC al,x
addr_alCx_16br
SBCMacro16bnd
COpFFm8d: ; SBC al,x
addr_alCx_8br
SBCMacro8bd
COpFFm16d: ; SBC al,x
addr_alCx_16br
SBCMacro16bd
COp38: ; SEC i
mov dword[flagc],0FFh
endloop
COpF8: ; SED i
or dl,08h
mov bl,dl
mov edi,[tableadc+ebx*4]
endloop
COp78: ; SEI i
or dl,04h
endloop
COpE2: ; SEP #
SEPMacro
COp81m8: ; STA(d,x)
STAMacro8b
addr_BdCxB_8bw
endloop
COp81m16:; STA(d,x)
STAMacro16b
addr_BdCxB_16bw
endloop
COp83m8: ; STA d,s
STAMacro8b
addr_dCs_8bw
endloop
COp83m16:; STA d,s
STAMacro16b
addr_dCs_16bw
endloop
COp85m8: ; STA d
STAMacro8b
addr_d_8bw
endloop
COp85m16:; STA d
STAMacro16b
addr_d_16bw
endloop
COp87m8: ; STA [d]
STAMacro8b
addr_LdL_8bw
endloop
COp87m16:; STA [d]
STAMacro16b
addr_LdL_16bw
endloop
COp8Dm8: ; STA a
STAMacro8b
addr_a_8bw
endloop
COp8Dm16:; STA a
STAMacro16b
addr_a_16bw
endloop
COp8Fm8: ; STA al
STAMacro8b
addr_al_8bw
endloop
COp8Fm16:; STA al
STAMacro16b
addr_al_16bw
endloop
COp91m8: ; STA(d),y
STAMacro8b
addr_BdBCy_8bw
endloop
COp91m16:; STA(d),y
STAMacro16b
addr_BdBCy_16bw
endloop
COp92m8: ; STA (d)
STAMacro8b
addr_BdB_8bw
endloop
COp92m16:; STA (d)
STAMacro16b
addr_BdB_16bw
endloop
COp93m8: ; STA(d,s),y
STAMacro8b
addr_BdCsBCy_8bw
endloop
COp93m16:; STA(d,s),y
STAMacro16b
addr_BdCsBCy_16bw
endloop
COp95m8: ; STA d,x
STAMacro8b
addr_dCx_8bw
endloop
COp95m16:; STA d,x
STAMacro16b
addr_dCx_16bw
endloop
COp97m8: ; STA [d],y
STAMacro8b
addr_LdLCy_8bw
endloop
COp97m16:; STA [d],y
STAMacro16b
addr_LdLCy_16bw
endloop
COp99m8: ; STA a,y
STAMacro8b
addr_aCy_8bw
endloop
COp99m16:; STA a,y
STAMacro16b
addr_aCy_16bw
endloop
COp9Dm8: ; STA a,x
STAMacro8b
addr_aCx_8bw
endloop
COp9Dm16:; STA a,x
STAMacro16b
addr_aCx_16bw
endloop
COp9Fm8: ; STA al,x
STAMacro8b
addr_alCx_8bw
endloop
COp9Fm16:; STA al,x
STAMacro16b
addr_alCx_16bw
endloop
COp86x8: ; STX d
STXMacro8b
addr_d_8bw
endloop
COp86x16:; STX d
STXMacro16b
addr_d_16bw
endloop
COp8Ex8: ; STX a
STXMacro8b
addr_a_8bw
endloop
COp8Ex16:; STX a
STXMacro16b
addr_a_16bw
endloop
COp96x8: ; STX d,y
STXMacro8b
addr_dCy_8bw
endloop
COp96x16:; STX d,y
STXMacro16b
addr_dCy_16bw
endloop
COp84x8: ; STY d
STYMacro8b
addr_d_8bw
endloop
COp84x16:; STY d
STYMacro16b
addr_d_16bw
endloop
COp8Cx8: ; STY a
STYMacro8b
addr_a_8bw
endloop
COp8Cx16:; STY a
STYMacro16b
addr_a_16bw
endloop
COp94x8: ; STYd,x
STYMacro8b
addr_dCx_8bw
endloop
COp94x16:; STYd,x
STYMacro16b
addr_dCx_16bw
endloop
COpDB: ; STP i
dec esi
endloop
COp64m8: ; STZ d
xor al,al
addr_d_8bw
endloop
COp64m16:; STZ d
xor eax,eax
addr_d_16bw
endloop
COp74m8: ; STZ d,x
xor al,al
addr_dCx_8bw
endloop
COp74m16:; STZ d,x
xor eax,eax
addr_dCx_16bw
endloop
COp9Cm8: ; STZ a
xor al,al
addr_a_8bw
endloop
COp9Cm16:; STZ a
xor eax,eax
addr_a_16bw
endloop
COp9Em8: ; STZ a,x
xor al,al
addr_aCx_8bw
endloop
COp9Em16:; STZ a,x
xor eax,eax
addr_aCx_16bw
endloop
COp14m8: ; TRB d
addr_d_8brni
mov cl,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test cl,al
jz .zero
mov word[flagnz],1
not cl
and al,cl
addr_d_8bw
endloop
.zero
mov word[flagnz],0
not cl
and al,cl
addr_d_8bw
endloop
COp14m16:; TRB d
addr_d_16brni
mov cx,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test cx,ax
jz .zero
mov word[flagnz],1
not cx
and ax,cx
addr_d_16bw
endloop
.zero
mov word[flagnz],0
not cx
and ax,cx
addr_d_16bw
endloop
COp1Cm8: ; TRB a
addr_a_8brni
mov cl,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test cl,al
jz .zero
mov word[flagnz],1
not cl
and al,cl
addr_a_8bw
endloop
.zero
mov word[flagnz],0
not cl
and al,cl
addr_a_8bw
endloop
COp1Cm16:; TRB a
addr_a_16brni
mov cx,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test cx,ax
jz .zero
mov word[flagnz],1
not cx
and ax,cx
addr_a_16bw
endloop
.zero
mov word[flagnz],0
not cx
and ax,cx
addr_a_16bw
endloop
COp04m8: ; TSB d
addr_d_8brni
mov cl,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test al,cl
jz .zero
mov word[flagnz],1
or al,cl
addr_d_8bw
endloop
.zero
mov word[flagnz],0
or al,cl
addr_d_8bw
endloop
COp04m16:; TSB d
addr_d_16brni
mov cx,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test ax,cx
jz .zero
mov word[flagnz],1
or ax,cx
addr_d_16bw
endloop
.zero
mov word[flagnz],0
or ax,cx
addr_d_16bw
endloop
COp0Cm8: ; TSB a
addr_a_8brni
mov cl,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test al,cl
jz .zero
mov word[flagnz],1
or al,cl
addr_a_8bw
endloop
.zero
mov word[flagnz],0
or al,cl
addr_a_8bw
endloop
COp0Cm16:; TSB a
addr_a_16brni
mov cx,[xa]
test dword[flagnz],18000h
jz .notflags
or dword[flagnz],10000h
.notflags
test ax,cx
jz .zero
mov word[flagnz],1
or ax,cx
addr_a_16bw
endloop
.zero
mov word[flagnz],0
or ax,cx
addr_a_16bw
endloop
COpAAx8: ; TAX i
mov al,[xa]
mov [xx],al
flagsetnz8b
endloop
COpAAx16:; TAX i
mov ax,[xa]
mov [xx],ax
flagsetnz16b
endloop
COpA8x8: ; TAY i
mov al,[xa]
mov [xy],al
flagsetnz8b
endloop
COpA8x16:; TAY i
mov ax,[xa]
mov [xy],ax
flagsetnz16b
endloop
COp5B: ; TCD i
mov ax,[xa]
mov [xd],ax
call UpdateDPage
flagsetnz16b
endloop
COp1B: ; TCS i
mov ax,[xa]
mov [xs],ax
endloop
COp7B: ; TDC i
mov ax,[xd]
mov [xa],ax
flagsetnz16b
endloop
COp3B: ; TSC i
mov ax,[xs]
mov [xa],ax
flagsetnz16b
endloop
COpBAx8: ; TSX i
mov al,[xs]
mov [xx],al
flagsetnz8b
endloop
COpBAx16:; TSX i
mov ax,[xs]
mov [xx],ax
flagsetnz16b
endloop
COp8Am8: ; TXA i
mov al,[xx]
mov [xa],al
flagsetnz8b
endloop
COp8Am16:; TXA i
mov ax,[xx]
mov [xa],ax
flagsetnz16b
endloop
COp9A: ; TXS i
mov ax,[xx]
mov [xs],ax
test byte[xe],1
jnz .emul
endloop
.emul
mov byte[xs+1],1
endloop
COp9Bx8: ; TXY i
mov al,[xx]
mov [xy],al
flagsetnz8b
endloop
COp9Bx16:; TXY i
mov ax,[xx]
mov [xy],ax
flagsetnz16b
endloop
COp98m8: ; TYA i
mov al,[xy]
mov [xa],al
flagsetnz8b
endloop
COp98m16:; TYA i
mov ax,[xy]
mov [xa],ax
flagsetnz16b
endloop
COpBBx8: ; TYX i
mov al,[xy]
mov [xx],al
flagsetnz8b
endloop
COpBBx16:; TYX i
mov ax,[xy]
mov [xx],ax
flagsetnz16b
endloop
COpCB: ; WAI i
WAIMacro
COpEB: ; XBA i
mov ah,[xa]
mov al,[xa+1]
mov [xa],ax
flagsetnz8b
endloop
COpFB: ; XCE i
XCEMacro
COp42: ; WDM
inc esi
endloop