📄 fxemu2c.asm
字号:
NEWSYM FxOpdA5A1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 5NEWSYM FxOpdA6A1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 6NEWSYM FxOpdA7A1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 7NEWSYM FxOpdA8A1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 8NEWSYM FxOpdA9A1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 9NEWSYM FxOpdAAA1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 10NEWSYM FxOpdABA1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 11NEWSYM FxOpdACA1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 12NEWSYM FxOpdADA1 ; LMS rn,(yy) load word from RAM (short address) LMSRNc 13NEWSYM FxOpdAEA1 ; 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 FXReturnNEWSYM FxOpdAFA1 ; 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 FXReturnNEWSYM FxOpdA0A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 0NEWSYM FxOpdA1A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 1NEWSYM FxOpdA2A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 2NEWSYM FxOpdA3A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 3NEWSYM FxOpdA4A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 4NEWSYM FxOpdA5A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 5NEWSYM FxOpdA6A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 6NEWSYM FxOpdA7A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 7NEWSYM FxOpdA8A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 8NEWSYM FxOpdA9A2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 9NEWSYM FxOpdAAA2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 10NEWSYM FxOpdABA2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 11NEWSYM FxOpdACA2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 12NEWSYM FxOpdADA2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 13NEWSYM FxOpdAEA2 ; SMS (yy),rn store word in RAM (short address) SMSRNc 14NEWSYM FxOpdAFA2 ; 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 FXReturnNEWSYM FxOpdB0 ; FROM rn set source register FROMRNd 0NEWSYM FxOpdB1 ; FROM rn set source register FROMRNd 1NEWSYM FxOpdB2 ; FROM rn set source register FROMRNd 2NEWSYM FxOpdB3 ; FROM rn set source register FROMRNd 3NEWSYM FxOpdB4 ; FROM rn set source register FROMRNd 4NEWSYM FxOpdB5 ; FROM rn set source register FROMRNd 5NEWSYM FxOpdB6 ; FROM rn set source register FROMRNd 6NEWSYM FxOpdB7 ; FROM rn set source register FROMRNd 7NEWSYM FxOpdB8 ; FROM rn set source register FROMRNd 8NEWSYM FxOpdB9 ; FROM rn set source register FROMRNd 9NEWSYM FxOpdBA ; FROM rn set source register FROMRNd 10NEWSYM FxOpdBB ; FROM rn set source register FROMRNd 11NEWSYM FxOpdBC ; FROM rn set source register FROMRNd 12NEWSYM FxOpdBD ; FROM rn set source register FROMRNd 13NEWSYM FxOpdBE ; FROM rn set source register FROMRNd 14NEWSYM FxOpdBF ; 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 FXReturnNEWSYM FxOpdC0 ; 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 FXReturnNEWSYM FxOpdC1 ; OR rn or rn ORRNc 1NEWSYM FxOpdC2 ; OR rn or rn ORRNc 2NEWSYM FxOpdC3 ; OR rn or rn ORRNc 3NEWSYM FxOpdC4 ; OR rn or rn ORRNc 4NEWSYM FxOpdC5 ; OR rn or rn ORRNc 5NEWSYM FxOpdC6 ; OR rn or rn ORRNc 6NEWSYM FxOpdC7 ; OR rn or rn ORRNc 7NEWSYM FxOpdC8 ; OR rn or rn ORRNc 8NEWSYM FxOpdC9 ; OR rn or rn ORRNc 9NEWSYM FxOpdCA ; OR rn or rn ORRNc 10NEWSYM FxOpdCB ; OR rn or rn ORRNc 11NEWSYM FxOpdCC ; OR rn or rn ORRNc 12NEWSYM FxOpdCD ; OR rn or rn ORRNc 13NEWSYM FxOpdCE ; OR rn or rn ORRNc 14NEWSYM FxOpdCF ; 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 FXReturnNEWSYM FxOpdC1A1 ; XOR rn xor rn XORRNc 1NEWSYM FxOpdC2A1 ; XOR rn xor rn XORRNc 2NEWSYM FxOpdC3A1 ; XOR rn xor rn XORRNc 3NEWSYM FxOpdC4A1 ; XOR rn xor rn XORRNc 4NEWSYM FxOpdC5A1 ; XOR rn xor rn XORRNc 5NEWSYM FxOpdC6A1 ; XOR rn xor rn XORRNc 6NEWSYM FxOpdC7A1 ; XOR rn xor rn XORRNc 7NEWSYM FxOpdC8A1 ; XOR rn xor rn XORRNc 8NEWSYM FxOpdC9A1 ; XOR rn xor rn XORRNc 9NEWSYM FxOpdCAA1 ; XOR rn xor rn XORRNc 10NEWSYM FxOpdCBA1 ; XOR rn xor rn XORRNc 11NEWSYM FxOpdCCA1 ; XOR rn xor rn XORRNc 12NEWSYM FxOpdCDA1 ; XOR rn xor rn XORRNc 13NEWSYM FxOpdCEA1 ; XOR rn xor rn XORRNc 14NEWSYM FxOpdCFA1 ; 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 FXReturnNEWSYM FxOpdC1A2 ; OR #n OR #n ORIc 1NEWSYM FxOpdC2A2 ; OR #n OR #n ORIc 2NEWSYM FxOpdC3A2 ; OR #n OR #n ORIc 3NEWSYM FxOpdC4A2 ; OR #n OR #n ORIc 4NEWSYM FxOpdC5A2 ; OR #n OR #n ORIc 5NEWSYM FxOpdC6A2 ; OR #n OR #n ORIc 6NEWSYM FxOpdC7A2 ; OR #n OR #n ORIc 7NEWSYM FxOpdC8A2 ; OR #n OR #n ORIc 8NEWSYM FxOpdC9A2 ; OR #n OR #n ORIc 9NEWSYM FxOpdCAA2 ; OR #n OR #n ORIc 10NEWSYM FxOpdCBA2 ; OR #n OR #n ORIc 11NEWSYM FxOpdCCA2 ; OR #n OR #n ORIc 12NEWSYM FxOpdCDA2 ; OR #n OR #n ORIc 13NEWSYM FxOpdCEA2 ; OR #n OR #n ORIc 14NEWSYM FxOpdCFA2 ; OR #n OR #n ORIc 15NEWSYM FxOpdC1A3 ; XOR #n xor #n XORIc 1NEWSYM FxOpdC2A3 ; XOR #n xor #n XORIc 2NEWSYM FxOpdC3A3 ; XOR #n xor #n XORIc 3NEWSYM FxOpdC4A3 ; XOR #n xor #n XORIc 4NEWSYM FxOpdC5A3 ; XOR #n xor #n XORIc 5NEWSYM FxOpdC6A3 ; XOR #n xor #n XORIc 6NEWSYM FxOpdC7A3 ; XOR #n xor #n XORIc 7NEWSYM FxOpdC8A3 ; XOR #n xor #n XORIc 8NEWSYM FxOpdC9A3 ; XOR #n xor #n XORIc 9NEWSYM FxOpdCAA3 ; XOR #n xor #n XORIc 10NEWSYM FxOpdCBA3 ; XOR #n xor #n XORIc 11NEWSYM FxOpdCCA3 ; XOR #n xor #n XORIc 12NEWSYM FxOpdCDA3 ; XOR #n xor #n XORIc 13NEWSYM FxOpdCEA3 ; XOR #n xor #n XORIc 14NEWSYM FxOpdCFA3 ; XOR #n xor #n XORIc 15NEWSYM FxOpdD0 ; INC rn increase by one INCRNc 0NEWSYM FxOpdD1 ; INC rn increase by one INCRNc 1NEWSYM FxOpdD2 ; INC rn increase by one INCRNc 2NEWSYM FxOpdD3 ; INC rn increase by one INCRNc 3NEWSYM FxOpdD4 ; INC rn increase by one INCRNc 4NEWSYM FxOpdD5 ; INC rn increase by one INCRNc 5NEWSYM FxOpdD6 ; INC rn increase by one INCRNc 6NEWSYM FxOpdD7 ; INC rn increase by one INCRNc 7NEWSYM FxOpdD8 ; INC rn increase by one INCRNc 8NEWSYM FxOpdD9 ; INC rn increase by one INCRNc 9NEWSYM FxOpdDA ; INC rn increase by one INCRNc 10NEWSYM FxOpdDB ; INC rn increase by one INCRNc 11NEWSYM FxOpdDC ; INC rn increase by one INCRNc 12NEWSYM FxOpdDD ; INC rn increase by one INCRNc 13NEWSYM FxOpdDE ; 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 FXReturnNEWSYM FxOpdDF ; 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 FXReturn.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 FXReturnNEWSYM FxOpdDFA2 ; 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 FXReturnNEWSYM FxOpdDFA3 ; 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 CLRFLAGS inc ebp FXReturnNEWSYM FxOpdE0 ; DEC rn decrement by one DECRNc 0NEWSYM FxOpdE1 ; DEC rn decrement by one DECRNc 1NEWSYM FxOpdE2 ; DEC rn decrement by one DECRNc 2NEWSYM FxOpdE3 ; DEC rn decrement by one DECRNc 3NEWSYM FxOpdE4 ; DEC rn decrement by one DECRNc 4NEWSYM FxOpdE5 ; DEC rn decrement by one DECRNc 5NEWSYM FxOpdE6 ; DEC rn decrement by one DECRNc 6NEWSYM FxOpdE7 ; DEC rn decrement by one DECRNc 7NEWSYM FxOpdE8 ; DEC rn decrement by one DECRNc 8NEWSYM FxOpdE9 ; DEC rn decrement by one DECRNc 9NEWSYM FxOpdEA ; DEC rn decrement by one DECRNc 10NEWSYM FxOpdEB ; DEC rn decrement by one DECRNc 11NEWSYM FxOpdEC ; DEC rn decrement by one DECRNc 12NEWSYM FxOpdED ; DEC rn decrement by one DECRNc 13NEWSYM FxOpdEE ; DEC rn decrement by one dec word[SfxR0+14*4] FETCHPIPE mov eax,[SfxR0+14*4] ; Read Source mov [SfxSignZero],eax UpdateR14 CLRFLAGS inc ebp FXReturnNEWSYM FxOpdEF ; getb get byte from ROM at address R14 ; V FETCHPIPE mov eax,[SfxRomBuffer] inc ebp mov eax,[eax] and eax,0FFh; cmp edi,SfxR15; je .nor15 mov [edi],eax ; Write DREG CLRFLAGS FXReturn.nor15 or eax,8000h mov [edi],eax ; Write DREG CLRFLAGS FXReturn add eax,ebp sub eax,[SfxCPB] mov [SfxR15],eax CLRFLAGS FXReturnNEWSYM FxOpdEFA1 ; getbh get high-byte from ROM at address R14 ; V mov eax,[esi] ; Read Source mov ebx,[SfxRomBuffer] and eax,0FFh FETCHPIPE mov ah,[ebx] inc ebp mov [edi],eax ; Write DREG CLRFLAGS FXReturnNEWSYM FxOpdEFA2 ; ge
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -