📄 fxemu2c.asm
字号:
jz .nodraw6_256
or bh,20h
.nodraw6_256
test byte[eax+48],bl
jz .nodraw7_256
or bh,40h
.nodraw7_256
test byte[eax+49],bl
jz .nodraw8_256
or bh,80h
.nodraw8_256
mov bl,bh
and ebx,0FFh
inc ebp
; UpdateR14
CLRFLAGS
mov [edi],ebx ; Write Destination
mov [flagnz],ebx
FXReturn
NEWSYM FxOpd4D ; SWAP swap upper and lower byte of a register ; V
mov eax,[esi] ; Read Source
FETCHPIPE
ror ax,8
inc ebp ; Increase program counter
mov [SfxSignZero],eax
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
NEWSYM FxOpd4E ; COLOR copy source register to color register ; V
FETCHPIPE
mov eax,[esi] ; Read Source
; if bit 3 of SfxPOR is set, then don't modify the upper 4 bits
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 FxOpd4EA1 ; CMODE set plot option register ; V
FETCHPIPE
mov eax,[esi] ; Read Source
inc ebp ; Increase program counter
mov dword [SfxPOR],eax
test byte[SfxPOR],10h
jnz .objmode
mov al,[SfxSCMR]
and al,00100100b ; 4 + 32
cmp al,4
je .lines160
cmp al,32
je .lines192
cmp al,36
je .objmode
mov eax,[sfx128lineloc]
jmp .donelines
.lines160
mov eax,[sfx160lineloc]
jmp .donelines
.lines192
mov eax,[sfx192lineloc]
jmp .donelines
.objmode
mov eax,[sfxobjlineloc]
.donelines
mov [sfxclineloc],eax
push ebx
mov al,[SfxSCMR]
and eax,00000011b
mov bl,[SfxPOR]
and bl,0Fh
shl bl,2
or al,bl
mov ebx,[PLOTJmpb+eax*4]
mov eax,[PLOTJmpa+eax*4]
mov dword [FxTable+4Ch*4],eax
mov dword [FxTableb+4Ch*4],eax
mov dword [FxTablec+4Ch*4],eax
mov dword [FxTabled+4Ch*4],ebx
pop ebx
CLRFLAGS
FXReturn
NEWSYM FxOpd4F ; NOT perform exclusive exor with 1 on all bits ; V
mov eax,[esi] ; Read Source
FETCHPIPE
xor eax,0FFFFh
inc ebp ; Increase program counter
mov [SfxSignZero],eax
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
NEWSYM FxOpd50 ; ADD RN add, register + register
ADDRNc 0
NEWSYM FxOpd51 ; ADD RN add, register + register
ADDRNc 1
NEWSYM FxOpd52 ; ADD RN add, register + register
ADDRNc 2
NEWSYM FxOpd53 ; ADD RN add, register + register
ADDRNc 3
NEWSYM FxOpd54 ; ADD RN add, register + register
ADDRNc 4
NEWSYM FxOpd55 ; ADD RN add, register + register
ADDRNc 5
NEWSYM FxOpd56 ; ADD RN add, register + register
ADDRNc 6
NEWSYM FxOpd57 ; ADD RN add, register + register
ADDRNc 7
NEWSYM FxOpd58 ; ADD RN add, register + register
ADDRNc 8
NEWSYM FxOpd59 ; ADD RN add, register + register
ADDRNc 9
NEWSYM FxOpd5A ; ADD RN add, register + register
ADDRNc 10
NEWSYM FxOpd5B ; ADD RN add, register + register
ADDRNc 11
NEWSYM FxOpd5C ; ADD RN add, register + register
ADDRNc 12
NEWSYM FxOpd5D ; ADD RN add, register + register
ADDRNc 13
NEWSYM FxOpd5E ; ADD RN add, register + register
ADDRNc 14
NEWSYM FxOpd5F ; ADD RN add, register + register
FETCHPIPE
mov eax, [esi] ; Read Source
mov ebx,ebp
sub ebx,[SfxCPB]
add ax,bx
seto byte[SfxOverflow]
setc byte[SfxCarry]
mov [SfxSignZero],eax
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
NEWSYM FxOpd50A1 ; ADC RN add with carry, register + register
ADCRNc 0
NEWSYM FxOpd51A1 ; ADC RN add with carry, register + register
ADCRNc 1
NEWSYM FxOpd52A1 ; ADC RN add with carry, register + register
ADCRNc 2
NEWSYM FxOpd53A1 ; ADC RN add with carry, register + register
ADCRNc 3
NEWSYM FxOpd54A1 ; ADC RN add with carry, register + register
ADCRNc 4
NEWSYM FxOpd55A1 ; ADC RN add with carry, register + register
ADCRNc 5
NEWSYM FxOpd56A1 ; ADC RN add with carry, register + register
ADCRNc 6
NEWSYM FxOpd57A1 ; ADC RN add with carry, register + register
ADCRNc 7
NEWSYM FxOpd58A1 ; ADC RN add with carry, register + register
ADCRNc 8
NEWSYM FxOpd59A1 ; ADC RN add with carry, register + register
ADCRNc 9
NEWSYM FxOpd5AA1 ; ADC RN add with carry, register + register
ADCRNc 10
NEWSYM FxOpd5BA1 ; ADC RN add with carry, register + register
ADCRNc 11
NEWSYM FxOpd5CA1 ; ADC RN add with carry, register + register
ADCRNc 12
NEWSYM FxOpd5DA1 ; ADC RN add with carry, register + register
ADCRNc 13
NEWSYM FxOpd5EA1 ; ADC RN add with carry, register + register
ADCRNc 14
NEWSYM FxOpd5FA1 ; ADC RN add with carry, register + register
FETCHPIPE
mov eax, [esi] ; Read Source
mov ebx,ebp
sub ebx,[SfxCPB]
shr byte[SfxCarry],1
adc ax,bx
seto byte[SfxOverflow]
setc byte[SfxCarry]
mov [SfxSignZero],eax
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
CLRFLAGS
FXReturn
; Weird Opdode (FxOpd50A2, add 0, wow!)
NEWSYM FxOpd50A2 ; ADI RN add, register + immediate
ADIRNc 0
NEWSYM FxOpd51A2 ; ADI RN add, register + immediate
ADIRNc 1
NEWSYM FxOpd52A2 ; ADI RN add, register + immediate
ADIRNc 2
NEWSYM FxOpd53A2 ; ADI RN add, register + immediate
ADIRNc 3
NEWSYM FxOpd54A2 ; ADI RN add, register + immediate
ADIRNc 4
NEWSYM FxOpd55A2 ; ADI RN add, register + immediate
ADIRNc 5
NEWSYM FxOpd56A2 ; ADI RN add, register + immediate
ADIRNc 6
NEWSYM FxOpd57A2 ; ADI RN add, register + immediate
ADIRNc 7
NEWSYM FxOpd58A2 ; ADI RN add, register + immediate
ADIRNc 8
NEWSYM FxOpd59A2 ; ADI RN add, register + immediate
ADIRNc 9
NEWSYM FxOpd5AA2 ; ADI RN add, register + immediate
ADIRNc 10
NEWSYM FxOpd5BA2 ; ADI RN add, register + immediate
ADIRNc 11
NEWSYM FxOpd5CA2 ; ADI RN add, register + immediate
ADIRNc 12
NEWSYM FxOpd5DA2 ; ADI RN add, register + immediate
ADIRNc 13
NEWSYM FxOpd5EA2 ; ADI RN add, register + immediate
ADIRNc 14
NEWSYM FxOpd5FA2 ; ADI RN add, register + immediate
ADIRNc 15
; Another very useful Opdode
NEWSYM FxOpd50A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 0
NEWSYM FxOpd51A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 1
NEWSYM FxOpd52A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 2
NEWSYM FxOpd53A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 3
NEWSYM FxOpd54A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 4
NEWSYM FxOpd55A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 5
NEWSYM FxOpd56A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 6
NEWSYM FxOpd57A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 7
NEWSYM FxOpd58A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 8
NEWSYM FxOpd59A3 ; ADCIRN add with carry, register + immediate
ADCIRNc 9
NEWSYM FxOpd5AA3 ; ADCIRN add with carry, register + immediate
ADCIRNc 10
NEWSYM FxOpd5BA3 ; ADCIRN add with carry, register + immediate
ADCIRNc 11
NEWSYM FxOpd5CA3 ; ADCIRN add with carry, register + immediate
ADCIRNc 12
NEWSYM FxOpd5DA3 ; ADCIRN add with carry, register + immediate
ADCIRNc 13
NEWSYM FxOpd5EA3 ; ADCIRN add with carry, register + immediate
ADCIRNc 14
NEWSYM FxOpd5FA3 ; ADCIRN add with carry, register + immediate
ADCIRNc 15
NEWSYM FxOpd60 ; SUBRN subtract, register - register
SUBRNc 0
NEWSYM FxOpd61 ; SUBRN subtract, register - register
SUBRNc 1
NEWSYM FxOpd62 ; SUBRN subtract, register - register
SUBRNc 2
NEWSYM FxOpd63 ; SUBRN subtract, register - register
SUBRNc 3
NEWSYM FxOpd64 ; SUBRN subtract, register - register
SUBRNc 4
NEWSYM FxOpd65 ; SUBRN subtract, register - register
SUBRNc 5
NEWSYM FxOpd66 ; SUBRN subtract, register - register
SUBRNc 6
NEWSYM FxOpd67 ; SUBRN subtract, register - register
SUBRNc 7
NEWSYM FxOpd68 ; SUBRN subtract, register - register
SUBRNc 8
NEWSYM FxOpd69 ; SUBRN subtract, register - register
SUBRNc 9
NEWSYM FxOpd6A ; SUBRN subtract, register - register
SUBRNc 10
NEWSYM FxOpd6B ; SUBRN subtract, register - register
SUBRNc 11
NEWSYM FxOpd6C ; SUBRN subtract, register - register
SUBRNc 12
NEWSYM FxOpd6D ; SUBRN subtract, register - register
SUBRNc 13
NEWSYM FxOpd6E ; SUBRN subtract, register - register
SUBRNc 14
NEWSYM FxOpd6F ; SUBRN subtract, register - register
FETCHPIPE
mov eax,[esi] ; Read Source
mov ebx,ebp
sub ebx,[SfxCPB]
sub ax,bx
seto byte[SfxOverflow]
setc byte[SfxCarry]
xor byte[SfxCarry],1
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
mov [SfxSignZero],eax
CLRFLAGS
FXReturn
NEWSYM FxOpd60A1 ; SBCRN subtract with carry, register - register
SBCRNc 0
NEWSYM FxOpd61A1 ; SBCRN subtract with carry, register - register
SBCRNc 1
NEWSYM FxOpd62A1 ; SBCRN subtract with carry, register - register
SBCRNc 2
NEWSYM FxOpd63A1 ; SBCRN subtract with carry, register - register
SBCRNc 3
NEWSYM FxOpd64A1 ; SBCRN subtract with carry, register - register
SBCRNc 4
NEWSYM FxOpd65A1 ; SBCRN subtract with carry, register - register
SBCRNc 5
NEWSYM FxOpd66A1 ; SBCRN subtract with carry, register - register
SBCRNc 6
NEWSYM FxOpd67A1 ; SBCRN subtract with carry, register - register
SBCRNc 7
NEWSYM FxOpd68A1 ; SBCRN subtract with carry, register - register
SBCRNc 8
NEWSYM FxOpd69A1 ; SBCRN subtract with carry, register - register
SBCRNc 9
NEWSYM FxOpd6AA1 ; SBCRN subtract with carry, register - register
SBCRNc 10
NEWSYM FxOpd6BA1 ; SBCRN subtract with carry, register - register
SBCRNc 11
NEWSYM FxOpd6CA1 ; SBCRN subtract with carry, register - register
SBCRNc 12
NEWSYM FxOpd6DA1 ; SBCRN subtract with carry, register - register
SBCRNc 13
NEWSYM FxOpd6EA1 ; SBCRN subtract with carry, register - register
SBCRNc 14
NEWSYM FxOpd6FA1 ; SBCRN subtract with carry, register - register
mov eax,[esi] ; Read Source
mov ebx,ebp
FETCHPIPE
sub ebx,[SfxCPB]
cmp byte[SfxCarry],1
sbb ax,bx
seto byte[SfxOverflow]
setc byte[SfxCarry]
xor byte[SfxCarry],1
inc ebp ; Increase program counter
mov [edi],eax ; Write Destination
mov [SfxSignZero],eax
CLRFLAGS
FXReturn
NEWSYM FxOpd60A2 ; SUBIRN subtract, register - immediate
SUBIRNc 0
NEWSYM FxOpd61A2 ; SUBIRN subtract, register - immediate
SUBIRNc 1
NEWSYM FxOpd62A2 ; SUBIRN subtract, register - immediate
SUBIRNc 2
NEWSYM FxOpd63A2 ; SUBIRN subtract, register - immediate
SUBIRNc 3
NEWSYM FxOpd64A2 ; SUBIRN subtract, register - immediate
SUBIRNc 4
NEWSYM FxOpd65A2 ; SUBIRN subtract, register - immediate
SUBIRNc 5
NEWSYM FxOpd66A2 ; SUBIRN subtract, register - immediate
SUBIRNc 6
NEWSYM FxOpd67A2 ; SUBIRN subtract, register - immediate
SUBIRNc 7
NEWSYM FxOpd68A2 ; SUBIRN subtract, register - immediate
SUBIRNc 8
NEWSYM FxOpd69A2 ; SUBIRN subtract, register - immediate
SUBIRNc 9
NEWSYM FxOpd6AA2 ; SUBIRN subtract, register - immediate
SUBIRNc 10
NEWSYM FxOpd6BA2 ; SUBIRN subtract, register - immediate
SUBIRNc 11
NEWSYM FxOpd6CA2 ; SUBIRN subtract, register - immediate
SUBIRNc 12
NEWSYM FxOpd6DA2 ; SUBIRN subtract, register - immediate
SUBIRNc 13
NEWSYM FxOpd6EA2 ; SUBIRN subtract, register - immediate
SUBIRNc 14
NEWSYM FxOpd6FA2 ; SUBIRN subtract, register - immediate
SUBIRNc 15
NEWSYM FxOpd60A3 ; CMPRN compare, register, register
CMPRNc 0
NEWSYM FxOpd61A3 ; CMPRN compare, register, register
CMPRNc 1
NEWSYM FxOpd62A3 ; CMPRN compare, register, register
CMPRNc 2
NEWSYM FxOpd63A3 ; CMPRN compare, register, register
CMPRNc 3
NEWSYM FxOpd64A3 ; CMPRN compare, register, register
CMPRNc 4
NEWSYM FxOpd65A3 ; CMPRN compare, register, register
CMPRNc 5
NEWSYM FxOpd66A3 ; CMPRN compare, register, register
CMPRNc 6
NEWSYM FxOpd67A3 ; CMPRN compare, register, register
CMPRNc 7
NEWSYM FxOpd68A3 ; CMPRN compare, register, register
CMPRNc 8
NEWSYM FxOpd69A3 ; CMPRN compare, register, register
CMPRNc 9
NEWSYM FxOpd6AA3 ; CMPRN compare, register, register
CMPRNc 10
NEWSYM FxOpd6BA3 ; CMPRN compare, register, register
CMPRNc 11
NEWSYM FxOpd6CA3 ; CMPRN compare, register, register
CMPRNc 12
NEWSYM FxOpd6DA3 ; CMPRN compare, register, register
CMPRNc 13
NEWSYM FxOpd6EA3 ; CMPRN compare, register, register
CMPRNc 14
NEWSYM FxOpd6FA3 ; CMPRN compare, register, register
FETCHPIPE
mov eax,[esi] ; Read Source
mov ebx,ebp
sub ebx,[SfxCPB]
sub ax,bx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -