diff options
| -rw-r--r-- | c/sh.c | 6 | ||||
| -rw-r--r-- | src/osk.asm | 15 |
2 files changed, 19 insertions, 2 deletions
@@ -104,13 +104,17 @@ void main(void) { unsigned char nt, i, pipepos, c, bg; /* reap finished background jobs */ { unsigned char p; while ((p = reap())) { putc('['); putu(p); puts(" done]"); nl(); } } - puts(cwd); puts("$ "); + puts(cwd); puts("# "); /* read a line (echoing), stop at newline; exit on EOF */ i = 0; for (;;) { c = readc(); if (c == EOF) poweroff(); if (c == '\r' || c == '\n') { nl(); break; } + if (c == 8 || c == 127) { /* backspace: drop last char */ + if (i > 0) { i--; putc(8); } + continue; + } if (i < 79) { line[i++] = c; putc(c); } } line[i] = 0; diff --git a/src/osk.asm b/src/osk.asm index 490a402..02700c6 100644 --- a/src/osk.asm +++ b/src/osk.asm @@ -337,9 +337,22 @@ osk_handle:: bit 4, a call nz, osk_right ld a, [wPadNew] - bit 0, a ; A: type the selected key + bit 0, a ; A: type the key as shown + jr z, .chkb + call osk_selected + scf + ret +.chkb + ld a, [wPadNew] + bit 1, a ; B: type the key SHIFTED (uppercase a-z) jr z, .none call osk_selected + cp "a" + jr c, .shifted + cp "z"+1 + jr nc, .shifted + sub 32 ; 'a'..'z' -> 'A'..'Z' +.shifted scf ret .none |
