1 | strlen: clr r18 ;Länge Anfangswert=0 setzen
|
2 | lds r16,confg1 ;Konfigurationsbyte 1 holen
|
3 | bst r16,0 ;Sprache englisch?
|
4 | brts str110 ;nein -> weiter
|
5 | ldi zl,byte3(stengl*2) ;sonst
|
6 | out rampz,zl
|
7 | ldi zl,low(stengl*2)
|
8 | ldi zh,high(stengl*2) ;Zeiger auf englische Texte
|
9 | rjmp str120
|
10 | ;
|
11 | str110: ldi zl,byte3(stgerm*2)
|
12 | out rampz,zl
|
13 | ldi zl,low(stgerm*2)
|
14 | ldi zh,high(stgerm*2) ;Zeiger auf deutsche Texte
|
15 | ;
|
16 | str120: elpm r16,z+ ;Zeichen holen
|
17 | cpi r16,0xfe ;String-Kennung gefunden?
|
18 | brne str120 ;nein -> weiter suchen
|
19 | elpm r16,z+ ;Zeichen holen
|
20 | cp r16,r22 ;Zeichenkette gefunden?
|
21 | breq str130 ;ja -> Länge ermitteln
|
22 | cpi r16,0xfe ;Endezeichen gefunden?
|
23 | brne str120 ;nein -> weitersuchen
|
24 | ret ;sonst Ende
|
25 | ;
|
26 | str130: elpm r16,z+ ;Zeichen holen
|
27 | cpi r16,0xff ;Endezeichen?
|
28 | brne str140 ;nein -> weiter
|
29 | ret ;sonst Ende
|
30 | str140: cpi r16,' ' ;Leerzeichen?
|
31 | brne str150 ;nein -> weiter
|
32 | ldi r16,0xa0 ;sonst schmales Leerzeichen
|
33 | str150: subi r16,0x20 ;Korrektur für Tabelle
|
34 | cpi r16,0xe0 ;Bereich überschritten?
|
35 | brcs str160 ;nein -> weiter
|
36 | ret ;sonst Ende (Fehler)
|
37 | str160: ldi r17,12 ;Tabellen-Offset
|
38 | mul r16,r17 ;Tabellenplatz berechnen
|
39 | push zl
|
40 | push zh
|
41 | in zl,rampz
|
42 | push zl ;String-Zeiger sichern
|
43 | ;
|
44 | ldi zl,low(chrset*2) ;Zeiger auf Zeichentabelle L
|
45 | ldi zh,high(chrset*2) ;Zeiger auf Zeichentabelle H
|
46 | ldi r16,byte3(chrset*2) ;Zeiger auf Zeichentabelle B3
|
47 | clr r17
|
48 | add zl,r0 ;Tabellenadresse L berechnen
|
49 | adc zh,r1 ;Tabellenadresse H berechnen
|
50 | adc r16,r17 ;Tabellenadresse B3 berechnen
|
51 | out rampz,r16
|
52 | elpm r16,z ;Zeichenbreite holen
|
53 | ;
|
54 | pop zl
|
55 | out rampz,zl
|
56 | pop zh
|
57 | pop zl ;String-Zeiger restaurieren
|
58 | inc r16 ;Zeichenbreite korrigieren
|
59 | add r18,r16 ;zur Gesamtlänge addieren
|
60 | rjmp str130 ;Schleife
|