📄 s65816d.inc
字号:
mov al,[xpc+1] call membank0w8 dec cx or cx,word[stackor] mov al,[xpc] call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx xor eax,eax xor bh,bh mov ax,[esi] mov bl,[esi+2] mov [xpc],ax mov [SA1xpb],bl test eax,8000h jz .loweraddr mov esi,[snesmmap+ebx*4] mov [initaddrl],esi add esi,eax endloop.loweraddr cmp ebx,0 jne .notupper cmp eax,2000h ja .upperbank.notupper mov esi,[snesmap2+ebx*4] mov [initaddrl],esi add esi,eax endloop.upperbank mov esi,IRAM sub esi,3000h mov [initaddrl],esi add esi,eax endloop%endmacro%macro JSRMacro20 0 mov ebx,esi sub ebx,[initaddrl] inc bx mov [xpc],bx mov cx,[SA1xs] mov al,[xpc+1] call membank0w8 dec cx or cx,word[stackor] mov al,[xpc] call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx xor eax,eax mov ax,[esi] xor bh,bh mov [xpc],ax mov bl,[SA1xpb] test eax,8000h jz .loweraddr mov esi,[snesmmap+ebx*4] mov [initaddrl],esi add esi,eax endloop.loweraddr mov esi,[snesmap2+ebx*4] cmp eax,4300h jae .upperlower mov [initaddrl],esi add esi,eax endloop.upperlower mov [initaddrl],esi add esi,eax endloop%endmacro%macro JSRMacroFC 0 mov ebx,esi sub ebx,[initaddrl] inc bx mov [xpc],bx mov cx,[SA1xs] mov al,[xpc+1] call membank0w8 dec cx or cx,word[stackor] mov al,[xpc] call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx xor eax,eax xor bh,bh mov cx,[esi] mov bl,[SA1xpb] add cx,[SA1xx] call dword near [memtabler16+ebx*4] mov [xpc],ax mov bl,[SA1xpb] test eax,8000h jz .loweraddr mov esi,[snesmmap+ebx*4] mov [initaddrl],esi add esi,eax endloop.loweraddr mov esi,[snesmap2+ebx*4] mov [initaddrl],esi add esi,eax endloop%endmacro%macro LDAMacro8b 0 mov dword[Sflagnz],0 mov [SA1xa],al mov [Sflagnz+1],al endloop%endmacro%macro LDAMacro16b 0 mov [SA1xa],ax flagsetnz16b endloop%endmacro%macro LDXMacro8b 0 mov dword[Sflagnz],0 mov [SA1xx],al mov [Sflagnz+1],al endloop%endmacro%macro LDXMacro16b 0 mov [SA1xx],ax flagsetnz16b endloop%endmacro%macro LDYMacro8b 0 mov dword[Sflagnz],0 mov [SA1xy],al mov [Sflagnz+1],al endloop%endmacro%macro LDYMacro16b 0 mov [SA1xy],ax flagsetnz16b endloop%endmacro%macro LSRMacro8b 0 shr al,1 flagsetnzc8b%endmacro%macro LSRMacro16b 0 shr ax,1 flagsetnzc%endmacro%macro MVNMacro 0 mov ax,[esi] mov [SA1xdb],al mov bl,ah mov cx,[SA1xx] call dword near [memtabler8+ebx*4] mov bl,[SA1xdb] mov cx,[SA1xy] call dword near [memtablew8+ebx*4] test dl,10h jnz .pagezero inc word[SA1xx] inc word[SA1xy] dec word[SA1xa] cmp word[SA1xa],0FFFFh je .endmove dec esi endloop.endmove add esi,2 endloop.pagezero inc byte[SA1xx] inc byte[SA1xy] dec word[SA1xa] cmp word[SA1xa],0FFFFh je .endmove dec esi endloop%endmacro%macro MVPMacro 0 mov ax,[esi] mov [SA1xdb],al mov bl,ah mov cx,[SA1xx] call dword near [memtabler8+ebx*4] mov bl,[SA1xdb] mov cx,[SA1xy] call dword near [memtablew8+ebx*4] test dl,10h jnz .pagezero dec word[SA1xx] dec word[SA1xy] dec word[SA1xa] cmp word[SA1xa],0FFFFh je .endmove dec esi endloop.endmove add esi,2 endloop.pagezero dec byte[SA1xx] dec byte[SA1xy] dec word[SA1xa] cmp word[SA1xa],0FFFFh je .endmove dec esi endloop%endmacro%macro ORAMacro8b 0 or al,[SA1xa] mov dword[Sflagnz],0 mov [SA1xa],al mov [Sflagnz+1],al endloop%endmacro%macro ORAMacro16b 0 or ax,[SA1xa] mov [SA1xa],ax flagsetnz16b%endmacro%macro PUSHMacro8b 1 mov eax,[wramdata] mov cx,[SA1xs] mov al,%1 call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx endloop%endmacro%macro PUSHMacro8bp 0 mov eax,[wramdata] makedl mov cx,[SA1xs] mov al,dl call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx endloop%endmacro%macro PUSHMacro16b 2 mov cx,[SA1xs] mov al,%2 call membank0w8 dec cx or cx,word[stackor] mov al,%1 call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx endloop%endmacro%macro PEAMacro 0 mov cx,[SA1xs] mov al,[esi+1] call membank0w8 dec cx or cx,word[stackor] mov al,[esi] call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx add esi,2 endloop%endmacro%macro PEIMacro 0 xor ah,ah mov al,[esi] mov cx,[SA1xd] inc esi add cx,ax call membank0r16 mov cx,[SA1xs] push eax mov al,ah call membank0w8 pop eax dec cx or cx,word[stackor] call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx endloop%endmacro%macro PERMacro 0 mov bl,[SA1xpb] mov ax,[xpc] test eax,8000h jz .loweraddr mov eax,[snesmmap+ebx*4] mov ebx,esi sub ebx,eax add bx,[esi] mov ax,bx add esi,2 add ax,2 mov cx,[SA1xs] push eax mov al,ah call membank0w8 pop eax dec cx or cx,word[stackor] call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx xor ebx,ebx endloop.loweraddr mov eax,[snesmap2+ebx*4] mov ebx,esi sub ebx,eax add bx,[esi] mov ax,bx add esi,2 add ax,2 mov cx,[SA1xs] push eax mov al,ah call membank0w8 pop eax dec cx or cx,word[stackor] call membank0w8 dec cx or cx,word[stackor] mov [SA1xs],cx xor ebx,ebx endloop%endmacro%macro POPMacro8b 1 mov eax,[wramdata] mov cx,[SA1xs] inc cx and cx,word[stackand] call membank0r8 mov [SA1xs],cx mov %1,al flagsetnz8b endloop%endmacro%macro POPMacro16b 2 mov eax,[wramdata] mov cx,[SA1xs] inc cx and cx,word[stackand] call membank0r8 mov %1,al mov [SA1xs],cx inc cx and cx,word[stackand] call membank0r8 mov %2,al mov [SA1xs],cx mov ah,al mov al,%1 flagsetnz16b%endmacro%macro POPMacro16bd 2 mov eax,[wramdata] mov cx,[SA1xs] inc cx and cx,word[stackand] call membank0r8 mov %1,al mov [SA1xs],cx inc cx and cx,word[stackand] call membank0r8 mov %2,al call SA1UpdateDPage mov [SA1xs],cx mov ah,al mov al,%1 flagsetnz16b%endmacro%macro POPMacroP 0 mov cx,[SA1xs] inc cx and cx,word[stackand] call membank0r8 mov [SA1xs],cx mov dl,al restoredl test byte[xe],01h jnz .emul mov bl,dl mov edi,[SA1tablead+ebx*4] test dl,00010000b jnz .setx endloop.setx mov byte[SA1xx+1],0 mov byte[SA1xy+1],0 endloop.emul or dl,00110000b mov bl,dl mov edi,[SA1tablead+ebx*4] endloop%endmacro%macro REPMacro 0 mov al,[esi] inc esi test al,11000011b jnz .extraflags not al and dl,al test byte[xe],01h jnz .emul mov bl,dl mov edi,[SA1tablead+ebx*4] endloop.emul or dl,00110000b mov bl,dl mov edi,[SA1tablead+ebx*4] endloop.extraflags not al makedl and dl,al restoredl test byte[xe],01h jnz .emul2 mov bl,dl mov edi,[SA1tablead+ebx*4] endloop.emul2 or dl,00110000b mov bl,dl mov edi,[SA1tablead+ebx*4] endloop%endmacro%macro ROLMacro8b 0 mov cl,[Sflagc] add cl,cl rcl al,1 flagsetnzc8b%endmacro%macro ROLMacro16b 0 mov cl,[Sflagc] add cl,cl rcl ax,1 flagsetnzc%endmacro%macro RORMacro8b 0 mov cl,[Sflagc] add cl,cl rcr al,1 flagsetnzc8b%endmacro%macro RORMacro16b 0 mov cl,[Sflagc] add cl,cl rcr ax,1 flagsetnzc%endmacro%macro RTIMacro 0 cmp byte[curexecstate],0 jne .nn xor dh,dh.nn.nodis658162 mov byte[curnmi],0 mov cx,[SA1xs] inc cx and cx,word[stackand] call membank0r8 mov dl,al restoredl inc cx and cx,word[stackand] call membank0r8 mov [xpc],al inc cx and cx,word[stackand] call membank0r8 mov [xpc+1],al inc cx and cx,word[stackand] call membank0r8 mov [SA1xpb],al mov [SA1xs],cx xor bh,bh xor eax,eax mov bl,dl mov edi,[SA1tablead+ebx*4] mov bl,[SA1xpb] mov ax,[xpc] test eax,8000h jz .loweraddr mov esi,[snesmmap+ebx*4] mov [initaddrl],esi add esi,eax test dl,00010000b jnz .setx endloop.loweraddr mov esi,[snesmap2+ebx*4] cmp eax,4300h jae .upperlower mov [initaddrl],esi add esi,eax test dl,00010000b jnz .setx endloop.setx mov byte[SA1xx+1],0 mov byte[SA1xy+1],0 endloop.upperlower cmp dword[memtabler8+ebx*4],regaccessbankr8 je .dma mov [initaddrl],esi add esi,eax test dl,00010000b jnz .setx endloop.dma mov esi,dmadata-4300h mov [initaddrl],esi add esi,eax test dl,00010000b jnz .setx endloop%endmacro%macro RTLMacro 0 mov cx,[SA1xs] inc cx and cx,word[stackand] call membank0r8 mov [xpc],al inc cx and cx,word[stackand] call membank0r8 mov [xpc+1],al inc cx and cx,word[stackand] call membank0r8 mov [SA1xpb],al mov [SA1xs],cx xor bh,bh xor eax,eax inc word[xpc] mov bl,[SA1xpb] mov ax,[xpc] test eax,8000h jz .loweraddr mov esi,[snesmmap+ebx*4] mov [initaddrl],esi add esi,eax endloop.loweraddr mov esi,[snesmap2+ebx*4] mov [initaddrl],esi add esi,eax endloop%endmacro%macro RTSMacro 0 mov cx,[SA1xs] inc cx and cx,word[stackand] call membank0r8 mov [xpc],al inc cx and cx,word[stackand] call membank0r8 mov [xpc+1],al mov [SA1xs],cx xor bh,bh inc word[xpc] xor eax,eax mov ax,[xpc] mov bl,[SA1xpb] test eax,8000h jz .loweraddr mov esi,[snesmmap+ebx*4] mov [initaddrl],esi add esi,eax endloop.loweraddr mov esi,[snesmap2+ebx*4] mov [initaddrl],esi add esi,eax endloop%endmacro%macro SBCMacro8bnd 0 mov cl,[Sflagc] sub cl,1 sbb [SA1xa],al flagsetnvzcs8b endloop%endmacro%macro SBCMacro16bnd 0 mov cl,[Sflagc] sub cl,1 sbb [SA1xa],ax flagsetnvzcs16b endloop%endmacro%macro SBCMacro8bd 0 mov cl,[Sflagc] sub cl,1 mov cl,al mov al,[SA1xa] sbb al,cl das mov [SA1xa],al flagsetnvzcs8b endloop%endmacro%macro SBCMacro16bd 0 mov cl,[Sflagc] sub cl,1 mov cx,ax mov al,[SA1xa] sbb al,cl das mov [SA1xa],al mov al,[SA1xa+1] sbb al,ch das mov [SA1xa+1],al cmc flagsetnvzcd endloop%endmacro%macro SEPMacro 0 mov al,[esi] inc esi test al,11000011b jnz .extraflags or dl,al mov bl,dl mov edi,[SA1tablead+ebx*4] test dl,00010000b jnz .setx endloop.setx mov byte[SA1xx+1],0 mov byte[SA1xy+1],0 endloop.extraflags makedl or dl,al restoredl mov bl,dl mov edi,[SA1tablead+ebx*4] test dl,00010000b jnz .setx2 endloop.setx2 mov byte[SA1xx+1],0 mov byte[SA1xy+1],0 endloop%endmacro%macro STAMacro8b 0 mov al,[SA1xa]%endmacro%macro STAMacro16b 0 mov eax,[SA1xa]%endmacro%macro STXMacro8b 0 mov al,[SA1xx]%endmacro%macro STXMacro16b 0 mov eax,[SA1xx]%endmacro%macro STYMacro8b 0 mov al,[SA1xy]%endmacro%macro STYMacro16b 0 mov eax,[SA1xy]%endmacro%macro WAIMacro 0 cmp byte[intrset],1 jne .notws dec esi endloop.notws test byte[intrset],0FFh jz .waitstate cmp byte[intrset],2 je .stopint dec esi endloop.waitstate mov byte[intrset],1 dec esi endloop.stopint mov byte[intrset],0 endloop%endmacro%macro XCEMacro 0 mov al,[Sflagc] mov dword[Sflagc],0 and al,00000001b test byte[xe],0FFh jz .noemul mov dword[Sflagc],0FFh.noemul mov [xe],al test byte[xe],01h jnz .emul or dl,00100000b mov word[stackand],0FFFFh mov word[stackor],0000h endloop.emul or dl,00110000b mov bl,dl mov edi,[SA1tablead+ebx*4] mov byte[SA1xx+1],0 mov byte[SA1xy+1],0 mov byte[SA1xs+1],1 mov word[stackand],01FFh mov word[stackor],0100h endloop%endmacro
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -