diff options
| author | user <user@clank> | 2026-07-16 16:17:02 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-07-16 16:17:02 +0200 |
| commit | 30f3a65e2de99cdffd091289b4edb8e14be9032d (patch) | |
| tree | dce23b1cb2cbef5a24e279c7ada29d44c23c7403 /src/osk.asm | |
| parent | osk: wrap the cursor around all four edges (diff) | |
| download | gbos-30f3a65e2de99cdffd091289b4edb8e14be9032d.tar.gz gbos-30f3a65e2de99cdffd091289b4edb8e14be9032d.tar.xz gbos-30f3a65e2de99cdffd091289b4edb8e14be9032d.zip | |
sh: handle backspace in readline; prompt is now '#'
readc() returning $08/$7F now drops the last char from the command buffer
(and emits one $08 so the terminal erases it) instead of storing the raw
byte. Previously "lz<bksp>s" left the buffer as "lz\x08s", so the command
"ls" was reported "not found" even though the screen showed "ls".
Also change the shell prompt from '$' to '#'.
osk: B button types the selected key SHIFTED (uppercase a-z). A types the
key as shown (lowercase/digit/symbol); B on a letter subtracts 32 for the
uppercase glyph (the font already has A-Z). Non-letters are unchanged.
Diffstat (limited to 'src/osk.asm')
| -rw-r--r-- | src/osk.asm | 15 |
1 files changed, 14 insertions, 1 deletions
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 |
