Programmierung » ClassPad 300 » Basic » Portieren vom CFX 9850

Portieren vom CFX 9850

Wenn man ein Programm vom CFX 9850 o.ä. auf dem ClassPad laufen lassen will, hat man im Prinzip 2 Möglichkeiten: Einen Interpreter für den ClassPad schreiben und das Programm vom Interpreter ausführen oder das Programm für den ClassPad zu portieren. Diese Seite beschränkt sich auf letzteres.
Das Dokument ist noch nicht vollständig.

ViewWindow-Einstellungen

Auf dem CFX ist es möglich die Minimale Y größer als die Maximale einzustellen. Dies dann sinnvoll, wenn man Linien, Text usw. verwenden wollte und nicht jedes mal die Koordinaten umrechnen wollte:

ViewWindow 0,126,0,62,0,0

Das geht auf dem ClassPad nicht mehr. Für ein kleines Grafik-Fenster wird das in folgendes geändert:

ViewWindow 1,155,1,-77,-1,1

Dann muss man zwar negative Y-Koordinaten für Line, Circle, Plot usw. (ausser Text) angeben, das ist immer noch besser wie für jede Grafik-Funktion ein Pixel-Gegenstück zu schreiben. Die obere linke Ecke ist dann (1,-1). (Y negativ!)

Eingaben: ?

Auf dem CFX schrieb man ?Variable. Das geht recht einfach zu portieren. Aus folgendem:

?A

Wird dann folgendes:

Local A
InputStr A
strToExp(A)A
Das Local A sollte am Anfang des Programms stehen und bewirkt nur, daß die Variable A temporär erstellt wird.

Grafische Text-Ausgabe

Die Text-Funktion gibt es zwar noch, doch die Argumente sind nun richtig herum. Statt y,x,zeichenkette schreibt man nun x,y,zeichenkette. Was noch zu beachten wäre, ist daß die Schrift 9 Pixel (8 Pixel für Zeichen + 1 Freiraum) hoch ist. Zu beachten gibt es noch, das der Classpad eine "Frei-Pixel-Zeile" über ein Zeichen zeichnet.
Text 1,1,"A" beginnt am oberesten Pixel zu zeichen. Doch dieser ist immer leer.

Text 1,1,"Zeile 1"
Text 7,1,"Zeile 2"

Wird zu

Text 1,1,"Zeile 1"
Text 1,10,"Zeile 2"

Disp-Ausgabe und "Ausdruck"

Diese Ausgabe wird nun mit dem Print-Befehl realisiert. Dieser stoppt nicht nach jeder Zeile also muß manuell eine GetKey-Schleife (am Ende einer Seite) eingefügt werden.

Vielleicht so etwas:

Local sx,sy,sz
'Ausgabe
StrJoin "x=",var1,sx
Print sx
StrJoin "y=",var2,sy
Print sy
StrJoin "z=",var3,sz
Print sz

'Auf EXE warten
Print "- EXE! -"
Local gk
0gk
While gk13
GetKey gk
WhileEnd

GetKey

Das ist offensichtlich: Der ClassPad hat nur 34 Tasten, der CFX eine ganze Menge mehr. Da muß man nun sehen, daß man die Funktionen, die man erst auf den Tasten irgendwie anders unterbringt (z.B. mit Buttons). Auch sind die Tastencodes auf dem ClassPad andere: [EXE] ist nun 13 und nicht mehr 31.