Commit a42a5b2

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