![]() |
![]() |
In den vorangegangen Kapiteln haben wir die Pfeiler des Programmierens kennengelernt. Mit PRINT, INPUT, LET, GOTO und IF können Sie schon fast alles programmieren. Aber es ist etwas mühsam. Der C16 bietet Ihnen nicht nur diese elementaren Befehle, sondern noch einiges drumherum. Dies soll in diesem und den folgenden Kapiteln besprochen werden.
Daher gibt es ohnehin eine Grundregel beim Programmieren:
Weise jeder Variablen (jedem Speicher) innerhalb des Programms einen Anfangswert zu - entweder mit LET oder mit INPUT. |
Man soll es also gerade nicht so machen, wie wir in den vorangegangenen Kapiteln (aus der Not heraus): Mit Variablen arbeiten, die im Programm selbst nicht gesetzt wurden.
Um hier Fehler leichter erkennen zu können, ist es möglich, vor dem Programmstart alle Variablen auf einmal zu löschen. Das macht man mit dem Kommando CLEAR. Man sollte also vor jedem Start des Programms ein CLEAR eingeben. Um sich das zu ersparen, gibt es das RUN-Kommando. Es ist eine Kombination aus CLEAR und GOTO: Zuerst alles löschen, dann loslegen. Es ist üblich, Programme mit RUN zu starten.
Wahrscheinlich ist es ihnen schon längst aufgefallen: Wenn Sie zwei Programme hintereinander im Speicher stehen haben, dann kann es leicht passieren, dass beim Start des ersten Programms das zweite mit ausgeführt wird. Wenn Sie anfangs das erste Programm in den Zeilen 1 bis 4 und das zweite ab Zeile 10 stehen hatten, dann wurde bei GOTO 1 natürlich alles ausgeführt, Zeile 1 bis 4 und dann weiter ab Zeile 10. Kann man das auch trennen? Kann man. Mittels dem END-Befehl. Kommt das Programm an ein END, dann beendet es das Programm.
10 INPUT A 20 IF A=1 THEN GOTO 110 30 IF A=2 THEN GOTO 150 110 INPUT A 120 INPUT B 130 PRINT A+B 140 END 150 INPUT A 160 INPUT B 170 PRINT A-B 180 END
Dieses Programm nimmt zuersteinmal eine Zahl entgegen. Mit dieser Zahl wird aber nicht gerechnet, sie wird als ein Schalter verarbeitet. Wurde 1 eingegeben, verzweigt das Programm nach 110 und summiert zwei Zahlen auf. Wurde 2 eingegeben, verzweigt das Programm nach 150 und bildet die Differenz aus zwei Zahlen. Der END-Befehl sorgt dafür, dass das Programm nicht vom Summe-Teil in den Differenzteil läuft.
Im Grunde der gleiche Befehl ist der STOP-Befehl. Er verursacht nur eine andere Antwort des Rechners. Nach einem END-Befehl antwortet er mit "READY", nach einem STOP-Befehl mit "BREAK IN LINE XXX" (XXX steht hier für eine Zeilennummer). Daher wird STOP zum Testen des Programms benutzt. Im entgültig laufenden Programm wäre der STOP-Befehl nicht so gut, weil "BREAK" ja heisst: Das Programm wurde unterbrochen, eigentlich müsste es weiterlaufen. Da ist was schiefgelaufen. Und das kann dann den Nutzer (auch Sie selbst) irritieren.
Wahrscheinlich haben Sie sich schon ziemlich geärgert. Es ist ja ganz schön, das Programmieren, aber wenn man nach jedem Beenden des C16 (also von Yape), bzw. nach dem Herunterfahren des PC's alle Programme wieder eintippen muss - das kann doch nicht wahr sein. Kann sich der C16 die eingegebenen Programme nicht behalten?
Um sich noch ein bisschen mehr zu ärgern: Es war durchaus beabsichtigt, dass Sie das/die Programme an jedem Morgen neu eintippen. Das schafft Bewußtsein, lässt das Gefühl für "Speicher" vom Verstand ins Herz sickern. Der Speicher des C16 (und des PC's, der vom C16 angesteuert wird), ist elektronischer Speicher. Alles wird irgendwie in elektrischen Schaltkreisen gespeichert. Ist der Strom weg, ist auch der Speicherinhalt weg. Bei Taschenrechnern ist das auch so - nur ist da der Strom nie weg, da die Batterie den Speicher auch in ausgeschaltetem Zustand mit Strom versorgt.
Diesen elektronischen Speicher nennt man Hauptspeicher. Dort werden sowohl die Variablen als auch das Programm gespeichert. Wir werden an anderer Stelle noch näher darauf eingehen. Jetzt interessiert uns erstmal, welche Wege es gibt, den Hauptspeicherinhalt, besonders das Programm permament zu sichern.
Wir haben nun den Komfort, den Königsweg gehen zu können. Ihr PC hat (wahrscheinlich noch) ein Diskettenlaufwerk. Das wäre das praktischste. Ein USB-Stick oder eine Speicherkarte wären auch gut. Das ist natürlich nicht das gleiche wie damals das beim C16. Vor allem Speicherkarten fassen viel mehr Daten und sind schneller. Aber das schadet ja nichts. Zuerst muss das entsprechende Laufwerk (bei der Diskette wäre es A:) für den C16 zugänglich gemacht werden. Dazu schieben Sie erstmal eine Diskette/Speicherkarte ins Laufwerk, bzw. stöpseln einen Stick an. Dann gehen Sie mit der Maus in das Menü "File" des Emulators und dort zu "Attach Disk Image" und dann nach rechts zu "Drive 8".
Nun müssen Sie sich eine virtuelle Diskette erzeugen. Dazu klappen Sie ganz oben das Ordner-Menü auf und gehen auf "31/2-Diskette A:" oder auf "Wechseldatenträger".
Dann geben Sie der virtuellen Diskette einen Dateinamen, z.B. "mydisk". Nun erzeugen SIe die Diskette durch Klick auf "Create Image" ganz unten. Und dann klicken Sie weiter oben auf "Attach". Damit haben Sie Ihre virtuelle Diskette erzeugt und angeschlossen.
Ab jetzt können Sie Ihre Programme auf der Diskette speichern. Dazu benutzen Sie das Kommando SAVE wie bei Kassetten. Der Unterschied besteht darin, dass Sie noch zwei Dinge zusätzlich angeben müssen: Einen Programmnamen und die Zahl 8. Eine Speicherung geht also durch
SAVE "MEINPROG",8
Das war's schon. Die Zahl 8 ist etwas mysteriös. Es handelt sich hier um eine Gerätenummer: Der Kassettenrecorder hat die 1 (was weggelassen werden kann) und das Diskettenlaufwerk die Nummer 8. Warum die 8 und nicht die 2, das weiss ich nicht.
Laden tut man mit dem LOAD-Kommando analog:
LOAD "MEINPROG",8
Allerdings funktioniert das nur, falls - wie jetzt - nach dem Starten des Emulators auch eine virtuelle Diskette "attached" wurde. Wollen Sie an Ihre virtuelle Diskette nach einem Neustart des Emulators wieder herankommen, gehen Sie wie oben wieder in das Fenster "Attach disk image", wählen im Dateifenster die Datei "mydisk1", die die virtuelle Diskette verkörpert und gehen auf "Attach". Anschliessend ist die virtuelle Diskette wieder angeschlossen und das LOAD funktioniert.
Und fertig ist die Laube. Wir können nun nicht nur ein Programm abspeichern, sondern derer mehrere - soviel, wie eben auf der Diskette Platz haben (mehr zum Platz im Kapitel "Bits und Bytes"). Wir müssen ihnen nur unterschiedliche Namen geben.
Wenn man die Übersicht verloren hat, was da eigentlich so alles auf der Diskette drauf ist, kann man das Kommando DIRECTORY eingeben. Daraufhin listet der C16 den Inhalt der Diskette auf - alle Programme, die schon gespeichert wurden.
Das sieht dann vielleicht so aus:
1 "MEINPROG" PRG 1 "PROG2" PRG 1 "RECHNEN" PRG
Die erste Spalte zeigt die Grösse des Programms in s.g. Blocks. Bis jetzt haben unsere Programme alle offensichtlich nur einen Block Grösse. (Die Einheit "Block" ist veraltet - das brauchen Sie sich nicht zu merken.) Dann kommt der Name. Und dann noch "PRG", was "Programm" bedeuten soll. Das ist der Dateityp. Es kann auch noch andere Dateitypen geben; damit werden wir uns noch beschäftigen.