Eine gute Anleitung für den Einstieg in die Bedienung des PB-110 ist auf Homecomputermuseum.de zu finden. Im folgenden Text werde ich darüber hinausgehende Funktionen beschreiben.
Nach dem Einsetzen der Batterien ist es eine gute Idee, erst mal die "All reset"
Taste auf der Rückseite des Gerätes zu drücken. Mein PB-110 verhielt sich
ohne Drücken dieser Taste auf den ersten Blick zwar normal, hatte aber 0 Bytes frei,
was sich auch nicht durch Eingeben von NEW
oder NEW ALL
beseitigen
ließ. Dieser Zustand ist für einen Anfänger schwer zu erkennen, also besser mit
"All reset" starten.
Im folgenden Text stehen "S-" und "MODE-" für das Drücken der "S" bzw. "MODE" Taste, so bedeutet z.B. "S-EXE" Drücken der (roten) "S"-Taste und darauf folgendes Drücken der "EXE"-Taste.
Zur Zeicheneingabe: Mit "MODE-." kann der EXT-Modus ein- und ausgeschaltet werden. Dies wird durch das EXT-Symbol im Display verdeutlicht. Wenn dieser Modus aktiv ist, werden Kleinbuchstaben statt Großbuchstaben eingegeben. Durch die "S"-Taste werden dann nicht mehr die roten Symbole und Tokens über den Tasten, sondern die orangen Sonderzeichen unter den Tasten aktiviert. Zu beachten ist, daß beim PB-110 anders als bei den Sharp Pockets Basic Befehle NICHT in Kleinbuchstaben eingegeben werden können, dies führt zu einem Fehler.
Durch Drücken der "MEMO"-Taste wird die erste Memo-Zeile sichtbar gemacht (wenn sich der Rechner im RUN-Modus befindet). Das "MEMO"-Symbol erscheint nun in der Anzeige und die vierstellige Siebensegmentanzeige zeigt die Nummer der gerade sichtbaren Memozeile. Wenn die Memozeile länger als das Display ist, so kann sie mit "Pfeil-links" und "Pfeil-links" verschoben werden. Zwischen den Zeilen kann mit "EXE" (oder "MEMO") und "S-EXE" geblättert werden. Der Memo-Modus wird mit den folgenden Tasten verlassen:
Wenn sich noch keine Memo-Zeilen im Speicher befinden, so zeigt das Drücken der "MEMO"-Taste keine Reaktion.
Im MEMO IN-Modus lassen sich neue Memozeilen einfügen und bestehende editieren. Dieser Modus wird durch Drücken von "MODE-9" aktiviert. Das "MEMO IN"-Symbol erscheint nun in der Anzeige und die vierstellige Siebensegmentanzeige zeigt wieder die Nummer der gerade sichtbaren Memozeile, ebenso kann wieder zwischen den Zeilen mit "EXE" (oder "MEMO") und "S-EXE" geblättert werden. Wenn der Cursor mit "Pfeil-links" und "Pfeil-links" bewegt wird, dann erscheint das "EDIT"-Symbol, welches anzeigt, dass die Zeile nun verändert werden kann. Wenn alle Zeichen in einer Zeile gelöscht werden ("DEL"-Taste), dann wird die komplette Zeile aus den Memos entfernt. Eine neue Zeile wird eingefügt, indem die letzte Memozeile, die immer leer ist, ausgefüllt wird. Der Memo-Modus wird mit den folgenden Tasten verlassen:
Die folgenden Ausführungen beziehen sich auf Unterschiede zu den von Sharp-PCs bekannten Befehlen.
Sharp | Casio |
BEEP | BEEP; zwei Tonhöhen möglich "0" und "1"; die Anzahl der Töne ist nicht einstellbar |
CLEAR | Gleiche Funktion wie bei Sharp-PCs. VAC ist gleichbedeutend |
CLOAD | LOAD; konnte ich nicht probieren, weil ich keine Hardware dazu besitze |
CONT | nicht vorhanden; wenn der Rechner aber im STOP-Status steht, so bewirkt die EXE-Taste ein Fortsetzen des Programms |
CSAVE | SAVE; konnte ich nicht probieren, weil ich keine Hardware dazu besitze |
DEGREE | MODE 4 im WRT-Modus; Im RUN-Modus durch Drücken von MODE-4 aktivierbar |
DIM | DEFM; keine mehrdimensionalen Felder und keine Angabe der Stringlänge möglich |
GOTO | funktioniert wie bei Sharp-PCs, es können jedoch im RUN-Modus keine Programme damit gestartet werden |
GRAD | MODE 6 im WRT-Modus; Im RUN-Modus durch Drücken von MODE-6 aktivierbar |
IF...THEN | Im Prinzip gleich, THEN muss aber immer angegeben werden. Bei Angabe von Sprungzielen muss GOTO verwendet werden |
INPUT | funktioniert, allerdings kann kein Text für dem Prompt angegeben werden (läßt sich aber mit PRINT..; simulieren) |
INPUT# | vergleichbar mit GET |
LET | analog; kann beim PB-110 aber immer weggelassen werden |
LPRINT | nicht vorhanden, mit MODE 7 und MODE 8 kann aber der PRT-Modus ein- und ausgeschaltet werden (ähnlich P<=>NP) |
NEW | NEW, NEW ALL; NEW löscht den aktuellen, NEW ALL alle Programmbereiche. NEW ALL löscht auch Variablen |
PAUSE | nicht vorhanden, kann aber durch PRINT..; und eine Warteschleife simuliert werden, da der PB-110 im BUSY-Status das Display nicht abschaltet |
Vorhanden, verhält sich aber ein bisschen anders; siehe Homecomputermuseum.de | |
PRINT# | vergleichbar mit PUT |
RADIAN | MODE 5 im WRT-Modus; Im RUN-Modus durch Drücken von MODE-5 aktivierbar |
TROFF | Kein entsprechender Befehl; Tracemodus kann aber mit MODE-3 eingeschaltet werden |
TRON | Kein entsprechender Befehl; Tracemodus kann aber mit MODE-2 ausgeschaltet werden |
Was nicht funktioniert: AREAD, CHAIN, MDF, ON..GOSUB, ON..GOTO, RANDOM, USING, WAIT
Die Pseudovariable KEY$ (oder KEY) liefert die aktuell gedrückte Taste
ABS | Absolutbetrag |
ACS | Arcuscosinus |
ASN | Arcussinus |
ATN | Arcustngens |
COS | Cosinus |
DEG | Umwandlung Grad, Minuten, Sekunden in Dezimaldarstellung. z.B. DEG(45,10,3) |
DMS$ | Umkehrfunktion von DEG, liefert formatierten String |
EXP | Exponent der Zahl e |
FRAC | Nachkommaanteil des Arguments |
INT | Ganzzahliger Teil einer Zahl |
LN | Natürlicher Logarithmus |
LOG | Zehnerlogarithmus |
SGN | 0, wenn Arg.=0, -1, wenn Arg. negativ, 1 sonst |
SIN | Sinus |
SQR | Quadratwurzel |
TAN | Tangens |
FRAC | Nachkommaanteil einer Zahl |
Was leider abgeht (ich konnte zumindest keine finden) ist eine RANDOM-Funktion, diese kann aber durch ein Unterprogramm realisiert werden. Als Hilfsfunktion dafür benötigen wir die Modulo-Funktion (Das ist der Rest einer Integer-Division, z.B. liefert 5 MOD 3 als Ergebnis 2). In Basic würde man Y = A MOD B wie folgt formulieren:
10 Y=A-B*INT(A/B)
Die Zufallszahlen können nach der linearen Kongruenz-Methode nach folgender Formel erzeugt werden:
xn+1 = (a * xn + c) mod m
Nach "R. Sedgewick: Algorithmen" wählen wir:
xn+1 = (6421 * xn + 1) mod 65536
Das liefert Zufallszahlen 0 <= x < 65536. Die Basic-Realisierung inkl. Modulo-Funktion sieht wie folgt aus:
100 X=6421*X+1:X=X-65536*INT(X/65536):RETURN
Wenn man Zufallszahlen in einem kleineren Bereich, z.B. 0 <= x < 100 benötigt,
so rechnet man einfach Y=INT(100*X/65536)
.
... konnte ich nur sehr wenige entdecken:
Die MID-Funktion reagiert leider sehr empfindlich auf falsche Argumente. Andere Stringfunktionen können simuliert werden:
C$=LEFT$(B$, A) entspricht z.B. $=B$:C$=MID(1,A)
Die Länge von $ kann mit folgendem (leider nicht sehr effizienten) Unterprogramm ermittelt werden (Länge wird in A gespeichert):
100 IF $="" THEN A=0:RETURN 110 A=1 120 IF $# MID(1,A) THEN A=A+1: GOTO 120 130 RETURN
Das Doppelkreuz-Zeichen in Zeile 120 muss durch das Ungleich-Zeichen des PB-110 (S-=) ersetzt werden, dieses läßt sich jedoch in HTML nicht so leicht darstellen ...
Die RIGHT$-Funktion läßt sich dann mit Hilfe dieses Unterprogramms realisieren. C$=RIGHT$(B$, D) entspricht z.B. $=B$:GOSUB 100:C$=MID(A-D+1,D)
CHR$, ASC, STR$ und VAL fehlen leider und lassen sich auch nicht so einfach ersetzen.
Zu guter letzt, ein Spiel als Programmbeispiel, weils am meisten Spaß macht...
Es handelt sich um "Skifahren", ein Programm, das ich erstmals auf einem
8085-Entwicklungsystem sah (diese Version konnte auch auf einem Drucker mit Endlospapier
gespielt werden).
Im folgenden Listing, das ich leider abtippen musste (wenn jemand ein Link-Programm
Casio <=> PC kennt, möge er es mir bitte mitteilen), habe ich die in HTML
nicht darstellbaren Sonderzeichen des EXT-Modus in geschwungenen Klammern dargestellt,
z.B. bedeutet {S-D}
das der Taste D
überlagerte
Dreieck-Zeichen. Hier nun das Listing:
10 $=" {S-D} {S-L}{S-L}{S-L}{S-L}{S-L}{S-L}{S-L}" 20 L=3:P=6:T=0 30 PRINT "*SKIRENNEN*" 500 FOR I=1 TO 50 505 A=P-L:T=T+ ABS(A-3) 510 IF A<1 THEN GOTO 700 515 IF A>5 THEN GOTO 700 520 C$= MID(10,L) 530 D$= MID(6-A,5) 540 E$= MID(10,7-L) 545 $=$+C$:$=$+D$:$=$+E$ 550 PRINT CSR0; MID(18,12); 555 $= MID(1,16) 560 C$= KEY 570 IF C$="1" THEN P=P-1 580 IF C$="3" THEN P=P+1 590 GOSUB 1000 600 Y= INT(3*X/65536)-1 610 L=L+Y 620 IF L<1 THEN L=1 630 IF L>6 THEN L=6 640 NEXT I 650 BEEP 0: PRINT " ZEIT: ";T 660 T=100000-T 665 IF T<H THEN END 670 BEEP 0: BEEP 1: PRINT "* BESTZEIT *" 680 H=T: END 700 BEEP 1: PRINT "** STURZ ** " 710 END 1000 X=6421*X+1:X=X-65536* INT(X/65536): RETURN
Gesteuert wird mit den Tasten 1
und 3
. Wer in die Bäume
fährt, kommt zu Sturz. Am Schluß wird die Zeit angezeigt, welche mangels entsprechender
Funktion keine echte Zeit ist, sondern ein Wert, der angibt, wie weit von der Ideallinie
abgewichen wurde. Hier noch einige Tipps:
H=0
gelöscht werden.X
aufschreiben. Der Kurs lässt sich dann vor dem
nächsten Spiel wieder setzen (Durch Zuweisung an X, das ist der Initialwert
des Zufallszahlengenerators in Zeile 1000).Viel Spaß!
Edgar Pühringer | last modified: 23.10.2001 |