From 2e9e43cd8e9b3d209204251bb5c38edc6878b64c Mon Sep 17 00:00:00 2001 From: xiaoxiao <1010386862@qq.com> Date: Fri, 20 Jan 2023 23:22:04 +0800 Subject: [PATCH] modify CSI_ESC --- kernel/csi.c | 23 ++++++++++++----------- kernel/vga.c | 3 +-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/kernel/csi.c b/kernel/csi.c index 955cbfe..1a7d85d 100644 --- a/kernel/csi.c +++ b/kernel/csi.c @@ -9,16 +9,6 @@ #define LASTLINE(row) LAST(row, SCR_MAXLINE) #define ADDLINE(row, add_num) (((row) + add_num) % SCR_MAXLINE) -void enable_blink() -{ - disable_int(); - inb(0x3DA); - outb(0x3C0, 0x30); - u8 temp = inb(0x3C1); - outb(0x3C0, temp | 0x08); - enable_int(); -} - void disable_blink() { disable_int(); @@ -29,6 +19,16 @@ void disable_blink() enable_int(); } +void enable_blink() +{ + disable_int(); + inb(0x3DA); + outb(0x3C0, 0x30); + u8 temp = inb(0x3C1); + outb(0x3C0, temp | 0x08); + enable_int(); +} + void set_underline(u32 addr) { disable_int(); @@ -327,7 +327,7 @@ void CSI_Erase_handler(vga_buf *vgabuf, int n) void CSI_handler(u8 terminator, vga_buf *vgabuf) { - vgabuf->CSI = CSI_ESC; + i16 param[MAXNUM_PARAM] = {0}; i16 param_cnt = 0; for (int i = 0; i < vgabuf->param_num && param_cnt < MAXNUM_PARAM; i++) @@ -343,6 +343,7 @@ void CSI_handler(u8 terminator, vga_buf *vgabuf) continue; } } + switch (terminator) { case 'A': // Cursor Up diff --git a/kernel/vga.c b/kernel/vga.c index a850280..545341f 100644 --- a/kernel/vga.c +++ b/kernel/vga.c @@ -265,8 +265,7 @@ void vga_tty_write(NTTY *tty, char ch) } break; default: - if (!(0x20 <= ch && ch <= 0x7e)) - vga->CSI = CSI_ESC; + vga->CSI = CSI_ESC; if (0x40 <= ch && ch <= 0x7e) CSI_handler(ch, vga); break;