end process;
-- next state
- process(state_int, d_new_result, d_new_eingabe, d_done, free, d_spalte_int)
+ process(state_int, d_new_result, d_new_eingabe, d_done, free, d_spalte_int,
+ d_char)
begin
state_next <= state_int;
state_next <= S_PUTCH;
end if;
when S_PUTCH =>
- if free = '0' then
+ if free = '0' or (free = '1' and d_char = x"00") then
state_next <= S_WAIT;
end if;
when S_WAIT =>
when S_GETCH =>
d_get_next <= '1';
when S_PUTCH =>
- command_next <= COMMAND_SET_CHAR;
- command_data_next <= x"ffffff" & std_logic_vector(d_char);
+ if d_char /= x"00" then
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"ffffff" & std_logic_vector(d_char);
+ end if;
when S_WAIT | S_NOP1 =>
command_next <= COMMAND_NOP;
command_data_next <= x"00000000";