Anhang C

COMMODORE 64 Basic

Dieses Handbuch hat Ihnen bis jetzt eine Einführung in die Programmiersprache BASIC gegeben – genug um Ihnen ein Gefühl für die Programmierung von Computern und das dabei benutzte Vokabular zu geben. In diesem Anhang finden Sie nun eine vollständige Liste aller Regeln (der Syntax) des COMMODORE 64 BASIC, zusammen mit kurzen Beschreibungen. Probieren Sie die Kommandos einfach aus. Sie können Ihrem Computer keinen dauerhaften Schaden zufügen, wenn Sie Programme eintippen; und Programmieren lernt man immer noch am leichtesten, indem man es tut.

Entsprechend den verschiedenen Arten von Operationen in BASIC ist dieser Anhang in mehrere Sektionen eingeteilt:

  1. Variablen und Operatoren: beschreibt die verschiedenen Variablentypen, gültige Variablennamen, arithmetische und logische Operatoren.
  2. Kommandos: beschreibt die Kommandos, die gebraucht werden, um Programme zu edieren, sie zu laden, zu speichern und zu löschen
  3. Befehle: beschreibt die BASIC-Befehle, die in numerierten Programmzeilen vorkommen.
  4. Funktionen: beschreibt die String-, numerischen und Druckfunktionen.

Variablen

Der COMMODORE 64 benutzt drei Arten von Variablen: Fließkommazahlen (real), ganze Zahlen (integer) und Strings (alphanumerische Zeichenketten).

Variablennamen können aus einem einzelnen Buchstaben, einem Buchstaben mit nachfolgender Ziffer oder zwei Buchstaben bestehen. Integervariablen werden durch ein dem Namen nachgestelltes Prozentzeichen (%) gekennzeichnet. Stringvariablen tragen nach ihrem Namen ein Dollarzeichen ($).

Beispiele:

Namen von Realvariablen: A, A5, BZ
Namen von Integervariablen: A%, A5%, BZ%
Namen von Stringvariablen: A$, A5$, BZ$

Arrays sind Mengen von Variablen, die denselben Namen benutzen und durch Angabe einer besonderen Nummer (Index) als bestimmtes Element dieses Arrays ausgezeichnet werden. Arrays werden durch das DIM Statement definiert. (Statement ist das in der Computerei häufig benutzte englische Wort für Befehl, Aussage). Arrays dürfen von jedem der drei Typen Real, Integer oder String sein. Dem Variablennamen folgt in runden Klammern die Angabe, wieviele Elemente die Liste enthält und wie diese angeordnet sein sollen (wieviele Dimensionen das Array hat).

A(7), BZ%(11), A$(50), PT(20,20)

Bemerkung: Es gibt drei Variablennamen, die der COMMODORE 64 selbst benutzt und die Sie nicht definieren dürfen: ST, Tl und TI$. ST ist die Statusvariable und erhält ihren Wert entsprechend einer zuvor ausgeführten Ein- oder Ausgabe-Operation. ST ändert seinen Wert z.B., wenn ein Problem beim Schreiben oder Lesen von Band und Diskette auftritt.

Tl wird von der internen Uhr jede 1/60 Sekunde hochgezählt. Es hat beim Einschalten des Computers den Wert 0 und kann nur zurückgesetzt werden, wenn TI$ geändert wird.

TI$ ist ein String aus sechs Ziffern, der ständig vom System auf den gültigen Stand gebracht wird. Die beiden ersten Ziffern geben die Stunden an, die beiden mittleren Ziffern die Minuten und die beiden letzten Ziffern die Sekunden. Dieser Variablen kann ein beliebiger Wert zugewiesen werden, der von da an ständig erhöht wird.

Tl$ = “101530” setzt die Uhr auf 10:15 Uhr und 30 Sekunden.

Die Uhr wird beim Ausschalten des Computers gelöscht und beginnt beim Einschalten mit 0.

Operatoren

Die arithmetischen Operatoren werden von folgenden Zeichen gebildet:

+Addition
-Subtraktion
*Multiplikation
/Division
Expotentation (hoch)

Werden in einer Zeile mehrere arithmetische Operatoren verwendet, dann gilt für die Reihenfolge der Berechnung die in der Mathematik übliche “Punkt vor Strich”-Regel. Das heißt, zuerst wird die Exponentiation ausgeführt, dann werden Multiplikationen und Divisionen vor der Addition und Subtraktion berechnet.

Die Reihenfolge der Rechnung kann durch runde Klammern geändert werden, da Operationen in Klammern vor allen anderen ausgeführt werden. Auch das ist das in der Mathematik übliche Verfahren.

Für Vergleiche werden die folgenden Operatoren verwendet:

=gleich
<kleiner als
>größer als
<=kleiner oder gleich
>=größer oder gleich
<>ungleich

Schließlich gibt es noch die logischen Operatoren:

ANDUND (zwei Bedingungen treffen gleichzeitig zu)
ORODER (mindestens eine von zwei Bedingungen trifft zu)
NOTNICHT (die Bedingung trifft nicht zu)

Diese werden gewöhnlich gebraucht um Mehrfachbedingungen in IF … THEN Statements unterbringen. Zum Beispiel:

IF A = B AND C = D THEN 100(beide Vergleiche müssen stimmen)
IF A = B OR C = D THEN 100(mindestens einer der beiden Vergleiche muß stimmen)

Kommandos

CONT (Continue)

Dieses Kommando wird benutzt, um ein Programm fortzusetzen, das durch die STOP-Taste, den Befehl STOP oder den Befehl END im Programm angehalten wurde. Das Programm arbeitet genau an der Stelle weiter, wo es unterbrochen wurde.

CONT geht nicht, wenn Sie vorher Zeilen geändert oder hinzugefügt haben. CONT geht auch nicht,wenn die Programmunterbrechung durch einen Fehler ausgelöst wurde oder Sie zuvor einen Fehler verursachten. In diesen Fällen erhalten Sie die Meldung: CAN’T CONTINUE ERROR.

List

Mit List lassen Sie sich Programmzeilen anzeigen. Sie können sich das ganze Programm oder auch nur bestimmte Zeilen daraus ausgeben lassen.

LISTzeigt das ganze Programm
LIST 10-zeigt das Programm ab Zeile 10 bis zum Ende
LIST 10zeigt nur Zeile 10
LIST -10zeigt das Programm vom Anfang bis Zeile 10
LIST 10-20zeigt die Zeilen 10 bis 20, einschließlich

LOAD

Diesen Befehl benutzen Sie, um ein Programm von Band oder Diskette in den Rechner zu übertragen. Wenn Sie nur LOAD eintippen und die RETURN-Taste drücken, wird das nächste Programm von der Kassette gelesen. Das Kommando kann durch einen Programmnamen in Anführungszeichen ergänzt werden. Dem Namen kann ein Komma und eine Zahl oder numerische Variable folgen, die als Gerätenummer interpretiert wird und die angibt, von welchem Gerät das Programm zu laden ist.

Wird keine Gerätenummer angegeben, nimmt der COMMODORE 64 Gerät #1 an, die Kassetteneinheit. Das andere, gewöhnlich mit dem LOAD-Kommando angegebene Gerät ist das Diskettenlaufwerk, Gerät #8.

LOADliest das nächste Programm von der Kassette
LOAD "HALLO"sucht auf der Kassette das Programm HALLO und lädt es, wenn es gefunden wurde
LOAD A$sucht das Programm, dessen Namen in der Variablen A$ abgelegt ist
LOAD "HALLO",8sucht das Programm mit dem Namen HALLO auf der Diskette
LOAD "*",8sucht das erste Programm auf der Diskette

NEW

Dieses Kommando löscht das Programm im Speicher des Rechners. Alle eventuell benutzten Variablen sind danach ebenfalls gelöscht. Wenn das Programm nicht durch SAVE gespeichert wurde, ist es verloren.

Gebrauchen Sie diesen Befehl mit Vorsicht.

Sie können NEW auch in einem Programm verwenden, wenn Sie möchten, daß der Computer nach Ausführung dieses Programms wieder frei für neue Programme ist.

RUN

Dieses Kommando startet die Ausführung eines Programms, wenn es in den Speicher des Computers geladen wurde. RUN ohne Angabe einer Zeilennummer beginnt die Ausführung in der Zeile mit der niedrigsten Nummer. Wird nach RUN eine Nummer angegeben, startet das Programm in der bezeichneten Zeile.

RUNstartet das Programm bei der niedrigsten Zeilennummer
RUN 100startet das Programm in Zeile 100
RUN XUNDEFINED STATEMENT ERROR. Die Zeilennummer muß existieren und explizit angegeben werden. Variablen sind nicht erlaubt.

SAVE

Dieses Kommando überträgt das Programm aus dem Rechner auf Band oder Diskette. Wenn Sie nur SAVE eintippen und RETURN drücken, wird das Programm auf Band gespeichert. Der Computer kann nicht feststellen, ob sich an dieser Stelle des Bandes bereits ein Programm befindet. Seien Sie also vorsichtig mit Ihren Bändern, Sie könnten sonst ein wertvolles Programm zerstören.

Lassen Sie nach SAVE einen Namen in Anführungszeichen folgen oder eine Stringvariable, dann wird das Programm diesen Namen erhalten und kann so in Zukunft leichter lokalisiert und wiedergefunden werden. Dem Namen kann zusätzlich noch eine Gerätenummer folgen.

Nach der Gerätenummer kann, durch ein Komma getrennt, eine zweite Zahl folgen und zwar eine 0 oder eine 1. Ist diese zweite Nummer eine 1, dann wird der COMMODORE 64 eine Marke für Band-Ende hinter Ihr Programm schreiben. Das signalisiert dem Computer, daß nach einem LOAD nur bis zu dieser Stelle gesucht werden soll. Wenn Sie LOAD befehlen und der Computer entdeckt dieses Zeichen, bevor das gewünschte Programm gefunden wurde, meldet er einen FILE NOT FOUND ERROR.

SAVEspeichert das Programm ohne Namen auf Band
SAVE "HALLO"speichert das Programm unter dem Namen HALLO auf Band
SAVE A$speichert das Programm auf Band mit dem Namen, der in A$ festgelegt ist
SAVE "HALLO",8speichert das Programm unter dem Namen HALLO auf Diskette
SAVE "HALLO",1,1speichert das Programm unter dem Namen HALLO auf Kassette und setzt dahinter eine Marke für BAND-ENDE

VERIFY

Durch VERIFY wird der Computer veranlaßt, das Programm in seinem Speicher mit einem Programm auf Band oder Diskette zu vergleichen. Dies stellt sicher, daß das Programm bei SAVE korrekt weggespeichert wurde und währenddessen kein Fehler auf dem Band oder der Diskette auftrat. VERIFY ohne weitere Angabe läßt den COMMODORE 64 mit dem nächsten Programm auf dem Band vergleichen, unabhängig von dessen Namen.

VERIFY gefolgt von einem Programmnamen oder einer Stringvariablen sucht dieses Programm und prüft es dann. Zusätzlich kann eine Gerätenummer angegeben werden.

VERIFYprüft das nächste Proframm auf Kassette
VERIFY "HALLO"sucht das Programm HALLO und vergleicht mit dem Programm im Speicher
VERIFY "HALLO",8sucht auf der Diskette und prüft dann

Befehle

Close

Dieser Befehl vervollständigt Files, die mit OPEN geöffnet wurden und schließt sie wieder. Die Zahl nach CLOSE ist die Nummer des Files, das geschlossen werden soll.

CLOSE 2Nur File #2 wird geschlossen

CLR

Dieser Befehl löscht alle Variablen im Speicher, läßt aber das Programm selbst intakt. CLR wird automatisch ausgeführt, wenn RUN befohlen wird.

CMD

CMD sendet Ausgaben, die normalerweise auf den Bildschirm gehen würden (z. B. PRINT oder LIST, aber nicht POKE auf den Bildschirm), stattdessen an ein anderes Gerät. Das kann ein Drucker sein oder ein Datenfile auf Band oder Diskette. Das Gerät oder File muß zuvor mit OPEN geöffnet werden. Dem Befehl CMD muß eine Zahl oder numerische Variable folgen, die sich auf die Filenummer bezieht.

OPEN 1,4öffnet Gerät #4, den Drucker
CMD 1jede normale Ausgabe soll an den Drucker gehen
LISTdas Programmlisting wird nun nicht auf dem Bildschirm, sondern auf dem Drucker ausgegeben

Um die Ausgabe wieder auf den Bildschirm zu schicken, beenden Sie den CMD 1 Befehl mit PRINT #1 und schließen Sie das File mit CLOSE 1.

DATA

Dieser Aussage folgt eine Liste von Angaben, die durch READ genutzt werden sollen. Die Angaben können von numerischem Typ sein oder Textstrings. Sie werden untereinander durch Kommata getrennt. Strings brauchen nicht in Anführungszeichen zu stehen, es sei denn, sie enthalten Leerstellen, Doppelpunkt oder Komma. Steht einmal nichts zwischen zwei Kommata, dann wird der Wert numerisch als 0 gelesen oder als leerer String.

HTML

DEF FN

Eine komplexe Rechnung kann als Funktion mit einem kurzen Namen definiert werden. Im Falle einer sehr umfangreichen Formel, die häufig benötigt wird, kann damit viel Platz und Zeit eingespart werden. Der Funktionsname ist FN, erweitert um jeden zulässigen Variablennamen (1 oder 2 Zeichen). Die Funktion wird definiert durch das Statement DEF, dem der Funktionsname folgt. Nach dem Namen wird in Klammern ein numerische Variable angegeben. Danach kommt ein Gleichheitszeichen und dann die aktuelle Formel, mit der Variablen am richtigen Platz. Die Funktion kann nun aufgerufen werden, indem für die Variable jeder beliebige Wert oder eine andere Variable eingesetzt wird.

HTML

Für dieses Beispiel wird das Ergebnis 137 sein.

DIM (Dimensionieren eines Feldes)

Wenn ein Array mehr als 11 Elemente enthalten soll, muß dafür ein DIM Befehl ausgeführt werden. Behalten Sie im Auge, daß das ganze Array Platz im Speicher belegt. Erzeugen Sie also kein Array, das wesentlich größer ist, als Sie unbedingt benötigen.

Um zu ermitteln, wieviele Variablen ein Array enthält, multiplizieren Sie die Größe aller Dimensionen eines Arrays miteinander.

Sie können mehr als ein Array in einem DIM Statement erklären. Dimensionieren Sie ein Array aber nicht mehr als einmal.

END

Wenn ein Programm ein END entdeckt, hält es an, als ob es ans Ende der letzten Zeile gekommen wäre. Mit CONT können Sie es wieder starten.

FOR … TO … STEP

Zusammen mit dem Befehl NEXT sorgt dieses Statement dafür, daß ein Programmabschnitt mehrmals durchlaufen wird (Die Anzahl der Durchläufe kann angegeben werden). Das Format dieses Befehls ist:

FOR (Variablenname) = (Zähleranfang) TO (Zählerende) STEP (Schrittweite)

Während des Programmlaufs wird zur Laufvariable der als Schrittweite gegebene Wert addiert oder subtrahiert. Wird kein STEP angegeben, bedeutet dies Schrittweite = 1. Zähleranfang und Zählerende stellen die Grenzwerte für die Laufvariable dar.

HTML

Die Schrittweite kann auch negativ angegeben werden.

GET

Mit GET können Daten von der Tastatur übernommen werden, und zwar jedes Mal ein einzelnes Zeichen. Wenn GET ausgeführt wird, wird das eingetippte Zeichen der Variablen zugeordnet. War kein Zeichen eingetippt, wird ein leeres Zeichen oder Null zugeordnet.

Nach GET steht ein Variablenname, gewöhnlich eine Stringvariable. Wird eine numerische Variable benutzt, und eine nicht numerische Taste gedrückt, hält das Programm mit einer Fehlermeldung an.

Der GET Befehl sollte in einer Schleife formuliert werden, die ein leeres Resultat abprüft. Die unten stehende Schleife wartet, bis irgendeine Taste gedrückt wird:

HTML

GET#

GET# wird benutzt mit einem vorher durch OPEN geöffneten File oder Gerät, um von diesem ein Zeichen einzulesen.

HTML

liest ein Zeichen aus einem Datenfile.

GOSUB

Dieser Befehl wirkt ähnlich wie GOTO, der Computer merkt sich aber, an welcher Stelle des Programms er den Befehl GOSUB erhalten hat. Erreicht das Programm den Befehl RETURN, springt es an die Stelle direkt hinter dem GOSUB zurück. Dies ist besonders nützlich, wenn ein Programmteil häufiger benutzt werden kann. Man muß diese Programmzeilen nicht mehrfach eintippen, sondern kann sie durch GOSUB bei Bedarf “aufrufen”.

HTML

GOTO oder GO TO

Das Programm springt in die nach GOTO angegebene Zeile und fährt dort mit der Arbeit fort. Kommt die nach GOTO angegebene Zeilennummer nicht im Programm vor, stoppt das Programm mit einer Fehlermeldung.

IF … THEN

IF … THEN läßt den Computer die vorliegende Situation analysieren. Er entscheidet sich dann für eine von zwei Möglichkeiten. je nach Resultat der Analyse. Ist die Bedingung nach IF erfüllt (wahr), dann wird der Teil nach THEN ausgeführt. Das kann jedes beliebige Basic Statement sein. Ist die Bedingung nicht erfüllt, geht das Programm zur nächsten Zeile über. Die Bedingung kann eine Variable oder eine Formel sein. Sie gilt als wahr, wenn das Ergebnis der Berechnung nicht Null ist, anderenfalls gilt sie als nicht erfüllt (falsch). In den meisten Fällen steht als Bedingung ein Ausdruck, der einen der logischen Operatoren (=, <, >, <=, =>, <>, AND, OR, NOT) enthält:

HTML

INPUT

Mit dem INPUT Befehl kann sich das Programm Daten vom Benutzer übergeben lassen und sie einer Variablen zuordnen. Das Programm hält an, gibt ein Fragezeichen auf dem Bildschirm aus und wartet, bis der Benutzer eine Antwort eingetippt und die RETURN-Taste gedrückt hat. Nach INPUT steht ein Variablenname oder eine Liste von Variablen, die durch Kommata getrennt sind. Zwischen INPUT und den Variablen kann in Anführungszeichen eine Botschaft an den Benutzer vorgegeben werden. Werden Eingaben für mehrere Variablen gemacht, müssen diese durch Kommata getrennt eingetippt werden.

HTML

INPUT#

INPUT# ist ähnlich wie INPUT, übernimmt die Daten aber von einem vorher mit OPEN geöffneten File.

LET

LET leitet eine Zuweisung ein, wird aber kaum jemals in Programmen benutzt, da seine Angabe wahlfrei ist. Der Variablenname, dem das Ergebnis einer Rechnung zugewiesen werden soll, steht links vom Gleichheitszeichen, die Formel steht rechts.

HTML

NEXT

NEXT wird immer in Verbindung mit FOR… TO benutzt. Erreicht das Programm den Befehl NEXT, überprüft es die Laufvariable, um zu sehen, ob die vorgeschriebene Grenze schon erreicht ist. Ist die Schleife noch nicht zu Ende, wird der nach STEP angegebene Wert zum Zähler hinzuaddiert. Ist die Grenze bereits erreicht, fährt das Programm mit dem auf NEXT folgenden Befehl fort.

Nach NEXT darf ein Variablenname oder eine Liste von Variablen, durch Kommata getrennt, stehen. Es muß immer die innerste Schleife zuerst abgearbeitet werden.

HTML

ON

Dieser Befehl macht aus den Kommandos GOTO und GOSUB spezielle Versionen des IF Befehls. Auf ON folgt eine numerische Variable oder eine Formel, die errechnet wird. Ist das Resultat der Rechnung 1, wird die erste Zeile der Liste ausgeführt. Ist das Resultat 2, wird die zweite Zeile ausgeführt usw. Ist das Resultat 0 oder größer als die angeführte Liste von Zeilennummern, wird der Befehl nach ON bearbeitet.

HTML

OPEN

Mit dem OPEN Befehl kann der COMMODORE 64 Daten mit Geräten wie dem Kassettenrecorder oder Diskettenlaufwerk, einem Drucker oder sogar dem Bildschirm austauschen. Auf das Schlüsselwort OPEN folgt eine Nummer (0-255), die logische Filenummer, auf die sich alle nachfolgenden Befehle beziehen. Gewöhnlich folgt der ersten Nummer eine zweite, die Gerätenummer.

Die Gerätenummern sind:

0Tastatur
1Kassette
3Bildschirm
4Drucker (oder 5)
8Disk (oder 9-15)

Der Gerätenummer folgt häufig, ebenfalls durch Komma getrennt, eine dritte Zahl, die Sekundäradresse. Im Falle der Kassette ist dies eine 0 für Lesen, eine 1 für Schreiben und eine 2 für Schreiben mit Markierung für Bandende.

Im Falle der Disk bezieht sich die Sekundäradresse auf die Puffer- oder Kanalnummer. Beim Drucker kontrolliert sie Zusatzeinrichtungen wie etwa formatierten Druck. Weitere Einzelheiten finden Sie im COMMODORE 64 Programmierhandbuch.

OPEN 1,0öffnet die Tastatur als Gerät
OPEN 2,1,8,"D"öffnet die Kassette zum Lesen, das gesuchte File ist D
OPEN 3,4öffnet den Drucker
OPEN 4,8,15öffnet den Befehlskanal auf der Disk

Siehe auch: CLOSE, CMD, GET#, INPUT# und PRINT#, Systemvariable ST und Anhang B.

POKE

POKE wird immer von zwei Zahlen oder Formeln gefolgt. Die erste Angabe ist die Adresse eines Speicherplatzes. Die zweite Angabe ist ein Wert zwischen 0 und 255, der in die entsprechende Speicherstelle geschrieben wird und der den bisher dort stehenden Wert ersetzt.

HTML

PRINT

PRINT ist wohl der erste Befehl, den ein Neuling zu gebrauchen lernt. Einige Variationen sollten dabei beachtet werden. Nach PRINT können stehen:

  • Textstrings in Anführungszeichen
  • Variablennamen
  • Funktionen
  • Satzzeichen

Satzzeichen dienen der Formatierung der Daten auf dem Bildschirm. Das Komma unterteilt den Bildschirm in vier Spalten, wogegen das Semikolon jeden Zwischenraum unterdrückt. Jedes der beiden Zeichen kann als letztes Symbol in einer Zeile vorkommen. Dies bewirkt, daß das nächste mit PRINT ausgegebene Zeichen so behandelt wird, als sei es eine Fortsetzung des ursprünglichen PRINT Befehls.

HTML

Siehe auch die Funktionen POS, SPC und TAB.

PRINT#

Zwischen diesem Befehl und PRINT bestehen einige Unterschiede. Auf PRINT# folgt eine Zahl, die sich auf ein vorher mit OPEN geöffnetes Gerät oder Datenfile bezieht. Nach dieser Zahl steht ein Komma und dann die Liste dessen, was auszugeben ist. Das Komma und das Semikolon haben den selben Effekt wie bei PRINT. Beachten Sie, daß einige Geräte nichts mit TAB oder SPC anfangen können.

Vorsicht: PRINT# darf nicht durch ?# abgekürzt werden!

HTML

READ

READ wird benutzt, um Informationen aus DATA Zeilen auf Variablen zu übertragen, damit diese verarbeitet werden können. Sie müssen darauf achten, daß kein String gelesen wird, wenn READ einen numerischen Wert erwartet. Dies würde einen TYPE MISMATCH ERROR ergeben.

REM (Remark, Bemerkung)

Nach REM steht eine Bemerkung für irgend jemanden, der das Programmlisting lesen wird. Sie könnte zum Beispiel einen Programmabschnitt erklären oder zusätzliche Informationen beinhalten. Hinter REM kann ein beliebiger Text stehen. Es hat auf ein Programm keinerlei Wirkung, außer daß es dieses länger macht.

RESTORE

RESTORE setzt den Zeiger auf das nächste aus einer DATA Zeile zu lesende Element auf den Anfang zurück. Diese Informationen können so mehrfach gelesen werden.

RETURN

Dieser Befehl schließt ein Unterprogramm ab. Wenn das Programm ein RETURN entdeckt, springt es zu dem unmittelbar auf GOSUB folgenden Befehl zurück. Wurde zuvor kein GOSUB befohlen, erhalten Sie einen RETURN WITHOUT GOSUB ERROR.

STOP

Dieser Befehl hält ein Programm an. Die Meldung BREAK IN xxx wird angezeigt, wobei xxx die Zeilennummer ist, in der STOP steht. Das Programm kann nach Eingabe von CONT weiter arbeiten. STOP wird gewöhnlich beim Debugging, der Suche nach Programmierfehlern, gebraucht.

SYS

Auf SYS folgt eine Zahl oder ein numerischer Ausdruck im Bereich 0-65535. Das Programm startet dann ein Programm in Maschinensprache, das bei dieser Speicheradresse beginnt. SYS ist ähnlich dem USR, läßt aber keine Übergabe von Parametern zu.

WAIT

WAIT wird benutzt, um ein Programm solange anzuhalten, bis eine bestimmte Speicheradresse einen bestimmten Wert angenommen hat.

Auf WAIT folgt eine Speicheradresse (X) und bis zu zwei Variablen. Das Format ist:

HTML

Der Inhalt der angegebenen Adresse wird zuerst EXCLUSIV OR verknüpft mit dem dritten Wert Z (falls dieser angegeben ist), und dann wird mit dem zweiten Wert ein logisches AND ausgeführt. Ist das Resultat 0, prüft das Programm den Inhalt dieser Adresse erneut. Ist das Ergebnis nicht Null, arbeitet das Programm mit dem nächsten Statement weiter.

Numerische Funktionen

ABS(X) (absoluter Wert)

ABS ergibt den absoluten Wert einer Zahl ohne deren Vorzeichen (+ oder – ). Die Antwort ist immer positiv oder 0.

ATN(X) (Arcustangens)

Ergibt den Winkel (im Bogenmaß), dessen Tangens X ist.

COS(X) (Cosinus)

Ergibt den Cosinus des Winkels X. Der Winkel ist im Bogenmaß anzugeben.

EXP(X)

Ergibt die X-te Potenz der mathematischen Konstanten e (2.71827183).

FNxx(X)

Ergibt das Resultat einer benutzer-definierten Funktion FNxx, die in einem DEFFN Statement festgelegt wurde.

INT(X)

Ergibt den Vorkommateil von X. Alle Stellen nach dem Dezimalpunkt werden abgeschnitten. Das Ergebnis ist immer kleiner oder gleich X. Das bedeutet, daß negative Zahlen dem Betrag nach größer werden.
(INT( – 2.1) = – 3)

LOG(X)

Ergibt den natürlichen Logarithmus von X zur Basis e (siehe EXP(X)). Zur Umwandlung in den Zehnerlogarithmus wird durch LOG(10) dividiert.

PEEK(X)

Ergibt den Inhalt der Speicheradresse X, mit X im Bereich 0-65535. Das Ergebnis ist eine ganze Zahl im Bereich 0-255. PEEK wird oft im Zusammenhang mit POKE gebraucht.

RND(X) (random number, Zufallszahl)

RND(X) ergibt eine Zufallszahl zwischen 0 und 1. Die erste Zufallszahl sollte durch die Formel RND( – Tl) erzeugt werden, damit sie bei jedem Programmlauf eine neue Startzahl bekommen. Später sollte X = 0 oder eine positive Zahl sein.

Ein negativer Parameter X bildet eine neue Startzahl für den Zufallszahlen-Generator. Dieselbe negative Zahl wird immer dieselbe Folge von “Zufallszahlen” ergeben, falls diese mit RND(1) gebildet wird. RND(0) liefert stets neue Folgen.

Eine Zufallszahl zwischen X und Y erhält man nach der Formel:

HTML

wobei X die untere Grenze Y die Obergrenze der gewünschten Zahlenbereiche ist.

SGN(X) (Signum, Vorzeichen)

Mit dieser Funktion ermittelt man das Vorzeichen von X. Das Ergebnis ist 1, wenn X positiv ist, 0, wenn X=0 und – 1, wenn X negativ ist.

SIN(X) (Sinus)

Ergibt den Sinus des Winkels X. Der Winkel ist im Bogenmaß anzugeben.

SQR(X) (Quadratwurzel)

Ergibt die Quadratwurzel von X, für X größer oder gleich 0. Bei negativem X erhält man die Fehlermeldung ILLEGAL QUANTITY ERROR.

TAN(X) (Tangens)

Das Ergebnis ist der Tangens des Winkels X, mit X im Bogenmaß.

USR(X)

Wenn die Funktion USR benutzt wird, springt das Programm in ein Maschinenprogramm, dessen Startadresse in den Speicherstellen 785 und 786 abgelegt ist. Der Parameter X wird an das Maschinenprogramm übergeben, das selbst einen anderen Wert an das BASIC-Programm zurückgibt. Weitere Einzelheiten zu dieser Funktion und zur Programmierung in Maschinensprache finden Sie im COMMODORE 64 Programmierhandbuch.

String Funktionen

ASC(X$)

Ergibt den ASCII-Code des ersten Zeichens von X$.

CHR$(X)

Dies ist die Umkehrfunktion zu ASC(X$) und ergibt das Zeichen, dessen ASCII-Code X ist.

LEFT$(X$,X)

Ergibt einen Teilstring, der die linken X Zeichen von X$ enthält.

LEN(X$)

Ergibt die Anzahl Zeichen (einschließlich Leerzeichen und anderer Symbole) in X$.

MID$(X$,S,X)

Ergibt einen String, der X Zeichen von X$ enthält, beginnend mit dem Sten Zeichen.

RIGHT$(X$, X)

Ergibt die rechten X Zeichen von X$.

STR$(X)

Ergibt einen String, der mit der durch PRINT ausgegebenen Version von X identisch ist.

VAL(X$)

Diese Funktion wandelt X$ in eine Zahl um und ist im Wesentlichen die Umkehrfunktion von STR$(X). Der String wird vom ersten linken Zeichen an nach rechts untersucht bis das erste Zeichen gefunden wird, das nicht mehr in ein Zahlenformat paßt. Die so ermittelte Zeichenfolge wird in eine Zahl umgewandelt.

X = VAL ("123.456")X = 123.456
X = VAL ("12A13B")X = 12
X = VAL ("RIU017")X = 0
X = VAL ("– 1.23.15.67")X = –1.23

Andere Funktionen

FRE(X)

Diese Funktion ergibt die Anzahl freier Bytes im Speicher, unabhängig vom Wert von X.

POS(X)

Diese Funktion ergibt die Position in der Bildschirm-Zeile (0-39) an der das nächste PRINT Statement ausgeführt würde. X kann jeden Wert annehmen und wird nicht benutzt.

SPC(X)

Diese Funktion wird in PRINT Befehlen benutzt, um X Zeichen zu überspringen.

TAB(X)

TAB wird ebenfalls mit PRINT benutzt. Das nächste Zeichen wird in Spalte X gedruckt. (Wird vom Drucker wie SPC(X) behandelt.)