Commit cf6f36d

Nick committed on
Continuing work remapping the flag register...
commit cf6f36d3d034c12b3e402c455bee0ec114267ec6 parent db1b59d
1 changed files +647−719
ModifiedCpu/z80cpu.pas +647−719
@@ -7,14 +7,15 @@
7 7
8 unit Z80CPU; 8 unit Z80CPU;
9 9
10 {$MODE Delphi} 10 {$MODE objfpc}
11 11
12 interface 12 interface
13 13
14 {$define Z_FLAG:=(af.l and %10000000)} 14 {$MACRO ON}
15 {$define N_FLAG:=(af.l and %01000000)} 15 {$define Z_FLAG:=(af.l and 128)}
16 {$define H_FLAG:=(af.l and %00100000)} 16 {$define N_FLAG:=(af.l and 64)}
17 {$define C_FLAG:=(af.l and %00010000)} 17 {$define H_FLAG:=(af.l and 32)}
18 {$define C_FLAG:=(af.l and 16)}
18 19
19 {$include tables.inc} 20 {$include tables.inc}
20 21
@@ -69,7 +70,7 @@ end;
69 70
70 function inc_b: byte; 71 function inc_b: byte;
71 begin 72 begin
72 af.l := inc_f[bc.h] or (af.l and 1); 73 af.l := inc_f[bc.h] or C_FLAG; //(af.l and 1);
73 Inc(bc.h); 74 Inc(bc.h);
74 75
75 Result := 4; 76 Result := 4;
@@ -77,7 +78,7 @@ end;
77 78
78 function dec_b: byte; 79 function dec_b: byte;
79 begin 80 begin
80 af.l := dec_f[bc.h] or (af.l and 1); 81 af.l := dec_f[bc.h] or C_FLAG;
81 Dec(bc.h); 82 Dec(bc.h);
82 83
83 Result := 4; 84 Result := 4;
@@ -95,8 +96,8 @@ function rlca: byte;
95 var 96 var
96 btemp: byte; 97 btemp: byte;
97 begin 98 begin
98 btemp := af.l and 1; 99 btemp := C_FLAG;
99 af.l := rlca_f[btemp][af.h] or (af.l and 196); 100 af.l := rlca_f[btemp][af.h] or Z_FLAG; //(af.l and 196);
100 af.h := rlca_a[btemp][af.h]; 101 af.h := rlca_a[btemp][af.h];
101 102
102 Result := 4; 103 Result := 4;
@@ -132,7 +133,7 @@ end;
132 133
133 function inc_c: byte; 134 function inc_c: byte;
134 begin 135 begin
135 af.l := inc_f[bc.l] or (af.l and 1); 136 af.l := inc_f[bc.l] or C_FLAG; //(af.l and 1);
136 Inc(bc.l); 137 Inc(bc.l);
137 138
138 Result := 4; 139 Result := 4;
@@ -140,7 +141,7 @@ end;
140 141
141 function dec_c: byte; 142 function dec_c: byte;
142 begin 143 begin
143 af.l := dec_f[bc.l] or (af.l and 1); 144 af.l := dec_f[bc.l] or C_FLAG; //(af.l and 1);
144 Dec(bc.l); 145 Dec(bc.l);
145 146
146 Result := 4; 147 Result := 4;
@@ -158,8 +159,8 @@ function rrca: byte;
158 var 159 var
159 btemp: byte; 160 btemp: byte;
160 begin 161 begin
161 btemp := af.l and 1; 162 btemp := C_FLAG; //af.l and 1;
162 af.l := rrca_f[btemp][af.h] or (af.l and 196); 163 af.l := rrca_f[btemp][af.h] or Z_FLAG; //(af.l and 196);
163 af.h := rrca_a[btemp][af.h]; 164 af.h := rrca_a[btemp][af.h];
164 165
165 Result := 4; 166 Result := 4;
@@ -196,7 +197,7 @@ end;
196 197
197 function inc_d: byte; 198 function inc_d: byte;
198 begin 199 begin
199 af.l := inc_f[de.h] or (af.l and 1); 200 af.l := inc_f[de.h] or C_FLAG; //(af.l and 1);
200 Inc(de.h); 201 Inc(de.h);
201 202
202 Result := 4; 203 Result := 4;
@@ -204,7 +205,7 @@ end;
204 205
205 function dec_d: byte; 206 function dec_d: byte;
206 begin 207 begin
207 af.l := dec_f[de.h] or (af.l and 1); 208 af.l := dec_f[de.h] or C_FLAG; //(af.l and 1);
208 Dec(de.h); 209 Dec(de.h);
209 210
210 Result := 4; 211 Result := 4;
@@ -222,8 +223,8 @@ function rla: byte;
222 var 223 var
223 btemp: byte; 224 btemp: byte;
224 begin 225 begin
225 btemp := af.l and 1; 226 btemp := C_FLAG; //af.l and 1;
226 af.l := rla_f[btemp][af.h] or (af.l and 196); 227 af.l := rla_f[btemp][af.h] or Z_FLAG; //(af.l and 196);
227 af.h := rla_a[btemp][af.h]; 228 af.h := rla_a[btemp][af.h];
228 229
229 Result := 4; 230 Result := 4;
@@ -259,7 +260,7 @@ end;
259 260
260 function inc_e: byte; 261 function inc_e: byte;
261 begin 262 begin
262 af.l := inc_f[de.l] or (af.l and 1); 263 af.l := inc_f[de.l] or C_FLAG; //(af.l and 1);
263 Inc(de.l); 264 Inc(de.l);
264 265
265 Result := 4; 266 Result := 4;
@@ -267,7 +268,7 @@ end;
267 268
268 function dec_e: byte; 269 function dec_e: byte;
269 begin 270 begin
270 af.l := dec_f[de.l] or (af.l and 1); 271 af.l := dec_f[de.l] or C_FLAG; //(af.l and 1);
271 Dec(de.l); 272 Dec(de.l);
272 273
273 Result := 4; 274 Result := 4;
@@ -283,14 +284,14 @@ end;
283 284
284 function rra: byte; 285 function rra: byte;
285 begin 286 begin
286 if af.l and 1 = 0 then 287 if C_FLAG {af.l and 1} = 0 then
287 begin 288 begin
288 af.l := rra_f[af.h] or (af.l and 196); 289 af.l := rra_f[af.h] or Z_FLAG; //(af.l and 196);
289 af.h := rra_a[0][af.h]; 290 af.h := rra_a[0][af.h];
290 end 291 end
291 else 292 else
292 begin 293 begin
293 af.l := rra_f[af.h] or (af.l and 196); 294 af.l := rra_f[af.h] or Z_FLAG; //(af.l and 196);
294 af.h := rra_a[1][af.h]; 295 af.h := rra_a[1][af.h];
295 end; 296 end;
296 297
@@ -299,7 +300,7 @@ end;
299 300
300 function jr_nz_DIS: byte; 301 function jr_nz_DIS: byte;
301 begin 302 begin
302 if af.l and 64 = 0 then 303 if Z_FLAG {af.l and 64} = 0 then
303 begin 304 begin
304 pc.W := pc.w + shortint(speekb(pc.W)) + 1; 305 pc.W := pc.w + shortint(speekb(pc.W)) + 1;
305 306
@@ -338,7 +339,7 @@ end;
338 339
339 function inc_h: byte; 340 function inc_h: byte;
340 begin 341 begin
341 af.l := inc_f[hl.h] or (af.l and 1); 342 af.l := inc_f[hl.h] or C_FLAG; //(af.l and 1);
342 Inc(hl.h); 343 Inc(hl.h);
343 344
344 Result := 4; 345 Result := 4;
@@ -346,7 +347,7 @@ end;
346 347
347 function dec_h: byte; 348 function dec_h: byte;
348 begin 349 begin
349 af.l := dec_f[hl.h] or (af.l and 1); 350 af.l := dec_f[hl.h] or C_FLAG; //(af.l and 1);
350 Dec(hl.h); 351 Dec(hl.h);
351 352
352 Result := 4; 353 Result := 4;
@@ -364,10 +365,10 @@ function daa: byte;
364 var 365 var
365 daa_select: byte; 366 daa_select: byte;
366 begin 367 begin
367 daa_select := af.l and 19; 368 daa_select := %01110000; // H, N and C //af.l and 19;
368 if daa_select and 16 > 0 then 369 if daa_select and %00100000 {and 16} > 0 then
369 begin 370 begin
370 af.l := daa_f[daa_select - 12][af.h]; 371 af.l := daa_f[daa_select - 12][af.h]; {TODO}
371 af.h := daa_a[daa_select - 12][af.h]; 372 af.h := daa_a[daa_select - 12][af.h];
372 end 373 end
373 else 374 else
@@ -381,7 +382,7 @@ end;
381 382
382 function jr_z_DIS: byte; 383 function jr_z_DIS: byte;
383 begin 384 begin
384 if af.l and 64 > 0 then 385 if Z_FLAG {af.l and 64} > 0 then
385 begin 386 begin
386 pc.W := pc.w + shortint(speekb(pc.W)) + 1; 387 pc.W := pc.w + shortint(speekb(pc.W)) + 1;
387 388
@@ -419,7 +420,7 @@ end;
419 420
420 function inc_l: byte; 421 function inc_l: byte;
421 begin 422 begin
422 af.l := inc_f[hl.l] or (af.l and 1); 423 af.l := inc_f[hl.l] or C_FLAG; //(af.l and 1);
423 Inc(hl.l); 424 Inc(hl.l);
424 425
425 Result := 4; 426 Result := 4;
@@ -427,7 +428,7 @@ end;
427 428
428 function dec_l: byte; 429 function dec_l: byte;
429 begin 430 begin
430 af.l := dec_f[hl.l] or (af.l and 1); 431 af.l := dec_f[hl.l] or C_FLAG; //(af.l and 1);
431 Dec(hl.l); 432 Dec(hl.l);
432 433
433 Result := 4; 434 Result := 4;
@@ -443,16 +444,15 @@ end;
443 444
444 function cpl: byte; 445 function cpl: byte;
445 begin 446 begin
446 af.h := af.h xor 255; 447 af.h := af.h xor %11111111;
447 af.l := af.l or 18; 448 af.l := af.l or %01100000; {n and h} //18;
448 copy_b53(af.h);
449 449
450 Result := 4; 450 Result := 4;
451 end; 451 end;
452 452
453 function jr_nc_DIS: byte; 453 function jr_nc_DIS: byte;
454 begin 454 begin
455 if af.l and 1 = 0 then 455 if C_FLAG {af.l and 1} = 0 then
456 begin 456 begin
457 pc.W := pc.w + shortint(speekb(pc.W)) + 1; 457 pc.W := pc.w + shortint(speekb(pc.W)) + 1;
458 458
@@ -494,7 +494,7 @@ var
494 btemp: byte; 494 btemp: byte;
495 begin 495 begin
496 btemp := speekb(hl.W); 496 btemp := speekb(hl.W);
497 af.l := inc_f[btemp] or (af.l and 1); 497 af.l := inc_f[btemp] or C_FLAG; //(af.l and 1);
498 spokeb(hl.W, btemp + 1); 498 spokeb(hl.W, btemp + 1);
499 499
500 Result := 12; 500 Result := 12;
@@ -505,7 +505,7 @@ var
505 btemp: byte; 505 btemp: byte;
506 begin 506 begin
507 btemp := speekb(hl.W); 507 btemp := speekb(hl.W);
508 af.l := dec_f[btemp] or (af.l and 1); 508 af.l := dec_f[btemp] or C_FLAG; //(af.l and 1);
509 spokeb(hl.W, btemp - 1); 509 spokeb(hl.W, btemp - 1);
510 510
511 Result := 12; 511 Result := 12;
@@ -521,16 +521,14 @@ end;
521 521
522 function scf: byte; 522 function scf: byte;
523 begin 523 begin
524 af.l := af.l and 237; 524 af.l := (af.l and %10000000) or %00010000;
525 copy_b53(af.h);
526 af.l := af.l or 1;
527 525
528 Result := 4; 526 Result := 4;
529 end; 527 end;
530 528
531 function jr_c_DIS: byte; 529 function jr_c_DIS: byte;
532 begin 530 begin
533 if af.l and 1 > 0 then 531 if C_FLAG {af.l and 1} > 0 then
534 begin 532 begin
535 pc.W := pc.w + shortint(speekb(pc.W)) + 1; 533 pc.W := pc.w + shortint(speekb(pc.W)) + 1;
536 534
@@ -568,7 +566,7 @@ end;
568 566
569 function Z80inc_a: byte; 567 function Z80inc_a: byte;
570 begin 568 begin
571 af.l := inc_f[af.h] or (af.l and 1); 569 af.l := inc_f[af.h] or C_FLAG; //(af.l and 1);
572 Inc(af.h); 570 Inc(af.h);
573 571
574 Result := 4; 572 Result := 4;
@@ -576,7 +574,7 @@ end;
576 574
577 function Z80dec_a: byte; 575 function Z80dec_a: byte;
578 begin 576 begin
579 af.l := dec_f[af.h] or (af.l and 1); 577 af.l := dec_f[af.h] or C_FLAG; //(af.l and 1);
580 Dec(af.h); 578 Dec(af.h);
581 579
582 Result := 4; 580 Result := 4;
@@ -592,9 +590,7 @@ end;
592 590
593 function ccf: byte; 591 function ccf: byte;
594 begin 592 begin
595 af.l := af.l xor 1; 593 af.l := (af.l xor C_FLAG) and %10010000;
596 af.l := af.l and 253;
597 copy_b53(af.h);
598 594
599 Result := 4; 595 Result := 4;
600 end; 596 end;
@@ -1499,7 +1495,7 @@ end;
1499 1495
1500 function ret_nz: byte; 1496 function ret_nz: byte;
1501 begin 1497 begin
1502 if af.l and 64 = 0 then 1498 if Z_FLAG {af.l and 64} = 0 then
1503 begin 1499 begin
1504 pop(pc.W); 1500 pop(pc.W);
1505 1501
@@ -1519,7 +1515,7 @@ end;
1519 1515
1520 function jp_nz_XXXX: byte; 1516 function jp_nz_XXXX: byte;
1521 begin 1517 begin
1522 if af.l and 64 = 0 then 1518 if Z_FLAG {af.l and 64} = 0 then
1523 begin 1519 begin
1524 pc.W := wordpeek(pc.W); 1520 pc.W := wordpeek(pc.W);
1525 1521
@@ -1542,7 +1538,7 @@ end;
1542 1538
1543 function call_nz_XXXX: byte; 1539 function call_nz_XXXX: byte;
1544 begin 1540 begin
1545 if af.l and 64 = 0 then 1541 if Z_FLAG {af.l and 64} = 0 then
1546 begin 1542 begin
1547 push(pc.W + 2); 1543 push(pc.W + 2);
1548 pc.W := wordpeek(pc.W); 1544 pc.W := wordpeek(pc.W);
@@ -1582,7 +1578,7 @@ end;
1582 1578
1583 function ret_z: byte; 1579 function ret_z: byte;
1584 begin 1580 begin
1585 if af.l and 64 > 0 then 1581 if Z_FLAG {af.l and 64} > 0 then
1586 begin 1582 begin
1587 pop(pc.W); 1583 pop(pc.W);
1588 1584
@@ -1602,7 +1598,7 @@ end;
1602 1598
1603 function jp_z_XXXX: byte; 1599 function jp_z_XXXX: byte;
1604 begin 1600 begin
1605 if af.l and 64 > 0 then 1601 if Z_FLAG {af.l and 64} > 0 then
1606 begin 1602 begin
1607 pc.W := wordpeek(pc.W); 1603 pc.W := wordpeek(pc.W);
1608 1604
@@ -1623,12 +1619,12 @@ begin
1623 b := speekb(pc.W - 1); 1619 b := speekb(pc.W - 1);
1624 addr := hl.w; 1620 addr := hl.w;
1625 1621
1626 Result := Z80[b or 256]; 1622 Result := Z80[b or 256]();
1627 end; 1623 end;
1628 1624
1629 function call_z_XXXX: byte; 1625 function call_z_XXXX: byte;
1630 begin 1626 begin
1631 if af.l and 64 > 0 then 1627 if Z_FLAG {af.l and 64} > 0 then
1632 begin 1628 begin
1633 push(pc.W + 2); 1629 push(pc.W + 2);
1634 pc.W := wordpeek(pc.W); 1630 pc.W := wordpeek(pc.W);
@@ -1669,7 +1665,7 @@ end;
1669 1665
1670 function ret_nc: byte; 1666 function ret_nc: byte;
1671 begin 1667 begin
1672 if af.l and 1 = 0 then 1668 if C_FLAG {af.l and 1} = 0 then
1673 begin 1669 begin
1674 pop(pc.W); 1670 pop(pc.W);
1675 1671
@@ -1689,7 +1685,7 @@ end;
1689 1685
1690 function jp_nc_XXXX: byte; 1686 function jp_nc_XXXX: byte;
1691 begin 1687 begin
1692 if af.l and 1 = 0 then 1688 if C_FLAG {af.l and 1} = 0 then
1693 begin 1689 begin
1694 pc.W := wordpeek(pc.W); 1690 pc.W := wordpeek(pc.W);
1695 1691
@@ -1705,7 +1701,7 @@ end;
1705 1701
1706 function call_nc_XXXX: byte; 1702 function call_nc_XXXX: byte;
1707 begin 1703 begin
1708 if af.l and 1 = 0 then 1704 if C_FLAG {af.l and 1} = 0 then
1709 begin 1705 begin
1710 push(pc.W + 2); 1706 push(pc.W + 2);
1711 pc.W := wordpeek(pc.W); 1707 pc.W := wordpeek(pc.W);
@@ -1745,7 +1741,7 @@ end;
1745 1741
1746 function ret_c: byte; 1742 function ret_c: byte;
1747 begin 1743 begin
1748 if af.l and 1 > 0 then 1744 if C_FLAG {af.l and 1} > 0 then
1749 begin 1745 begin
1750 pop(pc.W); 1746 pop(pc.W);
1751 1747
@@ -1770,7 +1766,7 @@ end;
1770 1766
1771 function jp_c_XXXX: byte; 1767 function jp_c_XXXX: byte;
1772 begin 1768 begin
1773 if af.l and 1 > 0 then 1769 if C_FLAG {af.l and 1} > 0 then
1774 begin 1770 begin
1775 pc.W := wordpeek(pc.W); 1771 pc.W := wordpeek(pc.W);
1776 1772
@@ -1786,7 +1782,7 @@ end;
1786 1782
1787 function call_c_XXXX: byte; 1783 function call_c_XXXX: byte;
1788 begin 1784 begin
1789 if af.l and 1 > 0 then 1785 if C_FLAG {af.l and 1} > 0 then
1790 begin 1786 begin
1791 push(pc.W + 2); 1787 push(pc.W + 2);
1792 pc.W := wordpeek(pc.W); 1788 pc.W := wordpeek(pc.W);
@@ -1858,23 +1854,6 @@ begin
1858 Result := 4; 1854 Result := 4;
1859 end; 1855 end;
1860 1856
1861 function call_po_XXXX: byte;
1862 begin
1863 if af.l and 4 = 0 then
1864 begin
1865 push(pc.W + 2);
1866 pc.W := wordpeek(pc.W);
1867
1868 Result := 20;
1869 end
1870 else
1871 begin
1872 Inc(pc.W, 2);
1873
1874 Result := 12;
1875 end;
1876 end;
1877
1878 function push_hl: byte; 1857 function push_hl: byte;
1879 begin 1858 begin
1880 push(hl.W); 1859 push(hl.W);
@@ -1930,23 +1909,6 @@ begin
1930 Result := 4; 1909 Result := 4;
1931 end; 1910 end;
1932 1911
1933 function call_pe_XXXX: byte;
1934 begin
1935 if af.l and 4 > 0 then
1936 begin
1937 push(pc.W + 2);
1938 pc.W := wordpeek(pc.W);
1939
1940 Result := 20;
1941 end
1942 else
1943 begin
1944 Inc(pc.W, 2);
1945
1946 Result := 12;
1947 end;
1948 end;
1949
1950 function xor_XX: byte; 1912 function xor_XX: byte;
1951 begin 1913 begin
1952 xora(speekb(pc.W)); 1914 xora(speekb(pc.W));
@@ -1992,23 +1954,6 @@ begin
1992 Result := 4; 1954 Result := 4;
1993 end; 1955 end;
1994 1956
1995 function call_p_XXXX: byte;
1996 begin
1997 if af.l and 128 = 0 then
1998 begin
1999 push(pc.W + 2);
2000 pc.W := wordpeek(pc.W);
2001
2002 Result := 20;
2003 end
2004 else
2005 begin
2006 Inc(pc.W, 2);
2007
2008 Result := 12;
2009 end;
2010 end;
2011
2012 function push_af: byte; 1957 function push_af: byte;
2013 begin 1958 begin
2014 push(af.W); 1959 push(af.W);
@@ -2061,23 +2006,6 @@ begin
2061 Result := 4; 2006 Result := 4;
2062 end; 2007 end;
2063 2008
2064 function call_m_XXXX: byte;
2065 begin
2066 if af.l and 128 > 0 then
2067 begin
2068 push(pc.W + 2);
2069 pc.W := wordpeek(pc.W);
2070
2071 Result := 20;
2072 end
2073 else
2074 begin
2075 Inc(pc.W, 2);
2076
2077 Result := 12;
2078 end;
2079 end;
2080
2081 function cp_XX: byte; 2009 function cp_XX: byte;
2082 begin 2010 begin
2083 cp_sub8(af.h, speekb(pc.W)); 2011 cp_sub8(af.h, speekb(pc.W));
@@ -2236,7 +2164,7 @@ end;
2236 2164
2237 function rl_b: byte; 2165 function rl_b: byte;
2238 begin 2166 begin
2239 if af.l and 1 = 0 then 2167 if C_FLAG {af.l and 1} = 0 then
2240 begin 2168 begin
2241 af.l := rlr_f[0][bc.h]; 2169 af.l := rlr_f[0][bc.h];
2242 bc.h := rlr_a[0][bc.h]; 2170 bc.h := rlr_a[0][bc.h];
@@ -2252,7 +2180,7 @@ end;
2252 2180
2253 function rl_c: byte; 2181 function rl_c: byte;
2254 begin 2182 begin
2255 if af.l and 1 = 0 then 2183 if C_FLAG {af.l and 1} = 0 then
2256 begin 2184 begin
2257 af.l := rlr_f[0][bc.l]; 2185 af.l := rlr_f[0][bc.l];
2258 bc.l := rlr_a[0][bc.l]; 2186 bc.l := rlr_a[0][bc.l];
@@ -2268,7 +2196,7 @@ end;
2268 2196
2269 function rl_d: byte; 2197 function rl_d: byte;
2270 begin 2198 begin
2271 if af.l and 1 = 0 then 2199 if C_FLAG {af.l and 1} = 0 then
2272 begin 2200 begin
2273 af.l := rlr_f[0][de.h]; 2201 af.l := rlr_f[0][de.h];
2274 de.h := rlr_a[0][de.h]; 2202 de.h := rlr_a[0][de.h];
@@ -2284,7 +2212,7 @@ end;
2284 2212
2285 function rl_e: byte; 2213 function rl_e: byte;
2286 begin 2214 begin
2287 if af.l and 1 = 0 then 2215 if C_FLAG {af.l and 1} = 0 then
2288 begin 2216 begin
2289 af.l := rlr_f[0][de.l]; 2217 af.l := rlr_f[0][de.l];
2290 de.l := rlr_a[0][de.l]; 2218 de.l := rlr_a[0][de.l];
@@ -2300,7 +2228,7 @@ end;
2300 2228
2301 function rl_h: byte; 2229 function rl_h: byte;
2302 begin 2230 begin
2303 if af.l and 1 = 0 then 2231 if C_FLAG {af.l and 1} = 0 then
2304 begin 2232 begin
2305 af.l := rlr_f[0][hl.h]; 2233 af.l := rlr_f[0][hl.h];
2306 hl.h := rlr_a[0][hl.h]; 2234 hl.h := rlr_a[0][hl.h];
@@ -2316,7 +2244,7 @@ end;
2316 2244
2317 function rl_l: byte; 2245 function rl_l: byte;
2318 begin 2246 begin
2319 if af.l and 1 = 0 then 2247 if C_FLAG {af.l and 1} = 0 then
2320 begin 2248 begin
2321 af.l := rlr_f[0][hl.l]; 2249 af.l := rlr_f[0][hl.l];
2322 hl.l := rlr_a[0][hl.l]; 2250 hl.l := rlr_a[0][hl.l];
@@ -2334,7 +2262,7 @@ function rl: byte;
2334 var 2262 var
2335 btemp: byte; 2263 btemp: byte;
2336 begin 2264 begin
2337 if af.l and 1 = 0 then 2265 if C_FLAG {af.l and 1} = 0 then
2338 begin 2266 begin
2339 btemp := speekb(Addr); 2267 btemp := speekb(Addr);
2340 af.l := rlr_f[0][btemp]; 2268 af.l := rlr_f[0][btemp];
@@ -2352,7 +2280,7 @@ end;
2352 2280
2353 function rl_a: byte; 2281 function rl_a: byte;
2354 begin 2282 begin
2355 if af.l and 1 = 0 then 2283 if C_FLAG {af.l and 1} = 0 then
2356 begin 2284 begin
2357 af.l := rlr_f[0][af.h]; 2285 af.l := rlr_f[0][af.h];
2358 af.h := rlr_a[0][af.h]; 2286 af.h := rlr_a[0][af.h];
@@ -2368,7 +2296,7 @@ end;
2368 2296
2369 function rr_b: byte; 2297 function rr_b: byte;
2370 begin 2298 begin
2371 if af.l and 1 = 0 then 2299 if C_FLAG {af.l and 1} = 0 then
2372 begin 2300 begin
2373 af.l := rrr_f[0][bc.h]; 2301 af.l := rrr_f[0][bc.h];
2374 bc.h := rrr_a[0][bc.h]; 2302 bc.h := rrr_a[0][bc.h];
@@ -2384,7 +2312,7 @@ end;
2384 2312
2385 function rr_c: byte; 2313 function rr_c: byte;
2386 begin 2314 begin
2387 if af.l and 1 = 0 then 2315 if C_FLAG {af.l and 1} = 0 then
2388 begin 2316 begin
2389 af.l := rrr_f[0][bc.l]; 2317 af.l := rrr_f[0][bc.l];
2390 bc.l := rrr_a[0][bc.l]; 2318 bc.l := rrr_a[0][bc.l];
@@ -2400,7 +2328,7 @@ end;
2400 2328
2401 function rr_d: byte; 2329 function rr_d: byte;
2402 begin 2330 begin
2403 if af.l and 1 = 0 then 2331 if C_FLAG {af.l and 1} = 0 then
2404 begin 2332 begin
2405 af.l := rrr_f[0][de.h]; 2333 af.l := rrr_f[0][de.h];
2406 de.h := rrr_a[0][de.h]; 2334 de.h := rrr_a[0][de.h];
@@ -2416,7 +2344,7 @@ end;
2416 2344
2417 function rr_e: byte; 2345 function rr_e: byte;
2418 begin 2346 begin
2419 if af.l and 1 = 0 then 2347 if C_FLAG {af.l and 1} = 0 then
2420 begin 2348 begin
2421 af.l := rrr_f[0][de.l]; 2349 af.l := rrr_f[0][de.l];
2422 de.l := rrr_a[0][de.l]; 2350 de.l := rrr_a[0][de.l];
@@ -2432,7 +2360,7 @@ end;
2432 2360
2433 function rr_h: byte; 2361 function rr_h: byte;
2434 begin 2362 begin
2435 if af.l and 1 = 0 then 2363 if C_FLAG {af.l and 1} = 0 then
2436 begin 2364 begin
2437 af.l := rrr_f[0][hl.h]; 2365 af.l := rrr_f[0][hl.h];
2438 hl.h := rrr_a[0][hl.h]; 2366 hl.h := rrr_a[0][hl.h];
@@ -2448,7 +2376,7 @@ end;
2448 2376
2449 function rr_l: byte; 2377 function rr_l: byte;
2450 begin 2378 begin
2451 if af.l and 1 = 0 then 2379 if C_FLAG {af.l and 1} = 0 then
2452 begin 2380 begin
2453 af.l := rrr_f[0][hl.l]; 2381 af.l := rrr_f[0][hl.l];
2454 hl.l := rrr_a[0][hl.l]; 2382 hl.l := rrr_a[0][hl.l];
@@ -2466,7 +2394,7 @@ function rr: byte;
2466 var 2394 var
2467 btemp: byte; 2395 btemp: byte;
2468 begin 2396 begin
2469 if af.l and 1 = 0 then 2397 if C_FLAG {af.l and 1} = 0 then
2470 begin 2398 begin
2471 btemp := speekb(Addr); 2399 btemp := speekb(Addr);
2472 af.l := rrr_f[0][btemp]; 2400 af.l := rrr_f[0][btemp];
@@ -2484,7 +2412,7 @@ end;
2484 2412
2485 function rr_a: byte; 2413 function rr_a: byte;
2486 begin 2414 begin
2487 if af.l and 1 = 0 then 2415 if C_FLAG {af.l and 1} = 0 then
2488 begin 2416 begin
2489 af.l := rrr_f[0][af.h]; 2417 af.l := rrr_f[0][af.h];
2490 af.h := rrr_a[0][af.h]; 2418 af.h := rrr_a[0][af.h];
@@ -2768,448 +2696,448 @@ end;
2768 2696
2769 function bit0_b: byte; 2697 function bit0_b: byte;
2770 begin 2698 begin
2771 af.l := bit_f0[bc.h] or (af.l and 1); 2699 af.l := bit_f0[bc.h] or C_FLAG; //af.l and 1;
2772 2700
2773 Result := 8; 2701 Result := 8;
2774 end; 2702 end;
2775 2703
2776 function bit0_c: byte; 2704 function bit0_c: byte;
2777 begin 2705 begin
2778 af.l := bit_f0[bc.l] or (af.l and 1); 2706 af.l := bit_f0[bc.l] or C_FLAG; //af.l and 1;
2779 2707
2780 Result := 8; 2708 Result := 8;
2781 end; 2709 end;
2782 2710
2783 function bit0_d: byte; 2711 function bit0_d: byte;
2784 begin 2712 begin
2785 af.l := bit_f0[de.h] or (af.l and 1); 2713 af.l := bit_f0[de.h] or C_FLAG; //af.l and 1;
2786 2714
2787 Result := 8; 2715 Result := 8;
2788 end; 2716 end;
2789 2717
2790 function bit0_e: byte; 2718 function bit0_e: byte;
2791 begin 2719 begin
2792 af.l := bit_f0[de.l] or (af.l and 1); 2720 af.l := bit_f0[de.l] or C_FLAG; //af.l and 1;
2793 2721
2794 Result := 8; 2722 Result := 8;
2795 end; 2723 end;
2796 2724
2797 function bit0_h: byte; 2725 function bit0_h: byte;
2798 begin 2726 begin
2799 af.l := bit_f0[hl.h] or (af.l and 1); 2727 af.l := bit_f0[hl.h] or C_FLAG; //af.l and 1;
2800 2728
2801 Result := 8; 2729 Result := 8;
2802 end; 2730 end;
2803 2731
2804 function bit0_l: byte; 2732 function bit0_l: byte;
2805 begin 2733 begin
2806 af.l := bit_f0[hl.l] or (af.l and 1); 2734 af.l := bit_f0[hl.l] or C_FLAG; //af.l and 1;
2807 2735
2808 Result := 8; 2736 Result := 8;
2809 end; 2737 end;
2810 2738
2811 function bit0: byte; 2739 function bit0: byte;
2812 begin 2740 begin
2813 af.l := bit_f0[speekb(Addr)] or (af.l and 1); 2741 af.l := bit_f0[speekb(Addr)] or C_FLAG; //af.l and 1;
2814 2742
2815 Result := 12; 2743 Result := 12;
2816 end; 2744 end;
2817 2745
2818 function bit0_a: byte; 2746 function bit0_a: byte;
2819 begin 2747 begin
2820 af.l := bit_f0[af.h] or (af.l and 1); 2748 af.l := bit_f0[af.h] or C_FLAG; //af.l and 1;
2821 2749
2822 Result := 8; 2750 Result := 8;
2823 end; 2751 end;
2824 2752
2825 function bit1_b: byte; 2753 function bit1_b: byte;
2826 begin 2754 begin
2827 af.l := bit_f1[bc.h] or (af.l and 1); 2755 af.l := bit_f1[bc.h] or C_FLAG; //af.l and 1;
2828 2756
2829 Result := 8; 2757 Result := 8;
2830 end; 2758 end;
2831 2759
2832 function bit1_c: byte; 2760 function bit1_c: byte;
2833 begin 2761 begin
2834 af.l := bit_f1[bc.l] or (af.l and 1); 2762 af.l := bit_f1[bc.l] or C_FLAG; //af.l and 1;
2835 2763
2836 Result := 8; 2764 Result := 8;
2837 end; 2765 end;
2838 2766
2839 function bit1_d: byte; 2767 function bit1_d: byte;
2840 begin 2768 begin
2841 af.l := bit_f1[de.h] or (af.l and 1); 2769 af.l := bit_f1[de.h] or C_FLAG; //af.l and 1;
2842 2770
2843 Result := 8; 2771 Result := 8;
2844 end; 2772 end;
2845 2773
2846 function bit1_e: byte; 2774 function bit1_e: byte;
2847 begin 2775 begin
2848 af.l := bit_f1[de.l] or (af.l and 1); 2776 af.l := bit_f1[de.l] or C_FLAG; //af.l and 1;
2849 2777
2850 Result := 8; 2778 Result := 8;
2851 end; 2779 end;
2852 2780
2853 function bit1_h: byte; 2781 function bit1_h: byte;
2854 begin 2782 begin
2855 af.l := bit_f1[hl.h] or (af.l and 1); 2783 af.l := bit_f1[hl.h] or C_FLAG; //af.l and 1;
2856 2784
2857 Result := 8; 2785 Result := 8;
2858 end; 2786 end;
2859 2787
2860 function bit1_l: byte; 2788 function bit1_l: byte;
2861 begin 2789 begin
2862 af.l := bit_f1[hl.l] or (af.l and 1); 2790 af.l := bit_f1[hl.l] or C_FLAG; //af.l and 1;
2863 2791
2864 Result := 8; 2792 Result := 8;
2865 end; 2793 end;
2866 2794
2867 function bit1: byte; 2795 function bit1: byte;
2868 begin 2796 begin
2869 af.l := bit_f1[speekb(Addr)] or (af.l and 1); 2797 af.l := bit_f1[speekb(Addr)] or C_FLAG; //af.l and 1;
2870 2798
2871 Result := 12; 2799 Result := 12;
2872 end; 2800 end;
2873 2801
2874 function bit1_a: byte; 2802 function bit1_a: byte;
2875 begin 2803 begin
2876 af.l := bit_f1[af.h] or (af.l and 1); 2804 af.l := bit_f1[af.h] or C_FLAG; //af.l and 1;
2877 2805
2878 Result := 8; 2806 Result := 8;
2879 end; 2807 end;
2880 2808
2881 function bit2_b: byte; 2809 function bit2_b: byte;
2882 begin 2810 begin
2883 af.l := bit_f2[bc.h] or (af.l and 1); 2811 af.l := bit_f2[bc.h] or C_FLAG; //af.l and 1;
2884 2812
2885 Result := 8; 2813 Result := 8;
2886 end; 2814 end;
2887 2815
2888 function bit2_c: byte; 2816 function bit2_c: byte;
2889 begin 2817 begin
2890 af.l := bit_f2[bc.l] or (af.l and 1); 2818 af.l := bit_f2[bc.l] or C_FLAG; //af.l and 1;
2891 2819
2892 Result := 8; 2820 Result := 8;
2893 end; 2821 end;
2894 2822
2895 function bit2_d: byte; 2823 function bit2_d: byte;
2896 begin 2824 begin
2897 af.l := bit_f2[de.h] or (af.l and 1); 2825 af.l := bit_f2[de.h] or C_FLAG; //af.l and 1;
2898 2826
2899 Result := 8; 2827 Result := 8;
2900 end; 2828 end;
2901 2829
2902 function bit2_e: byte; 2830 function bit2_e: byte;
2903 begin 2831 begin
2904 af.l := bit_f2[de.l] or (af.l and 1); 2832 af.l := bit_f2[de.l] or C_FLAG; //af.l and 1;
2905 2833
2906 Result := 8; 2834 Result := 8;
2907 end; 2835 end;
2908 2836
2909 function bit2_h: byte; 2837 function bit2_h: byte;
2910 begin 2838 begin
2911 af.l := bit_f2[hl.h] or (af.l and 1); 2839 af.l := bit_f2[hl.h] or C_FLAG; //af.l and 1;
2912 2840
2913 Result := 8; 2841 Result := 8;
2914 end; 2842 end;
2915 2843
2916 function bit2_l: byte; 2844 function bit2_l: byte;
2917 begin 2845 begin
2918 af.l := bit_f2[hl.l] or (af.l and 1); 2846 af.l := bit_f2[hl.l] or C_FLAG; //af.l and 1;
2919 2847
2920 Result := 8; 2848 Result := 8;
2921 end; 2849 end;
2922 2850
2923 function bit2: byte; 2851 function bit2: byte;
2924 begin 2852 begin
2925 af.l := bit_f2[speekb(Addr)] or (af.l and 1); 2853 af.l := bit_f2[speekb(Addr)] or C_FLAG; //af.l and 1;
2926 2854
2927 Result := 12; 2855 Result := 12;
2928 end; 2856 end;
2929 2857
2930 function bit2_a: byte; 2858 function bit2_a: byte;
2931 begin 2859 begin
2932 af.l := bit_f2[af.h] or (af.l and 1); 2860 af.l := bit_f2[af.h] or C_FLAG; //af.l and 1;
2933 2861
2934 Result := 8; 2862 Result := 8;
2935 end; 2863 end;
2936 2864
2937 function bit3_b: byte; 2865 function bit3_b: byte;
2938 begin 2866 begin
2939 af.l := bit_f3[bc.h] or (af.l and 1); 2867 af.l := bit_f3[bc.h] or C_FLAG; //af.l and 1;
2940 2868
2941 Result := 8; 2869 Result := 8;
2942 end; 2870 end;
2943 2871
2944 function bit3_c: byte; 2872 function bit3_c: byte;
2945 begin 2873 begin
2946 af.l := bit_f3[bc.l] or (af.l and 1); 2874 af.l := bit_f3[bc.l] or C_FLAG; //af.l and 1;
2947 2875
2948 Result := 8; 2876 Result := 8;
2949 end; 2877 end;
2950 2878
2951 function bit3_d: byte; 2879 function bit3_d: byte;
2952 begin 2880 begin
2953 af.l := bit_f3[de.h] or (af.l and 1); 2881 af.l := bit_f3[de.h] or C_FLAG; //af.l and 1;
2954 2882
2955 Result := 8; 2883 Result := 8;
2956 end; 2884 end;
2957 2885
2958 function bit3_e: byte; 2886 function bit3_e: byte;
2959 begin 2887 begin
2960 af.l := bit_f3[de.l] or (af.l and 1); 2888 af.l := bit_f3[de.l] or C_FLAG; //af.l and 1;
2961 2889
2962 Result := 8; 2890 Result := 8;
2963 end; 2891 end;
2964 2892
2965 function bit3_h: byte; 2893 function bit3_h: byte;
2966 begin 2894 begin
2967 af.l := bit_f3[hl.h] or (af.l and 1); 2895 af.l := bit_f3[hl.h] or C_FLAG; //af.l and 1;
2968 2896
2969 Result := 8; 2897 Result := 8;
2970 end; 2898 end;
2971 2899
2972 function bit3_l: byte; 2900 function bit3_l: byte;
2973 begin 2901 begin
2974 af.l := bit_f3[hl.l] or (af.l and 1); 2902 af.l := bit_f3[hl.l] or C_FLAG; //af.l and 1;
2975 2903
2976 Result := 8; 2904 Result := 8;
2977 end; 2905 end;
2978 2906
2979 function bit3: byte; 2907 function bit3: byte;
2980 begin 2908 begin
2981 af.l := bit_f3[speekb(Addr)] or (af.l and 1); 2909 af.l := bit_f3[speekb(Addr)] or C_FLAG; //af.l and 1;
2982 2910
2983 Result := 12; 2911 Result := 12;
2984 end; 2912 end;
2985 2913
2986 function bit3_a: byte; 2914 function bit3_a: byte;
2987 begin 2915 begin
2988 af.l := bit_f3[af.h] or (af.l and 1); 2916 af.l := bit_f3[af.h] or C_FLAG; //af.l and 1;
2989 2917
2990 Result := 8; 2918 Result := 8;
2991 end; 2919 end;
2992 2920
2993 function bit4_b: byte; 2921 function bit4_b: byte;
2994 begin 2922 begin
2995 af.l := bit_f4[bc.h] or (af.l and 1); 2923 af.l := bit_f4[bc.h] or C_FLAG; //af.l and 1;
2996 2924
2997 Result := 8; 2925 Result := 8;
2998 end; 2926 end;
2999 2927
3000 function bit4_c: byte; 2928 function bit4_c: byte;
3001 begin 2929 begin
3002 af.l := bit_f4[bc.l] or (af.l and 1); 2930 af.l := bit_f4[bc.l] or C_FLAG; //af.l and 1;
3003 2931
3004 Result := 8; 2932 Result := 8;
3005 end; 2933 end;
3006 2934
3007 function bit4_d: byte; 2935 function bit4_d: byte;
3008 begin 2936 begin
3009 af.l := bit_f4[de.h] or (af.l and 1); 2937 af.l := bit_f4[de.h] or C_FLAG; //af.l and 1;
3010 2938
3011 Result := 8; 2939 Result := 8;
3012 end; 2940 end;
3013 2941
3014 function bit4_e: byte; 2942 function bit4_e: byte;
3015 begin 2943 begin
3016 af.l := bit_f4[de.l] or (af.l and 1); 2944 af.l := bit_f4[de.l] or C_FLAG; //af.l and 1;
3017 2945
3018 Result := 8; 2946 Result := 8;
3019 end; 2947 end;
3020 2948
3021 function bit4_h: byte; 2949 function bit4_h: byte;
3022 begin 2950 begin
3023 af.l := bit_f4[hl.h] or (af.l and 1); 2951 af.l := bit_f4[hl.h] or C_FLAG; //af.l and 1;
3024 2952
3025 Result := 8; 2953 Result := 8;
3026 end; 2954 end;
3027 2955
3028 function bit4_l: byte; 2956 function bit4_l: byte;
3029 begin 2957 begin
3030 af.l := bit_f4[hl.l] or (af.l and 1); 2958 af.l := bit_f4[hl.l] or C_FLAG; //af.l and 1;
3031 2959
3032 Result := 8; 2960 Result := 8;
3033 end; 2961 end;
3034 2962
3035 function bit4: byte; 2963 function bit4: byte;
3036 begin 2964 begin
3037 af.l := bit_f4[speekb(Addr)] or (af.l and 1); 2965 af.l := bit_f4[speekb(Addr)] or C_FLAG; //af.l and 1;
3038 2966
3039 Result := 12; 2967 Result := 12;
3040 end; 2968 end;
3041 2969
3042 function bit4_a: byte; 2970 function bit4_a: byte;
3043 begin 2971 begin
3044 af.l := bit_f4[af.h] or (af.l and 1); 2972 af.l := bit_f4[af.h] or C_FLAG; //af.l and 1;
3045 2973
3046 Result := 8; 2974 Result := 8;
3047 end; 2975 end;
3048 2976
3049 function bit5_b: byte; 2977 function bit5_b: byte;
3050 begin 2978 begin
3051 af.l := bit_f5[bc.h] or (af.l and 1); 2979 af.l := bit_f5[bc.h] or C_FLAG; //af.l and 1;
3052 2980
3053 Result := 8; 2981 Result := 8;
3054 end; 2982 end;
3055 2983
3056 function bit5_c: byte; 2984 function bit5_c: byte;
3057 begin 2985 begin
3058 af.l := bit_f5[bc.l] or (af.l and 1); 2986 af.l := bit_f5[bc.l] or C_FLAG; //af.l and 1;
3059 2987
3060 Result := 8; 2988 Result := 8;
3061 end; 2989 end;
3062 2990
3063 function bit5_d: byte; 2991 function bit5_d: byte;
3064 begin 2992 begin
3065 af.l := bit_f5[de.h] or (af.l and 1); 2993 af.l := bit_f5[de.h] or C_FLAG; //af.l and 1;
3066 2994
3067 Result := 8; 2995 Result := 8;
3068 end; 2996 end;
3069 2997
3070 function bit5_e: byte; 2998 function bit5_e: byte;
3071 begin 2999 begin
3072 af.l := bit_f5[de.l] or (af.l and 1); 3000 af.l := bit_f5[de.l] or C_FLAG; //af.l and 1;
3073 3001
3074 Result := 8; 3002 Result := 8;
3075 end; 3003 end;
3076 3004
3077 function bit5_h: byte; 3005 function bit5_h: byte;
3078 begin 3006 begin
3079 af.l := bit_f5[hl.h] or (af.l and 1); 3007 af.l := bit_f5[hl.h] or C_FLAG; //af.l and 1;
3080 3008
3081 Result := 8; 3009 Result := 8;
3082 end; 3010 end;
3083 3011
3084 function bit5_l: byte; 3012 function bit5_l: byte;
3085 begin 3013 begin
3086 af.l := bit_f5[hl.l] or (af.l and 1); 3014 af.l := bit_f5[hl.l] or C_FLAG; //af.l and 1;
3087 3015
3088 Result := 8; 3016 Result := 8;
3089 end; 3017 end;
3090 3018
3091 function bit5: byte; 3019 function bit5: byte;
3092 begin 3020 begin
3093 af.l := bit_f5[speekb(Addr)] or (af.l and 1); 3021 af.l := bit_f5[speekb(Addr)] or C_FLAG; //af.l and 1;
3094 3022
3095 Result := 12; 3023 Result := 12;
3096 end; 3024 end;
3097 3025
3098 function bit5_a: byte; 3026 function bit5_a: byte;
3099 begin 3027 begin
3100 af.l := bit_f5[af.h] or (af.l and 1); 3028 af.l := bit_f5[af.h] or C_FLAG; //af.l and 1;
3101 3029
3102 Result := 8; 3030 Result := 8;
3103 end; 3031 end;
3104 3032
3105 function bit6_b: byte; 3033 function bit6_b: byte;
3106 begin 3034 begin
3107 af.l := bit_f6[bc.h] or (af.l and 1); 3035 af.l := bit_f6[bc.h] or C_FLAG; //af.l and 1;
3108 3036
3109 Result := 8; 3037 Result := 8;
3110 end; 3038 end;
3111 3039
3112 function bit6_c: byte; 3040 function bit6_c: byte;
3113 begin 3041 begin
3114 af.l := bit_f6[bc.l] or (af.l and 1); 3042 af.l := bit_f6[bc.l] or C_FLAG; //af.l and 1;
3115 3043
3116 Result := 8; 3044 Result := 8;
3117 end; 3045 end;
3118 3046
3119 function bit6_d: byte; 3047 function bit6_d: byte;
3120 begin 3048 begin
3121 af.l := bit_f6[de.h] or (af.l and 1); 3049 af.l := bit_f6[de.h] or C_FLAG; //af.l and 1;
3122 3050
3123 Result := 8; 3051 Result := 8;
3124 end; 3052 end;
3125 3053
3126 function bit6_e: byte; 3054 function bit6_e: byte;
3127 begin 3055 begin
3128 af.l := bit_f6[de.l] or (af.l and 1); 3056 af.l := bit_f6[de.l] or C_FLAG; //af.l and 1;
3129 3057
3130 Result := 8; 3058 Result := 8;
3131 end; 3059 end;
3132 3060
3133 function bit6_h: byte; 3061 function bit6_h: byte;
3134 begin 3062 begin
3135 af.l := bit_f6[hl.h] or (af.l and 1); 3063 af.l := bit_f6[hl.h] or C_FLAG; //af.l and 1;
3136 3064
3137 Result := 8; 3065 Result := 8;
3138 end; 3066 end;
3139 3067
3140 function bit6_l: byte; 3068 function bit6_l: byte;
3141 begin 3069 begin
3142 af.l := bit_f6[hl.l] or (af.l and 1); 3070 af.l := bit_f6[hl.l] or C_FLAG; //af.l and 1;
3143 3071
3144 Result := 8; 3072 Result := 8;
3145 end; 3073 end;
3146 3074
3147 function bit6: byte; 3075 function bit6: byte;
3148 begin 3076 begin
3149 af.l := bit_f6[speekb(Addr)] or (af.l and 1); 3077 af.l := bit_f6[speekb(Addr)] or C_FLAG; //af.l and 1;
3150 3078
3151 Result := 12; 3079 Result := 12;
3152 end; 3080 end;
3153 3081
3154 function bit6_a: byte; 3082 function bit6_a: byte;
3155 begin 3083 begin
3156 af.l := bit_f6[af.h] or (af.l and 1); 3084 af.l := bit_f6[af.h] or C_FLAG; //af.l and 1;
3157 3085
3158 Result := 8; 3086 Result := 8;
3159 end; 3087 end;
3160 3088
3161 function bit7_b: byte; 3089 function bit7_b: byte;
3162 begin 3090 begin
3163 af.l := bit_f7[bc.h] or (af.l and 1); 3091 af.l := bit_f7[bc.h] or C_FLAG; //af.l and 1;
3164 3092
3165 Result := 8; 3093 Result := 8;
3166 end; 3094 end;
3167 3095
3168 function bit7_c: byte; 3096 function bit7_c: byte;
3169 begin 3097 begin
3170 af.l := bit_f7[bc.l] or (af.l and 1); 3098 af.l := bit_f7[bc.l] or C_FLAG; //af.l and 1;
3171 3099
3172 Result := 8; 3100 Result := 8;
3173 end; 3101 end;
3174 3102
3175 function bit7_d: byte; 3103 function bit7_d: byte;
3176 begin 3104 begin
3177 af.l := bit_f7[de.h] or (af.l and 1); 3105 af.l := bit_f7[de.h] or C_FLAG; //af.l and 1;
3178 3106
3179 Result := 8; 3107 Result := 8;
3180 end; 3108 end;
3181 3109
3182 function bit7_e: byte; 3110 function bit7_e: byte;
3183 begin 3111 begin
3184 af.l := bit_f7[de.l] or (af.l and 1); 3112 af.l := bit_f7[de.l] or C_FLAG; //af.l and 1;
3185 3113
3186 Result := 8; 3114 Result := 8;
3187 end; 3115 end;
3188 3116
3189 function bit7_h: byte; 3117 function bit7_h: byte;
3190 begin 3118 begin
3191 af.l := bit_f7[hl.h] or (af.l and 1); 3119 af.l := bit_f7[hl.h] or C_FLAG; //af.l and 1;
3192 3120
3193 Result := 8; 3121 Result := 8;
3194 end; 3122 end;
3195 3123
3196 function bit7_l: byte; 3124 function bit7_l: byte;
3197 begin 3125 begin
3198 af.l := bit_f7[hl.l] or (af.l and 1); 3126 af.l := bit_f7[hl.l] or C_FLAG; //af.l and 1;
3199 3127
3200 Result := 8; 3128 Result := 8;
3201 end; 3129 end;
3202 3130
3203 function bit7: byte; 3131 function bit7: byte;
3204 begin 3132 begin
3205 af.l := bit_f7[speekb(Addr)] or (af.l and 1); 3133 af.l := bit_f7[speekb(Addr)] or C_FLAG; //af.l and 1;
3206 3134
3207 Result := 12; 3135 Result := 12;
3208 end; 3136 end;
3209 3137
3210 function bit7_a: byte; 3138 function bit7_a: byte;
3211 begin 3139 begin
3212 af.l := bit_f7[af.h] or (af.l and 1); 3140 af.l := bit_f7[af.h] or C_FLAG; //af.l and 1;
3213 3141
3214 Result := 8; 3142 Result := 8;
3215 end; 3143 end;
@@ -4111,518 +4039,518 @@ begin
4111 end; 4039 end;
4112 4040
4113 begin 4041 begin
4114 Z80[0] := nop; 4042 Z80[0] := @nop;
4115 Z80[1] := ld_bc_XXXX; 4043 Z80[1] := @ld_bc_XXXX;
4116 Z80[2] := ld_mbc_a; 4044 Z80[2] := @ld_mbc_a;
4117 Z80[3] := inc_bc; 4045 Z80[3] := @inc_bc;
4118 Z80[4] := inc_b; 4046 Z80[4] := @inc_b;
4119 Z80[5] := dec_b; 4047 Z80[5] := @dec_b;
4120 Z80[6] := ld_b_XX; 4048 Z80[6] := @ld_b_XX;
4121 Z80[7] := rlca; 4049 Z80[7] := @rlca;
4122 Z80[8] := ld_XXXX_sp; 4050 Z80[8] := @ld_XXXX_sp;
4123 Z80[9] := add_hl_bc; 4051 Z80[9] := @add_hl_bc;
4124 Z80[10] := ld_a_mbc; 4052 Z80[10] := @ld_a_mbc;
4125 Z80[11] := dec_bc; 4053 Z80[11] := @dec_bc;
4126 Z80[12] := inc_c; 4054 Z80[12] := @inc_c;
4127 Z80[13] := dec_c; 4055 Z80[13] := @dec_c;
4128 Z80[14] := ld_c_XX; 4056 Z80[14] := @ld_c_XX;
4129 Z80[15] := rrca; 4057 Z80[15] := @rrca;
4130 Z80[16] := stop; 4058 Z80[16] := @stop;
4131 Z80[17] := ld_de_XXXX; 4059 Z80[17] := @ld_de_XXXX;
4132 Z80[18] := ld_mde_a; 4060 Z80[18] := @ld_mde_a;
4133 Z80[19] := inc_de; 4061 Z80[19] := @inc_de;
4134 Z80[20] := inc_d; 4062 Z80[20] := @inc_d;
4135 Z80[21] := dec_d; 4063 Z80[21] := @dec_d;
4136 Z80[22] := ld_d_XX; 4064 Z80[22] := @ld_d_XX;
4137 Z80[23] := rla; 4065 Z80[23] := @rla;
4138 Z80[24] := jr_DIS; 4066 Z80[24] := @jr_DIS;
4139 Z80[25] := add_hl_de; 4067 Z80[25] := @add_hl_de;
4140 Z80[26] := ld_a_mde; 4068 Z80[26] := @ld_a_mde;
4141 Z80[27] := dec_de; 4069 Z80[27] := @dec_de;
4142 Z80[28] := inc_e; 4070 Z80[28] := @inc_e;
4143 Z80[29] := dec_e; 4071 Z80[29] := @dec_e;
4144 Z80[30] := ld_e_XX; 4072 Z80[30] := @ld_e_XX;
4145 Z80[31] := rra; 4073 Z80[31] := @rra;
4146 Z80[32] := jr_nz_DIS; 4074 Z80[32] := @jr_nz_DIS;
4147 Z80[33] := ld_hl_XXXX; 4075 Z80[33] := @ld_hl_XXXX;
4148 Z80[34] := ldi_hl_a; 4076 Z80[34] := @ldi_hl_a;
4149 Z80[35] := inc_hl; 4077 Z80[35] := @inc_hl;
4150 Z80[36] := inc_h; 4078 Z80[36] := @inc_h;
4151 Z80[37] := dec_h; 4079 Z80[37] := @dec_h;
4152 Z80[38] := ld_h_XX; 4080 Z80[38] := @ld_h_XX;
4153 Z80[39] := daa; 4081 Z80[39] := @daa;
4154 Z80[40] := jr_z_DIS; 4082 Z80[40] := @jr_z_DIS;
4155 Z80[41] := add_hl_hl; 4083 Z80[41] := @add_hl_hl;
4156 Z80[42] := ldi_a_hl; 4084 Z80[42] := @ldi_a_hl;
4157 Z80[43] := dec_hl; 4085 Z80[43] := @dec_hl;
4158 Z80[44] := inc_l; 4086 Z80[44] := @inc_l;
4159 Z80[45] := dec_l; 4087 Z80[45] := @dec_l;
4160 Z80[46] := ld_l_XX; 4088 Z80[46] := @ld_l_XX;
4161 Z80[47] := cpl; 4089 Z80[47] := @cpl;
4162 Z80[48] := jr_nc_DIS; 4090 Z80[48] := @jr_nc_DIS;
4163 Z80[49] := ld_sp_XXXX; 4091 Z80[49] := @ld_sp_XXXX;
4164 Z80[50] := ldd_hl_a; 4092 Z80[50] := @ldd_hl_a;
4165 Z80[51] := inc_sp; 4093 Z80[51] := @inc_sp;
4166 Z80[52] := inc_mhl; 4094 Z80[52] := @inc_mhl;
4167 Z80[53] := dec_mhl; 4095 Z80[53] := @dec_mhl;
4168 Z80[54] := ld_mhl_XX; 4096 Z80[54] := @ld_mhl_XX;
4169 Z80[55] := scf; 4097 Z80[55] := @scf;
4170 Z80[56] := jr_c_DIS; 4098 Z80[56] := @jr_c_DIS;
4171 Z80[57] := add_hl_sp; 4099 Z80[57] := @add_hl_sp;
4172 Z80[58] := ldd_a_hl; 4100 Z80[58] := @ldd_a_hl;
4173 Z80[59] := dec_sp; 4101 Z80[59] := @dec_sp;
4174 Z80[60] := Z80inc_a; 4102 Z80[60] := @Z80inc_a;
4175 Z80[61] := Z80dec_a; 4103 Z80[61] := @Z80dec_a;
4176 Z80[62] := ld_a_XX; 4104 Z80[62] := @ld_a_XX;
4177 Z80[63] := ccf; 4105 Z80[63] := @ccf;
4178 Z80[64] := ld_b_b; 4106 Z80[64] := @ld_b_b;
4179 Z80[65] := ld_b_c; 4107 Z80[65] := @ld_b_c;
4180 Z80[66] := ld_b_d; 4108 Z80[66] := @ld_b_d;
4181 Z80[67] := ld_b_e; 4109 Z80[67] := @ld_b_e;
4182 Z80[68] := ld_b_h; 4110 Z80[68] := @ld_b_h;
4183 Z80[69] := ld_b_l; 4111 Z80[69] := @ld_b_l;
4184 Z80[70] := ld_b_hl; 4112 Z80[70] := @ld_b_hl;
4185 Z80[71] := ld_b_a; 4113 Z80[71] := @ld_b_a;
4186 Z80[72] := ld_c_b; 4114 Z80[72] := @ld_c_b;
4187 Z80[73] := ld_c_c; 4115 Z80[73] := @ld_c_c;
4188 Z80[74] := ld_c_d; 4116 Z80[74] := @ld_c_d;
4189 Z80[75] := ld_c_e; 4117 Z80[75] := @ld_c_e;
4190 Z80[76] := ld_c_h; 4118 Z80[76] := @ld_c_h;
4191 Z80[77] := ld_c_l; 4119 Z80[77] := @ld_c_l;
4192 Z80[78] := ld_c_hl; 4120 Z80[78] := @ld_c_hl;
4193 Z80[79] := ld_c_a; 4121 Z80[79] := @ld_c_a;
4194 Z80[80] := ld_d_b; 4122 Z80[80] := @ld_d_b;
4195 Z80[81] := ld_d_c; 4123 Z80[81] := @ld_d_c;
4196 Z80[82] := ld_d_d; 4124 Z80[82] := @ld_d_d;
4197 Z80[83] := ld_d_e; 4125 Z80[83] := @ld_d_e;
4198 Z80[84] := ld_d_h; 4126 Z80[84] := @ld_d_h;
4199 Z80[85] := ld_d_l; 4127 Z80[85] := @ld_d_l;
4200 Z80[86] := ld_d_hl; 4128 Z80[86] := @ld_d_hl;
4201 Z80[87] := ld_d_a; 4129 Z80[87] := @ld_d_a;
4202 Z80[88] := ld_e_b; 4130 Z80[88] := @ld_e_b;
4203 Z80[89] := ld_e_c; 4131 Z80[89] := @ld_e_c;
4204 Z80[90] := ld_e_d; 4132 Z80[90] := @ld_e_d;
4205 Z80[91] := ld_e_e; 4133 Z80[91] := @ld_e_e;
4206 Z80[92] := ld_e_h; 4134 Z80[92] := @ld_e_h;
4207 Z80[93] := ld_e_l; 4135 Z80[93] := @ld_e_l;
4208 Z80[94] := ld_e_hl; 4136 Z80[94] := @ld_e_hl;
4209 Z80[95] := ld_e_a; 4137 Z80[95] := @ld_e_a;
4210 Z80[96] := ld_h_b; 4138 Z80[96] := @ld_h_b;
4211 Z80[97] := ld_h_c; 4139 Z80[97] := @ld_h_c;
4212 Z80[98] := ld_h_d; 4140 Z80[98] := @ld_h_d;
4213 Z80[99] := ld_h_e; 4141 Z80[99] := @ld_h_e;
4214 Z80[100] := ld_h_h; 4142 Z80[100] := @ld_h_h;
4215 Z80[101] := ld_h_l; 4143 Z80[101] := @ld_h_l;
4216 Z80[102] := ld_h_hl; 4144 Z80[102] := @ld_h_hl;
4217 Z80[103] := ld_h_a; 4145 Z80[103] := @ld_h_a;
4218 Z80[104] := ld_l_b; 4146 Z80[104] := @ld_l_b;
4219 Z80[105] := ld_l_c; 4147 Z80[105] := @ld_l_c;
4220 Z80[106] := ld_l_d; 4148 Z80[106] := @ld_l_d;
4221 Z80[107] := ld_l_e; 4149 Z80[107] := @ld_l_e;
4222 Z80[108] := ld_l_h; 4150 Z80[108] := @ld_l_h;
4223 Z80[109] := ld_l_l; 4151 Z80[109] := @ld_l_l;
4224 Z80[110] := ld_l_hl; 4152 Z80[110] := @ld_l_hl;
4225 Z80[111] := ld_l_a; 4153 Z80[111] := @ld_l_a;
4226 Z80[112] := ld_hl_b; 4154 Z80[112] := @ld_hl_b;
4227 Z80[113] := ld_hl_c; 4155 Z80[113] := @ld_hl_c;
4228 Z80[114] := ld_hl_d; 4156 Z80[114] := @ld_hl_d;
4229 Z80[115] := ld_hl_e; 4157 Z80[115] := @ld_hl_e;
4230 Z80[116] := ld_hl_h; 4158 Z80[116] := @ld_hl_h;
4231 Z80[117] := ld_hl_l; 4159 Z80[117] := @ld_hl_l;
4232 Z80[118] := Z80halt; 4160 Z80[118] := @Z80halt;
4233 Z80[119] := ld_hl_a; 4161 Z80[119] := @ld_hl_a;
4234 Z80[120] := ld_a_b; 4162 Z80[120] := @ld_a_b;
4235 Z80[121] := ld_a_c; 4163 Z80[121] := @ld_a_c;
4236 Z80[122] := ld_a_d; 4164 Z80[122] := @ld_a_d;
4237 Z80[123] := ld_a_e; 4165 Z80[123] := @ld_a_e;
4238 Z80[124] := ld_a_h; 4166 Z80[124] := @ld_a_h;
4239 Z80[125] := ld_a_l; 4167 Z80[125] := @ld_a_l;
4240 Z80[126] := ld_a_hl; 4168 Z80[126] := @ld_a_hl;
4241 Z80[127] := ld_a_a; 4169 Z80[127] := @ld_a_a;
4242 Z80[128] := add_a_b; 4170 Z80[128] := @add_a_b;
4243 Z80[129] := add_a_c; 4171 Z80[129] := @add_a_c;
4244 Z80[130] := add_a_d; 4172 Z80[130] := @add_a_d;
4245 Z80[131] := add_a_e; 4173 Z80[131] := @add_a_e;
4246 Z80[132] := add_a_h; 4174 Z80[132] := @add_a_h;
4247 Z80[133] := add_a_l; 4175 Z80[133] := @add_a_l;
4248 Z80[134] := add_a_hl; 4176 Z80[134] := @add_a_hl;
4249 Z80[135] := add_a_a; 4177 Z80[135] := @add_a_a;
4250 Z80[136] := adc_a_b; 4178 Z80[136] := @adc_a_b;
4251 Z80[137] := adc_a_c; 4179 Z80[137] := @adc_a_c;
4252 Z80[138] := adc_a_d; 4180 Z80[138] := @adc_a_d;
4253 Z80[139] := adc_a_e; 4181 Z80[139] := @adc_a_e;
4254 Z80[140] := adc_a_h; 4182 Z80[140] := @adc_a_h;
4255 Z80[141] := adc_a_l; 4183 Z80[141] := @adc_a_l;
4256 Z80[142] := adc_a_hl; 4184 Z80[142] := @adc_a_hl;
4257 Z80[143] := adc_a_a; 4185 Z80[143] := @adc_a_a;
4258 Z80[144] := sub_b; 4186 Z80[144] := @sub_b;
4259 Z80[145] := sub_c; 4187 Z80[145] := @sub_c;
4260 Z80[146] := sub_d; 4188 Z80[146] := @sub_d;
4261 Z80[147] := sub_e; 4189 Z80[147] := @sub_e;
4262 Z80[148] := sub_h; 4190 Z80[148] := @sub_h;
4263 Z80[149] := sub_l; 4191 Z80[149] := @sub_l;
4264 Z80[150] := sub_hl; 4192 Z80[150] := @sub_hl;
4265 Z80[151] := sub_a; 4193 Z80[151] := @sub_a;
4266 Z80[152] := sbc_a_b; 4194 Z80[152] := @sbc_a_b;
4267 Z80[153] := sbc_a_c; 4195 Z80[153] := @sbc_a_c;
4268 Z80[154] := sbc_a_d; 4196 Z80[154] := @sbc_a_d;
4269 Z80[155] := sbc_a_e; 4197 Z80[155] := @sbc_a_e;
4270 Z80[156] := sbc_a_h; 4198 Z80[156] := @sbc_a_h;
4271 Z80[157] := sbc_a_l; 4199 Z80[157] := @sbc_a_l;
4272 Z80[158] := sbc_a_hl; 4200 Z80[158] := @sbc_a_hl;
4273 Z80[159] := sbc_a_a; 4201 Z80[159] := @sbc_a_a;
4274 Z80[160] := and_b; 4202 Z80[160] := @and_b;
4275 Z80[161] := and_c; 4203 Z80[161] := @and_c;
4276 Z80[162] := and_d; 4204 Z80[162] := @and_d;
4277 Z80[163] := and_e; 4205 Z80[163] := @and_e;
4278 Z80[164] := and_h; 4206 Z80[164] := @and_h;
4279 Z80[165] := and_l; 4207 Z80[165] := @and_l;
4280 Z80[166] := and_hl; 4208 Z80[166] := @and_hl;
4281 Z80[167] := and_a; 4209 Z80[167] := @and_a;
4282 Z80[168] := xor_b; 4210 Z80[168] := @xor_b;
4283 Z80[169] := xor_c; 4211 Z80[169] := @xor_c;
4284 Z80[170] := xor_d; 4212 Z80[170] := @xor_d;
4285 Z80[171] := xor_e; 4213 Z80[171] := @xor_e;
4286 Z80[172] := xor_h; 4214 Z80[172] := @xor_h;
4287 Z80[173] := xor_l; 4215 Z80[173] := @xor_l;
4288 Z80[174] := xor_hl; 4216 Z80[174] := @xor_hl;
4289 Z80[175] := xor_a; 4217 Z80[175] := @xor_a;
4290 Z80[176] := or_b; 4218 Z80[176] := @or_b;
4291 Z80[177] := or_c; 4219 Z80[177] := @or_c;
4292 Z80[178] := or_d; 4220 Z80[178] := @or_d;
4293 Z80[179] := or_e; 4221 Z80[179] := @or_e;
4294 Z80[180] := or_h; 4222 Z80[180] := @or_h;
4295 Z80[181] := or_l; 4223 Z80[181] := @or_l;
4296 Z80[182] := or_hl; 4224 Z80[182] := @or_hl;
4297 Z80[183] := or_a; 4225 Z80[183] := @or_a;
4298 Z80[184] := cp_b; 4226 Z80[184] := @cp_b;
4299 Z80[185] := cp_c; 4227 Z80[185] := @cp_c;
4300 Z80[186] := cp_d; 4228 Z80[186] := @cp_d;
4301 Z80[187] := cp_e; 4229 Z80[187] := @cp_e;
4302 Z80[188] := cp_h; 4230 Z80[188] := @cp_h;
4303 Z80[189] := cp_l; 4231 Z80[189] := @cp_l;
4304 Z80[190] := cp_hl; 4232 Z80[190] := @cp_hl;
4305 Z80[191] := cp_a; 4233 Z80[191] := @cp_a;
4306 Z80[192] := ret_nz; 4234 Z80[192] := @ret_nz;
4307 Z80[193] := pop_bc; 4235 Z80[193] := @pop_bc;
4308 Z80[194] := jp_nz_XXXX; 4236 Z80[194] := @jp_nz_XXXX;
4309 Z80[195] := jp_XXXX; 4237 Z80[195] := @jp_XXXX;
4310 Z80[196] := call_nz_XXXX; 4238 Z80[196] := @call_nz_XXXX;
4311 Z80[197] := push_bc; 4239 Z80[197] := @push_bc;
4312 Z80[198] := add_a_XX; 4240 Z80[198] := @add_a_XX;
4313 Z80[199] := rst_0; 4241 Z80[199] := @rst_0;
4314 Z80[200] := ret_z; 4242 Z80[200] := @ret_z;
4315 Z80[201] := ret; 4243 Z80[201] := @ret;
4316 Z80[202] := jp_z_XXXX; 4244 Z80[202] := @jp_z_XXXX;
4317 Z80[203] := PFX_CB; 4245 Z80[203] := @PFX_CB;
4318 Z80[204] := call_z_XXXX; 4246 Z80[204] := @call_z_XXXX;
4319 Z80[205] := call_XXXX; 4247 Z80[205] := @call_XXXX;
4320 Z80[206] := adc_a_XX; 4248 Z80[206] := @adc_a_XX;
4321 Z80[207] := rst_8; 4249 Z80[207] := @rst_8;
4322 Z80[208] := ret_nc; 4250 Z80[208] := @ret_nc;
4323 Z80[209] := pop_de; 4251 Z80[209] := @pop_de;
4324 Z80[210] := jp_nc_XXXX; 4252 Z80[210] := @jp_nc_XXXX;
4325 Z80[211] := unimplemented; 4253 Z80[211] := @unimplemented;
4326 Z80[212] := call_nc_XXXX; 4254 Z80[212] := @call_nc_XXXX;
4327 Z80[213] := push_de; 4255 Z80[213] := @push_de;
4328 Z80[214] := sub_XX; 4256 Z80[214] := @sub_XX;
4329 Z80[215] := rst_16; 4257 Z80[215] := @rst_16;
4330 Z80[216] := ret_c; 4258 Z80[216] := @ret_c;
4331 Z80[217] := reti; 4259 Z80[217] := @reti;
4332 Z80[218] := jp_c_XXXX; 4260 Z80[218] := @jp_c_XXXX;
4333 Z80[219] := unimplemented; 4261 Z80[219] := @unimplemented;
4334 Z80[220] := call_c_XXXX; 4262 Z80[220] := @call_c_XXXX;
4335 Z80[221] := dd_debug; 4263 Z80[221] := @dd_debug;
4336 Z80[222] := sbc_a_XX; 4264 Z80[222] := @sbc_a_XX;
4337 Z80[223] := rst_24; 4265 Z80[223] := @rst_24;
4338 Z80[224] := LDFF00plusN_A; 4266 Z80[224] := @LDFF00plusN_A;
4339 Z80[225] := pop_hl; 4267 Z80[225] := @pop_hl;
4340 Z80[226] := ld_ff00plusC_a; 4268 Z80[226] := @ld_ff00plusC_a;
4341 Z80[227] := unimplemented; 4269 Z80[227] := @unimplemented;
4342 Z80[228] := unimplemented; 4270 Z80[228] := @unimplemented;
4343 Z80[229] := push_hl; 4271 Z80[229] := @push_hl;
4344 Z80[230] := and_XX; 4272 Z80[230] := @and_XX;
4345 Z80[231] := rst_32; 4273 Z80[231] := @rst_32;
4346 Z80[232] := add_sp_dd; 4274 Z80[232] := @add_sp_dd;
4347 Z80[233] := jp_hl; 4275 Z80[233] := @jp_hl;
4348 Z80[234] := ld_nn_a; 4276 Z80[234] := @ld_nn_a;
4349 Z80[235] := unimplemented; 4277 Z80[235] := @unimplemented;
4350 Z80[236] := unimplemented; 4278 Z80[236] := @unimplemented;
4351 Z80[237] := unimplemented; 4279 Z80[237] := @unimplemented;
4352 Z80[238] := xor_XX; 4280 Z80[238] := @xor_XX;
4353 Z80[239] := rst_40; 4281 Z80[239] := @rst_40;
4354 Z80[240] := ld_a_ff00plusn; 4282 Z80[240] := @ld_a_ff00plusn;
4355 Z80[241] := pop_af; 4283 Z80[241] := @pop_af;
4356 Z80[242] := ld_a_ff00plusc; 4284 Z80[242] := @ld_a_ff00plusc;
4357 Z80[243] := di; 4285 Z80[243] := @di;
4358 Z80[244] := unimplemented; 4286 Z80[244] := @unimplemented;
4359 Z80[245] := push_af; 4287 Z80[245] := @push_af;
4360 Z80[246] := or_XX; 4288 Z80[246] := @or_XX;
4361 Z80[247] := rst_48; 4289 Z80[247] := @rst_48;
4362 Z80[248] := ld_hl_sp_plus_dd; 4290 Z80[248] := @ld_hl_sp_plus_dd;
4363 Z80[249] := ld_sp_hl; 4291 Z80[249] := @ld_sp_hl;
4364 Z80[250] := ld_a_nn; 4292 Z80[250] := @ld_a_nn;
4365 Z80[251] := ei; 4293 Z80[251] := @ei;
4366 Z80[252] := unimplemented; 4294 Z80[252] := @unimplemented;
4367 Z80[253] := PFX_FD; 4295 Z80[253] := @PFX_FD;
4368 Z80[254] := cp_XX; 4296 Z80[254] := @cp_XX;
4369 Z80[255] := rst_56; 4297 Z80[255] := @rst_56;
4370 4298
4371 // CB 4299 // CB
4372 Z80[256] := rlc_b; 4300 Z80[256] := @rlc_b;
4373 Z80[257] := rlc_c; 4301 Z80[257] := @rlc_c;
4374 Z80[258] := rlc_d; 4302 Z80[258] := @rlc_d;
4375 Z80[259] := rlc_e; 4303 Z80[259] := @rlc_e;
4376 Z80[260] := rlc_h; 4304 Z80[260] := @rlc_h;
4377 Z80[261] := rlc_l; 4305 Z80[261] := @rlc_l;
4378 Z80[262] := rlc; 4306 Z80[262] := @rlc;
4379 Z80[263] := rlc_a; 4307 Z80[263] := @rlc_a;
4380 Z80[264] := rrc_b; 4308 Z80[264] := @rrc_b;
4381 Z80[265] := rrc_c; 4309 Z80[265] := @rrc_c;
4382 Z80[266] := rrc_d; 4310 Z80[266] := @rrc_d;
4383 Z80[267] := rrc_e; 4311 Z80[267] := @rrc_e;
4384 Z80[268] := rrc_h; 4312 Z80[268] := @rrc_h;
4385 Z80[269] := rrc_l; 4313 Z80[269] := @rrc_l;
4386 Z80[270] := rrc; 4314 Z80[270] := @rrc;
4387 Z80[271] := rrc_a; 4315 Z80[271] := @rrc_a;
4388 Z80[272] := rl_b; 4316 Z80[272] := @rl_b;
4389 Z80[273] := rl_c; 4317 Z80[273] := @rl_c;
4390 Z80[274] := rl_d; 4318 Z80[274] := @rl_d;
4391 Z80[275] := rl_e; 4319 Z80[275] := @rl_e;
4392 Z80[276] := rl_h; 4320 Z80[276] := @rl_h;
4393 Z80[277] := rl_l; 4321 Z80[277] := @rl_l;
4394 Z80[278] := rl; 4322 Z80[278] := @rl;
4395 Z80[279] := rl_a; 4323 Z80[279] := @rl_a;
4396 Z80[280] := rr_b; 4324 Z80[280] := @rr_b;
4397 Z80[281] := rr_c; 4325 Z80[281] := @rr_c;
4398 Z80[282] := rr_d; 4326 Z80[282] := @rr_d;
4399 Z80[283] := rr_e; 4327 Z80[283] := @rr_e;
4400 Z80[284] := rr_h; 4328 Z80[284] := @rr_h;
4401 Z80[285] := rr_l; 4329 Z80[285] := @rr_l;
4402 Z80[286] := rr; 4330 Z80[286] := @rr;
4403 Z80[287] := rr_a; 4331 Z80[287] := @rr_a;
4404 Z80[288] := sla_b; 4332 Z80[288] := @sla_b;
4405 Z80[289] := sla_c; 4333 Z80[289] := @sla_c;
4406 Z80[290] := sla_d; 4334 Z80[290] := @sla_d;
4407 Z80[291] := sla_e; 4335 Z80[291] := @sla_e;
4408 Z80[292] := sla_h; 4336 Z80[292] := @sla_h;
4409 Z80[293] := sla_l; 4337 Z80[293] := @sla_l;
4410 Z80[294] := sla; 4338 Z80[294] := @sla;
4411 Z80[295] := CBsla_a; 4339 Z80[295] := @CBsla_a;
4412 Z80[296] := sra_b; 4340 Z80[296] := @sra_b;
4413 Z80[297] := sra_c; 4341 Z80[297] := @sra_c;
4414 Z80[298] := sra_d; 4342 Z80[298] := @sra_d;
4415 Z80[299] := sra_e; 4343 Z80[299] := @sra_e;
4416 Z80[300] := sra_h; 4344 Z80[300] := @sra_h;
4417 Z80[301] := sra_l; 4345 Z80[301] := @sra_l;
4418 Z80[302] := sra; 4346 Z80[302] := @sra;
4419 Z80[303] := CBsra_a; 4347 Z80[303] := @CBsra_a;
4420 Z80[304] := sll_b; 4348 Z80[304] := @sll_b;
4421 Z80[305] := sll_c; 4349 Z80[305] := @sll_c;
4422 Z80[306] := sll_d; 4350 Z80[306] := @sll_d;
4423 Z80[307] := sll_e; 4351 Z80[307] := @sll_e;
4424 Z80[308] := sll_h; 4352 Z80[308] := @sll_h;
4425 Z80[309] := sll_l; 4353 Z80[309] := @sll_l;
4426 Z80[310] := sll; 4354 Z80[310] := @sll;
4427 Z80[311] := CBsll_a; 4355 Z80[311] := @CBsll_a;
4428 Z80[312] := srl_b; 4356 Z80[312] := @srl_b;
4429 Z80[313] := srl_c; 4357 Z80[313] := @srl_c;
4430 Z80[314] := srl_d; 4358 Z80[314] := @srl_d;
4431 Z80[315] := srl_e; 4359 Z80[315] := @srl_e;
4432 Z80[316] := srl_h; 4360 Z80[316] := @srl_h;
4433 Z80[317] := srl_l; 4361 Z80[317] := @srl_l;
4434 Z80[318] := srl; 4362 Z80[318] := @srl;
4435 Z80[319] := CBsrl_a; 4363 Z80[319] := @CBsrl_a;
4436 Z80[320] := bit0_b; 4364 Z80[320] := @bit0_b;
4437 Z80[321] := bit0_c; 4365 Z80[321] := @bit0_c;
4438 Z80[322] := bit0_d; 4366 Z80[322] := @bit0_d;
4439 Z80[323] := bit0_e; 4367 Z80[323] := @bit0_e;
4440 Z80[324] := bit0_h; 4368 Z80[324] := @bit0_h;
4441 Z80[325] := bit0_l; 4369 Z80[325] := @bit0_l;
4442 Z80[326] := bit0; 4370 Z80[326] := @bit0;
4443 Z80[327] := bit0_a; 4371 Z80[327] := @bit0_a;
4444 Z80[328] := bit1_b; 4372 Z80[328] := @bit1_b;
4445 Z80[329] := bit1_c; 4373 Z80[329] := @bit1_c;
4446 Z80[330] := bit1_d; 4374 Z80[330] := @bit1_d;
4447 Z80[331] := bit1_e; 4375 Z80[331] := @bit1_e;
4448 Z80[332] := bit1_h; 4376 Z80[332] := @bit1_h;
4449 Z80[333] := bit1_l; 4377 Z80[333] := @bit1_l;
4450 Z80[334] := bit1; 4378 Z80[334] := @bit1;
4451 Z80[335] := bit1_a; 4379 Z80[335] := @bit1_a;
4452 Z80[336] := bit2_b; 4380 Z80[336] := @bit2_b;
4453 Z80[337] := bit2_c; 4381 Z80[337] := @bit2_c;
4454 Z80[338] := bit2_d; 4382 Z80[338] := @bit2_d;
4455 Z80[339] := bit2_e; 4383 Z80[339] := @bit2_e;
4456 Z80[340] := bit2_h; 4384 Z80[340] := @bit2_h;
4457 Z80[341] := bit2_l; 4385 Z80[341] := @bit2_l;
4458 Z80[342] := bit2; 4386 Z80[342] := @bit2;
4459 Z80[343] := bit2_a; 4387 Z80[343] := @bit2_a;
4460 Z80[344] := bit3_b; 4388 Z80[344] := @bit3_b;
4461 Z80[345] := bit3_c; 4389 Z80[345] := @bit3_c;
4462 Z80[346] := bit3_d; 4390 Z80[346] := @bit3_d;
4463 Z80[347] := bit3_e; 4391 Z80[347] := @bit3_e;
4464 Z80[348] := bit3_h; 4392 Z80[348] := @bit3_h;
4465 Z80[349] := bit3_l; 4393 Z80[349] := @bit3_l;
4466 Z80[350] := bit3; 4394 Z80[350] := @bit3;
4467 Z80[351] := bit3_a; 4395 Z80[351] := @bit3_a;
4468 Z80[352] := bit4_b; 4396 Z80[352] := @bit4_b;
4469 Z80[353] := bit4_c; 4397 Z80[353] := @bit4_c;
4470 Z80[354] := bit4_d; 4398 Z80[354] := @bit4_d;
4471 Z80[355] := bit4_e; 4399 Z80[355] := @bit4_e;
4472 Z80[356] := bit4_h; 4400 Z80[356] := @bit4_h;
4473 Z80[357] := bit4_l; 4401 Z80[357] := @bit4_l;
4474 Z80[358] := bit4; 4402 Z80[358] := @bit4;
4475 Z80[359] := bit4_a; 4403 Z80[359] := @bit4_a;
4476 Z80[360] := bit5_b; 4404 Z80[360] := @bit5_b;
4477 Z80[361] := bit5_c; 4405 Z80[361] := @bit5_c;
4478 Z80[362] := bit5_d; 4406 Z80[362] := @bit5_d;
4479 Z80[363] := bit5_e; 4407 Z80[363] := @bit5_e;
4480 Z80[364] := bit5_h; 4408 Z80[364] := @bit5_h;
4481 Z80[365] := bit5_l; 4409 Z80[365] := @bit5_l;
4482 Z80[366] := bit5; 4410 Z80[366] := @bit5;
4483 Z80[367] := bit5_a; 4411 Z80[367] := @bit5_a;
4484 Z80[368] := bit6_b; 4412 Z80[368] := @bit6_b;
4485 Z80[369] := bit6_c; 4413 Z80[369] := @bit6_c;
4486 Z80[370] := bit6_d; 4414 Z80[370] := @bit6_d;
4487 Z80[371] := bit6_e; 4415 Z80[371] := @bit6_e;
4488 Z80[372] := bit6_h; 4416 Z80[372] := @bit6_h;
4489 Z80[373] := bit6_l; 4417 Z80[373] := @bit6_l;
4490 Z80[374] := bit6; 4418 Z80[374] := @bit6;
4491 Z80[375] := bit6_a; 4419 Z80[375] := @bit6_a;
4492 Z80[376] := bit7_b; 4420 Z80[376] := @bit7_b;
4493 Z80[377] := bit7_c; 4421 Z80[377] := @bit7_c;
4494 Z80[378] := bit7_d; 4422 Z80[378] := @bit7_d;
4495 Z80[379] := bit7_e; 4423 Z80[379] := @bit7_e;
4496 Z80[380] := bit7_h; 4424 Z80[380] := @bit7_h;
4497 Z80[381] := bit7_l; 4425 Z80[381] := @bit7_l;
4498 Z80[382] := bit7; 4426 Z80[382] := @bit7;
4499 Z80[383] := bit7_a; 4427 Z80[383] := @bit7_a;
4500 Z80[384] := res0_b; 4428 Z80[384] := @res0_b;
4501 Z80[385] := res0_c; 4429 Z80[385] := @res0_c;
4502 Z80[386] := res0_d; 4430 Z80[386] := @res0_d;
4503 Z80[387] := res0_e; 4431 Z80[387] := @res0_e;
4504 Z80[388] := res0_h; 4432 Z80[388] := @res0_h;
4505 Z80[389] := res0_l; 4433 Z80[389] := @res0_l;
4506 Z80[390] := res0; 4434 Z80[390] := @res0;
4507 Z80[391] := res0_a; 4435 Z80[391] := @res0_a;
4508 Z80[392] := res1_b; 4436 Z80[392] := @res1_b;
4509 Z80[393] := res1_c; 4437 Z80[393] := @res1_c;
4510 Z80[394] := res1_d; 4438 Z80[394] := @res1_d;
4511 Z80[395] := res1_e; 4439 Z80[395] := @res1_e;
4512 Z80[396] := res1_h; 4440 Z80[396] := @res1_h;
4513 Z80[397] := res1_l; 4441 Z80[397] := @res1_l;
4514 Z80[398] := res1; 4442 Z80[398] := @res1;
4515 Z80[399] := res1_a; 4443 Z80[399] := @res1_a;
4516 Z80[400] := res2_b; 4444 Z80[400] := @res2_b;
4517 Z80[401] := res2_c; 4445 Z80[401] := @res2_c;
4518 Z80[402] := res2_d; 4446 Z80[402] := @res2_d;
4519 Z80[403] := res2_e; 4447 Z80[403] := @res2_e;
4520 Z80[404] := res2_h; 4448 Z80[404] := @res2_h;
4521 Z80[405] := res2_l; 4449 Z80[405] := @res2_l;
4522 Z80[406] := res2; 4450 Z80[406] := @res2;
4523 Z80[407] := res2_a; 4451 Z80[407] := @res2_a;
4524 Z80[408] := res3_b; 4452 Z80[408] := @res3_b;
4525 Z80[409] := res3_c; 4453 Z80[409] := @res3_c;
4526 Z80[410] := res3_d; 4454 Z80[410] := @res3_d;
4527 Z80[411] := res3_e; 4455 Z80[411] := @res3_e;
4528 Z80[412] := res3_h; 4456 Z80[412] := @res3_h;
4529 Z80[413] := res3_l; 4457 Z80[413] := @res3_l;
4530 Z80[414] := res3; 4458 Z80[414] := @res3;
4531 Z80[415] := res3_a; 4459 Z80[415] := @res3_a;
4532 Z80[416] := res4_b; 4460 Z80[416] := @res4_b;
4533 Z80[417] := res4_c; 4461 Z80[417] := @res4_c;
4534 Z80[418] := res4_d; 4462 Z80[418] := @res4_d;
4535 Z80[419] := res4_e; 4463 Z80[419] := @res4_e;
4536 Z80[420] := res4_h; 4464 Z80[420] := @res4_h;
4537 Z80[421] := res4_l; 4465 Z80[421] := @res4_l;
4538 Z80[422] := res4; 4466 Z80[422] := @res4;
4539 Z80[423] := res4_a; 4467 Z80[423] := @res4_a;
4540 Z80[424] := res5_b; 4468 Z80[424] := @res5_b;
4541 Z80[425] := res5_c; 4469 Z80[425] := @res5_c;
4542 Z80[426] := res5_d; 4470 Z80[426] := @res5_d;
4543 Z80[427] := res5_e; 4471 Z80[427] := @res5_e;
4544 Z80[428] := res5_h; 4472 Z80[428] := @res5_h;
4545 Z80[429] := res5_l; 4473 Z80[429] := @res5_l;
4546 Z80[430] := res5; 4474 Z80[430] := @res5;
4547 Z80[431] := res5_a; 4475 Z80[431] := @res5_a;
4548 Z80[432] := res6_b; 4476 Z80[432] := @res6_b;
4549 Z80[433] := res6_c; 4477 Z80[433] := @res6_c;
4550 Z80[434] := res6_d; 4478 Z80[434] := @res6_d;
4551 Z80[435] := res6_e; 4479 Z80[435] := @res6_e;
4552 Z80[436] := res6_h; 4480 Z80[436] := @res6_h;
4553 Z80[437] := res6_l; 4481 Z80[437] := @res6_l;
4554 Z80[438] := res6; 4482 Z80[438] := @res6;
4555 Z80[439] := res6_a; 4483 Z80[439] := @res6_a;
4556 Z80[440] := res7_b; 4484 Z80[440] := @res7_b;
4557 Z80[441] := res7_c; 4485 Z80[441] := @res7_c;
4558 Z80[442] := res7_d; 4486 Z80[442] := @res7_d;
4559 Z80[443] := res7_e; 4487 Z80[443] := @res7_e;
4560 Z80[444] := res7_h; 4488 Z80[444] := @res7_h;
4561 Z80[445] := res7_l; 4489 Z80[445] := @res7_l;
4562 Z80[446] := res7; 4490 Z80[446] := @res7;
4563 Z80[447] := res7_a; 4491 Z80[447] := @res7_a;
4564 Z80[448] := set0_b; 4492 Z80[448] := @set0_b;
4565 Z80[449] := set0_c; 4493 Z80[449] := @set0_c;
4566 Z80[450] := set0_d; 4494 Z80[450] := @set0_d;
4567 Z80[451] := set0_e; 4495 Z80[451] := @set0_e;
4568 Z80[452] := set0_h; 4496 Z80[452] := @set0_h;
4569 Z80[453] := set0_l; 4497 Z80[453] := @set0_l;
4570 Z80[454] := set0; 4498 Z80[454] := @set0;
4571 Z80[455] := set0_a; 4499 Z80[455] := @set0_a;
4572 Z80[456] := set1_b; 4500 Z80[456] := @set1_b;
4573 Z80[457] := set1_c; 4501 Z80[457] := @set1_c;
4574 Z80[458] := set1_d; 4502 Z80[458] := @set1_d;
4575 Z80[459] := set1_e; 4503 Z80[459] := @set1_e;
4576 Z80[460] := set1_h; 4504 Z80[460] := @set1_h;
4577 Z80[461] := set1_l; 4505 Z80[461] := @set1_l;
4578 Z80[462] := set1; 4506 Z80[462] := @set1;
4579 Z80[463] := set1_a; 4507 Z80[463] := @set1_a;
4580 Z80[464] := set2_b; 4508 Z80[464] := @set2_b;
4581 Z80[465] := set2_c; 4509 Z80[465] := @set2_c;
4582 Z80[466] := set2_d; 4510 Z80[466] := @set2_d;
4583 Z80[467] := set2_e; 4511 Z80[467] := @set2_e;
4584 Z80[468] := set2_h; 4512 Z80[468] := @set2_h;
4585 Z80[469] := set2_l; 4513 Z80[469] := @set2_l;
4586 Z80[470] := set2; 4514 Z80[470] := @set2;
4587 Z80[471] := set2_a; 4515 Z80[471] := @set2_a;
4588 Z80[472] := set3_b; 4516 Z80[472] := @set3_b;
4589 Z80[473] := set3_c; 4517 Z80[473] := @set3_c;
4590 Z80[474] := set3_d; 4518 Z80[474] := @set3_d;
4591 Z80[475] := set3_e; 4519 Z80[475] := @set3_e;
4592 Z80[476] := set3_h; 4520 Z80[476] := @set3_h;
4593 Z80[477] := set3_l; 4521 Z80[477] := @set3_l;
4594 Z80[478] := set3; 4522 Z80[478] := @set3;
4595 Z80[479] := set3_a; 4523 Z80[479] := @set3_a;
4596 Z80[480] := set4_b; 4524 Z80[480] := @set4_b;
4597 Z80[481] := set4_c; 4525 Z80[481] := @set4_c;
4598 Z80[482] := set4_d; 4526 Z80[482] := @set4_d;
4599 Z80[483] := set4_e; 4527 Z80[483] := @set4_e;
4600 Z80[484] := set4_h; 4528 Z80[484] := @set4_h;
4601 Z80[485] := set4_l; 4529 Z80[485] := @set4_l;
4602 Z80[486] := set4; 4530 Z80[486] := @set4;
4603 Z80[487] := set4_a; 4531 Z80[487] := @set4_a;
4604 Z80[488] := set5_b; 4532 Z80[488] := @set5_b;
4605 Z80[489] := set5_c; 4533 Z80[489] := @set5_c;
4606 Z80[490] := set5_d; 4534 Z80[490] := @set5_d;
4607 Z80[491] := set5_e; 4535 Z80[491] := @set5_e;
4608 Z80[492] := set5_h; 4536 Z80[492] := @set5_h;
4609 Z80[493] := set5_l; 4537 Z80[493] := @set5_l;
4610 Z80[494] := set5; 4538 Z80[494] := @set5;
4611 Z80[495] := set5_a; 4539 Z80[495] := @set5_a;
4612 Z80[496] := set6_b; 4540 Z80[496] := @set6_b;
4613 Z80[497] := set6_c; 4541 Z80[497] := @set6_c;
4614 Z80[498] := set6_d; 4542 Z80[498] := @set6_d;
4615 Z80[499] := set6_e; 4543 Z80[499] := @set6_e;
4616 Z80[500] := set6_h; 4544 Z80[500] := @set6_h;
4617 Z80[501] := set6_l; 4545 Z80[501] := @set6_l;
4618 Z80[502] := set6; 4546 Z80[502] := @set6;
4619 Z80[503] := set6_a; 4547 Z80[503] := @set6_a;
4620 Z80[504] := set7_b; 4548 Z80[504] := @set7_b;
4621 Z80[505] := set7_c; 4549 Z80[505] := @set7_c;
4622 Z80[506] := set7_d; 4550 Z80[506] := @set7_d;
4623 Z80[507] := set7_e; 4551 Z80[507] := @set7_e;
4624 Z80[508] := set7_h; 4552 Z80[508] := @set7_h;
4625 Z80[509] := set7_l; 4553 Z80[509] := @set7_l;
4626 Z80[510] := set7; 4554 Z80[510] := @set7;
4627 Z80[511] := set7_a; 4555 Z80[511] := @set7_a;
4628 end. 4556 end.