File tree 1 file changed +8
-12
lines changed
1 file changed +8
-12
lines changed Original file line number Diff line number Diff line change @@ -24,31 +24,27 @@ __ftod:
24
24
jr z, .nan
25
25
.normal:
26
26
; (Float64_bias - Float32_bias) - 1 (undoing inc a)
27
- ld c, $80 - 1 ; ld bc, $380 - 1
28
- ld d, 0
29
- ld e, a
30
- ; DE = expon
31
- ex de, hl
32
- add hl, bc
33
- ld a, h
34
- ld c, l
35
- ex de, hl
27
+ ; (Float64_bias - Float32_bias) = $0380
28
+ add a, $80 - 1
29
+ ld c, a
30
+ adc a, b
31
+ sub a, c
36
32
; HL = mant
37
33
; C = lo expon
38
34
; A = hi expon
39
35
.shift_28: ; Float64_mant_bits - Float32_mant_bits
40
- ld b, 4
36
+ inc b ; ld b, 4
41
37
.loop:
42
38
add hl, hl
43
39
rl c
44
40
rla
45
41
djnz .loop
42
+ .zero: ; <-- A is zero on this path
46
43
ld b, a
47
44
48
45
; zero low bits
49
46
.infinite:
50
47
or a, a
51
- .zero:
52
48
ex de, hl
53
49
sbc hl, hl
54
50
.finish:
@@ -59,13 +55,13 @@ __ftod:
59
55
60
56
.mant_zero:
61
57
adc a, a
62
- ld b, e ; maybe load all ones or all zeros including signbit
63
58
ld c, l ; HL is zero here
64
59
jr z, .zero
65
60
inc a
66
61
jr nz, .normal
67
62
; infinite
68
63
ld c, $F0
64
+ ld b, e ; load all ones with the signbit
69
65
jr .infinite
70
66
71
67
.subnormal:
You can’t perform that action at this time.
0 commit comments