ili9341: moved text functions to dedicated source file.

This commit is contained in:
Martin Preuss
2025-05-22 01:18:49 +02:00
parent 143180d68b
commit 229e68077c
3 changed files with 154 additions and 104 deletions

View File

@@ -157,6 +157,7 @@
.include "modules/lcd2/ili9341/main.asm"
.include "modules/lcd2/ili9341/io_spi.asm"
.include "modules/lcd2/ili9341/font8x8.asm"
.include "modules/lcd2/ili9341/text.asm"
#endif

View File

@@ -112,8 +112,23 @@ ILI9341_Init:
mov r3, r16
; set character
ldi r16, 65
rcall ili9341_WriteCharacterX4At
ldi r16, 'A'
rcall ili9341PrintChar
ldi r16, 'Q'
rcall ili9341PrintChar
ldi r16, 'H'
rcall ili9341PrintChar
ldi r16, 'O'
rcall ili9341PrintChar
ldi r16, 'M'
rcall ili9341PrintChar
ldi r16, 'E'
rcall ili9341PrintChar
sec
ret
@@ -121,6 +136,16 @@ ILI9341_Init:
ili9341PrintChar:
push zl
push zh
rcall ili9341_WriteCharacterX4At
pop zh
pop zl
ret
; ---------------------------------------------------------------------------
; @routine ILI9341_Fini @global
@@ -433,7 +458,7 @@ ili9341BitBlit_loopW:
; @param r9:r8 W
; @param r11:r10 H
; @param X source data pointer (RAM)
; @clobbers r16, r22, r23, r24, r25, X (r17, r20, r21)
; @clobbers r16, r22, r23, r24, r25, X (r17, r18, r19, r20, r21)
ili9341BitBlitStretch2:
push r15
@@ -589,107 +614,6 @@ ili9341BitBlitStretchNWriteLine_loop2:
; ---------------------------------------------------------------------------
; @routine ili9341_WriteCharacterX1At
; @param R16 character to write
; @param r5:r4 X
; @param r7:r6 Y
; @param r1:r0 background color
; @param r3:r2 foreground color
; @param Z pointer to font
; @param X pointer to RAM to store data to
; @return r5:r4 new X (advanced by character width)
; @clobbers r16, r17, r18, r19, r24, r25, x, z
ili9341_WriteCharacterX1At:
; render character
push xl
push xh
rcall ili9341WriteCharacterFromFont8x8 ; (r17, r24, r25, x, z)
pop xh
pop xl
; set width and height
ldi r16, 8
mov r8, r16
clr r9
mov r10, r16
clr r11
rjmp ili9341BitBlit
; @end
; ---------------------------------------------------------------------------
; @routine ili9341_WriteCharacterX2At
; @param R16 character to write
; @param r5:r4 X
; @param r7:r6 Y
; @param r1:r0 background color
; @param r3:r2 foreground color
; @param Z pointer to font
; @param X pointer to RAM to store data to
; @return r5:r4 new X (advanced by character width)
; @clobbers r16, r17, r18, r19, r24, r25, x, z
ili9341_WriteCharacterX2At:
; render character
push xl
push xh
rcall ili9341WriteCharacterFromFont8x8 ; (r17, r24, r25, x, z)
pop xh
pop xl
; set width and height
ldi r16, 8
mov r8, r16
clr r9
mov r10, r8
clr r11
rjmp ili9341BitBlitStretch2
; @end
; ---------------------------------------------------------------------------
; @routine ili9341_WriteCharacterX4At
; @param R16 character to write
; @param r5:r4 X
; @param r7:r6 Y
; @param r1:r0 background color
; @param r3:r2 foreground color
; @param Z pointer to font
; @param X pointer to RAM to store data to
; @return r5:r4 new X (advanced by character width)
; @clobbers r16, r17, r18, r19, r24, r25, x, z
ili9341_WriteCharacterX4At:
; render character
push xl
push xh
rcall ili9341WriteCharacterFromFont8x8 ; (r17, r24, r25, x, z)
pop xh
pop xl
; set width and height
ldi r16, 8
mov r8, r16
clr r9
mov r10, r8
clr r11
rjmp ili9341BitBlitStretch4
; @end

View File

@@ -0,0 +1,125 @@
; ***************************************************************************
; copyright : (C) 2025 by Martin Preuss
; email : martin@libchipcard.de
;
; ***************************************************************************
; * This file is part of the project "AqHome". *
; * Please see toplevel file COPYING of that project for license details. *
; ***************************************************************************
; ***************************************************************************
; code
.cseg
; ---------------------------------------------------------------------------
; @routine ili9341_WriteCharacterX1At
; @param R16 character to write
; @param r5:r4 X
; @param r7:r6 Y
; @param r1:r0 background color
; @param r3:r2 foreground color
; @param Z pointer to font
; @param X pointer to RAM to store data to
; @return r5:r4 new X (advanced by character width)
; @clobbers r16 (r17, r20, r21, r22, r23, r24, r25, X)
ili9341_WriteCharacterX1At:
rcall ili9341PrepareCharFromFont ; (r16, r17, r24, r25, z)
rcall ili9341BitBlit ; (r16, r17, r20, r21, r22, r23, r24, r25, X)
ldi r16, 8
add r4, r16
adc r5, r16
sub r5, r16
ret
; @end
; ---------------------------------------------------------------------------
; @routine ili9341_WriteCharacterX2At
; @param R16 character to write
; @param r5:r4 X
; @param r7:r6 Y
; @param r1:r0 background color
; @param r3:r2 foreground color
; @param Z pointer to font
; @param X pointer to RAM to store data to
; @return r5:r4 new X (advanced by character width)
; @clobbers r16 (r17, r18, r19, r20, r21, r22, r23, r24, r25, X)
ili9341_WriteCharacterX2At:
rcall ili9341PrepareCharFromFont ; (r16, r17, r24, r25, z)
rcall ili9341BitBlitStretch2 ; (r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, X)
ldi r16, 16
add r4, r16
adc r5, r16
sub r5, r16
ret
; @end
; ---------------------------------------------------------------------------
; @routine ili9341_WriteCharacterX4At
; @param R16 character to write
; @param r5:r4 X
; @param r7:r6 Y
; @param r1:r0 background color
; @param r3:r2 foreground color
; @param Z pointer to font
; @param X pointer to RAM to store data to
; @return r5:r4 new X (advanced by character width)
; @clobbers r16, r17, r18, r19, r24, r25, x, z
ili9341_WriteCharacterX4At:
rcall ili9341PrepareCharFromFont ; (r16, r17, r24, r25, z)
rcall ili9341BitBlitStretch4
ldi r16, 32
add r4, r16
adc r5, r16
sub r5, r16
ret
; @end
; ---------------------------------------------------------------------------
; @routine ili9341PrepareCharFromFont
; @param R16 character to write
; @param Z pointer to font
; @param X pointer to RAM to store data to
; @param r9:r8 character width in points
; @param r11:r10 character height in points
; @clobbers r16 (r17, r24, r25, z)
ili9341PrepareCharFromFont:
; render character
push xl
push xh
rcall ili9341WriteCharacterFromFont8x8 ; (r17, r24, r25, x, z)
pop xh
pop xl
; set width and height
ldi r16, 8
mov r8, r16
clr r9
mov r10, r16
clr r11
ret
; @end