📄 fxemu2c.asm
字号:
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 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 FXReturnNEWSYM 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 FXReturnNEWSYM FxOpd50 ; ADD RN add, register + register ADDRNc 0NEWSYM FxOpd51 ; ADD RN add, register + register ADDRNc 1NEWSYM FxOpd52 ; ADD RN add, register + register ADDRNc 2NEWSYM FxOpd53 ; ADD RN add, register + register ADDRNc 3NEWSYM FxOpd54 ; ADD RN add, register + register ADDRNc 4NEWSYM FxOpd55 ; ADD RN add, register + register ADDRNc 5NEWSYM FxOpd56 ; ADD RN add, register + register ADDRNc 6NEWSYM FxOpd57 ; ADD RN add, register + register ADDRNc 7NEWSYM FxOpd58 ; ADD RN add, register + register ADDRNc 8NEWSYM FxOpd59 ; ADD RN add, register + register ADDRNc 9NEWSYM FxOpd5A ; ADD RN add, register + register ADDRNc 10NEWSYM FxOpd5B ; ADD RN add, register + register ADDRNc 11NEWSYM FxOpd5C ; ADD RN add, register + register ADDRNc 12NEWSYM FxOpd5D ; ADD RN add, register + register ADDRNc 13NEWSYM FxOpd5E ; ADD RN add, register + register ADDRNc 14NEWSYM 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 FXReturnNEWSYM FxOpd50A1 ; ADC RN add with carry, register + register ADCRNc 0NEWSYM FxOpd51A1 ; ADC RN add with carry, register + register ADCRNc 1NEWSYM FxOpd52A1 ; ADC RN add with carry, register + register ADCRNc 2NEWSYM FxOpd53A1 ; ADC RN add with carry, register + register ADCRNc 3NEWSYM FxOpd54A1 ; ADC RN add with carry, register + register ADCRNc 4NEWSYM FxOpd55A1 ; ADC RN add with carry, register + register ADCRNc 5NEWSYM FxOpd56A1 ; ADC RN add with carry, register + register ADCRNc 6NEWSYM FxOpd57A1 ; ADC RN add with carry, register + register ADCRNc 7NEWSYM FxOpd58A1 ; ADC RN add with carry, register + register ADCRNc 8NEWSYM FxOpd59A1 ; ADC RN add with carry, register + register ADCRNc 9NEWSYM FxOpd5AA1 ; ADC RN add with carry, register + register ADCRNc 10NEWSYM FxOpd5BA1 ; ADC RN add with carry, register + register ADCRNc 11NEWSYM FxOpd5CA1 ; ADC RN add with carry, register + register ADCRNc 12NEWSYM FxOpd5DA1 ; ADC RN add with carry, register + register ADCRNc 13NEWSYM FxOpd5EA1 ; ADC RN add with carry, register + register ADCRNc 14NEWSYM 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 0NEWSYM FxOpd51A2 ; ADI RN add, register + immediate ADIRNc 1NEWSYM FxOpd52A2 ; ADI RN add, register + immediate ADIRNc 2NEWSYM FxOpd53A2 ; ADI RN add, register + immediate ADIRNc 3NEWSYM FxOpd54A2 ; ADI RN add, register + immediate ADIRNc 4NEWSYM FxOpd55A2 ; ADI RN add, register + immediate ADIRNc 5NEWSYM FxOpd56A2 ; ADI RN add, register + immediate ADIRNc 6NEWSYM FxOpd57A2 ; ADI RN add, register + immediate ADIRNc 7NEWSYM FxOpd58A2 ; ADI RN add, register + immediate ADIRNc 8NEWSYM FxOpd59A2 ; ADI RN add, register + immediate ADIRNc 9NEWSYM FxOpd5AA2 ; ADI RN add, register + immediate ADIRNc 10NEWSYM FxOpd5BA2 ; ADI RN add, register + immediate ADIRNc 11NEWSYM FxOpd5CA2 ; ADI RN add, register + immediate ADIRNc 12NEWSYM FxOpd5DA2 ; ADI RN add, register + immediate ADIRNc 13NEWSYM FxOpd5EA2 ; ADI RN add, register + immediate ADIRNc 14NEWSYM FxOpd5FA2 ; ADI RN add, register + immediate ADIRNc 15; Another very useful OpdodeNEWSYM FxOpd50A3 ; ADCIRN add with carry, register + immediate ADCIRNc 0NEWSYM FxOpd51A3 ; ADCIRN add with carry, register + immediate ADCIRNc 1NEWSYM FxOpd52A3 ; ADCIRN add with carry, register + immediate ADCIRNc 2NEWSYM FxOpd53A3 ; ADCIRN add with carry, register + immediate ADCIRNc 3NEWSYM FxOpd54A3 ; ADCIRN add with carry, register + immediate ADCIRNc 4NEWSYM FxOpd55A3 ; ADCIRN add with carry, register + immediate ADCIRNc 5NEWSYM FxOpd56A3 ; ADCIRN add with carry, register + immediate ADCIRNc 6NEWSYM FxOpd57A3 ; ADCIRN add with carry, register + immediate ADCIRNc 7NEWSYM FxOpd58A3 ; ADCIRN add with carry, register + immediate ADCIRNc 8NEWSYM FxOpd59A3 ; ADCIRN add with carry, register + immediate ADCIRNc 9NEWSYM FxOpd5AA3 ; ADCIRN add with carry, register + immediate ADCIRNc 10NEWSYM FxOpd5BA3 ; ADCIRN add with carry, register + immediate ADCIRNc 11NEWSYM FxOpd5CA3 ; ADCIRN add with carry, register + immediate ADCIRNc 12NEWSYM FxOpd5DA3 ; ADCIRN add with carry, register + immediate ADCIRNc 13NEWSYM FxOpd5EA3 ; ADCIRN add with carry, register + immediate ADCIRNc 14NEWSYM FxOpd5FA3 ; ADCIRN add with carry, register + immediate ADCIRNc 15NEWSYM FxOpd60 ; SUBRN subtract, register - register SUBRNc 0NEWSYM FxOpd61 ; SUBRN subtract, register - register SUBRNc 1NEWSYM FxOpd62 ; SUBRN subtract, register - register SUBRNc 2NEWSYM FxOpd63 ; SUBRN subtract, register - register SUBRNc 3NEWSYM FxOpd64 ; SUBRN subtract, register - register SUBRNc 4NEWSYM FxOpd65 ; SUBRN subtract, register - register SUBRNc 5NEWSYM FxOpd66 ; SUBRN subtract, register - register SUBRNc 6NEWSYM FxOpd67 ; SUBRN subtract, register - register SUBRNc 7NEWSYM FxOpd68 ; SUBRN subtract, register - register SUBRNc 8NEWSYM FxOpd69 ; SUBRN subtract, register - register SUBRNc 9NEWSYM FxOpd6A ; SUBRN subtract, register - register SUBRNc 10NEWSYM FxOpd6B ; SUBRN subtract, register - register SUBRNc 11NEWSYM FxOpd6C ; SUBRN subtract, register - register SUBRNc 12NEWSYM FxOpd6D ; SUBRN subtract, register - register SUBRNc 13NEWSYM FxOpd6E ; SUBRN subtract, register - register SUBRNc 14NEWSYM 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 FXReturnNEWSYM FxOpd60A1 ; SBCRN subtract with carry, register - register SBCRNc 0NEWSYM FxOpd61A1 ; SBCRN subtract with carry, register - register SBCRNc 1NEWSYM FxOpd62A1 ; SBCRN subtract with carry, register - register SBCRNc 2NEWSYM FxOpd63A1 ; SBCRN subtract with carry, register - register SBCRNc 3NEWSYM FxOpd64A1 ; SBCRN subtract with carry, register - register SBCRNc 4NEWSYM FxOpd65A1 ; SBCRN subtract with carry, register - register SBCRNc 5NEWSYM FxOpd66A1 ; SBCRN subtract with carry, register - register SBCRNc 6NEWSYM FxOpd67A1 ; SBCRN subtract with carry, register - register SBCRNc 7NEWSYM FxOpd68A1 ; SBCRN subtract with carry, register - register SBCRNc 8NEWSYM FxOpd69A1 ; SBCRN subtract with carry, register - register SBCRNc 9NEWSYM FxOpd6AA1 ; SBCRN subtract with carry, register - register SBCRNc 10NEWSYM FxOpd6BA1 ; SBCRN subtract with carry, register - register SBCRNc 11NEWSYM FxOpd6CA1 ; SBCRN subtract with carry, register - register SBCRNc 12NEWSYM FxOpd6DA1 ; SBCRN subtract with carry, register - register SBCRNc 13NEWSYM FxOpd6EA1 ; SBCRN subtract with carry, register - register SBCRNc 14NEWSYM 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 FXReturnNEWSYM FxOpd60A2 ; SUBIRN subtract, register - immediate SUBIRNc 0NEWSYM FxOpd61A2 ; SUBIRN subtract, register - immediate SUBIRNc 1NEWSYM FxOpd62A2 ; SUBIRN subtract, register - immediate SUBIRNc 2NEWSYM FxOpd63A2 ; SUBIRN subtract, register - immediate SUBIRNc 3NEWSYM FxOpd64A2 ; SUBIRN subtract, register - immediate SUBIRNc 4NEWSYM FxOpd65A2 ; SUBIRN subtract, register - immediate SUBIRNc 5NEWSYM FxOpd66A2 ; SUBIRN subtract, register - immediate SUBIRNc 6NEWSYM FxOpd67A2 ; SUBIRN subtract, register - immediate SUBIRNc 7NEWSYM FxOpd68A2 ; SUBIRN subtract, register - immediate SUBIRNc 8NEWSYM FxOpd69A2 ; SUBIRN subtract, register - immediate SUBIRNc 9NEWSYM FxOpd6AA2 ; SUBIRN subtract, register - immediate SUBIRNc 10NEWSYM FxOpd6BA2 ; SUBIRN subtract, register - immediate SUBIRNc 11NEWSYM FxOpd6CA2 ; SUBIRN subtract, register - immediate SUBIRNc 12NEWSYM FxOpd6DA2 ; SUBIRN subtract, register - immediate SUBIRNc 13NEWSYM FxOpd6EA2 ; SUBIRN subtract, register - immediate SUBIRNc 14NEWSYM FxOpd6FA2 ; SUBIRN subtract, register - immediate SUBIRNc 15NEWSYM FxOpd60A3 ; CMPRN compare, register, register CMPRNc 0NEWSYM FxOpd61A3 ; CMPRN compare, register, register CMPRNc 1NEWSYM FxOpd62A3 ; CMPRN compare, register, register CMPRNc 2NEWSYM FxOpd63A3 ; CMPRN compare, register, register CMPRNc 3NEWSYM FxOpd64A3 ; CMPRN compare, register, register CMPRNc 4NEWSYM FxOpd65A3 ; CMPRN compare, register, register CMPRNc 5NEWSYM FxOpd66A3 ; CMPRN compare, register, register CMPRNc 6NEWSYM FxOpd67A3 ; CMPRN compare, register, register CMPRNc 7NEWSYM FxOpd68A3 ; CMPRN compare, register, register CMPRNc 8NEWSYM FxOpd69A3 ; CMPRN compare, register, register CMPRNc 9NEWSYM FxOpd6AA3 ; CMPRN compare, register, register CMPRNc 10NEWSYM FxOpd6BA3 ; CMPRN compare, register, register CMPRNc 11NEWSYM FxOpd6CA3 ; CMPRN compare, register, register CMPRNc 12NEWSYM FxOpd6DA3 ; CMPRN compare, register, register CMPRNc 13NEWSYM FxOpd6EA3 ; CMPRN compare, register, register CMPRNc 14NEWSYM FxOpd6FA3 ; CMPRN compare, 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 mov [SfxSignZero],eax CLRFLAGS inc ebp ; Increase program counter FXReturnNEWSYM FxOpd70 ; MERGE R7 as upper byte, R8 as lower byte (used for texture-mapping) */ ; V xor eax,eax FETCHPIPE mov ah,byte [SfxR7+1] mov al,byte [SfxR8+1] inc ebp mov [edi],eax ; Write Destination mov dword[SfxSignZero],0001h test eax,0F0F0h jz .nozero mov dword[SfxSignZero],0000h.nozero test eax,08080h jz .nosign or dword [SfxSignZero],80000h.nosign mov dword [SfxOverflow],1 test ax,0c0c0h jnz .Overflow mov dword [SfxOverflow],0.Overflow mov dword [SfxCarry],1 test ax,0e0e0h jnz .Carry mov dword [SfxCarry],0.Carry CLRFLAGS FXReturnNEWSYM FxOpd71 ; AND RN register & register ANDRNc 1NEWSYM FxOpd72 ; AND RN register & register ANDRNc 2NEWSYM FxOpd73 ; AND RN register & register ANDRNc 3NEWSYM FxOpd74 ; AND RN register & register ANDRNc 4NEWSYM FxOpd75 ; AND RN register & register ANDRNc 5NEWSYM FxOpd76 ; AND RN register & register ANDRNc 6NEWSYM FxOpd77 ; AND RN register & register ANDRNc 7NEWSYM FxOpd78 ; AND RN register & register ANDRNc 8NEWSYM FxOpd79 ; AND RN register & register ANDRNc 9NEWSYM FxOpd7A ; AND RN register & register
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -