1INCLUDE "config_private.inc" 2 3IF (__CLIB_OPT_UNROLL & 0xc0) 4 SECTION smc_clib 5 SECTION smc_l 6ELSE 7 SECTION code_clib 8 SECTION code_l 9ENDIF 10 11PUBLIC l_ldi 12 13PUBLIC l_ldi_256 14PUBLIC l_ldi_128 15PUBLIC l_ldi_64 16PUBLIC l_ldi_32 17PUBLIC l_ldi_16 18PUBLIC l_ldi_8 19PUBLIC l_ldi_4 20PUBLIC l_ldi_2 21PUBLIC l_ldi_1 22 23defc l_ldi_32 = l_ldi_64 + 64 24defc l_ldi_16 = l_ldi_32 + 32 25defc l_ldi_8 = l_ldi_16 + 16 26defc l_ldi_4 = l_ldi_8 + 8 27defc l_ldi_2 = l_ldi_4 + 4 28defc l_ldi_1 = l_ldi_2 + 2 29 30l_ldi_256: 31 32 call l_ldi_128 33 34l_ldi_128: 35 36 call l_ldi_64 37 38IF (__CLIB_OPT_UNROLL & 0xc0) 39 40 jp l_ldi_64 41 42sub_14: 43 44 or a 45 ret z 46 47 ldir 48 ret 49 50PUBLIC l_ldi_loop_smc 51PUBLIC l_ldi_loop_smc_0 52PUBLIC l_ldi_loop_smc_small 53 54l_ldi_loop_smc: 55 56 ld a,b 57 58 or a 59 jp z, fine 60 61l_ldi_loop_smc_0: 62coarse: 63 64 call l_ldi_256 65 66 dec a 67 jp nz, coarse 68 69l_ldi_loop_smc_small: 70fine: 71 72 ld a,c 73 74 cp 14 75 jp c, sub_14 76 77 add a,a 78 call c, l_ldi_128 79 80 add a,a 81 call c, l_ldi_64 82 83 ret z 84 85enter_loop: 86 87 xor a 88 sub c 89 and $3f 90 add a,a 91 92 ld (active_jr + 1),a 93 94active_jr: 95 96 jr 0 97 98ENDIF 99 100l_ldi_64: 101 102 ldi 103 ldi 104 ldi 105 ldi 106 ldi 107 ldi 108 ldi 109 ldi 110 111 ldi 112 ldi 113 ldi 114 ldi 115 ldi 116 ldi 117 ldi 118 ldi 119 120 ldi 121 ldi 122 ldi 123 ldi 124 ldi 125 ldi 126 ldi 127 ldi 128 129 ldi 130 ldi 131 ldi 132 ldi 133 ldi 134 ldi 135 ldi 136 ldi 137 138 ldi 139 ldi 140 ldi 141 ldi 142 ldi 143 ldi 144 ldi 145 ldi 146 147 ldi 148 ldi 149 ldi 150 ldi 151 ldi 152 ldi 153 ldi 154 ldi 155 156 ldi 157 ldi 158 ldi 159 ldi 160 ldi 161 ldi 162 ldi 163 ldi 164 165 ldi 166 ldi 167 ldi 168 ldi 169 ldi 170 ldi 171 ldi 172 ldi 173 174l_ldi: 175 176 ret 177