Hallo,
ich habe mal mir mal Gedanken gemacht, wie ein modernes Disk Image Tool aussehen könnte und welche Anforderungen es erfüllen sollte.
Eine sehr kurze Beschreibung eines Disk Image Tools wäre wohl:
Ein Disk-Image-Tool ist ein Tool, welches Dateioperationen (wie Kopieren,Verschieben, Löschen) zwischen einem Disk-Image und einem anderen Dateisystem ermöglicht.
Aber diese Beschreibung ist echt kurz. Deshalb jetzt mal etwas detaillierter im Frage-Antwort-Format.
Welche Disk-Image Formate sollen unterstützt werden?
- D64
- D71
- D81
- DNP
- D1M, D2M, D4M, DHD (Container-Format)
- G64, G71, FDI, NIB, DFI
- D80, D82
- T64
- X64
- LNX
Anmerkungen:
- Die Formate D64, D71, D81 sind muss.
- Das DNP Format sollte danach auf der Prio-Liste stehen.
- Die Container- Formate D1M, D2M, D4M, DHD sollten danach angegangen werden.
- Bei den Low-Level G64, G71, FDI, NIB, DFI sollte es wohl genügen, wenn man G64 nur lesend unterstützt.
- Die Formate D80, D82 währen ein Nice-to-have.
- T64 wäre dann das Letzte auf meiner Prio-Liste
Welche Spezialitäten der Disk-Image Arten sollen unterstützt werden?
- D64: 40 Tracks (Speed DOS, Dolphin DOS, ProLogic DOS)
- D64: mehr als 144 Dateieinträge im Directory
- D71: Einseitig formatiert (oben/unten)
- D81: 1581-Unterpartitionen
- DNP: CMD-Unterverzeichnisse
- D1M, D2M, D4M, DHD: CMD-Partitionen
- Bei allen Arten: Directory Manipulationen
Anmerkungen:
- Die Liste ist wohl schon selbsterklärend.
- Wahrscheinlich fehlen noch ein paar Punkte.
Welche Dateiarten sollen unterstützt werden?
- SEQ (sequentiell)
- PRG (Programm)
- USR (USER-Datei)
- REL (relativ)
- GEOS-Datei
Anmerkungen:
- GEOS Dateien halte ich für ein Muss.
- Vielleicht könnte man am ehesten auf relative Dateien verzichten.
Wie kann der Commodore DOS Dateiname im Dateisystem erhalten werden?
- SEQ (sequentiell) >> Sxx
- PRG (Programm) >> Pxx
- USR (USER-Datei) >> Uxx
- REL (relativ) >> Rxx
- GEOS-Datei >> CVT
Anmerkungen:
- Ob der PC64 Ansatz mit seinen P00, S00, R00, U00 Dateien die richtige Lösung ist, weiß ich auch nicht.
- An dem CVT Format für die GEOS Dateien führt wohl kein Weg vorbei.
Welche normalen Aktionen/Befehle sollen unterstützt werden?
- Inhaltsverzeichnis anzeigen (DIR)
- Partitionen anzeigen (bei den Container-Formaten D1M, D2M, D4M, DHD)
- Anzeigen
- Editieren
- Kopieren
- Bewegen
- Umbenennen
- Löschen
- Verzeichnis anlegen
- 1581 Unter Partition
- CMD Unterverzeichnis
- Verzeichnis wechseln
- 1581 Unter Partition
- CMD Unterverzeichnis
- Diskettennamen und Disketten-ID ändern (auch von 1581 Unter Partition und von CMD Unterverzeichnissen)
- usw.
- Dateieigenschaften (file attibutes) ändern
- Nur lesen
- Versteckt
- Archiv
- System
- Datum
- Zeit
- Datei Informationen anzeigen (Bei GEOS Dateien erfolgt eine erweiterte Ausgabe)
Anmerkungen:
- Die Aktionen welche Änderungen am Disk-Image vornehmen müssen fehlerfrei sein!
- Vielleicht sollte man sogar eine Protokoll System einbauen, welches alle vorgenommen Änderungen an einem Disk-Image aufzeichnen kann. (Lade Block XX, Schreibe Block XX alte Blockdaten neue Blockdaten usw.) So könnte man Fehler in an den Änderungen am Disk-Image vielleicht viel schneller erkennen.
- Für die Basis Funktionen solle es Test Funktionen geben, die dessen Funktion überprüfen. Ich denke da in richtig TDD (Testgetriebene Entwicklung).
Wie soll eine Funktion zum Anlegen von neuen leeren Disk Images aussehen?
- Disk Image Format Auswahl
- Diskettennamen / ID
- Fehlerinformationen Ja/Nein
- Als GEOS Diskette erstellen
- 35 oder 40 Spuren (Speed DOS/ Dolphin DOS / ProLogic DOS)
- usw.
Anmerkung:
- Die Dialoge für das Anlegen von neuen leeren Disk Images können sehr umfangreich werden, da jedes Format seine eigenen Parameter mitbringen.
- Bei den Container Formaten D1M, D2M, D4M, DHD halte ich es fast für sinnlos schon Partitionen anzulegen. Vielleicht macht eine Native Partition noch Sinn.
Wird auch eine Funktion zum Formatieren von Disk Images benötigt?
- Ja
- Nein
Anmerkung:
- Eine solche Funktion ist eigentlich nur bei den Containerformaten D1M, D2M, D4M, DHD sinnvoll, da hier einzelne Partitionen formatiert werden können.
- Aber auch das Formatieren von 1581 Unter Partition wäre sinnvoll.
Ist eine Funktion zum Überprüfen von Disk Images nötig?
- Ja
- Nein
Anmerkung:
- Eine solche Funktion halte ich schon für sinnvoll.
- Es müssten auch GEOS Disketten geprüft werden können.
Sollen auch Packer/Archiv Funktionen integriert werden?
- Ja
- Nein
Welche Dateiauswahloptionen sollen zur Verfügung stehen?
- Gruppe auswählen (englisch: Select Group)
- Gruppenauswahl rückgängig (englisch: Unselcet Group)
- Auswahl umkehren (englisch: Invert Selection)
- Auswahl wiederholen (englisch: Restore Selection)
Wie soll die korrekte Anzeige des PETSCII erfolgen?
- Verwenden einer modernen Schriftart >> z.B. die C64 TrueType (TTF) Fonts von Style
- Umschaltung der Zeichensätze (Großschrift/Grafikzeichen und Groß-/Kleinschrift)
Welche Plattformen sollen unterstützt werden?
- Windows 10 (64-Bit)
- macOS (64-Bit)
- Linux (64-Bit)
- Amiga?
Anmerkung:
- Hier stellt sich die Frage, soll die Anwendung Plattformübergreifend entwickelt werden?
- Oder versucht man eine Programmiersprache zu wählen, welche einfach auf andere Plattformen zu übertragen ist. Ich denke da z.B. an ANSI C
- Bleibt die Wahl des richtigen GUI-Toolkits, welches sowohl mit der Programmiersprache aber auch mit der Plattform verbunden ist.
- Trennt man bei der Umsetzung die GUI vollständig von der Logik und schafft man es vielleicht so wenigsten einen Teil Plattformunabhängig zu realisieren? Also z.B. die gesamte Logik in ANSI C programmieren und nur eine separate GUI für jede Plattform. Aber ist ANSI C wirklich eine gute Idee?
- Oder doch lieber auf Java setzen, welches es mit samt einem GUI-Toolkit für fast jede Plattform gibt?
- Aber auch Free Pascal ist eine Überlegung wert, da es auch ein plattformübergreifendes GUI-Toolkit mitbringt. Und Free Pascal erzeugt richtige EXE Programme und auch richtige DLL und das auf jeder unterstützten Plattform.
- Man könnte die gesamte Logik auch mit einer Free Pascal DLL umsetzen, welche auf allen Systemen kompilierbar ist. Dann muss man aber noch einen Weg finden, um auf den verschiedenen Plattformen mit der jeweiligen DLL geschickt zu kommunizieren.
Welche Programmiersprache soll verwendet werden?
- ANSI C
- C
- C++
- C#
- Java
- Pascal
- Python
- Perl
Anmerkungen:
- Ja, welche der Sprachen ist zukunftssicher?
- Ich würde eine einfache Sprache bevorzugen, damit Viele Entwickler Änderungen durchführen können.
Welches GUI-Toolkit soll verwendet werden?
- plattformübergreifend:
- GTK+ (in Java z. B. via SWT)
- Qt
- wxWidgets
- Tk
- FLTK
- Swing (in Java)
- JavaFX
- FireMonkey (FMX, in Delphi)
- Lazarus Component Library (in Free Pascal)
- Windows:
- Microsoft Foundation Classes (MFC)
- Visual Component Library (VCL, in Delphi)
- Win32 (WinAPI)
- Windows Presentation Foundation (WPF)
- Windows Forms (.NET)
- macOS:
- Cocoa
- Carbon
Anmerkungen:
- Auch muss man sich fragen, welches der GUI-Toolkit ist zukunftssicher.
- Kann man mit dem entsprechenden GUI-Toolkit auch die gewünschten Anforderungen umsetzen? Ich denke dabei z.B. an das Positions-Genaues-Einfügen per Drag & Drop. Also das Einfügen genau zwischen 2 Zeilen in einer Liste. Dies wird meistens mit einer Linie Zwischen den 2 Zeilen verdeutlicht.
- Die Plattformabhängigkeit ist bei der GUI-Toolkit Auswahl natürlich die wichtigste Frage.
Wie soll Grafische Benutzeroberfläche aussehen?
- Zwei-Fenster
- F-Tasten / Schaltflächen
- Drag & Drop
- Copy & Paste
- Ein-Fester
- Drag & Drop
- Copy & Paste
- Mehrfach-Dokument-Oberfläche (MDI)
- Drag & Drop
- Copy & Paste
Anmerkungen:
- Die Zwei Fensteransicht ist bekannt vom Norton Commander und wurde z.B. beim Star Commander und 64Copy eingesetzt.
- Die Ein-Fester-Technik ist vom Windows Explorer her bekannt und wird z.B. vom DiskImagery64 eingesetzt.
- Mehrfach-Dokument-Oberfläche (MDI) ist meines Achtens etwas aus der Mode gekommen. Z.B. hatten ältere Versionen von MS Excel eine Mehrfach-Dokument-Oberfläche. DirMaster verwendet auch eine Mehrfach-Dokument-Oberfläche.
- Star Commander und 64Copy können weder Drag & Drop noch Copy & Paste. Oder ging Drag & Drop in MS-DOS schon?
- Erst durch die Drag & Drop Methode, kann ein Positions-Genaues-Einfügen einer Datei in ein Disk Image erfolgen. Da die Dateinamen in einem Disk Image, bei der Anzeige nicht sortiert werden, ist ein Positions-Genaues-Einfügen schon irgendwie nützlich. Das geht zwar schon in Richtung Directory Manipulation, aber hier würde ich mal eine Ausnahme machen.
- Für richtige Directory Manipulation würde ich einen speziellen Editor anbieten aber das ist ein anderes Thema.
Wie soll mit den Commodore DOS Dateinamen im Dateisystem umgegangen werden?
- max. Anzahl Zeichen in einem Dateinamen
- Zeichensatz (zulässige Zeichen)
- Groß-/Kleinschreibung
- unzulässige Zeichen
- unzulässige Dateinamen
Wie muss der Zugriff auf eine Datei in einem Disk-Image erfolgen?
- Ausschließlich über den Dateinamen
- Ausschließlich über die Position/Index im Inhaltsverzeichnis (DIR)
- Über Dateinamen und über die Position/Index
Was soll geschehen, wenn Commodore DOS Dateinamen eines Images nicht eindeutig im Dateisystem abgelegt werden können (Doppelte Dateinamen)?
Anmerkungen:
- Die max. Anzahl von Zeichen in einem Dateinamen sollte für moderne Dateisysteme kein Problem darstellen. Die 16 Zeichen des Commodore DOS sollten alle modernen Dateisysteme speichern können.
- Die Unterscheidung der Groß-/Kleinschreibung ist schon eher ein Problem, da viele Betriebssysteme standardmäßig keine Unterscheidung der Groß-/Kleinschreibung durchführen, selbst dann wenn das Dateisystem dies unterstützt (z.B. Windows+NTFS).
- Die zulässigen und unzulässigen Zeichen können auch noch ein Problem darstellen. Durch Directory-Manipulationen sind fast alle 256 Zeichen in den Dateinamen in einem Disk Image möglich. Damit haben aber moderne Dateisysteme ihre Schwierigkeiten.
- Die Frage ist, ob man eine geeignete Unicode Konvertierung findet, welche jeden Fall abdeckt.
- Oder ist der PC64 Ansatz mit seinen P00, S00, R00, U00 Dateien eher eine Lösung für das Dateinamensproblem.
Wie soll die Dateiarten im Dateisystem abgelegt werden?
- Als Dateiendung (.SEQ .PRG .USR .REL .CVT)
- Als PC64 Datei (P00, S00, R00, U00)
Wie soll die Eingabe von PETSCII erfolgen?
- Virtuelle Tastatur mit allen PETSCII Zeichen
Unter welcher Lizenz sollte die Entwicklung erfolgen?
- MIT-License
- Apache License
- GNU General Public License (GPL)
- GNU Lesser General Public License (LGPL)
- Mozilla Public License (MPL)
- BSD License
Anmerkungen:
- Die Entwicklung sollte auf jeden Fall Open Source sein.
Benötigt man eine Batch-Verarbeitung von Funktionen?
- Kommandozeile
- Batch-Verarbeitung per GUI
Anmerkungen:
- Der Star Commander kann eine Batch-Verarbeitung per Kommandozeile.
- Der DirMaster besitzt ein Fenster (GUI) für die Batch-Verarbeitung.
Benötigt man eine Ansteuerung von echten Commodore Laufwerken wie es z.B. der Star Commander ermöglicht?
- Ja
- Nein
Anmerkung:
- Ich denke für die Ansteuerung von echten Laufwerken gibt es andere Tools (z.B. ZoomFloppy), welchen diese Aufgabe besser erfüllen können.
- Natürlich wäre die Ansteuerung von echten Laufwerken integriert im modernen Disk Image Tool eine feine Sache
Welche Anzeige Optionen sollen vorhanden sein?
- Spaltenmodus (englisch: Column mode)
- Kurz (englisch: Brief)
- Voll (englisch: Full)
- Breit (englisch: Wide)
- Info (nur bei Zwei-Fenster Absicht sinnvoll)
- Quick View (englisch: Quickview) (nur bei Zwei-Fenster Absicht sinnvoll)
- Sortierreihenfolge (englisch: Sort order)
- Name (englisch: Name)
- Erweiterung (englisch: Extension)
- Zeit (englisch: Time)
- Größe (englisch: Size)
- Unsortiert (englisch: Unsorted)
- Reverse
- Filter für Fenster
- Norton Commander
- Dateiname
- Einschließen
- Ausschließen
- Dateidatum
- Nach
- Vor
- Dateigröße
- Über
- Unter
- Attributfilter
- Versteckt
- Nur lesen
- Verzeichnis
- System
- Archiv
- Kein
- Dateiname
- Star Commander
- Hidden files
- All fieles
- PC executable files
- PC archive files
- CBM image files
- CBM archive files
Anmerkung:
- Sobald die Sortierung nicht mehr über Index erfolgt, bzw. wenn ein Filter angewendet wird, dann ist ein Positions-Genaues-Einfügen z.B. per Drag & Drop nicht mehr möglich.
- In modernen Anwendungen sind Listen meist auf allen sichtbaren und unsichtbaren Spalten sortier- und filterbar.
Welche externen Funktionen (Funktionen, welche nichts mit der Übertragung bzw. Anzeige von Dateien zu tun haben) soll integriert werden?
- BAM Editor
- Block Anzeigen/Ändern
- Dateianzeiger
- Bilder (HiRes, Koala, Amica Paint, Art Studio, Artist, Blazing Paddle;, Centauri, Cheese, CDU, Dolphin Ed, Drazpaint, Face Paint, GeoPaint, GeoPhotoAlbum, Garfield, Giga Paint, Giga Paint MC, Hi Eddi, Image System, Image System MC, Interpaint, Interpaint MC, Micro, Mono Magic, OCP, Paint Magic, Picasso, Rainbow, Run Paint, Saracen, Vidcom)
- Assembler, Basic, Doodle, Font, HEX, SEQ
- GEOS
- GeoWrite
- GeoPaint
- GeoPhotoAlbum
- usw.
- Dateikonverter
- Bilder
- Basic
- GEOS
- GeoWrite >> RTF
- GeoPaint >> PNG
- usw.
- Disk Images Converter
- D64 >> G64
- G64 >> D64
- D64 >> ZipCode 6-pack
- ZipCode 6-pack >> D64
- G64 >> ZipCode 6-pack
- ZipCode 6-pack >> G64
- usw.
- Directory Editor
- Dateien Verschieben
- Dateinamen ändern auch nach dem "
- Fertige Linien zur Auswahl zur Verfügung stellen
Anmerkungen:
- An dieser Stelle kommt mir dir Gedanke, das man vielleicht eigene Plug-Ins / Add-Ons unterstützen sollte. So hätte man die Möglichkeit die Anwendung zu erweitern.
In welche Sprachen soll die Anwendung zur Verfügung stehen?
- Deutsch
- Englisch
- andere
Anmerkung:
- In einer modernen Anwendung sollte es möglich sein die Anwendungssprache zu ändern.
- Deutsch und Englisch sollten da auf jeden Fall zur Auswahl vorhanden sein.
- Die Anwendung sollte so gestaltet sein, das es möglich ist diese auf einfache Weise in andere Sprachen zu übersetzen. Ich denke da z.B. an XLIFF oder an Windows NET (*.resx) oder Java (*.properties).
So das soll erst einmal reichen. Vielleicht hat der Eine oder Andere noch ein paar andere Ideen oder Anregungen zu diesem Thema.
Gruß
Hans