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_outi
12
13IF __SMS
14
15   EXTERN asm_SMSlib_outi_block
16   defc   l_outi = asm_SMSlib_outi_block
17
18   ; other outi entries defined in asm_SMSlib_outi_block
19
20ELSE
21
22PUBLIC l_outi_256
23PUBLIC l_outi_128
24PUBLIC l_outi_64
25PUBLIC l_outi_32
26PUBLIC l_outi_16
27PUBLIC l_outi_8
28PUBLIC l_outi_4
29PUBLIC l_outi_2
30PUBLIC l_outi_1
31
32defc l_outi_32 = l_outi_64 + 64
33defc l_outi_16 = l_outi_32 + 32
34defc l_outi_8  = l_outi_16 + 16
35defc l_outi_4  = l_outi_8  +  8
36defc l_outi_2  = l_outi_4  +  4
37defc l_outi_1  = l_outi_2  +  2
38
39l_outi_256:
40
41   call l_outi_128
42
43l_outi_128:
44
45   call l_outi_64
46
47IF (__CLIB_OPT_UNROLL & 0xc0)
48
49   jp l_outi_64
50
51sub_14:
52
53   or a
54   jp z, l_outi_256
55
56   otir
57   ret
58
59PUBLIC l_outi_loop_smc
60
61l_outi_loop_smc:
62
63   ld a,b
64
65   cp 14
66   jp c, sub_14
67
68   add a,a
69   call c, l_outi_128
70
71   add a,a
72   call c, l_outi_64
73
74   ret z
75
76enter_loop:
77
78   xor a
79   sub b
80   and $3f
81   add a,a
82
83   ld (active_jr + 1),a
84
85active_jr:
86
87   jr 0
88
89ENDIF
90
91l_outi_64:
92
93   outi
94   outi
95   outi
96   outi
97   outi
98   outi
99   outi
100   outi
101
102   outi
103   outi
104   outi
105   outi
106   outi
107   outi
108   outi
109   outi
110
111   outi
112   outi
113   outi
114   outi
115   outi
116   outi
117   outi
118   outi
119
120   outi
121   outi
122   outi
123   outi
124   outi
125   outi
126   outi
127   outi
128
129   outi
130   outi
131   outi
132   outi
133   outi
134   outi
135   outi
136   outi
137
138   outi
139   outi
140   outi
141   outi
142   outi
143   outi
144   outi
145   outi
146
147   outi
148   outi
149   outi
150   outi
151   outi
152   outi
153   outi
154   outi
155
156   outi
157   outi
158   outi
159   outi
160   outi
161   outi
162   outi
163   outi
164
165l_outi:
166
167   ret
168
169ENDIF
170