1INCLUDE "config_private.inc"
2
3SECTION code_clib
4SECTION code_l
5
6PUBLIC l_ldd_loop
7PUBLIC l_ldd_loop_0
8PUBLIC l_ldd_loop_small
9
10IF (__CLIB_OPT_UNROLL & 0x80)
11
12EXTERN l_ldd_loop_smc
13defc   l_ldd_loop = l_ldd_loop_smc
14
15EXTERN l_ldd_loop_smc_0
16defc   l_ldd_loop_0 = l_ldd_loop_smc_0
17
18EXTERN l_ldd_loop_smc_small
19defc   l_ldd_loop_small = l_ldd_loop_smc_small
20
21ELSE
22
23EXTERN l_ldd
24EXTERN l_ldd_256, l_ldd_128
25EXTERN l_ldd_64, l_ldd_32, l_ldd_16
26
27l_ldd_loop:
28
29   ld a,b
30
31   or a
32   jp z, fine
33
34l_ldd_loop_0:
35coarse:
36
37   call l_ldd_256
38
39   dec a
40   jp nz, coarse
41
42l_ldd_loop_small:
43fine:
44
45   ld a,c
46
47   cp 16
48   jp c, sub_16
49
50   add a,a
51   call c, l_ldd_128
52
53   add a,a
54   call c, l_ldd_64
55
56   add a,a
57   call c, l_ldd_32
58
59   add a,a
60   call c, l_ldd_16
61
62   ret z
63
64   lddr
65   ret
66
67sub_16:
68
69   or a
70   ret z
71
72   lddr
73   ret
74
75ENDIF
76