Mercurial > repos > blastem
comparison z80.cpu @ 1753:33ec5df77fac
Integration of new Z80 core is sort of working now
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 12 Feb 2019 09:58:04 -0800 |
parents | d6d4c006a7b3 |
children | 093e323dc683 |
comparison
equal
deleted
inserted
replaced
1752:d6d4c006a7b3 | 1753:33ec5df77fac |
---|---|
52 reset 8 | 52 reset 8 |
53 io_map ptrmemmap_chunk | 53 io_map ptrmemmap_chunk |
54 io_chunks 32 | 54 io_chunks 32 |
55 io_mask 32 | 55 io_mask 32 |
56 int_cycle 32 | 56 int_cycle 32 |
57 int_end_cycle 32 | |
57 int_value 8 | 58 int_value 8 |
58 nmi_cycle 32 | 59 nmi_cycle 32 |
59 system ptrvoid | 60 system ptrvoid |
60 fastmem ptr8 64 | 61 fastread ptr8 64 |
62 fastwrite ptr8 64 | |
61 mem_pointers ptr8 4 | 63 mem_pointers ptr8 4 |
62 | 64 |
63 flags | 65 flags |
64 register f | 66 register f |
65 S 7 sign last_flag_result.7 | 67 S 7 sign last_flag_result.7 |
79 mov pc scratch1 | 81 mov pc scratch1 |
80 ocall read_8 | 82 ocall read_8 |
81 add 1 pc pc | 83 add 1 pc pc |
82 | 84 |
83 z80_run_op | 85 z80_run_op |
86 #printf "Z80: %X @ %d\n" pc cycles | |
84 z80_op_fetch | 87 z80_op_fetch |
85 dispatch scratch1 | 88 dispatch scratch1 |
86 | 89 |
87 z80_interrupt | 90 z80_interrupt |
88 cmp int_cycle cycles | 91 cmp int_cycle cycles |
89 if >=U | 92 if >=U |
90 | 93 |
91 mov 0xFFFFFFFF int_cycle | |
92 mov 0 iff1 | 94 mov 0 iff1 |
93 mov 0 iff2 | 95 mov 0 iff2 |
94 cycles 6 | 96 cycles 6 |
95 update_sync | 97 update_sync |
96 | 98 |
1533 sub 1 pc pc | 1535 sub 1 pc pc |
1534 | 1536 |
1535 11110011 di | 1537 11110011 di |
1536 mov 0 iff1 | 1538 mov 0 iff1 |
1537 mov 0 iff2 | 1539 mov 0 iff2 |
1538 #TODO: update interrupt/sync cycle | 1540 update_sync |
1539 | 1541 |
1540 11111011 ei | 1542 11111011 ei |
1541 mov 1 iff1 | 1543 mov 1 iff1 |
1542 mov 1 iff2 | 1544 mov 1 iff2 |
1543 #TODO: update interrupt/sync cycle | 1545 update_sync |
1546 cmp int_cycle cycles | |
1547 if >=U | |
1548 | |
1549 add 1 cycles int_cycle | |
1550 | |
1551 end | |
1544 | 1552 |
1545 ed 01D00110 im0 | 1553 ed 01D00110 im0 |
1546 mov 0 imode | 1554 mov 0 imode |
1547 | 1555 |
1548 ed 01D10110 im1 | 1556 ed 01D10110 im1 |
1652 meta low pc | 1660 meta low pc |
1653 z80_pop | 1661 z80_pop |
1654 lsl pch 8 pch | 1662 lsl pch 8 pch |
1655 or pch pc pc | 1663 or pch pc pc |
1656 | 1664 |
1657 11CCC000 ret_cond | 1665 ed 01001101 reti |
1658 local pch 16 | 1666 local pch 16 |
1659 cycles 1 | 1667 cycles 1 |
1660 z80_check_cond C | |
1661 if istrue | |
1662 | |
1663 meta high pch | 1668 meta high pch |
1664 meta low pc | 1669 meta low pc |
1665 z80_pop | 1670 z80_pop |
1666 lsl pch 8 pch | 1671 lsl pch 8 pch |
1667 or pch pc pc | 1672 or pch pc pc |
1668 | 1673 |
1674 ed 01NN1101 retn | |
1675 mov iff2 iff1 | |
1676 local pch 16 | |
1677 cycles 1 | |
1678 meta high pch | |
1679 meta low pc | |
1680 z80_pop | |
1681 lsl pch 8 pch | |
1682 or pch pc pc | |
1683 | |
1684 11CCC000 ret_cond | |
1685 local pch 16 | |
1686 cycles 1 | |
1687 z80_check_cond C | |
1688 if istrue | |
1689 | |
1690 meta high pch | |
1691 meta low pc | |
1692 z80_pop | |
1693 lsl pch 8 pch | |
1694 or pch pc pc | |
1695 | |
1669 end | 1696 end |
1670 | 1697 |
1671 11011011 in_abs | 1698 11011011 in_abs |
1672 z80_fetch_immed | 1699 z80_fetch_immed |
1673 ocall io_read8 | 1700 ocall io_read8 |
1688 ed 01RRR001 out_bc | 1715 ed 01RRR001 out_bc |
1689 lsl b 8 scratch2 | 1716 lsl b 8 scratch2 |
1690 or c scratch2 scratch2 | 1717 or c scratch2 scratch2 |
1691 mov main.R scratch1 | 1718 mov main.R scratch1 |
1692 ocall io_write8 | 1719 ocall io_write8 |
1720 | |
1721 z80_outi_outd | |
1722 arg change 16 | |
1723 local tmp 8 | |
1724 cycles 1 | |
1725 z80_fetch_hl | |
1726 | |
1727 and 0x80 scratch1 nflag | |
1728 | |
1729 lsl h 8 scratch2 | |
1730 or l scratch2 scratch2 | |
1731 add change scratch2 scratch2 | |
1732 mov scratch2 l | |
1733 lsr scratch2 8 h | |
1734 | |
1735 add l scratch1 tmp | |
1736 update_flags C | |
1737 and 7 tmp tmp | |
1738 | |
1739 lsl 8 b scratch2 | |
1740 or c scratch2 scratch2 | |
1741 ocall io_write8 | |
1742 | |
1743 lsl 8 b wz | |
1744 or c wz wz | |
1745 | |
1746 sub 1 b b | |
1747 update_flags SZYX | |
1748 xor b tmp tmp | |
1749 update_flags P | |
1750 lsr chflags 4 tmp | |
1751 or tmp chflags chflags | |
1752 | |
1753 ed 10100011 outi | |
1754 z80_outi_outd 1 | |
1755 | |
1756 ed 10110011 otir | |
1757 z80_outi_outd 1 | |
1758 if zflag | |
1759 else | |
1760 sub 2 pc pc | |
1761 cycles 5 | |
1762 end | |
1763 | |
1764 ed 10101011 outd | |
1765 z80_outi_outd -1 | |
1766 | |
1767 ed 10111011 otdr | |
1768 z80_outi_outd -1 | |
1769 if zflag | |
1770 else | |
1771 sub 2 pc pc | |
1772 cycles 5 | |
1773 end | |
1693 | 1774 |
1694 00000111 rlca | 1775 00000111 rlca |
1695 rol a 1 a | 1776 rol a 1 a |
1696 update_flags YH0XN0C | 1777 update_flags YH0XN0C |
1697 | 1778 |