Added backspace support

This commit is contained in:
Dreaded_X 2020-04-22 01:21:58 +02:00
parent 87d4c09c95
commit 5e1e3bbbcc

View File

@ -201,8 +201,9 @@ avr_interface #(.CLK_FREQ(75000000)) vr_interface (
.new_rx_data(new_rx_data)
);
reg [13:0] addr_q, addr_d, addr_t, addr_n, addr_r;
reg [13:0] addr_q, addr_d, addr_t, addr_n, addr_r, addr_b;
reg[7:0] write_data_q, write_data_d;
reg[7:0] last_input_q, last_input_d;
reg[16:0] bottom_q, bottom_d, bottom_t;
reg[16:0] scroll_q, scroll_d, scroll_t;
reg write_enable, write_enable_c_q, write_enable_c_d;
@ -271,12 +272,17 @@ always @(posedge z80_clk) begin
// @todo Hook up address lines
// if (z80_ioreq != 1 && z80_m1 != 0 && z80_address[7:0] == 8'h10) begin
if (z80_ioreq != 1 && z80_m1 != 0 && z80_wr != 1) begin
last_input_d = z80_data;
if (z80_data == "\r") begin
addr_d = addr_r;
write_enable_c_d = 0;
end else if (z80_data == "\n") begin
addr_d = addr_n;
write_enable_c_d = 0;
end else if (z80_data == 8) begin
write_data_d = 0;
addr_d = addr_b;
write_enable_c_d = 1;
end else begin
write_data_d = z80_data - 32;
addr_d = addr_t;
@ -292,6 +298,7 @@ always @(negedge z80_ioreq) begin
addr_t = (addr_q + 1);
addr_n = (addr_q + CHAR_HMAX);
addr_r = (addr_q - (addr_q % CHAR_HMAX)) % (CHAR_HMAX*CHAR_VMAX);
addr_b = addr_q;
bottom_t = bottom_q;
scroll_t = scroll_q;
@ -304,9 +311,16 @@ always @(negedge z80_ioreq) begin
scroll_t = scroll_t % CHAR_VMAX;
if (last_input_q == 8) begin
addr_t = addr_t - 1;
addr_n = addr_n - 1;
addr_b = addr_b - 1;
end
addr_t = addr_t % (CHAR_HMAX*CHAR_VMAX);
addr_n = addr_n % (CHAR_HMAX*CHAR_VMAX);
addr_r = addr_r % (CHAR_HMAX*CHAR_VMAX);
addr_b = addr_b % (CHAR_HMAX*CHAR_VMAX);
end
always @(posedge hdmi_clk) begin
@ -317,6 +331,7 @@ always @(posedge hdmi_clk) begin
bottom_q <= 0;
scroll_q <= 1'b0;
write_data_q <= 0;
last_input_q <= 0;
write_enable_c_q <= 0;
end else begin
frame_q <= frame_d;
@ -325,6 +340,7 @@ always @(posedge hdmi_clk) begin
bottom_q <= bottom_d;
scroll_q <= scroll_d;
write_data_q <= write_data_d;
last_input_q <= last_input_d;
write_enable_c_q <= write_enable_c_d;
end
end