Line 19... |
Line 19... |
-- along with this program. If not, see <http://www.gnu.org/licenses/>. --
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>. --
|
-- --
|
-- --
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
|
|
|
-- 03.11.2019 TG rework barrel shifter - some other tweaks
|
|
-- 02.11.2019 TG bugfig N-Flag and Z-Flag for DIV
|
-- 30.10.2019 TG bugfix RTR in 68020-mode
|
-- 30.10.2019 TG bugfix RTR in 68020-mode
|
-- 30.10.2019 TG bugfix BFINS again
|
-- 30.10.2019 TG bugfix BFINS again
|
-- 19.10.2019 TG insert some bugfixes from apolkosnik
|
-- 19.10.2019 TG insert some bugfixes from apolkosnik
|
-- 05.12.2018 TG insert RTD opcode
|
-- 05.12.2018 TG insert RTD opcode
|
-- 03.12.2018 TG insert barrel shifter
|
-- 03.12.2018 TG insert barrel shifter
|
Line 1255... |
Line 1257... |
SRin <= OP2out(15 downto 8);
|
SRin <= OP2out(15 downto 8);
|
END IF;
|
END IF;
|
|
|
IF rising_edge(clk) THEN
|
IF rising_edge(clk) THEN
|
IF Reset='1' THEN
|
IF Reset='1' THEN
|
FlagsSR(5) <= '1';
|
|
FC(2) <= '1';
|
FC(2) <= '1';
|
SVmode <= '1';
|
SVmode <= '1';
|
preSVmode <= '1';
|
preSVmode <= '1';
|
FlagsSR(3 downto 0) <= "0111";
|
FlagsSR <= "00100111";
|
make_trace <= '0';
|
make_trace <= '0';
|
ELSIF clkena_lw = '1' THEN
|
ELSIF clkena_lw = '1' THEN
|
IF setopcode='1' THEN
|
IF setopcode='1' THEN
|
make_trace <= FlagsSR(7);
|
make_trace <= FlagsSR(7);
|
IF set(changeMode)='1' THEN
|
IF set(changeMode)='1' THEN
|
Line 1296... |
Line 1297... |
FC(2) <= FlagsSR(5);
|
FC(2) <= FlagsSR(5);
|
END IF;
|
END IF;
|
IF interrupt='1' THEN
|
IF interrupt='1' THEN
|
FC(2) <= '1';
|
FC(2) <= '1';
|
END IF;
|
END IF;
|
|
IF cpu(1)='0' THEN
|
|
FlagsSR(6) <= '0';
|
|
END IF;
|
FlagsSR(3) <= '0';
|
FlagsSR(3) <= '0';
|
END IF;
|
END IF;
|
END IF;
|
END IF;
|
END PROCESS;
|
END PROCESS;
|
|
|
Line 1973... |
Line 1977... |
datatype <= "10";
|
datatype <= "10";
|
IF opcode(5 downto 3)="000" THEN --swap
|
IF opcode(5 downto 3)="000" THEN --swap
|
set_exec(opcSWAP) <= '1';
|
set_exec(opcSWAP) <= '1';
|
set_exec(Regwrena) <= '1';
|
set_exec(Regwrena) <= '1';
|
ELSIF opcode(5 downto 3)="001" THEN --bkpt
|
ELSIF opcode(5 downto 3)="001" THEN --bkpt
|
|
trap_illegal <= '1';
|
|
trapmake <= '1';
|
ELSE --pea
|
ELSE --pea
|
ea_only <= '1';
|
ea_only <= '1';
|
ea_build_now <= '1';
|
ea_build_now <= '1';
|
IF nextpass='1' AND micro_state=idle THEN
|
IF nextpass='1' AND micro_state=idle THEN
|
set(presub) <= '1';
|
set(presub) <= '1';
|