From 6d9f96aee6b263fe42ce09d6c962279b72e4719c Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 9 Nov 2019 14:37:52 -0500 Subject: [PATCH] ti/lcd: add support for backspace Also, fix visual glitch on line wrap. --- kernel/ti/lcd.asm | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/kernel/ti/lcd.asm b/kernel/ti/lcd.asm index c2a33eb..f3069cf 100644 --- a/kernel/ti/lcd.asm +++ b/kernel/ti/lcd.asm @@ -153,13 +153,6 @@ lcdSendGlyph: ld a, (LCD_CURCOL) call lcdSetCol - ; let's increase (and wrap) col now - inc a - ld (LCD_CURCOL), a - cp 16 - jr nz, .skip - call lcdLinefeed -.skip: ld b, FNT_HEIGHT .loop: ld a, (hl) @@ -167,6 +160,14 @@ lcdSendGlyph: call lcdData djnz .loop + ; Increase column and wrap if necessary + ld a, (LCD_CURCOL) + inc a + ld (LCD_CURCOL), a + cp 16 + jr nz, .skip + call lcdLinefeed +.skip: pop hl pop bc pop af @@ -240,6 +241,8 @@ lcdClrScr: lcdPutC: cp ASCII_LF jp z, lcdLinefeed + cp ASCII_BS + jr z, .bs push hl call fntGet jr nz, .end @@ -247,3 +250,11 @@ lcdPutC: .end: pop hl ret +.bs: + ld a, (LCD_CURCOL) + or a + ret z ; going back one line is too complicated. + ; not implemented yet + dec a + ld (LCD_CURCOL), a + ret