forked from KolibriOS/kolibrios
1445 lines
20 KiB
PHP
1445 lines
20 KiB
PHP
|
align 4
|
||
|
|
||
|
OPCODEtable:
|
||
|
|
||
|
dd _00,_00,_00,_00,_00,_00,_00,_00 ;00-07
|
||
|
dd _00,_00,_0A,_0B,_0C,_0D,_0E,_0F ;08-0f
|
||
|
dd _10,_11,_12,_13,_14,_15,_16,_17 ;10-17
|
||
|
dd _18,_19,_1A,_1B,_1C,_1D,_1E,_1f ;18-1f
|
||
|
dd _20,_21,_22,_23,_24,_25,_1f,_1f ;20-27
|
||
|
dd _1f,_1f,_1f,_1f,_1f,_1f,_1f,_1f ;28-2f
|
||
|
dd _1f,_31,_32,_1f,_34,_35,_36,_1f ;30-37
|
||
|
dd _1f,_1f,_1f,_3B,_1f,_1f,_1f,_1f ;38-3f
|
||
|
times 16 dd _40 ;40-4f
|
||
|
dd _50,_51,_52,_53,_54,_1f,_1f,_57 ;50-57
|
||
|
dd _58,_59,_5A,_5B,_5C,_5D,_5E,_1f ;58-5f
|
||
|
times 16 dd _60 ;60-6f
|
||
|
times 16 dd _70 ;70-7f
|
||
|
times 16 dd _80 ;80-8f
|
||
|
times 16 dd _90 ;90-9f
|
||
|
times 16 dd _A0 ;a0-af
|
||
|
times 16 dd _B0 ;b0-bf
|
||
|
times 16 dd _C0 ;c0-cf
|
||
|
times 16 dd _D0 ;d0-df
|
||
|
times 16 dd _E0 ;e0-ef
|
||
|
times 16 dd _1f ;f0-ff
|
||
|
|
||
|
|
||
|
move1 db 0
|
||
|
move2 db 0
|
||
|
move1dot db 0
|
||
|
|
||
|
_1f: ret
|
||
|
|
||
|
;*************************************
|
||
|
|
||
|
_3B:
|
||
|
mcall 3
|
||
|
shl eax,16
|
||
|
shr eax,16
|
||
|
mov [perem],eax
|
||
|
fild [perem]
|
||
|
mcall 26,9
|
||
|
shl eax,16
|
||
|
shr eax,18
|
||
|
mov [perem],eax
|
||
|
fild [perem]
|
||
|
fcom st1
|
||
|
jnc @f
|
||
|
fdivrp
|
||
|
mov [perem],10
|
||
|
fild [perem]
|
||
|
fdivp
|
||
|
jmp .1
|
||
|
@@: fdivp
|
||
|
.1: fld qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.Z]
|
||
|
fld qword [S.X]
|
||
|
fst qword [S.Y]
|
||
|
fstp qword [S.X1]
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],4
|
||
|
ret
|
||
|
|
||
|
_36:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.Y]
|
||
|
fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
|
||
|
fcom st1
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jc @f
|
||
|
fstp qword [S.X]
|
||
|
fstp st0
|
||
|
jmp .1
|
||
|
@@: fstp st0
|
||
|
fstp qword [S.X]
|
||
|
.1:
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.Y]
|
||
|
fld qword [S.T]
|
||
|
fstp qword [S.Z]
|
||
|
; fldz
|
||
|
; fstp qword [S.T]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_35:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fldz
|
||
|
fcomp st1
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jz @f
|
||
|
jc @f
|
||
|
frndint
|
||
|
fcom qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jnc .0
|
||
|
fld1
|
||
|
faddp
|
||
|
jmp .0
|
||
|
@@: frndint
|
||
|
fcom qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jc .0
|
||
|
jz .0
|
||
|
fld1
|
||
|
fsubp
|
||
|
.0: fld qword [S.X]
|
||
|
fsubrp
|
||
|
fst qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
call draw_stack
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
|
||
|
_34:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fldz
|
||
|
fcomp st1
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jz @f
|
||
|
jc @f
|
||
|
frndint
|
||
|
fcom qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jnc .0
|
||
|
fld1
|
||
|
faddp
|
||
|
jmp .0
|
||
|
@@: frndint
|
||
|
fcom qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jc .0
|
||
|
jz .0
|
||
|
fld1
|
||
|
fsubp
|
||
|
.0: fst qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
call draw_stack
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_32:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fstp qword [S.X1]
|
||
|
fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
fld1
|
||
|
jz @f
|
||
|
jc @f
|
||
|
fchs
|
||
|
@@: fst qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
call draw_stack
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_31:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fabs
|
||
|
fst qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
call draw_stack
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
;************************************
|
||
|
_E0:
|
||
|
;x=0 ;0!=x
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jnz @f
|
||
|
ret
|
||
|
@@: sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0xE0;90
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
jge @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_D0:
|
||
|
inc [schk]
|
||
|
|
||
|
sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0xD0
|
||
|
mov ebx,eax
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
ja @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: frndint
|
||
|
fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
shl eax,31-4
|
||
|
shr eax,31-4
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
|
||
|
fld qword [eax]
|
||
|
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.Z]
|
||
|
fld qword [S.X]
|
||
|
fst qword [S.Y]
|
||
|
fstp qword [S.X1]
|
||
|
|
||
|
fstp qword [S.X]
|
||
|
|
||
|
call draw_registers
|
||
|
call draw_stack
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_C0:
|
||
|
;x<0 ;0<x
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jz @f
|
||
|
jc @f
|
||
|
ret
|
||
|
@@: sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0xC0
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
jge @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_B0:
|
||
|
inc [schk]
|
||
|
|
||
|
sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0xB0
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
jge @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
mov ecx,16
|
||
|
xor edx,edx
|
||
|
div ecx
|
||
|
mov eax,edx
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [S.X]
|
||
|
fstp qword [eax]
|
||
|
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_A0:
|
||
|
inc [schk]
|
||
|
mov cl,[schk]
|
||
|
|
||
|
sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0xA0
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
jge @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
mov [schk],al
|
||
|
|
||
|
mov al,[RS+3]
|
||
|
mov [RS+4],al
|
||
|
mov al,[RS+2]
|
||
|
mov [RS+3],al
|
||
|
mov al,[RS+1]
|
||
|
mov [RS+2],al
|
||
|
mov al,[RS+0]
|
||
|
mov [RS+1],al
|
||
|
|
||
|
mov [RS+0],cl
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_90:
|
||
|
;x>=0 ;0>x
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jp @f
|
||
|
jz @f
|
||
|
jc @f
|
||
|
jmp .1
|
||
|
@@: ret
|
||
|
.1: sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0x90
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
jge @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_80:
|
||
|
inc [schk]
|
||
|
sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0x80
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
jge @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_70: ;x!=0 ;x=0
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jz @f
|
||
|
ret
|
||
|
@@: sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0x70
|
||
|
mov ebx,eax
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
cmp ebx,6
|
||
|
jge @f
|
||
|
fld1
|
||
|
cmp ebx,4
|
||
|
jge .2
|
||
|
fsubrp
|
||
|
jmp @f
|
||
|
.2: faddp
|
||
|
@@: fst qword [eax]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_5D:
|
||
|
inc [schk]
|
||
|
fld qword [R.0]
|
||
|
fld1
|
||
|
fsubp
|
||
|
fst qword [R.0]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
test eax,eax
|
||
|
jz @f
|
||
|
movzx eax,[schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
jmp .1
|
||
|
@@: inc [schk]
|
||
|
.1: call draw_registers
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_5B:
|
||
|
inc [schk]
|
||
|
fld qword [R.1]
|
||
|
fld1
|
||
|
fsubp
|
||
|
fst qword [R.1]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
test eax,eax
|
||
|
jz @f
|
||
|
movzx eax,[schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
jmp .1
|
||
|
@@: inc [schk]
|
||
|
.1: call draw_registers
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
|
||
|
_5A:
|
||
|
inc [schk]
|
||
|
fld qword [R.3]
|
||
|
fld1
|
||
|
fsubp
|
||
|
fst qword [R.3]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
test eax,eax
|
||
|
jz @f
|
||
|
movzx eax,[schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
jmp .1
|
||
|
@@: inc [schk]
|
||
|
.1: call draw_registers
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
|
||
|
_58: ;F,L2
|
||
|
inc [schk]
|
||
|
fld qword [R.2]
|
||
|
fld1
|
||
|
fsubp
|
||
|
fst qword [R.2]
|
||
|
fabs
|
||
|
fistp [perem]
|
||
|
mov eax,[perem]
|
||
|
test eax,eax
|
||
|
jz @f
|
||
|
movzx eax,[schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
jmp .1
|
||
|
@@: inc [schk]
|
||
|
.1: call draw_registers
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
|
||
|
|
||
|
_5E: ;x=0
|
||
|
; bt [flags],0
|
||
|
; jnc @f
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jnz @f
|
||
|
inc [schk]
|
||
|
ret
|
||
|
@@: movzx eax, byte [schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_5C: ;x<0
|
||
|
; bt [flags],0
|
||
|
; jnc @f
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jc @f
|
||
|
jz @f
|
||
|
inc [schk]
|
||
|
ret
|
||
|
@@: movzx eax, byte [schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_59: ;x>=0
|
||
|
; bt [flags],0
|
||
|
; jnc @f
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jp @f
|
||
|
jz @f
|
||
|
jc @f
|
||
|
jmp .1
|
||
|
@@: inc [schk]
|
||
|
ret
|
||
|
.1: movzx eax, byte [schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_57: ;x!=0
|
||
|
; bt [flags],0
|
||
|
; jnc @f
|
||
|
inc [schk]
|
||
|
@@: fldz
|
||
|
fcomp qword [S.X]
|
||
|
fstsw ax
|
||
|
sahf
|
||
|
jz @f
|
||
|
inc [schk]
|
||
|
ret
|
||
|
@@: movzx eax, byte [schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
_54:
|
||
|
inc [schk]
|
||
|
ret
|
||
|
|
||
|
_53: bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
mov al,[RS+3]
|
||
|
mov [RS+4],al
|
||
|
mov al,[RS+2]
|
||
|
mov [RS+3],al
|
||
|
mov al,[RS+1]
|
||
|
mov [RS+2],al
|
||
|
mov al,[RS+0]
|
||
|
mov [RS+1],al
|
||
|
mov al,[schk]
|
||
|
inc al
|
||
|
mov [RS+0],al
|
||
|
movzx eax,[schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
@@: bts [flags],0
|
||
|
movzx eax,[schk]
|
||
|
add eax,PMEM
|
||
|
movzx eax,byte [eax]
|
||
|
shl eax,2
|
||
|
add eax,OPCODEtable
|
||
|
mov ebx,[eax]
|
||
|
call ebx
|
||
|
btr [flags],0
|
||
|
call draw_schk
|
||
|
call draw_prog
|
||
|
ret
|
||
|
|
||
|
_52: inc [schk]
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
mov al,[RS+0]
|
||
|
mov [schk],al
|
||
|
mov al,[RS+1]
|
||
|
mov [RS+0],al
|
||
|
mov al,[RS+2]
|
||
|
mov [RS+1],al
|
||
|
mov al,[RS+3]
|
||
|
mov [RS+2],al
|
||
|
mov al,[RS+4]
|
||
|
mov [RS+3],al
|
||
|
mov byte [RS+4],0
|
||
|
ret
|
||
|
@@: mov [schk],0
|
||
|
call draw_prog
|
||
|
call draw_schk
|
||
|
ret
|
||
|
|
||
|
|
||
|
_51:
|
||
|
; bt [flags],0
|
||
|
; jnc @f
|
||
|
inc [schk]
|
||
|
@@: movzx eax, byte [schk]
|
||
|
add eax,PMEM
|
||
|
mov al,[eax]
|
||
|
mov [schk],al
|
||
|
ret
|
||
|
|
||
|
|
||
|
_50:
|
||
|
btc [flags],0
|
||
|
jc @f
|
||
|
ret
|
||
|
@@: inc [schk]
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
call draw_registers
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_60:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0x60
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [eax]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.Z]
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.Y]
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
call draw_registers
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],12
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_40:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
sub eax,0x40
|
||
|
shl eax,3
|
||
|
add eax,R.0
|
||
|
fld qword [S.X]
|
||
|
fstp qword [eax]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
call draw_registers
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],11
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_25:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X1]
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.X1]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.X]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.Y]
|
||
|
fld qword [S.T]
|
||
|
fstp qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_24:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fld qword [S.Y]
|
||
|
call FpuXexpY
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_23:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fld1
|
||
|
fdivrp
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_22:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fmul st,st
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_21:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fsqrt
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
|
||
|
_20:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fstp qword [S.X1]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.Z]
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.Y]
|
||
|
fldpi
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_1E:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuTan
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
|
||
|
_1D:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuCos
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_1C:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuSin
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_1B:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuArctan
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_1A:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuArccos
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
_19:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuArcsin
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
|
||
|
_18:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fldln2
|
||
|
fxch
|
||
|
fyl2x
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_17:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
fldlg2
|
||
|
fxch
|
||
|
fyl2x
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
|
||
|
_16:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuEexpX
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_15:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: mov [perem],10
|
||
|
fild [perem]
|
||
|
fld qword [S.X]
|
||
|
fst qword [S.X1]
|
||
|
call FpuXexpY
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_14:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.Y]
|
||
|
fld qword [S.X]
|
||
|
fst qword [S.Y]
|
||
|
fstp qword [S.X1]
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
_13:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.Y]
|
||
|
fld qword [S.X]
|
||
|
fdivp
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.X1]
|
||
|
fstp qword [S.X]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.Y]
|
||
|
fld qword [S.T]
|
||
|
fstp qword [S.Z]
|
||
|
; fldz
|
||
|
; fstp qword [S.T]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
_12:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.Y]
|
||
|
fld qword [S.X]
|
||
|
fmulp
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.X1]
|
||
|
fstp qword [S.X]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.Y]
|
||
|
fld qword [S.T]
|
||
|
fstp qword [S.Z]
|
||
|
; fldz
|
||
|
; fstp qword [S.T]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
_11:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.Y]
|
||
|
fld qword [S.X]
|
||
|
fsubp
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.X1]
|
||
|
fstp qword [S.X]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.Y]
|
||
|
fld qword [S.T]
|
||
|
fstp qword [S.Z]
|
||
|
; fldz
|
||
|
; fstp qword [S.T]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_10:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.X]
|
||
|
fld qword [S.Y]
|
||
|
faddp
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.X1]
|
||
|
fstp qword [S.X]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.Y]
|
||
|
fld qword [S.T]
|
||
|
fst qword [S.Z]
|
||
|
; fldz
|
||
|
; fstp qword [S.T]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
|
||
|
_0F:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: fld qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.Z]
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.Y]
|
||
|
fld qword [S.X1]
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
fld qword [S.X]
|
||
|
call ftos
|
||
|
call draw_string
|
||
|
bts [flags],10
|
||
|
btr [flags],6
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
|
||
|
_0E:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@:
|
||
|
; call stof
|
||
|
; fstp qword [S.X]
|
||
|
fld qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.Z]
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.Y]
|
||
|
call draw_string
|
||
|
; call stof
|
||
|
; fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
bts [flags],10
|
||
|
bts [flags],7
|
||
|
btr [flags],6
|
||
|
ret
|
||
|
_0D:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: bt [flags],3
|
||
|
jc .F
|
||
|
fldz
|
||
|
fstp qword [S.X]
|
||
|
mov esi,string_zero
|
||
|
mov edi,string
|
||
|
mov ecx,13
|
||
|
cld
|
||
|
@@: movsb
|
||
|
loop @b
|
||
|
mov [move1],0
|
||
|
mov [move2],0
|
||
|
mov [move1dot],0
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
btr [flags],6
|
||
|
btr [flags],10
|
||
|
btr [flags],11
|
||
|
btr [flags],4
|
||
|
btr [flags],8
|
||
|
btr [flags],9
|
||
|
ret
|
||
|
.F:
|
||
|
btr [flags],3
|
||
|
ret
|
||
|
_0C:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: btc [flags],6
|
||
|
btr [flags],10
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
cmp byte [string+12],0x20
|
||
|
jne @f
|
||
|
mov word [string+11],0x3030
|
||
|
@@:
|
||
|
cmp byte [string+1],"0"
|
||
|
je @f
|
||
|
ret
|
||
|
@@: cmp word [string+2]," "
|
||
|
je @f
|
||
|
cmp word [string+2],". "
|
||
|
je @f
|
||
|
ret
|
||
|
@@: mov dword [string]," 1 "
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
_0B:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: jmp .0
|
||
|
; test [flags],(1 shl 7)
|
||
|
jz @f
|
||
|
call null.null
|
||
|
jmp .0
|
||
|
@@: test [flags],(1 shl 10)
|
||
|
jz .0
|
||
|
call null
|
||
|
.0:; fld qword [S.X]
|
||
|
; call ftos
|
||
|
bt [flags],6
|
||
|
jc @f
|
||
|
cmp byte [string],'-'
|
||
|
jne .sign_1
|
||
|
mov byte [string],' '
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
.sign_1:
|
||
|
mov byte [string],'-'
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
@@:
|
||
|
cmp byte [string+10],'-'
|
||
|
jne .sign_2
|
||
|
mov byte [string+10],' '
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
.sign_2:
|
||
|
mov byte [string+10],'-'
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
|
||
|
_0A:
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: test [flags],(1 shl 7)
|
||
|
jz @f
|
||
|
call null.null
|
||
|
jmp .0
|
||
|
@@: test [flags],(1 shl 10)
|
||
|
jz .0
|
||
|
call null
|
||
|
.0: cmp [move1],8
|
||
|
jge .nop
|
||
|
cmp [move1],0
|
||
|
jne @f
|
||
|
mov [move1],1
|
||
|
mov [move1dot],1
|
||
|
mov word [string+1],'0.'
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
.nop: ret
|
||
|
@@:
|
||
|
cmp [move1dot],1
|
||
|
je .nop
|
||
|
movzx esi,[move1]
|
||
|
mov byte [esi+string+1],'.'
|
||
|
mov [move1dot],1
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
|
||
|
_00:
|
||
|
sub eax,OPCODEtable
|
||
|
shr eax,2
|
||
|
add eax,0x30
|
||
|
push eax
|
||
|
bt [flags],0
|
||
|
jnc @f
|
||
|
inc [schk]
|
||
|
@@: test [flags],(1 shl 7)
|
||
|
jz @f
|
||
|
call null.null
|
||
|
jmp .0
|
||
|
@@: test [flags],(1 shl 10)
|
||
|
jz .0
|
||
|
call null
|
||
|
.0: pop ebx
|
||
|
test [flags],(1 shl 6)
|
||
|
jnz @f
|
||
|
cmp [move1],8
|
||
|
jge .nop
|
||
|
movzx esi,[move1]
|
||
|
movzx edi,[move1dot]
|
||
|
add esi,edi
|
||
|
mov byte [esi+string+1],bl
|
||
|
inc [move1]
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
@@:
|
||
|
cmp [move2],0
|
||
|
jne @f
|
||
|
mov byte [string+12],bl
|
||
|
inc [move2]
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
ret
|
||
|
@@:
|
||
|
mov al, [string+12]
|
||
|
mov [string+11],al
|
||
|
mov byte [string+12],bl
|
||
|
call draw_string
|
||
|
call stof
|
||
|
fstp qword [S.X]
|
||
|
call draw_stack
|
||
|
.nop: ret
|
||
|
|
||
|
null: fld qword [S.Z]
|
||
|
fstp qword [S.T]
|
||
|
fld qword [S.Y]
|
||
|
fstp qword [S.Z]
|
||
|
fld qword [S.X]
|
||
|
fstp qword [S.Y]
|
||
|
.null: call null_string
|
||
|
btr [flags],10
|
||
|
btr [flags],7
|
||
|
ret
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
null_string:
|
||
|
mov esi,string_zero
|
||
|
mov edi,string
|
||
|
mov ecx,13
|
||
|
cld
|
||
|
@@: movsb
|
||
|
loop @b
|
||
|
mov [move1],0
|
||
|
mov [move2],0
|
||
|
mov [move1dot],0
|
||
|
ret
|
||
|
|