BBC BASIC --------- Die erste Version von BBC BASIC wurde fr die frhen British Broadcasting Mikrocomputer der Firma Acorn entwickelt und existiert bis heute in fnf Versionen. Die auf dem Notepad verfgbare Version entspricht so weit als m”glich der Acorn BBC BASIC Version IV. Einschr„nkungen betreffen vor allem die Sound-M”glichkeiten und die Bildschirmausgabe, da lediglich 480 x 64 Pixel zur Verfgung stehen und nur zwei "Farben" dargestellt werden k”nnen. Reset des Notepad ----------------- Man unterscheidet zwischen weichem und hartem Reset die Folgen eines harten Reset sind weitreichend, da in diesem Fall alle im internen RAM gespeicherten Daten und Dokumente verlorengehen. 1.) Weicher Reset: Notepad Ausschalten und wieder Einschalten. 2.) Weicher Reset: Funktions- und Stoptaste gedrckt halten und Rechner einschalten. 3.) Harter Reset: Funktions-, Stop- und L”schtaste gleichzeitig gedrckt halten, und Rechner wieder einschalten. 4.) Harter Reset: Alle Batterien (auch die Lithiumzelle) aus dem Ger„t entfernen und einschalten. Selbsttest des Notepad ---------------------- Funktions- und Symboltaste gleichzeitig gedrckt halten und Notepad einschalten. Benutzung der Textverarbeitung zur BASIC-Programmierung ------------------------------------------------------- Das Notepad stellt zum editieren von BASIC-Programmen nur einen Zeileneditor zur Verfgung, welcher mit EDIT Zeilennummer aufgerufen wird. Der im Notepad vorhandene Ganzseiteneditor l„st sich jedoch zur Programmierung nutzen. Dazu sollte jedoch die Funktion automatischer Zeilenumbruch abgeschaltet werden. Ein im Speicher vorhandenes Programm l„st sich mit folgenden Befehlen als ASCII-Text abspeichern und anschlieáend in die Textverarbeitung laden: >*SPOOL"FILENAME.EXT" >LIST >*SPOOL Nach dem Editieren l„st sich der Text in BASIC mit folgendem Befehl wieder einladen: >*EXEC"FILENAME.EXT" Die Autostart-Funktion von BASIC -------------------------------- Wenn Sie ein Programm "AUTO" nennen wird es beim Starten von BASIC automatisch geladen und gestartet. - 1 - Die BASIC Variablen ------------------- BBC BASIC unterscheidet folgende Variablentypen: Variable Flieákomma Variablen Variable% Ganzzahlige Variablen (Integer) Variable$ Zeichenketten Variable Die Variablennahmen unterliegen den folgenden Regeln: - Der Name muá mit einem alphabetischen Zeichen beginnen - Groá- und Kleinbuchstaben sowie Zahlen sind zul„ssig - Die erste Komponente darf kein BASIC Schlsselwort sein - Leerzeichen sind nicht zul„ssig der Unterstrich (_) kann jedoch verwendet werden. Die 27 integer Variablen A% bis Z% und @% werden von BBC BASIC als residente Variablen benutzt. Das heiát sie werden nur beim Start von BBC BASIC auf "0" gesetzt und durch die Befehle CLEAR und NEW nicht gel”scht, sie k”nnen daher Werte an ein anderes Programm (auch Maschienenprogramm, siehe unter "Der Z80 Assembler" weiter unten) bergeben. Arithmetische Operationen ------------------------- Operationen mit zwei Argumenten. Die Syntax ist Zahl OP Zahl, wobei OP einer der folgenden Operationen sein kann: + Addition - Subtraktion * Multiplikation / Division ^ Potenzierung Zahl hoch Zahl DIV Ganzzahlergebnis einer Division MOD Rest einer Division Operationen mit einem Argument: ABS(Zahl) Absolutwert von Zahl (immer positiv) ACS(Zahl) Arcuscosinus von Zahl ASN(Zahl) Arcussinus von Zahl ATN(Zahl) Arcustangens von Zahl COS(Zahl) Cosinus von Zahl DEG(Zahl) Bogenmaá in Winkelgrade EXP(Zahl) Basis e hoch Zahl (e=2,71828183) INT(Zahl) Ganzzahliger Wert von Zahl LN(Zahl) Natrlicher Logarithmus (Basis e) von Zahl LOG(Zahl) Dekadischer Logarithmus (Basis 10) von Zahl NOT(Zahl) Einerkomplement von Zahl (bitweises invertieren) RAD(Zahl) Winkelgrade nach Bogenmaá RND(Zahl) Pseudozufallszahl zwischen 1 und Zahl SGN(Zahl) TRUE wenn Zahl < 0 und FALSE wenn Zahl => 0 SIN(Zahl) Sinus von Zahl SQR(Zahl) Quadratwurzel von Zahl TAN(Zahl) Tangens von Zahl - 2 - Vergleichs Operationen ---------------------- Diese Operationen dienen dem Vergleich von zwei Ausdrcken, sie liefern den Wert TRUE (-1), wenn die Bedingung erfllt ist und den Wert FALSE (0), wenn nicht: = gleich <> ungleich > gr”áer => gleich oder gr”áer < kleiner <= kleiner oder gleich Logische Operatoren ------------------- Die logischen Operatoren erzeugen ein Resultat, das von den einzelnen Bits der beiden ganzzahligen Operanden abh„ngt. Die Syntax ist Zahl OP Zahl: AND UND-Verknpfung EOR Exklusiv-ODER-Verknpfung OR ODER-Verknpfung Bugs (Fehler) in BASIC ---------------------- - Wenn Sie den Befehl INKEY in einer Schleife benutzen unterbricht BASIC manchmal die Programmausfhrung und wartet auf Bet„tigung einer Taste. - Manchmal wird beim Zeileneditieren eine Zeile mit jedem Tastendruck wieder und wieder ausgegeben. beenden Sie dieses durch drcken der Return-Taste. - Manchmal bleiben beim Scrollen des Textfensters Zeichen in der untersten Zeile. Ein CLS-Befehl l”scht diese. In der Version 3.11 des Autors sind diese Fehler jedoch noch nie in Erscheinung getreten. - 3 - Der Speicherbereich in BASIC ---------------------------- Vier Pseudo-Variablen beinhalten Speicheradressen und geben dem Programmierer eine M”glichkeit abzufragen wie der Speicherbereich durch den BASIC-Interpreter eingeteilt wurde: - PAGE und TOP beinhalten Anfang und Ende des BASIC-Programms. - HIMEM beinhaltet das Ende des fr BASIC zur Verfgung stehenden Speichers. - LOMEM beinhaltet den Anfang des Variablenspeicherbereichs. Das folgende Bild zeigt beispielhaft die BASIC-Speicheraufteilung mit einem Programm von 4096 KByte (genau 4 KByte) Gr”áe: +----------------------+----------------------+ &FFFF | 16 KByte ROM | 4 KByte Bildschirm | | BASIC-Interpreter +----------------------+ &F000 | | | | | | +----------------------+ &C000 | Betriebssystem-Stack | | und Speicher | +----------------------+ &A000 = HIMEM | 8 KByte RAM | | frei fr User Progr. | +----------------------+ &8000 | 16 KByte RAM | | frei fr User Progr. | | | | | +----------------------+ &4000 | frei fr User Progr. | +----------------------+ Ende des Variablen Speicher | Variablen Speicher | +----------------------+ &2300 = TOP und LOMEM | 4 KByte User Progr. | +----------------------+ &1300 = PAGE | BASIC-Stack/Speicher | +----------------------+ &0000 >PRINT TOP-PAGE (ergibt die L„nge des Anwenderprogramms) 4096 >PRINT HIMEM-LOMEM (zeigt wieviel Speicher noch frei ist) 32000 Wenn Sie BBC BASIC aufrufen, werden bis zu 40 KByte RAM Speicherplatz fr ein Anwenderprogramm, Variablen und den Stack zugewiesen. Falls weniger Speicherplatz zur Verfgung steht, wird der Wert fr den PAGE-Bereich entsprechend erh”ht. Mindestens zwei KByte werden in jedem Fall fr neu zu erstellende Dateien freigehalten. Die Variable TOP wird ausschlieálich durch den Computer berechnet, die Variablen PAGE, HIMEM und LOMEM k”nnen auch durch den Anwender bestimmt werden: >HIMEM=HIMEM-100 Beachten Sie bitte, daá der HIMEM-Bereich nicht ber seinen Ausgangswert hinaus erweitert bzw. der Wert fr den unteren PAGE- Bereich nicht unterhalb des Ausgangswerts angesetzt werden darf. Sonst wird der Rechner h”chstwahrscheinlich "abstrzen". - 4 - Der Z80-Assembler ----------------- Das Notepad basiert auf einem Z80-Prozessor, infolgedessen erkennt der im Notepad eingebaute Assembler den Z80-Assemblercode! Ein Assembler- programm wird mit Zeilennummern und den blichen Z80-Memonics einfach zwischen eckigen Klammern in das BASIC-Programm eingefgt. Bevor das Maschienenprogramm aufgerufen werden kann muá es zun„chst in zwei Schritten assembliert werden. Der OPT Befehl folgt als erster Befehl innerhalb der eckigen Klammern und steuert die Ausgabe von Fehlern und des Listings w„hrend des assemblierens. Die Startadresse fr das Maschienenprogramm wird in der Systemvariablen P% (Programm-Counter) bergeben. Die Output-Addresse fr das Maschienenprogramm kann in der Systemvariablen O% bergeben werden. Dadurch kann erreicht werden, daá ein Maschienenprogramm fr den Speicherbereich ab der Adresse in P% berechnet wird jedoch ab der Adresse in O% abgespeichert wird. Diese M”glichkeit wird lediglich zur Programmentwicklung fr Speicherkarten ben”tigt und sollte von einem "normalen" Anwender kaum ben”tigt werden. Der Parameter fr den OPT-Befehl liegt im Bereich von 0 bis 7 und hat folgende Bedeutungen: 0 Fehler unterdrcken, kein Listing, Output=Startadresse=P% 1 Fehler unterdrcken, Listing ausgeben, Output=Startadresse=P% 2 Fehler ausgeben, kein Listing, Output=Startadresse=P% 3 Fehler und Listing ausgeben, Output=Startadresse=P% 4 Fehler unterdrcken, kein Listing, Output=O%, Startadresse=P% 5 Fehler unterd., Listing ausg., Output=O%, Startadresse=P% 6 Fehler ausgeben, kein Listing, Output=O%, Startadresse=P% 7 Fehler und Listing ausgeben, Output=O%, Startadresse=P% Im ersten Assemblerdurchlauf berechnet der Interpreter alle Sprungmarken und tr„gt die Sprungadressen im zweiten Durchlauf in das Maschienenprogramm ein. Ein Maschienenprogramm l„st sich nach fehlerfreiem assemblieren mit folgenden BASIC-Befehlen aufrufen: Variable=USR(Adresse) Dieser Befehl ruft ein Maschienenprogamm an der Speicheradresse auf und die Variable liefert einen 32-Bit-Wert der Register HL = MSB (16 Bit) und HL'= LSB (16 Bit)zurck. CALL Adresse Dieser Befehl ruft ein Maschienenprogamm an der Speicheradresse auf. Die reservierten Integervariablen A%, B% usw. bergeben einen 8-Bit- Wert an die Prozessorregister A, B usw. A% = Accumulator B% = B-Register C% = C-Register D% = D-Register E% = E-Register F% = Flag-Register H% = H-Register L% = L-Register P% = Programm-Counter - 5 - Innerhalb des Assemblerprogramms k”nnen drei Befehle verwendet werden um Speicherplatz zu reservieren: DEFB Byte Der Befehl DEFB reserviert Speicher fr ein Byte. DEFW Wort Der Befehl DEFW reserviert Speicher fr ein Zwei-Byte-Wort. DEFM Zeichnkette Der Befehl DEFM reserviert Speicher fr eine beliebig lange Zeichenkette. Beispiele: 110 DEFB byte 120 DEFB ASC("A") 100 DEFB &5A 130 DEFW Z% 140 DEFW &5A4B 150 DEFM name$ 160 DEFM "Dies ist ein Test" Im folgenden als Beispiel ein kleines Maschienenprogamm welches in einer dimensionierten Integervariablen (Memory%) gespeichert wird und den ACK- und Busy-Status des Drucker-Port (Port &A0) liest. Das Programm soll hier nur als Beispiel dienen denn mit dem BASIC-Befehl PRINT ~GET(&A0) erreicht man das gleiche: 10 DIM Memory%100 :REM 100 Byte fr das Assemblerprogamm. 20 FOR C=1 TO 3 STEP 2 :REM Abarbeitung in zwei Schritten. 30 P%=Memory% :REM Programm Counter auf den Start. 40 [ ;Hier startet Assemblercode. 50 OPT C ;Fehler beim assemblieren unterdrcken. 60 .START ;Eine Sprungmarke beginnt mit "." 70 JP ENTRY1 ;Eine Sprungmarke aufrufen ohne "." 80 .PRTIN:DEFB 00 ;Speicherplatz reservieren. 90 .ENTRY1:IN A,(&A0) ;Durch ":" zwei Befehle in einer Zeile! 100 LD (PRTIN),A ;Wert speichern. 110 RET ;Assemblerprogramm muá mit RET enden! 120 ] :REM Hier endet das Assemblerprogramm. 130 NEXT C :REM Programm assembliert? 140 CALL START :REM Erst dann aufrufen. 150 M=PRTIN:PRINT ~?M :REM Ergebnis anzeigen. Soll kein Listing ausgegeben werden so ver„ndern Sie Zeile 20 in: 20 FOR C=0 TO 2 STEP 2 - 6 - BASIC-Schlsselw”rter --------------------- Im folgenden finden Sie eine Liste aller von Ihrem Notepad untersttzten BBC BASIC-Befehle in alphabetischer Reihenfolge: ABS Variable=ABS(Zahl) Mit diesem Befehl bergeben Sie den absoluten Wert der angegebenen Zahl an eine Variable. Negative Zahlen werden in positive konvertiert. Positive Zahlen werden von diesem Befehl nicht tangiert. ACS Variable=ACS(Zahl) Mit diesem Befehl bergeben Sie den Arcuscosinus der angegebenen Zahl an eine Variable. Das Ergebnis, das im Bogenmaá angegeben wird, kann mit dem Befehl DEG konvertiert werden. AND Variable Zahl AND Zahl Mit diesem Befehl bergeben Sie die logische bitweise UND-Verknpfung an eine Variable. ASC Variable=ASC(Zeichenfolge) Mit diesem Befehl bergeben Sie den ASCII-Wert des ersten Zeichens der angegebenen Zeichenfolge an eine Variable. ASN Variable=ASN(Zahl) Mit diesem Befehl bergeben Sie den Arcussinus der angegebenen Zahl an eine Variable. Das Ergebnis wird im Bogenmaá angegeben. ATN Variable=ATN(Zahl) Mit diesem Befehl bergeben Sie den Arcustangens der angegebenen Zahl an eine Variable. Das Ergebnis. das im Bogenmaá angegeben wird, kann mit dem Befehl DEG konvertiert werden. AUTO AUTO Start, Schritt Mit diesem Befehl k”nnen Sie die automatische Numerierung der Programmzeilen bestimmen. Wenn Sie diesen Befehl ohne Parameter angeben, beginnt die automatische Programmzeilennumerierung mit Programmzeile 10; die Numerierung erfolgt dann in Zehnerschritten. Ansonsten k”nnen Sie mit dem Parameter Start die erste Programmzeile bestimmen und mit dem Parameter Schritt den Abstand zwischen den einzelnen Programmzeilen. BGET Variable=BGET# Zahl Mit diesem Befehl lesen Sie ein einzelnes Zeichen aus einer zuvor ge”ffneten Datei und bergeben es an eine Variable. Die Datei wird durch die Angabe des Parameters Zahl bezeichnet. Bei der Datei kann es sich auch um die serielle Schnittstelle "COM:" handeln. 10 K=OPENIN"FILENAME.DAT" 20 REPEAT 30 Wert%=BGET#K 40 ZEICHEN=CHR$(Wert%) 50 PRINT ZEICHEN; 60 UNTIL EOF#K 70 CLOSE#K - 7 - BPUT BPUT# Zahl, Wert Mit diesem Befehl schreiben Sie ein einzelnes Zeichen in eine zuvor ge”ffneten Datei, die durch den Parameter Zahl definiert wird. Bei der Datei kann es sich auch um die serielle Schnittstelle "COM:" oder die parallele Schnittstelle "LPT:" handeln. 10 K=OPENOUT"FILENAME.DAT" 20 FOR Wert%=1 TO 255 30 BPUT#K,Wert% 40 NEXT Wert% 50 CLOSE#K CALL CALL Adresse Mit diesem Befehl rufen Sie eine Unterroutine auf, die in Maschinencode programmiert ist und an der angegebenen Speicheradresse beginnt. CHAIN CHAIN Zeichenfolge Mit diesem Befehl laden Sie ein Programm und dessen gesamten Datenbestand in ein anderes Programm. Der Parameter Zeichenfolge beinhaltet den Namen des aufgerufenen Programms. CHR$ Variable=CHR$(Zahl) Mit diesem Befehl bergeben Sie den ASCII-Zeichencodewert eines Zeichens, der durch den Parameter Zahl angegeben wird, an eine Variable. CLEAR Mit diesem Befehl setzen Sie alle dynamischen Variablen wieder auf Null. Die einzigen Variablen, die von diesem Befehl nicht betroffen sind, sind die statischen Variablen A% bis einschlieálich Z% und @%. CLG Dieser Befehl l”scht den Inhalt des aktuellen Gratikfensters (standardm„áig den ganzen Bildschirm). Der Grafikcursor wird dabei nicht bewegt. CLOSE CLOSE# Zahl Mit diesem Befehl schlieáen Sie eine Datei, die durch den Parameter Zahl definiert wird. Der Befehl "CLOSE#0" schlieát alle offenen Kan„le. CLS Dieser Befehl l”scht den Inhalt des aktuellen Textfensters. (standardm„áig den ganzen Bildschirm). Der Textcursor steht nach Ausfhrung dieses Befehls am oberen linken Bildschirmrand. COLOR oder COLOUR Der LCD-Bildschirm des NC100 kann keine Farben darstellen. Wenn Sie diese Funktion dennoch aufrufen, wird mit einer entsprechenden Fehlermeldung darauf hingewiesen (Fehler 255). Eine begrenzte Steuerung der Textattribute kann mit Hilfe des VDU-Emulators realisiert werden, der im folgenden noch genauer erkl„rt wird. - 8 - COS Variable=COS(Zahl) Mit diesem Befehl bergeben Sie den Cosinus eines Winkels an eine Variable. Der Parameter Zahl wird in Bogenmaá angegeben. Mit dem Befehl RAD k”nnen Sie Winkelgrade in das Bogenmaá konvertieren. COUNT Variable=COUNT Mit diesem Befehl bergeben Sie die Anzahl Zeichen. die seit der letzten neuen Zeile auf den Bildschirm bertragen wurden, an eine Variable. DATA DATA Konstante, Konstante, Konstante... Dieser Befehl wird zum Speichern von Konstanten verwendet, die mit dem Befehl READ in einem Programm abgefragt werden k”nnen. DEF DEF PROGname DEF FNname Dieser Befehl wird verwendet, um eine Funktion oder Prozedur zu definieren und zu benennen. Das folgende Beispiel soll verdeutlichen, was damit gemeint ist: 10 PROC_Test ("Hallo") 20 PRINT FN_Durchschnitt (3,9,14) 30 END 40 REM ---- Unterprogramm -------- 100 DEF PROC_Test (Zeichenfolge$) 110 PRINT Zeichenfolge$ 120 ENDPROC 130 REM ---- Funktionsdefinition -- 200 DEF FN_Durchschnitt (n1,n2,n3) 210 =(n1+n2+n3)/3 DEG Variable=DEG(Zahl) Mit diesem Befehl bergeben Sie das Ergebnis der Konversion des Parameters Zahl vom Bogenmaá in Winkelgrade an eine Variable. Ein vollst„ndiger Kreis hat 360 Winkelgrade und ein Bogenmaá von 2*Phi. Mit dem Befehl DEG teilen Sie also die Winkelgrade durch den Faktor 2*Phi und multiplizieren das Ergebnis mit 360. DELETE DELETE Anfang, Ende Mit diesem Befehl l”schen Sie Programmzeilen aus dem Programm. Mit dem Befehl DELETE 10, 100 wrden Sie die Zeilen 10 bis einschlieálich 100 aus dem Programm l”schen. Wenn Sie nur eine Programmzeile l”schen m”chten, ist es einfacher, nur die Zeilennummer einzugeben, und diese Eingabe zu best„tigen. DIM DIM Variable, Gr”áe Mit diesem Befehl definieren Sie die H”chstzahl der Indizes von Matrixvariablen und den dafr ben”tigten Speicherplatz. Der Befehl DIM A(5) bedeutet beispielsweise, daá fr die Variable A sechs Matrixvariablen definiert wurden: A(0), A(1), A(2), A(3), A(4) und A(5). - 9 - DIV Variable=Zahl DIV Zahl Mit diesem Befehl bergeben Sie das Ganzzahlergebnis der Division der ersten Zahl durch die zweite Zahl an eine Variable. Nachkommastellen werden vernachl„ssigt. Mit dem Befehl MOD k”nnen Sie auch die Nachkommastellen erfassen. DRAW DRAW x,y Mit diesem Befehl k”nnen Sie eine gerade "hell unterlegte" Linien zeichnen. Der Ausgangspunkt der zu zeichnenden Linie ist die aktuelle Position des Grafikcursors; der Endpunkt wird durch die Parameter x,y definiert. Die Koordinatenangaben auf der x-Achse reichen von 0 bis 479, die Koordinatenangaben auf der y-Achse von 0 bis 63. Dieser Befehl ist identisch mit dem Befehl PLOT 5,x,y. EDIT EDIT Zahl Mit diesem Befehl k”nnen Sie sich eine Programmzeile auf dem Bildschirm anzeigen lassen und diese dann editieren, d.h. bearbeiten. Die entsprechende Zeilennummer muá nach dem Befehl EDIT eingegeben werden. Es besteht darber hinaus auch die M”glichkeit. sich mehrere Programmzeilen anzeigen zu lassen, indem Sie die Befehlssyntax wie folgt erweitern: EDIT Zahl, Zahl. ELSE IF Bedingung THEN... ELSE... Mit diesem Befehl legen Sie einen alternativen Programmverlauf fest, falls die von Ihnen definierte Bedingung nicht erfllt ist. END Mit diesem Befehl beenden Sie die Ausfhrung eines Programms und kehren zum BASIC-Prompt (>) zurck. Die Ausfhrung eines Programms wird auch dann beendet, wenn die letzte Programmzeile abgearbeitet ist, doch mit dem Befehl END programmieren Sie ein "sauberes" Programmende. Mit dem Befehl END k”nnen Sie ein Programm auch vorzeitig beenden, z.B. in Verbindung mit einer Bedingung (siehe den Befehl ELSE). Der Befehl wird auch bei umfangreichen Programmen verwendet, um das Hauptprogramm von den einzelnen Programmschritten und Funktionen zu trennen, die ber die Unterroutinen abgearbeitet werden. ENDPROC Mit diesem Befehl kennzeichnen Sie das Ende eines Unterprogramms. 10 PROC_Test ("Hallo") 30 END 100 REM ---- Unterprogramm -------- 110 DEF PROC_Test (Zeichenfolge$) 120 PRINT Zeichenfolge$ 130 ENDPROC - 10 - EOF Variable=EOF#Zahl Dieser Befehl gibt einen TRUE-Wert ("-1") an eine Variable zurck, wenn eine Datei, die ber den Parameter Zahl definiert ist, leer ist, und einen FALSE-Wert ("0"), wenn die Datei noch Daten enth„lt. Bei der seriellen Schnittstellen bedeutet TRUE, daá keine weiteren Eingabezeichen erwartet werden, und FALSE. daá noch eines oder mehrere Eingabezeichen erwartet werden. EOR Variable=Zahl EOR Zahl Mit diesem Befehl bergeben Sie die logische bitweise exklusiv ODER- Verknpfung der beiden Parameter an eine Variable. ERL Variabie=ERL Mit diesem Befehl bergeben Sie die Nummer der Programmzeile, in der ein Fehler bei der Ausfhrung eines Programms aufgetreten ist, an eine Variable. ERR Variable=ERR Mit diesem Befehl bergeben Sie den Fehlercode des zuletzt aufgetretenen Fehlers an eine Variable. Folgende Fehlercodes sind m”glich: 1 Branch Out of range - Sprung auáerhalb des Bereichs Unknown Label - Unbekannte Sprungmarke 4 Mistake - Fehler Wahrscheinlich ein Tipfehler z.B. ein Kommando in Klein- buchstaben. 5 Missing , - Fehlendes Komma 6 Type Mismatch - Type simmt nicht Sie haben versucht eine Sting-Variable als Numerische- Variable zu benutzen. 7 NO FN - Kein FN Der Interpreter ist auf eine DEF FN Anweisung gestoáen ohne eine FN aufzurufen. 9 Missing " - Fehlende Anfhrungsstriche 10 Bad DIM - Falsche DIM Sie haben versucht ein Feld zu dimensionieren welches bereits dimensioniert ist. 11 DIM Space - DIM Speicher Der Speicher reicht nicht aus um das Feld zu dimensionieren. 12 Not LOCAL - Nicht LOCAL Eine POOC- oder FN-Variable wurde im Programm benutzt. 13 No PPOC - Kein PROC Der Interpreter ist auf eine DEF PROC Anweisung gestoáen ohne eine PROC aufzurufen. 14 Array - Feld Das Feld wurde nicht mit DIM definiert. 15 Subscript - Adresse Sie haben eine Adresse einer Feldvariablen aufgerufen, die nicht existiert. 16 Syntax error - Syntax Fehler Sie benutzen ein Kommando falsch. 17 Escape - Stoptaste Die Stoptaste wurde gedrckt. - 11 - 18 Division by zero - Division durch Null Sie haben versucht eine Variable durch Null zu teilen. 19 String too long - Zeichenvariable zu lang Die L„nge eines String hat 255 Zeichen berschritten. 20 Too big - Zu groá Die Gr”áe einer Zahl hat den zul„áigen Bereich berschritten. 21 -ve root - Wurzel Sie haben versucht die Wurzel aus einer negativen Zahl zu ziehen. 22 Log range - Logarithmus Bereich Der Logarithmus einer Zahl kann nicht berechnet werden. 23 Accuracy lost - Genauigkeit verloren Das Ergebnis einer mathematischen Funktion hat seine Genauigkeit verloren. 24 Exp range - Exponent Bereich Ein Exponent ist zu groá. 26 No such variable - Keine Variable Es wurde versucht eine Variable abzufragen ohne sie vorher zuzuweisen. 27 Missing ) - Fehlende Klammer "zu" 28 Bad HEX - Falsche Hexzahl Eine Hexadezimalzahl ist nicht zu berechnen. 29 No such FN/PROC - Keine FN/PROC Sie haben eine Funktion oder Prozedur aufzurufen die nicht definiert wurde. 30 Bad Call - Falscher Aufruf Es wurde ein Maschienenprogramm aufgerufen welches nicht existiert. 31 Arguments - Argumente Die Anzahl der an eine FN oder PROC bergebenen Argumente stimmt nicht berein. 32 No FOR - Kein FOR Der Interpreter ist auf einen NEXT-Befehl gestoáen ohne einen FOR-Befehl. 33 Can't match FOR - Kann FOR nicht zuordnen Programmschleifen wurden falsch verschachtelt. 34 FOR variable - FOR Variable Eine FOR - NEXT Variable hat den definierten Bereich verlassen. 36 No TO - Kein TO Nach einer FOR Anweisung wurde das TO vergessen. 38 No GOSUB - Kein GOSUB Der Interpreter ist auf einen RETURN-Befehl gestoáen ohne einen GOSUB-Befehl. 39 ON Syntax - ON Syntax In Verbindung mit einem ON-Befehl wurde ein falsche Syntax verwendet. 40 ON range - ON Bereich Die Sprungmarke in Verbindung mit einem ON-Befehl existiert nicht. 41 No such line - Zeile nicht gefunden Die Zeilennummer in Verbindung mit einem GOTO, GOSUB oder ON-Befehl existiert nicht. 42 Out of DATA - Kein Daten mehr Mit einem READ-Befehl wurde versucht mehr Daten einzulesen als vorhanden. - 12 - 43 No REPEAT - Kein REPEAT Der Interpreter ist auf einen UNTIL-Befehl gestoáen ohne einen REPEAT-Befehl. 45 Missing # - Fehlendes #-Zeichen Die folgenden Fehlermeldungen beziehen sich auf Funktionen des Betriebssystems: 189 Access denied - Zugriff verweigert Sie haben versucht, ein Ger„t mit einem nicht zul„ssigen Befehl anzusprechen. 190 File creation error - Fehler beim Erstellen einer Datei Die Befehle OPENOUT, SAVE, *SAVE oder *SPOOL konnten nicht ausgefhrt werden, weil die angegebene Datei nicht erstellt werden konnte. 192 Too many open files - Zu viele Dateien ge”ffnet Sie haben versucht, mehr als sieben Dateien gleichzeitig zu ”ffnen. 196 File exists - Datei bereits vorhanden Sie haben versucht, eine Datei mit dem Befehl RENAME umzubenennen. Da der Dateiname, den Sie angegeben haben, bereits fr eine andere Datei vergeben ist, kann der Befehl nicht ausgefhrt werden. 198 File write error - Schreibfehler Die Befehle SAVE, *SAVE, BPUT#, PRlNT# oder *SPOOL konnten nicht ausgefhrt werden, weil m”glicherweise der Speicherplatz nicht ausreicht. 200 Close error - Fehler beim Schlieáen einer Datei Sie haben versucht, eine ge”ffnete Datei zu schlieáen, dabei ist ein Fehler aufgetreten. 202 Device Fault - Ger„tefehler Bei einem Lese- oder Schreibvorgang ist ein Ger„tefehler aufgetreten. 214 File not found - Datei nicht gefunden Die Befehle LOAD, *LOAD, *EXEC, *DELETE oder ,*RENAME konnten nicht ausgefhrt werden, weil die angegebene Datei nicht gefunden werden konnte. 222 Channel - Kanal Die Kanalnummer. die Sie im Zusammenhang mit einer Datei- funktion vergeben haben, ist ungltig. 251 Bad key - Falsche Taste Die Definition einer Zeichenfolge fr eine Funktionstaste konnte nicht durchgefhrt werden. 253 Bad string - Ungltige Zeichenfolge Eine definierte Zeichenfolge war zu lang oder fehlerhaft. 254 Bad command - Falscher Befehl Sie haben einen falschen oder ungltigen Befehl eingegeben. 255 Sorry (BBC BASIC Befehl wird vom Notepad nicht untersttzt) ERROR ON ERROR GOTO Zeile ON ERROR OFF Dieser Befehl dient zur Fehlerbehandlung. Wenn Sie den Befehl ON ERROR GOTO verwenden, weisen Sie das Programm an, bei einem Programmfehler in die bezeichnete Programmzeile zu springen. Mit den Befehlen ERR bzw. ERL k”nnen Sie die Ursache des Programmfehlers anhand der Fehler- nummer ermitteln. Die Befehlsfolge ON ERROR OFF bergibt die Fehler- behandlung wieder an das Betriebssystem. - 13 - EVAL Variable=EVAL "BASIC-Ausdruck in einer Zeichenfolge" Mit diesem Befehl berechnen Sie das Ergebnis einer Zeichenfolge und bergeben das Ergebnis an eine Variable. Ein vierzeiliges Programm verwandelt BASIC in einen Taschenrechner fr wissenschaftliche Berechnungen: 10 REPEAT 20 INPUT "Befehl eingeben: "e$ 30 PRINT EVAL e$ 40 UNTIL FALSE Wenn Sie das Programm mit dem Befehl RUN starten, k”nnten Sie beispielsweise folgende Ergebnisse erhalten: Befehl eingeben: SIN(RAD(45)) 0,707106781 Befehl eingeben: DEG(ATN(SQR(2))) 54,7356103 Befehl eingeben: TIME$ Don.19 M„rz 1992,00:25:42 EXP Variable=FXP(Zahl) Mit diesem Befehl bertragen Sie die x-te Potenz der Basis natrlicher Logarithmen (e=2,71828183) an eine Variable. Die Potenz wird durch den Parameter Zahl definiert. EXT Variable=EXT#Zahl Mit diesem Befehl bertragen Sie die L„nge einer Datei an eine Variable, Mit dem Parameter Zahl definieren Sie die Datei. Mit diesem Befehl k”nnen Sie sich die Gr”áe einer ge”ffneten Datei in Byte anzeigen lassen. Bei den seriellen bzw. parallelen Schnittstellen bedeutet jeder Wert > (gr”áer) "0". daá die Ausgabeeinheit belegt ist; wenn Sie in diesem Fall dennoch Daten an die Ausgabeeinheit senden, erhalten Sie eine Fehlermeldung. Wenn der Wert gleich "0" ist, bedeutet das, daá die Ausgabeeinheit bereit ist weitere Daten zu empfangen. FALSE Variable=FALSE Der Konstante FALSE wird bei Abfragen in Verbindung mit den Befehlen IF und UNTIL verwendet. Wenn eine Bedingung nicht erfllt wird, bergibt FALSE den Wert "0" an eine Variable bzw. das Programm. 10 Guess=FALSE 20 REPEAT 30 INPUT$"Wie ist mein Name "; NAME$ 40 IF NAME$="Rumpelstielschen" THEN Guess=TRUE 50 UNTIL Guess 60 PRINT"Erraten !" - 14 - FN DEF FNname Variable=FNname Mit diesem Befehl k”nnen Sie die bezeichnete Funktion sowohl verwenden als auch definieren. Vergleichen Sie dazu die Befehlsbeschreibung zu DEF. 10 PRINT FN_Durchschnitt (3,9,14) 20 END 100 REM ---- Funktionsdefinition -- 110 DEF FN_Durchschnitt (n1,n2,n3) 120 =(n1+n2+n3)/3 FOR FOR Variable=Startwert TO Endwert STEP Schrittweite Mit diesem Befehl definieren Sie den Beginn einer Schleife: d.h. eine Folge von Befehlen, die mehrmals hintereinander abgearbeitet werden. Die Variable, der Sie einen Startwert zuteilen, wird dabei als Z„hler verwendet, Die auf den Befehl FOR folgenden Programmzeilen werden solange ausgefhrt, bis das Programm auf den Befehl NEXT trifft. Die Variable wird dann um den im Parameter Schrittweite angegebenen Wert erh”ht. šbersteigt der Variableninhalt schlieálich den Endwert, ist die Abarbeitung der Schleife beendet. 10 FOR I = 10 TO 1 STEP -1 30 PRINT I 20 NEXT I GET Variable=GET Variable$=GET$ Variable=GET(Adresse) Mit dem Befehl GET bergeben Sie den ASCII-Wert der n„chsten Tastatur- eingabe an eine Variable. Das Programm wird solange unterbrochen, bis eine Taste gedrckt wird. Mit dem Befehl GET$ bergeben Sie das n„chste eingegebene Zeichen an die Variable$ (alphanumerisch). Das Programm wird auch hier solange unterbrochen, bis eine Taste gedrckt wird. Mit dem Befehl GET(Adresse) lesen Sie einen Wert ber eine I/O- Schnittstelle des Z80-Prozessors ein. GOSUB GOSUB Zeile Mit diesem Befehl springen Sie in eine Unterroutine des Programms. Der Parameter Zeile gibt die Nummer der anzuspringenden Programmzeile an. Sobald das Programm auf den n„chsten RETURN-Befehl tritt, erfolgt ein Rcksprung auf die Programmzeile nach dem GOSUB. - 15 - GOTO GOTO Zeile Mit diesem Befehl springen Sie in eine bestimmte Programmzeile. Bedenken Sie dabei, daá die allzu h„ufige Verwendung dieses Befehls Ihre Programme unbersichtlich macht. Sie k”nnen die Struktur Ihrer Programme weitaus besser mit Hilfe der Befehle FOR...NEXT, REPEAT... UNTIL, DEF PROC oder GOSUB festlegen. HEX$ Diesen in anderen BASIC-Dialekten blichen Befehl gibt es in BBC BASIC nicht. Der Befehl Variable$=STR$~(Zahl) bewirkt in BBC BASIC jedoch das gleiche. HIMEM HIMEM=Zahl Variable=HIMEM Mit diesem Befehl k”nnen Sie den Ausgangswert fr den HIMEM- Speicherbereich definieren oder sich den aktuellen Wert anzeigen lassen. Beachten Sie bitte, daá der HIMEM-Bereich in keinem Fall ber seinen Ausgangswert hinaus erweitert werden darf; Sie k”nnen diesen Wert h”chstens verringern. IF IF Bedingung THEN Mit diesem Befehl definieren Sie Abfragen in einem Programm. Die von Ihnen gesetzte Bedingung wird abgeprft und in Abh„ngigkeit vom Ergebnis der Abfrage wird der weitere Programmfluá gesteuert. INKEY Variable=INKEY(Zeit) Variable$=INKEY$(Zeit) Mit diesen Befehl bergeben Sie den Wert der n„chsten Tastatureingabe an eine Variable. Im Gegensatz zum Befehl GET wartet das Programm nur innerhalb der mit dem Parameter Zeit definierten Zeitspanne (Hundertstelsekunden) auf eine Tastatureingabe. Wenn innerhalb der angegebenen Zeitspanne keine Eingabe ber die Tastatur erfolgt. wird bei numerischen Variablen der Wert "-1" und bei alphanumerischen eine Zeichenfolge mit der L„nge "0" an das Programm zurckgegeben. Die Verwendung des Befehls INKEY mit einem negativen Wert (zum Abprfen des Zustands der einzelnen Tasten) wird nicht untersttzt. INPUT INPUT "Prompt-Text 1", Variable1, "Prompt-Text 2", Variable2... Mit diesem Befehl unterbrechen Sie die Programmausfhrung; der Promt- Text erscheint, gefolgt von einem Fragezeichen und das Programm erwartet eine Eingabe. Die eingegebenen Daten werden der oder auch den definierten Variable zugewiesen. Bei der definierten Variable kann es sich sowohl um eine numerische als auch um eine alphanumerische Variable handeln. Der Prompt-Text ist optional. INPUT LINE INPUT LINE "Prompt-Text", Variable$ Dieser Befehl entspricht im wesentlichen dem Befehl INPUT, Allerdings sind einige Unterschiede vorhanden: - Als Variable ist nur der Typ Variable$ (alphanumerisch) zul„ssig. - Es kann nur jeweils ein Variablenwert abgefragt werden. - Als Zeichen k”nnen auch Kommas, Leerzeichen und Anfhrungs- striche eingegeben werden. - 16 - INPUT# INPUT# Zahl, Variable Mit diesem Befehl erfolgt eine Eingabe aus einer Datei. Die Datei wird mit dem Parameter Zahl definiert. 10 K=OPENIN("DATEI.DAT") 20 INPUT# K, IN$ INSTR Variable=INSTR(Zeichenfolge, gesuchte Zeichenfolge, Startposition) Mit diesem Befehl durchsuchen Sie die erste angegebene Zeichenfolge nach der gesuchten Zeichenfolge. Wenn diese gefunden wird, wird die Position, an der die šbereinstimmung auftrat, an eine Variable bergeben. Die Suche muá nicht am Anfang der vorgegebenen Zeichenfolge beginnen sondern kann optional auch erst ab Startposition erfolgen. Wird die Startposition angegeben, muá ihr Wert "=>1" und "<=255" sein. Wird die Zeichenfolge nicht gefunden, so liefert INSTR den Wert "0". INT Variable=INT(Zahl) Mit diesem Befehl konvertieren Sie eine reelle Zahl in einen Ganzzahlwert und bergeben diesen an eine Variable. LEFT$ Variable$ = LEFT$(Zeichenfolge$, Zahl) Mit diesem Befehl bergeben Sie den Inhalt einer Zeichenfolge (beginnend mit dem ersten, linksbndigen Zeichen derselben und einer durch den Parameter Zahl fest definierten L„nge) an eine alphanumerische Variable. LEN Variable=LEN(Zeichenfolge$) Mit diesem Befehl bergeben Sie die Anzahl Zeichen einer bestimmten Zeichenfolge an eine Variable. LET LET Variable Wert Mit dem Befehl LET teilen Sie einer Variablen einen Wert (numerisch oder alphanumerisch) zu. Der Befehl LET ist optional, d.h. die Programmzeilen 10 LET X = X + 3 und 10 X = X + 3 sind in ihrer Wirkung absolut identisch. LIST LIST Zahl, Zahl Mit diesem Befehl k”nnen Sie sich ein Programm anzeigen lassen. Wenn Sie nur eine Zeilennummer angeben, wird auch nur eine Programmzeile angezeigt. Wenn Sie beide Parameter angeben, werden alle Programm- zeilen zwischen diesen beiden Zeilennummern angezeigt. Solange ein Programm aufgelistet wird, k”nnen Sie die Anzeige unterbrechen, indem Sie die Stopptaste drcken. Mit einer beliebigen Taste k”nnen Sie die Unterbrechung wieder aufheben. - 17 - LISTO LISTO Zahl Mit dem Parameter Zahl kann festgelegt werden, wie die Anzeige des LIST-Befehls formatiert wird. Gltig sind alle Parameter zwischen "0" und "3". LISTO 0 Kein Leerzeichen zwischen Zeilennummer und Zeile, Schleifen nicht eingerckt. LISTO 1 Leerzeichen zwischen Zeilennummer und Zeile, Schleifen nicht eingerckt. LISTO 2 Kein Leerzeichen zwischen Zeilennummer und Zeile, Schleifen eingerckt. LIST0 3 Leerzeichen zwischen Zeilennummer und Zeile, Schleifen eingerckt. LN Variable=LN(Zahl) Mit diesem Befehl bergeben Sie den natrlichen Logarithmus einer Zahl an eine Variable. Die Basis natrlicher Logarithmen entspricht e=2,71828183. Die Umkehrfunktion zu diesem Befehl ist der Befehl EXP. LOAD LOAD Programmname Mit diesem Befehl laden Sie das mit dem Parameter Programmname bezeichnete Programm. LOCAL LOCAL Variable, Variable$, ... Mit diesem Befehl definieren Sie eine Variable, die nur innerhalb einer bestimmten Funktion oder Prozedur ben”tigt wird. Der darin enthaltene Wert geht auáerhalb dieser Funktion bzw. Prozedur verloren. Die auf die LOCAL Anweisung folgende Variablen k”nnen von einem beliebigen Typ sein. Die Anweisung speichert den aktuellen Wert der genannten Variablen auf dem BASIC-Stapel, wo sie am Ende der Prozedur oder Funktion wieder abgeholt werden. Das bedeutet, daá der Wert innerhalb der Prozedur ge„ndert werden kann, ohne dadurch eine Variable gleichen Namens, die sich auáerhalb der Prozedur befindet zu ver„ndern. Am Ende der Prozedur wird der alte Wert der Variablen wieder hergestellt. 10 FOR I=1 TO 10 20 PROC_Test 30 NEXT I 40 END 100 REM ---- Unterprogramm ---- 110 DEF PROC_Test: LOCAL I 120 FOR I=1 TO 10 130 PRINT I 140 NEXT I 150 PRINT "----" 160 ENDPROC LOG Variable=LOG(Zahl) Mit diesem Befehl bergeben Sie den dekadischen Logarithmus (Basis 10) einer vorgegebenen Zahl an eine Variable, Fr diesen Befehl gibt es keine Umkehrfunktion. - 18 - LOMEM LOMEM=Variable Variable=LOMEM Mit diesem Befehl k”nnen Sie sich den Speicherbereich anzeigen lassen bzw. definieren, in dem dynamische Datenstrukturen gespeichert sind bzw. gespeichert werden sollen. LPRINT Diesen in anderen BASIC-Dialekten blichen Befehl gibt es in BBC BASIC nicht, hier erfolgen Ausgaben auf den Drucker ber PRINT# MID$ Variable$=MID$(Zeichenfolge$, Start, L„nge) Mit diesem Befehl bergeben Sie eine Zeichenfolge mit einer fest vorgegebenen L„nge (durch die Parameter Start und L„nge) an eine alphanumerische Variable$. MOD Variable=Zahl MOD Zahl Mit diesem Befehl teilen Sie die erste Zahl durch die zweite und bergeben den Rest der Division an eine Variable. Vergleichen Sie in diesem Zusammenhang auch den Befehl DIV. MOVE MOVE x,y Mit diesem Befehl bewegen Sie den Grafikcursor zu den von Ihnen angegebenen Koordinaten. Auf die Anzeige hat dieser Befehl keinen Einfluá. Die Koordinatenangaben auf der x-Achse reichen von 0 bis 479, die Koordinatenangaben auf der y-Achse reichen von 0 bis 63. Dieser Befehl ist identisch mit dem Befehl PLOT 4,x,y. NEW Mit diesem Befehl l”schen Sie das aktuell geladene Programm aus dem BASIC-Arbeitsspeicher Wenn Sie diesen Befehl versehentlich eingegeben haben, k”nnen Sie seine Wirkung rckg„ngig machen, indem Sie in der n„chsten Programmzeile den Befehl OLD eingeben. Sobald Sie allerdings neue Programmzeilen eingegeben oder neue Variablen definiert haben, funktioniert dies nicht mehr. NEXT NEXT Variable Mit diesem Befehl markieren sie das Ende einer FOR...NEXT-Schleife. Nach dem Befehl NEXT erfolgt ein Rcksprung auf die Programmzeile hinter dem Befehl FOR. Die Schleife wird solange wiederholt, bis die mit dem Befehl NEXT stets schrittweise erh”hte Variable den definierten H”chstwert berschreitet. NOT Variable=NOT Zahl Mit diesem Befehl bergeben Sie den Wert des Parameters Zahl (bin„r invers) an eine Variable. OFF ON ERROR OFF TRACE OFF Die Befehlsfolge "ON ERROR OFF" bergibt die Fehlerbehandlung wieder an das Betriebssystem. Mit dem Befehl TRACE 0FF k”nnen Sie die TRACE- Funktion wieder ausschalten. OLD Mit diesem Befehl k”nnen Sie ein Programm, das Sie mit dem Befehl NEW oder durch versehentliches Verlassen von BASIC aus dem Arbeitsspeicher gel”scht haben, wieder in den Arbeitsspeicher zurckholen. - 19 - ON ON Variable GOTO Zeile, Zeile... ON Variable GOSUB Zeile, Zeile... ON ERROR GOTO Zeile Mit diesem Befehl bestimmen Sie in Abh„ngigkeit von der gesetzten Variablen eine Verzweigung im Programm zu einer bestimmten Zeilen- nummer. OPENIN Variable=OPENIN(Dateiname$) Mit diesem Befehl er”ffnen Sie eine Datei (Dateiname$) speziell fr Lesevorg„nge (Read only). Die Dateikennziffer wird anschlieáend an eine Variable bergeben. Dieser Befehl kann in Verbindung mit den Befehlen BGET# und INPUT# verwendet werden. Wenn der angegebene Dateiname "COM:" lautet, wird ein Kanal fr eine serielle Schnitt- stelle ge”ffnet. 10 K=OPENIN("DATEI.DAT") 20 INPUT# K, IN$ OPENOUT Variable=OPENOUT(Dateiname$) Mit diesem Befehl erstellen und ”ffnen Sie eine neue Datei. (Datei- name$) speziell fr Schreibvorg„nge (Write only). Die Dateikennziffer wird anschlieáend an eine Variable bergeben. Dieser Befehl kann in Verbindung mit den Befehlen BPUT# und PRINT# verwendet werden. Wenn der angegebene Dateiname "COM:" lautet, wird ein Kanal fr eine serielle Schnittstelle ge”ffnet. Wenn der angegebene Dateiname "LPT:" lautet, wird ein Kanal fr eine parallele Schnittstelle ge”ffnet. 10 K=OPENOUT("LPT:") 20 PRINT# K, OUT$ OPENUP Variable=OPENUP(Dateiname$) Mit diesem Befehl ”ffnen Sie eine Datei fr Schreib- und Lesevorg„nge (Random). Die Dateikennziffer wird anschlieáend an eine Variable bergeben. Dieser Befehl kann in Verbindung mit den Befehlen BPUT#, BGET#, PRINT# und INPUT# verwendet werden. Wenn der angegebene Datei- name "COM:" lautet, wird ein Kanal fr eine serielle Schnittstelle ge”ffnet. 10 K=OPENUP("COM:") 20 PRINT# K, OUT$ 30 INPUT# K, IN$ OR Variable=Zahl OR Zahl Mit diesem Befehl bergeben Sie das logische bitweise OR der beiden Parameter Zahl an eine Variable. - 20 - OSCLI OSCLI Zeichenfolge Mit diesem Befehl bergeben Sie den Inhalt der Zeichenfolge (einen Befehl) an das Betriebssystem. Der Befehl wird dann ausgefhrt: 10 OSCLI "CAT" Die Betriebssystembefehle k”nnen auch direkt aufgerufen werden indem ihnen ein "*"-Zeichen vorangestellt wird: >*CAT Die folgenden Betriebssystembefehle sind implementiert: BYE oder QUIT Mit einem dieser Befehle k”nnen Sie den BASIC-Interpreter verlassen; danach kehren Sie auf die Betriebssystemebene zurck. CAT oder DIR Mit einem dieser beiden Befehle k”nnen Sie sich eine Liste der gespeicherten Dateien anzeigen lassen. DELETE Dateiname oder ERASE Dateiname Mit einem dieser beiden Befehle l”schen Sie eine namentlich bezeichnete Datei. ESC ON und ESC OFF Wenn Sie den Befehl ESC ON oder ESC* eingeben. kann die Ausfhrung eines Programms mit der Stoptaste beendet werden; die Stoptaste wird in BASIC als ESCape-Taste bezeichnet. Wenn Sie den Befehl ESC 0FF eingegeben haben, wird lediglich der ASCII- Code der ESCape-Taste (27) an das Programm zurckgegeben. falls Sie die Stoptaste drcken. EXEC Dateiname Mit diesem Befehl legen Sie fest, daá die Konsoleneingaben von einer Datei aus erfolgen sollen und nicht ber die Tastatur. Beachten Sie, daá die Befehle GET und INKEY nur Eingaben ber die Tastatur entgegennehmen. KEY n Zeichenfolge Mit diesem Befehl definieren Sie eine neue Zeichenfolge fr eine bestimmte Taste. Die Tastenschlssel reichen von "41" bis "92", wobei die Schlssel "41" bis "66" (ASCII - 24) sich auf die Kombinationen Symboltaste + A-Taste bis Z-Taste und die Schlssel "67" bis "92" (ASCII + 2) sich auf Symboltaste + Shift-Taste + A- bis Z-Taste beziehen. Die Zeichenfolge kann das "|" Symbol enthalten, damit auch Zeichen eingefgt werden, deren Eingabe am Bildschirm nicht sichtbar wird. So bedeutet zum Beispiel: |M die Return-Taste, |? die Taste zum L”schen, || steht fr das "|" Zeichen und |! bedeutet, daá Bit 7 des Folgezeichens gesetzt wird. Wenn die Zeichenfolge in Anfhrungszeichen gesetzt ist (das ist optional). bestimmen Sie mit dem Zeichen "|", daá das Zeichen "Anfhrungsstriche" bercksichtigt werden kann. Die folgenden Eingaben belegt die Tastenkombination Symbol-M mit einem kleinem Memory-Dump-Programm: >M=&2000 >KEY 53 FOR X=0 TO 6:P.~M+X,~M?X:N. |M - 21 - Das folgende Programm belegt einige Tasten mit sinnvollen Funktionen fr die BBC BASIC Programmierung: 10 Edit$="EDIT.LIS" 20 OSCLI"KEY 45 EDIT ":REM Symbol+E 30 OSCLI"KEY 49 LIST ":REM Symbol+I 40 OSCLI"KEY 52 LOAD |"+CHR$(34):REM Symbol+L 50 OSCLI"KEY 54 RENUMBER |M":REM Symbol+N 60 OSCLI"KEY 55 *SPOOL ":REM Symbol+O 70 OSCLI"KEY 58 RUN |M":REM Symbol+R 80 OSCLI"KEY 59 SAVE |"+CHR$(34)+Edit$+"|"+CHR$(34) 90 OSCLI"KEY 64 *EXEC "+Edit$:REM Symbol+X LOAD Dateiname aaaa Mit diesem Befehl laden Sie die gewnschte Datei in den Arbeits- speicher. Die Anfangsadresse im Speicher muá zwingend angegeben werden. PRINTER n Mit diesem Befehl definieren Sie den Drucker entweder als Paralleldrucker (n=0) oder als seriellen Drucker (n=1). RENAME alter Dateiname neuer Dateiname Mit diesem Befehl geben Sie einer Datei einen neuen Namen. SAVE Dateiname aaaa bbbb SAVE Dateiname aaaa +lll Mit diesem Befehl speichern Sie einen definierten Bereich des Speichers in einer Datei ab. Die Speicheradresse wird entweder ber die Anfangsadresse aaaa und die Endadresse +1 bbbb oder ber die Anfangsadresse aaaa und die L„nge lll definiert. SPOOL Dateiname Mit diesem Befehl kopieren Sie alle nachfolgenden Ausgaben der Konsole in die angegebene Datei. Wenn Sie keinen Dateinamen eingeben, wird jede er”ffnete SPOOL-Datei geschlossen und der SPOOL Vorgang beendet. I Kommentar Nach diesem Befehl k”nnen Sie einen Kommentar eingeben. PAGE PAGE=Variable Variable=PAGE Mit dem Befehl PAGE k”nnen Sie die Startadresse des aktuellen BASIC-Programmbereichs bestimmen oder sich anzeigen lassen. PI Variable=PI Mit diesem Befehl bergeben Sie den Wert Phi (3.14159) an eine Variable. - 22 - PLOT PLOT n,x,y Mit diesem vielseitig verwendbaren Befehl k”nnen Sie Linien zeichnen, wobei der erste Parameter (n) zur Spezifikation des Zeichenvorgangs dient. Die Koordinatenangaben auf der x-Achse reichen von 0 bis 479. die Koordinatenangaben auf der y-Achse reichen von 0 bis 63. Wenn im folgenden von "relativer" Position die Rede ist, bedeutet das, daá der Ausgangspunkt der zu zeichnenden Linie die aktuelle Position des Grafikcursors ist. Wird von der "absoluten" Position gesprochen, bedeutet das, daá der Ausgangspunkt der zu zeichnenden Linie die Position (0,0) des Grafikbildschirms ist. n Aktion 0 Bewegen des Grafikcursors relativ zum letzten Punkt. 1 Zeichnen einer Linie in "schwarz" relativ zum letzten Punkt. 2 Zeichnen einer Linie in "invers" relativ zum letzten Punkt. 3 Zeichnen einer Linie in "weiá" relativ zum letzten Punkt. 4 Bewegen des Grafikcursors zur absoluten Position x,y. 5 Zeichnen einer Linie in "schwarz" bezogen auf die absolute Position. 6 Zeichnen einer Linie in "invers" bezogen auf die absolute Position. 7 Zeichnen einer Linie in "weiá" bezogen auf die absolute Position. 8-15 Mit diesen Parametern erzielen Sie das gleiche Ergebnis wie mit den Parametern 0-7. doch im Gegensatz dazu wird der Endpunkt der Linie doppelt gezeichnet (d.h. im Modus "invers" f„llt dieser weg). 16-31 Mit diesen Parametern erzielen Sie das gleiche Ergebnis wie mit den Parametern 8-15, doch die Linie wird gepunktet gezeichnet. 32-63 Mit diesen Parametern erzielen Sie das gleiche Ergebnis wie mit den Parametern 0-31, doch im Gegensatz dazu wird der Anfangspunkt der Linie doppelt gezeichnet (d.h. im Modus "invers" f„llt dieser weg). 64-71 Mit diesen Parametern erzielen Sie das gleiche Ergebnis wie mit den Parametern 0-7, doch wird an der Stelle (x,y) ein einzelner Punkt gezeichnet. 72-79 Mit diesen Parametern zeichnen Sie eine horizontale Linie links und rechts vom Punkt x,y. Diese Linie wird solange gezeichnet, bis der erste "hell unterlegte" Bildpunkt (Pixel) gekreuzt wird oder der Rand des Fensters erreicht ist. Sie k”nnen damit geometrische Formen fllen. 80-87 Mit diesen Parametern zeichnen und fllen Sie ein Dreieck, das durch die beiden letzten angesteuerten Punkte und die Position x,y definiert wird. 88-95 Mit diesen Parametern zeichnen Sie eine horizontale Linie links und rechts vom Punkt x,y. Diese Linie wird solange gezeichnet. bis der erste nicht "hell unterlegte" Bildpunkt (Pixel) gekreuzt wird oder der Rand des Fensters erreicht ist. 96-103 Mit diesen Parametern zeichnen und fllen Sie ein Rechteck, dessen gegenberliegende Ecken durch den letzten angesteuerten Punkt und die Position x,y bestimmt wenden. - 23 - POINT Variable=POINT(x,y) Mit diesem Befehl geben Sie den Zustand des Bildpunkts (Pixel) an der bezeichneten Position x,y an das Programm zurck ("0"= nicht hell unterlegt. "1" = hell unterlegt). Wenn die Position des Bildpunkts auáerhalb des Grafikfensters liegt, wird der Wert "-1" an das Programm zurckgegeben. PEEK und POKE Statt der blichen Befehle PEEK und POKE werden vom Notepad die sogenannten "Indirektionsoperatoren" verwendet: - Byte-Wert schreiben (entspricht POKE): ?Adresse=Wert - Byte schreiben mit Offset-Adresse : Adresse?Offset=Wert - Byte-Wert lesen (entspricht PEEK) : Wert=?Adresse - Byte lesen mit Offset-Adresse : Wert=Adresse?Offset - 4 Byte-Wert schreiben : !Adresse=Wert - 4 Byte-Wert lesen : Wert=!Adresse - String schreiben : $Adresse="Zeichenfolge" - String lesen : Variable$=$Adresse Der $ Indirektionsoperator schreibt einen Wagenrcklauf (CR = 13) hinter das letzte Zeichen des Strings! Beispiele: >M=&2000 >?M=&28 :REM &2000=&28 >PRINT ?M 40 :REM Hex. &28 = Dez. 40 >PRINT ~?M :REM Durch "~"-Zeichen Ausgabe in Hex. 28 >!M=&12345678 :REM &2000=&78,&2001=&56,&2002=&34,&2003=&12 >PRINT ~!M 12345678 >$M="Dies ist ein Test!" >PRINT $M Dies ist ein Test! Aber das ist noch nicht alles, der Byte Operator (?) kann auch wie hier in Zeile 50 mit einem Offset in einer weiteren Variablen (hier X) verknpft werden: 10 CLS 20 M=&2000 30 !M=&12345678 40 FOR X=0 TO 4 50 PRINT ~M+X,~M?X 60 NEXT >RUN 2000 78 2001 56 2002 34 2003 12 2004 FF > - 24 - POS Variable=POS Mit diesem Befehl geben Sie die horizontale Position (Zeile) des Textcursors im Bereich zwischen "0" und "79" an das Programm zurck. Dabei wird vom linken Rand des Textfensters ausgegangen. PRINT PRINT Variable,Variable$,... PRINT "Text" PRINT# Variable PRINT#"Text" Dieser Befehl erm”glicht die Ausgabe auf den Bildschirm oder in einen ge”ffneten Kanal. Wenn Sie die gewnschte Bildschirmausgabe hinter einen Strichpunkt setzen, bedeutet das, daá die Bildschirmausgabe unmittelbar dahinter erfolgen soll. Hinter einem Kommata erfolgt die Bildschirmausgabe beim n„chsten gesetzten Tabulator. Wenn Sie das Zeichen "~" vor numerischen Ausdrcken eingeben, werden diese hexadezimal angezeigt. 10 PRINT "Dezimalzahl :";DEZ," entspricht Hexzahl :";~DEZ Standardm„áig werden numerische Ausdrcke in Dezimalnotierung und rechtsbndig in der Druckzone ausgegeben. Zeichenketten werden in der Druckzone linksbndig angeordnet. Das Format, in dem Zahlen ausgegeben werden, und die L„nge der Druckzonen werden vom Wert der residenten Variablen @% bestimmt. Jedem Byte in der Variablen kommt eine spezielle Bedeutung zu: Byte 4 Bestimmt, ob die STR$-Funktion beim Verwandeln des Arguments in einen String das durch @% festgelegte Druckformat oder ein allgemeines Standardformat verwendet. Wenn das Byte "0" ist (Standard), benutzt STR$ ein allgemeines Format (gleichbedeutend mit @%=&90A), wenn es gr”áer "0" ist, benutzt STR$ das durch den Rest von @% definierte Format. Byte 3 W„hlt das zu verwendende Format. Die legitimen Werte sind: 0 Allgemeines Format: Zahlen haben die Form nnn.nnn, wobei die maximale Anzahl der ausgegebenen Stellen in Byte 2 vorgegeben ist. Dies ist das Standardformat. 1 Exponentialformat. Zahlen haben die Form n.nnEnn, wobei die Anzahl der Stellen vor dem E in Byte 2 festgelegt wird. 2 Festes Format: Zahlen haben die Form nnn.nnn, wobei die Zahl der Nachkommastellen in Byte 2 definiert wird. Byte 2 Bestimmt die Anzahl der ausgegebenen Stellen. Im allgemeinen Format ist dies die Anzahl der Stellen, die ausgedruckt werden kann, bevor ins Exponentialformat geschaltet wird (1 bis 10); im Exponentialformat gibt es die Anzahl der signifikanten Zahlen an, die nach dem Dezimalpunkt ausgegeben werden (1 bis 10). Im festen Format gibt es die Anzahl Nachkommastellen an. - 25 - Byte 1 Bestimmt die Druckzonenbreite im Bereich von "0" bis "255" zur Tabulierung unter Verwendung von TAB(Zahl) und Kommas. Beispiele: >@%=&0000090A >PRINT 0.0982 9.82E-2 >PRINT 123456789 123456789 >PRINT 1234567890 1.23456789E9 Verwendet allgemeines Format mit bis zu neun signifikanten Stellen in einer Druckzone mit 10 Zeichenpositionen. Bitte beachten Sie, daá das allgemeine Format auf das Exponentialformat schaltet, wenn die Zahl kleiner als 0.1 ist. Dies ist die Standardeinstellung. >@%=&0102020A >PRINT 0.0982 0.10 Verwendet festes Format mit zwei Nachkommastellen in einer Druckzone mit 10 Zeichen. Die Werte werden gerundet. Auáerdem verwendet STR$ dieses Format anstelle des Standardformats. >@%=&00010408 >PRINT 1 1.000E0 Benutzt das Exponentialformat. Dabei werden vier signifikante Stellen in einer Druckzone mit 8 Zeichenpositionen ausgegeben. PRINT# PRINT# Kanal, Variable Mit diesem Befehl schreiben Sie einen bestimmten Wert in eine Datei, die durch den Parameter Kanal definiert wurde. Bei der Datei kann es sich auch um die serielle Schnittstelle "COM:" oder die parallele Schnittstelle "LPT:" handeln. 10 K=OPENOUT("DATEI.DAT") 20 FOR I=1 TO 60 30 PRINT# K, STR$(RND)+CHR$(13)+CHR$(10) 40 NEXT Bei Ausgabe zum Drucker „ndert sich Zeile 10 in: 10 K=OPENOUT("LPT:") - 26 - PROC PROCname Mit diesem Befehl rufen Sie eine Prozedur auf, die mit dem Befehl DEF PROC erstellt wurde. 10 PROC_Test ("Hallo") 20 PRINT FN_Durchschnitt (3,9,14) 30 END 40 REM ---- Unterprogramm -------- 100 DEF PROC_Test (Zeichenfolge$) 110 PRINT Zeichenfolge$ 120 ENDPROC 130 REM ---- Funktionsdefinition -- 200 DEF FN_Durchschnitt (n1,n2,n3) 210 =(nl+n2+n3) PTR PTR# Zahl=Variable Variable=PTR# Zahl Mit diesem Befehl k”nnen Sie den Zugriffszeiger einer Datei sowohl setzen als auch anzeigen lassen. Die Datei ist ber den Parameter Zahl definiert. PUT PUT Adresse, Variable Mit diesem Befehl bewirken Sie die Ausgabe eines Wertes ber eine I/O-Schnittstelle des Z80-Prozessors. Dazu muá Ihnen jedoch die Hardware-Adresse bekannt sein. Das folgende Programm erzeugt fr 10 Sekunden einen Ton ber den Notepad-Lautsprecher mit einer Frequenz von 697 Hz: 10 PUT &50,&B9 20 PUT &51,&01 30 TIME=0: REPEAT: UNTIL TIME > 1000 40 SOUND 1, 0, 0, 0 RAD Variable=RAD(Zahl) Mit diesem Befehl bergeben Sie den Wert einer Zahl, die von Winkelgraden in das Bogenmaá konveniert wurde, an eine Variable. READ READ Variable1, Variable2, ... Mit diesem Befehl lesen Sie Daten aus dem Befehl DATA und weisen diese einer Variablen zu. REM REM Kommentar Mit diesem Befehl lassen sich Kommentarzeilen in ein Programm einfgen. Dadurch haben Sie die M”glichkeit. die Wirkung einzelner, m”glicherweise komplexer Programmzeilen durch Erl„uterungen zu erg„nzen. Diese Kommentarzeilen sind oft sehr hilfreich, wenn ein Programm zu einem sp„teren Zeitpunkt erweitert oder umgeschrieben werden soll. RENUMBER RENUMBER Start, Schritt Mit diesem Befehl k”nnen Sie die Zeilennumerierung eines Programms neu definieren. Wenn Sie nur den Befehl RENUMBER ohne Parameter eingeben. beginnt die Numerierung bei Programmzeile 10 und erfolgt in Zehnerschritten, Doch k”nnen Sie Anfang und Schrittweite auch individuell festlegen. - 27 - REPEAT Mit diesem Befehl beginnen Sie eine Programmschleife, die durch den Befehl UNTIL beendet wird. Solange die gesetzte Bedingung nicht erfllt (FALSE) ist, erfolgt der Rcksprung in die Programmzeile, die dem Befehl REPEAT folgt. 10 Guess=FALSE 20 REPEAT 30 INPUT$"Wie ist mein Name "; NAME$ 40 IF NAME$="Rumpelstielschen" THEN Guess=TRUE 50 UNTIL Guess 60 PRINT"Erraten !" REPORT Mit diesem Befehl kann eine Fehlermeldung im Klartext ausgegeben werden, die sich auf den letzten Programmfehler bezieht. Dieser Befehl wird h„ufig in Verbindung mit dem Befehl ON ERROR GOTO eingesetzt. M”gliche Fehlermeldungen siehe unter ERR. RESTORE RESTORE Zeile Wenn Sie mit Hilfe des Befehls READ Daten aus einer Datei lesen, k”nnen Sie den Befehl RESTORE einsetzen, um den Lesezeiger wieder auf eine bestimmte Stelle in der Datei zu setzen, von der m”glicherweise die n„chsten Daten gelesen werden sollen. RETURN Dieser Befehl beendet eine Unterroutine. Danach erfolgt der Rcksprung aus der Unterroutine in die Programmzeile. die unmittelbar auf die Programmteile mit dem Befehl GOSUB folgt. RIGHT$ Variable$=RIGHT$(Zeichenfolge$, Zahl) Mit diesem Befehl bergeben Sie den Inhalt einer Zeichenfolge (beginnend mit dem „uáerst rechten Zeichen derselben und einer durch den Parameter Zahl fest definierten Lange) an eine alphanumerische Variable. RND Variable=RND(Zahl) Dieser Befehl bergibt eine Zufallszahl zwischen "1" und dem Parameter Zahl an eine Variable. Wenn Sie den Parameter Zahl nicht vorgeben, wird ein Wert zwischen "&80000000" und "&7FFFFFFF" an eine Variable bergeben. Wenn der Parameter Zahl negativ ist, wird ein neuer Zufallszahlengenerator festgelegt und der daraus resultierende Wert an eine Variable bergeben. RUN Mit diesem Befehl starten Sie das aktuell in den BASIC-Speicher geladene Programm. - 28 - SAVE SAVE Programmname Mit diesem Befehl speichern Sie das aktuell in den BASIC-Speicher geladene Programm unter dem mit dem Parameter Programmname angegebenen Namen. Der Programmname kann entweder in Anfhrungszeichen gesetzt werden oder in einer alphanumerischen Variable gespeichert sein, die den Namen enth„lt. Es ist wichtig, das aktuell bearbeitete Programm stets zu speichern, ehe Sie den BASIC-Interpreter verlassen, da das Programm beim Verlassen von BASIC nicht automatisch gesichert wird. >SAVE "FILENAME.EXT" SGN Variable=SGN(Zahl) Mit diesem Befehl bergeben Sie den Wert "-1" an eine Variable, wenn der Parameter Zahl negativ ist. Wenn der Parameter Zahl positiv ist, wird der Wert "0" an die Variable bergeben. SIN Variable=SIN(Zahl) Mit diesem Befehl bergeben Sie den Sinuswert eines vorgegebenen Winkels an eine Variable. Der entsprechende Wert muá im Bogenmaá angegeben werden. Mit dem Befehl RAD k”nnen Sie Winkelgrade in das Bogenmaá konvertieren. SOUND SOUND Kanal, Lautst„rke. Tonh”he, Dauer Ein einfacher Tongenerator (Zweiton) ist im Notepad integriert. Die einzelnen Parameter des Befehls haben folgende Bedeutung: Kanal Damit legen Sie den Kanal fest (1 oder 2). Lautst„rke Dieser Wert ist beim Notepad ohne Wirkung. Tonh”he Mit dieser Angabe bestimmen Sie die Tonh”he in Halbtonschritten. M”gliche Werte liegen zwischen "0" und "255". Sobald Sie als Wert fr die Tonh”he "0" angeben, wird der Ton abgeschaltet. Dauer M”gliche Werte bei der Dauer eines Tones liegen zwischen "0" und "254". Die dabei verwendete Einheit entspricht einer Zwanzigstelsekunde. Die Eingabe der Werte "-1" oder "255" erzeugt einen Dauerton. Diesen Dauerton k”nnen Sie nur unterbrechen, indem Sie einen neuen SOUND-Befehl eingeben oder die Stoptaste drcken. In der folgenden Tabelle sind alle m”glichen Werte fr die Tonh”he aufgelistet: Note | Oktaven-Nummer -----+---------------------------------------- | 1 2 3 4 5 6 A | 41 89 137 185 233 A# | 45 93 141 189 237 B | 1 49 97 145 193 241 C | 5 53 101 149 197 245 C# | 9 57 105 153 201 249 D | 13 61 109 157 205 253 D# | 17 65 113 161 209 E | 21 69 117 165 213 F | 25 73 121 169 217 F# | 29 77 125 173 221 G | 33 81 129 177 225 G# | 37 85 133 181 229 - 29 - Der folgende Befehl beispielsweise erzeugt eine Sekunde lang das A ber dem mittleren C auf Kanal 1: 10 SOUND 1, 0, 137, 20 Wenn Sie einen Akkord, bestehend aus zwei Noten, spielen m”chten, mssen Sie zuerst den Befehl SOUND mit einer Dauer von "-1" eingeben, um den ersten Ton auf Kanal "1" erzeugen zu k”nnen; danach mssen Sie noch einen zweiten Befehl eingeben, um die andere Note auf Kanal "2" erzeugen zu k”nnen. Wenn Sie fr den Parameter Dauer den Wert "0" eingeben, beenden Sie das Abspielen von T”nen. Wenn Sie einen Ton mit einer beliebigen Frequenz erzeugen wollen, so mssen Sie die Hardware-Register fr die Frequenzkontrolle mit dem PUT Befehl direkt laden. Die Registeradressen sind: &50 Reload-Wert LSB fr Kanal 1 &51 Reload-Wert MSB fr Kanal 1 &52 Reload-Wert LSB fr Kanal 2 &53 Reload-Wert MSB fr Kanal 2 Der Reload-Wert (R) berechnet sich aus der Frequenz (f) nach folgender Formel: 1.000.000 R = ------------ f * 3,2552 Das folgende Programm erzeugt fr 10 Sekunden einen Ton mit einer Frequenz von 697 Hz auf Kanal 1: 10 PUT &50,&B9 20 PUT &51,&01 30 TIME=0: REPEAT: UNTIL TIME > 1000 40 SOUND 1, 0, 0, 0 - 30 - SPC SPC(Zahl) Wenn Sie den Befehl SPC(Zahl) in Verbindung mit den Befehlen INPUT oder PRINT verwenden, wird die mit dem Parameter Zahl festgelegte Anzahl Leerzeichen vor der Tastatureingabe bzw. Druckausgabe eingefgt. 10 PRINT SPC(10)"Bitte eine Taste"; 20 INPUT SPC(10)": ", KEY SQR Variable=SQR(Zahl) Mit diesem Befehl bergeben Sie die Wurzel des Parameters Zahl an eine Variable. STEP FOR Variable=Start TO Ende STEP Schritt Mit diesem Befehl legen Sie fest, um welchen Wert die Variable in einer FOR ... NEXT-Schleife erh”ht bzw. verringert wird. STOP Mit diesem Befehl beenden Sie die Ausfhrung eines Programms. Dabei wird die Programmzeile angezeigt. an der das Programm unterbrochen wurde. Der Befehl STOP wird h„ufig bei der Erstellung von Programmen zum Testen verwendet. Im Anschluá an den Befehl STOP kann z.B. der Inhalt von Programmvariablen berprft werden. STR$ Variable$=STR$(Zahl) Mit diesem Befehl bergeben Sie den Wert eines numerischen Ausdrucks in Form einer Zeichenfolge an eine alphanumerische Variable. Wenn zwischen dem $-Zeichen und der Klammer das Zeichen "~" eingegeben wird, wird der Parameter Zahl in einen hexadezimalen Wert konvertiert. 10 INPUT"Bitte eine Dezimalzahl :",Dez 20 Hex$ = STR$~(Dez) 30 PRINT"Entspricht Hexzahl :";Hex$ STRING$ Variable$=STRING$(Zahl, Zeichenfolge) Mit diesem Befehl bergeben Sie die mit dem Parameter Zahl definierte Anzahl einer Zeichenfolge an eine alphanumerische Variable. TAB TAB(x,y) TAB(x) Der Befehl TAB(x,y) wird ben”tigt, um die genaue Position des Textcursors im aktuellen Textfenster an (x=Spalte, y=Zeile) zu bestimmen. Die Koordinatenangaben fr x reichen von 0 bis 79 und fr y von 0 bis 7. Mit den folgenden Befehlen legen Sie z. B. fest, an welcher Stelle eine Bildschirmausgabe bzw. Eingabe erfolgen soll: 10 PRINT TAB(10,2) "Bitte ein Wort eingeben : " 20 INPUT TAB(60) A$ - 31 - TAN Variable=TAN(Zahl) Mit diesem Befehl bergeben Sie den Tangenswert eines vorgegebenen Winkels an eine Variable. Der entsprechende Wert muá im Bogenmaá angegeben werden. Mit dem Befehl RAD k”nnen Sie Winkelgrade in das Bogenmaá konvertieren. THEN IF Bedingung THEN Mit dem Befehl THEN steuern Sie den weiteren Programmablauf, wenn die Bedingung einer IF-Abfrage erfllt ist. Die Verwendung des Befehls THEN bei einer IF-Abfrage ist optional. doch wird das Programm mit Sicherheit bersichtlicher, wenn Sie diesen Befehl verwenden. TIME TIME=Variable Variable=TIME Mit dieser Pseudovariablen lesen und setzen Sie die Stopuhr fr die verstrichene Zeit. Die dabei verwendete Einheit ist die Hundertstel- sekunde. Im folgenden Beispiel wurde eine Zeitspanne von 10 Sekunden angesetzt: 10 TIME = 0: REPEAT: UNTIL TIME > 1000 TIME$ TIME$=Variable$ Variable$=TIME$ Mit dieser Pseudovariablen lesen und setzen Sie die Echtzeit. >PRINT TIME$ Das Format der zurckgegebenen Zeichenfolge lautet: >Day.dd Mon yyyy,hh:mm:ss Die einzelnen Elemente haben folgende Bedeutung: Day meint den Wochentag, dd den Tag im Monat, Mon den Monat, yyyy das Jahr, hh die Stunden, mm die Minuten, ss die Sekunden. Zeit und Datum (oder auch beides zugleich) k”nnen gesetzt werden, indem Sie die entsprechenden Informationen in die einzelnen Felder eintragen. Wenn Sie nur die Zeit einstellen, wird der Wochentag ignoriert und braucht deshalb nicht eingegeben zu werden. TO FOR Variable=Start TO Ende Dieser Befehl wird in einer FOR...NEXT-Schleife als Zwischenglied zwischen dem Anfangswert und dem Endwert der jeweiligen Variable verwendet. - 32 - TRACE TRACE ON TRACE 0FF TRACE Zahl Mit dem Befehl TRACE ON k”nnen Sie sich parallel zur Programm- ausfhrung die gerade ausgefhrte Programmzeilennummer (in eckigen Klammern) anzeigen lassen. Dieser Befehl wird als Testhilfe verwendet. Mit dem Befehl TRACE 0FF k”nnen Sie diese Funktion wieder ausschalten. Beim Befehl TRACE Zahl werden nur die Programmzeilen angezeigt. die kleiner sind als der angegebene Parameter Zahl. Wenn Sie beispielsweise fr die Unterroutinen hohe Programmzeilennummern vergeben und beim Hauptprogramm niedrige Zeilennummern, k”nnen Sie mit diesem Befehl ganz leicht den Ablauf des Hauptprogramms verfolgen. indem Sie den Parameter Zahl entsprechend setzen. TRUE Variable=TRUE Wenn dieser Befehl verwendet wird, wird der Wert "-1" an das Programm zurckgegeben. wenn die Bedingung. die in Verbindung mit den Befehlen IF und UNTIL gesetzt wurde, wahr (TRUE) ist. 10 Guess=FALSE 20 REPEAT 30 INPUT$"Wie ist mein Name "; NAME$ 40 IF NAME$="Rumpelstielschen" THEN Guess=TRUE 50 UNTIL Guess 60 PRINT"Erraten !" UNTIL UNTIL Bedingung Mit diesem Befehl beenden Sie eine Schleife, die mit dem Befehl REPEAT gestartet wurde. Solange die gesetzte Bedingung nicht erfllt (FALSE) ist, erfolgt der Rcksprung in die Programmzeile, die dem Befehl REPEAT folgt. USR Variable=USR(Adresse) Mit diesem Befehl rufen Sie eine in Maschinencode geschriebene Unterroutine an der angegebenen Speicheradresse auf. Die Variable liefert einen 32-Bit-Wert der Prozessorregister HL = MSB (16 Bit) und HL'= LSB (16 Bit) zurck. VAL Variable=VAL(Zeichenfolge) Mit diesem Befehl bergeben Sie den numerischen Wert eines Zeichen- folgenausdrucks (soweit m”glich) an eine Variable. - 33 - VDU VDU Parameter, ... Mit diesem Befehl bergeben Sie die Elemente der Parameter an den VDU-Emulator. Die gesamten Ausgaben der Konsole werden an einen Software-Emulator den VDU-Treiber von BBC Micro bertragen. Die hier beschriebenen VDU-Befehle fhren „hnliche Operationen aus wie BBC Micro, wobei sie mit den jeweiligen Unterschieden bezglich Hardware und Betriebssystem konsistent sind. Die Parameter werden durch Kommas getrennt solange der Parameter kleiner als "255" ist. Eintr„ge die mit einem Semikolon abgeschlossen werden, werden als 16-Bit-Werte bergeben (LSB zuerst). Die einzelnen Werte haben folgende Bedeutung: VDU 0 Dieser Befehl wird ignoriert. VDU 1,n Das folgende Byte wird an den Drucker gesendet, sofern es vorher mit VDU 2 aktiviert wurde. Wenn der Drucker nicht aktiv ist, wird das Byte bersprungen. Jeder 8-Bit-Wert (0-255) kann bertragen werden. Dies funktioniert auch dann, wenn der VDU-Emulator mit VDU 21 auf inaktiv gesetzt wurde. VDU 2 Mit diesem Befehl aktivieren Sie den Drucker. Alle nachfolgenden Zeichen werden sowohl an den Drucker als auch an den Bildschirm bertragen. Die einzigen Steuerzeichen, die bertragen werden, sind BEL(7). BS(8). HT(9), LF(10) VT(11), FF(12) und CR(13). Bytes, die als Parameter fr VDU- Befehle fungieren. werden nicht an den Drucker bertragen. So bertr„gt VDU 27,13 kein CR an den Drucker. VDU 3 Dieser Befehl setzt den Drucker inaktiv und hebt zugleich die Wirkung von Befehl VDU 2 auf. VDU 4 Mit diesem Befehl kann der Textcursor angezeigt werden. VDU 5 Mit diesem Befehl wird die Anzeige des Textcursors ausgeblendet. VDU 6 Dieser Befehl aktiviert die Bildschirmanzeige und hebt gleichzeitig die Wirkung von VDU 21 auf. VDU 7 Dieser Befehl erzeugt einen Piepton. VDU 8 Dieser Befehl bewegt den Textcursor um eine Position nach links. Wenn der Textcursor am linken „uáeren Rand steht, wird er in die vorherige Zeile an den „uáeren rechten Rand positioniert. Wenn der Textcursor zudem in der obersten Zeile stand, wird er in die letzte Zeile positioniert. VDU 9 Dieser Befehl bewegt den Textcursor um eine Position nach rechts. Wenn der Textcursor am rechten „uáeren Rand steht, wird er an den Anfang der n„chsten Zeile positioniert. Wenn der Textcursor zudem in der letzten Zeile stand, wird er in die oberste Zeile positioniert. VDU 10 Dieser Befehl bewegt den Textcursor um eine Zeile nach unten. Wenn er bereits in der untersten Zeile stand, wird der Bildschirm nach oben gerollt. VDU 11 Dieser Befehl bewegt den Textcursor um eine Zeile nach oben. Wenn er bereits in der obersten Zeile stand, wird er in die letzte Zeile positioniert. VDU 12 Dieser Befehl ist identisch mit dem Befehl CLS in BASIC. Das gesamte Bildschirmfenster wird gel”scht. und der Cursor steht anschlieáend in der oberen linken Ecke. - 34 - VDU 13 Dieser Befehl bewegt den Cursor an den linken Rand. VDU 14 Dieser Befehl aktiviert die inverse Darstellung des Bildschirminhalts. VDU 15 Dieser Befehl hebt VDU 14 wieder auf. VDU 16 Dieser Befehl ist identisch mit dem Befehl CLG in BASIC. Der gesamte Grafikbildschirm wird gel”scht. Der Grafikcursor wird dabei nicht bewegt. VDU 17 Dieser Befehl aktiviert die Fettschrift. VDU 18 Dieser Befehl hebt VDU 17 wieder auf. VDU 19 Dieser Befehl aktiviert den Modus Unterstreichen. VDU 20 Dieser Befehl hebt VDU 19 wieder auf. VDU 21 Dieser Befehl deaktiviert alle VDU-Ausgaben. Alle nachfolgenden VDU-Befehle (auáer den Befehlen 1,2, 3, 4, 5 und 6). Wenn der Drucker aktiv ist, werden die VDU-Befehle 7, 8, 9, 10, 11,12 und 13 dennoch an den Drucker bertragen. VDU 22 Dieser Befehl wird ignoriert. VDU 23 Dieser Befehl wird ignoriert. VDU 24, links x, unten y, rechts x, oben y Mit diesem Befehl definieren Sie den Grafik- bildschirm. Die Koordinatenangaben auf der x-Achse (horizontal) reichen von 0 bis 479, die Koordinatenangaben auf der y-Achse (vertikal) reichen von 0 bis 63. VDU 25,n,x,y Dieser Befehl ist identisch mit dem Befehl PLOT n,x,y in BASIC. Vergleichen Sie dazu die Beschreibung des Befehls PLOT. VDU 26 Dieser Befehl aktviert die Standardeinstellungen fr den Text- bzw. Grafikbildschirm. Auáerdem steht sowohl der Text- als auch der Grafikcursor wieder auf Position 0,0. VDU 27,n Dieser Befehl bertr„gt das n„chste Byte an den Bildschirm, ohne es als Steuerzeichen zu interpretieren. Alle Grafikzeichen, die sich auf VDU 0-31 und VDU 127 beziehen, k”nnen angezeigt werden. Der Befehl VDU 27 hat im Prinzip dieselbe Wirkung wie der Befehl 1 auf den angeschlossenen Drucker. VDU 28, links x,unten y, rechts x, oben y Mit diesem Befehl definieren Sie den Text- bildschirm. Die Koordinatenangaben auf der x-Achse (horizontal) reichen von 0 bis 79, die Koordinatenangaben auf der y-Achse (vertikal) 0 bis 7. VDU 29,n,x,y Dieser Befehl richtet die Anfangsposition einer Grafik auf die angegebenen Koordinaten aus. Alle nachfolgenden Grafikkoordinaten beziehen sich auf diese Angaben. VDU 30 Dieser Befehl positioniert den Textcursor in die linke obere Ecke. VDU 31,x,y Dieser Befehl ist identisch mit dem Befehl PRINT TAB(x,y) in BASIC. Der Textcursor wird entsprechend Ihren Angaben positioniert, wobei sich die Koordinaten auf den jeweils definierten Text- bildschirm beziehen. VDU 127 Dieser Befehl positioniert den Cursor um eine Stelle nach links und l”scht das betreffende Zeichen. - 35 - VPOS Variable=VPOS Mit diesem Befehl geben Sie die vertikale Position (Zeile) des Textcursors im Bereich zwischen "0" und "7" an das Programm zurck. Dabei wird vom oberen Rand des aktuellen Textfensters ausgegangen. WIDTH WIDTH Zahl Mit diesem Befehl definieren Sie die Breite der Bildschirm Ausgabezeile in Anzahl Zeichen, Sobald Sie den Wert "0" eingeben, wird die Definition unwirksam. - 36 - Liste aller auf dem Notepad untersttzten Schlsselw”rter und ihre Krzel: Schlsselw. Krzel Token-Byte(s) Beschreibung ---------------------------------------------------------------------- ABS - &94 Absolutwert berechnen ACS - &95 Arcuscosinus berechnen AND A. &80 Bitweise UND-Verknpfung ASC - &97 ASCII-Code bestimmen ASN - &98 Arcussinus berechnen ATN - &99 Arcustangens berechnen AUTO AU. &C6 Zeilennummern vorgeben BGET B. &9A Einzelnes Zeichen lesen BPUT BP. &D5 Einzelnes Zeichen schreiben CALL CA. &D6 Maschienenprogramm aufrufen CHAIN CH. &D7 BASIC-Programm aufrufen CHR$ - &BD ASCII-Code in Zeichen wandeln CLEAR CL. &D8 Alle Variablen resetten CLG - &DA Grafikfenster l”schen CLOSE# CLO. &D9,&23 Kanal schlieáen CLS - &DB Textfenster l”schen COS - &9B Cosinus berechnen COUNT COU. &9C Zeichen z„hlen DATA D. &DC Daten speichern DEF - &DD Prozedur oder Funktion definieren DEG - &9D Bogenmaá in Winkelgrade DELETE DEL. &C7 Zeile(n) l”schen DIM - &DE Feld dimensionieren DIV - &81 Ganzzahlergebnis einer Division DRAW DR. &DF Linie zeichnen EDIT ED. - Zeile editieren ELSE EL. &CC Alternative Bearbeitung END - &E0 Programm Ende ENDPROC E. &E1 Prozedur Ende EOF# - &C5,&23 Auf Dateiende testen EOR - &82 EXKLUSIV-ODER Verknpfung ERL - &9E Zeilennummer des letzten Fehlers ERR - &9F Fehlernummer des letzten Fehlers ERROR ERR. &85 Behandlung von Fehlern EVAL EV. &A0 Zeichenfolge mit BASIC-Ausdruck EXP - &A1 Potenz berechnen EXT - &A2 L„nge einer Datei feststellen FALSE FA. &A3 Entspricht "0" FN - &A4 Funktion aufrufen FOR F. &E3 Beginn einer Schleife GET - &A5 Tastatur oder I/O-Port lesen GET$ GE. &BE Zeichnen von Tastatur lesen GOSUB GOS. &E4 Zur Unterroutine springen GOTO G. &E5 Nach Zeile springen HIMEM H. &D3/&93 Speicherbereich definieren IF - &E7 Abfrage auf Bedingung INKEY - &A6 Auf Tastatureingabe warten INKEY$ INK. &BF Auf Tastatureingabe warten INPUT I. &E8 Wert eingeben INPUT# - &E8,&23 Wert einlesen INPUT LINE - &E8,&86 Zeichenkette einlesen INSTR INS. &A7 Zeichenfolge durchsuchen INT - &A8 Ganzzahlwert berechnen - 37 - Schlsselw. Krzel Token-Byte(s) Beschreibung --------------------------------------------------------------------- LEFT$ LE. &C0 Linker Teil einer Zeichenkette LEN - &A9 L„nge einer Zeichenkette LET - &E9 Zuweisung LIST L. &C9 Programm listen LISTO L.O &C9,&4F Format fr LIST definieren LN - &AA Natrlichen Logarithmus berechnen LOAD LO. &C8 Programm laden LOCAL LOC. &EA Lokale Variable definieren LOG - &AB Dekadischen Logarithmus berechnen LOMEM LOM. &D2/&92 Speicherbereich definieren MID$ M. &C1 Mittleren Teil einer Zeichenkette MOD - &83 Rest einer Division berechnen MOVE - &EC Grafikcursor bewegen NEW - &CA Programm l”schen NEXT N. &ED N„chster Schritt einer Schleife NOT - &AB NICHT-Verknpfung OFF - &87 Ausschalten OLD O. &CB Altes Programm retten ON - &EE Abh„ngigkeit definieren OPENIN OP. &8E Kanal zur Eingabe ”ffnen OPENOUT OPENO. &AE Kanal zur Ausgabe ”ffnen OPENUP - &AD Kanal zur Ein- u. Ausgabe ”ffnen OR - &84 ODER-Verknpfung OSCLI OS. &FF Betriebssystem aufrufen PAGE PA. &D0/&90 Speicherbereich definieren PI - &AF Entspricht Phi=3,14159 PLOT PL. &F0 Linie zeichnen POINT - &B0 Bildpunkt abfragen POS - &B1 Horizontale Cursorposition PRINT P. &F1 Bildschirmausgabe PROC - &F2 Prozedur aufrufen PTR - &CF/&8F Dateizugriffszeiger lesen/setzen PUT - &CE Wert auf I/O-Port ausgeben RAD - &B2 Winkelgrad nach Bogenmaá READ - &F3 Daten lesen REM - &F4 Bemerkung RENUMBER REN. &CC Programm umnummerieren REPEAT REP. &F5 Schleife definieren REPORT REPO. &F6 Fehlermeldung ausgeben RESTORE RES. &F7 Daten Zeiger zurcksetzten RETURN R. &F8 Unterprogramm beenden RIGHT$ RI. &C2 Rechter Teil einer Zeichenkette RND - &B3 Zufallszahl erzeugen RUN - &F9 Programm starten SAVE SA. &CD Programm speichern SGN - &B4 Vorzeichen bestimmen SIN - &B5 Sinus berechnen SOUND SO. &D4 Ton ausgeben SPC - &89 Leerzeichen ausgeben SQR - &B6 Wurzel berechnen STEP S. &88 Schrittweite in Schleifen STOP - &FA Programm unterbrechen STR$ - &C3 Zahl in Zeichenkette wandeln STRING$ STRI. &C4 Zeichenkette bilden - 38 - Schlsselw. Krzel Token-Byte(s) Beschreibung --------------------------------------------------------------------- TAB - &8A Textcursor setzen TAN T. &B7 Tangens berechnen THEN TH. &8C Bearbeitung definieren TIME TI. &D1/&91 Stoppuhr lesen oder setzen TIME$ TI.$ &D1,&24/&91,&24 Echtzeituhr lesen oder setzen TO - &B8 Schleife definieren TRACE TR. &FC Programm Testhilfe TRUE - &B9 Entspricht "-1" UNTIL U. &FD Ende einer Schleife definieren USR - &BA Maschienenprogramm aufrufen VAL - &BB Zeichenfolge in Zahl wandeln VDU V. &EF VDU-Emulator Befehl VPOS VP. &BC Vertikale Position des Textcursor WIDTH WI. &FE Ausgabezeile definieren Verwendete Literatur und Quellen: - "Handbuch zum Amstrad Notepad NC100" zweite Ausgabe Fa. Amstrad 1992 Mit freundlicher Genehmigung durch Cliff Lawson - "The Low Level Operation Of Amstrad Notepad Computers" Von der Amstrad Homepage - "BASIC Machine Language Tutorial" Von Don McKenzie 27.08.1992 - "FAQ Of Amstrad 8 Bit Computers" Von der gleichnamigen Newsgroup - "ACORN BBC BASIC Handbuch" Erste Ausgabe Acorn Computer Limited 1990 - "The Amstrad Notepad Advanced User Guide" Von Robin und Chris Nixon, Sigma Press 1993 Autor: Hans-Jrgen B”hling Blowstr. 2 40476 Dsseldorf Germany e-mail : 101.107378@germanynet.de homepage: http://www.germany.net/teilnehmer/101.107378/index.htm - 39 -