Nikolaus Heusler Archiv

Erschienen in 64'er Magazin, Ausgabe unbekannt · Originaldatei: FLEXLIST.TXT

Hinweis: Dies ist das an die Redaktion eingereichte Manuskript, nicht der gedruckte Endtext. Layout, Bildunterschriften, Korrekturen und Kürzungen der Redaktion können in der veröffentlichten Fassung abweichen.

FlexList - Der bessere File-Lister

Nein, nicht nur einfach schon wieder ein neuer File-Lister. FlexList gewährt auf vielfache Weise Einblick in Dateien aller Art: Hexadezimal, binär, im Ascii-Code und/oder im Bildschirmcode. Die Darstellungsarten lassen sich beliebig kombinieren (2048 Möglichkeiten), das Programm nutzt dabei immer die volle Bildschirmbreite. Das Listing läßt sich, ggf. auch nur teilweise, drucken. Dieses fünf Blocks kurze Utility überzeugt durch seine Vielseitigkeit, es steckt viel Liebe auch im Detail. FlexList darf in keiner Programmsammlung fehlen!

Nikolaus M. Heusler

Wie speichern Anwendungsprogramm, etwa Texteditoren ihre Daten? Wie funktioniert ein Programm intern? Welche Texte sind in einem Spiel, z.B. einem Adventure gespeichert? Was verbirgt sich hinter dem Listschutz? Das sind keine Geheimnisse, wenn Sie einen File-Lister anwenden. Hier werden Dateien Byte für Byte von Diskette gelesen und auf dem Bildschirm angezeigt. Für den C 64 gibt es nicht wenige Utilities dieser Art, von denen aber keines so flexibel und vielseitig ist wie der flexible File-Lister FlexList. In allen gängigen Codes lassen sich Dateien darstellen, welche dabei aktiv sind, bestimmen einzig und allein Sie als Anwender. Das Programm versucht auf alle Fälle, die volle Bildschirmbreite auszunutzenn. Bei reiner Ascii-Darstellug erscheinen 40 Bytes pro Zeile. Wählt man zusätzlich noch die Anzeige im Bildschirmcode des C 64, passen immerhin noch 19 Zeichen (19 + 19 + 1 Trennbyte) in die Zeile. Nutzt man alle Darstellungsarten, paßt nur noch ein Byte in jede Zeile. FlexList nimmt die Umformatierung selbständig vor, auf Wunsch auch mitten im Listing. Das Prinzip, nach dem FlexList arbeitet, basiert auf einer Idee, die schon 1986 von V. Hilbig vorgestellt und bis heute gründlich weiterentwickelt und in die Praxis umgesetzt wurde. Obwohl das Programm aus Gründen des Komforts vollständig in stark optimierter Maschinensprache geschrieben wurde, benötigen Sie zur Anwendung keinerlei Assemblerkenntnisse. FlexList läßt sich wie ein Basicprogramm laden, starten und ggf. kopieren. Geben Sie den Befehl ein

LOAD "FLEXLIST",8

Der Start erfolgt mit RUN. Legen Sie jetzt die Diskette ein, von der eine Datei gezeigt werden soll, und geben Sie den Dateinamen ein. Die Eingabe wird mit RETURN abgeschlossen. Betätigen Sie nur RETURN, ohne etwas einzugeben, übernehmen Sie die Vorgabe, das Dollarzeichen. Dann wird das Inhaltsverzeichnis der Diskette gezeigt. Die Directory-Routine zeigt auch verschlüsselte Directories aller Art, kaum ein bekannter Schutzmechanismus, nicht einmal drei Nullbytes bringen FlexList hier aus dem Konzept. Das liegt daran, daß alle Daten in Bildschirmäquivalente gewandelt werden. Liegt ein »geschütztes«, also auf Nichtlesbarkeit manipuliertes Inhaltsverzeichnis vor, so wird es hier immer richtig gelistet. Das Directory kann mit der STOP-Taste abgebrochen werden. Die Angabe einer Maske, etwa $U* ist möglich.
Wird nur ein leerer Filename (also Space und RETURN) eingegeben, verabschiedet sich FlexList und kehrt ins Basic zurück. Ein Neustart ist dann ggf. mit RUN möglich. Die Abfrage des Namens läßt auch Doppelpunkte, Anführungszeichen, Kommas sowie führende Leerzeichen zu. Nach dem Druck auf RETURN wird die Datei auf Diskette gesucht. Achtung, FlexList merkt aus technischen Gründen nicht, wenn es eine solche Datei nicht gibt! In diesem Fall wird später das Listing nach der ersten (unsinnigen) Zeile abgebrochen.
Es erscheint nun die Frage »Drucker?«. Anworten Sie hier mit J, listet das Utility bereits ab Beginn der Datei auf den Drucker mit. Ansonsten kann die Druckerausgabe später aber an jeder Stelle im Listing beliebig oft an- und wieder ausgeschaltet werden. Ein abgeschalteter Drucker wird hier (später nicht mehr) erkannt und gemeldet (»Nicht bereit!«). Betätigen Sie während der J/N-Abfrage die STOP-Taste, kehrt das Programm wieder zum Start zurück.
Gleiches gilt für die nächste Frage: »Startadresse?«. Antworten Sie hier mit J, so werden die ersten beiden Bytes des Files als Ladeadresse gedeutet. Bei den meisten PRG-Files ist das erwünscht. Soll dagegen ein SEQ- oder USR-File angezeigt werden, läßt sich mit N erreichen, daß keine Startadresse gelesen wird. Die Daten des Files beginnen dann mit dem ersten Byte, und der Zähler für die Adresse beginnt bei Null und zeigt mithin die Anzahl der Bytes im File an.
Jetzt beginnt das Listing. Voreingestellt ist die Ausgabe von Hexbytes mit Ascii-Zeichen, mit vorangestellter Adresse (bzw. Anzahl der Bytes) in hexadezimaler Darstellung mit trennendem Doppelpunkt ersetzt. Soll die Darstellungsart verändert werden, betätigen Sie die STOP-Taste. Nach der nächsten Zeile stoppt die Auflistung und eine Statuszeile erscheint:

Asc Bsc Cnt Dual End pOS GaP HeX pRt J:

Die Großbuchstaben geben die Tasten an, mit denen die Funktionen von FlexList aktiviert werden können. Ist ein Buchstabe invertiert, so wurde die entsprechende Funktion gewählt. Im einzelnen haben die Tasten folgende Bedeutung:

A)
Schaltet die Ausgabe des Files im Ascii-Code ein oder aus.

B)
Schaltet die Ausgabe im Bildschirmcode ein oder aus.

C)
Die Continue-Funktion bewirkt, daß das Listen, ggf. mit der neuen Einstellung, fortgesetzt wird. Die Statuszeile verschwindet wieder, und der Computer führt die Ausgabe an der Stelle fort, an der er unterbrochen wurde. Dies ist jedoch nur möglich, wenn mindestens eine der Darstellungsarten Asc, Bsc, Hex oder Dual aktiv ist. Die Optionen (ausgenommen Druckfunktion) bleiben außerdem auch nach einem Listing für die nächste Ausgabe aktiv.

D)
Schaltet die Binärausgabe ein oder aus. Ein Stern entspricht einem gesetzten Bit, ein Punkt soll ein gelöschtes Bit darstellen.

E)
Beendet das Listing vorzeitig und führt wieder zurück zur Eingabe des Filenamens, allerdings unter der bei C) angesprochenen Einschränkung. Steigen Sie jetzt durch eine Leereingabe aus FlexList aus und speichern das Programm mit dem SAVE-Befehl, werden die zuletzt gewählten Einstellungen als Defaults für diese Version mitgespeichert (ausgenommen Druckerwahl).

O)
Schaltet die hexadezimale Ausgabe des Adreßzählers zu Beginn jeder Zeile ein oder aus.

S)
Schaltet die dezimale Ausgabe des Adreßzählers zu Beginn jeder Zeile ein oder aus.

G)
Schaltet das trennende Leerzeichen zwischen den Bytes bei der dualen und hexadezimalen Ausgabe ein oder aus.

P)
Schaltet die Funktion ein oder aus, die bei abgeschaltetem Leerzeichen sowie bei den Darstellungsarten Asc und Bsc jeder zweiten Spalte eine andere Farbe gibt, ein oder aus. Bei eingeschalteter Farbumschaltung erscheint jede zweite Spalte in einem anderen Grau, damit lassen sich die einzelnen Kolonnen besser unterscheiden, allerdings kann dies bei Textausgaben zur Verwirrung führen. Das Feature ist nach dem Start eingeschaltet.

H)
Schaltet die hexadezimale Ausgabe der Bytes ein oder aus.

X)
Wählt bei hexadezimaler Ausgabe von Datei-Inhalt oder Adressen, ob die Buchstaben A bis F klein (Voreinstellung) oder groß (wenn das »X« invertiert ist) ausgegeben werden sollen.

R)
Schaltet die Druckerausgabe ab der nächsten Zeile an oder aus. An dieser Stelle wird nicht mehr geprüft, ob der Drucker eingeschaltet und ansprechbar ist!

J)
Schaltet die Ausgabe eines trennenden Doppelpunkte nach der Ausgabe der Adresse vor den Daten ein oder aus.

Ist das File beendet, erscheint die Meldung (RETURN). Mit der RETURN-Taste kehren Sie jetzt zur Eingabe des Filenamens zurück, mit einer Leereingabe kann das Programm dort dann verlassen werden.
Bemerkung zum Format des Listings: Sind alle Ausgabemodi eingeschaltet, wird nur noch ein Byte pro Zeile angezeigt. Ideal ist diese Einstellung beispielsweise zum Betrachten von Zeichensätzen. Sprites zeigt man mit einer Breite von drei Bytes per Zeile beispielsweise mit der Einstellung D, P und O (alle anderen aus). Interessant ist das Utility unter anderem auch zum Durchforsten von Adventures (oder anderen Programmen) nach interessanten Texten. Dazu stellen Sie am besten nur die Optionen A und B an, alle anderen aus.
Wie bereits erwähnt lassen sich mit FlexList alle Dateien vom Typ PRG, SEQ und USR listen. Es gibt keine Begrenzung bezüglich der File-Länge. Bei der Eingabe des Filenamens sind die üblichen Joker »?« und »*« des Laufwerks erlaubt. FlexList müßte mit allen Diskettenlaufwerken zusammenarbeiten, es werden keine speziellen Befehle verwendet. Das Programm öffnet die Datei unter der Sekundäradresse 2.
Den Drucker mit der Geräteadresse 4 spricht das Programm unter der Sekundäradresse 7 an. Diese Einstellung bewirkt bei allen Commodore-Druckern, beim Wiesemann-Interface sowie manchen anderen Druckern, die direkt an den C 64 angeschlossen werden können, die Ausgabe des Textes im Groß/Kleinschriftmodus. Reverse Zeichen in der Spalte Ascii und Bildschirmcode werden in normale Zeichen gewandelt, Grafikzeichen sendet das Programm normal im Ascii-Code an den Drucker, was MPS-Druckern und dem Wiesemann-Interface keine Probleme bereitet. Beim Drucken wird ein linker Rand von sieben Zeichen erzeugt, danach erfolgt die Ausgabe ebenfalls mit maximal 40 Zeichen pro Zeile (es wird direkt vom Bildschirm »abgeschrieben«). Eine Centronics-Schnittstelle ist nicht implementiert, diese müssen Benutzer von »Userport-Druckern« selbst in einem geeigneten Speicherbereich, zum Beispiel ab $C000 oder $8000 selbst vorsehen.
Angaben zur Programmversion »rev1«: Die Geräteadresse der Floppy kann in Speicherzelle 2142 (Normalwert 8) eingestellt werden. Die Sekundäradresse der Druckausgabe (normal 7) steht in 2842, der linke Druckrand (ebenfalls 7) in 2787. Das Programm FlexList steht im Speicher von 2049 bis 3203.