.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, 'a'
st Z+, r20
ldi r20, 'x'
st Z+, r20
ldi r20, 'b'
st Z+, r20
ldi r20, 'v'
st Z+, r20
ldi r20, 'c'
st Z+, r20
ldi r20, 't'
st Z+, r20
ldi r20, 'd'
st Z+, r20
ldi r20, 'r'
st Z+, r20
ldi r20, 'e'
st Z+, r20
ldi r20, 'p'
st Z+, r20
ldi r20, 'f'
st Z+, r20
ldi r21, 12
ldi ZL, LOW(str1*2)
ldi ZH, HIGH(str1*2)
sortloop1: mov r20, r21
mov XL, ZL
mov XH, ZH
sortloop2: ld r22, Z
ld r23, X
cp r22, r23
brge goon
st Z, r23
st X, r22
goon:
ld r24, X+
dec r20
cpi r20, 0
brne sortloop2
ld r24, Z+
dec r21
cpi r21, 0
brne sortloop1
ldi ZL, LOW(str1*2)
ldi ZH, HIGH(str1*2)
ldi r21, 12
outloop: ld r20, Z+
mov temp1, r20
rcall lcd_data
dec r21
cpi r21, 0
brne outloop
loop:
rjmp loop
.include "lcd-routines.asm"
.DSEG
str1: .byte 20