📄 fxemu2.asm
字号:
FETCHPIPE imul bx inc ebp and edx,0FFFFh mov [SfxSignZero],edx mov [edi],edx ; Write Destination shr ax,15 mov [SfxCarry],al CLRFLAGS retNEWSYM FxOp9FA1 ; LMULT 16 bit to 32 bit signed multiplication ; V mov eax,[esi] ; Read Source mov ebx,[SfxR6] FETCHPIPE imul bx and edx,0FFFFh inc ebp mov [edi],edx ; Write Destination mov [SfxR4],ax mov [SfxSignZero],edx shr ax,15 mov [SfxCarry],al CLRFLAGS retNEWSYM FxOpA0 ; IBTRN,#PP immediate byte transfer IBTRN 0NEWSYM FxOpA1 ; IBTRN,#PP immediate byte transfer IBTRN 1NEWSYM FxOpA2 ; IBTRN,#PP immediate byte transfer IBTRN 2NEWSYM FxOpA3 ; IBTRN,#PP immediate byte transfer IBTRN 3NEWSYM FxOpA4 ; IBTRN,#PP immediate byte transfer IBTRN 4NEWSYM FxOpA5 ; IBTRN,#PP immediate byte transfer IBTRN 5NEWSYM FxOpA6 ; IBTRN,#PP immediate byte transfer IBTRN 6NEWSYM FxOpA7 ; IBTRN,#PP immediate byte transfer IBTRN 7NEWSYM FxOpA8 ; IBTRN,#PP immediate byte transfer IBTRN 8NEWSYM FxOpA9 ; IBTRN,#PP immediate byte transfer IBTRN 9NEWSYM FxOpAA ; IBTRN,#PP immediate byte transfer IBTRN 10NEWSYM FxOpAB ; IBTRN,#PP immediate byte transfer IBTRN 11NEWSYM FxOpAC ; IBTRN,#PP immediate byte transfer IBTRN 12NEWSYM FxOpAD ; IBTRN,#PP immediate byte transfer IBTRN 13NEWSYM FxOpAE ; IBTRN,#PP immediate byte transfer movsx eax,byte[ebp] mov cl,[ebp+1] add ebp,2 mov [SfxR0+14*4],ax UpdateR14 CLRFLAGS retNEWSYM FxOpAF ; IBTRN,#PP immediate byte transfer movsx eax,byte[ebp] mov cl,[ebp+1] and eax,0FFFFh mov ebp,[SfxCPB] add ebp,eax CLRFLAGS retNEWSYM FxOpA0A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 0NEWSYM FxOpA1A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 1NEWSYM FxOpA2A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 2NEWSYM FxOpA3A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 3NEWSYM FxOpA4A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 4NEWSYM FxOpA5A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 5NEWSYM FxOpA6A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 6NEWSYM FxOpA7A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 7NEWSYM FxOpA8A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 8NEWSYM FxOpA9A1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 9NEWSYM FxOpAAA1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 10NEWSYM FxOpABA1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 11NEWSYM FxOpACA1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 12NEWSYM FxOpADA1 ; LMS rn,(yy) load word from RAM (short address) LMSRN 13NEWSYM FxOpAEA1 ; LMS rn,(yy) load word from RAM (short address) xor eax,eax mov al,[ebp] add eax,eax inc ebp add eax,[SfxRAMMem] mov cl,[ebp] mov dword [SfxLastRamAdr],eax mov ebx,[eax] ; Read word from ram inc ebp mov [SfxR0+14*4],bx ; Write data UpdateR14 CLRFLAGS retNEWSYM FxOpAFA1 ; LMS rn,(yy) load word from RAM (short address) xor eax,eax mov al,[ebp] add eax,eax inc ebp add eax,[SfxRAMMem] mov cl,[ebp] mov dword [SfxLastRamAdr],eax mov ebx,[eax] ; Read word from ram and ebx,0FFFFh mov ebp,[SfxCPB] add ebp,ebx CLRFLAGS retNEWSYM FxOpA0A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 0NEWSYM FxOpA1A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 1NEWSYM FxOpA2A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 2NEWSYM FxOpA3A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 3NEWSYM FxOpA4A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 4NEWSYM FxOpA5A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 5NEWSYM FxOpA6A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 6NEWSYM FxOpA7A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 7NEWSYM FxOpA8A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 8NEWSYM FxOpA9A2 ; SMS (yy),rn store word in RAM (short address) SMSRN 9NEWSYM FxOpAAA2 ; SMS (yy),rn store word in RAM (short address) SMSRN 10NEWSYM FxOpABA2 ; SMS (yy),rn store word in RAM (short address) SMSRN 11NEWSYM FxOpACA2 ; SMS (yy),rn store word in RAM (short address) SMSRN 12NEWSYM FxOpADA2 ; SMS (yy),rn store word in RAM (short address) SMSRN 13NEWSYM FxOpAEA2 ; SMS (yy),rn store word in RAM (short address) SMSRN 14NEWSYM FxOpAFA2 ; SMS (yy),rn store word in RAM (short address) xor eax,eax mov ebx,ebp sub ebx,[SfxCPB] mov al,[ebp] inc ebp add eax,eax FETCHPIPE add eax,[SfxRAMMem] mov dword [SfxLastRamAdr],eax inc ebp mov [eax],bx ; Write word to ram CLRFLAGS retNEWSYM FxOpB0 ; FROM rn set source register FROMRN 0NEWSYM FxOpB1 ; FROM rn set source register FROMRN 1NEWSYM FxOpB2 ; FROM rn set source register FROMRN 2NEWSYM FxOpB3 ; FROM rn set source register FROMRN 3NEWSYM FxOpB4 ; FROM rn set source register FROMRN 4NEWSYM FxOpB5 ; FROM rn set source register FROMRN 5NEWSYM FxOpB6 ; FROM rn set source register FROMRN 6NEWSYM FxOpB7 ; FROM rn set source register FROMRN 7NEWSYM FxOpB8 ; FROM rn set source register FROMRN 8NEWSYM FxOpB9 ; FROM rn set source register FROMRN 9NEWSYM FxOpBA ; FROM rn set source register FROMRN 10NEWSYM FxOpBB ; FROM rn set source register FROMRN 11NEWSYM FxOpBC ; FROM rn set source register FROMRN 12NEWSYM FxOpBD ; FROM rn set source register FROMRN 13NEWSYM FxOpBE ; FROM rn set source register FROMRN 14NEWSYM FxOpBF ; FROM rn set source register FETCHPIPE mov esi,SfxR0+15*4 inc ebp ; Increase program counter mov eax,ebp sub eax,[SfxCPB] mov [SfxR15],eax call [FxTableb+ecx*4] mov esi,SfxR0 retNEWSYM FxOpC0 ; HIB move high-byte to low-byte ; V mov eax,[esi] ; Read Source FETCHPIPE and eax,0FF00h mov dword [SfxSignZero],eax shr eax,8 inc ebp mov [edi],eax CLRFLAGS retNEWSYM FxOpC1 ; OR rn or rn ORRN 1NEWSYM FxOpC2 ; OR rn or rn ORRN 2NEWSYM FxOpC3 ; OR rn or rn ORRN 3NEWSYM FxOpC4 ; OR rn or rn ORRN 4NEWSYM FxOpC5 ; OR rn or rn ORRN 5NEWSYM FxOpC6 ; OR rn or rn ORRN 6NEWSYM FxOpC7 ; OR rn or rn ORRN 7NEWSYM FxOpC8 ; OR rn or rn ORRN 8NEWSYM FxOpC9 ; OR rn or rn ORRN 9NEWSYM FxOpCA ; OR rn or rn ORRN 10NEWSYM FxOpCB ; OR rn or rn ORRN 11NEWSYM FxOpCC ; OR rn or rn ORRN 12NEWSYM FxOpCD ; OR rn or rn ORRN 13NEWSYM FxOpCE ; OR rn or rn ORRN 14NEWSYM FxOpCF ; OR rn or rn mov eax,[esi] ; Read Source mov ebx,ebp FETCHPIPE sub ebx,[SfxCPB] or eax,ebx inc ebp mov [edi],eax ; Write DREG mov [SfxSignZero],eax CLRFLAGS retNEWSYM FxOpC1A1 ; XOR rn xor rn XORRN 1NEWSYM FxOpC2A1 ; XOR rn xor rn XORRN 2NEWSYM FxOpC3A1 ; XOR rn xor rn XORRN 3NEWSYM FxOpC4A1 ; XOR rn xor rn XORRN 4NEWSYM FxOpC5A1 ; XOR rn xor rn XORRN 5NEWSYM FxOpC6A1 ; XOR rn xor rn XORRN 6NEWSYM FxOpC7A1 ; XOR rn xor rn XORRN 7NEWSYM FxOpC8A1 ; XOR rn xor rn XORRN 8NEWSYM FxOpC9A1 ; XOR rn xor rn XORRN 9NEWSYM FxOpCAA1 ; XOR rn xor rn XORRN 10NEWSYM FxOpCBA1 ; XOR rn xor rn XORRN 11NEWSYM FxOpCCA1 ; XOR rn xor rn XORRN 12NEWSYM FxOpCDA1 ; XOR rn xor rn XORRN 13NEWSYM FxOpCEA1 ; XOR rn xor rn XORRN 14NEWSYM FxOpCFA1 ; XOR rn xor rn FETCHPIPE mov eax,[esi] ; Read Source mov ebx,ebp sub ebx,[SfxCPB] xor eax,ebx inc ebp mov [edi],eax ; Write DREG mov [SfxSignZero],eax CLRFLAGS retNEWSYM FxOpC1A2 ; OR #n OR #n ORI 1NEWSYM FxOpC2A2 ; OR #n OR #n ORI 2NEWSYM FxOpC3A2 ; OR #n OR #n ORI 3NEWSYM FxOpC4A2 ; OR #n OR #n ORI 4NEWSYM FxOpC5A2 ; OR #n OR #n ORI 5NEWSYM FxOpC6A2 ; OR #n OR #n ORI 6NEWSYM FxOpC7A2 ; OR #n OR #n ORI 7NEWSYM FxOpC8A2 ; OR #n OR #n ORI 8NEWSYM FxOpC9A2 ; OR #n OR #n ORI 9NEWSYM FxOpCAA2 ; OR #n OR #n ORI 10NEWSYM FxOpCBA2 ; OR #n OR #n ORI 11NEWSYM FxOpCCA2 ; OR #n OR #n ORI 12NEWSYM FxOpCDA2 ; OR #n OR #n ORI 13NEWSYM FxOpCEA2 ; OR #n OR #n ORI 14NEWSYM FxOpCFA2 ; OR #n OR #n ORI 15NEWSYM FxOpC1A3 ; XOR #n xor #n XORI 1NEWSYM FxOpC2A3 ; XOR #n xor #n XORI 2NEWSYM FxOpC3A3 ; XOR #n xor #n XORI 3NEWSYM FxOpC4A3 ; XOR #n xor #n XORI 4NEWSYM FxOpC5A3 ; XOR #n xor #n XORI 5NEWSYM FxOpC6A3 ; XOR #n xor #n XORI 6NEWSYM FxOpC7A3 ; XOR #n xor #n XORI 7NEWSYM FxOpC8A3 ; XOR #n xor #n XORI 8NEWSYM FxOpC9A3 ; XOR #n xor #n XORI 9NEWSYM FxOpCAA3 ; XOR #n xor #n XORI 10NEWSYM FxOpCBA3 ; XOR #n xor #n XORI 11NEWSYM FxOpCCA3 ; XOR #n xor #n XORI 12NEWSYM FxOpCDA3 ; XOR #n xor #n XORI 13NEWSYM FxOpCEA3 ; XOR #n xor #n XORI 14NEWSYM FxOpCFA3 ; XOR #n xor #n XORI 15NEWSYM FxOpD0 ; INC rn increase by one INCRN 0NEWSYM FxOpD1 ; INC rn increase by one INCRN 1NEWSYM FxOpD2 ; INC rn increase by one INCRN 2NEWSYM FxOpD3 ; INC rn increase by one INCRN 3NEWSYM FxOpD4 ; INC rn increase by one INCRN 4NEWSYM FxOpD5 ; INC rn increase by one INCRN 5NEWSYM FxOpD6 ; INC rn increase by one INCRN 6NEWSYM FxOpD7 ; INC rn increase by one INCRN 7NEWSYM FxOpD8 ; INC rn increase by one INCRN 8NEWSYM FxOpD9 ; INC rn increase by one INCRN 9NEWSYM FxOpDA ; INC rn increase by one INCRN 10NEWSYM FxOpDB ; INC rn increase by one INCRN 11NEWSYM FxOpDC ; INC rn increase by one INCRN 12NEWSYM FxOpDD ; INC rn increase by one INCRN 13NEWSYM FxOpDE ; INC rn increase by one FETCHPIPE mov eax,[SfxR0+14*4] ; Read Source inc ax mov [SfxR0+14*4],eax mov [SfxSignZero],eax CLRFLAGS inc ebp UpdateR14 retNEWSYM FxOpDF ; GETC transfer ROM buffer to color register mov eax,[SfxRomBuffer] FETCHPIPE mov eax,[eax] test byte[SfxPOR],04h jz .nohighnibble mov bl,al shr bl,4 and al,0F0h or al,bl.nohighnibble test byte[SfxPOR],08h jnz .preserveupper cmp [SfxCOLR],al je .nocolchange mov [SfxCOLR],al and eax,0FFh mov ebx,[fxbit01+eax*4] mov [fxbit01pcal],ebx mov ebx,[fxbit23+eax*4] mov [fxbit23pcal],ebx mov ebx,[fxbit45+eax*4] mov [fxbit45pcal],ebx mov ebx,[fxbit67+eax*4] mov [fxbit67pcal],ebx.nocolchange CLRFLAGS inc ebp ; Increase program counter ret.preserveupper mov bl,[SfxCOLR] and al,0Fh and bl,0F0h or al,bl cmp [SfxCOLR],al je .nocolchange mov [SfxCOLR],al and eax,0FFh mov ebx,[fxbit01+eax*4] mov [fxbit01pcal],ebx mov ebx,[fxbit23+eax*4] mov [fxbit23pcal],ebx mov ebx,[fxbit45+eax*4] mov [fxbit45pcal],ebx mov ebx,[fxbit67+eax*4] mov [fxbit67pcal],ebx CLRFLAGS inc ebp ; Increase program counter retNEWSYM FxOpDFA2 ; RAMB set current RAM bank ; Verified mov eax,[esi] ; Read Source mov ebx,[SfxnRamBanks] FETCHPIPE dec ebx and eax,ebx mov dword [SfxRAMBR],eax shl eax,16 add eax,[sfxramdata] mov dword [SfxRAMMem],eax CLRFLAGS inc ebp retNEWSYM FxOpDFA3 ; ROMB set current ROM bank ; Verified mov eax,[esi] ; Read Source and eax,07Fh FETCHPIPE mov dword [SfxROMBR],eax mov eax,[SfxMemTable+eax*4] mov [SfxCROM],eax CL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -