author | Tero Marttila <terom@fixme.fi> |
Tue, 26 Jul 2011 22:44:40 +0300 | |
changeset 44 | e6571a8040ae |
parent 39 | d7eac199d323 |
permissions | -rw-r--r-- |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
;; Basic LED matrix fonts |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
;; vim: set ft=avr: |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
.cseg |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
5 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
6 |
;; Font definition |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
7 |
; Defines FONT_8x6 symbol |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
8 |
.include "font.def" |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
10 |
; Font to use |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
11 |
.set FONT_TABLE = FONT_8x6 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
12 |
.set FONT_START = FONT_8x6_START |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
.set FONT_END = FONT_8x6_END |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
.set FONT_COLS = FONT_8x6_COLS |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
15 |
.set FONT_ROWS = FONT_8x6_ROWS ; XXX: fixed to 8 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
16 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
;; Render the given ASCII char into the given buffer |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
18 |
; Input: r16 - ASCII char code |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
19 |
; Y - dest buf (Wx8 column data) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
Font_Render: |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
; Test char index |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
; test under-range |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
ldi r17, FONT_START |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
25 |
cp r16, r17 |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
26 |
brlt font_r_invalid |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
; test over-range |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
ldi r17, FONT_END |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
cp r17, r16 |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
31 |
brlt font_r_invalid |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
; compute offset in chars (r16) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
subi r16, FONT_START |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
|
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
36 |
; ok |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
37 |
rjmp font_r_render |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
38 |
|
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
39 |
font_r_invalid: |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
40 |
; use first sym |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
41 |
ldi r16, 0 |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
42 |
|
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
43 |
cbi PORTD, PIND7 |
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
44 |
|
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
45 |
font_r_render: |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
46 |
; compute offset in bytes (r1:r0) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
47 |
ldi r17, FONT_COLS |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
48 |
mul r16, r17 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
49 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
50 |
; font table start offset from words |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
51 |
ldi ZL, low(FONT_TABLE * 2) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
52 |
ldi ZH, high(FONT_TABLE * 2) |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
53 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
54 |
; apply offset |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
55 |
add ZL, r0 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
56 |
adc ZH, r1 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
57 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
58 |
; Copy column pixel data |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
59 |
; count columns |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
60 |
ldi r16, FONT_COLS |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
61 |
font_r_cpy: |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
62 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
63 |
; copy via r17 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
64 |
lpm r17, Z+ |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
65 |
st Y+, r17 |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
66 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
67 |
dec r16 |
39
d7eac199d323
Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents:
38
diff
changeset
|
68 |
brne font_r_cpy |
38
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
69 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
70 |
|
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
71 |
; Done |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
72 |
ret |
f430b507a885
Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
73 |