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