summaryrefslogtreecommitdiff
path: root/console.c
diff options
context:
space:
mode:
Diffstat (limited to 'console.c')
-rw-r--r--console.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/console.c b/console.c
index 0613a47..16d0e7a 100644
--- a/console.c
+++ b/console.c
@@ -163,7 +163,12 @@ consputc(int c)
;
}
- uartputc(c);
+ if (c == BACKSPACE) {
+ uartputc('\b');
+ uartputc(' ');
+ uartputc('\b');
+ } else
+ uartputc(c);
cgaputc(c);
}
@@ -198,6 +203,7 @@ consoleintr(int (*getc)(void))
}
break;
case C('H'): // Backspace
+ case '\x7f':
if(input.e != input.w){
input.e--;
consputc(BACKSPACE);
@@ -205,6 +211,9 @@ consoleintr(int (*getc)(void))
break;
default:
if(c != 0 && input.e-input.r < INPUT_BUF){
+ // The serial port produces 0x13, not 0x10
+ if(c == '\r')
+ c = '\n';
input.buf[input.e++ % INPUT_BUF] = c;
consputc(c);
if(c == '\n' || c == C('D') || input.e == input.r+INPUT_BUF){