#147 – el commodore – VI – save stuff

Nachdem wir uns bisher überwiegend mit dem Ladevorgang bestehender Programme beschäftigt haben, wird es Zeit auch mal selbst ein paar Daten zu schreiben! 🙂

Mal überlegen… Was brauchen wir dafür? In jedem Fall Speicherplatz. Den bekommen wir in Form einer neuen, noch unbenutzten Diskette! 🙂

Schnell ab damit ins Laufwerk! 🙂

Doch was ist das? Beim Versuch den Inhalt der Diskette zu laden, bekommen wir einen kryptischen Fehler (?FILE NOT FOUND) angezeigt:

Tja, der Unterschied zu den bisherigen Disketten ist, dass diese noch komplett neu – und somit nicht formatiert ist! Damit unser Laufwerk etwas mit der Disk anfangen kann, muss diese erst mal „formatiert“ werden. Hm, formatieren? Was soll das bedeuten? Und überhaupt – wie werden eigentlich die Daten auf so einer Diskette gespeichert? Ich befürchte dafür muss ich kurz ausholen, aber ich verspreche mich kurz zu halten! 😉

Zur Erinnerung: Die Diskette besteht intern aus einer runden Scheibe, welche mit einer magnetisierbaren Schicht überzogen ist. Diese Schicht ist in eine Vielzahl von Spuren aufgeteilt, welche dann jeweils mehrere Sektoren fassen. Der Datenträger selbst hat also bereits eine gewisse „Struktur“.

Soweit so gut, aber wie werden jetzt Daten in diesen Sektoren gespeichert? Damit tatsächlich Daten auf die Diskette geschrieben werden können, wird ein Dateisystem benötigt. Dieses organisiert den Datenträger, bzw. die einzelnen Sektoren in noch kleinere Bereiche, in denen letztendlich die Daten in binärer Form (1 und 0) vorliegen.

Im Falle des C64 kommt das CBM-Dateisystem zum Einsatz. In jedem Sektor (jeweils 256 Bytes) wird dabei ein Block gespeichert, welcher 254 Byte an Daten enthalten kann. Jedes einzelne Byte beinhaltet wiederum acht Bit, was letztendlich gut 2000 einzelnen „0-und-1-en“ pro Block entspricht.

Fun Fact: Die ersten beiden Bytes eines Sektors werden zur Dateiverwaltung benötigt und können nicht vom Benutzer verwendet werden.

Und wie können diese Informationen geschrieben, bzw. ausgelesen werden? Der Magnetkopf (auch Schreib-Lese-Kopf genannt) des Laufwerks wird auf einen entsprechenden Sektor positioniert und schleift dann direkt auf der magnetisierbaren Oberfläche, während die Scheibe von einem Motor gedreht wird.

Beim Schreibvorgang arbeitet der Kopf als Elektromagnet und magnetisiert die entsprechenden Stellen auf der Diskette im Rhythmus der Information (1 oder 0) um digitale Daten zu repräsentieren. Beim Lesevorgang bewirkt diese Magnetisierung, dass der Schreib-Lese-Kopf (durch Induktion einer kleinen Spannung in der Spule) erkennen kann, ob es sich um eine 1 oder eine 0 handelt.

Laaaangweilig – so viel Theorie! Erzähl doch lieber mal, was wir jetzt tun müssen, um die Diskette verwenden zu können? Ist ja gut! 😉 Jetzt kommt das Formatieren ins Spiel. Beim „Formatieren“ werden die einzelnen Spuren und Sektoren identifiziert und gekennzeichnet. Zusätzlich wird der Datenträger mit dem CBM-Dateisystem bestückt. Hierfür müssen wir lediglich den etwas kryptischen Befehl „OPEN 1,8,15,“N:RETROLOLO,42“: CLOSE1“ eingeben.

Fun Fact: Die Zahl 42 ist völlig willkürlich gewählt und steht für die Disk-ID. Letztendlich muss nur eine zweistellige Zeichenkombination angegeben werden.

Ist das geschafft, können wir uns den Inhalt der Diskette (LOAD“$“,8 + LIST) anzeigen lassen. Und siehe da, unsere RETROLOLO-Diskette wird erkannt und ist bereit bespielt zu werden. Jede Diskette kann bis zu 664 Blocks an Daten aufnehmen. Das entspricht ca. 166 KByte an Speicherplatz – abgefahren! Theoretisch könnten wir sogar noch die Rückseite formatieren und verwenden (dann hätten wir weitere 166 KByte zur Verfügung), aber ich denke fürs Erste reicht mir der Speicherplatz locker aus. 😀

Fun Fact: Im Beispiel habe ich den Befehl „LIST“ durch „L“ und einen umgefallenen Viertelkreis (lässt sich durch „SHIFT“+„I“ eingeben) abgekürzt. Funktioniert genauso und sieht mega lässig aus! 😉

So leer macht die Diskette aber noch nicht viel her, es wird Zeit, dass wir endlich ein paar Daten darauf bekommen! Tja, welche Daten können wir denn eigentlich darauf speichern? Und wie geht das überhaupt?

Fangen wir einfach an… Erinnert ihr euch noch an das kleine Beispielprogramm aus Artikel 142? 😉

Dieses (von mir soeben nochmal eingetippte Programm) können wir mit einem einfachen „SAVE“RETROLOLO“,8“-Befehl auf die Diskette speichern:

Ob der Sicherungsvorgang geklappt hat? Nach einem „LOAD“$“,8 + LIST“ wissen wir mehr:

Fun Fact: Die Auflistung des Disketteninhalts, welche man durch den LIST-Befehl bekommt, nennt sich „Directory“. Jede Diskette besitzt so ein Directory. Darin werden bestimmte Metainformationen zu Dateien wie Dateiname, Dateigröße oder Dateityp gespeichert. Es dient als Übersicht und Ausgangspunkt für den Zugriff auf Dateien.

Da sich nur ein Programm auf der Diskette befindet können wir es mit einem „LOAD“*“,8,1“-Befehl laden. Damit wird das erste gefundene Programm auf der Diskette geladen! 🙂

Funktioniert immer noch ohne Probleme! 🙂

Fun Fact: Das CBM-Dateisystem kann unterschiedliche Arten von Dateien verwalten. Neben Programmdateien (PRG) für BASIC- oder Maschinensprache-Programme können auch sequentielle Dateien (SEQ), relative Dateien (REL) und User-Dateien (USR) gespeichert werden. Keine Angst – ich werde nicht auf die einzelnen Typen eingehen, genug Theorie für heute! 😉

Nachdem das so gut geklappt hat, möchte ich noch versuchen, ein Spiel von der Turbo Tape Kassette zu sichern! 🙂

Fun Fact: Tatsächlich lassen sich „normale“ Spiele von Datassette ohne weitere Software gar nicht so einfach auf eine Diskette kopieren. Das klappt nur, wenn ein Spiel nur aus einer PRG-Datei besteht und nicht automatisch startet (AUTORUN). Die meisten Spiele bestehen aus mehreren Dateien oder besitzen gar einen Kopierschutz! 🙁

Ich habe lange überlegt welches Spiel ich testweise auf die Diskette kopieren könnte. Eigentlich hätte ich mich ja gerne für Donkey Kong entschieden, aber das lässt sich ja leider nicht laden. Um den Sicherungsvorgang in vertretbarer Zeit zu testen, habe ich mich letztendlich für eine simple Billiard-Simulation entschieden! 🙂

Um das Spiel auf Diskette zu kopieren müssen wir es zuerst mal via Turbo Tape suchen und laden.

Sobald das Spiel im Speicher liegt, können wir mit einem „SAVE“BILLIARD“,8“-Befehl auf die RETROLOLO-Diskette speichern:

Um zu überprüfen, ob das Spiel auch auf der Diskette liegt, muss wieder „LOAD“$“,8 + LIST“ abgesetzt werden – den Befehl kennen wir ja mittlerweile schon fast auswendig! 😉

Und siehe da – das Programm wurde ohne Probleme mit auf der Diskette gespeichert. Wow – es sind sogar noch ganze 629 Blöcke frei! Wie soll ich nur jemals diesen gigantischen Speicherplatz voll bekommen? 😀

Fun Fact: Tatsächlich besitzt eine für den C64 formatierte Diskette theoretisch 683 Blöcke. Allerdings sind nur 664 Blöcke nutzbar, denn die restlichen 19 Blöcke (Spur 18) sind fest für organisatorische Strukturen vorgesehen(wie z.B. für das Verzeichnis mit den Dateinamen sowie die BAM (Block Availability Map zur Verwaltung freier Blöcke).

Natürlich habe ich auch getestet, ob sich das Programm noch via „LOAD“BILLIARD“,8,1“ laden und anschließend „RUN“ starten lässt. Klappt! 🙂

Um der Diskette etwas mehr Glanz zu verleihen, habe ich sie mit einem Aufkleber versehen und in einen weißen Umschlag gepackt – schon viel besser! 😉

Als abschließende Challenge für heute wollen wir auch noch versuchen, das Billard-Spiel auf einer Kassette zu speichern! 🙂

Ich höre schon die Rufe: „Aber retrololo – haben wir das Spiel nicht von einer Kassette geladen?“ Das ist korrekt, allerdings war es dort im Turbo Tape Format gespeichert und kann so nicht direkt gestartet werden. Jetzt wollen wir noch versuchen es im „normalen“ Commodore-Format auf einer neuen, leeren Kassette zu speichern!

Ich habe mich dazu entschlossen es mit einer leeren C15-Kassette (Seite A und B haben jeweils 7,5 Minuten zur Verfügung) zu probieren. Commodore empfiehlt herkömmliche Ferrit-Kassetten (Eisenoxid, Typ I/IEC I) mit der Datassette zu verwenden, da der Schreibkopf des Geräts nicht auf Chromdioxid- oder gar Metall-Bänder ausgelegt ist. Man merkt sofort, dass es sich um eine „Datenkassette“ handelt, weil es kein Vorlaufband gibt und das Band sofort mit einer magnetisierbaren Eisenoxidschicht beginnt.

Fun Fact: Unabhängig davon lässt sich theoretisch  jede stinknormale Audiokassette dafür verwenden. Seht es mir nach, wenn ich nicht sämtliche Medien durchprobieren möchte – #Lebenszeit und so! 😉

Und wie speichert man jetzt etwas auf die Kassette? Zuerst muss das Spiel via Turbo Tape in den Hauptspeicher geladen werden. Anschließend kann der Speichervorgang mit einem „SAVE“BILLIARD““-Befehl angestoßen werden:

Fun Fact: Die Befehle sowie die Funktionsweise einzelner Komponenten kann man im „C64 Users Guide“ nachschlagen.

Um unser originales Tape nicht zu überschreiben, tauschen wir die Turbo Tape Kassette gegen die neue C15-Kassette aus und drücken (wie vom C64 angefordert) RECORD und PLAY gleichzeitig. Wichtig: Bandzählwerk resetten!

Jetzt heißt es abwarten, bis die Daten auf die Kassette geschrieben wurden. Als Bestätigung, dass gerade aufgezeichnet wird, leuchtet die rote LED auf der Datassette:

Nach wenigen Minuten ist der Sicherungsvorgang beendet. Das Laufwerk hört auf zu rattern und wir sehen eine Erfolgsmeldung in Form eines simplen „READY“ auf dem Bildschirm.

Es macht Sinn sich die Position auf dem Bandzählwerk zu merken und auf der Kassette (oder einem Inlay) zu vermerken. So weiß man, welche Software an welcher Stelle auf dem Band zu finden ist:

Natürlich habe ich auch getestet, ob sich das Spiel auch wieder von der Kassette laden lässt. Klappt! 🙂

Fun Fact: Rückwirkend betrachtet ist das mit dem Turbo Tape schon eine coole Sache, allerdings nervt mich etwas, dass das Format der via TT64 gespeicherten Programme dann nicht mehr nativ vom C64 (sondern nur noch mit vorgeschalteter Turbo Tape Software) gelesen werden kann. Dafür sind die Ladezeiten im Vergleich gigantisch. Selbst das kleine Billard-Spiel hat ohne Turbo Tape knapp drei Minuten gebraucht, bis es von Kassette geladen werden konnte. Mit Turbo Tape konnte die Ladezeit auf ganz entspannte 22 Sekunden runtergedrückt werden. Sehr cool!

Tja, was bleibt abschließend über die Datassette und die Diskette zu sagen? Als Medium mit „wahlfreiem Zugriff“ ist die Diskette ein wahrer Quantensprung für C64-Besitzer. Eigentlich bietet das Diskettenlaufwerk im Vergleich zur Datassette nur Vorteile, aber ein klarer Minuspunkt war der Preis. So ein 1541er-Laufwerk konnte mal schnell zehnfach so viel kosten wie eine Datassette. Ich denke das ist auch der Hauptgrund, wieso gerade in Europa (und vor allem England) die Datassette trotzdem so beliebt war. Sie war für Kunden und Softwareentwickler eine sehr günstige Möglichkeit Programme digital zu speichern und zu verbreiten.

So, bitte entschuldigt mich – ich geh jetzt erst mal ne Runde Minigolf spielen… 😉

Bis die Tage!

Write a comment