Rev 798 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
716 | lvd | 1 | #include "defs.h" |
2 | #include "tables.h" |
||
3 | |||
4 | const unsigned char incf[] = |
||
5 | { |
||
6 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08 |
||
7 | ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10 |
||
8 | ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08 |
||
9 | ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x30 |
||
10 | ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28 |
||
11 | ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x30 |
||
12 | ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28 |
||
13 | ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x10 |
||
14 | ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08 |
||
15 | ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10 |
||
16 | ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08 |
||
17 | ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x30 |
||
18 | ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28 |
||
19 | ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x30 |
||
20 | ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28 |
||
21 | ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x94 |
||
22 | ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88 |
||
23 | ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x90 |
||
24 | ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88 |
||
25 | ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xb0 |
||
26 | ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8 |
||
27 | ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb0 |
||
28 | ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8 |
||
29 | ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x90 |
||
30 | ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88 |
||
31 | ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x90 |
||
32 | ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88 |
||
33 | ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xb0 |
||
34 | ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8 |
||
35 | ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb0 |
||
36 | ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8 |
||
37 | ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x50 |
||
38 | }; |
||
39 | |||
40 | const unsigned char decf[] = |
||
41 | { |
||
42 | 0xba,0x42,0x02,0x02,0x02,0x02,0x02,0x02 |
||
43 | ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a |
||
44 | ,0x1a,0x02,0x02,0x02,0x02,0x02,0x02,0x02 |
||
45 | ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a |
||
46 | ,0x1a,0x22,0x22,0x22,0x22,0x22,0x22,0x22 |
||
47 | ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a |
||
48 | ,0x3a,0x22,0x22,0x22,0x22,0x22,0x22,0x22 |
||
49 | ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a |
||
50 | ,0x3a,0x02,0x02,0x02,0x02,0x02,0x02,0x02 |
||
51 | ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a |
||
52 | ,0x1a,0x02,0x02,0x02,0x02,0x02,0x02,0x02 |
||
53 | ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a |
||
54 | ,0x1a,0x22,0x22,0x22,0x22,0x22,0x22,0x22 |
||
55 | ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a |
||
56 | ,0x3a,0x22,0x22,0x22,0x22,0x22,0x22,0x22 |
||
57 | ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a |
||
58 | ,0x3e,0x82,0x82,0x82,0x82,0x82,0x82,0x82 |
||
59 | ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a |
||
60 | ,0x9a,0x82,0x82,0x82,0x82,0x82,0x82,0x82 |
||
61 | ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a |
||
62 | ,0x9a,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2 |
||
63 | ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa |
||
64 | ,0xba,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2 |
||
65 | ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa |
||
66 | ,0xba,0x82,0x82,0x82,0x82,0x82,0x82,0x82 |
||
67 | ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a |
||
68 | ,0x9a,0x82,0x82,0x82,0x82,0x82,0x82,0x82 |
||
69 | ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a |
||
70 | ,0x9a,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2 |
||
71 | ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa |
||
72 | ,0xba,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2 |
||
73 | ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa |
||
74 | }; |
||
75 | |||
800 | DimkaM | 76 | #ifdef __ICL |
716 | lvd | 77 | unsigned char adcf[0x20000]; // flags for adc and add |
78 | |||
796 | DimkaM | 79 | static void make_adc() |
716 | lvd | 80 | { |
800 | DimkaM | 81 | for(unsigned c = 0; c < 2; c++) |
82 | { |
||
83 | for(unsigned x = 0; x < 0x100; x++) |
||
84 | { |
||
85 | for(unsigned y = 0; y < 0x100; y++) |
||
86 | { |
||
716 | lvd | 87 | |
800 | DimkaM | 88 | unsigned res = x + y + c; |
89 | unsigned char fl = 0; |
||
90 | if(!(res & 0xFF)) fl |= ZF; |
||
91 | fl |= (res & (F3 | F5 | SF)); |
||
92 | if(res >= 0x100) fl |= CF; |
||
93 | if(((x & 0x0F) + (y & 0x0F) + c) & 0x10) fl |= HF; |
||
94 | int ri = (signed char)x + (signed char)y + int(c); |
||
95 | if(ri >= 0x80 || ri <= -0x81) fl |= PV; |
||
716 | lvd | 96 | |
800 | DimkaM | 97 | adcf[c * 0x10000 + x * 0x100 + y] = fl; |
98 | } |
||
99 | } |
||
100 | } |
||
716 | lvd | 101 | } |
800 | DimkaM | 102 | #else |
103 | #undef adcf |
||
104 | constexpr TMakeAdcf::TMakeAdcf() : adcf{ } |
||
105 | { |
||
106 | for(unsigned c = 0; c < 2; c++) |
||
107 | { |
||
108 | for(unsigned x = 0; x < 0x100; x++) |
||
109 | { |
||
110 | for(unsigned y = 0; y < 0x100; y++) |
||
111 | { |
||
716 | lvd | 112 | |
800 | DimkaM | 113 | unsigned res = x + y + c; |
114 | unsigned char fl = 0; |
||
115 | if(!(res & 0xFF)) fl |= ZF; |
||
116 | fl |= (res & (F3 | F5 | SF)); |
||
117 | if(res >= 0x100) fl |= CF; |
||
118 | if(((x & 0x0F) + (y & 0x0F) + c) & 0x10) fl |= HF; |
||
119 | int ri = (signed char)x + (signed char)y + int(c); |
||
120 | if(ri >= 0x80 || ri <= -0x81) fl |= PV; |
||
121 | |||
122 | adcf[c * 0x10000 + x * 0x100 + y] = fl; |
||
123 | } |
||
124 | } |
||
125 | } |
||
126 | } |
||
127 | |||
128 | constexpr TMakeAdcf MakeAdcf; |
||
129 | #endif |
||
130 | |||
131 | #ifdef __ICL |
||
716 | lvd | 132 | unsigned char sbcf[0x20000]; // flags for sub and sbc |
133 | unsigned char cpf[0x10000]; // flags for cp |
||
134 | unsigned char cpf8b[0x10000]; // flags for CPD/CPI/CPDR/CPIR |
||
135 | |||
796 | DimkaM | 136 | static void make_sbc() |
716 | lvd | 137 | { |
800 | DimkaM | 138 | for(int c = 0; c < 2; c++) |
139 | { |
||
140 | for(int x = 0; x < 0x100; x++) |
||
141 | { |
||
142 | for(int y = 0; y < 0x100; y++) |
||
143 | { |
||
144 | int res = x - y - c; |
||
145 | unsigned char fl = res & (F3 | F5 | SF); |
||
146 | if(!(res & 0xFF)) fl |= ZF; |
||
147 | if(res & 0x10000) fl |= CF; |
||
148 | int r = (signed char)x - (signed char)y - c; |
||
149 | if(r >= 0x80 || r < -0x80) fl |= PV; |
||
150 | if(((x & 0x0F) - (res & 0x0F) - c) & 0x10) fl |= HF; |
||
151 | fl |= NF; |
||
152 | sbcf[c * 0x10000 + x * 0x100 + y] = fl; |
||
153 | } |
||
154 | } |
||
155 | } |
||
156 | for(int i = 0; i < 0x10000; i++) |
||
157 | { |
||
158 | cpf[i] = (sbcf[i] & ~(F3 | F5)) | (i & (F3 | F5)); |
||
159 | unsigned char tempbyte = u8((i >> 8) - (i & 0xFF) - ((sbcf[i] & HF) >> 4)); |
||
160 | cpf8b[i] = (sbcf[i] & ~(F3 | F5 | PV | CF)) + (tempbyte & F3) + ((tempbyte << 4) & F5); |
||
161 | } |
||
716 | lvd | 162 | } |
800 | DimkaM | 163 | #else |
164 | #undef sbcf |
||
165 | #undef cpf |
||
166 | #undef cpf8b |
||
716 | lvd | 167 | |
800 | DimkaM | 168 | constexpr TMakeSbc::TMakeSbc() : sbcf{ }, cpf{ }, cpf8b{ } |
169 | { |
||
170 | for(int c = 0; c < 2; c++) |
||
171 | { |
||
172 | for(int x = 0; x < 0x100; x++) |
||
173 | { |
||
174 | for(int y = 0; y < 0x100; y++) |
||
175 | { |
||
176 | int res = x - y - c; |
||
177 | unsigned char fl = u8(res & (F3 | F5 | SF)); |
||
178 | if(!(res & 0xFF)) fl |= ZF; |
||
179 | if(res & 0x10000) fl |= CF; |
||
180 | int r = (signed char)x - (signed char)y - c; |
||
181 | if(r >= 0x80 || r < -0x80) fl |= PV; |
||
182 | if(((x & 0x0F) - (res & 0x0F) - c) & 0x10) fl |= HF; |
||
183 | fl |= NF; |
||
184 | sbcf[c * 0x10000 + x * 0x100 + y] = fl; |
||
185 | } |
||
186 | } |
||
187 | } |
||
188 | for(int i = 0; i < 0x10000; i++) |
||
189 | { |
||
190 | cpf[i] = (sbcf[i] & ~(F3 | F5)) | (i & (F3 | F5)); |
||
191 | unsigned char tempbyte = u8((i >> 8) - (i & 0xFF) - ((sbcf[i] & HF) >> 4)); |
||
192 | cpf8b[i] = (sbcf[i] & ~(F3 | F5 | PV | CF)) + (tempbyte & F3) + ((tempbyte << 4) & F5); |
||
193 | } |
||
194 | } |
||
195 | |||
196 | constexpr TMakeSbc MakeSbc; |
||
197 | #endif |
||
198 | |||
199 | |||
200 | #ifdef __ICL |
||
716 | lvd | 201 | unsigned char log_f[0x100]; |
796 | DimkaM | 202 | static void make_log() |
716 | lvd | 203 | { |
204 | for (int x = 0; x < 0x100; x++) { |
||
205 | unsigned char fl = x & (F3|F5|SF); |
||
206 | unsigned char p = PV; |
||
207 | for (int i = 0x80; i; i /= 2) |
||
208 | if (x & i) p ^= PV; |
||
209 | log_f[x] = fl | p; |
||
210 | } |
||
211 | log_f[0] |= ZF; |
||
212 | } |
||
800 | DimkaM | 213 | #else |
214 | #undef log_f |
||
215 | constexpr TLogf::TLogf() : log_f{ } |
||
216 | { |
||
217 | for(int x = 0; x < 0x100; x++) |
||
218 | { |
||
219 | unsigned char fl = x & (F3 | F5 | SF); |
||
220 | unsigned char p = PV; |
||
221 | for(int i = 0x80; i; i /= 2) |
||
222 | if(x & i) p ^= PV; |
||
223 | log_f[x] = fl | p; |
||
224 | } |
||
225 | log_f[0] |= ZF; |
||
226 | } |
||
716 | lvd | 227 | |
800 | DimkaM | 228 | constexpr TLogf Logf; |
229 | #endif |
||
230 | |||
231 | constexpr u8 rlcf[0x100] = // for rlc r. may be for rlca (0x3B mask) |
||
716 | lvd | 232 | { |
800 | DimkaM | 233 | 0x44, 0x00, 0x00, 0x04, 0x08, 0x0c, 0x0c, 0x08 |
234 | , 0x00, 0x04, 0x04, 0x00, 0x0c, 0x08, 0x08, 0x0c |
||
235 | , 0x20, 0x24, 0x24, 0x20, 0x2c, 0x28, 0x28, 0x2c |
||
236 | , 0x24, 0x20, 0x20, 0x24, 0x28, 0x2c, 0x2c, 0x28 |
||
237 | , 0x00, 0x04, 0x04, 0x00, 0x0c, 0x08, 0x08, 0x0c |
||
238 | , 0x04, 0x00, 0x00, 0x04, 0x08, 0x0c, 0x0c, 0x08 |
||
239 | , 0x24, 0x20, 0x20, 0x24, 0x28, 0x2c, 0x2c, 0x28 |
||
240 | , 0x20, 0x24, 0x24, 0x20, 0x2c, 0x28, 0x28, 0x2c |
||
241 | , 0x80, 0x84, 0x84, 0x80, 0x8c, 0x88, 0x88, 0x8c |
||
242 | , 0x84, 0x80, 0x80, 0x84, 0x88, 0x8c, 0x8c, 0x88 |
||
243 | , 0xa4, 0xa0, 0xa0, 0xa4, 0xa8, 0xac, 0xac, 0xa8 |
||
244 | , 0xa0, 0xa4, 0xa4, 0xa0, 0xac, 0xa8, 0xa8, 0xac |
||
245 | , 0x84, 0x80, 0x80, 0x84, 0x88, 0x8c, 0x8c, 0x88 |
||
246 | , 0x80, 0x84, 0x84, 0x80, 0x8c, 0x88, 0x88, 0x8c |
||
247 | , 0xa0, 0xa4, 0xa4, 0xa0, 0xac, 0xa8, 0xa8, 0xac |
||
248 | , 0xa4, 0xa0, 0xa0, 0xa4, 0xa8, 0xac, 0xac, 0xa8 |
||
249 | , 0x01, 0x05, 0x05, 0x01, 0x0d, 0x09, 0x09, 0x0d |
||
250 | , 0x05, 0x01, 0x01, 0x05, 0x09, 0x0d, 0x0d, 0x09 |
||
251 | , 0x25, 0x21, 0x21, 0x25, 0x29, 0x2d, 0x2d, 0x29 |
||
252 | , 0x21, 0x25, 0x25, 0x21, 0x2d, 0x29, 0x29, 0x2d |
||
253 | , 0x05, 0x01, 0x01, 0x05, 0x09, 0x0d, 0x0d, 0x09 |
||
254 | , 0x01, 0x05, 0x05, 0x01, 0x0d, 0x09, 0x09, 0x0d |
||
255 | , 0x21, 0x25, 0x25, 0x21, 0x2d, 0x29, 0x29, 0x2d |
||
256 | , 0x25, 0x21, 0x21, 0x25, 0x29, 0x2d, 0x2d, 0x29 |
||
257 | , 0x85, 0x81, 0x81, 0x85, 0x89, 0x8d, 0x8d, 0x89 |
||
258 | , 0x81, 0x85, 0x85, 0x81, 0x8d, 0x89, 0x89, 0x8d |
||
259 | , 0xa1, 0xa5, 0xa5, 0xa1, 0xad, 0xa9, 0xa9, 0xad |
||
260 | , 0xa5, 0xa1, 0xa1, 0xa5, 0xa9, 0xad, 0xad, 0xa9 |
||
261 | , 0x81, 0x85, 0x85, 0x81, 0x8d, 0x89, 0x89, 0x8d |
||
262 | , 0x85, 0x81, 0x81, 0x85, 0x89, 0x8d, 0x8d, 0x89 |
||
263 | , 0xa5, 0xa1, 0xa1, 0xa5, 0xa9, 0xad, 0xad, 0xa9 |
||
264 | , 0xa1, 0xa5, 0xa5, 0xa1, 0xad, 0xa9, 0xa9, 0xad |
||
716 | lvd | 265 | }; |
266 | |||
800 | DimkaM | 267 | constexpr u8 rrcf[] = // rrc r. may be for rlca (0x3B mask) |
716 | lvd | 268 | { |
800 | DimkaM | 269 | 0x44, 0x81, 0x00, 0x85, 0x00, 0x85, 0x04, 0x81 |
270 | , 0x00, 0x85, 0x04, 0x81, 0x04, 0x81, 0x00, 0x85 |
||
271 | , 0x08, 0x8d, 0x0c, 0x89, 0x0c, 0x89, 0x08, 0x8d |
||
272 | , 0x0c, 0x89, 0x08, 0x8d, 0x08, 0x8d, 0x0c, 0x89 |
||
273 | , 0x00, 0x85, 0x04, 0x81, 0x04, 0x81, 0x00, 0x85 |
||
274 | , 0x04, 0x81, 0x00, 0x85, 0x00, 0x85, 0x04, 0x81 |
||
275 | , 0x0c, 0x89, 0x08, 0x8d, 0x08, 0x8d, 0x0c, 0x89 |
||
276 | , 0x08, 0x8d, 0x0c, 0x89, 0x0c, 0x89, 0x08, 0x8d |
||
277 | , 0x20, 0xa5, 0x24, 0xa1, 0x24, 0xa1, 0x20, 0xa5 |
||
278 | , 0x24, 0xa1, 0x20, 0xa5, 0x20, 0xa5, 0x24, 0xa1 |
||
279 | , 0x2c, 0xa9, 0x28, 0xad, 0x28, 0xad, 0x2c, 0xa9 |
||
280 | , 0x28, 0xad, 0x2c, 0xa9, 0x2c, 0xa9, 0x28, 0xad |
||
281 | , 0x24, 0xa1, 0x20, 0xa5, 0x20, 0xa5, 0x24, 0xa1 |
||
282 | , 0x20, 0xa5, 0x24, 0xa1, 0x24, 0xa1, 0x20, 0xa5 |
||
283 | , 0x28, 0xad, 0x2c, 0xa9, 0x2c, 0xa9, 0x28, 0xad |
||
284 | , 0x2c, 0xa9, 0x28, 0xad, 0x28, 0xad, 0x2c, 0xa9 |
||
285 | , 0x00, 0x85, 0x04, 0x81, 0x04, 0x81, 0x00, 0x85 |
||
286 | , 0x04, 0x81, 0x00, 0x85, 0x00, 0x85, 0x04, 0x81 |
||
287 | , 0x0c, 0x89, 0x08, 0x8d, 0x08, 0x8d, 0x0c, 0x89 |
||
288 | , 0x08, 0x8d, 0x0c, 0x89, 0x0c, 0x89, 0x08, 0x8d |
||
289 | , 0x04, 0x81, 0x00, 0x85, 0x00, 0x85, 0x04, 0x81 |
||
290 | , 0x00, 0x85, 0x04, 0x81, 0x04, 0x81, 0x00, 0x85 |
||
291 | , 0x08, 0x8d, 0x0c, 0x89, 0x0c, 0x89, 0x08, 0x8d |
||
292 | , 0x0c, 0x89, 0x08, 0x8d, 0x08, 0x8d, 0x0c, 0x89 |
||
293 | , 0x24, 0xa1, 0x20, 0xa5, 0x20, 0xa5, 0x24, 0xa1 |
||
294 | , 0x20, 0xa5, 0x24, 0xa1, 0x24, 0xa1, 0x20, 0xa5 |
||
295 | , 0x28, 0xad, 0x2c, 0xa9, 0x2c, 0xa9, 0x28, 0xad |
||
296 | , 0x2c, 0xa9, 0x28, 0xad, 0x28, 0xad, 0x2c, 0xa9 |
||
297 | , 0x20, 0xa5, 0x24, 0xa1, 0x24, 0xa1, 0x20, 0xa5 |
||
298 | , 0x24, 0xa1, 0x20, 0xa5, 0x20, 0xa5, 0x24, 0xa1 |
||
299 | , 0x2c, 0xa9, 0x28, 0xad, 0x28, 0xad, 0x2c, 0xa9 |
||
300 | , 0x28, 0xad, 0x2c, 0xa9, 0x2c, 0xa9, 0x28, 0xad |
||
716 | lvd | 301 | }; |
302 | |||
800 | DimkaM | 303 | |
304 | #ifdef __ICL |
||
305 | unsigned char rlcaf[0x100]; |
||
306 | unsigned char rrcaf[0x100]; |
||
307 | unsigned char rol[0x100]; |
||
308 | unsigned char ror[0x100]; |
||
309 | |||
796 | DimkaM | 310 | static void make_rot() |
716 | lvd | 311 | { |
800 | DimkaM | 312 | for(int i = 0; i < 0x100; i++) |
313 | { |
||
314 | rlcaf[i] = rlcf[i] & 0x3B; // rra,rla uses same tables |
||
315 | rrcaf[i] = rrcf[i] & 0x3B; |
||
316 | rol[i] = u8((i << 1) + (i >> 7)); |
||
317 | ror[i] = u8((i >> 1) + (i << 7)); |
||
318 | } |
||
716 | lvd | 319 | } |
800 | DimkaM | 320 | #else |
321 | #undef rol |
||
322 | #undef ror |
||
323 | #undef rlcaf |
||
324 | #undef rrcaf |
||
325 | constexpr TMakeRot::TMakeRot() : rol{ }, ror{ }, rlcaf{ }, rrcaf{ } |
||
326 | { |
||
327 | for(int i = 0; i < 0x100; i++) |
||
328 | { |
||
329 | rlcaf[i] = rlcf[i] & 0x3B; // rra,rla uses same tables |
||
330 | rrcaf[i] = rrcf[i] & 0x3B; |
||
331 | rol[i] = u8((i << 1) + (i >> 7)); |
||
332 | ror[i] = u8((i >> 1) + (i << 7)); |
||
333 | } |
||
334 | } |
||
716 | lvd | 335 | |
800 | DimkaM | 336 | constexpr TMakeRot MakeRot; |
337 | #endif |
||
338 | |||
716 | lvd | 339 | const unsigned char rl0[] = |
340 | { |
||
341 | 0x44,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08 |
||
342 | ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c |
||
343 | ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c |
||
344 | ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28 |
||
345 | ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c |
||
346 | ,0x04,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08 |
||
347 | ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28 |
||
348 | ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c |
||
349 | ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c |
||
350 | ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88 |
||
351 | ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8 |
||
352 | ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac |
||
353 | ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88 |
||
354 | ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c |
||
355 | ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac |
||
356 | ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8 |
||
357 | ,0x45,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09 |
||
358 | ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d |
||
359 | ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d |
||
360 | ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29 |
||
361 | ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d |
||
362 | ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09 |
||
363 | ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29 |
||
364 | ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d |
||
365 | ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d |
||
366 | ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89 |
||
367 | ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9 |
||
368 | ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad |
||
369 | ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89 |
||
370 | ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d |
||
371 | ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad |
||
372 | ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9 |
||
373 | }; |
||
374 | |||
375 | const unsigned char rl1[] = |
||
376 | { |
||
377 | 0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c |
||
378 | ,0x04,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08 |
||
379 | ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28 |
||
380 | ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c |
||
381 | ,0x04,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08 |
||
382 | ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c |
||
383 | ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c |
||
384 | ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28 |
||
385 | ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88 |
||
386 | ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c |
||
387 | ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac |
||
388 | ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8 |
||
389 | ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c |
||
390 | ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88 |
||
391 | ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8 |
||
392 | ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac |
||
393 | ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d |
||
394 | ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09 |
||
395 | ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29 |
||
396 | ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d |
||
397 | ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09 |
||
398 | ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d |
||
399 | ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d |
||
400 | ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29 |
||
401 | ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89 |
||
402 | ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d |
||
403 | ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad |
||
404 | ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9 |
||
405 | ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d |
||
406 | ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89 |
||
407 | ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9 |
||
408 | ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad |
||
409 | }; |
||
410 | |||
411 | const unsigned char rr0[] = |
||
412 | { |
||
413 | 0x44,0x45,0x00,0x01,0x00,0x01,0x04,0x05 |
||
414 | ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01 |
||
415 | ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09 |
||
416 | ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d |
||
417 | ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01 |
||
418 | ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05 |
||
419 | ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d |
||
420 | ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09 |
||
421 | ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21 |
||
422 | ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25 |
||
423 | ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d |
||
424 | ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29 |
||
425 | ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25 |
||
426 | ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21 |
||
427 | ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29 |
||
428 | ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d |
||
429 | ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01 |
||
430 | ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05 |
||
431 | ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d |
||
432 | ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09 |
||
433 | ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05 |
||
434 | ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01 |
||
435 | ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09 |
||
436 | ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d |
||
437 | ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25 |
||
438 | ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21 |
||
439 | ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29 |
||
440 | ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d |
||
441 | ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21 |
||
442 | ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25 |
||
443 | ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d |
||
444 | ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29 |
||
445 | }; |
||
446 | |||
447 | const unsigned char rr1[] = |
||
448 | { |
||
449 | 0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81 |
||
450 | ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85 |
||
451 | ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d |
||
452 | ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89 |
||
453 | ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85 |
||
454 | ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81 |
||
455 | ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89 |
||
456 | ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d |
||
457 | ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5 |
||
458 | ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1 |
||
459 | ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9 |
||
460 | ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad |
||
461 | ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1 |
||
462 | ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5 |
||
463 | ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad |
||
464 | ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9 |
||
465 | ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85 |
||
466 | ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81 |
||
467 | ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89 |
||
468 | ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d |
||
469 | ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81 |
||
470 | ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85 |
||
471 | ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d |
||
472 | ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89 |
||
473 | ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1 |
||
474 | ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5 |
||
475 | ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad |
||
476 | ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9 |
||
477 | ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5 |
||
478 | ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1 |
||
479 | ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9 |
||
480 | ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad |
||
481 | }; |
||
482 | |||
483 | const unsigned char sraf[] = |
||
484 | { |
||
485 | 0x44,0x45,0x00,0x01,0x00,0x01,0x04,0x05 |
||
486 | ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01 |
||
487 | ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09 |
||
488 | ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d |
||
489 | ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01 |
||
490 | ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05 |
||
491 | ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d |
||
492 | ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09 |
||
493 | ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21 |
||
494 | ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25 |
||
495 | ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d |
||
496 | ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29 |
||
497 | ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25 |
||
498 | ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21 |
||
499 | ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29 |
||
500 | ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d |
||
501 | ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85 |
||
502 | ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81 |
||
503 | ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89 |
||
504 | ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d |
||
505 | ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81 |
||
506 | ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85 |
||
507 | ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d |
||
508 | ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89 |
||
509 | ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1 |
||
510 | ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5 |
||
511 | ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad |
||
512 | ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9 |
||
513 | ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5 |
||
514 | ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1 |
||
515 | ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9 |
||
516 | ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad |
||
517 | }; |
||
518 | |||
519 | void init_z80tables() |
||
520 | { |
||
800 | DimkaM | 521 | #ifdef __ICL |
716 | lvd | 522 | make_adc(); |
523 | make_sbc(); |
||
524 | make_log(); |
||
525 | make_rot(); |
||
800 | DimkaM | 526 | #endif |
716 | lvd | 527 | } |
528 |