???

Meinungen, Programme und Hardware

Programmprojekte

Autor: Sven Friedrichs



Einleitung zum Fryton Disk-Renewer 128

Warum ein Disk-Renew-Programm für die 1571?

Es war mal wieder so ein Wochenende, an dem man sich absolut nichts vorgenommen hatte. Spontane Ideen, draußen etwas zu unternehmen, blieben aufgrund des an die Fensterscheibe prasselnden Regens aus. Also Computer angeschaltet und eine möglichst entspannende Beschäftigung suchen. Ein Logikspiel wäre genau das Richtige gewesen, doch da starrten mich aus der Diskettenbox einige vollkommen verwahrloste Public-Domain-Disketten für den C128 an. Vor Jahren bestellt, aber noch nie vollständig durchgetestet. Ich konnte ja nicht ahnen, was für Disketten der "Club 128'er Aktuell" zusammengestellt hatte. Zum einen funktionierten einige Programme nicht und zum anderen bestanden von so ein paar Anwendungen unzählige Kopien. Ja es konnte nicht einmal eine kategorische Einordnung erkannt werden.

Um dieser Unordnung Herr zu werden, entschloß ich mich, die Programme nach Themen zu ordnen und zudem gleich auf das 1571-Format zu überspielen. Der "Hexer" diente mir hierbei als Kopierprogramm, und der "Directory Ordner" aus dem 128'er Sonderheft (70) sollte mir helfen, das Directory optisch aufzubessern. Es klappte auch alles ganz wunderbar - bis ich plötzlich feststellen mußte, daß Programme, die bereits auf die Zieldiskette kopiert wurden, fehlten. Aus welchem Grund auch immer waren einige Sektoren des Directories aus der ursprünglichen Verkettung herausgelöst worden. Das Ganze endete nochmal glimpflich, da ich die fehlenden Sektoren mit einem Diskettenmonitor aufspüren und danach an das Directory anhängen konnte. Erst da ist mir bewußt geworden, was ich hätte machen können, wenn ich aus Versehen das Directory gelöscht hätte. Womöglich garnichts, denn mir war bis dato einfach kein Programm bekannt, das ein Disk-Renew auf der 1571 ausführen kann.

1.2 Was ist ein Disk-Renew und wie funtioniert es?

Sämtliche Daten, die benötigt werden, um ein Programm von der 1571 zu laden, befinden sich in der Directory-Spur 18. Hier findet man den Namen, die Größe, die Speicherart und das Wichtigste - die Startspur und den Startsektor aller auf der Diskette gespeicherten Programme. Sollte die Directory-Spur aus irgend einem Grund gelöscht werden (Formatieren ohne ID,...), ist guter Rat teuer. Denn obwohl sich die Programme noch auf der Diskette befinden, sind sie über den LOAD- Befehl nicht mehr zugänglich. Genau hier springt das Disk-Renew- Programm ein.

Da die ersten beiden Bytes eines Sektors die Lagedaten für den Folgesektor beinhalten, kann man mit ihrer Hilfe die Verkettung der Sektoren wiederherstellen. Ein Sektor, der von keinem anderen als Folgesektor definiert wird, ist demnach ein Startsektor. Dieser wird für einen Directory-Eintrag vorgemerkt. Um die Blockzahl herauszufinden, beginnt man einfach alle Sektoren, die zu der Kette des aktuellen Startsektors dazugehören (incl. Startsektor), zu zählen. Bei einer vollständig gelöschten Directory-Spur ist es leider nicht mehr möglich den Namen und die Speicherart herauszufinden. Das ist besonders schmerzlich bei mehrteiligen Programmen. Hier können einem lediglich das visuelle Gedächtnis oder Directory-Ausdrucke von Nutzen sein, um die Programme wieder lauffähig zu machen.

Wie arbeitet der Fryton Disk-Renewer?

Im Grunde genommen bedient sich der Fryton Disk-Renewer des oben erläuterten Systems. Es dabei egal, ob eine 1541- oder eine 1571-formatierte Diskette im Laufwerk liegt. Eine 1541-Diskette wird erkannt, wenn im Track 36 auf Sektor 0 beim Einlesen ein Read-Error 21 gemeldet wird. Sollte vorher oder nachher dieser Fehler auftauchen, so bricht das Programm ab, da es damit rechnen mußte, daß die Diskette entfernt wurde. Andere Read-Error werden nach Möglichkeit erkannt und im Programm-BAM angezeigt. Eine ausgeschaltete Floppy wird mit entsprechender Aufforderung zum Anschalten angezeigt.

Das Programm achtet jedoch nicht darauf, welcher Laufwerkstyp an der aktuellen Geräteadresse aktiv ist. So wird nicht unterschieden, ob eine 1581- oder eine 1541-Station angeschlossen ist. Für die 1581 ist eine spezielle Version in Planung, die 80 Spuren und die unterstützten Sub-Partitionen anspricht. Ich habe bewußt auf die Erkennung der Laufwerkstypen verzichtet, um eine eventuelle Kompatibilität zu den 1541/71-Partitionen der FD-Laufwerke von CMD zu wahren. Da ich als Programmierer zur Zeit noch kein FD-Laufwerk besitze, kann leider für nichts garantiert werden.

Eine wichtige Erweiterung vom Fryton Disk-Renewer ist die Fähigkeit, noch vorhandene Directoryeinträge aus der Spur 18 zu lesen. Da hier auf keine Verkettung der Directorysektoren Rücksicht genommen wird, ist die richtige Reihenfolge der Files nicht gewährleistet. Das hat den entscheidenen Vorteil, daß Sk1alleSk0 noch verwend-baren Einträge herausgefiltert werden können. Mit der Funktion "Vergleichen" kann man diese Daten im Hauptmenü mit den bereits analysierten Daten einer Diskette vergleichen. So daß mit Hilfe von Blockzahl, Startspur und Startsektor der Programmname sowie der Programmtype wiederhergestellt werden können.

1.4 Technische Daten

Programmname: Fryton Disk-Renewer
Programmautor: Sven Friedrichs
Programmiersprache: Basic V7.0
Compiler: Basic 128 V1.00 von Data Becker
Erweiterungen: Centronicsschnittstelle SH70
Programmiersystem: C128 (einzeln, mit 64KB VDC-RAM), 1571 und 1581
Drucker: Citizen DP-560-CD, STAR LC-10 (Centronics)

2. Programmfunktionen

2.1 Das Hauptmenü

Gleich nach Start des Programms erscheint das Hauptmenü, wobei der oberste Kasten Versionsnummer, Erstellungsdatum und Programmautor anzeigt. Das linke, blaue Fenster gibt die von der Diskette analysierten Daten an. Programmname und -typ werden fiktiv angegeben. Auf gleicher Höhe rechts befindet sich ein rotes Fenster, welches die übrigen Einträge aus Spur 18 enthält. Darunter ist dann das Befehlsfenster. Dies ist für Meldungen vom Programm zur Auswahl oder Fehlererläuterung zuständig. In der letzten Zeile ist der Befehlsbalken zu sichten, dessen Funktionen wie folgt sind:

F1 = Analysiere Diskette

Wählen Sie zunächst die Laufwerksnummer der Diskettenstation, mit der Sie arbeiten wollen. Der Grafikbildschirm wird eingeschaltet und die Floppy beginnt ihre Arbeit aufzunehmen. Sollte beim Einlesen der beiden Linkbytes eines Sektors ein Fehler auftreten, so wird dieser angezeigt. Nachdem die Diskette vollständig analysiert wurde, werden die Programmfiles für das blaue, linke Fenster generiert. Nach Abschluß dieses Vorgangs wird nochmal auf die Diskette zurückgegriffen, um den Track 18 zu lesen. Erst jetzt wird wieder ins Hauptmenü gesprungen.

F2 = Renew Diskette

Wurde der Menüpunkt F1 angewählt und die Directoryfiles nach Belieben geändert, so kann man das endgültige Directory auf die Diskette zurückschreiben.

F3 = Editieren von Files

Das aktuelle File im linken, blauen Fenster wird zum Teil blau markiert, um anzuzeigen, welcher Ausschnitt des Fileeintrags geändert werden soll. Mit SPACE kann dieser Verschoben werden und RETURN dient zur endgültigen Bestätigung einer vorgesehenen Änderung. Soll der Name des Eintrags neu gestaltet werden, so gibt man ihn über die Tastatur ein. Alles andere wird einfach mit RETURN weitergeschaltet. Die Blockzahl, die Startspur und der Startsektor eines Programms können nicht manipuliert werden, da der Fryton Disk-Renewer eine Diskette fehlerfrei wiederherstellen soll. Diese Daten sind außerdem für den Menüpunkt "Vergleichen der Files" sehr wichtig.

F5 = Vergleichen der Files

Jeder einzelne Eintrag des linken Fensters wird mit den Einträgen des rechten, roten Fensters in den Punkten Blockzahl, Startspur und Startsektor verglichen. Wird eine Übereinstimmung festgestellt, so fragt das Programm, ob man den Namen und den Programmtyp des Files aus dem rechten Fenster auf den weiß markierten Eintrag links übertragen möchte. Zur Auswahl stehen: JA, übernehmen; JA, alle übereinstimmenden Einträge über-nehmen; NEIN, nicht übernehmen.

F6 = Grafik anzeigen (Kapitel 2.2) F7 = Drucken

Die Files aus dem rechten und linken Fenster werden ausgedruckt. Es muß lediglich entschieden werden, ob über den seriellen oder den parallelen Port übertragen werden soll.

F8 = Quit

Das Basic 7.0 wird freigegeben.

INST/DEL = File löschen

Die Funktion kann nur im linken, blauen Fenster durchgeführt werden und löscht den weiß unterlegten Fileeintrag.

CONTROL = Fenster wechseln

Der weiße Balken wechselt vom linken zum rechten Fenster oder umgekehrt.

CRSR UP/DOWN = Einträge rollen

In dem Fenster, wo sich der weiße Balken befindet, kann man mit den Cursortasten die Einträge auf- und abwärts rollen, sofern sich mehr als acht im Speicher befinden.

2.2 Das Grafikmenü

Links Oben wird ein Fenster aufgebaut, daß darüber informiert, welche Spur und welcher Sektor gerade aktuell sind. Darunter werden dann die zur Zeit ausgeführten Funktionen angegeben. "LESEN" und "PRUEF" sind aktiv, wenn "Analysiere Diskette" aufgerufen wurde. Wird das Grafikmenü jedoch über die Taste "F6" angesprungen, unterlegt der Disk-Renewer den Punkt "Zeigen" blau.

Die oberste Zeile zeigt die wichtigen Daten des aktuellen Eintrags, der zugleich im darunterliegenden Blockbelegungsplan hervorgehoben wird und zwar mit grünen Sektoren und einem gelbblinkenden Startsektor. Um abzulesen, welcher Track und welcher Sektor im Belegungsplan markiert wurde, schaut man für die Spur in die waagerechte, grüne Zeile und für den Sektor in die senkrechte, gelbe Spalte.

F3 = Show Sektor

Wählt man diesen Menüpunkt, so erscheint im Blockbelegungsplan ein blinkender Cursor, den man wie in Basic steuern kann. Dabei wird die oberste Zeile stehts aktualisiert, um jederzeit zu wissen, welches Programm zum derzeitigen Sektor gehört. Die Spurnummer und die Sektornummer können auch aus dem Window links oben abgelesen werden. Zum Verlassen bitte F8 drücken.

F7 = Druck im Grafikbildschirm

Hier wird nicht etwa eine Hardcopy des angezeigten Bildes gemacht, sondern ein viel aussagekräftiger Auszug des Blockbelegungsplans angefertigt. Zu jedem Programmeintrag, werden die zugehörigen, physikalischen Track- und Sektordaten ausgedruckt, so daß die genaue Verkettung erkannt werden kann.

F8 = Quit...

Dies dient nicht dazu, um das Programm zu beenden, sondern der Rückkehr ins Hauptmenü.

3. Programm intern

Der Fryton Disk-Renewer benutzt die Centronicsschnittstelle aus dem 128'er Sonderheft 70. Allerdings in einer verbesserten Version, die es endlich erlaubt, per SYS-Befehl ausgeschaltet zu werden. Da die Aktivmeldung störend innerhalb eines Programms wirkt, wurde diese ebenfalls entfernt. Alles andere hat sich nicht geändert.

Das Renew-Programm wurde vollständig in BASIC programmiert, wie sich an der Geschwindigkeit feststellen läßt. Jedoch kann es jederzeit mit einem Compiler bearbeitet werden. Ich habe dazu BASIC 128 V1.00 von DATA BECKER genommen, wobei ich leider bedauern muß, daß kein P-CODE erzeugt werden konnte - trotz richtigen Basic-Codes. Zum Trost aller, die diese Version ihr eigen nennen - Maschinencode funktioniert ohne Probleme.

Das Programm soll fortan Stück für Stück in Assembler umgesetzt werden. Für Hilfestellungen wäre ich dankbar. Auch würden mich konstruktive Kritiken und Verbesserungsvorschläge Ihrerseits interessieren. Außerdem bin ich auf der Suche nach Programmen und Büchern für den C64/128. Wer also jemanden kennt (zum Beispiel sich selbst), der soetwas hat und loswerden möchte, dann bei mir melden.

Für den Fryton Disk-Renewer steht ein Routinen-Lageplan zur Verfügung.

Disk DOWNLOAD als gezipptes D64-Image

(Kontakt zu anderen C128 Usern erwünscht! Sehr geehrter Herr Paul Guldenaar, ich habe eine Idee, wie der VDC noch mehr aufgepowert werden kann.)


Inhalt

   

Zurueck