diff --git a/Artix-7-HDMI-processing.xpr b/Artix-7-HDMI-processing.xpr
index d1d45b2..316c7a1 100644
--- a/Artix-7-HDMI-processing.xpr
+++ b/Artix-7-HDMI-processing.xpr
@@ -42,7 +42,7 @@
-
+
diff --git a/src/term_emu.v b/src/term_emu.v
index d335a42..1305f25 100644
--- a/src/term_emu.v
+++ b/src/term_emu.v
@@ -44,9 +44,11 @@ reg cursor_movement_x_neg;
reg cursor_movement_y_pos;
reg cursor_movement_y_neg;
reg esc_inval;
+reg num_start;
always @(posedge clk) begin
in_byte_ack <= 0;
+ glyph_buffer_w_valid <= 0;
if (rst) begin
parser_state <= ST_PARSE_TEXT;
@@ -55,6 +57,7 @@ always @(posedge clk) begin
parser_action <= 0;
glyph_x <= 0;
glyph_y <= 0;
+ num_start <= 0;
end else if (!parser_valid && in_byte_valid) begin
in_byte_ack <= 1;
@@ -82,8 +85,8 @@ always @(posedge clk) begin
(ST_PARSE_ESC): begin
if (in_byte == 8'h5b) begin /* [ */
parser_state <= ST_PARSE_CSI;
- num_buf[NUM_BUF_SZ*12-1:12] <= {{0}};
- num_buf[11:0] <= 12'hfff;
+ num_buf <= {{0}};
+ num_start <= 1;
end else begin
parser_state <= ST_PARSE_INVAL;
@@ -92,12 +95,18 @@ always @(posedge clk) begin
(ST_PARSE_CSI), (ST_PARSE_SEP): begin
if (in_byte >= 8'h30 && in_byte <= 8'h39) begin /* 0-9 */
- num_buf <= {num_buf[NUM_BUF_SZ*12-1:12], num_buf[7:0], ~in_byte[3:0]};
+ if (num_start) begin
+ num_start <= 0;
+ num_buf <= {num_buf[NUM_BUF_SZ*12-1:12], 8'hff, ~in_byte[3:0]};
+ end else begin
+ num_buf <= {num_buf[NUM_BUF_SZ*12-1:12], num_buf[7:0], ~in_byte[3:0]};
+ end
parser_state = ST_PARSE_CSI;
end else if (in_byte == 8'h3b) begin /* ; */
num_buf <= {num_buf[NUM_BUF_SZ*12-1-12:0], 12'hfff};
parser_state <= ST_PARSE_SEP;
+ num_start <= 1;
end else if (in_byte >= 8'h40 && in_byte <= 8'h7e) begin
parser_action <= in_byte;
@@ -128,6 +137,7 @@ end
function [11:0] bcd12_inc;
input [11:0] in;
begin
+ bcd12_inc = in;
if (in[3:0] != 4'h9) begin
bcd12_inc[3:0] = in[3:0]+1;
end else begin
@@ -165,7 +175,7 @@ always @(posedge clk) begin
if (cursor_movement_x_pos || cursor_movement_x_neg || cursor_movement_y_pos || cursor_movement_y_neg) begin
csi_act_ctr <= bcd12_inc(csi_act_ctr);
- if (!csi_act_ctr == ~num_buf_last) begin
+ if (csi_act_ctr != ~num_buf_last) begin
if (cursor_movement_x_pos) begin
if (glyph_x != GLYPHMEM_W-1) glyph_x <= glyph_x + 1;
end else if (cursor_movement_x_neg) begin
@@ -188,44 +198,48 @@ always @(posedge clk) begin
end else if (parser_action == 8'h41 && !esc_inval) begin /* A; Cursor up */
cursor_movement_y_neg <= 1;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] <= num_buf[11:0];
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] <= num_buf[11:0];
end else if (parser_action == 8'h42 && !esc_inval) begin /* B; Cursor down */
cursor_movement_y_pos <= 1;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] <= num_buf[11:0];
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] <= num_buf[11:0];
end else if (parser_action == 8'h43 && !esc_inval) begin /* C; Cursor forward */
cursor_movement_x_pos <= 1;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] <= num_buf[11:0];
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] <= num_buf[11:0];
end else if (parser_action == 8'h44 && !esc_inval) begin /* D; Cursor back */
cursor_movement_x_neg <= 1;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] <= num_buf[11:0];
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] <= num_buf[11:0];
end else if (parser_action == 8'h45 && !esc_inval) begin /* E; Cursor next line */
glyph_x <= 0;
cursor_movement_y_pos <= 1;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] <= num_buf[11:0];
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] <= num_buf[11:0];
end else if (parser_action == 8'h46 && !esc_inval) begin /* F: Cursor previous line */
glyph_x <= 0;
cursor_movement_y_neg <= 1;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] <= num_buf[11:0];
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] <= num_buf[11:0];
end else if (parser_action == 8'h47 && !esc_inval) begin /* G: Cursor horizontal absolute */
glyph_x <= 0;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] <= num_buf[11:0];
- if (num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] != 0) begin
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] <= num_buf[11:0];
+ if (num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] != 0) begin
cursor_movement_x_pos <= 1;
+ end else begin
+ parser_valid <= 0;
end
end else if (parser_action == 8'h48 && !esc_inval) begin /* H: Cursor x/y absolute */
glyph_x <= 0;
glyph_y <= 0;
- num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-24] <= num_buf[23:0];
- if (num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-1-12] != 0) begin
+ num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-24] <= num_buf[23:0];
+ if (num_buf[NUM_BUF_SZ*12-1:NUM_BUF_SZ*12-12] != 0) begin
cursor_movement_x_pos <= 1;
cursor_movement_y_pos <= 1;
+ end else begin
+ parser_valid <= 0;
end
end else if (parser_action == 8'h6d && !esc_inval) begin /* m; CSI SGR */
diff --git a/term_emu_tb_behav.wcfg b/term_emu_tb_behav.wcfg
index bd0c5b2..a479146 100644
--- a/term_emu_tb_behav.wcfg
+++ b/term_emu_tb_behav.wcfg
@@ -11,9 +11,9 @@
-
-
-
+
+
+
@@ -23,6 +23,7 @@
testcase_id[31:0]
testcase_id[31:0]
+ UNSIGNEDDECRADIX
clk
diff --git a/test_bench/term_emu_tb_gen.ipynb b/test_bench/term_emu_tb_gen.ipynb
index 0e62703..1178c75 100644
--- a/test_bench/term_emu_tb_gen.ipynb
+++ b/test_bench/term_emu_tb_gen.ipynb
@@ -2,8 +2,8 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 280,
- "id": "super-tunisia",
+ "execution_count": 356,
+ "id": "corrected-briefs",
"metadata": {},
"outputs": [],
"source": [
@@ -25,8 +25,8 @@
},
{
"cell_type": "code",
- "execution_count": 281,
- "id": "scenic-jungle",
+ "execution_count": 357,
+ "id": "relative-curve",
"metadata": {},
"outputs": [],
"source": [
@@ -35,8 +35,8 @@
},
{
"cell_type": "code",
- "execution_count": 282,
- "id": "secondary-thunder",
+ "execution_count": 358,
+ "id": "abroad-wound",
"metadata": {},
"outputs": [],
"source": [
@@ -58,13 +58,21 @@
" 'fg_newline': 'Foobar\\033[35mbaz\\nthis \\033[1mis\\033[22m a test', # magenta fg\n",
" 'color_palette': ''.join(f'\\033[{c}m//' for c in range(30, 38)) + ' ' + ''.join(f'\\033[{c}m//' for c in range(90, 98)) + '\\n'\n",
" +''.join(f'\\033[{c}m//' for c in range(40, 48)) + '\\033[0m ' + ''.join(f'\\033[{c}m//' for c in range(100, 108)) + '\\n',\n",
+ " 'cur_u': 'Foobar\\nbaz>\\033[91m\\033[Atest',\n",
+ " 'cur_d': 'Foobar\\nbaz>\\033[91m\\033[Btest',\n",
+ " 'cur_l': 'Foobar\\nbaz>\\033[91m\\033[Dtest',\n",
+ " 'cur_r': 'Foobar\\nbaz>\\033[91m\\033[Ctest',\n",
+ " 'cur_n': 'Foobar\\nbaz>\\033[91m\\033[Etest',\n",
+ " 'cur_p': 'Foobar\\nbaz>\\033[91m\\033[Ftest',\n",
+ " 'cur_hh': 'Foobar\\nbaz>\\033[91m\\033[Gtest',\n",
+ " 'cur_h': 'Foobar\\nbaz>\\033[91m\\033[Htest',\n",
"}"
]
},
{
"cell_type": "code",
- "execution_count": 283,
- "id": "imported-complaint",
+ "execution_count": 359,
+ "id": "ambient-assault",
"metadata": {},
"outputs": [
{
@@ -73,7 +81,7 @@
"'0xf6f'"
]
},
- "execution_count": 283,
+ "execution_count": 359,
"metadata": {},
"output_type": "execute_result"
}
@@ -84,8 +92,8 @@
},
{
"cell_type": "code",
- "execution_count": 284,
- "id": "imported-currency",
+ "execution_count": 360,
+ "id": "competent-monster",
"metadata": {},
"outputs": [],
"source": [
@@ -106,8 +114,8 @@
},
{
"cell_type": "code",
- "execution_count": 285,
- "id": "governmental-legislation",
+ "execution_count": 361,
+ "id": "regional-handle",
"metadata": {},
"outputs": [],
"source": [
@@ -121,8 +129,8 @@
},
{
"cell_type": "code",
- "execution_count": 286,
- "id": "resident-broadcasting",
+ "execution_count": 362,
+ "id": "understanding-things",
"metadata": {},
"outputs": [
{
@@ -142,7 +150,15 @@
"Testcase 10: complex\n",
"Testcase 11: reset\n",
"Testcase 12: fg_newline\n",
- "Testcase 13: color_palette\n"
+ "Testcase 13: color_palette\n",
+ "Testcase 14: cur_u\n",
+ "Testcase 15: cur_d\n",
+ "Testcase 16: cur_l\n",
+ "Testcase 17: cur_r\n",
+ "Testcase 18: cur_n\n",
+ "Testcase 19: cur_p\n",
+ "Testcase 20: cur_hh\n",
+ "Testcase 21: cur_h\n"
]
}
],
@@ -185,8 +201,8 @@
},
{
"cell_type": "code",
- "execution_count": 287,
- "id": "interested-postage",
+ "execution_count": 363,
+ "id": "southeast-proportion",
"metadata": {},
"outputs": [],
"source": [
@@ -225,8 +241,8 @@
},
{
"cell_type": "code",
- "execution_count": 288,
- "id": "electronic-china",
+ "execution_count": 364,
+ "id": "confidential-exhibition",
"metadata": {},
"outputs": [
{
@@ -234,7 +250,7 @@
"output_type": "stream",
"text": [
"\u001b[22;24;40;30m/\u001b[22;24;40;30m/\u001b[22;24;40;31m/\u001b[22;24;40;31m/\u001b[22;24;40;32m/\u001b[22;24;40;32m/\u001b[22;24;40;33m/\u001b[22;24;40;33m/\u001b[22;24;40;34m/\u001b[22;24;40;34m/\u001b[22;24;40;35m/\u001b[22;24;40;35m/\u001b[22;24;40;36m/\u001b[22;24;40;36m/\u001b[22;24;40;37m/\u001b[22;24;40;37m/\u001b[22;24;40;37m \u001b[22;24;40;37m \u001b[22;24;40;90m/\u001b[22;24;40;90m/\u001b[22;24;40;91m/\u001b[22;24;40;91m/\u001b[22;24;40;92m/\u001b[22;24;40;92m/\u001b[22;24;40;93m/\u001b[22;24;40;93m/\u001b[22;24;40;94m/\u001b[22;24;40;94m/\u001b[22;24;40;95m/\u001b[22;24;40;95m/\u001b[22;24;40;96m/\u001b[22;24;40;96m/\u001b[22;24;40;97m/\u001b[22;24;40;97m/\u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \n",
- "\u001b[22;24;40;97m/\u001b[22;24;40;97m/\u001b[22;24;41;97m/\u001b[22;24;41;97m/\u001b[22;24;42;97m/\u001b[22;24;42;97m/\u001b[22;24;43;97m/\u001b[22;24;43;97m/\u001b[22;24;44;97m/\u001b[22;24;44;97m/\u001b[22;24;45;97m/\u001b[22;24;45;97m/\u001b[22;24;46;97m/\u001b[22;24;46;97m/\u001b[22;24;47;97m/\u001b[22;24;47;97m/\u001b[22;24;47;97m \u001b[22;24;47;97m \u001b[22;24;100;97m/\u001b[22;24;100;97m/\u001b[22;24;101;97m/\u001b[22;24;101;97m/\u001b[22;24;102;97m/\u001b[22;24;102;97m/\u001b[22;24;103;97m/\u001b[22;24;103;97m/\u001b[22;24;104;97m/\u001b[22;24;104;97m/\u001b[22;24;105;97m/\u001b[22;24;105;97m/\u001b[22;24;106;97m/\u001b[22;24;106;97m/\u001b[22;24;107;97m/\u001b[22;24;107;97m/\u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \n",
+ "\u001b[22;24;40;97m/\u001b[22;24;40;97m/\u001b[22;24;41;97m/\u001b[22;24;41;97m/\u001b[22;24;42;97m/\u001b[22;24;42;97m/\u001b[22;24;43;97m/\u001b[22;24;43;97m/\u001b[22;24;44;97m/\u001b[22;24;44;97m/\u001b[22;24;45;97m/\u001b[22;24;45;97m/\u001b[22;24;46;97m/\u001b[22;24;46;97m/\u001b[22;24;47;97m/\u001b[22;24;47;97m/\u001b[22;24;40;37m \u001b[22;24;40;37m \u001b[22;24;100;37m/\u001b[22;24;100;37m/\u001b[22;24;101;37m/\u001b[22;24;101;37m/\u001b[22;24;102;37m/\u001b[22;24;102;37m/\u001b[22;24;103;37m/\u001b[22;24;103;37m/\u001b[22;24;104;37m/\u001b[22;24;104;37m/\u001b[22;24;105;37m/\u001b[22;24;105;37m/\u001b[22;24;106;37m/\u001b[22;24;106;37m/\u001b[22;24;107;37m/\u001b[22;24;107;37m/\u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \n",
"\u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \n",
"\u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \n",
"\u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \u001b[22;24;40;30m \n"
@@ -247,8 +263,8 @@
},
{
"cell_type": "code",
- "execution_count": 289,
- "id": "blessed-slide",
+ "execution_count": 365,
+ "id": "compressed-operator",
"metadata": {},
"outputs": [],
"source": [
@@ -257,8 +273,8 @@
},
{
"cell_type": "code",
- "execution_count": 290,
- "id": "genetic-participation",
+ "execution_count": 366,
+ "id": "becoming-growth",
"metadata": {},
"outputs": [
{
@@ -279,8 +295,8 @@
},
{
"cell_type": "code",
- "execution_count": 291,
- "id": "limiting-benefit",
+ "execution_count": 367,
+ "id": "sticky-novel",
"metadata": {},
"outputs": [],
"source": [
@@ -289,8 +305,8 @@
},
{
"cell_type": "code",
- "execution_count": 292,
- "id": "asian-internet",
+ "execution_count": 368,
+ "id": "endless-lecture",
"metadata": {},
"outputs": [
{
@@ -311,8 +327,8 @@
},
{
"cell_type": "code",
- "execution_count": 293,
- "id": "tough-pillow",
+ "execution_count": 369,
+ "id": "latter-blowing",
"metadata": {},
"outputs": [
{
@@ -333,8 +349,8 @@
},
{
"cell_type": "code",
- "execution_count": 294,
- "id": "appropriate-collect",
+ "execution_count": 370,
+ "id": "criminal-documentation",
"metadata": {},
"outputs": [
{
@@ -355,8 +371,8 @@
},
{
"cell_type": "code",
- "execution_count": 295,
- "id": "norwegian-warren",
+ "execution_count": 371,
+ "id": "colored-assumption",
"metadata": {},
"outputs": [
{
@@ -377,8 +393,8 @@
},
{
"cell_type": "code",
- "execution_count": 296,
- "id": "civic-elder",
+ "execution_count": 372,
+ "id": "quiet-mailing",
"metadata": {},
"outputs": [
{
@@ -399,8 +415,8 @@
},
{
"cell_type": "code",
- "execution_count": 297,
- "id": "gentle-mount",
+ "execution_count": 373,
+ "id": "proved-madagascar",
"metadata": {},
"outputs": [
{
@@ -421,8 +437,8 @@
},
{
"cell_type": "code",
- "execution_count": 298,
- "id": "complete-fellow",
+ "execution_count": 374,
+ "id": "original-zimbabwe",
"metadata": {},
"outputs": [
{
diff --git a/test_bench/term_emu_tb_show.py b/test_bench/term_emu_tb_show.py
index e68420f..8b5a869 100644
--- a/test_bench/term_emu_tb_show.py
+++ b/test_bench/term_emu_tb_show.py
@@ -46,7 +46,16 @@ if __name__ == '__main__':
'complex',
'reset',
'fg_newline',
- 'color_palette']:
+ 'color_palette',
+ 'cur_u',
+ 'cur_d',
+ 'cur_l',
+ 'cur_r',
+ 'cur_n',
+ 'cur_p',
+ 'cur_hh',
+ 'cur_h',
+ ]:
print()
print(f'\033[0m=== Testcase {tc} ===')
show_tc(tc)