Projekt
Hardware
Bedienung
BASIC (1)
BASIC (2)
BASIC (3)
Interna
Beispiele
Erweiterungen
Bibliotheken
Treiber
Programme

Download:

AVR-ChipBasic2 - Bibliotheken

V1.28 (c) 2007-2010 Jörg Wolfram



1 Die Festkomma-Bibliothek FIXLIB (Bibliothekscode 0x10)


1.1 Allgemeines
Diese Bibliothek erweitert den BASIC-Computer um Festkomma-Berechnungen. Festkomma bedeutet, daß die Stellen vor und nach dem Komma fest vorgegeben sind. Bei dieser Bibliothek lässt sich die Stellenzahl per Initialisierungskommando einstellen. Intern ist eine Darstellung gewählt, die jeweils 2 Stellen (Wertebereich 0...99) in einem Byte zusammenfasst. Somit sind Vor- und Nachkommastellen auch nur in 2-er Schritten einstellbar.
  • 2...32 Vorkomma- und 0...30 Nachkommastellen wählbar
  • Anzahl der verfügbaren Variablen von der Anzahl der Stellen abhängig
  • Belegt den Array-Bereich 256...511
  • Formatierte Textausgabe
  • Eingabe über Text im Array möglich
  • Integer- Datenaustaisch mit dem BASIC-System
  • 4 Grundrechenarten, Vergleiche und weitere Funktionen
Systembedingt haben nur Parameter die auch angegeben wurden einen definierten Wert. Bei einem CALL L,2,0 ist nur der Parameter 1 definiert, der für die Funktion notwendige Parameter 2 aber nicht. Somit wird der Variable 0 der Wert zugewiesen, der sich zu diesem Zeitpunkt gerade an dieser Stelle im RAM befindet.

1.2 Funktionsübersicht
Funktionsnummer Funktion
0 Dummy-Funktion, falls die Bibliothek aus dem Hauptmenu aufgerufen wird
1 Initialisierung
2 Integer-Zuweisung Variable=Wert
3 Zuweisung über Textstring im Array
4 liefert Integerwert der Variablen
5 Textausgabe der Variablen
6 Absolutwert einer Variablen
7 Invers-Wert (0-Variable)
8 Addition V3 = V1 + V2
9 Subtrakion V3 = V1 - V2
10 Multiplikation V3 = V1 * V2
11 Division V3 = V1 / V2
12 Konstantenzuweisung mit vordefinierten Konstanten
13 Vorkomma-Anteil einer Variablen (INT)
14 Nachkomma-Anteil einer Variablen (FRAC)
15 Vergleich zweier Variablen
16 Variable kopieren
17 Variable / 2
18 Variable * 2
19 Script im Arrayspeicher starten


1.2.1 Funktion 0 : Dummy
Dies ist eine Dummy-Funktion, die lediglich 0 zurückliefert falls die Bibliothek aus dem Hauptmenu aufgerufen wird.


Parameter Bedeutung
Parameter 1 ---
Parameter 2 ---
Parameter 3 ---
Rückgabewert 0


1.2.2 Funktion 1 : Initialisierung
Diese Funktion muss vor allen anderen Funktionen aufgerufen werden, um die notwendigen Initialisierungen vorzunehmen. Der Rückgabewert entspricht der Anzahl der Variablen, die eingerichtet wurden und hängt von der Zahl der Vor- und Nachkommastellen ab.


Parameter Bedeutung
Parameter 1 Anzahl der Vorkomma-Bytes - 1 (0...15)
Parameter 2 Anzahl der Nachkomma-Bytes
Parameter 3 ---
Rückgabewert Anzahl der initialisierten Variablen


1.2.3 Funktion 2 : Wertzuweisung von Integerwert
Setzt eine Variable auf einen Integerwert. Die Nachkommastellen werden auf 0 gesetzt


Parameter Bedeutung
Parameter 1 Variablennummer
Parameter 2 Variablenwert
Parameter 3 ---
Rückgabewert 0


1.2.4 Funktion 3 : Wertzuweisung von Textstring
Setzt eine Variable auf einen durch einen Textstring im Array definierten Wert. Als Trennzeichen zwischen Vorkomma- und Nachkommastellen kann sowohl das Komma als auch der Punkt genutzt werden. Beim ersten nicht-numerischen Zeichen im String wird die Konvertierung abgebrochen.


Parameter Bedeutung
Parameter 1 Variablennummer
Parameter 2 Textstart im Array
Parameter 3 ---
Rückgabewert 0


1.2.5 Funktion 4 : Integerwert der Variablen
Gibt den Integerwert der Variablen aus. Dabei wird entsprechend der Nachkommastellen gerundet.


Parameter Bedeutung
Parameter 1 Variablennummer
Parameter 2 ---
Parameter 3 ---
Rückgabewert Integer-Wert der Variablen


1.2.6 Funktion 5 : Textausgabe der Variablen
Gibt den Inhalt der Variablen als Textstring aus. Mit der Angabe von minimalen Vorkommabytes kann eine rechtsbündige Darstellung bewirkt werden. Ist die Anzahl der maximalen Nachkommabytes kleiner als die der Variablen, wird entsprechend gerundet.


Parameter Bedeutung
Parameter 1 Variablennummer
Parameter 2 Bit 7...4: minimale Vorkommabytes -1 Bit 3...0: Nachkommabytes
Parameter 3 (optional Ausgabekanal)
Rückgabewert 0


1.2.7 Funktion 6 : Absolutwert einer Variablen
Der Absolutwert der Variable 1 wird in die Variable 2 gespeichert. V2 = ABS(V1)


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert 0


1.2.8 Funktion 7 : Invers-Wert einer Variablen
Der Invers-Wert von Variable 1 wird in die Variable 2 gespeichert. V2 = -V1


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert 0


1.2.9 Funktion 8 : Addition
Die Summe von Variable 1 und Variable 2 wird in die Variable 3 gespeichert. V3 = V1 + V2


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 Variablennummer von Variable 3
Rückgabewert 0


1.2.10 Funktion 9 : Subtraktion
Die Differenz von Variable 1 und Variable 2 wird in die Variable 3 gespeichert. V3 = V1 - V2


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 Variablennummer von Variable 3
Rückgabewert 0


1.2.11 Funktion 10 : Multiplikation
Das Produkt von Variable 1 und Variable 2 wird in die Variable 3 gespeichert. V3 = V1 * V2


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 Variablennummer von Variable 3
Rückgabewert 0


1.2.12 Funktion 11 : Division
Der Quotient von Variable 1 und Variable 2 wird in die Variable 3 gespeichert. V3 = V1 / V2


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 Variablennummer von Variable 3
Rückgabewert 0


1.2.13 Funktion 12 : Konstantenzuweisung
Für 8 vordefinierte Konstanten lässt sich die Wertzuweisung über diese Funktion vereinfachen.


Parameter Bedeutung
Parameter 1 Variablennummer
Parameter 2 Konstantennummer (0...7)
Parameter 3 ---
Rückgabewert 0


Die 8 Konstanten haben 15 gültige Nachkommastellen und sind wie folgt definiert:


Konstantennummer Wert
0 0
1 1
2 PI
3 e (Eulersche Zahl)
4 ln(2)
5 ln(10)
6 SQRT(2)
7 SQRT(3)


1.2.14 Funktion 13 : Vorkomma-Anteil einer Variablen
Der Vorkomma-Anteil der Variable 1 wird in die Variable 2 gespeichert. Genaugenommen werden nur die Nachkomma-Bytes auf 0 gesetzt V2 = INT(V1)


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert 0


1.2.15 Funktion 14 : Nachkomma-Anteil einer Variablen
Der Vorkomma-Anteil der Variable 1 wird in die Variable 2 gespeichert. Genaugenommen werden nur die Vorkomma-Bytes auf 0 gesetzt V2 = FRAC(V1)


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert 0


1.2.16 Funktion 15 : Vergleich zweier Variablen
Variable 1 wird mit Variable 2 verglichen. Ist Variable 1 größer als Variable 2, dann ist der Rückgabewert 1, ist Variable 1 kleiner als Variable 2, ist das Ergebnis 2 und bei Gleichheit beider Variablen wird 0 zurückgeliefert.


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert Vergleichsergebnis (1,0,2)


1.2.17 Funktion 16 : Variable kopieren
Variable 1 wird in die Variable 2 kopiert.


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert 0


1.2.18 Funktion 17 : Multiplikation mit 2
Variable 1 wird durch Bitschieben mit 2 multipliziert und das Ergebnis in die Variable 2 gespeichert. Diese Funktion ist wesentlich schneller als eine entsprechende Multiplikation. V2 = V1 * 2


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert 0


1.2.19 Funktion 18 : Division durch 2
Variable 1 wird durch Bitschieben durch 2 dividiert und das Ergebnis in die Variable 2 gespeichert. Diese Funktion ist wesentlich schneller als eine entsprechende Division. V2 = V1 / 2


Parameter Bedeutung
Parameter 1 Variablennummer von Variable 1
Parameter 2 Variablennummer von Variable 2
Parameter 3 ---
Rückgabewert 0


1.2.20 Funktion 19 : Starten eines Scripts im Array
Da die Bibliothek im Wesentlichen nur die Grundrechenarten bereitstellt, gibt es eine kleine Script-Engine mit der auch komplexere Funktionen relativ einfach berechnet werden können. Dazu muss der Code im ersten Drittel des Arrays (Zellen 0...255) stehen.


Parameter Bedeutung
Parameter 1 Startadresse im Array
Parameter 2 opt. Parameter 1
Parameter 3 opt. Parameter 2
Parameter 4 opt. Parameter 3
Rückgabewert Rückgabewert, je nach Exit-Befehl


Für Schleifen etc. stehen vier 8-Bit Countervariablen zur Verfügung Jeder Befehl besteht aus 2 Bytes, die noch in Halbbytes (Nibbles) unterteilt sind. Ein x steht dafür, dass der Wert des entsprechenden Nibbles nicht ausgewertet wird. Trotzdem ist es sinnvoll diese Nibbles auf 0 zu setzen. Für Schleifen etc. stehen vier 8-Bit Countervariablen zur Verfügung, beim Start eines Scripts werden die ersten drei mit den LOW-Bytes der Parameter 1...3 vorbelegt, Countervariable 4 wird auf 0 gesetzt. Systembedingt haben nur Parameter die angegeben wurden einen definierten Wert. Bei einem CALL 7,19,17 ist nur der Parameter 1 auf 17 gesetzt, Parameter 2 und 3 sind undefiniert.


Code Bedeutung
0 0 0 V Script beenden, Variablenwert (Integer) von Variable v wird zurückgegeben
0 1 x M Script beenden, der Wert von Counter M wird zurückgegeben
0 2 n n E wird zur Script-Position nn gesprungen
0 3 C V Variable V wird mit der Konstanten C initialisiert
0 4 x V Variable V wird mit dem Wert des optionalen Parameters 1 initialisiert
0 5 x V Variable V wird mit dem Wert des optionalen Parameters 2 initialisiert
0 6 x V Variable V wird mit dem Wert des optionalen Parameters 3 initialisiert
1 0 W V W = V
1 1 W V W = ABS(V)
1 2 W V W = -V
1 3 W V W = INT(V)
1 4 W V W = FRAC(V)
1 5 W V W = V * 2
1 6 W V W = V / 2
1 8 W V überspringt die nächste Anweisung, wenn V gleich W ist
1 9 W V überspringt die nächste Anweisung, wenn V ungleich W ist
1 A W V überspringt die nächste Anweisung, wenn V größer W ist
1 B W V überspringt die nächste Anweisung, wenn V kleiner W ist
4 U W V W = U + V
5 U W V W = U - V
6 U W V W = U * V
7 U W V W = U / V
8 M n n der Counter M wird auf nn gesetzt
9 M n n zum Counter M wird nn addiert
A M n n überspringt die nächste Anweisung, wenn der Counter M gleich nn ist
B M n n überspringt die nächste Anweisung, wenn der Counter M ungleich nn ist
C M x n der Counter M wird mit Parameter N initialisiert
andere Codes Keine Funktion (NOP)




1.3 Ein Fraktalprogramm als Beispiel
In den zeilen 7 bis 10 werden die Koordinaten für X1, X2, Y1 und Y2 eingetragen.


created with latex2web.pl v0.57 © 2006-2010 Joerg Wolfram