Details | Last modification | View Log
Rev | Author | Line No. | Line |
---|---|---|---|
1485 | alone | 1 | #ifndef included_f24tof32 |
2 | #define included_f24tof32 |
||
3 | #include "pushpop.z80" |
||
4 | |||
5 | f24tof32: |
||
6 | ;convert an "f24" float to an IEEE-754 binary32 |
||
7 | ;Input: AHL is the input float. BC points to where the f32 should be written. |
||
8 | ;Destroys: None |
||
9 | call pushpop |
||
10 | ex de,hl |
||
11 | ld h,b |
||
12 | ld l,c |
||
13 | ; Check for special values |
||
14 | ld c,a ;save for the sign |
||
15 | add a,a |
||
16 | jr z,f24tof32_return_0 |
||
17 | inc a |
||
18 | inc a |
||
19 | jr z,f24tof32_return_infnan |
||
20 | add a,126 |
||
21 | rra |
||
22 | rl c |
||
23 | rra |
||
24 | rr d |
||
25 | rr e |
||
26 | ld (hl),0 |
||
27 | rr (hl) |
||
28 | inc hl |
||
29 | ld (hl),e |
||
30 | inc hl |
||
31 | ld (hl),d |
||
32 | inc hl |
||
33 | ld (hl),a |
||
34 | ret |
||
35 | f24tof32_return_0: |
||
36 | ld (hl),a |
||
37 | inc hl |
||
38 | ld (hl),a |
||
39 | inc hl |
||
40 | ld (hl),a |
||
41 | rra |
||
42 | inc hl |
||
43 | ld (hl),a |
||
44 | ret |
||
45 | f24tof32_return_infnan: |
||
46 | ld a,d |
||
47 | or e |
||
48 | ld (hl),a |
||
49 | inc hl |
||
50 | ld (hl),a |
||
51 | inc hl |
||
52 | or %10000000 |
||
53 | ld (hl),a |
||
54 | inc hl |
||
55 | ld a,c |
||
56 | or %01111111 |
||
57 | ld (hl),a |
||
58 | ret |
||
59 | #endif |