.include "m8def.inc"
.def temp1 = r16
.def temp2 = r17
.def temp3 = r18
ldi temp1, LOW(RAMEND)
out SPL, temp1
ldi temp1, HIGH(RAMEND)
out SPH, temp1
ldi temp1, 0xFF
out DDRD, temp1
rcall lcd_init
rcall lcd_clear
ldi ZL, LOW(str1*2)
ldi ZH, HIGH(str1*2)
ldi r20, 'z'
st Z+, r20
ldi r20, 'b'
st Z+, r20
ldi r20, 'h'
st Z+, r20
ldi r20, 'v'
st Z+, r20
ldi r20, 'a'
st Z+, r20
ldi r20, 'l'
st Z+, r20
ldi r20, 'o'
st Z+, r20
ldi r20, 'k'
st Z+, r20
ldi r20, 'p'
st Z+, r20
ldi r20, 'q'
st Z+, r20
ldi r20, 'n'
st Z+, r20
ldi r20, 'x'
st Z+, r20
ldi r20, 'e'
st Z+, r20
ldi ZL, LOW(str1*2)
ldi ZH, HIGH(str1*2)
ldi r21, 13
loop2: mov r22, r21
mov XL, ZL
mov XH, ZH
loop3: ld r24, X
ld r25, Z
cp r24, r25
brge goon
st X, r25
st Z, r24
goon: ld r24, X+
dec r22
cpi r22, 0
brne loop3
ld r24, Z+
dec r21
cpi r21, 0
brne loop2
ldi ZL, LOW(str1*2)
ldi ZH, HIGH(str1*2)
ldi r21, 13
loop1: ld r20, Z+
mov temp1, r20
rcall lcd_data
dec r21
cpi r21, 0
brne loop1
loop:
rjmp loop
.include "lcd-routines.asm"
.DSEG
str1: .byte 0x40