First release of ZSNES sources
This commit is contained in:
1623
zsnes/src/cpu/65816d.inc
Normal file
1623
zsnes/src/cpu/65816d.inc
Normal file
File diff suppressed because it is too large
Load Diff
1621
zsnes/src/cpu/65816db.inc
Normal file
1621
zsnes/src/cpu/65816db.inc
Normal file
File diff suppressed because it is too large
Load Diff
1631
zsnes/src/cpu/65816dc.inc
Normal file
1631
zsnes/src/cpu/65816dc.inc
Normal file
File diff suppressed because it is too large
Load Diff
812
zsnes/src/cpu/address.inc
Normal file
812
zsnes/src/cpu/address.inc
Normal file
@@ -0,0 +1,812 @@
|
||||
;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 membank0w8ram
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; Address Modes
|
||||
;*******************************************************
|
||||
|
||||
; 1. Immediate Addressing -- # - DONE IN PROGRAM
|
||||
|
||||
%macro addr_I_8br 0
|
||||
mov al,[esi]
|
||||
inc esi
|
||||
%endmacro
|
||||
|
||||
%macro addr_I_16br 0
|
||||
mov eax,[esi]
|
||||
add esi,2
|
||||
%endmacro
|
||||
|
||||
; 2. Absolute -- a (TESTED)
|
||||
|
||||
%macro addr_a_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 3. Absolute Long -- al
|
||||
|
||||
%macro addr_al_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 4. Direct -- d (TESTED)
|
||||
|
||||
%macro addr_d_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
%endmacro
|
||||
|
||||
|
||||
%macro addr_d_8bw 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageW8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16bw 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageW16]
|
||||
%endmacro
|
||||
|
||||
; 5. Accumulator -- A
|
||||
|
||||
%macro addr_A_8br 0
|
||||
mov al,[xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16br 0
|
||||
mov eax,[xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_8bw 0
|
||||
mov [xa],al
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16bw 0
|
||||
mov [xa],ax
|
||||
%endmacro
|
||||
|
||||
; 7. Direct Indirect Indexed -- (d),y
|
||||
|
||||
%macro addr_BdBCy_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 8. Direct Indirect Indexed Long -- [d],y
|
||||
|
||||
%macro addr_LdLCy_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_8bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
pop ax
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
xor bl,bl
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
pop ax
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 9. Direct Indexed Indirect -- (d,x)
|
||||
|
||||
%macro addr_BdCxB_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_8bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 10. Direct Indexed With X -- d,x
|
||||
|
||||
%macro addr_dCx_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_8bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0w8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call membank0w16
|
||||
%endmacro
|
||||
|
||||
; 11. Direct Indexed With Y -- d,y
|
||||
|
||||
%macro addr_dCy_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_8bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call membank0w8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call membank0w16
|
||||
%endmacro
|
||||
|
||||
; 12. Absolute Indexed With X -- a,x
|
||||
|
||||
%macro addr_aCx_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 13. Absolute Indexed With Y -- a,y
|
||||
|
||||
%macro addr_aCy_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 14. Absolute Long Indexed With X -- al,x
|
||||
|
||||
%macro addr_alCx_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 18. Direct Indirect -- (d)
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; | 00 | (direct address) |
|
||||
; + | DB |
|
||||
; -------------------------------
|
||||
; Address: | effective address |
|
||||
|
||||
%macro addr_BdB_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 19. Direct Indirect Long -- [d]
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; -------------------------------
|
||||
; Address: | (direct address) |
|
||||
|
||||
%macro addr_LdL_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 22. Stack Relative -- d,s
|
||||
|
||||
%macro addr_dCs_8br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_8bw 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0w8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16bw 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0w16
|
||||
%endmacro
|
||||
|
||||
; 23. Stack Relative Indirect Indexed -- (d,s),y (TESTED)
|
||||
|
||||
%macro addr_BdCsBCy_8br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
792
zsnes/src/cpu/address2.inc
Normal file
792
zsnes/src/cpu/address2.inc
Normal file
@@ -0,0 +1,792 @@
|
||||
;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 DPageR8,DPageR16,DPageW8,DPageW16
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; Address Modes
|
||||
;*******************************************************
|
||||
|
||||
; 1. Immediate Addressing -- # - DONE IN PROGRAM
|
||||
|
||||
%macro addr_I_8br 0
|
||||
mov al,[esi]
|
||||
inc esi
|
||||
%endmacro
|
||||
|
||||
%macro addr_I_16br 0
|
||||
mov eax,[esi]
|
||||
add esi,2
|
||||
%endmacro
|
||||
|
||||
; 2. Absolute -- a (TESTED)
|
||||
|
||||
%macro addr_a_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 3. Absolute Long -- al
|
||||
|
||||
%macro addr_al_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 4. Direct -- d (TESTED)
|
||||
|
||||
%macro addr_d_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_8bw 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageW8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16bw 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageW16]
|
||||
%endmacro
|
||||
|
||||
; 5. Accumulator -- A
|
||||
|
||||
%macro addr_A_8br 0
|
||||
mov al,[xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16br 0
|
||||
mov eax,[xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_8bw 0
|
||||
mov [xa],al
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16bw 0
|
||||
mov [xa],ax
|
||||
%endmacro
|
||||
|
||||
; 7. Direct Indirect Indexed -- (d),y
|
||||
|
||||
%macro addr_BdBCy_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 8. Direct Indirect Indexed Long -- [d],y
|
||||
|
||||
%macro addr_LdLCy_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_8bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
pop ax
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
xor bl,bl
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
pop ax
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 9. Direct Indexed Indirect -- (d,x)
|
||||
|
||||
%macro addr_BdCxB_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_8bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16bw 0
|
||||
push ax
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 10. Direct Indexed With X -- d,x
|
||||
|
||||
%macro addr_dCx_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageR16]
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_8bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageW8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xx]
|
||||
call dword near [DPageW16]
|
||||
%endmacro
|
||||
|
||||
; 11. Direct Indexed With Y -- d,y
|
||||
|
||||
%macro addr_dCy_8br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call dword near [DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16br 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call dword near [DPageR16]
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_8bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call dword near [DPageW8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16bw 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
add cx,[xy]
|
||||
call dword near [DPageW16]
|
||||
%endmacro
|
||||
|
||||
; 12. Absolute Indexed With X -- a,x
|
||||
|
||||
%macro addr_aCx_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 13. Absolute Indexed With Y -- a,y
|
||||
|
||||
%macro addr_aCy_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add esi,2
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 14. Absolute Long Indexed With X -- al,x
|
||||
|
||||
%macro addr_alCx_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 18. Direct Indirect -- (d)
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; | 00 | (direct address) |
|
||||
; + | DB |
|
||||
; -------------------------------
|
||||
; Address: | effective address |
|
||||
|
||||
%macro addr_BdB_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 19. Direct Indirect Long -- [d]
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; -------------------------------
|
||||
; Address: | (direct address) |
|
||||
|
||||
%macro addr_LdL_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
inc esi
|
||||
push cx
|
||||
call dword near [DPageR16]
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call dword near [DPageR8]
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 22. Stack Relative -- d,s
|
||||
|
||||
%macro addr_dCs_8br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_8bw 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0w8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16bw 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0w16
|
||||
%endmacro
|
||||
|
||||
; 23. Stack Relative Indirect Indexed -- (d,s),y (TESTED)
|
||||
|
||||
%macro addr_BdCsBCy_8br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
pop ax
|
||||
add cx,[xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
409
zsnes/src/cpu/addrni.asm
Normal file
409
zsnes/src/cpu/addrni.asm
Normal file
@@ -0,0 +1,409 @@
|
||||
;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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; Address Modes
|
||||
;*******************************************************
|
||||
|
||||
; 1. Immediate Addressing -- # - DONE IN PROGRAM
|
||||
|
||||
%macro addr_I_8brni 0
|
||||
mov al,[esi]
|
||||
%endmacro
|
||||
|
||||
%macro addr_I_16brni 0
|
||||
mov ax,[esi]
|
||||
%endmacro
|
||||
|
||||
; 2. Absolute -- a (TESTED)
|
||||
|
||||
%macro addr_a_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 3. Absolute Long -- al
|
||||
|
||||
%macro addr_al_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 4. Direct -- d (TESTED)
|
||||
|
||||
%macro addr_d_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
%endmacro
|
||||
|
||||
; 5. Accumulator -- A
|
||||
|
||||
%macro addr_A_8brni 0
|
||||
mov al,[xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16brni 0
|
||||
mov ax,[xa]
|
||||
%endmacro
|
||||
|
||||
; 7. Direct Indirect Indexed -- (d),y
|
||||
|
||||
%macro addr_BdBCy_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 8. Direct Indirect Indexed Long -- [d],y
|
||||
|
||||
%macro addr_LdLCy_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 9. Direct Indexed Indirect -- (d,x)
|
||||
|
||||
%macro addr_BdCxB_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 10. Direct Indexed With X -- d,x
|
||||
|
||||
%macro addr_dCx_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 11. Direct Indexed With Y -- d,y
|
||||
|
||||
%macro addr_dCy_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xy]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xy]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 12. Absolute Indexed With X -- a,x
|
||||
|
||||
%macro addr_aCx_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 13. Absolute Indexed With Y -- a,y
|
||||
|
||||
%macro addr_aCy_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 14. Absolute Long Indexed With X -- al,x
|
||||
|
||||
%macro addr_alCx_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 18. Direct Indirect -- (d)
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; | 00 | (direct address) |
|
||||
; + | DB |
|
||||
; -------------------------------
|
||||
; Address: | effective address |
|
||||
|
||||
%macro addr_BdB_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 19. Direct Indirect Long -- [d]
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; -------------------------------
|
||||
; Address: | (direct address) |
|
||||
|
||||
%macro addr_LdL_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 22. Stack Relative -- d,s
|
||||
|
||||
%macro addr_dCs_8brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 23. Stack Relative Indirect Indexed -- (d,s),y (TESTED)
|
||||
|
||||
%macro addr_BdCsBCy_8brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
|
||||
405
zsnes/src/cpu/addrni.inc
Normal file
405
zsnes/src/cpu/addrni.inc
Normal file
@@ -0,0 +1,405 @@
|
||||
;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.
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; Address Modes
|
||||
;*******************************************************
|
||||
|
||||
|
||||
; 1. Immediate Addressing -- # - DONE IN PROGRAM
|
||||
|
||||
%macro addr_I_8brni 0
|
||||
mov al,[esi]
|
||||
%endmacro
|
||||
|
||||
%macro addr_I_16brni 0
|
||||
mov ax,[esi]
|
||||
%endmacro
|
||||
|
||||
; 2. Absolute -- a (TESTED)
|
||||
|
||||
%macro addr_a_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 3. Absolute Long -- al
|
||||
|
||||
%macro addr_al_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 4. Direct -- d (TESTED)
|
||||
|
||||
%macro addr_d_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
%endmacro
|
||||
|
||||
; 5. Accumulator -- A
|
||||
|
||||
%macro addr_A_8brni 0
|
||||
mov al,[xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16brni 0
|
||||
mov ax,[xa]
|
||||
%endmacro
|
||||
|
||||
; 7. Direct Indirect Indexed -- (d),y
|
||||
|
||||
%macro addr_BdBCy_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 8. Direct Indirect Indexed Long -- [d],y
|
||||
|
||||
%macro addr_LdLCy_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 9. Direct Indexed Indirect -- (d,x)
|
||||
|
||||
%macro addr_BdCxB_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 10. Direct Indexed With X -- d,x
|
||||
|
||||
%macro addr_dCx_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xx]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 11. Direct Indexed With Y -- d,y
|
||||
|
||||
%macro addr_dCy_8brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xy]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16brni 0
|
||||
mov ecx,[xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[xy]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 12. Absolute Indexed With X -- a,x
|
||||
|
||||
%macro addr_aCx_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 13. Absolute Indexed With Y -- a,y
|
||||
|
||||
%macro addr_aCy_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 14. Absolute Long Indexed With X -- al,x
|
||||
|
||||
%macro addr_alCx_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add cx,[xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 18. Direct Indirect -- (d)
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; | 00 | (direct address) |
|
||||
; + | DB |
|
||||
; -------------------------------
|
||||
; Address: | effective address |
|
||||
|
||||
%macro addr_BdB_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
call dword near [DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 19. Direct Indirect Long -- [d]
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; -------------------------------
|
||||
; Address: | (direct address) |
|
||||
|
||||
%macro addr_LdL_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[xd]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 22. Stack Relative -- d,s
|
||||
|
||||
%macro addr_dCs_8brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 23. Stack Relative Indirect Indexed -- (d,s),y (TESTED)
|
||||
|
||||
%macro addr_BdCsBCy_8brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[xdb]
|
||||
add cx,[xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
|
||||
1355
zsnes/src/cpu/dma.asm
Normal file
1355
zsnes/src/cpu/dma.asm
Normal file
File diff suppressed because it is too large
Load Diff
3054
zsnes/src/cpu/dsp.asm
Normal file
3054
zsnes/src/cpu/dsp.asm
Normal file
File diff suppressed because it is too large
Load Diff
5698
zsnes/src/cpu/dspproc.asm
Normal file
5698
zsnes/src/cpu/dspproc.asm
Normal file
File diff suppressed because it is too large
Load Diff
1995
zsnes/src/cpu/e65816.inc
Normal file
1995
zsnes/src/cpu/e65816.inc
Normal file
File diff suppressed because it is too large
Load Diff
1987
zsnes/src/cpu/e65816b.inc
Normal file
1987
zsnes/src/cpu/e65816b.inc
Normal file
File diff suppressed because it is too large
Load Diff
1987
zsnes/src/cpu/e65816c.inc
Normal file
1987
zsnes/src/cpu/e65816c.inc
Normal file
File diff suppressed because it is too large
Load Diff
4374
zsnes/src/cpu/execute.asm
Normal file
4374
zsnes/src/cpu/execute.asm
Normal file
File diff suppressed because it is too large
Load Diff
524
zsnes/src/cpu/irq.asm
Normal file
524
zsnes/src/cpu/irq.asm
Normal file
@@ -0,0 +1,524 @@
|
||||
;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.
|
||||
|
||||
%include "macros.mac"
|
||||
|
||||
EXTSYM flagnz,flago,flagc
|
||||
EXTSYM SfxSCMR,curnmi,execloop,initaddrl,nmiv,snesmap2
|
||||
EXTSYM snesmmap,stackand,stackor,wramdata
|
||||
EXTSYM xe,xirqb,xpb,xpc,xs
|
||||
EXTSYM irqon,irqv
|
||||
EXTSYM irqv8
|
||||
EXTSYM execloopdeb
|
||||
EXTSYM nmiv8
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; NMI Hardware 00FFFA,B 00FFEA,B 3 -> 000108
|
||||
; RES Hardware 00FFFC.D 00FFFC,D 1
|
||||
; BRK Software 00FFFE,F 00FFE6,7 N/A
|
||||
; IRQ Hardware 00FFFE,F 00FFEE,F 4 -> 00010C
|
||||
|
||||
|
||||
%macro makedl 0
|
||||
and dl,00111100b
|
||||
test dword[flagnz],18000h
|
||||
jz %%noneg
|
||||
or dl,80h
|
||||
%%noneg
|
||||
test dword[flagnz],0FFFFh
|
||||
jnz %%nozero
|
||||
or dl,02h
|
||||
%%nozero
|
||||
test dword[flagc],0FFh
|
||||
jz %%nocarry
|
||||
or dl,01h
|
||||
%%nocarry
|
||||
test dword[flago],0FFh
|
||||
jz %%nov
|
||||
or dl,40h
|
||||
%%nov
|
||||
%endmacro
|
||||
|
||||
;*******************************************************
|
||||
; SwitchToNMI/VIRQ Calls NMI/VIRQ
|
||||
;*******************************************************
|
||||
NEWSYM switchtonmi
|
||||
mov byte[curnmi],1
|
||||
test byte[xe],1
|
||||
jne near NMIemulmode
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
xor ebx,ebx
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpb]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,byte[xirqb]
|
||||
mov [xpb],bl
|
||||
xor eax,eax
|
||||
mov ax,[nmiv]
|
||||
test byte[SfxSCMR],10h
|
||||
jz .nosfxnmi
|
||||
; mov ax,0108h
|
||||
.nosfxnmi
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
|
||||
NEWSYM NMIemulmode
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,[xpb]
|
||||
xor eax,eax
|
||||
mov ax,[nmiv8]
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
|
||||
NEWSYM switchtovirq
|
||||
mov byte[irqon],80h
|
||||
test byte[xe],1
|
||||
jne near IRQemulmode
|
||||
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
xor ebx,ebx
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpb]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,byte[xirqb]
|
||||
mov [xpb],bl
|
||||
xor eax,eax
|
||||
mov ax,[irqv]
|
||||
; test byte[SfxSCMR],10h
|
||||
; jz .nosfxnmi
|
||||
; mov ax,010Ch
|
||||
;.nosfxnmi
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
|
||||
NEWSYM switchtovirqret
|
||||
mov byte[irqon],80h
|
||||
test byte[xe],1
|
||||
jne near IRQemulmode
|
||||
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
xor ebx,ebx
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpb]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,byte[xirqb]
|
||||
mov [xpb],bl
|
||||
xor eax,eax
|
||||
mov ax,[irqv]
|
||||
; test byte[SfxSCMR],10h
|
||||
; jz .nosfxnmi
|
||||
; mov ax,010Ch
|
||||
;.nosfxnmi
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
ret
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
ret
|
||||
|
||||
NEWSYM IRQemulmode
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,[xpb]
|
||||
xor eax,eax
|
||||
mov ax,[irqv8]
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloop
|
||||
|
||||
|
||||
NEWSYM switchtovirqdeb
|
||||
mov byte[irqon],80h
|
||||
test byte[xe],1
|
||||
jne near IRQemulmodedeb
|
||||
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
xor ebx,ebx
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpb]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,byte[xirqb]
|
||||
mov [xpb],bl
|
||||
xor eax,eax
|
||||
mov ax,[irqv]
|
||||
; test byte[SfxSCMR],10h
|
||||
; jz .nosfxnmi
|
||||
; mov ax,010Ch
|
||||
;.nosfxnmi
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
|
||||
NEWSYM IRQemulmodedeb
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,[xpb]
|
||||
xor eax,eax
|
||||
mov ax,[irqv8]
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
|
||||
NEWSYM switchtonmideb
|
||||
mov byte[curnmi],1
|
||||
test byte[xe],1
|
||||
jne near NMIemulmodedeb
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
xor ebx,ebx
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpb]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,byte[xirqb]
|
||||
mov [xpb],bl
|
||||
xor eax,eax
|
||||
mov ax,[nmiv]
|
||||
test byte[SfxSCMR],10h
|
||||
jz .nosfxnmi
|
||||
; mov ax,0108h
|
||||
.nosfxnmi
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
|
||||
NEWSYM NMIemulmodedeb
|
||||
mov ebx,esi
|
||||
sub ebx,[initaddrl]
|
||||
mov [xpc],bx
|
||||
|
||||
mov eax,[wramdata]
|
||||
mov bx,[xs]
|
||||
mov cl,[xpc+1]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov cl,[xpc]
|
||||
mov [eax+ebx],cl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
makedl
|
||||
mov [eax+ebx],dl
|
||||
dec bx
|
||||
and bx,word[stackand]
|
||||
or bx,word[stackor]
|
||||
mov [xs],bx
|
||||
xor bh,bh
|
||||
|
||||
mov bl,[xpb]
|
||||
xor eax,eax
|
||||
mov ax,[nmiv8]
|
||||
mov [xpc],ax
|
||||
and dl,11110011b
|
||||
or dl,00000100b
|
||||
test ax,8000h
|
||||
jz .loweraddr
|
||||
mov esi,[snesmmap+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
.loweraddr
|
||||
mov esi,[snesmap2+ebx*4]
|
||||
mov [initaddrl],esi
|
||||
add esi,eax
|
||||
jmp execloopdeb
|
||||
|
||||
|
||||
4406
zsnes/src/cpu/memory.asm
Normal file
4406
zsnes/src/cpu/memory.asm
Normal file
File diff suppressed because it is too large
Load Diff
1099
zsnes/src/cpu/regs.inc
Normal file
1099
zsnes/src/cpu/regs.inc
Normal file
File diff suppressed because it is too large
Load Diff
101
zsnes/src/cpu/regs.mac
Normal file
101
zsnes/src/cpu/regs.mac
Normal file
@@ -0,0 +1,101 @@
|
||||
;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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; InitReg Initializes Registers
|
||||
;*******************************************************
|
||||
|
||||
%macro setreg 2
|
||||
mov edi,%1
|
||||
add edi,[regptr]
|
||||
mov eax,%2
|
||||
mov [edi],eax
|
||||
%endmacro
|
||||
|
||||
;*******************************************************
|
||||
; Registers Note : Remember to restore AH, ECX, & DX
|
||||
;*******************************************************
|
||||
|
||||
%macro checkmultchange 0
|
||||
; execute multiplication
|
||||
cmp byte[multchange],0
|
||||
je .nomult
|
||||
push edx
|
||||
push eax
|
||||
xor bh,bh
|
||||
mov bl,[mode7B+1]
|
||||
mov ax,[mode7A]
|
||||
test bl,80h
|
||||
jz .noneg
|
||||
mov bh,0FFh
|
||||
.noneg
|
||||
imul bx
|
||||
mov [compmult],ax
|
||||
mov [compmult+2],dl
|
||||
pop eax
|
||||
pop edx
|
||||
mov byte[multchange],0
|
||||
.nomult
|
||||
%endmacro
|
||||
|
||||
%macro mouse4016doxA 2
|
||||
cmp byte[JoyAPos],%1
|
||||
jne .nx7
|
||||
mov bx,[mousexpos]
|
||||
shr bx,%2
|
||||
and bx,1
|
||||
mov al,bl
|
||||
.nx7
|
||||
%endmacro
|
||||
|
||||
%macro mouse4016doyA 2
|
||||
cmp byte[JoyAPos],%1
|
||||
jne .ny7
|
||||
mov bx,[mouseypos]
|
||||
shr bx,%2
|
||||
and bx,1
|
||||
mov al,bl
|
||||
.ny7
|
||||
%endmacro
|
||||
|
||||
%macro mouse4017dox 2
|
||||
cmp byte[JoyBPos],%1
|
||||
jne .nx7
|
||||
mov bx,[mousexpos]
|
||||
shr bx,%2
|
||||
and bx,1
|
||||
mov al,bl
|
||||
.nx7
|
||||
%endmacro
|
||||
|
||||
%macro mouse4017doy 2
|
||||
cmp byte[JoyBPos],%1
|
||||
jne .ny7
|
||||
mov bx,[mouseypos]
|
||||
shr bx,%2
|
||||
and bx,1
|
||||
mov al,bl
|
||||
.ny7
|
||||
%endmacro
|
||||
|
||||
1772
zsnes/src/cpu/regsw.inc
Normal file
1772
zsnes/src/cpu/regsw.inc
Normal file
File diff suppressed because it is too large
Load Diff
52
zsnes/src/cpu/regsw.mac
Normal file
52
zsnes/src/cpu/regsw.mac
Normal file
@@ -0,0 +1,52 @@
|
||||
;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 tableadc
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; InitRegW Initializes Write Registers
|
||||
;*******************************************************
|
||||
|
||||
%macro reenablespc 0
|
||||
cmp dword[cycpbl],1000000h
|
||||
jb %%enspc
|
||||
mov dword[cycpbl],0
|
||||
test byte[curexecstate],02h
|
||||
jnz %%enspc
|
||||
or byte[curexecstate],02h
|
||||
push ebx
|
||||
xor ebx,ebx
|
||||
mov bl,dl
|
||||
mov edi,[tableadc+ebx*4]
|
||||
pop ebx
|
||||
%%enspc
|
||||
%endmacro
|
||||
|
||||
%macro setregw 2
|
||||
mov edi,%1
|
||||
add edi,[regptw]
|
||||
mov eax,%2
|
||||
mov [edi],eax
|
||||
%endmacro
|
||||
|
||||
1574
zsnes/src/cpu/s65816d.inc
Normal file
1574
zsnes/src/cpu/s65816d.inc
Normal file
File diff suppressed because it is too large
Load Diff
812
zsnes/src/cpu/saddress.inc
Normal file
812
zsnes/src/cpu/saddress.inc
Normal file
@@ -0,0 +1,812 @@
|
||||
;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 SA1DPageR8,SA1DPageR16,SA1DPageW8,SA1DPageW16
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; Address Modes
|
||||
;*******************************************************
|
||||
|
||||
; 1. Immediate Addressing -- # - DONE IN PROGRAM
|
||||
|
||||
%macro addr_I_8br 0
|
||||
mov al,[esi]
|
||||
inc esi
|
||||
%endmacro
|
||||
|
||||
%macro addr_I_16br 0
|
||||
mov eax,[esi]
|
||||
add esi,2
|
||||
%endmacro
|
||||
|
||||
; 2. Absolute -- a (TESTED)
|
||||
|
||||
%macro addr_a_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 3. Absolute Long -- al
|
||||
|
||||
%macro addr_al_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 4. Direct -- d (TESTED)
|
||||
|
||||
%macro addr_d_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_8bw 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageW8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16bw 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageW16]
|
||||
%endmacro
|
||||
|
||||
; 5. Accumulator -- A
|
||||
|
||||
%macro addr_A_8br 0
|
||||
mov al,[SA1xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16br 0
|
||||
mov eax,[SA1xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_8bw 0
|
||||
mov [SA1xa],al
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16bw 0
|
||||
mov [SA1xa],ax
|
||||
%endmacro
|
||||
|
||||
; 7. Direct Indirect Indexed -- (d),y
|
||||
|
||||
%macro addr_BdBCy_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 8. Direct Indirect Indexed Long -- [d],y
|
||||
|
||||
%macro addr_LdLCy_8br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_8bw 0
|
||||
push ax
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[SA1xy]
|
||||
pop ax
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16bw 0
|
||||
push ax
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
xor bl,bl
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[SA1xy]
|
||||
pop ax
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 9. Direct Indexed Indirect -- (d,x)
|
||||
|
||||
%macro addr_BdCxB_8br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_8bw 0
|
||||
push ax
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16bw 0
|
||||
push ax
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 10. Direct Indexed With X -- d,x
|
||||
|
||||
%macro addr_dCx_8br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_8bw 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0w8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16bw 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xx]
|
||||
call membank0w16
|
||||
%endmacro
|
||||
|
||||
; 11. Direct Indexed With Y -- d,y
|
||||
|
||||
%macro addr_dCy_8br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xy]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16br 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xy]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_8bw 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xy]
|
||||
call membank0w8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16bw 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
inc esi
|
||||
add cx,[SA1xy]
|
||||
call membank0w16
|
||||
%endmacro
|
||||
|
||||
; 12. Absolute Indexed With X -- a,x
|
||||
|
||||
%macro addr_aCx_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 13. Absolute Indexed With Y -- a,y
|
||||
|
||||
%macro addr_aCy_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add esi,2
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 14. Absolute Long Indexed With X -- al,x
|
||||
|
||||
%macro addr_alCx_8br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16br 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_8bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16bw 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add esi,3
|
||||
add cx,[SA1xx]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 18. Direct Indirect -- (d)
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; | 00 | (direct address) |
|
||||
; + | DB |
|
||||
; -------------------------------
|
||||
; Address: | effective address |
|
||||
|
||||
%macro addr_BdB_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 19. Direct Indirect Long -- [d]
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; -------------------------------
|
||||
; Address: | (direct address) |
|
||||
|
||||
%macro addr_LdL_8br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16br 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
pop ax
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
inc esi
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
pop ax
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 22. Stack Relative -- d,s
|
||||
|
||||
%macro addr_dCs_8br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_8bw 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0w8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16bw 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0w16
|
||||
%endmacro
|
||||
|
||||
; 23. Stack Relative Indirect Indexed -- (d,s),y (TESTED)
|
||||
|
||||
%macro addr_BdCsBCy_8br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16br 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_8bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
pop ax
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16bw 0
|
||||
push ax
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
inc esi
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
pop ax
|
||||
add cx,[SA1xy]
|
||||
jnc .np
|
||||
inc bl
|
||||
.np
|
||||
call dword near [memtablew16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
404
zsnes/src/cpu/saddrni.inc
Normal file
404
zsnes/src/cpu/saddrni.inc
Normal file
@@ -0,0 +1,404 @@
|
||||
;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.
|
||||
|
||||
|
||||
|
||||
;*******************************************************
|
||||
; Address Modes
|
||||
;*******************************************************
|
||||
|
||||
; 1. Immediate Addressing -- # - DONE IN PROGRAM
|
||||
|
||||
%macro addr_I_8brni 0
|
||||
mov al,[esi]
|
||||
%endmacro
|
||||
|
||||
%macro addr_I_16brni 0
|
||||
mov ax,[esi]
|
||||
%endmacro
|
||||
|
||||
; 2. Absolute -- a (TESTED)
|
||||
|
||||
%macro addr_a_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_a_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 3. Absolute Long -- al
|
||||
|
||||
%macro addr_al_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_al_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 4. Direct -- d (TESTED)
|
||||
|
||||
%macro addr_d_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
call dword near [SA1DPageR8]
|
||||
%endmacro
|
||||
|
||||
%macro addr_d_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
call dword near [SA1DPageR16]
|
||||
%endmacro
|
||||
|
||||
; 5. Accumulator -- A
|
||||
|
||||
%macro addr_A_8brni 0
|
||||
mov al,[SA1xa]
|
||||
%endmacro
|
||||
|
||||
%macro addr_A_16brni 0
|
||||
mov ax,[SA1xa]
|
||||
%endmacro
|
||||
|
||||
; 7. Direct Indirect Indexed -- (d),y
|
||||
|
||||
%macro addr_BdBCy_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdBCy_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 8. Direct Indirect Indexed Long -- [d],y
|
||||
|
||||
%macro addr_LdLCy_8brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdLCy_16brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 9. Direct Indexed Indirect -- (d,x)
|
||||
|
||||
%macro addr_BdCxB_8brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCxB_16brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 10. Direct Indexed With X -- d,x
|
||||
|
||||
%macro addr_dCx_8brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[SA1xx]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCx_16brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[SA1xx]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 11. Direct Indexed With Y -- d,y
|
||||
|
||||
%macro addr_dCy_8brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[SA1xy]
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCy_16brni 0
|
||||
mov ecx,[SA1xd]
|
||||
mov bl,[esi]
|
||||
add cx,bx
|
||||
add cx,[SA1xy]
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 12. Absolute Indexed With X -- a,x
|
||||
|
||||
%macro addr_aCx_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCx_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 13. Absolute Indexed With Y -- a,y
|
||||
|
||||
%macro addr_aCy_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_aCy_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 14. Absolute Long Indexed With X -- al,x
|
||||
|
||||
%macro addr_alCx_8brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add cx,[SA1xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_alCx_16brni 0
|
||||
mov cx,[esi]
|
||||
mov bl,[esi+2]
|
||||
add cx,[SA1xx]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 18. Direct Indirect -- (d)
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; | 00 | (direct address) |
|
||||
; + | DB |
|
||||
; -------------------------------
|
||||
; Address: | effective address |
|
||||
|
||||
%macro addr_BdB_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdB_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
call dword near [SA1DPageR16]
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 19. Direct Indirect Long -- [d]
|
||||
; ___________________
|
||||
; Instruction: | opcode | offset |
|
||||
; ~~~~~~~~~~~~~~~~~~~
|
||||
; | Direct Register |
|
||||
; + | offset |
|
||||
; ---------------------
|
||||
; | 00 | direct address |
|
||||
; then:
|
||||
; -------------------------------
|
||||
; Address: | (direct address) |
|
||||
|
||||
%macro addr_LdL_8brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_LdL_16brni 0
|
||||
mov bl,[esi]
|
||||
mov ecx,[SA1xd]
|
||||
add cx,bx
|
||||
push cx
|
||||
call membank0r16
|
||||
pop cx
|
||||
add cx,2
|
||||
push ax
|
||||
call membank0r8
|
||||
mov bl,al
|
||||
pop ax
|
||||
mov cx,ax
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
; 22. Stack Relative -- d,s
|
||||
|
||||
%macro addr_dCs_8brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
add cx,bx
|
||||
call membank0r8
|
||||
%endmacro
|
||||
|
||||
%macro addr_dCs_16brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
%endmacro
|
||||
|
||||
; 23. Stack Relative Indirect Indexed -- (d,s),y (TESTED)
|
||||
|
||||
%macro addr_BdCsBCy_8brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler8+ebx*4]
|
||||
%endmacro
|
||||
|
||||
%macro addr_BdCsBCy_16brni 0
|
||||
mov bl,[esi]
|
||||
mov cx,[SA1xs]
|
||||
add cx,bx
|
||||
call membank0r16
|
||||
mov cx,ax
|
||||
mov bl,[SA1xdb]
|
||||
add cx,[SA1xy]
|
||||
jnc .npb
|
||||
inc bl
|
||||
.npb
|
||||
call dword near [memtabler16+ebx*4]
|
||||
%endmacro
|
||||
|
||||
|
||||
1990
zsnes/src/cpu/se65816.inc
Normal file
1990
zsnes/src/cpu/se65816.inc
Normal file
File diff suppressed because it is too large
Load Diff
2695
zsnes/src/cpu/spc700.asm
Normal file
2695
zsnes/src/cpu/spc700.asm
Normal file
File diff suppressed because it is too large
Load Diff
97
zsnes/src/cpu/spcaddr.inc
Normal file
97
zsnes/src/cpu/spcaddr.inc
Normal file
@@ -0,0 +1,97 @@
|
||||
;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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; A,DP addressing mode
|
||||
%macro SPCaddr_DP 0
|
||||
mov bl,[ebp]
|
||||
add ebx,[spcRamDP]
|
||||
inc ebp
|
||||
ReadByte
|
||||
%endmacro
|
||||
|
||||
%macro SPCaddr_DP_X 0
|
||||
mov bl,[ebp]
|
||||
add bl,[spcX]
|
||||
add ebx,[spcRamDP]
|
||||
inc ebp
|
||||
ReadByte
|
||||
%endmacro
|
||||
|
||||
%macro SPCaddr_LABS 0
|
||||
mov bx,[ebp]
|
||||
add ebx,spcRam
|
||||
ReadByte
|
||||
add ebp,2
|
||||
%endmacro
|
||||
|
||||
%macro SPCaddr_LABS_X 0
|
||||
mov bl,[spcX]
|
||||
add bx,[ebp]
|
||||
add ebp,2
|
||||
add ebx,spcRam
|
||||
ReadByte
|
||||
%endmacro
|
||||
|
||||
; A,(X)
|
||||
%macro SPCaddr__X_ 0
|
||||
mov bl,[spcX]
|
||||
add ebx,[spcRamDP]
|
||||
ReadByte
|
||||
%endmacro
|
||||
|
||||
; A,labs+Y
|
||||
%macro SPCaddr_LABS_Y 0
|
||||
mov bl,[spcY]
|
||||
add bx,[ebp]
|
||||
add ebp,2
|
||||
add ebx,spcRam
|
||||
ReadByte
|
||||
%endmacro
|
||||
|
||||
; A,(DP,X)
|
||||
%macro SPCaddr_bDP_Xb 0
|
||||
mov bl,[ebp]
|
||||
add bl,[spcX]
|
||||
xor eax,eax
|
||||
add ebx,[spcRamDP]
|
||||
inc ebp
|
||||
mov ax, word [ebx]
|
||||
mov ebx,eax
|
||||
add ebx,spcRam
|
||||
ReadByte
|
||||
%endmacro
|
||||
|
||||
%macro SPCaddr_bDPb_Y 0
|
||||
mov bl,[ebp]
|
||||
xor eax,eax
|
||||
add ebx,[spcRamDP]
|
||||
inc ebp
|
||||
mov ax,[ebx]
|
||||
add ax,[spcY]
|
||||
mov ebx,eax
|
||||
add ebx,spcRam
|
||||
ReadByte
|
||||
%endmacro
|
||||
|
||||
168
zsnes/src/cpu/spcdef.inc
Normal file
168
zsnes/src/cpu/spcdef.inc
Normal file
@@ -0,0 +1,168 @@
|
||||
;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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; move al at address ebx
|
||||
|
||||
; branch instructions
|
||||
%macro spcbrancher 0
|
||||
inc ebp
|
||||
ret
|
||||
.branch
|
||||
movsx ebx,byte [ebp]
|
||||
inc ebp
|
||||
add ebp,ebx
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; tcall instruction
|
||||
%macro spctcall 1
|
||||
mov ebx,ebp
|
||||
sub ebx,spcRam
|
||||
mov eax,[spcS]
|
||||
mov [spcRam+eax],bh
|
||||
dec byte [spcS]
|
||||
mov eax,[spcS]
|
||||
mov [spcRam+eax],bl
|
||||
dec byte [spcS]
|
||||
mov bx,[spcextraram+%1]
|
||||
test byte[spcRam+0F1h],80h
|
||||
jnz %%finished
|
||||
mov bx,[spcRam+0FFC0h+%1]
|
||||
%%finished
|
||||
add ebx,spcRam
|
||||
mov ebp,ebx
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; SET1 instruction
|
||||
%macro set1 1
|
||||
mov bl,[ebp]
|
||||
add ebx,[spcRamDP]
|
||||
inc ebp
|
||||
push ebx
|
||||
ReadByte
|
||||
pop ebx
|
||||
or al,%1
|
||||
WriteByte
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; CLR1 instruction
|
||||
%macro clr1 1
|
||||
mov bl,[ebp]
|
||||
add ebx,[spcRamDP]
|
||||
inc ebp
|
||||
push ebx
|
||||
ReadByte
|
||||
pop ebx
|
||||
and al,%1
|
||||
WriteByte
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; BBS instruction
|
||||
%macro bbs 1
|
||||
mov bl,[ebp]
|
||||
add ebx,[spcRamDP]
|
||||
ReadByte
|
||||
test al,%1
|
||||
jnz .dp0jump
|
||||
add ebp,2
|
||||
ret
|
||||
.dp0jump
|
||||
movsx ebx,byte [ebp+1]
|
||||
add ebp,ebx
|
||||
add ebp,2
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; BBC instruction
|
||||
%macro bbc 1
|
||||
mov bl,[ebp]
|
||||
add ebx,[spcRamDP]
|
||||
ReadByte
|
||||
test al,%1
|
||||
jz .dp0jump
|
||||
add ebp,2
|
||||
ret
|
||||
.dp0jump
|
||||
movsx ebx,byte [ebp+1]
|
||||
add ebp,ebx
|
||||
add ebp,2
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; OR A, instruction
|
||||
%macro SPC_OR_A 0
|
||||
or byte [spcA], al
|
||||
mov al,[spcA]
|
||||
mov [spcNZ],al
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; AND A, instruction
|
||||
%macro SPC_AND_A 0
|
||||
and byte [spcA], al
|
||||
mov al,[spcA]
|
||||
mov [spcNZ],al
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; EOR A, instruction
|
||||
%macro SPC_EOR_A 0
|
||||
xor byte [spcA], al
|
||||
mov al,[spcA]
|
||||
mov [spcNZ],al
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
; CMP A, instruction
|
||||
%macro SPC_CMP_A 0
|
||||
cmp byte [spcA], al
|
||||
cmc
|
||||
SPCSetFlagnzc
|
||||
%endmacro
|
||||
|
||||
%macro SPC_ADC_A 0
|
||||
mov cl,[spcP]
|
||||
shr cl,1
|
||||
adc byte [spcA], al
|
||||
SPCSetFlagnvhzc
|
||||
%endmacro
|
||||
|
||||
%macro SPC_SBC_A 0
|
||||
mov cl,[spcP]
|
||||
xor cl,1
|
||||
shr cl,1
|
||||
sbb byte [spcA], al
|
||||
cmc
|
||||
SPCSetFlagnvhzc
|
||||
%endmacro
|
||||
|
||||
%macro SPC_MOV_A 0
|
||||
mov byte [spcA], al
|
||||
mov [spcNZ],al
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
699
zsnes/src/cpu/stable.asm
Normal file
699
zsnes/src/cpu/stable.asm
Normal file
@@ -0,0 +1,699 @@
|
||||
;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.
|
||||
|
||||
%include "macros.mac"
|
||||
|
||||
EXTSYM SA1tableA,SA1tableB,SA1tableC,SA1tableD,SA1tableE
|
||||
EXTSYM SA1tableF,SA1tableG,SA1tableH,SA1tablead
|
||||
EXTSYM cpucycle, SA1UpdateDPage, intrset
|
||||
|
||||
%include "cpu/s65816d.inc"
|
||||
%include "cpu/saddress.inc"
|
||||
%include "cpu/saddrni.inc"
|
||||
%include "cpu/se65816.inc"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; global variables
|
||||
;tableA times 256 dd 0 ; Table addresses (M:0,X:0,D:0)
|
||||
;tableB times 256 dd 0 ; Table addresses (M:1,X:0,D:0)
|
||||
;tableC times 256 dd 0 ; Table addresses (M:0,X:1,D:0)
|
||||
;tableD times 256 dd 0 ; Table addresses (M:1,X:1,D:0)
|
||||
;tableE times 256 dd 0 ; Table addresses (M:0,X:0,D:1)
|
||||
;tableF times 256 dd 0 ; Table addresses (M:1,X:0,D:1)
|
||||
;tableG times 256 dd 0 ; Table addresses (M:0,X:1,D:1)
|
||||
;tableH times 256 dd 0 ; Table addresses (M:1,X:1,D:1)
|
||||
;tablead times 256 dd 0 ; Table address location according to P
|
||||
;memtabler8 times 256 dd 0 ; Memory Bank Locations for reading 8-bit
|
||||
;memtablew8 times 256 dd 0 ; Memory Bank Locations for writing 8-bit
|
||||
;memtabler16 times 256 dd 0 ; Memory Bank Locations for reading 16-bit
|
||||
;memtablew16 times 256 dd 0 ; Memory Bank Locations for reading 16-bit
|
||||
|
||||
;*******************************************************
|
||||
; Generate OpCode Table
|
||||
;*******************************************************
|
||||
|
||||
NEWSYM SA1inittable
|
||||
; set tablead (NVMXDIZC) ( MXD )
|
||||
push es
|
||||
xor ecx,ecx
|
||||
xor al,al
|
||||
mov cx,256
|
||||
mov edi,SA1tablead
|
||||
.loopa
|
||||
test al,08h ; D flag
|
||||
jnz .decon
|
||||
test al,10h ; X flag
|
||||
jnz .xon
|
||||
test al,20h ; M flag
|
||||
jnz .mon
|
||||
mov esi,SA1tableA
|
||||
jmp .done
|
||||
.mon
|
||||
mov esi,SA1tableB
|
||||
jmp .done
|
||||
|
||||
.xon
|
||||
test al,20h ; M flag
|
||||
jnz .mon2
|
||||
mov esi,SA1tableC
|
||||
jmp .done
|
||||
.mon2
|
||||
mov esi,SA1tableD
|
||||
jmp .done
|
||||
|
||||
.decon
|
||||
test al,10h ; X flag
|
||||
jnz .xon3
|
||||
test al,20h ; M flag
|
||||
jnz .mon3
|
||||
mov esi,SA1tableE
|
||||
jmp .done
|
||||
.mon3
|
||||
mov esi,SA1tableF
|
||||
jmp .done
|
||||
|
||||
.xon3
|
||||
test al,20h
|
||||
jnz .mon4
|
||||
mov esi,SA1tableG
|
||||
jmp .done
|
||||
.mon4
|
||||
mov esi,SA1tableH
|
||||
.done
|
||||
inc al
|
||||
push eax
|
||||
mov eax,esi
|
||||
stosd
|
||||
pop eax
|
||||
loop .loopa
|
||||
|
||||
; Set CPU addresses
|
||||
mov edi,SA1tableA
|
||||
call SA1settables
|
||||
mov edi,SA1tableB
|
||||
call SA1settables
|
||||
mov edi,SA1tableC
|
||||
call SA1settables
|
||||
mov edi,SA1tableD
|
||||
call SA1settables
|
||||
mov edi,SA1tableE
|
||||
call SA1settables
|
||||
mov edi,SA1tableF
|
||||
call SA1settables
|
||||
mov edi,SA1tableG
|
||||
call SA1settables
|
||||
mov edi,SA1tableH
|
||||
call SA1settables
|
||||
|
||||
; set proper functions
|
||||
mov edi,SA1tableA ; Table addresses (M:0,X:0,D:0)
|
||||
call SA1settablem16
|
||||
mov edi,SA1tableA
|
||||
call SA1settablex16
|
||||
|
||||
mov edi,SA1tableB ; Table addresses (M:1,X:0,D:0)
|
||||
call SA1settablex16
|
||||
|
||||
mov edi,SA1tableC ; Table addresses (M:0,X:1,D:0)
|
||||
call SA1settablem16
|
||||
|
||||
mov edi,SA1tableE ; Table addresses (M:0,X:0,D:1)
|
||||
call SA1settablem16
|
||||
mov edi,SA1tableE
|
||||
call SA1settableDm16
|
||||
mov edi,SA1tableE
|
||||
call SA1settablex16
|
||||
|
||||
mov edi,SA1tableF ; Table addresses (M:1,X:0,D:1)
|
||||
call SA1settablex16
|
||||
mov edi,SA1tableF
|
||||
call SA1settableDm8
|
||||
|
||||
mov edi,SA1tableG ; Table addresses (M:0,X:1,D:1)
|
||||
call SA1settablem16
|
||||
mov edi,SA1tableG
|
||||
call SA1settableDm16
|
||||
|
||||
mov edi,SA1tableH ; Table addresses (M:1,X:1,D:1)
|
||||
call SA1settableDm8
|
||||
pop es
|
||||
ret
|
||||
|
||||
;*******************************************************
|
||||
; Set Tables Sets the opcode tables according to EDI
|
||||
;*******************************************************
|
||||
; This function sets all the non-multiple entries
|
||||
|
||||
NEWSYM SA1settables
|
||||
;row 0
|
||||
mov dword[edi+00h*4],SA1COp00
|
||||
mov dword[edi+01h*4],SA1COp01m8
|
||||
mov dword[edi+02h*4],SA1COp02
|
||||
mov dword[edi+03h*4],SA1COp03m8
|
||||
mov dword[edi+04h*4],SA1COp04m8
|
||||
mov dword[edi+05h*4],SA1COp05m8
|
||||
mov dword[edi+06h*4],SA1COp06m8
|
||||
mov dword[edi+07h*4],SA1COp07m8
|
||||
mov dword[edi+08h*4],SA1COp08
|
||||
mov dword[edi+09h*4],SA1COp09m8
|
||||
mov dword[edi+0Ah*4],SA1COp0Am8
|
||||
mov dword[edi+0Bh*4],SA1COp0B
|
||||
mov dword[edi+0Ch*4],SA1COp0Cm8
|
||||
mov dword[edi+0Dh*4],SA1COp0Dm8
|
||||
mov dword[edi+0Eh*4],SA1COp0Em8
|
||||
mov dword[edi+0Fh*4],SA1COp0Fm8
|
||||
mov dword[edi+10h*4],SA1COp10
|
||||
mov dword[edi+11h*4],SA1COp11m8
|
||||
mov dword[edi+12h*4],SA1COp12m8
|
||||
mov dword[edi+13h*4],SA1COp13m8
|
||||
mov dword[edi+14h*4],SA1COp14m8
|
||||
mov dword[edi+15h*4],SA1COp15m8
|
||||
mov dword[edi+16h*4],SA1COp16m8
|
||||
mov dword[edi+17h*4],SA1COp17m8
|
||||
mov dword[edi+18h*4],SA1COp18
|
||||
mov dword[edi+19h*4],SA1COp19m8
|
||||
mov dword[edi+1Ah*4],SA1COp1Am8
|
||||
mov dword[edi+1Bh*4],SA1COp1B
|
||||
mov dword[edi+1Ch*4],SA1COp1Cm8
|
||||
mov dword[edi+1Dh*4],SA1COp1Dm8
|
||||
mov dword[edi+1Eh*4],SA1COp1Em8
|
||||
mov dword[edi+1Fh*4],SA1COp1Fm8
|
||||
mov dword[edi+20h*4],SA1COp20
|
||||
mov dword[edi+21h*4],SA1COp21m8
|
||||
mov dword[edi+22h*4],SA1COp22
|
||||
mov dword[edi+23h*4],SA1COp23m8
|
||||
mov dword[edi+24h*4],SA1COp24m8
|
||||
mov dword[edi+25h*4],SA1COp25m8
|
||||
mov dword[edi+26h*4],SA1COp26m8
|
||||
mov dword[edi+27h*4],SA1COp27m8
|
||||
mov dword[edi+28h*4],SA1COp28
|
||||
mov dword[edi+29h*4],SA1COp29m8
|
||||
mov dword[edi+2Ah*4],SA1COp2Am8
|
||||
mov dword[edi+2Bh*4],SA1COp2B
|
||||
mov dword[edi+2Ch*4],SA1COp2Cm8
|
||||
mov dword[edi+2Dh*4],SA1COp2Dm8
|
||||
mov dword[edi+2Eh*4],SA1COp2Em8
|
||||
mov dword[edi+2Fh*4],SA1COp2Fm8
|
||||
mov dword[edi+30h*4],SA1COp30
|
||||
mov dword[edi+31h*4],SA1COp31m8
|
||||
mov dword[edi+32h*4],SA1COp32m8
|
||||
mov dword[edi+33h*4],SA1COp33m8
|
||||
mov dword[edi+34h*4],SA1COp34m8
|
||||
mov dword[edi+35h*4],SA1COp35m8
|
||||
mov dword[edi+36h*4],SA1COp36m8
|
||||
mov dword[edi+37h*4],SA1COp37m8
|
||||
mov dword[edi+38h*4],SA1COp38
|
||||
mov dword[edi+39h*4],SA1COp39m8
|
||||
mov dword[edi+3Ah*4],SA1COp3Am8
|
||||
mov dword[edi+3Bh*4],SA1COp3B
|
||||
mov dword[edi+3Ch*4],SA1COp3Cm8
|
||||
mov dword[edi+3Dh*4],SA1COp3Dm8
|
||||
mov dword[edi+3Eh*4],SA1COp3Em8
|
||||
mov dword[edi+3Fh*4],SA1COp3Fm8
|
||||
mov dword[edi+40h*4],SA1COp40
|
||||
mov dword[edi+41h*4],SA1COp41m8
|
||||
mov dword[edi+42h*4],SA1COp42
|
||||
mov dword[edi+43h*4],SA1COp43m8
|
||||
mov dword[edi+44h*4],SA1COp44
|
||||
mov dword[edi+45h*4],SA1COp45m8
|
||||
mov dword[edi+46h*4],SA1COp46m8
|
||||
mov dword[edi+47h*4],SA1COp47m8
|
||||
mov dword[edi+48h*4],SA1COp48m8
|
||||
mov dword[edi+49h*4],SA1COp49m8
|
||||
mov dword[edi+4Ah*4],SA1COp4Am8
|
||||
mov dword[edi+4Bh*4],SA1COp4B
|
||||
mov dword[edi+4Ch*4],SA1COp4C
|
||||
mov dword[edi+4Dh*4],SA1COp4Dm8
|
||||
mov dword[edi+4Eh*4],SA1COp4Em8
|
||||
mov dword[edi+4Fh*4],SA1COp4Fm8
|
||||
mov dword[edi+50h*4],SA1COp50
|
||||
mov dword[edi+51h*4],SA1COp51m8
|
||||
mov dword[edi+52h*4],SA1COp52m8
|
||||
mov dword[edi+53h*4],SA1COp53m8
|
||||
mov dword[edi+54h*4],SA1COp54
|
||||
mov dword[edi+55h*4],SA1COp55m8
|
||||
mov dword[edi+56h*4],SA1COp56m8
|
||||
mov dword[edi+57h*4],SA1COp57m8
|
||||
mov dword[edi+58h*4],SA1COp58
|
||||
mov dword[edi+59h*4],SA1COp59m8
|
||||
mov dword[edi+5Ah*4],SA1COp5Ax8
|
||||
mov dword[edi+5Bh*4],SA1COp5B
|
||||
mov dword[edi+5Ch*4],SA1COp5C
|
||||
mov dword[edi+5Dh*4],SA1COp5Dm8
|
||||
mov dword[edi+5Eh*4],SA1COp5Em8
|
||||
mov dword[edi+5Fh*4],SA1COp5Fm8
|
||||
mov dword[edi+60h*4],SA1COp60
|
||||
mov dword[edi+61h*4],SA1COp61m8nd
|
||||
mov dword[edi+62h*4],SA1COp62
|
||||
mov dword[edi+63h*4],SA1COp63m8nd
|
||||
mov dword[edi+64h*4],SA1COp64m8
|
||||
mov dword[edi+65h*4],SA1COp65m8nd
|
||||
mov dword[edi+66h*4],SA1COp66m8
|
||||
mov dword[edi+67h*4],SA1COp67m8nd
|
||||
mov dword[edi+68h*4],SA1COp68m8
|
||||
mov dword[edi+69h*4],SA1COp69m8nd
|
||||
mov dword[edi+6Ah*4],SA1COp6Am8
|
||||
mov dword[edi+6Bh*4],SA1COp6B
|
||||
mov dword[edi+6Ch*4],SA1COp6C
|
||||
mov dword[edi+6Dh*4],SA1COp6Dm8nd
|
||||
mov dword[edi+6Eh*4],SA1COp6Em8
|
||||
mov dword[edi+6Fh*4],SA1COp6Fm8nd
|
||||
mov dword[edi+70h*4],SA1COp70
|
||||
mov dword[edi+71h*4],SA1COp71m8nd
|
||||
mov dword[edi+72h*4],SA1COp72m8nd
|
||||
mov dword[edi+73h*4],SA1COp73m8nd
|
||||
mov dword[edi+74h*4],SA1COp74m8
|
||||
mov dword[edi+75h*4],SA1COp75m8nd
|
||||
mov dword[edi+76h*4],SA1COp76m8
|
||||
mov dword[edi+77h*4],SA1COp77m8nd
|
||||
mov dword[edi+78h*4],SA1COp78
|
||||
mov dword[edi+79h*4],SA1COp79m8nd
|
||||
mov dword[edi+7Ah*4],SA1COp7Ax8
|
||||
mov dword[edi+7Bh*4],SA1COp7B
|
||||
mov dword[edi+7Ch*4],SA1COp7C
|
||||
mov dword[edi+7Dh*4],SA1COp7Dm8nd
|
||||
mov dword[edi+7Eh*4],SA1COp7Em8
|
||||
mov dword[edi+7Fh*4],SA1COp7Fm8nd
|
||||
mov dword[edi+80h*4],SA1COp80
|
||||
mov dword[edi+81h*4],SA1COp81m8
|
||||
mov dword[edi+82h*4],SA1COp82
|
||||
mov dword[edi+83h*4],SA1COp83m8
|
||||
mov dword[edi+84h*4],SA1COp84x8
|
||||
mov dword[edi+85h*4],SA1COp85m8
|
||||
mov dword[edi+86h*4],SA1COp86x8
|
||||
mov dword[edi+87h*4],SA1COp87m8
|
||||
mov dword[edi+88h*4],SA1COp88x8
|
||||
mov dword[edi+89h*4],SA1COp89m8
|
||||
mov dword[edi+8Ah*4],SA1COp8Am8
|
||||
mov dword[edi+8Bh*4],SA1COp8B
|
||||
mov dword[edi+8Ch*4],SA1COp8Cx8
|
||||
mov dword[edi+8Dh*4],SA1COp8Dm8
|
||||
mov dword[edi+8Eh*4],SA1COp8Ex8
|
||||
mov dword[edi+8Fh*4],SA1COp8Fm8
|
||||
mov dword[edi+90h*4],SA1COp90
|
||||
mov dword[edi+91h*4],SA1COp91m8
|
||||
mov dword[edi+92h*4],SA1COp92m8
|
||||
mov dword[edi+93h*4],SA1COp93m8
|
||||
mov dword[edi+94h*4],SA1COp94x8
|
||||
mov dword[edi+95h*4],SA1COp95m8
|
||||
mov dword[edi+96h*4],SA1COp96x8
|
||||
mov dword[edi+97h*4],SA1COp97m8
|
||||
mov dword[edi+98h*4],SA1COp98m8
|
||||
mov dword[edi+99h*4],SA1COp99m8
|
||||
mov dword[edi+9Ah*4],SA1COp9A
|
||||
mov dword[edi+9Bh*4],SA1COp9Bx8
|
||||
mov dword[edi+9Ch*4],SA1COp9Cm8
|
||||
mov dword[edi+9Dh*4],SA1COp9Dm8
|
||||
mov dword[edi+9Eh*4],SA1COp9Em8
|
||||
mov dword[edi+9Fh*4],SA1COp9Fm8
|
||||
mov dword[edi+0A0h*4],SA1COpA0x8
|
||||
mov dword[edi+0A1h*4],SA1COpA1m8
|
||||
mov dword[edi+0A2h*4],SA1COpA2x8
|
||||
mov dword[edi+0A3h*4],SA1COpA3m8
|
||||
mov dword[edi+0A4h*4],SA1COpA4x8
|
||||
mov dword[edi+0A5h*4],SA1COpA5m8
|
||||
mov dword[edi+0A6h*4],SA1COpA6x8
|
||||
mov dword[edi+0A7h*4],SA1COpA7m8
|
||||
mov dword[edi+0A8h*4],SA1COpA8x8
|
||||
mov dword[edi+0A9h*4],SA1COpA9m8
|
||||
mov dword[edi+0AAh*4],SA1COpAAx8
|
||||
mov dword[edi+0ABh*4],SA1COpAB
|
||||
mov dword[edi+0ACh*4],SA1COpACx8
|
||||
mov dword[edi+0ADh*4],SA1COpADm8
|
||||
mov dword[edi+0AEh*4],SA1COpAEx8
|
||||
mov dword[edi+0AFh*4],SA1COpAFm8
|
||||
mov dword[edi+0B0h*4],SA1COpB0
|
||||
mov dword[edi+0B1h*4],SA1COpB1m8
|
||||
mov dword[edi+0B2h*4],SA1COpB2m8
|
||||
mov dword[edi+0B3h*4],SA1COpB3m8
|
||||
mov dword[edi+0B4h*4],SA1COpB4x8
|
||||
mov dword[edi+0B5h*4],SA1COpB5m8
|
||||
mov dword[edi+0B6h*4],SA1COpB6x8
|
||||
mov dword[edi+0B7h*4],SA1COpB7m8
|
||||
mov dword[edi+0B8h*4],SA1COpB8
|
||||
mov dword[edi+0B9h*4],SA1COpB9m8
|
||||
mov dword[edi+0BAh*4],SA1COpBAx8
|
||||
mov dword[edi+0BBh*4],SA1COpBBx8
|
||||
mov dword[edi+0BCh*4],SA1COpBCx8
|
||||
mov dword[edi+0BDh*4],SA1COpBDm8
|
||||
mov dword[edi+0BEh*4],SA1COpBEx8
|
||||
mov dword[edi+0BFh*4],SA1COpBFm8
|
||||
mov dword[edi+0C0h*4],SA1COpC0x8
|
||||
mov dword[edi+0C1h*4],SA1COpC1m8
|
||||
mov dword[edi+0C2h*4],SA1COpC2
|
||||
mov dword[edi+0C3h*4],SA1COpC3m8
|
||||
mov dword[edi+0C4h*4],SA1COpC4x8
|
||||
mov dword[edi+0C5h*4],SA1COpC5m8
|
||||
mov dword[edi+0C6h*4],SA1COpC6m8
|
||||
mov dword[edi+0C7h*4],SA1COpC7m8
|
||||
mov dword[edi+0C8h*4],SA1COpC8x8
|
||||
mov dword[edi+0C9h*4],SA1COpC9m8
|
||||
mov dword[edi+0CAh*4],SA1COpCAx8
|
||||
mov dword[edi+0CBh*4],SA1COpCB
|
||||
mov dword[edi+0CCh*4],SA1COpCCx8
|
||||
mov dword[edi+0CDh*4],SA1COpCDm8
|
||||
mov dword[edi+0CEh*4],SA1COpCEm8
|
||||
mov dword[edi+0CFh*4],SA1COpCFm8
|
||||
mov dword[edi+0D0h*4],SA1COpD0
|
||||
mov dword[edi+0D1h*4],SA1COpD1m8
|
||||
mov dword[edi+0D2h*4],SA1COpD2m8
|
||||
mov dword[edi+0D3h*4],SA1COpD3m8
|
||||
mov dword[edi+0D4h*4],SA1COpD4
|
||||
mov dword[edi+0D5h*4],SA1COpD5m8
|
||||
mov dword[edi+0D6h*4],SA1COpD6m8
|
||||
mov dword[edi+0D7h*4],SA1COpD7m8
|
||||
mov dword[edi+0D8h*4],SA1COpD8
|
||||
mov dword[edi+0D9h*4],SA1COpD9m8
|
||||
mov dword[edi+0DAh*4],SA1COpDAx8
|
||||
mov dword[edi+0DBh*4],SA1COpDB
|
||||
mov dword[edi+0DCh*4],SA1COpDC
|
||||
mov dword[edi+0DDh*4],SA1COpDDm8
|
||||
mov dword[edi+0DEh*4],SA1COpDEm8
|
||||
mov dword[edi+0DFh*4],SA1COpDFm8
|
||||
mov dword[edi+0E0h*4],SA1COpE0x8
|
||||
mov dword[edi+0E1h*4],SA1COpE1m8nd
|
||||
mov dword[edi+0E2h*4],SA1COpE2
|
||||
mov dword[edi+0E3h*4],SA1COpE3m8nd
|
||||
mov dword[edi+0E4h*4],SA1COpE4x8
|
||||
mov dword[edi+0E5h*4],SA1COpE5m8nd
|
||||
mov dword[edi+0E6h*4],SA1COpE6m8
|
||||
mov dword[edi+0E7h*4],SA1COpE7m8nd
|
||||
mov dword[edi+0E8h*4],SA1COpE8x8
|
||||
mov dword[edi+0E9h*4],SA1COpE9m8nd
|
||||
mov dword[edi+0EAh*4],SA1COpEA
|
||||
mov dword[edi+0EBh*4],SA1COpEB
|
||||
mov dword[edi+0ECh*4],SA1COpECx8
|
||||
mov dword[edi+0EDh*4],SA1COpEDm8nd
|
||||
mov dword[edi+0EEh*4],SA1COpEEm8
|
||||
mov dword[edi+0EFh*4],SA1COpEFm8nd
|
||||
mov dword[edi+0F0h*4],SA1COpF0
|
||||
mov dword[edi+0F1h*4],SA1COpF1m8nd
|
||||
mov dword[edi+0F2h*4],SA1COpF2m8nd
|
||||
mov dword[edi+0F3h*4],SA1COpF3m8nd
|
||||
mov dword[edi+0F4h*4],SA1COpF4
|
||||
mov dword[edi+0F5h*4],SA1COpF5m8nd
|
||||
mov dword[edi+0F6h*4],SA1COpF6m8
|
||||
mov dword[edi+0F7h*4],SA1COpF7m8nd
|
||||
mov dword[edi+0F8h*4],SA1COpF8
|
||||
mov dword[edi+0F9h*4],SA1COpF9m8nd
|
||||
mov dword[edi+0FAh*4],SA1COpFAx8
|
||||
mov dword[edi+0FBh*4],SA1COpFB
|
||||
mov dword[edi+0FCh*4],SA1COpFC
|
||||
mov dword[edi+0FDh*4],SA1COpFDm8nd
|
||||
mov dword[edi+0FEh*4],SA1COpFEm8
|
||||
mov dword[edi+0FFh*4],SA1COpFFm8nd
|
||||
ret
|
||||
|
||||
NEWSYM SA1settablem16
|
||||
mov dword[edi+01h*4],SA1COp01m16
|
||||
mov dword[edi+03h*4],SA1COp03m16
|
||||
mov dword[edi+04h*4],SA1COp04m16
|
||||
mov dword[edi+05h*4],SA1COp05m16
|
||||
mov dword[edi+06h*4],SA1COp06m16
|
||||
mov dword[edi+07h*4],SA1COp07m16
|
||||
mov dword[edi+09h*4],SA1COp09m16
|
||||
mov dword[edi+0Ah*4],SA1COp0Am16
|
||||
mov dword[edi+0Ch*4],SA1COp0Cm16
|
||||
mov dword[edi+0Dh*4],SA1COp0Dm16
|
||||
mov dword[edi+0Eh*4],SA1COp0Em16
|
||||
mov dword[edi+0Fh*4],SA1COp0Fm16
|
||||
mov dword[edi+11h*4],SA1COp11m16
|
||||
mov dword[edi+12h*4],SA1COp12m16
|
||||
mov dword[edi+13h*4],SA1COp13m16
|
||||
mov dword[edi+14h*4],SA1COp14m16
|
||||
mov dword[edi+15h*4],SA1COp15m16
|
||||
mov dword[edi+16h*4],SA1COp16m16
|
||||
mov dword[edi+17h*4],SA1COp17m16
|
||||
mov dword[edi+19h*4],SA1COp19m16
|
||||
mov dword[edi+1Ah*4],SA1COp1Am16
|
||||
mov dword[edi+1Ch*4],SA1COp1Cm16
|
||||
mov dword[edi+1Dh*4],SA1COp1Dm16
|
||||
mov dword[edi+1Eh*4],SA1COp1Em16
|
||||
mov dword[edi+1Fh*4],SA1COp1Fm16
|
||||
mov dword[edi+21h*4],SA1COp21m16
|
||||
mov dword[edi+23h*4],SA1COp23m16
|
||||
mov dword[edi+24h*4],SA1COp24m16
|
||||
mov dword[edi+25h*4],SA1COp25m16
|
||||
mov dword[edi+26h*4],SA1COp26m16
|
||||
mov dword[edi+27h*4],SA1COp27m16
|
||||
mov dword[edi+29h*4],SA1COp29m16
|
||||
mov dword[edi+2Ah*4],SA1COp2Am16
|
||||
mov dword[edi+2Ch*4],SA1COp2Cm16
|
||||
mov dword[edi+2Dh*4],SA1COp2Dm16
|
||||
mov dword[edi+2Eh*4],SA1COp2Em16
|
||||
mov dword[edi+2Fh*4],SA1COp2Fm16
|
||||
mov dword[edi+31h*4],SA1COp31m16
|
||||
mov dword[edi+32h*4],SA1COp32m16
|
||||
mov dword[edi+33h*4],SA1COp33m16
|
||||
mov dword[edi+34h*4],SA1COp34m16
|
||||
mov dword[edi+35h*4],SA1COp35m16
|
||||
mov dword[edi+36h*4],SA1COp36m16
|
||||
mov dword[edi+37h*4],SA1COp37m16
|
||||
mov dword[edi+39h*4],SA1COp39m16
|
||||
mov dword[edi+3Ah*4],SA1COp3Am16
|
||||
mov dword[edi+3Ch*4],SA1COp3Cm16
|
||||
mov dword[edi+3Dh*4],SA1COp3Dm16
|
||||
mov dword[edi+3Eh*4],SA1COp3Em16
|
||||
mov dword[edi+3Fh*4],SA1COp3Fm16
|
||||
mov dword[edi+41h*4],SA1COp41m16
|
||||
mov dword[edi+43h*4],SA1COp43m16
|
||||
mov dword[edi+45h*4],SA1COp45m16
|
||||
mov dword[edi+46h*4],SA1COp46m16
|
||||
mov dword[edi+47h*4],SA1COp47m16
|
||||
mov dword[edi+48h*4],SA1COp48m16
|
||||
mov dword[edi+49h*4],SA1COp49m16
|
||||
mov dword[edi+4Ah*4],SA1COp4Am16
|
||||
mov dword[edi+4Dh*4],SA1COp4Dm16
|
||||
mov dword[edi+4Eh*4],SA1COp4Em16
|
||||
mov dword[edi+4Fh*4],SA1COp4Fm16
|
||||
mov dword[edi+51h*4],SA1COp51m16
|
||||
mov dword[edi+52h*4],SA1COp52m16
|
||||
mov dword[edi+53h*4],SA1COp53m16
|
||||
mov dword[edi+55h*4],SA1COp55m16
|
||||
mov dword[edi+56h*4],SA1COp56m16
|
||||
mov dword[edi+57h*4],SA1COp57m16
|
||||
mov dword[edi+59h*4],SA1COp59m16
|
||||
mov dword[edi+5Dh*4],SA1COp5Dm16
|
||||
mov dword[edi+5Eh*4],SA1COp5Em16
|
||||
mov dword[edi+5Fh*4],SA1COp5Fm16
|
||||
mov dword[edi+61h*4],SA1COp61m16nd
|
||||
mov dword[edi+63h*4],SA1COp63m16nd
|
||||
mov dword[edi+64h*4],SA1COp64m16
|
||||
mov dword[edi+65h*4],SA1COp65m16nd
|
||||
mov dword[edi+66h*4],SA1COp66m16
|
||||
mov dword[edi+67h*4],SA1COp67m16nd
|
||||
mov dword[edi+68h*4],SA1COp68m16
|
||||
mov dword[edi+69h*4],SA1COp69m16nd
|
||||
mov dword[edi+6Ah*4],SA1COp6Am16
|
||||
mov dword[edi+6Dh*4],SA1COp6Dm16nd
|
||||
mov dword[edi+6Eh*4],SA1COp6Em16
|
||||
mov dword[edi+6Fh*4],SA1COp6Fm16nd
|
||||
mov dword[edi+71h*4],SA1COp71m16nd
|
||||
mov dword[edi+72h*4],SA1COp72m16nd
|
||||
mov dword[edi+73h*4],SA1COp73m16nd
|
||||
mov dword[edi+74h*4],SA1COp74m16
|
||||
mov dword[edi+75h*4],SA1COp75m16nd
|
||||
mov dword[edi+76h*4],SA1COp76m16
|
||||
mov dword[edi+77h*4],SA1COp77m16nd
|
||||
mov dword[edi+79h*4],SA1COp79m16nd
|
||||
mov dword[edi+7Dh*4],SA1COp7Dm16nd
|
||||
mov dword[edi+7Eh*4],SA1COp7Em16
|
||||
mov dword[edi+7Fh*4],SA1COp7Fm16nd
|
||||
mov dword[edi+81h*4],SA1COp81m16
|
||||
mov dword[edi+83h*4],SA1COp83m16
|
||||
mov dword[edi+85h*4],SA1COp85m16
|
||||
mov dword[edi+87h*4],SA1COp87m16
|
||||
mov dword[edi+89h*4],SA1COp89m16
|
||||
mov dword[edi+8Ah*4],SA1COp8Am16
|
||||
mov dword[edi+8Dh*4],SA1COp8Dm16
|
||||
mov dword[edi+8Fh*4],SA1COp8Fm16
|
||||
mov dword[edi+91h*4],SA1COp91m16
|
||||
mov dword[edi+92h*4],SA1COp92m16
|
||||
mov dword[edi+93h*4],SA1COp93m16
|
||||
mov dword[edi+95h*4],SA1COp95m16
|
||||
mov dword[edi+97h*4],SA1COp97m16
|
||||
mov dword[edi+98h*4],SA1COp98m16
|
||||
mov dword[edi+99h*4],SA1COp99m16
|
||||
mov dword[edi+9Ch*4],SA1COp9Cm16
|
||||
mov dword[edi+9Dh*4],SA1COp9Dm16
|
||||
mov dword[edi+9Eh*4],SA1COp9Em16
|
||||
mov dword[edi+9Fh*4],SA1COp9Fm16
|
||||
mov dword[edi+0A1h*4],SA1COpA1m16
|
||||
mov dword[edi+0A3h*4],SA1COpA3m16
|
||||
mov dword[edi+0A5h*4],SA1COpA5m16
|
||||
mov dword[edi+0A7h*4],SA1COpA7m16
|
||||
mov dword[edi+0A9h*4],SA1COpA9m16
|
||||
mov dword[edi+0ADh*4],SA1COpADm16
|
||||
mov dword[edi+0AFh*4],SA1COpAFm16
|
||||
mov dword[edi+0B1h*4],SA1COpB1m16
|
||||
mov dword[edi+0B2h*4],SA1COpB2m16
|
||||
mov dword[edi+0B3h*4],SA1COpB3m16
|
||||
mov dword[edi+0B5h*4],SA1COpB5m16
|
||||
mov dword[edi+0B7h*4],SA1COpB7m16
|
||||
mov dword[edi+0B9h*4],SA1COpB9m16
|
||||
mov dword[edi+0BDh*4],SA1COpBDm16
|
||||
mov dword[edi+0BFh*4],SA1COpBFm16
|
||||
mov dword[edi+0C1h*4],SA1COpC1m16
|
||||
mov dword[edi+0C3h*4],SA1COpC3m16
|
||||
mov dword[edi+0C5h*4],SA1COpC5m16
|
||||
mov dword[edi+0C6h*4],SA1COpC6m16
|
||||
mov dword[edi+0C7h*4],SA1COpC7m16
|
||||
mov dword[edi+0C9h*4],SA1COpC9m16
|
||||
mov dword[edi+0CDh*4],SA1COpCDm16
|
||||
mov dword[edi+0CEh*4],SA1COpCEm16
|
||||
mov dword[edi+0CFh*4],SA1COpCFm16
|
||||
mov dword[edi+0D1h*4],SA1COpD1m16
|
||||
mov dword[edi+0D2h*4],SA1COpD2m16
|
||||
mov dword[edi+0D3h*4],SA1COpD3m16
|
||||
mov dword[edi+0D5h*4],SA1COpD5m16
|
||||
mov dword[edi+0D6h*4],SA1COpD6m16
|
||||
mov dword[edi+0D7h*4],SA1COpD7m16
|
||||
mov dword[edi+0D9h*4],SA1COpD9m16
|
||||
mov dword[edi+0DDh*4],SA1COpDDm16
|
||||
mov dword[edi+0DEh*4],SA1COpDEm16
|
||||
mov dword[edi+0DFh*4],SA1COpDFm16
|
||||
mov dword[edi+0E1h*4],SA1COpE1m16nd
|
||||
mov dword[edi+0E3h*4],SA1COpE3m16nd
|
||||
mov dword[edi+0E5h*4],SA1COpE5m16nd
|
||||
mov dword[edi+0E6h*4],SA1COpE6m16
|
||||
mov dword[edi+0E7h*4],SA1COpE7m16nd
|
||||
mov dword[edi+0E9h*4],SA1COpE9m16nd
|
||||
mov dword[edi+0EDh*4],SA1COpEDm16nd
|
||||
mov dword[edi+0EEh*4],SA1COpEEm16
|
||||
mov dword[edi+0EFh*4],SA1COpEFm16nd
|
||||
mov dword[edi+0F1h*4],SA1COpF1m16nd
|
||||
mov dword[edi+0F2h*4],SA1COpF2m16nd
|
||||
mov dword[edi+0F3h*4],SA1COpF3m16nd
|
||||
mov dword[edi+0F5h*4],SA1COpF5m16nd
|
||||
mov dword[edi+0F6h*4],SA1COpF6m16
|
||||
mov dword[edi+0F7h*4],SA1COpF7m16nd
|
||||
mov dword[edi+0F9h*4],SA1COpF9m16nd
|
||||
mov dword[edi+0FDh*4],SA1COpFDm16nd
|
||||
mov dword[edi+0FEh*4],SA1COpFEm16
|
||||
mov dword[edi+0FFh*4],SA1COpFFm16nd
|
||||
ret
|
||||
|
||||
NEWSYM SA1settablex16
|
||||
mov dword[edi+5Ah*4],SA1COp5Ax16
|
||||
mov dword[edi+7Ah*4],SA1COp7Ax16
|
||||
mov dword[edi+84h*4],SA1COp84x16
|
||||
mov dword[edi+86h*4],SA1COp86x16
|
||||
mov dword[edi+88h*4],SA1COp88x16
|
||||
mov dword[edi+8Ch*4],SA1COp8Cx16
|
||||
mov dword[edi+8Eh*4],SA1COp8Ex16
|
||||
mov dword[edi+94h*4],SA1COp94x16
|
||||
mov dword[edi+96h*4],SA1COp96x16
|
||||
mov dword[edi+9Bh*4],SA1COp9Bx16
|
||||
mov dword[edi+0A0h*4],SA1COpA0x16
|
||||
mov dword[edi+0A2h*4],SA1COpA2x16
|
||||
mov dword[edi+0A4h*4],SA1COpA4x16
|
||||
mov dword[edi+0A6h*4],SA1COpA6x16
|
||||
mov dword[edi+0A8h*4],SA1COpA8x16
|
||||
mov dword[edi+0AAh*4],SA1COpAAx16
|
||||
mov dword[edi+0ACh*4],SA1COpACx16
|
||||
mov dword[edi+0AEh*4],SA1COpAEx16
|
||||
mov dword[edi+0B4h*4],SA1COpB4x16
|
||||
mov dword[edi+0B6h*4],SA1COpB6x16
|
||||
mov dword[edi+0BAh*4],SA1COpBAx16
|
||||
mov dword[edi+0BBh*4],SA1COpBBx16
|
||||
mov dword[edi+0BCh*4],SA1COpBCx16
|
||||
mov dword[edi+0BEh*4],SA1COpBEx16
|
||||
mov dword[edi+0C0h*4],SA1COpC0x16
|
||||
mov dword[edi+0C4h*4],SA1COpC4x16
|
||||
mov dword[edi+0C8h*4],SA1COpC8x16
|
||||
mov dword[edi+0CAh*4],SA1COpCAx16
|
||||
mov dword[edi+0CCh*4],SA1COpCCx16
|
||||
mov dword[edi+0DAh*4],SA1COpDAx16
|
||||
mov dword[edi+0E0h*4],SA1COpE0x16
|
||||
mov dword[edi+0E4h*4],SA1COpE4x16
|
||||
mov dword[edi+0E8h*4],SA1COpE8x16
|
||||
mov dword[edi+0ECh*4],SA1COpECx16
|
||||
mov dword[edi+0FAh*4],SA1COpFAx16
|
||||
ret
|
||||
|
||||
NEWSYM SA1settableDm8
|
||||
mov dword[edi+61h*4],SA1COp61m8d
|
||||
mov dword[edi+63h*4],SA1COp63m8d
|
||||
mov dword[edi+65h*4],SA1COp65m8d
|
||||
mov dword[edi+67h*4],SA1COp67m8d
|
||||
mov dword[edi+69h*4],SA1COp69m8d
|
||||
mov dword[edi+6Dh*4],SA1COp6Dm8d
|
||||
mov dword[edi+6Fh*4],SA1COp6Fm8d
|
||||
mov dword[edi+71h*4],SA1COp71m8d
|
||||
mov dword[edi+72h*4],SA1COp72m8d
|
||||
mov dword[edi+73h*4],SA1COp73m8d
|
||||
mov dword[edi+75h*4],SA1COp75m8d
|
||||
mov dword[edi+77h*4],SA1COp77m8d
|
||||
mov dword[edi+79h*4],SA1COp79m8d
|
||||
mov dword[edi+7Dh*4],SA1COp7Dm8d
|
||||
mov dword[edi+7Fh*4],SA1COp7Fm8d
|
||||
mov dword[edi+0E1h*4],SA1COpE1m8d
|
||||
mov dword[edi+0E3h*4],SA1COpE3m8d
|
||||
mov dword[edi+0E5h*4],SA1COpE5m8d
|
||||
mov dword[edi+0E7h*4],SA1COpE7m8d
|
||||
mov dword[edi+0E9h*4],SA1COpE9m8d
|
||||
mov dword[edi+0EDh*4],SA1COpEDm8d
|
||||
mov dword[edi+0EFh*4],SA1COpEFm8d
|
||||
mov dword[edi+0F1h*4],SA1COpF1m8d
|
||||
mov dword[edi+0F2h*4],SA1COpF2m8d
|
||||
mov dword[edi+0F3h*4],SA1COpF3m8d
|
||||
mov dword[edi+0F5h*4],SA1COpF5m8d
|
||||
mov dword[edi+0F7h*4],SA1COpF7m8d
|
||||
mov dword[edi+0F9h*4],SA1COpF9m8d
|
||||
mov dword[edi+0FDh*4],SA1COpFDm8d
|
||||
mov dword[edi+0FFh*4],SA1COpFFm8d
|
||||
ret
|
||||
|
||||
NEWSYM SA1settableDm16
|
||||
mov dword[edi+61h*4],SA1COp61m16d
|
||||
mov dword[edi+63h*4],SA1COp63m16d
|
||||
mov dword[edi+65h*4],SA1COp65m16d
|
||||
mov dword[edi+67h*4],SA1COp67m16d
|
||||
mov dword[edi+69h*4],SA1COp69m16d
|
||||
mov dword[edi+6Dh*4],SA1COp6Dm16d
|
||||
mov dword[edi+6Fh*4],SA1COp6Fm16d
|
||||
mov dword[edi+71h*4],SA1COp71m16d
|
||||
mov dword[edi+72h*4],SA1COp72m16d
|
||||
mov dword[edi+73h*4],SA1COp73m16d
|
||||
mov dword[edi+75h*4],SA1COp75m16d
|
||||
mov dword[edi+77h*4],SA1COp77m16d
|
||||
mov dword[edi+79h*4],SA1COp79m16d
|
||||
mov dword[edi+7Dh*4],SA1COp7Dm16d
|
||||
mov dword[edi+7Fh*4],SA1COp7Fm16d
|
||||
mov dword[edi+0E1h*4],SA1COpE1m16d
|
||||
mov dword[edi+0E3h*4],SA1COpE3m16d
|
||||
mov dword[edi+0E5h*4],SA1COpE5m16d
|
||||
mov dword[edi+0E7h*4],SA1COpE7m16d
|
||||
mov dword[edi+0E9h*4],SA1COpE9m16d
|
||||
mov dword[edi+0EDh*4],SA1COpEDm16d
|
||||
mov dword[edi+0EFh*4],SA1COpEFm16d
|
||||
mov dword[edi+0F1h*4],SA1COpF1m16d
|
||||
mov dword[edi+0F2h*4],SA1COpF2m16d
|
||||
mov dword[edi+0F3h*4],SA1COpF3m16d
|
||||
mov dword[edi+0F5h*4],SA1COpF5m16d
|
||||
mov dword[edi+0F7h*4],SA1COpF7m16d
|
||||
mov dword[edi+0F9h*4],SA1COpF9m16d
|
||||
mov dword[edi+0FDh*4],SA1COpFDm16d
|
||||
mov dword[edi+0FFh*4],SA1COpFFm16d
|
||||
ret
|
||||
|
||||
|
||||
1191
zsnes/src/cpu/table.asm
Normal file
1191
zsnes/src/cpu/table.asm
Normal file
File diff suppressed because it is too large
Load Diff
723
zsnes/src/cpu/tableb.asm
Normal file
723
zsnes/src/cpu/tableb.asm
Normal file
@@ -0,0 +1,723 @@
|
||||
;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.
|
||||
|
||||
%include "macros.mac"
|
||||
|
||||
EXTSYM eramaccessbankr16,eramaccessbankr8,eramaccessbankw16
|
||||
EXTSYM eramaccessbankw8,memaccessbankr16,memaccessbankr8
|
||||
EXTSYM memaccessbankw16,memaccessbankw8
|
||||
EXTSYM mosjmptab,mosdraw10,mosdraw11,mosdraw12,mosdraw13
|
||||
EXTSYM mosdraw14,mosdraw15,mosdraw16,mosdraw2,mosdraw3
|
||||
EXTSYM mosdraw4,mosdraw5,mosdraw6,mosdraw7,mosdraw8
|
||||
EXTSYM mosdraw9,ngpalcon2b,ngpalcon4b
|
||||
EXTSYM regaccessbankr16,regaccessbankw16,regaccessbankw8
|
||||
EXTSYM sramaccessbankr16,sramaccessbankr8,sramaccessbankw16
|
||||
EXTSYM sramaccessbankw8,tableAb,tableBb,tableCb,tableDb,tableEb
|
||||
EXTSYM tableFb,tableGb,tableHb,wramaccessbankr16
|
||||
EXTSYM wramaccessbankr8,wramaccessbankw16,wramaccessbankw8,tableadb
|
||||
|
||||
%include "cpu/65816db.inc"
|
||||
%include "cpu/address.inc"
|
||||
%include "cpu/addrni.inc"
|
||||
%include "cpu/e65816b.inc"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; global variables
|
||||
|
||||
;*******************************************************
|
||||
; Generate OpCode Table
|
||||
;*******************************************************
|
||||
|
||||
NEWSYM inittableb
|
||||
; set tablead (NVMXDIZC) ( MXD )
|
||||
push es
|
||||
xor ecx,ecx
|
||||
xor al,al
|
||||
mov cx,256
|
||||
mov edi,tableadb
|
||||
.loopa
|
||||
test al,08h ; D flag
|
||||
jnz .decon
|
||||
test al,10h ; X flag
|
||||
jnz .xon
|
||||
test al,20h ; M flag
|
||||
jnz .mon
|
||||
mov esi,tableAb
|
||||
jmp .done
|
||||
.mon
|
||||
mov esi,tableBb
|
||||
jmp .done
|
||||
|
||||
.xon
|
||||
test al,20h ; M flag
|
||||
jnz .mon2
|
||||
mov esi,tableCb
|
||||
jmp .done
|
||||
.mon2
|
||||
mov esi,tableDb
|
||||
jmp .done
|
||||
|
||||
.decon
|
||||
test al,10h ; X flag
|
||||
jnz .xon3
|
||||
test al,20h ; M flag
|
||||
jnz .mon3
|
||||
mov esi,tableEb
|
||||
jmp .done
|
||||
.mon3
|
||||
mov esi,tableFb
|
||||
jmp .done
|
||||
|
||||
.xon3
|
||||
test al,20h
|
||||
jnz .mon4
|
||||
mov esi,tableGb
|
||||
jmp .done
|
||||
.mon4
|
||||
mov esi,tableHb
|
||||
.done
|
||||
inc al
|
||||
push eax
|
||||
mov eax,esi
|
||||
stosd
|
||||
pop eax
|
||||
loop .loopa
|
||||
|
||||
; Set CPU addresses
|
||||
; First, set all addresses to invalid
|
||||
mov eax,eopINVALID
|
||||
mov edi,tableAb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableBb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableCb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableDb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableEb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableFb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableGb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableHb
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableAb
|
||||
call settables
|
||||
mov edi,tableBb
|
||||
call settables
|
||||
mov edi,tableCb
|
||||
call settables
|
||||
mov edi,tableDb
|
||||
call settables
|
||||
mov edi,tableEb
|
||||
call settables
|
||||
mov edi,tableFb
|
||||
call settables
|
||||
mov edi,tableGb
|
||||
call settables
|
||||
mov edi,tableHb
|
||||
call settables
|
||||
|
||||
; set proper functions
|
||||
mov edi,tableAb ; Table addresses (M:0,X:0,D:0)
|
||||
call settablem16
|
||||
mov edi,tableAb
|
||||
call settablex16
|
||||
|
||||
mov edi,tableBb ; Table addresses (M:1,X:0,D:0)
|
||||
call settablex16
|
||||
|
||||
mov edi,tableCb ; Table addresses (M:0,X:1,D:0)
|
||||
call settablem16
|
||||
|
||||
mov edi,tableEb ; Table addresses (M:0,X:0,D:1)
|
||||
call settablem16
|
||||
mov edi,tableEb
|
||||
call settableDm16
|
||||
mov edi,tableEb
|
||||
call settablex16
|
||||
|
||||
mov edi,tableFb ; Table addresses (M:1,X:0,D:1)
|
||||
call settablex16
|
||||
mov edi,tableFb
|
||||
call settableDm8
|
||||
|
||||
mov edi,tableGb ; Table addresses (M:0,X:1,D:1)
|
||||
call settablem16
|
||||
mov edi,tableGb
|
||||
call settableDm16
|
||||
|
||||
mov edi,tableHb ; Table addresses (M:1,X:1,D:1)
|
||||
call settableDm8
|
||||
pop es
|
||||
ret
|
||||
|
||||
eopINVALID
|
||||
ret
|
||||
|
||||
;*******************************************************
|
||||
; Set Tables Sets the opcode tables according to EDI
|
||||
;*******************************************************
|
||||
; This function sets all the non-multiple entries
|
||||
settables:
|
||||
;row 0
|
||||
mov dword[edi+00h*4],COp00
|
||||
mov dword[edi+01h*4],COp01m8
|
||||
mov dword[edi+02h*4],COp02
|
||||
mov dword[edi+03h*4],COp03m8
|
||||
mov dword[edi+04h*4],COp04m8
|
||||
mov dword[edi+05h*4],COp05m8
|
||||
mov dword[edi+06h*4],COp06m8
|
||||
mov dword[edi+07h*4],COp07m8
|
||||
mov dword[edi+08h*4],COp08
|
||||
mov dword[edi+09h*4],COp09m8
|
||||
mov dword[edi+0Ah*4],COp0Am8
|
||||
mov dword[edi+0Bh*4],COp0B
|
||||
mov dword[edi+0Ch*4],COp0Cm8
|
||||
mov dword[edi+0Dh*4],COp0Dm8
|
||||
mov dword[edi+0Eh*4],COp0Em8
|
||||
mov dword[edi+0Fh*4],COp0Fm8
|
||||
mov dword[edi+10h*4],COp10
|
||||
mov dword[edi+11h*4],COp11m8
|
||||
mov dword[edi+12h*4],COp12m8
|
||||
mov dword[edi+13h*4],COp13m8
|
||||
mov dword[edi+14h*4],COp14m8
|
||||
mov dword[edi+15h*4],COp15m8
|
||||
mov dword[edi+16h*4],COp16m8
|
||||
mov dword[edi+17h*4],COp17m8
|
||||
mov dword[edi+18h*4],COp18
|
||||
mov dword[edi+19h*4],COp19m8
|
||||
mov dword[edi+1Ah*4],COp1Am8
|
||||
mov dword[edi+1Bh*4],COp1B
|
||||
mov dword[edi+1Ch*4],COp1Cm8
|
||||
mov dword[edi+1Dh*4],COp1Dm8
|
||||
mov dword[edi+1Eh*4],COp1Em8
|
||||
mov dword[edi+1Fh*4],COp1Fm8
|
||||
mov dword[edi+20h*4],COp20
|
||||
mov dword[edi+21h*4],COp21m8
|
||||
mov dword[edi+22h*4],COp22
|
||||
mov dword[edi+23h*4],COp23m8
|
||||
mov dword[edi+24h*4],COp24m8
|
||||
mov dword[edi+25h*4],COp25m8
|
||||
mov dword[edi+26h*4],COp26m8
|
||||
mov dword[edi+27h*4],COp27m8
|
||||
mov dword[edi+28h*4],COp28
|
||||
mov dword[edi+29h*4],COp29m8
|
||||
mov dword[edi+2Ah*4],COp2Am8
|
||||
mov dword[edi+2Bh*4],COp2B
|
||||
mov dword[edi+2Ch*4],COp2Cm8
|
||||
mov dword[edi+2Dh*4],COp2Dm8
|
||||
mov dword[edi+2Eh*4],COp2Em8
|
||||
mov dword[edi+2Fh*4],COp2Fm8
|
||||
mov dword[edi+30h*4],COp30
|
||||
mov dword[edi+31h*4],COp31m8
|
||||
mov dword[edi+32h*4],COp32m8
|
||||
mov dword[edi+33h*4],COp33m8
|
||||
mov dword[edi+34h*4],COp34m8
|
||||
mov dword[edi+35h*4],COp35m8
|
||||
mov dword[edi+36h*4],COp36m8
|
||||
mov dword[edi+37h*4],COp37m8
|
||||
mov dword[edi+38h*4],COp38
|
||||
mov dword[edi+39h*4],COp39m8
|
||||
mov dword[edi+3Ah*4],COp3Am8
|
||||
mov dword[edi+3Bh*4],COp3B
|
||||
mov dword[edi+3Ch*4],COp3Cm8
|
||||
mov dword[edi+3Dh*4],COp3Dm8
|
||||
mov dword[edi+3Eh*4],COp3Em8
|
||||
mov dword[edi+3Fh*4],COp3Fm8
|
||||
mov dword[edi+40h*4],COp40
|
||||
mov dword[edi+41h*4],COp41m8
|
||||
mov dword[edi+42h*4],COp42
|
||||
mov dword[edi+43h*4],COp43m8
|
||||
mov dword[edi+44h*4],COp44
|
||||
mov dword[edi+45h*4],COp45m8
|
||||
mov dword[edi+46h*4],COp46m8
|
||||
mov dword[edi+47h*4],COp47m8
|
||||
mov dword[edi+48h*4],COp48m8
|
||||
mov dword[edi+49h*4],COp49m8
|
||||
mov dword[edi+4Ah*4],COp4Am8
|
||||
mov dword[edi+4Bh*4],COp4B
|
||||
mov dword[edi+4Ch*4],COp4C
|
||||
mov dword[edi+4Dh*4],COp4Dm8
|
||||
mov dword[edi+4Eh*4],COp4Em8
|
||||
mov dword[edi+4Fh*4],COp4Fm8
|
||||
mov dword[edi+50h*4],COp50
|
||||
mov dword[edi+51h*4],COp51m8
|
||||
mov dword[edi+52h*4],COp52m8
|
||||
mov dword[edi+53h*4],COp53m8
|
||||
mov dword[edi+54h*4],COp54
|
||||
mov dword[edi+55h*4],COp55m8
|
||||
mov dword[edi+56h*4],COp56m8
|
||||
mov dword[edi+57h*4],COp57m8
|
||||
mov dword[edi+58h*4],COp58
|
||||
mov dword[edi+59h*4],COp59m8
|
||||
mov dword[edi+5Ah*4],COp5Ax8
|
||||
mov dword[edi+5Bh*4],COp5B
|
||||
mov dword[edi+5Ch*4],COp5C
|
||||
mov dword[edi+5Dh*4],COp5Dm8
|
||||
mov dword[edi+5Eh*4],COp5Em8
|
||||
mov dword[edi+5Fh*4],COp5Fm8
|
||||
mov dword[edi+60h*4],COp60
|
||||
mov dword[edi+61h*4],COp61m8nd
|
||||
mov dword[edi+62h*4],COp62
|
||||
mov dword[edi+63h*4],COp63m8nd
|
||||
mov dword[edi+64h*4],COp64m8
|
||||
mov dword[edi+65h*4],COp65m8nd
|
||||
mov dword[edi+66h*4],COp66m8
|
||||
mov dword[edi+67h*4],COp67m8nd
|
||||
mov dword[edi+68h*4],COp68m8
|
||||
mov dword[edi+69h*4],COp69m8nd
|
||||
mov dword[edi+6Ah*4],COp6Am8
|
||||
mov dword[edi+6Bh*4],COp6B
|
||||
mov dword[edi+6Ch*4],COp6C
|
||||
mov dword[edi+6Dh*4],COp6Dm8nd
|
||||
mov dword[edi+6Eh*4],COp6Em8
|
||||
mov dword[edi+6Fh*4],COp6Fm8nd
|
||||
mov dword[edi+70h*4],COp70
|
||||
mov dword[edi+71h*4],COp71m8nd
|
||||
mov dword[edi+72h*4],COp72m8nd
|
||||
mov dword[edi+73h*4],COp73m8nd
|
||||
mov dword[edi+74h*4],COp74m8
|
||||
mov dword[edi+75h*4],COp75m8nd
|
||||
mov dword[edi+76h*4],COp76m8
|
||||
mov dword[edi+77h*4],COp77m8nd
|
||||
mov dword[edi+78h*4],COp78
|
||||
mov dword[edi+79h*4],COp79m8nd
|
||||
mov dword[edi+7Ah*4],COp7Ax8
|
||||
mov dword[edi+7Bh*4],COp7B
|
||||
mov dword[edi+7Ch*4],COp7C
|
||||
mov dword[edi+7Dh*4],COp7Dm8nd
|
||||
mov dword[edi+7Eh*4],COp7Em8
|
||||
mov dword[edi+7Fh*4],COp7Fm8nd
|
||||
mov dword[edi+80h*4],COp80
|
||||
mov dword[edi+81h*4],COp81m8
|
||||
mov dword[edi+82h*4],COp82
|
||||
mov dword[edi+83h*4],COp83m8
|
||||
mov dword[edi+84h*4],COp84x8
|
||||
mov dword[edi+85h*4],COp85m8
|
||||
mov dword[edi+86h*4],COp86x8
|
||||
mov dword[edi+87h*4],COp87m8
|
||||
mov dword[edi+88h*4],COp88x8
|
||||
mov dword[edi+89h*4],COp89m8
|
||||
mov dword[edi+8Ah*4],COp8Am8
|
||||
mov dword[edi+8Bh*4],COp8B
|
||||
mov dword[edi+8Ch*4],COp8Cx8
|
||||
mov dword[edi+8Dh*4],COp8Dm8
|
||||
mov dword[edi+8Eh*4],COp8Ex8
|
||||
mov dword[edi+8Fh*4],COp8Fm8
|
||||
mov dword[edi+90h*4],COp90
|
||||
mov dword[edi+91h*4],COp91m8
|
||||
mov dword[edi+92h*4],COp92m8
|
||||
mov dword[edi+93h*4],COp93m8
|
||||
mov dword[edi+94h*4],COp94x8
|
||||
mov dword[edi+95h*4],COp95m8
|
||||
mov dword[edi+96h*4],COp96x8
|
||||
mov dword[edi+97h*4],COp97m8
|
||||
mov dword[edi+98h*4],COp98m8
|
||||
mov dword[edi+99h*4],COp99m8
|
||||
mov dword[edi+9Ah*4],COp9A
|
||||
mov dword[edi+9Bh*4],COp9Bx8
|
||||
mov dword[edi+9Ch*4],COp9Cm8
|
||||
mov dword[edi+9Dh*4],COp9Dm8
|
||||
mov dword[edi+9Eh*4],COp9Em8
|
||||
mov dword[edi+9Fh*4],COp9Fm8
|
||||
mov dword[edi+0A0h*4],COpA0x8
|
||||
mov dword[edi+0A1h*4],COpA1m8
|
||||
mov dword[edi+0A2h*4],COpA2x8
|
||||
mov dword[edi+0A3h*4],COpA3m8
|
||||
mov dword[edi+0A4h*4],COpA4x8
|
||||
mov dword[edi+0A5h*4],COpA5m8
|
||||
mov dword[edi+0A6h*4],COpA6x8
|
||||
mov dword[edi+0A7h*4],COpA7m8
|
||||
mov dword[edi+0A8h*4],COpA8x8
|
||||
mov dword[edi+0A9h*4],COpA9m8
|
||||
mov dword[edi+0AAh*4],COpAAx8
|
||||
mov dword[edi+0ABh*4],COpAB
|
||||
mov dword[edi+0ACh*4],COpACx8
|
||||
mov dword[edi+0ADh*4],COpADm8
|
||||
mov dword[edi+0AEh*4],COpAEx8
|
||||
mov dword[edi+0AFh*4],COpAFm8
|
||||
mov dword[edi+0B0h*4],COpB0
|
||||
mov dword[edi+0B1h*4],COpB1m8
|
||||
mov dword[edi+0B2h*4],COpB2m8
|
||||
mov dword[edi+0B3h*4],COpB3m8
|
||||
mov dword[edi+0B4h*4],COpB4x8
|
||||
mov dword[edi+0B5h*4],COpB5m8
|
||||
mov dword[edi+0B6h*4],COpB6x8
|
||||
mov dword[edi+0B7h*4],COpB7m8
|
||||
mov dword[edi+0B8h*4],COpB8
|
||||
mov dword[edi+0B9h*4],COpB9m8
|
||||
mov dword[edi+0BAh*4],COpBAx8
|
||||
mov dword[edi+0BBh*4],COpBBx8
|
||||
mov dword[edi+0BCh*4],COpBCx8
|
||||
mov dword[edi+0BDh*4],COpBDm8
|
||||
mov dword[edi+0BEh*4],COpBEx8
|
||||
mov dword[edi+0BFh*4],COpBFm8
|
||||
mov dword[edi+0C0h*4],COpC0x8
|
||||
mov dword[edi+0C1h*4],COpC1m8
|
||||
mov dword[edi+0C2h*4],COpC2
|
||||
mov dword[edi+0C3h*4],COpC3m8
|
||||
mov dword[edi+0C4h*4],COpC4x8
|
||||
mov dword[edi+0C5h*4],COpC5m8
|
||||
mov dword[edi+0C6h*4],COpC6m8
|
||||
mov dword[edi+0C7h*4],COpC7m8
|
||||
mov dword[edi+0C8h*4],COpC8x8
|
||||
mov dword[edi+0C9h*4],COpC9m8
|
||||
mov dword[edi+0CAh*4],COpCAx8
|
||||
mov dword[edi+0CBh*4],COpCB
|
||||
mov dword[edi+0CCh*4],COpCCx8
|
||||
mov dword[edi+0CDh*4],COpCDm8
|
||||
mov dword[edi+0CEh*4],COpCEm8
|
||||
mov dword[edi+0CFh*4],COpCFm8
|
||||
mov dword[edi+0D0h*4],COpD0
|
||||
mov dword[edi+0D1h*4],COpD1m8
|
||||
mov dword[edi+0D2h*4],COpD2m8
|
||||
mov dword[edi+0D3h*4],COpD3m8
|
||||
mov dword[edi+0D4h*4],COpD4
|
||||
mov dword[edi+0D5h*4],COpD5m8
|
||||
mov dword[edi+0D6h*4],COpD6m8
|
||||
mov dword[edi+0D7h*4],COpD7m8
|
||||
mov dword[edi+0D8h*4],COpD8
|
||||
mov dword[edi+0D9h*4],COpD9m8
|
||||
mov dword[edi+0DAh*4],COpDAx8
|
||||
mov dword[edi+0DBh*4],COpDB
|
||||
mov dword[edi+0DCh*4],COpDC
|
||||
mov dword[edi+0DDh*4],COpDDm8
|
||||
mov dword[edi+0DEh*4],COpDEm8
|
||||
mov dword[edi+0DFh*4],COpDFm8
|
||||
mov dword[edi+0E0h*4],COpE0x8
|
||||
mov dword[edi+0E1h*4],COpE1m8nd
|
||||
mov dword[edi+0E2h*4],COpE2
|
||||
mov dword[edi+0E3h*4],COpE3m8nd
|
||||
mov dword[edi+0E4h*4],COpE4x8
|
||||
mov dword[edi+0E5h*4],COpE5m8nd
|
||||
mov dword[edi+0E6h*4],COpE6m8
|
||||
mov dword[edi+0E7h*4],COpE7m8nd
|
||||
mov dword[edi+0E8h*4],COpE8x8
|
||||
mov dword[edi+0E9h*4],COpE9m8nd
|
||||
mov dword[edi+0EAh*4],COpEA
|
||||
mov dword[edi+0EBh*4],COpEB
|
||||
mov dword[edi+0ECh*4],COpECx8
|
||||
mov dword[edi+0EDh*4],COpEDm8nd
|
||||
mov dword[edi+0EEh*4],COpEEm8
|
||||
mov dword[edi+0EFh*4],COpEFm8nd
|
||||
mov dword[edi+0F0h*4],COpF0
|
||||
mov dword[edi+0F1h*4],COpF1m8nd
|
||||
mov dword[edi+0F2h*4],COpF2m8nd
|
||||
mov dword[edi+0F3h*4],COpF3m8nd
|
||||
mov dword[edi+0F4h*4],COpF4
|
||||
mov dword[edi+0F5h*4],COpF5m8nd
|
||||
mov dword[edi+0F6h*4],COpF6m8
|
||||
mov dword[edi+0F7h*4],COpF7m8nd
|
||||
mov dword[edi+0F8h*4],COpF8
|
||||
mov dword[edi+0F9h*4],COpF9m8nd
|
||||
mov dword[edi+0FAh*4],COpFAx8
|
||||
mov dword[edi+0FBh*4],COpFB
|
||||
mov dword[edi+0FCh*4],COpFC
|
||||
mov dword[edi+0FDh*4],COpFDm8nd
|
||||
mov dword[edi+0FEh*4],COpFEm8
|
||||
mov dword[edi+0FFh*4],COpFFm8nd
|
||||
ret
|
||||
|
||||
settablem16:
|
||||
mov dword[edi+01h*4],COp01m16
|
||||
mov dword[edi+03h*4],COp03m16
|
||||
mov dword[edi+04h*4],COp04m16
|
||||
mov dword[edi+05h*4],COp05m16
|
||||
mov dword[edi+06h*4],COp06m16
|
||||
mov dword[edi+07h*4],COp07m16
|
||||
mov dword[edi+09h*4],COp09m16
|
||||
mov dword[edi+0Ah*4],COp0Am16
|
||||
mov dword[edi+0Ch*4],COp0Cm16
|
||||
mov dword[edi+0Dh*4],COp0Dm16
|
||||
mov dword[edi+0Eh*4],COp0Em16
|
||||
mov dword[edi+0Fh*4],COp0Fm16
|
||||
mov dword[edi+11h*4],COp11m16
|
||||
mov dword[edi+12h*4],COp12m16
|
||||
mov dword[edi+13h*4],COp13m16
|
||||
mov dword[edi+14h*4],COp14m16
|
||||
mov dword[edi+15h*4],COp15m16
|
||||
mov dword[edi+16h*4],COp16m16
|
||||
mov dword[edi+17h*4],COp17m16
|
||||
mov dword[edi+19h*4],COp19m16
|
||||
mov dword[edi+1Ah*4],COp1Am16
|
||||
mov dword[edi+1Ch*4],COp1Cm16
|
||||
mov dword[edi+1Dh*4],COp1Dm16
|
||||
mov dword[edi+1Eh*4],COp1Em16
|
||||
mov dword[edi+1Fh*4],COp1Fm16
|
||||
mov dword[edi+21h*4],COp21m16
|
||||
mov dword[edi+23h*4],COp23m16
|
||||
mov dword[edi+24h*4],COp24m16
|
||||
mov dword[edi+25h*4],COp25m16
|
||||
mov dword[edi+26h*4],COp26m16
|
||||
mov dword[edi+27h*4],COp27m16
|
||||
mov dword[edi+29h*4],COp29m16
|
||||
mov dword[edi+2Ah*4],COp2Am16
|
||||
mov dword[edi+2Ch*4],COp2Cm16
|
||||
mov dword[edi+2Dh*4],COp2Dm16
|
||||
mov dword[edi+2Eh*4],COp2Em16
|
||||
mov dword[edi+2Fh*4],COp2Fm16
|
||||
mov dword[edi+31h*4],COp31m16
|
||||
mov dword[edi+32h*4],COp32m16
|
||||
mov dword[edi+33h*4],COp33m16
|
||||
mov dword[edi+34h*4],COp34m16
|
||||
mov dword[edi+35h*4],COp35m16
|
||||
mov dword[edi+36h*4],COp36m16
|
||||
mov dword[edi+37h*4],COp37m16
|
||||
mov dword[edi+39h*4],COp39m16
|
||||
mov dword[edi+3Ah*4],COp3Am16
|
||||
mov dword[edi+3Ch*4],COp3Cm16
|
||||
mov dword[edi+3Dh*4],COp3Dm16
|
||||
mov dword[edi+3Eh*4],COp3Em16
|
||||
mov dword[edi+3Fh*4],COp3Fm16
|
||||
mov dword[edi+41h*4],COp41m16
|
||||
mov dword[edi+43h*4],COp43m16
|
||||
mov dword[edi+45h*4],COp45m16
|
||||
mov dword[edi+46h*4],COp46m16
|
||||
mov dword[edi+47h*4],COp47m16
|
||||
mov dword[edi+48h*4],COp48m16
|
||||
mov dword[edi+49h*4],COp49m16
|
||||
mov dword[edi+4Ah*4],COp4Am16
|
||||
mov dword[edi+4Dh*4],COp4Dm16
|
||||
mov dword[edi+4Eh*4],COp4Em16
|
||||
mov dword[edi+4Fh*4],COp4Fm16
|
||||
mov dword[edi+51h*4],COp51m16
|
||||
mov dword[edi+52h*4],COp52m16
|
||||
mov dword[edi+53h*4],COp53m16
|
||||
mov dword[edi+55h*4],COp55m16
|
||||
mov dword[edi+56h*4],COp56m16
|
||||
mov dword[edi+57h*4],COp57m16
|
||||
mov dword[edi+59h*4],COp59m16
|
||||
mov dword[edi+5Dh*4],COp5Dm16
|
||||
mov dword[edi+5Eh*4],COp5Em16
|
||||
mov dword[edi+5Fh*4],COp5Fm16
|
||||
mov dword[edi+61h*4],COp61m16nd
|
||||
mov dword[edi+63h*4],COp63m16nd
|
||||
mov dword[edi+64h*4],COp64m16
|
||||
mov dword[edi+65h*4],COp65m16nd
|
||||
mov dword[edi+66h*4],COp66m16
|
||||
mov dword[edi+67h*4],COp67m16nd
|
||||
mov dword[edi+68h*4],COp68m16
|
||||
mov dword[edi+69h*4],COp69m16nd
|
||||
mov dword[edi+6Ah*4],COp6Am16
|
||||
mov dword[edi+6Dh*4],COp6Dm16nd
|
||||
mov dword[edi+6Eh*4],COp6Em16
|
||||
mov dword[edi+6Fh*4],COp6Fm16nd
|
||||
mov dword[edi+71h*4],COp71m16nd
|
||||
mov dword[edi+72h*4],COp72m16nd
|
||||
mov dword[edi+73h*4],COp73m16nd
|
||||
mov dword[edi+74h*4],COp74m16
|
||||
mov dword[edi+75h*4],COp75m16nd
|
||||
mov dword[edi+76h*4],COp76m16
|
||||
mov dword[edi+77h*4],COp77m16nd
|
||||
mov dword[edi+79h*4],COp79m16nd
|
||||
mov dword[edi+7Dh*4],COp7Dm16nd
|
||||
mov dword[edi+7Eh*4],COp7Em16
|
||||
mov dword[edi+7Fh*4],COp7Fm16nd
|
||||
mov dword[edi+81h*4],COp81m16
|
||||
mov dword[edi+83h*4],COp83m16
|
||||
mov dword[edi+85h*4],COp85m16
|
||||
mov dword[edi+87h*4],COp87m16
|
||||
mov dword[edi+89h*4],COp89m16
|
||||
mov dword[edi+8Ah*4],COp8Am16
|
||||
mov dword[edi+8Dh*4],COp8Dm16
|
||||
mov dword[edi+8Fh*4],COp8Fm16
|
||||
mov dword[edi+91h*4],COp91m16
|
||||
mov dword[edi+92h*4],COp92m16
|
||||
mov dword[edi+93h*4],COp93m16
|
||||
mov dword[edi+95h*4],COp95m16
|
||||
mov dword[edi+97h*4],COp97m16
|
||||
mov dword[edi+98h*4],COp98m16
|
||||
mov dword[edi+99h*4],COp99m16
|
||||
mov dword[edi+9Ch*4],COp9Cm16
|
||||
mov dword[edi+9Dh*4],COp9Dm16
|
||||
mov dword[edi+9Eh*4],COp9Em16
|
||||
mov dword[edi+9Fh*4],COp9Fm16
|
||||
mov dword[edi+0A1h*4],COpA1m16
|
||||
mov dword[edi+0A3h*4],COpA3m16
|
||||
mov dword[edi+0A5h*4],COpA5m16
|
||||
mov dword[edi+0A7h*4],COpA7m16
|
||||
mov dword[edi+0A9h*4],COpA9m16
|
||||
mov dword[edi+0ADh*4],COpADm16
|
||||
mov dword[edi+0AFh*4],COpAFm16
|
||||
mov dword[edi+0B1h*4],COpB1m16
|
||||
mov dword[edi+0B2h*4],COpB2m16
|
||||
mov dword[edi+0B3h*4],COpB3m16
|
||||
mov dword[edi+0B5h*4],COpB5m16
|
||||
mov dword[edi+0B7h*4],COpB7m16
|
||||
mov dword[edi+0B9h*4],COpB9m16
|
||||
mov dword[edi+0BDh*4],COpBDm16
|
||||
mov dword[edi+0BFh*4],COpBFm16
|
||||
mov dword[edi+0C1h*4],COpC1m16
|
||||
mov dword[edi+0C3h*4],COpC3m16
|
||||
mov dword[edi+0C5h*4],COpC5m16
|
||||
mov dword[edi+0C6h*4],COpC6m16
|
||||
mov dword[edi+0C7h*4],COpC7m16
|
||||
mov dword[edi+0C9h*4],COpC9m16
|
||||
mov dword[edi+0CDh*4],COpCDm16
|
||||
mov dword[edi+0CEh*4],COpCEm16
|
||||
mov dword[edi+0CFh*4],COpCFm16
|
||||
mov dword[edi+0D1h*4],COpD1m16
|
||||
mov dword[edi+0D2h*4],COpD2m16
|
||||
mov dword[edi+0D3h*4],COpD3m16
|
||||
mov dword[edi+0D5h*4],COpD5m16
|
||||
mov dword[edi+0D6h*4],COpD6m16
|
||||
mov dword[edi+0D7h*4],COpD7m16
|
||||
mov dword[edi+0D9h*4],COpD9m16
|
||||
mov dword[edi+0DDh*4],COpDDm16
|
||||
mov dword[edi+0DEh*4],COpDEm16
|
||||
mov dword[edi+0DFh*4],COpDFm16
|
||||
mov dword[edi+0E1h*4],COpE1m16nd
|
||||
mov dword[edi+0E3h*4],COpE3m16nd
|
||||
mov dword[edi+0E5h*4],COpE5m16nd
|
||||
mov dword[edi+0E6h*4],COpE6m16
|
||||
mov dword[edi+0E7h*4],COpE7m16nd
|
||||
mov dword[edi+0E9h*4],COpE9m16nd
|
||||
mov dword[edi+0EDh*4],COpEDm16nd
|
||||
mov dword[edi+0EEh*4],COpEEm16
|
||||
mov dword[edi+0EFh*4],COpEFm16nd
|
||||
mov dword[edi+0F1h*4],COpF1m16nd
|
||||
mov dword[edi+0F2h*4],COpF2m16nd
|
||||
mov dword[edi+0F3h*4],COpF3m16nd
|
||||
mov dword[edi+0F5h*4],COpF5m16nd
|
||||
mov dword[edi+0F6h*4],COpF6m16
|
||||
mov dword[edi+0F7h*4],COpF7m16nd
|
||||
mov dword[edi+0F9h*4],COpF9m16nd
|
||||
mov dword[edi+0FDh*4],COpFDm16nd
|
||||
mov dword[edi+0FEh*4],COpFEm16
|
||||
mov dword[edi+0FFh*4],COpFFm16nd
|
||||
ret
|
||||
|
||||
settablex16:
|
||||
mov dword[edi+5Ah*4],COp5Ax16
|
||||
mov dword[edi+7Ah*4],COp7Ax16
|
||||
mov dword[edi+84h*4],COp84x16
|
||||
mov dword[edi+86h*4],COp86x16
|
||||
mov dword[edi+88h*4],COp88x16
|
||||
mov dword[edi+8Ch*4],COp8Cx16
|
||||
mov dword[edi+8Eh*4],COp8Ex16
|
||||
mov dword[edi+94h*4],COp94x16
|
||||
mov dword[edi+96h*4],COp96x16
|
||||
mov dword[edi+9Bh*4],COp9Bx16
|
||||
mov dword[edi+0A0h*4],COpA0x16
|
||||
mov dword[edi+0A2h*4],COpA2x16
|
||||
mov dword[edi+0A4h*4],COpA4x16
|
||||
mov dword[edi+0A6h*4],COpA6x16
|
||||
mov dword[edi+0A8h*4],COpA8x16
|
||||
mov dword[edi+0AAh*4],COpAAx16
|
||||
mov dword[edi+0ACh*4],COpACx16
|
||||
mov dword[edi+0AEh*4],COpAEx16
|
||||
mov dword[edi+0B4h*4],COpB4x16
|
||||
mov dword[edi+0B6h*4],COpB6x16
|
||||
mov dword[edi+0BAh*4],COpBAx16
|
||||
mov dword[edi+0BBh*4],COpBBx16
|
||||
mov dword[edi+0BCh*4],COpBCx16
|
||||
mov dword[edi+0BEh*4],COpBEx16
|
||||
mov dword[edi+0C0h*4],COpC0x16
|
||||
mov dword[edi+0C4h*4],COpC4x16
|
||||
mov dword[edi+0C8h*4],COpC8x16
|
||||
mov dword[edi+0CAh*4],COpCAx16
|
||||
mov dword[edi+0CCh*4],COpCCx16
|
||||
mov dword[edi+0DAh*4],COpDAx16
|
||||
mov dword[edi+0E0h*4],COpE0x16
|
||||
mov dword[edi+0E4h*4],COpE4x16
|
||||
mov dword[edi+0E8h*4],COpE8x16
|
||||
mov dword[edi+0ECh*4],COpECx16
|
||||
mov dword[edi+0FAh*4],COpFAx16
|
||||
ret
|
||||
|
||||
settableDm8:
|
||||
mov dword[edi+61h*4],COp61m8d
|
||||
mov dword[edi+63h*4],COp63m8d
|
||||
mov dword[edi+65h*4],COp65m8d
|
||||
mov dword[edi+67h*4],COp67m8d
|
||||
mov dword[edi+69h*4],COp69m8d
|
||||
mov dword[edi+6Dh*4],COp6Dm8d
|
||||
mov dword[edi+6Fh*4],COp6Fm8d
|
||||
mov dword[edi+71h*4],COp71m8d
|
||||
mov dword[edi+72h*4],COp72m8d
|
||||
mov dword[edi+73h*4],COp73m8d
|
||||
mov dword[edi+75h*4],COp75m8d
|
||||
mov dword[edi+77h*4],COp77m8d
|
||||
mov dword[edi+79h*4],COp79m8d
|
||||
mov dword[edi+7Dh*4],COp7Dm8d
|
||||
mov dword[edi+7Fh*4],COp7Fm8d
|
||||
mov dword[edi+0E1h*4],COpE1m8d
|
||||
mov dword[edi+0E3h*4],COpE3m8d
|
||||
mov dword[edi+0E5h*4],COpE5m8d
|
||||
mov dword[edi+0E7h*4],COpE7m8d
|
||||
mov dword[edi+0E9h*4],COpE9m8d
|
||||
mov dword[edi+0EDh*4],COpEDm8d
|
||||
mov dword[edi+0EFh*4],COpEFm8d
|
||||
mov dword[edi+0F1h*4],COpF1m8d
|
||||
mov dword[edi+0F2h*4],COpF2m8d
|
||||
mov dword[edi+0F3h*4],COpF3m8d
|
||||
mov dword[edi+0F5h*4],COpF5m8d
|
||||
mov dword[edi+0F7h*4],COpF7m8d
|
||||
mov dword[edi+0F9h*4],COpF9m8d
|
||||
mov dword[edi+0FDh*4],COpFDm8d
|
||||
mov dword[edi+0FFh*4],COpFFm8d
|
||||
ret
|
||||
|
||||
settableDm16:
|
||||
mov dword[edi+61h*4],COp61m16d
|
||||
mov dword[edi+63h*4],COp63m16d
|
||||
mov dword[edi+65h*4],COp65m16d
|
||||
mov dword[edi+67h*4],COp67m16d
|
||||
mov dword[edi+69h*4],COp69m16d
|
||||
mov dword[edi+6Dh*4],COp6Dm16d
|
||||
mov dword[edi+6Fh*4],COp6Fm16d
|
||||
mov dword[edi+71h*4],COp71m16d
|
||||
mov dword[edi+72h*4],COp72m16d
|
||||
mov dword[edi+73h*4],COp73m16d
|
||||
mov dword[edi+75h*4],COp75m16d
|
||||
mov dword[edi+77h*4],COp77m16d
|
||||
mov dword[edi+79h*4],COp79m16d
|
||||
mov dword[edi+7Dh*4],COp7Dm16d
|
||||
mov dword[edi+7Fh*4],COp7Fm16d
|
||||
mov dword[edi+0E1h*4],COpE1m16d
|
||||
mov dword[edi+0E3h*4],COpE3m16d
|
||||
mov dword[edi+0E5h*4],COpE5m16d
|
||||
mov dword[edi+0E7h*4],COpE7m16d
|
||||
mov dword[edi+0E9h*4],COpE9m16d
|
||||
mov dword[edi+0EDh*4],COpEDm16d
|
||||
mov dword[edi+0EFh*4],COpEFm16d
|
||||
mov dword[edi+0F1h*4],COpF1m16d
|
||||
mov dword[edi+0F2h*4],COpF2m16d
|
||||
mov dword[edi+0F3h*4],COpF3m16d
|
||||
mov dword[edi+0F5h*4],COpF5m16d
|
||||
mov dword[edi+0F7h*4],COpF7m16d
|
||||
mov dword[edi+0F9h*4],COpF9m16d
|
||||
mov dword[edi+0FDh*4],COpFDm16d
|
||||
mov dword[edi+0FFh*4],COpFFm16d
|
||||
ret
|
||||
|
||||
|
||||
723
zsnes/src/cpu/tablec.asm
Normal file
723
zsnes/src/cpu/tablec.asm
Normal file
@@ -0,0 +1,723 @@
|
||||
;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.
|
||||
|
||||
%include "macros.mac"
|
||||
|
||||
EXTSYM eramaccessbankr16,eramaccessbankr8,eramaccessbankw16
|
||||
EXTSYM eramaccessbankw8,memaccessbankr16,memaccessbankr8
|
||||
EXTSYM memaccessbankw16,memaccessbankw8
|
||||
EXTSYM mosjmptab,mosdraw10,mosdraw11,mosdraw12,mosdraw13
|
||||
EXTSYM mosdraw14,mosdraw15,mosdraw16,mosdraw2,mosdraw3
|
||||
EXTSYM mosdraw4,mosdraw5,mosdraw6,mosdraw7,mosdraw8
|
||||
EXTSYM mosdraw9,ngpalcon2b,ngpalcon4b
|
||||
EXTSYM regaccessbankr16,regaccessbankw16,regaccessbankw8
|
||||
EXTSYM sramaccessbankr16,sramaccessbankr8,sramaccessbankw16
|
||||
EXTSYM sramaccessbankw8,tableAc,tableBc,tableCc,tableDc,tableEc
|
||||
EXTSYM tableFc,tableGc,tableHc,wramaccessbankr16
|
||||
EXTSYM wramaccessbankr8,wramaccessbankw16,wramaccessbankw8,tableadc
|
||||
|
||||
%include "cpu/65816dc.inc"
|
||||
%include "cpu/address.inc"
|
||||
%include "cpu/addrni.inc"
|
||||
%include "cpu/e65816c.inc"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; global variables
|
||||
|
||||
;*******************************************************
|
||||
; Generate OpCode Table
|
||||
;*******************************************************
|
||||
|
||||
NEWSYM inittablec
|
||||
; set tablead (NVMXDIZC) ( MXD )
|
||||
push es
|
||||
xor ecx,ecx
|
||||
xor al,al
|
||||
mov cx,256
|
||||
mov edi,tableadc
|
||||
.loopa
|
||||
test al,08h ; D flag
|
||||
jnz .decon
|
||||
test al,10h ; X flag
|
||||
jnz .xon
|
||||
test al,20h ; M flag
|
||||
jnz .mon
|
||||
mov esi,tableAc
|
||||
jmp .done
|
||||
.mon
|
||||
mov esi,tableBc
|
||||
jmp .done
|
||||
|
||||
.xon
|
||||
test al,20h ; M flag
|
||||
jnz .mon2
|
||||
mov esi,tableCc
|
||||
jmp .done
|
||||
.mon2
|
||||
mov esi,tableDc
|
||||
jmp .done
|
||||
|
||||
.decon
|
||||
test al,10h ; X flag
|
||||
jnz .xon3
|
||||
test al,20h ; M flag
|
||||
jnz .mon3
|
||||
mov esi,tableEc
|
||||
jmp .done
|
||||
.mon3
|
||||
mov esi,tableFc
|
||||
jmp .done
|
||||
|
||||
.xon3
|
||||
test al,20h
|
||||
jnz .mon4
|
||||
mov esi,tableGc
|
||||
jmp .done
|
||||
.mon4
|
||||
mov esi,tableHc
|
||||
.done
|
||||
inc al
|
||||
push eax
|
||||
mov eax,esi
|
||||
stosd
|
||||
pop eax
|
||||
loop .loopa
|
||||
|
||||
; Set CPU addresses
|
||||
; First, set all addresses to invalid
|
||||
mov eax,eopINVALID
|
||||
mov edi,tableAc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableBc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableCc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableDc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableEc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableFc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableGc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableHc
|
||||
mov ecx,256
|
||||
rep stosd
|
||||
mov edi,tableAc
|
||||
call settables
|
||||
mov edi,tableBc
|
||||
call settables
|
||||
mov edi,tableCc
|
||||
call settables
|
||||
mov edi,tableDc
|
||||
call settables
|
||||
mov edi,tableEc
|
||||
call settables
|
||||
mov edi,tableFc
|
||||
call settables
|
||||
mov edi,tableGc
|
||||
call settables
|
||||
mov edi,tableHc
|
||||
call settables
|
||||
|
||||
; set proper functions
|
||||
mov edi,tableAc ; Table addresses (M:0,X:0,D:0)
|
||||
call settablem16
|
||||
mov edi,tableAc
|
||||
call settablex16
|
||||
|
||||
mov edi,tableBc ; Table addresses (M:1,X:0,D:0)
|
||||
call settablex16
|
||||
|
||||
mov edi,tableCc ; Table addresses (M:0,X:1,D:0)
|
||||
call settablem16
|
||||
|
||||
mov edi,tableEc ; Table addresses (M:0,X:0,D:1)
|
||||
call settablem16
|
||||
mov edi,tableEc
|
||||
call settableDm16
|
||||
mov edi,tableEc
|
||||
call settablex16
|
||||
|
||||
mov edi,tableFc ; Table addresses (M:1,X:0,D:1)
|
||||
call settablex16
|
||||
mov edi,tableFc
|
||||
call settableDm8
|
||||
|
||||
mov edi,tableGc ; Table addresses (M:0,X:1,D:1)
|
||||
call settablem16
|
||||
mov edi,tableGc
|
||||
call settableDm16
|
||||
|
||||
mov edi,tableHc ; Table addresses (M:1,X:1,D:1)
|
||||
call settableDm8
|
||||
pop es
|
||||
ret
|
||||
|
||||
eopINVALID
|
||||
ret
|
||||
|
||||
;*******************************************************
|
||||
; Set Tables Sets the opcode tables according to EDI
|
||||
;*******************************************************
|
||||
; This function sets all the non-multiple entries
|
||||
settables:
|
||||
;row 0
|
||||
mov dword[edi+00h*4],COp00
|
||||
mov dword[edi+01h*4],COp01m8
|
||||
mov dword[edi+02h*4],COp02
|
||||
mov dword[edi+03h*4],COp03m8
|
||||
mov dword[edi+04h*4],COp04m8
|
||||
mov dword[edi+05h*4],COp05m8
|
||||
mov dword[edi+06h*4],COp06m8
|
||||
mov dword[edi+07h*4],COp07m8
|
||||
mov dword[edi+08h*4],COp08
|
||||
mov dword[edi+09h*4],COp09m8
|
||||
mov dword[edi+0Ah*4],COp0Am8
|
||||
mov dword[edi+0Bh*4],COp0B
|
||||
mov dword[edi+0Ch*4],COp0Cm8
|
||||
mov dword[edi+0Dh*4],COp0Dm8
|
||||
mov dword[edi+0Eh*4],COp0Em8
|
||||
mov dword[edi+0Fh*4],COp0Fm8
|
||||
mov dword[edi+10h*4],COp10
|
||||
mov dword[edi+11h*4],COp11m8
|
||||
mov dword[edi+12h*4],COp12m8
|
||||
mov dword[edi+13h*4],COp13m8
|
||||
mov dword[edi+14h*4],COp14m8
|
||||
mov dword[edi+15h*4],COp15m8
|
||||
mov dword[edi+16h*4],COp16m8
|
||||
mov dword[edi+17h*4],COp17m8
|
||||
mov dword[edi+18h*4],COp18
|
||||
mov dword[edi+19h*4],COp19m8
|
||||
mov dword[edi+1Ah*4],COp1Am8
|
||||
mov dword[edi+1Bh*4],COp1B
|
||||
mov dword[edi+1Ch*4],COp1Cm8
|
||||
mov dword[edi+1Dh*4],COp1Dm8
|
||||
mov dword[edi+1Eh*4],COp1Em8
|
||||
mov dword[edi+1Fh*4],COp1Fm8
|
||||
mov dword[edi+20h*4],COp20
|
||||
mov dword[edi+21h*4],COp21m8
|
||||
mov dword[edi+22h*4],COp22
|
||||
mov dword[edi+23h*4],COp23m8
|
||||
mov dword[edi+24h*4],COp24m8
|
||||
mov dword[edi+25h*4],COp25m8
|
||||
mov dword[edi+26h*4],COp26m8
|
||||
mov dword[edi+27h*4],COp27m8
|
||||
mov dword[edi+28h*4],COp28
|
||||
mov dword[edi+29h*4],COp29m8
|
||||
mov dword[edi+2Ah*4],COp2Am8
|
||||
mov dword[edi+2Bh*4],COp2B
|
||||
mov dword[edi+2Ch*4],COp2Cm8
|
||||
mov dword[edi+2Dh*4],COp2Dm8
|
||||
mov dword[edi+2Eh*4],COp2Em8
|
||||
mov dword[edi+2Fh*4],COp2Fm8
|
||||
mov dword[edi+30h*4],COp30
|
||||
mov dword[edi+31h*4],COp31m8
|
||||
mov dword[edi+32h*4],COp32m8
|
||||
mov dword[edi+33h*4],COp33m8
|
||||
mov dword[edi+34h*4],COp34m8
|
||||
mov dword[edi+35h*4],COp35m8
|
||||
mov dword[edi+36h*4],COp36m8
|
||||
mov dword[edi+37h*4],COp37m8
|
||||
mov dword[edi+38h*4],COp38
|
||||
mov dword[edi+39h*4],COp39m8
|
||||
mov dword[edi+3Ah*4],COp3Am8
|
||||
mov dword[edi+3Bh*4],COp3B
|
||||
mov dword[edi+3Ch*4],COp3Cm8
|
||||
mov dword[edi+3Dh*4],COp3Dm8
|
||||
mov dword[edi+3Eh*4],COp3Em8
|
||||
mov dword[edi+3Fh*4],COp3Fm8
|
||||
mov dword[edi+40h*4],COp40
|
||||
mov dword[edi+41h*4],COp41m8
|
||||
mov dword[edi+42h*4],COp42
|
||||
mov dword[edi+43h*4],COp43m8
|
||||
mov dword[edi+44h*4],COp44
|
||||
mov dword[edi+45h*4],COp45m8
|
||||
mov dword[edi+46h*4],COp46m8
|
||||
mov dword[edi+47h*4],COp47m8
|
||||
mov dword[edi+48h*4],COp48m8
|
||||
mov dword[edi+49h*4],COp49m8
|
||||
mov dword[edi+4Ah*4],COp4Am8
|
||||
mov dword[edi+4Bh*4],COp4B
|
||||
mov dword[edi+4Ch*4],COp4C
|
||||
mov dword[edi+4Dh*4],COp4Dm8
|
||||
mov dword[edi+4Eh*4],COp4Em8
|
||||
mov dword[edi+4Fh*4],COp4Fm8
|
||||
mov dword[edi+50h*4],COp50
|
||||
mov dword[edi+51h*4],COp51m8
|
||||
mov dword[edi+52h*4],COp52m8
|
||||
mov dword[edi+53h*4],COp53m8
|
||||
mov dword[edi+54h*4],COp54
|
||||
mov dword[edi+55h*4],COp55m8
|
||||
mov dword[edi+56h*4],COp56m8
|
||||
mov dword[edi+57h*4],COp57m8
|
||||
mov dword[edi+58h*4],COp58
|
||||
mov dword[edi+59h*4],COp59m8
|
||||
mov dword[edi+5Ah*4],COp5Ax8
|
||||
mov dword[edi+5Bh*4],COp5B
|
||||
mov dword[edi+5Ch*4],COp5C
|
||||
mov dword[edi+5Dh*4],COp5Dm8
|
||||
mov dword[edi+5Eh*4],COp5Em8
|
||||
mov dword[edi+5Fh*4],COp5Fm8
|
||||
mov dword[edi+60h*4],COp60
|
||||
mov dword[edi+61h*4],COp61m8nd
|
||||
mov dword[edi+62h*4],COp62
|
||||
mov dword[edi+63h*4],COp63m8nd
|
||||
mov dword[edi+64h*4],COp64m8
|
||||
mov dword[edi+65h*4],COp65m8nd
|
||||
mov dword[edi+66h*4],COp66m8
|
||||
mov dword[edi+67h*4],COp67m8nd
|
||||
mov dword[edi+68h*4],COp68m8
|
||||
mov dword[edi+69h*4],COp69m8nd
|
||||
mov dword[edi+6Ah*4],COp6Am8
|
||||
mov dword[edi+6Bh*4],COp6B
|
||||
mov dword[edi+6Ch*4],COp6C
|
||||
mov dword[edi+6Dh*4],COp6Dm8nd
|
||||
mov dword[edi+6Eh*4],COp6Em8
|
||||
mov dword[edi+6Fh*4],COp6Fm8nd
|
||||
mov dword[edi+70h*4],COp70
|
||||
mov dword[edi+71h*4],COp71m8nd
|
||||
mov dword[edi+72h*4],COp72m8nd
|
||||
mov dword[edi+73h*4],COp73m8nd
|
||||
mov dword[edi+74h*4],COp74m8
|
||||
mov dword[edi+75h*4],COp75m8nd
|
||||
mov dword[edi+76h*4],COp76m8
|
||||
mov dword[edi+77h*4],COp77m8nd
|
||||
mov dword[edi+78h*4],COp78
|
||||
mov dword[edi+79h*4],COp79m8nd
|
||||
mov dword[edi+7Ah*4],COp7Ax8
|
||||
mov dword[edi+7Bh*4],COp7B
|
||||
mov dword[edi+7Ch*4],COp7C
|
||||
mov dword[edi+7Dh*4],COp7Dm8nd
|
||||
mov dword[edi+7Eh*4],COp7Em8
|
||||
mov dword[edi+7Fh*4],COp7Fm8nd
|
||||
mov dword[edi+80h*4],COp80
|
||||
mov dword[edi+81h*4],COp81m8
|
||||
mov dword[edi+82h*4],COp82
|
||||
mov dword[edi+83h*4],COp83m8
|
||||
mov dword[edi+84h*4],COp84x8
|
||||
mov dword[edi+85h*4],COp85m8
|
||||
mov dword[edi+86h*4],COp86x8
|
||||
mov dword[edi+87h*4],COp87m8
|
||||
mov dword[edi+88h*4],COp88x8
|
||||
mov dword[edi+89h*4],COp89m8
|
||||
mov dword[edi+8Ah*4],COp8Am8
|
||||
mov dword[edi+8Bh*4],COp8B
|
||||
mov dword[edi+8Ch*4],COp8Cx8
|
||||
mov dword[edi+8Dh*4],COp8Dm8
|
||||
mov dword[edi+8Eh*4],COp8Ex8
|
||||
mov dword[edi+8Fh*4],COp8Fm8
|
||||
mov dword[edi+90h*4],COp90
|
||||
mov dword[edi+91h*4],COp91m8
|
||||
mov dword[edi+92h*4],COp92m8
|
||||
mov dword[edi+93h*4],COp93m8
|
||||
mov dword[edi+94h*4],COp94x8
|
||||
mov dword[edi+95h*4],COp95m8
|
||||
mov dword[edi+96h*4],COp96x8
|
||||
mov dword[edi+97h*4],COp97m8
|
||||
mov dword[edi+98h*4],COp98m8
|
||||
mov dword[edi+99h*4],COp99m8
|
||||
mov dword[edi+9Ah*4],COp9A
|
||||
mov dword[edi+9Bh*4],COp9Bx8
|
||||
mov dword[edi+9Ch*4],COp9Cm8
|
||||
mov dword[edi+9Dh*4],COp9Dm8
|
||||
mov dword[edi+9Eh*4],COp9Em8
|
||||
mov dword[edi+9Fh*4],COp9Fm8
|
||||
mov dword[edi+0A0h*4],COpA0x8
|
||||
mov dword[edi+0A1h*4],COpA1m8
|
||||
mov dword[edi+0A2h*4],COpA2x8
|
||||
mov dword[edi+0A3h*4],COpA3m8
|
||||
mov dword[edi+0A4h*4],COpA4x8
|
||||
mov dword[edi+0A5h*4],COpA5m8
|
||||
mov dword[edi+0A6h*4],COpA6x8
|
||||
mov dword[edi+0A7h*4],COpA7m8
|
||||
mov dword[edi+0A8h*4],COpA8x8
|
||||
mov dword[edi+0A9h*4],COpA9m8
|
||||
mov dword[edi+0AAh*4],COpAAx8
|
||||
mov dword[edi+0ABh*4],COpAB
|
||||
mov dword[edi+0ACh*4],COpACx8
|
||||
mov dword[edi+0ADh*4],COpADm8
|
||||
mov dword[edi+0AEh*4],COpAEx8
|
||||
mov dword[edi+0AFh*4],COpAFm8
|
||||
mov dword[edi+0B0h*4],COpB0
|
||||
mov dword[edi+0B1h*4],COpB1m8
|
||||
mov dword[edi+0B2h*4],COpB2m8
|
||||
mov dword[edi+0B3h*4],COpB3m8
|
||||
mov dword[edi+0B4h*4],COpB4x8
|
||||
mov dword[edi+0B5h*4],COpB5m8
|
||||
mov dword[edi+0B6h*4],COpB6x8
|
||||
mov dword[edi+0B7h*4],COpB7m8
|
||||
mov dword[edi+0B8h*4],COpB8
|
||||
mov dword[edi+0B9h*4],COpB9m8
|
||||
mov dword[edi+0BAh*4],COpBAx8
|
||||
mov dword[edi+0BBh*4],COpBBx8
|
||||
mov dword[edi+0BCh*4],COpBCx8
|
||||
mov dword[edi+0BDh*4],COpBDm8
|
||||
mov dword[edi+0BEh*4],COpBEx8
|
||||
mov dword[edi+0BFh*4],COpBFm8
|
||||
mov dword[edi+0C0h*4],COpC0x8
|
||||
mov dword[edi+0C1h*4],COpC1m8
|
||||
mov dword[edi+0C2h*4],COpC2
|
||||
mov dword[edi+0C3h*4],COpC3m8
|
||||
mov dword[edi+0C4h*4],COpC4x8
|
||||
mov dword[edi+0C5h*4],COpC5m8
|
||||
mov dword[edi+0C6h*4],COpC6m8
|
||||
mov dword[edi+0C7h*4],COpC7m8
|
||||
mov dword[edi+0C8h*4],COpC8x8
|
||||
mov dword[edi+0C9h*4],COpC9m8
|
||||
mov dword[edi+0CAh*4],COpCAx8
|
||||
mov dword[edi+0CBh*4],COpCB
|
||||
mov dword[edi+0CCh*4],COpCCx8
|
||||
mov dword[edi+0CDh*4],COpCDm8
|
||||
mov dword[edi+0CEh*4],COpCEm8
|
||||
mov dword[edi+0CFh*4],COpCFm8
|
||||
mov dword[edi+0D0h*4],COpD0
|
||||
mov dword[edi+0D1h*4],COpD1m8
|
||||
mov dword[edi+0D2h*4],COpD2m8
|
||||
mov dword[edi+0D3h*4],COpD3m8
|
||||
mov dword[edi+0D4h*4],COpD4
|
||||
mov dword[edi+0D5h*4],COpD5m8
|
||||
mov dword[edi+0D6h*4],COpD6m8
|
||||
mov dword[edi+0D7h*4],COpD7m8
|
||||
mov dword[edi+0D8h*4],COpD8
|
||||
mov dword[edi+0D9h*4],COpD9m8
|
||||
mov dword[edi+0DAh*4],COpDAx8
|
||||
mov dword[edi+0DBh*4],COpDB
|
||||
mov dword[edi+0DCh*4],COpDC
|
||||
mov dword[edi+0DDh*4],COpDDm8
|
||||
mov dword[edi+0DEh*4],COpDEm8
|
||||
mov dword[edi+0DFh*4],COpDFm8
|
||||
mov dword[edi+0E0h*4],COpE0x8
|
||||
mov dword[edi+0E1h*4],COpE1m8nd
|
||||
mov dword[edi+0E2h*4],COpE2
|
||||
mov dword[edi+0E3h*4],COpE3m8nd
|
||||
mov dword[edi+0E4h*4],COpE4x8
|
||||
mov dword[edi+0E5h*4],COpE5m8nd
|
||||
mov dword[edi+0E6h*4],COpE6m8
|
||||
mov dword[edi+0E7h*4],COpE7m8nd
|
||||
mov dword[edi+0E8h*4],COpE8x8
|
||||
mov dword[edi+0E9h*4],COpE9m8nd
|
||||
mov dword[edi+0EAh*4],COpEA
|
||||
mov dword[edi+0EBh*4],COpEB
|
||||
mov dword[edi+0ECh*4],COpECx8
|
||||
mov dword[edi+0EDh*4],COpEDm8nd
|
||||
mov dword[edi+0EEh*4],COpEEm8
|
||||
mov dword[edi+0EFh*4],COpEFm8nd
|
||||
mov dword[edi+0F0h*4],COpF0
|
||||
mov dword[edi+0F1h*4],COpF1m8nd
|
||||
mov dword[edi+0F2h*4],COpF2m8nd
|
||||
mov dword[edi+0F3h*4],COpF3m8nd
|
||||
mov dword[edi+0F4h*4],COpF4
|
||||
mov dword[edi+0F5h*4],COpF5m8nd
|
||||
mov dword[edi+0F6h*4],COpF6m8
|
||||
mov dword[edi+0F7h*4],COpF7m8nd
|
||||
mov dword[edi+0F8h*4],COpF8
|
||||
mov dword[edi+0F9h*4],COpF9m8nd
|
||||
mov dword[edi+0FAh*4],COpFAx8
|
||||
mov dword[edi+0FBh*4],COpFB
|
||||
mov dword[edi+0FCh*4],COpFC
|
||||
mov dword[edi+0FDh*4],COpFDm8nd
|
||||
mov dword[edi+0FEh*4],COpFEm8
|
||||
mov dword[edi+0FFh*4],COpFFm8nd
|
||||
ret
|
||||
|
||||
settablem16:
|
||||
mov dword[edi+01h*4],COp01m16
|
||||
mov dword[edi+03h*4],COp03m16
|
||||
mov dword[edi+04h*4],COp04m16
|
||||
mov dword[edi+05h*4],COp05m16
|
||||
mov dword[edi+06h*4],COp06m16
|
||||
mov dword[edi+07h*4],COp07m16
|
||||
mov dword[edi+09h*4],COp09m16
|
||||
mov dword[edi+0Ah*4],COp0Am16
|
||||
mov dword[edi+0Ch*4],COp0Cm16
|
||||
mov dword[edi+0Dh*4],COp0Dm16
|
||||
mov dword[edi+0Eh*4],COp0Em16
|
||||
mov dword[edi+0Fh*4],COp0Fm16
|
||||
mov dword[edi+11h*4],COp11m16
|
||||
mov dword[edi+12h*4],COp12m16
|
||||
mov dword[edi+13h*4],COp13m16
|
||||
mov dword[edi+14h*4],COp14m16
|
||||
mov dword[edi+15h*4],COp15m16
|
||||
mov dword[edi+16h*4],COp16m16
|
||||
mov dword[edi+17h*4],COp17m16
|
||||
mov dword[edi+19h*4],COp19m16
|
||||
mov dword[edi+1Ah*4],COp1Am16
|
||||
mov dword[edi+1Ch*4],COp1Cm16
|
||||
mov dword[edi+1Dh*4],COp1Dm16
|
||||
mov dword[edi+1Eh*4],COp1Em16
|
||||
mov dword[edi+1Fh*4],COp1Fm16
|
||||
mov dword[edi+21h*4],COp21m16
|
||||
mov dword[edi+23h*4],COp23m16
|
||||
mov dword[edi+24h*4],COp24m16
|
||||
mov dword[edi+25h*4],COp25m16
|
||||
mov dword[edi+26h*4],COp26m16
|
||||
mov dword[edi+27h*4],COp27m16
|
||||
mov dword[edi+29h*4],COp29m16
|
||||
mov dword[edi+2Ah*4],COp2Am16
|
||||
mov dword[edi+2Ch*4],COp2Cm16
|
||||
mov dword[edi+2Dh*4],COp2Dm16
|
||||
mov dword[edi+2Eh*4],COp2Em16
|
||||
mov dword[edi+2Fh*4],COp2Fm16
|
||||
mov dword[edi+31h*4],COp31m16
|
||||
mov dword[edi+32h*4],COp32m16
|
||||
mov dword[edi+33h*4],COp33m16
|
||||
mov dword[edi+34h*4],COp34m16
|
||||
mov dword[edi+35h*4],COp35m16
|
||||
mov dword[edi+36h*4],COp36m16
|
||||
mov dword[edi+37h*4],COp37m16
|
||||
mov dword[edi+39h*4],COp39m16
|
||||
mov dword[edi+3Ah*4],COp3Am16
|
||||
mov dword[edi+3Ch*4],COp3Cm16
|
||||
mov dword[edi+3Dh*4],COp3Dm16
|
||||
mov dword[edi+3Eh*4],COp3Em16
|
||||
mov dword[edi+3Fh*4],COp3Fm16
|
||||
mov dword[edi+41h*4],COp41m16
|
||||
mov dword[edi+43h*4],COp43m16
|
||||
mov dword[edi+45h*4],COp45m16
|
||||
mov dword[edi+46h*4],COp46m16
|
||||
mov dword[edi+47h*4],COp47m16
|
||||
mov dword[edi+48h*4],COp48m16
|
||||
mov dword[edi+49h*4],COp49m16
|
||||
mov dword[edi+4Ah*4],COp4Am16
|
||||
mov dword[edi+4Dh*4],COp4Dm16
|
||||
mov dword[edi+4Eh*4],COp4Em16
|
||||
mov dword[edi+4Fh*4],COp4Fm16
|
||||
mov dword[edi+51h*4],COp51m16
|
||||
mov dword[edi+52h*4],COp52m16
|
||||
mov dword[edi+53h*4],COp53m16
|
||||
mov dword[edi+55h*4],COp55m16
|
||||
mov dword[edi+56h*4],COp56m16
|
||||
mov dword[edi+57h*4],COp57m16
|
||||
mov dword[edi+59h*4],COp59m16
|
||||
mov dword[edi+5Dh*4],COp5Dm16
|
||||
mov dword[edi+5Eh*4],COp5Em16
|
||||
mov dword[edi+5Fh*4],COp5Fm16
|
||||
mov dword[edi+61h*4],COp61m16nd
|
||||
mov dword[edi+63h*4],COp63m16nd
|
||||
mov dword[edi+64h*4],COp64m16
|
||||
mov dword[edi+65h*4],COp65m16nd
|
||||
mov dword[edi+66h*4],COp66m16
|
||||
mov dword[edi+67h*4],COp67m16nd
|
||||
mov dword[edi+68h*4],COp68m16
|
||||
mov dword[edi+69h*4],COp69m16nd
|
||||
mov dword[edi+6Ah*4],COp6Am16
|
||||
mov dword[edi+6Dh*4],COp6Dm16nd
|
||||
mov dword[edi+6Eh*4],COp6Em16
|
||||
mov dword[edi+6Fh*4],COp6Fm16nd
|
||||
mov dword[edi+71h*4],COp71m16nd
|
||||
mov dword[edi+72h*4],COp72m16nd
|
||||
mov dword[edi+73h*4],COp73m16nd
|
||||
mov dword[edi+74h*4],COp74m16
|
||||
mov dword[edi+75h*4],COp75m16nd
|
||||
mov dword[edi+76h*4],COp76m16
|
||||
mov dword[edi+77h*4],COp77m16nd
|
||||
mov dword[edi+79h*4],COp79m16nd
|
||||
mov dword[edi+7Dh*4],COp7Dm16nd
|
||||
mov dword[edi+7Eh*4],COp7Em16
|
||||
mov dword[edi+7Fh*4],COp7Fm16nd
|
||||
mov dword[edi+81h*4],COp81m16
|
||||
mov dword[edi+83h*4],COp83m16
|
||||
mov dword[edi+85h*4],COp85m16
|
||||
mov dword[edi+87h*4],COp87m16
|
||||
mov dword[edi+89h*4],COp89m16
|
||||
mov dword[edi+8Ah*4],COp8Am16
|
||||
mov dword[edi+8Dh*4],COp8Dm16
|
||||
mov dword[edi+8Fh*4],COp8Fm16
|
||||
mov dword[edi+91h*4],COp91m16
|
||||
mov dword[edi+92h*4],COp92m16
|
||||
mov dword[edi+93h*4],COp93m16
|
||||
mov dword[edi+95h*4],COp95m16
|
||||
mov dword[edi+97h*4],COp97m16
|
||||
mov dword[edi+98h*4],COp98m16
|
||||
mov dword[edi+99h*4],COp99m16
|
||||
mov dword[edi+9Ch*4],COp9Cm16
|
||||
mov dword[edi+9Dh*4],COp9Dm16
|
||||
mov dword[edi+9Eh*4],COp9Em16
|
||||
mov dword[edi+9Fh*4],COp9Fm16
|
||||
mov dword[edi+0A1h*4],COpA1m16
|
||||
mov dword[edi+0A3h*4],COpA3m16
|
||||
mov dword[edi+0A5h*4],COpA5m16
|
||||
mov dword[edi+0A7h*4],COpA7m16
|
||||
mov dword[edi+0A9h*4],COpA9m16
|
||||
mov dword[edi+0ADh*4],COpADm16
|
||||
mov dword[edi+0AFh*4],COpAFm16
|
||||
mov dword[edi+0B1h*4],COpB1m16
|
||||
mov dword[edi+0B2h*4],COpB2m16
|
||||
mov dword[edi+0B3h*4],COpB3m16
|
||||
mov dword[edi+0B5h*4],COpB5m16
|
||||
mov dword[edi+0B7h*4],COpB7m16
|
||||
mov dword[edi+0B9h*4],COpB9m16
|
||||
mov dword[edi+0BDh*4],COpBDm16
|
||||
mov dword[edi+0BFh*4],COpBFm16
|
||||
mov dword[edi+0C1h*4],COpC1m16
|
||||
mov dword[edi+0C3h*4],COpC3m16
|
||||
mov dword[edi+0C5h*4],COpC5m16
|
||||
mov dword[edi+0C6h*4],COpC6m16
|
||||
mov dword[edi+0C7h*4],COpC7m16
|
||||
mov dword[edi+0C9h*4],COpC9m16
|
||||
mov dword[edi+0CDh*4],COpCDm16
|
||||
mov dword[edi+0CEh*4],COpCEm16
|
||||
mov dword[edi+0CFh*4],COpCFm16
|
||||
mov dword[edi+0D1h*4],COpD1m16
|
||||
mov dword[edi+0D2h*4],COpD2m16
|
||||
mov dword[edi+0D3h*4],COpD3m16
|
||||
mov dword[edi+0D5h*4],COpD5m16
|
||||
mov dword[edi+0D6h*4],COpD6m16
|
||||
mov dword[edi+0D7h*4],COpD7m16
|
||||
mov dword[edi+0D9h*4],COpD9m16
|
||||
mov dword[edi+0DDh*4],COpDDm16
|
||||
mov dword[edi+0DEh*4],COpDEm16
|
||||
mov dword[edi+0DFh*4],COpDFm16
|
||||
mov dword[edi+0E1h*4],COpE1m16nd
|
||||
mov dword[edi+0E3h*4],COpE3m16nd
|
||||
mov dword[edi+0E5h*4],COpE5m16nd
|
||||
mov dword[edi+0E6h*4],COpE6m16
|
||||
mov dword[edi+0E7h*4],COpE7m16nd
|
||||
mov dword[edi+0E9h*4],COpE9m16nd
|
||||
mov dword[edi+0EDh*4],COpEDm16nd
|
||||
mov dword[edi+0EEh*4],COpEEm16
|
||||
mov dword[edi+0EFh*4],COpEFm16nd
|
||||
mov dword[edi+0F1h*4],COpF1m16nd
|
||||
mov dword[edi+0F2h*4],COpF2m16nd
|
||||
mov dword[edi+0F3h*4],COpF3m16nd
|
||||
mov dword[edi+0F5h*4],COpF5m16nd
|
||||
mov dword[edi+0F6h*4],COpF6m16
|
||||
mov dword[edi+0F7h*4],COpF7m16nd
|
||||
mov dword[edi+0F9h*4],COpF9m16nd
|
||||
mov dword[edi+0FDh*4],COpFDm16nd
|
||||
mov dword[edi+0FEh*4],COpFEm16
|
||||
mov dword[edi+0FFh*4],COpFFm16nd
|
||||
ret
|
||||
|
||||
settablex16:
|
||||
mov dword[edi+5Ah*4],COp5Ax16
|
||||
mov dword[edi+7Ah*4],COp7Ax16
|
||||
mov dword[edi+84h*4],COp84x16
|
||||
mov dword[edi+86h*4],COp86x16
|
||||
mov dword[edi+88h*4],COp88x16
|
||||
mov dword[edi+8Ch*4],COp8Cx16
|
||||
mov dword[edi+8Eh*4],COp8Ex16
|
||||
mov dword[edi+94h*4],COp94x16
|
||||
mov dword[edi+96h*4],COp96x16
|
||||
mov dword[edi+9Bh*4],COp9Bx16
|
||||
mov dword[edi+0A0h*4],COpA0x16
|
||||
mov dword[edi+0A2h*4],COpA2x16
|
||||
mov dword[edi+0A4h*4],COpA4x16
|
||||
mov dword[edi+0A6h*4],COpA6x16
|
||||
mov dword[edi+0A8h*4],COpA8x16
|
||||
mov dword[edi+0AAh*4],COpAAx16
|
||||
mov dword[edi+0ACh*4],COpACx16
|
||||
mov dword[edi+0AEh*4],COpAEx16
|
||||
mov dword[edi+0B4h*4],COpB4x16
|
||||
mov dword[edi+0B6h*4],COpB6x16
|
||||
mov dword[edi+0BAh*4],COpBAx16
|
||||
mov dword[edi+0BBh*4],COpBBx16
|
||||
mov dword[edi+0BCh*4],COpBCx16
|
||||
mov dword[edi+0BEh*4],COpBEx16
|
||||
mov dword[edi+0C0h*4],COpC0x16
|
||||
mov dword[edi+0C4h*4],COpC4x16
|
||||
mov dword[edi+0C8h*4],COpC8x16
|
||||
mov dword[edi+0CAh*4],COpCAx16
|
||||
mov dword[edi+0CCh*4],COpCCx16
|
||||
mov dword[edi+0DAh*4],COpDAx16
|
||||
mov dword[edi+0E0h*4],COpE0x16
|
||||
mov dword[edi+0E4h*4],COpE4x16
|
||||
mov dword[edi+0E8h*4],COpE8x16
|
||||
mov dword[edi+0ECh*4],COpECx16
|
||||
mov dword[edi+0FAh*4],COpFAx16
|
||||
ret
|
||||
|
||||
settableDm8:
|
||||
mov dword[edi+61h*4],COp61m8d
|
||||
mov dword[edi+63h*4],COp63m8d
|
||||
mov dword[edi+65h*4],COp65m8d
|
||||
mov dword[edi+67h*4],COp67m8d
|
||||
mov dword[edi+69h*4],COp69m8d
|
||||
mov dword[edi+6Dh*4],COp6Dm8d
|
||||
mov dword[edi+6Fh*4],COp6Fm8d
|
||||
mov dword[edi+71h*4],COp71m8d
|
||||
mov dword[edi+72h*4],COp72m8d
|
||||
mov dword[edi+73h*4],COp73m8d
|
||||
mov dword[edi+75h*4],COp75m8d
|
||||
mov dword[edi+77h*4],COp77m8d
|
||||
mov dword[edi+79h*4],COp79m8d
|
||||
mov dword[edi+7Dh*4],COp7Dm8d
|
||||
mov dword[edi+7Fh*4],COp7Fm8d
|
||||
mov dword[edi+0E1h*4],COpE1m8d
|
||||
mov dword[edi+0E3h*4],COpE3m8d
|
||||
mov dword[edi+0E5h*4],COpE5m8d
|
||||
mov dword[edi+0E7h*4],COpE7m8d
|
||||
mov dword[edi+0E9h*4],COpE9m8d
|
||||
mov dword[edi+0EDh*4],COpEDm8d
|
||||
mov dword[edi+0EFh*4],COpEFm8d
|
||||
mov dword[edi+0F1h*4],COpF1m8d
|
||||
mov dword[edi+0F2h*4],COpF2m8d
|
||||
mov dword[edi+0F3h*4],COpF3m8d
|
||||
mov dword[edi+0F5h*4],COpF5m8d
|
||||
mov dword[edi+0F7h*4],COpF7m8d
|
||||
mov dword[edi+0F9h*4],COpF9m8d
|
||||
mov dword[edi+0FDh*4],COpFDm8d
|
||||
mov dword[edi+0FFh*4],COpFFm8d
|
||||
ret
|
||||
|
||||
settableDm16:
|
||||
mov dword[edi+61h*4],COp61m16d
|
||||
mov dword[edi+63h*4],COp63m16d
|
||||
mov dword[edi+65h*4],COp65m16d
|
||||
mov dword[edi+67h*4],COp67m16d
|
||||
mov dword[edi+69h*4],COp69m16d
|
||||
mov dword[edi+6Dh*4],COp6Dm16d
|
||||
mov dword[edi+6Fh*4],COp6Fm16d
|
||||
mov dword[edi+71h*4],COp71m16d
|
||||
mov dword[edi+72h*4],COp72m16d
|
||||
mov dword[edi+73h*4],COp73m16d
|
||||
mov dword[edi+75h*4],COp75m16d
|
||||
mov dword[edi+77h*4],COp77m16d
|
||||
mov dword[edi+79h*4],COp79m16d
|
||||
mov dword[edi+7Dh*4],COp7Dm16d
|
||||
mov dword[edi+7Fh*4],COp7Fm16d
|
||||
mov dword[edi+0E1h*4],COpE1m16d
|
||||
mov dword[edi+0E3h*4],COpE3m16d
|
||||
mov dword[edi+0E5h*4],COpE5m16d
|
||||
mov dword[edi+0E7h*4],COpE7m16d
|
||||
mov dword[edi+0E9h*4],COpE9m16d
|
||||
mov dword[edi+0EDh*4],COpEDm16d
|
||||
mov dword[edi+0EFh*4],COpEFm16d
|
||||
mov dword[edi+0F1h*4],COpF1m16d
|
||||
mov dword[edi+0F2h*4],COpF2m16d
|
||||
mov dword[edi+0F3h*4],COpF3m16d
|
||||
mov dword[edi+0F5h*4],COpF5m16d
|
||||
mov dword[edi+0F7h*4],COpF7m16d
|
||||
mov dword[edi+0F9h*4],COpF9m16d
|
||||
mov dword[edi+0FDh*4],COpFDm16d
|
||||
mov dword[edi+0FFh*4],COpFFm16d
|
||||
ret
|
||||
|
||||
|
||||
Reference in New Issue
Block a user