Subversion Repositories Kolibri OS

Rev

Rev 551 | Rev 967 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 551 Rev 822
Line 466... Line 466...
466
    jne    no_neg
466
    jne    no_neg
467
    mov    [sign],1
467
    mov    [sign],1
Line 468... Line 468...
468
  
468
  
469
  no_neg:
469
  no_neg:
470
    fld    [tmp2]
-
 
471
    fist   [integer]
-
 
472
    fisub  [integer]
-
 
473
    fldcw  [controlWord]
470
    fld    [tmp2]
474
    cmp    byte [sign], 0     ; change fraction to positive
471
    cmp    byte [sign], 0     ; change fraction to positive
475
    je     no_neg2
472
    je     no_neg2
Line 476... Line 473...
476
    fchs
473
    fchs
-
 
474
 
-
 
475
  no_neg2:
-
 
476
    fadd   [smallValueForRounding]
477
 
477
    fist   [integer]
478
  no_neg2:
478
    fisub  [integer]
Line 479... Line 479...
479
    mov    [res],0     ; convert 6 decimal numbers
479
    mov    [res],0     ; convert 6 decimal numbers
480
    mov    edi,6
480
    mov    edi,6
Line 497... Line 497...
497
    dec    edi
497
    dec    edi
498
    jz	   real_done
498
    jz	   real_done
499
    jmp    newd
499
    jmp    newd
Line 500... Line 500...
500
 
500
 
-
 
501
  real_done:
501
  real_done:
502
    fldcw  [controlWord]
502
    mov    eax,[res]
503
    mov    eax,[res]
503
    mov    [decimal],eax
504
    mov    [decimal],eax
504
    cmp    [integer],0x80000000
505
    cmp    [integer],0x80000000
505
    jne    no_error
506
    jne    no_error
Line 508... Line 509...
508
  
509
  
509
  no_error:
510
  no_error:
510
    mov    [dsign],byte '+'
511
    mov    [dsign],byte '+'
511
    cmp    [sign],byte 0      ; convert negative result
512
    cmp    [sign],byte 0      ; convert negative result
512
    je     no_negative
513
    je     no_negative
513
    mov    eax,[integer]
514
;    mov    eax,[integer]
514
    not    eax
515
;    not    eax
515
    inc    eax
516
;    inc    eax
516
    mov    [integer],eax
517
;    mov    [integer],eax
Line 517... Line 518...
517
    mov    [dsign],byte '-'
518
    mov    [dsign],byte '-'
518
  
519
  
519
  no_negative:
520
  no_negative:
Line 864... Line 865...
864
id            db  0x0,0
865
id            db  0x0,0
865
res           dd  0
866
res           dd  0
866
trans1        dq  0
867
trans1        dq  0
867
trans2        dq  0
868
trans2        dq  0
868
controlWord   dw  1
869
controlWord   dw  1
-
 
870
smallValueForRounding dq 0.0000005 ; 1/2 from last significant digit
869
multipl:      dd  10,16,2
871
multipl:      dd  10,16,2
Line 870... Line 872...
870
 
872
 
871
dsign:
873
dsign:
872
muuta1        db  '+0000000000.000000'
874
muuta1        db  '+0000000000.000000'