Home

Über Vimage

Vimage kennenlernen

Einsteiger-Tutorial

Vimage Praxis

Grundlagenwissen

Alle Tutorials

Technologien

Hintergrundwissen

• RTA
•• Was ist RTA?
•• Wie RTA funktioniert
•• Die RTA-Entwicklungsumgebung kennenlernen
•• Mit RTA-Programmierung beginnen
•• Einen Kartennetzentwurf berechnen
•• Einen Kartennetzentwurf programmieren

Informationen

Zentrale Download-Seite

Vimage erwerben

Vimage Leerseite

Impressum und Datenschutzerklärung

Anhang

Vimage Special

Was ist RTA?

RTA heißt Reduced Transliteration Assembler und ist eine Programmiersprache. Vimage nutzt RTA zur Berechnung von Kartennetzentwürfen.

So viel wie nötig, so wenig wie möglich.

Das Problem bei Kartenprojektionen ist weniger die Stabilität der Formeln - die haben es eigentlich ganz gut über die Jahrhunderte geschafft. Vielmehr ist die Stabilität der Programmcodes bedenklich, die in immer kürzeren Halbwertszeiten veralten. Was nützt die beste Implementation, wenn ihr stabiles Funktionieren nur wenige Jahre im voraus sicher ist? Und wer weiß, ob ein spezieller Netzentwurf, den man nutzt, nach dem nächsten Update noch lauffähig ist?

Don E. Knuths hat die hypothetische Assemblersprache MMIXAL geschaffen, um zu verhindern, dass die Codes zu schnell veralten. RTA nutzt das gleiche Prinzip. Mit den 96 Befehlen von RTA lassen sich letztendlich beliebige mathematische Formeln zusammenbauen, somit auch alle Formeln von Kartenntzentwürfen.


Der Befehlssatz von RTA

1. Numerische Befehle

mov     b a       ; b ← a      (Transportbefehl)
clr     a         ; a ← 0      (Löschbefehl)
inc     a         ; a ← a+1    (Inkrement)
dec     a         ; a ← a-1    (Dekrement)
add     a b       ; a ← a+b
sub     a b       ; a ← a-b
mul     a b       ; a ← a*b
div     a b       ; a ← a/b
power   a b       ; a ← a hoch b
root    a b       ; a ← b-te Wurzel
exp     a         ; a ← e hoch a
exp10   a         ; a ← 10 hoch a
exp2    a         ; a ← 2 hoch a
expx    a b       ; a ← b hoch a
log     a         ; a ← natürlicher Logarithmus aus a (Basis e)
log10   a         ; a ← dekadischer Logarithmus aus a (Basis 10)
log2    a         ; a ← dyadischer Logarithmus aus a (Basis 2)
logx    a b       ; a ← beliebiger Logarithmus aus a (Basis b)
sin     a         ; a ← sin(a)
cos     a         ; a ← cos(a)
tan     a         ; a ← tan(a)
cot     a         ; a ← cot(a)
sec     a         ; a ← sec(a)   = 1/cos(a)
csc     a         ; a ← cosec(a) = 1/sin(a)
asin    a b       ; a ← arcsin(a)
acos    a b       ; a ← arccos(a)
atan    a b       ; a ← arctan(a)
acot    a b       ; a ← arccot(a)
asec    a b       ; a ← arcsec(a)
acsc    a b       ; a ← arccosec(a)
sinh    a         ; a ← sinus hyperbolicus (a)
cosh    a         ; a ← cosinus hyperbolicus (a)
tanh    a         ; a ← tangens hyperbolicus (a)
coth    a         ; a ← cotangens hyperbolicus (a)
sech    a         ; a ← secans hyperbolicus (a)
csch    a         ; a ← cosecans hyperbolicus (a)
asinh   a         ; a ← area sinus hyperbolicus (a)
acosh   a         ; a ← area cosinus hyperbolicus (a)
atanh   a         ; a ← area tangens hyperbolicus (a)
acoth   a         ; a ← area cotangens hyperbolicus (a)
asech   a         ; a ← area secans hyperbolicus (a)
acsch   a         ; a ← area cosecans hyperbolicus (a)
bin     a         ; a ← 1, sofern a≠0, sonst 0 (Log. Identität)
not     a         ; a ← 1, sofern a=0, sonst 0 (Log. Negation)
and     a b       ; a ← 1, sofern a≠0 und b≠0, sonst 0
or      a b       ; a ← 1, sofern a≠0 oder b≠0, sonst 0
neg     a         ; Vorzeichen von a umkehren (Negation)
abs     a         ; Absolutbetrag von a bilden
sgn     a         ; Vorzeichen von a (+1, 0 oder -1)
round   a         ; a runden
ceil    a         ; a aufrunden
floor   a         ; a abrunden
fix     a         ; Vorkommastellen von a (a zur 0 hin runden)
frac    a         ; Nachkommastellen von a
clip    a b c     ; a ← a, wenn a<b dann a ← b, wenn a>c, dann a ← c
cmod    a b c     ; a mit Modulofunktion (Sägezahn) in b ... c clippen
random  a         ; a ← Zufallszahl zwischen 0 und 1
2. Verzweigungsbefehle
cmpgt   a b m     ; wenn a > b Sprung nach m („compare greather than“)
cmpge   a b m     ; wenn a ≥ b Sprung nach m („compare greather equal“)
cmplt   a b m     ; wenn a < b Sprung nach m („compare less than“)
cmple   a b m     ; wenn a ≤ b Sprung nach m („compare less equal“)
cmpeq   a b m     ; wenn a = b Sprung nach m („compare equal“)
cmpne   a b m     ; wenn a ≠ b Sprung nach m („compare not equal“)
tstgt   a m       ; wenn a > 0 Sprung nach m („test greather than“)
tstge   a m       ; wenn a ≥ 0 Sprung nach m („test greather equal“)
tstlt   a m       ; wenn a < 0 Sprung nach m („test less than“)
tstle   a m       ; wenn a ≤ 0 Sprung nach m („test less equal“)
tsteq   a m       ; wenn a = 0 Sprung nach m („test equal“)
tstne   a m       ; wenn a ≠ 0 Sprung nach m („test not equal“)
jump    m         ; Unbedingter Sprung nach m
3. Ein-/Ausgabebefehle
input   a s       ; fordert a mit Text s im Dialog an (mit Pause)
output  a s       ; zeigt a mit Text s im Dialog an (mit Pause)
pause   s         ; Programmpause mit Dialogtext s (mit Pause)
proof   a s       ; Testausgabe von a mit Mitteilung s (ohne Pause)
info    s         ; Mitteilung s (ohne Pause)
cls               ; Löschen des Ausgabetextes
printn  a b c     ; Ausgabe der Zahl a mit b Vor- und c Nachkommastellen
prints  s         ; Ausgabe der Zeichenkette s in den Ausgabetext
save    s         ; Speichern des Ausgabetextes in Textdatei s.txt
read    a b       ; b+1 Symbole aus Datei a.dat lesen und ab Symbol a in Symboltabelle ablegen.
write   a b       ; Ab Symbol a fortlaufend b+1 Symbole aus Symboltabelle in Datei a.dat schreiben.
4. Indirekt- oder Pointerbefehle
adrof   p a       ; Adresse von a nach p schaffen. p wird Pointer auf a
get     a p q     ; Das Symbol mit der Adresse (p+q) nach a schaffen
put     p q a     ; a auf das Symbol mit der Adresse (p+q) schaffen
5. Systembefehle
init              ; Erste Zeile eines Programmes (wird automatisch erzeugt)
nop               ; Nullbefehl. Dieser Befehl macht nichts
mode    a         ; a=0: 'Ohne Halt', 1: 'Fehlerhalt', 2: 'Schrittweise'
halt              ; Hält das Programm an
err     a m       ; a ← Fehlercode (0=Kein Fehler). Bei Fehlern Sprung nach m.
exit              ; Programmbeendigung
6. Pseudobefehle
_name   s         ; Dem Programm den Namen s geben
_var    a         ; Variable a deklarieren
_dim    a i       ; Feld a mit den Feldelementen a, a(0) ... a(i) deklarieren
_lab    m         ; Marke m definieren *)
_config i         ; Virtuelle Maschine mit Parameter i konfigurieren
_end              ; Programmende
*) ) Für den markendefinierenden Befehl _lab xyz gibt es auch die Kurzschreibweise xyz:“.

Die Operanden bedeuten:

a, b, c, p, q    Zahlen oder Variablen
i                nur Zahlen (Variablen gelten als Null)
m                Marken
s                Zeichenketten


RTA-Dokumentation

Kompakte Sprachbeschreibung

RT-Assembler: Sprachbeschreibung (PDF, deutsch, 8 Seiten)
RT Assembler: Language description (Text, english)

Das ausführliche RTA-Handbuch

Kapitel 1 - Das Programm (PDF, deutsch, 6 Seiten)
Kapitel 2 - Die Befehle (PDF, deutsch, 16 Seiten)
Kapitel 3 - Kontrollstrukturen (PDF, deutsch, 6 Seiten)
Kapitel 4 - Pointer und Felder (PDF, deutsch, 5 Seiten)
Kapitel 5 - Programmierbeispiele (PDF, deutsch, 3 Seiten)
Kapitel 6 - Anhang(PDF, deutsch, 7 Seiten)

Referenzkarte

RTAL: Befehlsliste (PDF, deutsch)
RTAL: Instruction list (PDF, english)

Technical Documantation

RTAL Instruction Set Definition
RTAL Language Definition (Backus-Naur-Form).


Eine RTA-Programmierumgebung

RTA läuft auf einer synthetischen Maschine in 2 Umgebungen. Zum einen enthält Vimage einen integrierten RT-Debugger unter der Menüfunktion Extras/RT-Debugger. Weil RTA aber auch unabhängig von Vimage arbeiten kann, gibt es einen „RT-Assembler“ auch als selbständige Anwendung.

Zum Installieren rta.zip herunterladen, die 3 darin enthaltenen Dateien rta.cab, setup.lst und rta.cab auspacken und die setup.exe abarbeiten:

Download rta.zip (Etwa 2,7 MByte)


RTA-Beispielprogramme

Mit Hello World!

... lernt jede Programmiersprache das Laufen ...

Hello World!

Mathematische Beispielprogramme

Demo Mittelwertberechnung
Fakultäten berechnen
Primzahlen zusammentragen
Primzahlen mit dem Sieb des Eratoathenes sieben
Kubische Gleichung mit Cardanischer Formel lösen
Die Kreiszahl π mit der Reihenentwicklung von Plouffe berechnen
Die Eulersche Zahle e mit einer Reihenentwicklung berechnen
Sinusfunktion mit einer Reihenentwicklung berechnen

Codebeispieleprogramme

Feldzugriff
Subroutinenaufruf
Berechneter Sprung
Cardanische Formel als Unterprogrammcode (Nur zum Codekopieren - nicht allein lauffähig)


RTA-Tutorials und Specials ...

Mit dem Tutorial Die RTA-Entwicklungsumgebung kennenlernen kann man etwas ersten „Vimage/RTA-Stallgeruch“ aufnehmen. Anhand eines ersten Beispieles „Endlosschleife“ wird gezeigt, wie der vimageinterne RT-Debuggger bedient wird und wie man ein RTA-Programm abarbeitet.

Im Tutorial RTA-Einstieg werden 4 kleine Beispielprogramme für die Radio engine von Vimage programmiert.

Die Specialseite Wie RTA funktioniert gestattet einen Blick hinter die Kulissen des RT-Assemblers.

Die Specialseite Wie RTA Kartennetzentwürfe rechnet erläutert ausführlich, wie man vorgeht, um einen Kartennetzentwurf in RTA zu implementieren.

Eine Auswahl von RTA-Programmen für Kartennetzentwürfe gibt es auf der Download-Seite

Zum Seitenanfang