Mercurial > repos > blastem
comparison m68k.cpu @ 2478:ea37200967c7
Implement lea and pea in new 68K core
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 07 Mar 2024 00:53:11 -0800 |
parents | f171a12fc98c |
children | 29baf8d5a579 |
comparison
equal
deleted
inserted
replaced
2477:2972a8e16ed2 | 2478:ea37200967c7 |
---|---|
1735 | 1735 |
1736 0100100001000RRR swap | 1736 0100100001000RRR swap |
1737 ror dregs.R 16 dregs.R | 1737 ror dregs.R 16 dregs.R |
1738 update_flags NZV0C0 | 1738 update_flags NZV0C0 |
1739 m68k_prefetch | 1739 m68k_prefetch |
1740 | |
1741 m68k_calc_ea | |
1742 arg mode 16 | |
1743 arg reg 16 | |
1744 | |
1745 switch mode | |
1746 case 2 | |
1747 #address reg indirect | |
1748 meta ea aregs.reg | |
1749 case 5 | |
1750 #displacement | |
1751 m68k_prefetch | |
1752 sext 32 prefetch scratch1 | |
1753 scratch1 += aregs.reg | |
1754 meta ea scratch1 | |
1755 case 6 | |
1756 #index | |
1757 m68k_index_word | |
1758 cycles 4 | |
1759 scratch1 += aregs.reg | |
1760 meta ea scratch1 | |
1761 case 7 | |
1762 switch reg | |
1763 case 0 | |
1764 #absolute short | |
1765 m68k_prefetch | |
1766 sext 32 prefetch scratch1 | |
1767 case 1 | |
1768 #absoltue long | |
1769 m68k_prefetch | |
1770 scratch2 = prefetch << 16 | |
1771 m68k_prefetch | |
1772 scratch1 = scratch2 | prefetch | |
1773 case 2 | |
1774 #pc displacement | |
1775 m68k_prefetch | |
1776 sext 32 prefetch scratch1 | |
1777 scratch1 += pc | |
1778 scratch1 -= 2 | |
1779 case 3 | |
1780 #pc indexed | |
1781 m68k_index_word | |
1782 cycles 4 | |
1783 scratch1 += pc | |
1784 scratch1 -= 2 | |
1785 end | |
1786 meta ea scratch1 | |
1787 end | |
1788 | |
1789 0100100001MMMRRR pea | |
1790 invalid M 0 | |
1791 invalid M 1 | |
1792 invalid M 3 | |
1793 invalid M 4 | |
1794 invalid M 7 R 4 | |
1795 invalid M 7 R 5 | |
1796 invalid M 7 R 6 | |
1797 invalid M 7 R 7 | |
1798 | |
1799 m68k_calc_ea M R | |
1800 scratch2 = a7 - 4 | |
1801 m68k_write32_lowfirst ea | |
1802 a7 -= 4 | |
1803 | |
1804 m68k_prefetch | |
1805 | |
1806 0100DDD111MMMRRR lea | |
1807 invalid M 0 | |
1808 invalid M 1 | |
1809 invalid M 3 | |
1810 invalid M 4 | |
1811 invalid M 7 R 4 | |
1812 invalid M 7 R 5 | |
1813 invalid M 7 R 6 | |
1814 invalid M 7 R 7 | |
1815 | |
1816 m68k_calc_ea M R | |
1817 aregs.D = ea | |
1818 | |
1819 m68k_prefetch | |
1820 | |
1740 | 1821 |
1741 0100111001110000 reset | 1822 0100111001110000 reset |
1742 if reset_handler | 1823 if reset_handler |
1743 pcall reset_handler m68k_reset_handler context | 1824 pcall reset_handler m68k_reset_handler context |
1744 end | 1825 end |