Das erste Programm

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

Das erste Programm (nicht die ARD)

Schauen wir uns zunächst mal ein ganz einfaches BASIC-Programm an.

Löscht erstmal den Speicher mit NEW, um sicher zu gehen, dass keine Reste das neue Programm stören und gebt dann die beiden Zeilen direkt ein, <RETURN> am Zeilenende nicht vergessen!
Das Erste was auffällt: Wir haben Zeilen-Nr. benutzt. Durch diese weiß der C64, dass er die Befehle nicht direkt ausführen soll, sondern das diese Teil eines Programmes sind. Bei der Vergabe der Zeilen-Nr. hat es sich als ‚klug‚ erwiesen, dass man diese in 10 Schritten eingibt und evtl. Blöcke bildet, so lassen sich später Ergänzungen oder Korrekturen leichter einfügen. Es gibt nämlich KEINE Möglichkeit die Zeilen neu zu nummerieren, abgesehen von speziellen Tools oder andere BASIC-Versionen, z. B. Simon‘s BASIC. Ihr könnt Zeilen-Nr. von 0 bis 63999 verwenden.
Gebt nun RUN ein, um das Programm zu starten und drückt <RUN/STOP> (bei Emulatoren meist die ESC-Taste), damit das Programm unterbrochen wird.

Was macht das Programm nun genau?

PRINT (drucke) Daten ausgeben
Der PRINT-Befehl wird verwendet, um Daten auszugeben, dies kann wie hier der Bildschirm sein, aber auch Drucker oder Speichermedien sind möglich (dann heißt der Befehl PRINT#). Das Semikolon am Ende sorgt dafür, dass der Cursor hinter „RETRO-PROGRAMMING „ stehen bleibt und der nächste Text direkt dahinter ausgegeben wird.

GOTO (gehe nach) zu einer anderen Programmzeile „springen„
Der GOTO-Befehl wird benutzt, um das Programm ab der angegebenen Zeile fortzusetzen. Hier springen wir also wieder in die Zeile 10 und geben das nächste „RETRO-PROGRAMMING „ direkt hinter dem ersten aus.

Dies ist eine klassische Endlos-Schleife, die sich aber zum Glück, wie oben erwähnt, mit <RUN/STOP> abbrechen lässt.

Um Zeilen zu korrigieren, könnt ihr einfach mit den Cursor-Tasten in jede auf dem Bildschirm sichtbare Zeile (z. B. nach einem LIST) gehen, die neuen Angaben eintippen und abschließend <RETURN> drücken. Soll die Zeile verschoben werden schreibt über die aktuelle Zeilen-Nr. einfach die neue Zeilen-Nr und bestätigt dies mit <RETURN>. Um eine Zeile zu löschen geht in einen leeren Bereich gebt nur die Zeilen-Nr. ein und drückt <RETURN>.

Ergänzen wir unser Programm um eine weitere Zeile.

POKE (OK, na gut die Übersetzungen hierfür gehen schon ins Unanständige; ich entscheide mich fürs „(hinein)stecken„ im Sinne von „setzen/schreiben„) Inhalt einer Speicherzelle setzen.
RND() (random = zufällig) Eine Zufallszahl zwischen 0 und 1 ermitteln, wobei weder genau 0 noch 1 vorkommen.
Der POKE-Befehl wird hier benutzt, um die Schriftfarbe zu verändern. Diese steht in der Speicherzelle 646. Um die Farbe zu ermitteln, nutzen wir den RND()-Befehl, dieser ermittelt, wie oben erwähnt, eine Zufallszahl zwischen 0 und 1. Da wir gerne eine der 16 möglichen Farben hätten (0 – 15), multiplizieren wir das Ergebnis von RND() mit der Anzahl, der möglichen Farben, also 16. Da das Ergebnis als ungerundete Ganzzahl betrachtet wird, erhalten wir Zahlen zwischen 0 und 15, da auch 15.99999 eine glatte 15 ergibt.
Die Zahl in den runden Klammern hinter RND(1) gibt an, wo die Erzeugung der Zufallszahlen beginnen soll. Hiermit lassen sich z. B. zu Testzwecken durch eine negative Zahl beim ersten Aufruf immer dieselben „Zufallszahlen„ erzeugen.

Starte das Programm und alles wird bunt. Abbruch wieder mit <RUN/STOP>.

Bevor wir zu einem Highlight des C64 kommen, noch eine letzte Änderung. Falls ihr auf Lichtreize mit epileptischen Anfällen reagiert, lasst das besser aus.

RUN und es geht ab…whow diese Farben 😉

Die einzigen Besonderheiten hier sind die beiden neuen Speicherzellen 53280 (Rahmenfarbe) und 53281 (Hintergrundfarbe), so wie die Möglichkeit mehrere Befehle in eine Zeile zu schreiben. Dazu einfach die Befehle mit einem Doppelpunkt : trennen.

Zum Schluß noch mal das komplette Listing:

Wer möchte kann das Programm nun speichern.

Legt dazu eine leere Diskette in die 1541 (oder ein kompatibles Laufwerk) ein.
Im Emulator könnt ihr bei Bedarf eine leere Diskette erzeugen. Geht dazu bei WinVICE auf Datei -> Disk Image einlegen -> Laufwerk 8. Wechselt im oberen Bereich in das gewünschte Verzeichnis z. B. „C:\C64\Basic„. Gebt im darunter befindlichen Feld einen Windows-Dateinamen ein z. B. „Retro-Programming-BASIC.d64„. Weiter unten steht „Neue Image Datei„ unter Name gebt den C64-Namen für die Diskette ein z. B. „mein basic„ und klickt zuerst auf „Image Datei erzeugen (es tut sich anscheinend nichts, aber das File wurde erzeugt) klickt abschließend auf „Einlegen„ und die leere Diskette befindet sich im virtuellen Laufwerk 8.
Nun könnt ihr eure Arbeit mit SAVE „BEISPIEL1„,8 speichern. Ob alles geklappt hat, kontrolliert ihr mit LOAD„$„,8 und anschließemden LIST. Das Programm ist nun aus dem Speicher verschwunden und wir sehen den Inhalt der Diskette. Wer sich nun wundert, wo unser Disketten-Name, bei mir „mein basic„ (s. o.) geblieben ist, der versteckt sich nur, da ich den Namen in Kleinbuchstaben geschieben habe.

Zeichensatz-1

Gebt ohne Zeilen-Nr. POKE 53272,23 ein und er wird sichtbar. In der Speicherstelle 53272 steht, welchen Zeichensatz der C64 verwenden soll. Schreiben wir eine 23 dort hin, wird der 2. Zeichensatz (Groß- / Kleinschreibung) aktiviert, „poked„ eine 21 an diese Speicherstelle und es erscheint wieder der gewohnte Zeichensatz.

Zeichensatz-2

Auf den Bildern seht ihr noch zwei weitere Besonderheiten.
1. Man muss KEINE Leerzeichen eingeben. Ihr könntet z. B. 10PRINTRND(1) schreiben. Die 10 und das PRINT werden nachträglich getrennt (vgl. LIST), aber der Rest klebt weiterhin aneinander. Das das nicht sonderlich übersichtlich ist, sollte jedem klar sein und wer so programmiert, viel Spass bei der Fehlersuche.
2. Für Tippfaule gibt es die Möglichkeit Befehle abzukürzen meist in dem man den ersten Buchstaben eingibt und den zweiten dann mit <SHIFT>+Buchstabe z. B. für LOAD erst ein L und dann <SHIFT>+O dadurch entsteht der Winkel im Bild. Eine Ausnahme bildet PRINT der Befehl lässt sich durch ein einfaches Fragezeichen ? abkürzen. Gebt ihr so Programmzeilen ein, erscheinen die Befehle nach einem LIST wieder ausgeschrieben.

Gebt nun NEW ein und schaut anschließend mit LIST nach, ob wirklich nichts mehr angezeigt wird. Alternativ könnt ihr den C64 auch aus und wieder anschalten, bzw. wenn vorhanden den Reset-Knopf drücken (ALT+R in WinVICE). Um das Programm erneut zu starten gebt LOAD„BEISPIEL1″,8 ein. Sobald es geladen wurde könnt ihr euch mit LIST davon überzeugen, dass das Programm wieder da ist und es mit RUN erneut starten.

Wenn ihr das Programm laufen lasst, könnt ihr schon eines der Probleme von BASIC erkennen. Es ist unsäglich langsam. Man kann ja förmlich zusehen, wie der Text auf dem Bildschirm erscheint. Aber die bereits erwähnten und noch kommenden Speicherstellen (beim POKE), werden im Assembler-Teil wiederkehren, daher war nicht alles vergebens.

Im Emulator gibt es noch eine weitere Möglichkeit seinen Fortschritt zu speichern. Der Emulator kann ein Snapshot erzeugen, dabei wird der aktuelle Zustand des Emulators in einer Datei gespeichert. Wenn ihr den Snapshot wieder ladet, findet ihr den „C64„ so vor, wie ihr ihn verlassen habt. Allerdings benötigt ein Snapshot etwas mehr Festplattenspeicher und das Format unterliegt keinem Standard. Ein Disketten-Image, z. B. *.d64 könnt ihr mit jedem Emulator öffnen, den Snapshot nur mit dem, der diesen erstellt hat.

Wer das obige Beispiel direkt am C64 oder im Emulator eingetippt hat, der ist bestimmt „erfreut„ über die tollen Editiermöglichkeiten ;-).
Ich kann aber nur jedem Einsteiger raten, die Programme selbst abzutippen, statt einfach nur das Disk-Image zuverwenden. Nur so macht man eigene Fehler und lernt diese zu finden und zu beheben. Es gibt aber einen etwas bequemeren weg, der zumindest das Editieren komfortabler gestaltet.

Für die folgenden Beispiele empfehle ich diesen Weg, den ich auch selbst bei der Erstellung dieser Programme genommen habe.

Legt euch (falls noch nicht geschehen) ein BASIC Verzeichnis z. B. „C:\C64\BASIC„ an.
Kopiert aus dem WinVICE-Verzeichnis das Programm petcat.exe in euer BASIC-Verzeichnis.
Speichert diesen Batch DoPrg.cmd im selben Verzeichnis.
Öffnet nun euren bevorzugten Texteditor (der Windows Editor / Notepad reicht vollkommen) und tippt das bekannte Listing ein. Dabei ist es wichtig, dass ihr ALLES klein schreibt, sonst werden aus den Texten die graphischen Zeichen des C64, die man mit <SHIFT>+Buchstabe erzeugt und man hat lauter lustige Zeichen, aber kein ausführbares Programm. Probiert es einfach mal aus, falls ihr mir nicht glaubt…

Speichert den Text in eurem BASIC-Verzeichnis z. B. als „retroprog.txt„, die Endung könnt ihr freiwählen (z. B. auch „.bas„, damit ihr gleich erkennt, dass es sich um einen BASIC-Quelltext handelt).
Zieht jetzt im Windows-Datei-Explorer die Datei „retroprog.txt„ auf den Batch DoPrg.cmd. Es erscheint kurz ein Kommandozeilen-Fenster und anschließend findet ihr die Datei retroprog.prg in eurem BASIC-Verzeichnis.
Startet WinVICE, falls es noch nicht läuft und zieht nun die Datei „retroprog.prg„ einfach ins WinVICE-Fenster….voiala da ist unser bekanntes Programm.

Hier nochmal ein Bild mit den einzelnen Schritten:
DragDrop_Basic

Wer will kann den BATCH auch so ändern, dass WinVICE automatisch mit dem erstellten Programm gestartet wird. Es gilt nur zu beachten, dass jedesmal eine neue Instanz von WinVICE geöffnet wird.

Nun, zugegeben was wir bisher gemacht haben war nicht sonderlich spektakulär, aber es schafft die Basis für eins der Highlights des C64…

 


Schrott!!Naja...Geht so...Ganz gut...SUPER! (12 Bewertungen | Ø 4,92 von 5 | 98,33%)

Loading...


 

<<< zurück | weiter >>>

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Protected by WP Anti Spam