diff --git a/kernel/ti/lcd.asm b/kernel/ti/lcd.asm index 748e281..81ca97b 100644 --- a/kernel/ti/lcd.asm +++ b/kernel/ti/lcd.asm @@ -27,6 +27,8 @@ ; Current row being written on. In terms of pixels, not of glyphs. During a ; linefeed, this increases by FNT_HEIGHT+1. .equ LCD_CURROW LCD_RAMSTART +; Current column +.equ LCD_CURCOL @+1 .equ LCD_RAMEND @+1 ; *** Code *** @@ -34,6 +36,7 @@ lcdInit: ; Initialize variables xor a ld (LCD_CURROW), a + ld (LCD_CURCOL), a ; Clear screen call lcdClrScr @@ -122,28 +125,23 @@ lcdSendGlyph: ld a, (LCD_CURROW) call lcdSetRow - - ld b, 7 + 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) inc hl call lcdData djnz .loop - ; Now that we've sent our 7 rows of pixels, let's go in "Y-increment" - ; mode to let the LCD increase by one column after we've sent our 8th - ; line, which is blank (padding). - ld a, LCD_CMD_YINC - call lcdCmd - - ; send blank line - xor a - call lcdData - - ; go back in X-increment mode - ld a, LCD_CMD_XINC - call lcdCmd - pop hl pop bc pop af @@ -156,7 +154,7 @@ lcdLinefeed: add a, FNT_HEIGHT+1 ld (LCD_CURROW), a xor a - call lcdSetCol + ld (LCD_CURCOL), a pop af ret