+ when S_INIT => null;
+
+ when S_PS1_0 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"0000ff" & x"28"; -- '('
+ when S_PS1_1 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"00ff00" & zeile2char(d_zeile_int,1); -- 'x'
+ when S_PS1_2 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"00ff00" & zeile2char(d_zeile_int,2); -- 'y'
+ when S_PS1_3 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"0000ff" & x"29"; -- ')'
+ when S_PS1_4 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"00ffff" & x"24"; -- '$'
+ when S_PS1_5 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"ffffff" & x"20"; -- ' '
+
+ when SIDLE => null;
+ when S_NEW_RESULT => null;
+ when S_NEW_INPUT => null;
+
+ when S_NEW_BS =>
+ -- underflow check schon im history modul
+ d_spalte_next <= std_logic_vector(unsigned(d_spalte_int) - 1);
+ when S_BACK =>
+ -- einen schritt zurueck, +6 wegen $PS1
+ command_next <= COMMAND_SET_CURSOR_COLUMN;
+ command_data_next <= x"ffffff" & '0' & std_logic_vector(unsigned(d_spalte_int) + 6);
+ when S_BLANK =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"ffffff" & x"20"; -- white space
+
+ when S_ZEILEUP =>
+ d_spalte_next <= (others => '0');
+ case d_zeile_int is
+ when
+ std_logic_vector(to_unsigned(HZEILE_MAX-1,d_zeile_int'length)) => d_zeile_next <= (others => '0');
+ when others => d_zeile_next <= std_logic_vector(unsigned(d_zeile_int) + 1);
+ end case;
+
+ when S_CR1 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"ffffff" & x"0d"; -- carrige return
+ when S_NL1 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"ffffff" & x"0a"; -- newline
+
+ when S_READ_RESULT_0 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"ff0000" & x"3e"; -- '>'
+ when S_READ_RESULT_1 =>
+ command_next <= COMMAND_SET_CHAR;
+ command_data_next <= x"ffffff" & x"20"; -- ' '
+ when S_READ_RESULT_2 => null;
+
+ when S_COUNTUP =>
+ d_get_next <= '1';
+ d_spalte_next <= std_logic_vector(unsigned(d_spalte_int) + 1);
+ when S_GETCH =>
+ d_get_next <= '1';
+ when S_PUTCH1 =>
+ command_next <= COMMAND_SET_CHAR;
+ if d_char = x"00" then
+ command_data_next <= x"ffffff" & x"20";
+ else
+ command_data_next <= x"ffffff" & std_logic_vector(d_char);
+ end if;
+ when S_PUTCH2 => null;
+ when S_WAIT | S_NOP1 =>
+ command_next <= COMMAND_NOP;
+ command_data_next <= x"00000000";