
Сообщение от
Hunta
Можно поподробней?
Потому как сильные сомнения. Я на PDP-2011 запустил и RT-11 и RSX-11, причём с генерацией систем - вряд это это дело было возможным, если бы такое количество и таких серьёзных ошибок было.
- - - Добавлено - - -
Вот кусок кода
Код:
alu_output_signext <= alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7) & alu_output(7 downto 0);
...
if ir(15 downto 12) = "1001" then -- movb? movb needs to sign extend if the result is moved to a register
rbus_d <= alu_output_signext;
elsif have_mtps = 1 and ir_mfps = '1' then -- mfps needs sign extend if the result is moved to a register
rbus_d <= alu_output_signext;
- - - Добавлено - - -
Причём этот кусок кода есть во всех четырёх версиях кода, которые у меня есть, начиная с самого раннего - от 13.09.2014 года.
Согласен, накосячил при исправлении байтовых команд.
Сделал по другому. Во всех выражениях state_mtpa, state_dstХ и state_srcХ изменил следующим образом:
Код:
when state_dst1 =>
dest_addr <= addr;
--- Ynicky --- alu_input <= datain;
if ir_byte = '1' then
if addr(0) = '1' then
alu_input <= datain(15 downto 8) & datain(15 downto 8);
else
alu_input <= datain;
end if;
else alu_input <= datain;
end if;
-----------------------------------------------------
state <= pdststate;
when state_src1 =>
--- Ynicky --- alus_input <= datain;
if ir_byte = '1' then
if addr(0) = '1' then
alus_input <= datain(15) & datain(15) & datain(15) & datain(15) & datain(15) & datain(15) & datain(15) & datain(15) & datain(15 downto 8);
else alus_input <= datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7) & datain(7 downto 0);
end if;
else alus_input <= datain;
end if;
-----------------------------------------------------
state <= psrcstate;
rbus_ix <= ir(2 downto 0);