31.12.2004
Heute habe ich zaghaft angefangen ein wenig in BASIC zu programmieren. Macht ziemliche Laune. Die Tastatur ist nicht sehr präzise klingt aber voll hackig, hat eine angenehme Tipp-Position. Das Diskettenlaufwerk 1050 kling fast so wie die 1541 von Commodore. Die Geräuschkulisse ist sogar frappierend ähnlich. Klingt nur geil die Floppy.
Also ich fange jetzt hier mal an das BASIC zu erklären.
Ich muß sagen, das BASIC Heftchen ist ja mager, erklärt aber die wichtigsten Dinge leicht verständlich und gut.
Vom Atari BASIC wußte ich gar nichts mehr. Aber wie eigentlich bei jedem BASIC gibt es natürlich gewisse Grundbefehle die eigentlich bei jedem Homecomputer dieser Zeit gleich oder zumindest ähnlich waren. Das Anleitungsheft ist knapp aber echt brauchbar geschrieben. Sogar Befehle zum Dateihandling werden erläutert.
Variablen
Numerische Variablen wie z.B. A=5 kann man einfach im Programm einfügen. Sie müssen nicht deklariert werden. Und ich glaube, daß diese Variablen immer beides sind. Sowohl Integer als auch Fließkomma-Zahlen. Mit numerischen Variablen kann man auch Arrays bilden durch dim a(5,10).
Nun hat man ein Array von a(0,0) bis a(5,10)
Strings
Die Strings haben mich schon ziemlich verwirrt. Es gibt keine String Befehle wie LEFT$, RIGHT$ oder MID$. Ich versuchte z.B. verzweifelt zwei Strings zu einem zusammenzufügen mit dem Befehl tx$=tx$+key$
Der Rechner bemängelte jedoch das + Zeichen. Seltsam, das wird doch in jedem BASIC das ich kenne so gemacht. Nicht so im ATARI BASIC.
Dort schreibt man tx$(len(tx$)+1)=key$
Der Wert in den Klammern ist kein Array-Index wie z.B. beim Commodore 64. Denn beim Atari gibt es keine String Arrays. Es bedeutet ‘hänge an der letzten Zeichenposition von tx$ den String key$ an’. Um Strings zu verwenden muß man sie Dimensionieren. Das geht mit dim tx$(40).
Das heißt reserviere Speicherplatz für tx$ mit einer Zeichenkettenlänge von maximal 40 Zeichen.
Gerätebuchstaben
K: Keyboard
P: Printer
C: Cassette
S: Screen
E: Screen-Editor (Keyboard und Screen kombiniert)
R: RS-232 Schnittstelle (mit ATARI 850 Interface-Modul)
D: Diskettenlaufwerk
D2: Diskettenlaufwerk 2
Open-Befehl
Typ Code Operation
———————————————–
Input 4 nur Lesen
Output 8 nur Schreiben
Update 12 Lesen und Schreiben
Append 9 ans Ende der Datei anhängen
Directory 6 Diskettenlaufwerk Directory
Mit open #1,8,0,”D:TEST.DAT” öffnet man z.B. eine neue Datei auf dem Diskettenlaufwerk bzw. überschreibt eine schon existierende Datei mit dem Namen TEST.DAT
Also aufgepaßt. Die #1 ist die Kanalnummer auch IOCB (Input/Output Channel …) genannt. Die 8 besagt wir wollen diese Datei nur beschreiben. Die Null hat scheinbar keine Funktion muß aber immer dort stehen.
Trap Befehl
Ein sehr nützlicher Befehl. Schreibt man trap 30000 so springt der Computer zu dieser Zeile sobald irgendein Fehler auftritt. Mann kann die Trapfunktion deaktivieren indem man schreibt trap 40000 (Zeilenzahl muß >32767 sein).
Man kann vor gefährlichen Befehlen wie dem open Befehl einen trap Befehl einfügen, die open Anweisung durchführen und danach mit trap 40000 wieder deaktivieren.
Es kann ja z.B. sein, daß keine Diskette im Laufwerk steckt oder das Laufwerk selber ausgeschaltet ist. Dieses kann man dann alles über den ERROR-Code erfahren.
Fehlernummer Bedeutung
—————————————————–
2 Speicher reicht nicht aus
3 Zahlenbereich falsch
4 mehr als 128 Variablen
5 String zu lang
6 zu wenig Daten
7 Zahl größer als 32767
8 falscher Input-Befehl
9 DIM-Fehler
10 nicht ausführbar
11 Zahlenbereich verlassen
12 Zeile nicht gefunden
13 kein passender FOR-Befehl
14 Zeile zu lang
15 GOSUB/FOR entfernt
16 RETURN-Fehler/passender GOSUB fehlt
17 Syntax-Fehler
18 ungültiges String-Zeichen
19 LOAD-Programm zu lang
20 Gerätenummer größer
21 LOAD-Datei-Fehler
128 mit BREAK abgebrochen
129 IOCB schon geöffnet
130 Gerät nicht bekannt
131 IOCB, nur Ausgabe möglich
132 ungültiger “Händler” Befehl
133 Gerät oder Datei nicht vorbereitet (OPEN fehlt)
134 ungültige IOCB-Nummer
135 IOCB-“nur Eingabe möglich”
136 Datei-Ende mit EOF
137 Datensatz verstümmelt
138 Gerät antwortet nicht
139 Datenverkehr gestört
140 “Serial Bus”-Lesefehler
141 Cursor-Positionierung unzulässig
142 Datenaustausch gestört
143 Datenverkehr mit Fehler der Prüfsumme
