📄 e65816c.inc
字号:
;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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -