📄 fxemu2c.asm
字号:
mov [SfxSignZero],edx
mov [edi],edx ; Write Destination
shr ax,15
mov [SfxCarry],al
CLRFLAGS
FXReturn
NEWSYM FxOpd9FA1 ; 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
FXReturn
NEWSYM FxOpdA0 ; IBTRNc,#PP immediate byte transfer
IBTRNc 0
NEWSYM FxOpdA1 ; IBTRNc,#PP immediate byte transfer
IBTRNc 1
NEWSYM FxOpdA2 ; IBTRNc,#PP immediate byte transfer
IBTRNc 2
NEWSYM FxOpdA3 ; IBTRNc,#PP immediate byte transfer
IBTRNc 3
NEWSYM FxOpdA4 ; IBTRNc,#PP immediate byte transfer
IBTRNc 4
NEWSYM FxOpdA5 ; IBTRNc,#PP immediate byte transfer
IBTRNc 5
NEWSYM FxOpdA6 ; IBTRNc,#PP immediate byte transfer
IBTRNc 6
NEWSYM FxOpdA7 ; IBTRNc,#PP immediate byte transfer
IBTRNc 7
NEWSYM FxOpdA8 ; IBTRNc,#PP immediate byte transfer
IBTRNc 8
NEWSYM FxOpdA9 ; IBTRNc,#PP immediate byte transfer
IBTRNc 9
NEWSYM FxOpdAA ; IBTRNc,#PP immediate byte transfer
IBTRNc 10
NEWSYM FxOpdAB ; IBTRNc,#PP immediate byte transfer
IBTRNc 11
NEWSYM FxOpdAC ; IBTRNc,#PP immediate byte transfer
IBTRNc 12
NEWSYM FxOpdAD ; IBTRNc,#PP immediate byte transfer
IBTRNc 13
NEWSYM FxOpdAE ; IBTRNc,#PP immediate byte transfer
movsx eax,byte[ebp]
mov cl,[ebp+1]
add ebp,2
mov [SfxR0+14*4],ax
UpdateR14
CLRFLAGS
FXReturn
NEWSYM FxOpdAF ; IBTRNc,#PP immediate byte transfer
movsx eax,byte[ebp]
mov cl,[ebp+1]
and eax,0FFFFh
mov ebp,[SfxCPB]
add ebp,eax
CLRFLAGS
FXReturn
NEWSYM FxOpdA0A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 0
NEWSYM FxOpdA1A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 1
NEWSYM FxOpdA2A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 2
NEWSYM FxOpdA3A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 3
NEWSYM FxOpdA4A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 4
NEWSYM FxOpdA5A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 5
NEWSYM FxOpdA6A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 6
NEWSYM FxOpdA7A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 7
NEWSYM FxOpdA8A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 8
NEWSYM FxOpdA9A1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 9
NEWSYM FxOpdAAA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 10
NEWSYM FxOpdABA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 11
NEWSYM FxOpdACA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 12
NEWSYM FxOpdADA1 ; LMS rn,(yy) load word from RAM (short address)
LMSRNc 13
NEWSYM 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
FXReturn
NEWSYM 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
FXReturn
NEWSYM FxOpdA0A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 0
NEWSYM FxOpdA1A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 1
NEWSYM FxOpdA2A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 2
NEWSYM FxOpdA3A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 3
NEWSYM FxOpdA4A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 4
NEWSYM FxOpdA5A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 5
NEWSYM FxOpdA6A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 6
NEWSYM FxOpdA7A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 7
NEWSYM FxOpdA8A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 8
NEWSYM FxOpdA9A2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 9
NEWSYM FxOpdAAA2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 10
NEWSYM FxOpdABA2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 11
NEWSYM FxOpdACA2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 12
NEWSYM FxOpdADA2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 13
NEWSYM FxOpdAEA2 ; SMS (yy),rn store word in RAM (short address)
SMSRNc 14
NEWSYM 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
FXReturn
NEWSYM FxOpdB0 ; FROM rn set source register
FROMRNd 0
NEWSYM FxOpdB1 ; FROM rn set source register
FROMRNd 1
NEWSYM FxOpdB2 ; FROM rn set source register
FROMRNd 2
NEWSYM FxOpdB3 ; FROM rn set source register
FROMRNd 3
NEWSYM FxOpdB4 ; FROM rn set source register
FROMRNd 4
NEWSYM FxOpdB5 ; FROM rn set source register
FROMRNd 5
NEWSYM FxOpdB6 ; FROM rn set source register
FROMRNd 6
NEWSYM FxOpdB7 ; FROM rn set source register
FROMRNd 7
NEWSYM FxOpdB8 ; FROM rn set source register
FROMRNd 8
NEWSYM FxOpdB9 ; FROM rn set source register
FROMRNd 9
NEWSYM FxOpdBA ; FROM rn set source register
FROMRNd 10
NEWSYM FxOpdBB ; FROM rn set source register
FROMRNd 11
NEWSYM FxOpdBC ; FROM rn set source register
FROMRNd 12
NEWSYM FxOpdBD ; FROM rn set source register
FROMRNd 13
NEWSYM FxOpdBE ; FROM rn set source register
FROMRNd 14
NEWSYM 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
FXReturn
NEWSYM 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
FXReturn
NEWSYM FxOpdC1 ; OR rn or rn
ORRNc 1
NEWSYM FxOpdC2 ; OR rn or rn
ORRNc 2
NEWSYM FxOpdC3 ; OR rn or rn
ORRNc 3
NEWSYM FxOpdC4 ; OR rn or rn
ORRNc 4
NEWSYM FxOpdC5 ; OR rn or rn
ORRNc 5
NEWSYM FxOpdC6 ; OR rn or rn
ORRNc 6
NEWSYM FxOpdC7 ; OR rn or rn
ORRNc 7
NEWSYM FxOpdC8 ; OR rn or rn
ORRNc 8
NEWSYM FxOpdC9 ; OR rn or rn
ORRNc 9
NEWSYM FxOpdCA ; OR rn or rn
ORRNc 10
NEWSYM FxOpdCB ; OR rn or rn
ORRNc 11
NEWSYM FxOpdCC ; OR rn or rn
ORRNc 12
NEWSYM FxOpdCD ; OR rn or rn
ORRNc 13
NEWSYM FxOpdCE ; OR rn or rn
ORRNc 14
NEWSYM 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
FXReturn
NEWSYM FxOpdC1A1 ; XOR rn xor rn
XORRNc 1
NEWSYM FxOpdC2A1 ; XOR rn xor rn
XORRNc 2
NEWSYM FxOpdC3A1 ; XOR rn xor rn
XORRNc 3
NEWSYM FxOpdC4A1 ; XOR rn xor rn
XORRNc 4
NEWSYM FxOpdC5A1 ; XOR rn xor rn
XORRNc 5
NEWSYM FxOpdC6A1 ; XOR rn xor rn
XORRNc 6
NEWSYM FxOpdC7A1 ; XOR rn xor rn
XORRNc 7
NEWSYM FxOpdC8A1 ; XOR rn xor rn
XORRNc 8
NEWSYM FxOpdC9A1 ; XOR rn xor rn
XORRNc 9
NEWSYM FxOpdCAA1 ; XOR rn xor rn
XORRNc 10
NEWSYM FxOpdCBA1 ; XOR rn xor rn
XORRNc 11
NEWSYM FxOpdCCA1 ; XOR rn xor rn
XORRNc 12
NEWSYM FxOpdCDA1 ; XOR rn xor rn
XORRNc 13
NEWSYM FxOpdCEA1 ; XOR rn xor rn
XORRNc 14
NEWSYM 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
FXReturn
NEWSYM FxOpdC1A2 ; OR #n OR #n
ORIc 1
NEWSYM FxOpdC2A2 ; OR #n OR #n
ORIc 2
NEWSYM FxOpdC3A2 ; OR #n OR #n
ORIc 3
NEWSYM FxOpdC4A2 ; OR #n OR #n
ORIc 4
NEWSYM FxOpdC5A2 ; OR #n OR #n
ORIc 5
NEWSYM FxOpdC6A2 ; OR #n OR #n
ORIc 6
NEWSYM FxOpdC7A2 ; OR #n OR #n
ORIc 7
NEWSYM FxOpdC8A2 ; OR #n OR #n
ORIc 8
NEWSYM FxOpdC9A2 ; OR #n OR #n
ORIc 9
NEWSYM FxOpdCAA2 ; OR #n OR #n
ORIc 10
NEWSYM FxOpdCBA2 ; OR #n OR #n
ORIc 11
NEWSYM FxOpdCCA2 ; OR #n OR #n
ORIc 12
NEWSYM FxOpdCDA2 ; OR #n OR #n
ORIc 13
NEWSYM FxOpdCEA2 ; OR #n OR #n
ORIc 14
NEWSYM FxOpdCFA2 ; OR #n OR #n
ORIc 15
NEWSYM FxOpdC1A3 ; XOR #n xor #n
XORIc 1
NEWSYM FxOpdC2A3 ; XOR #n xor #n
XORIc 2
NEWSYM FxOpdC3A3 ; XOR #n xor #n
XORIc 3
NEWSYM FxOpdC4A3 ; XOR #n xor #n
XORIc 4
NEWSYM FxOpdC5A3 ; XOR #n xor #n
XORIc 5
NEWSYM FxOpdC6A3 ; XOR #n xor #n
XORIc 6
NEWSYM FxOpdC7A3 ; XOR #n xor #n
XORIc 7
NEWSYM FxOpdC8A3 ; XOR #n xor #n
XORIc 8
NEWSYM FxOpdC9A3 ; XOR #n xor #n
XORIc 9
NEWSYM FxOpdCAA3 ; XOR #n xor #n
XORIc 10
NEWSYM FxOpdCBA3 ; XOR #n xor #n
XORIc 11
NEWSYM FxOpdCCA3 ; XOR #n xor #n
XORIc 12
NEWSYM FxOpdCDA3 ; XOR #n xor #n
XORIc 13
NEWSYM FxOpdCEA3 ; XOR #n xor #n
XORIc 14
NEWSYM FxOpdCFA3 ; XOR #n xor #n
XORIc 15
NEWSYM FxOpdD0 ; INC rn increase by one
INCRNc 0
NEWSYM FxOpdD1 ; INC rn increase by one
INCRNc 1
NEWSYM FxOpdD2 ; INC rn increase by one
INCRNc 2
NEWSYM FxOpdD3 ; INC rn increase by one
INCRNc 3
NEWSYM FxOpdD4 ; INC rn increase by one
INCRNc 4
NEWSYM FxOpdD5 ; INC rn increase by one
INCRNc 5
NEWSYM FxOpdD6 ; INC rn increase by one
INCRNc 6
NEWSYM FxOpdD7 ; INC rn increase by one
INCRNc 7
NEWSYM FxOpdD8 ; INC rn increase by one
INCRNc 8
NEWSYM FxOpdD9 ; INC rn increase by one
INCRNc 9
NEWSYM FxOpdDA ; INC rn increase by one
INCRNc 10
NEWSYM FxOpdDB ; INC rn increase by one
INCRNc 11
NEWSYM FxOpdDC ; INC rn increase by one
INCRNc 12
NEWSYM FxOpdDD ; INC rn increase by one
INCRNc 13
NEWSYM 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
FXReturn
NEWSYM 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
FXReturn
NEWSYM FxOpdDFA2 ; RAMB set current RAM bank ; Verified
mov eax,[esi] ; Read Source
mov ebx,[
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -