Commodore 64 Zettelkasten
In ancient times, computer programs were shared as software listings in magazines. You had to type the code yourself.
Now recently on Mastodon a C64 BASIC listing for a Zettelkasten was shared. Unlike normal code listings, this is a hexdump listing, so you'd be typing pages of hexadecimal codes.
It's much tougher to debug arbitrary hex characters than it is to debug BASIC syntax.
If anyone with a C64 is inclined to do so, please share screenshots
https://archive.org/details/run-de-1986-10/page/120/mode/2up?
Translation of the article's intro
Conventional file programs restrict the user to rigid structures. The number and length of the individual data fields must be defined in advance. This concept is too restrictive for many applications. "Zettelkasten", a screen-oriented "free" file manager, shows that there is another way.
With "Zettelkasten" you can edit any screen pages. They are stored in compressed form in the memory. This means that considerably more data records can be managed. Depending on their length, up to 256 records can fit in the memory. The design of the pages is also recorded, as the color information and font mode are saved. As all data is permanently stored in RAM, "Zettelkasten" has very short access times. This is evident when searching, for example. The data can be saved as a program file on diskette or cassette at any time.
The program is located at the beginning of the base ($0801
-$195a
). The $c000
area is deliberately kept free, for example for Turbo Tape. The current storage medium is defined by the memory location $0894
. The diskette station is preset. If you write the value 0
in the memory location, the data disk is selected. The main menu:
File management without fixed fields: "Card box" frees you from the constraints of predefined data structures.
--- Translated with DeepL.com (free version)
German text
If anyone wants to translate the rest via DeepL and make sense of the terms in the context of C64, see below or the archive.org page (which has excellent OCR, it seems!)
German text from archive.org
Datei frei
Herkömmliche Dateiprogramme legen den Anwender auf starre Strukturen fest. Anzahl und Länge der einzelnen Datenfelder müssen vorab definiert werden. Für viele Anwendungen ist dieses Konzept zu eingeengt. Daß es auch anders geht, zeigt „Zettelkasten“, eine bildschirmorientierte „freie" Dateiverwaltung.
Mit „Zettelkasten“ kann man beliebige Bildschirmseiten editieren. Sie werden in komprimierter Form im Speicher abgelegt. So können erheblich mehr Datensätze verwaltet werden. Je nach ihrer Länge passen bis zu 256 Sätze in den Speicher. Auch die Gestaltung der Seiten wird festgehalten, denn die Farbinformationen und der Schriftmodus werden gespeichert. Da alle Daten permanent im RAM liegen, hat „Zettelkasten" sehr kurze Zugriffszeiten. Das zeigt sich beispielsweise beim Suchen. Die Daten können jederzeit als Programmfile auf Diskette oder Kassette abgespeichert werden.
Das Programm liegt am Basicanfang ($0801
—$195a
). Der $c000
-Bereich wird bewußt freigehalten, zum Beispiel für Turbo Tape. Das aktuelle Speichermedium wird durch die Speicherstelle $0894
festgelegt. Voreingestellt ist die Diskettenstation. Schreibt man in die Speicherstelle den Wert 0
, dann wird die Datasette gewählt. Das Hauptmenü:
Dateiverwaltung ohne feste Felder: „Zettelkasten“ befreit vom Zwangskorsett vordefinierter Datenstrukturen.
Im Hauptmenü stehen fünf Punkte zur Auswahl:
A: Aktuelles Speichermedium
Hier kann man einstellen, ob „Zettelkasten“ mit der Diskettenstation oder mit dem Kassettenrekorder arbeiten soll.
L: Laden einer Datei
„Zettelkasten" fragt nach dem Dateinamen. Dann wird die gewünschte Datei geladen. Beim Ladevorgang wird der bisherige Speicherinhalt gelöscht. Versucht man, eine nicht vorhandene Datei zu laden, zeigt die Floppystation den Fehler durch die blinkende LED an. „Zettelkasten“ springt dann ins Hauptmenü zurück. Auch in diesem Fall wird der Speicherinhalt gelöscht. Gibt man einen Leerstring ein, wird die Ladefunktion abgebrochen. Der Speicherinhalt bleibt dabei erhalten.
S: Speichern einer Datei
Nach der Eingabe des Dateinamens speichert „Zettelkasten" den aktuellen Speicherinhalt ab. Da „Zettelkasten“ nicht mit der fehlerhaften Funktion „Save with replace" arbeitet, darf der Dateiname auf der Diskette nicht schon vorhanden sein. Sollte das der Fall sein, blinkt die Floppy, und „Zettelkasten" springt ins Hauptmenü. Die Datei auf der Diskette wird dadurch nicht verändert.
X: Zurück ins Basic
Der Befehl Exit führt einen BasicKaltstart durch (entspricht einem NEW — Datenzeiger werden zurückgesettzt!).
E: Editor aufrufen
Im Editor steht dem Benutzer bis auf die ersten drei Zeilen der gesamte Bildschirm für die Dateneingabe zur Verfügung. In der ersten Zeile werden angezeigt: aktueller Datensatz, Anzahl der sich im Speicher befindenden Datensätze, Rahmen- und Hintergrundfarbe (werden numerisch angezeigt). In der zweiten Zeile sind die Befehlstasten aufgeführt. Die Befehlseingabe erfolgt durch gleichzeitiges Drücken der Commodore-Taste und der entsprechenden Befehlstaste.
Die dritte Zeile enthält einen Trennstrich aus 40 Minuszeichen. Die Editorbefehle:
+: Einen Datensatz weiter
„Zettelkasten" blättert einen Datensatz weiter. Ist der letzte Datensatz erreicht, dann wird dieses Kommando ignoriert.
—: Einen Datensatz zurück
Dieses Kommando blättert einen Datensatz zurück. Befindet man sich bereits im ersten Datensatz, hat die Eingabe keine Auswirkung.
X: Zurück ins Hauptmenü
„Zettelkasten“ springt ins Hauptmenü zurück.
L: Löschen des angezeigten Datensatzes
Der angezeigte Datensatz wird gelöscht. Die folgenden Datensätze werden vorgezogen. Die Gesamtzahl der Datensätze verringert sich um eins.
E: Einfügen eines Datensatzes
Der aktuelle Bildschirm wird vor die angezeigte Datensatznummer eingefügt. Er erhält diese Nummer. Die folgenden Datensätze werden um eins nach hinten geschoben.
A: Anhängen eines Datensatzes
Der angezeigte Bildschirm wird hinter dem bisher letzten Datensatz abgelegt.
V: Verbessern/Übernehmen eines Datenbildschirms
Nach dem Editieren kann der aktuelle Bildschirminhalt in den angezeigten Datensatz übernommen werden. Dessen bisheriger Inhalt wird dadurch überschrieben.
I: Insert Line
An der aktuellen Cursorposition wird eine Leerzeile eingefügt. Da-bei verschiebt sich der unter dem Cursor liegende Bildschirmteil um eine Zeile nach unten. Die unterste Zeile wird dadurch gelöscht.
F: Find
Dieser Befehl durchsucht alle Datensätze nach einem Ausdruck. Ist ein Begriff gefunden worden, kann mit der Leertaste weitergesucht werden. Mit der Returntaste wird die Suche abgebrochen. Da die Daten komprimiert im Speicher abgelegt sind, muß man folgendes beachten: Enthält das gesuchte Wort mehrere gleiche Buchstaben hintereinander, dann darf nicht zwischen ihnen getrennt werden. Beispiel:
Gesucht wird das Wort „Sauerstoffflasche". Gibt man als zu suchenden String „flasche“ ein, findet „Zettelkasten“ den Datensatz nicht. Der Suchstring „offflasch" findet ihn jedoch, da bei den „fff" die Anzahl der aufeinanderfolgenden gleichen Zeichen in Suchbegriff und Datensatz übereinstimmt.
=: Ausfüllen eines Bildschirmfensters
Mit den Cursorsteuertasten werden die linke obere und die rechte untere Ecke des Fensters auf dem Bildschirm markiert und jeweils mit einer beliebigen Taste fixiert. Das Fenster wird mit dem Zeichen gefüllt, mit dem die rechte untere Ecke fixiert wurde (auch Space und Graphikzeichen).
Z: Zeile löschen
Die Zeile, in der sich der Cursor befindet, wird gelöscht. Der Bildschirm unterhalb dieser Zeile wird um eine Zeile nach oben geschoben.
U: Zeichensatz umschalten
Dieses Kommando schaltet zwischen Groß/Graphik- und Groß/ Kleinschrift-Modus um.
R: Rahmenfarbe ändern
Das Register für die Rahmenfarbe erhöht sich um eins. Ist die Rahmenfarbe 15 erreicht, wird wieder bei null begonnen.
H: Hintergrundfarbe ändern
Dieser Befehl verhält sich analog zum „R"-Befehl.
T: Farbe der Kommandozeilen ändern
Auch dieses Kommando funktioniert wie der „R"-Befehl. Die Farbe der Kommandozeile wird beim Saven nicht abgespeichert.
W: Window
Der Inhalt eines Bildschirmfensters (mit Farbe) wird in einen Puffer geladen. Man positioniert das Fenster wie beim „="-Befehl. Der aktuelle Datensatz wird durch diesen Befehl nicht verändert.
+: Puffer-Ausgabe
Der Pufferinhalt (siehe „W"-Befehl) wird in den aktuellen Bildschirm kopiert. Die linke obere Ecke des Fensters definiert man mit den Cursortasten. Ein Tastendruck startet das Kopieren. Hat man nach dem letzten „W"-Befehl einen „="-Befehl ausgeführt, dann enthält der Puffer das mit diesem Befehl gefüllte Rechteck. Das Programm ist als kombinierter Hexdump-Basiclader abgedruckt. Wie man mit dieser Art von Listing umgeht, steht auf Seite 76. Wird das Programm als Basiclader eingegeben, so muß der Lader vor dem Start abgespeichert werden. Nach RUN werden dann die Daten in den Speicher gepoket. Das fertige Maschinenprogramm kann dann mit
poke 43, 1:poke 44, 8 poke 45, 90:poke 46, 25 save "name",8
auf Diskette abgespeichert werden. Wird es als Hexdump eingegeben, so muß der Checker benutzt werden. Als Startadresse ist 0801 anzugeben. (Udo Fischer)
Author at Zettelkasten.de • https://christiantietze.de/
Howdy, Stranger!
Comments
I got a VC 20 when I was 8 years old. (~1982)
My aunt had a TV with teletext at the beginning of the 80s. I was thrilled with it. The remote control was like a control center. I played with it for hours on every visit. Unfortunately we didn't have such a thing, so I created it myself on the Commodore.
How I did that as an 8-year-old without the Internet is a mystery to me. I only remember that I got quite far with if go to and print.
Thanks for the path you've laid in my memory with this article!