SAMCONV 2.0: Konvertierung CP/M Disketten-Images zu DOS und zurück


  • Hallo,


    Im Zuge meiner Arbeiten für die Konvertierung von Philips CP/M Disketten habe ich eine Menge Know How gesammelt. Siehe folgenden Link, wo die Vorgänger-Version 1.0 von SAMCON zu finden ist, sowie Tipps zur Verwendung von SAMdisk (Tool von Simon Owen):


    Diskettenhandling für PHILIPS Computer P2000M, P2500, P2000C und P3500/P3800


    Um das Know How zu nutzen, habe ich mich entschlossen, das Konvertierungstool SAMCONV.xls Vers. 1.0, welches nur für Philipsrechner ausgelegt war, auch auf andere CP/M-Systeme zu erweitern. Da der Trend auch immer mehr zur Archivierung der Disketten auf Image Files geht, ist auch ein Tool sinnvoll, welches die Dateien direkt aus den Images extrahieren, bzw. Images aus den DOS-Dateien erstellen kann. Die herkömmlichen Programme, wie 22DISK, Super Copy, etc. arbeiten alle mit den physischen Disketten meist unter dem Betriebssystem DOS.


    Will man zum Beispiel ein Image aus dem Netz modifizieren und jemand anderem zukommen lassen, muss man es erst mittels Teledisk, ImageDisk, SAMdisk und Co. auf eine Diskette bringen, mit den herkömmlichen Tools auf DOS einlesen, modifizieren und wieder auf die Diskette schreiben. Danach wieder mit den Imageprogrammen auf eine Imagedatei kopieren, welche man verschicken kann. Das ist für die praktische Arbeit etwas umständlich!


    Ab sofort steht SAMCONV 2.0 zur Verfügung!


    SAMCONV200.zip


    The tool is completely written in English language, including a short users manual, to give also our Non-German-Users a possibility to use it!





    Hier ein Auszug aus der beiliegenden, englischen Beschreibung:


    Main Features


    • Read and write without access to the physical diskettes (works only with disk images “.DSK” of the tool SAMdisk written by Simon Owen, see below)
    • Needs not a DOS environment, but a Microsoft Windows with EXCEL
    • Read files from CP/M disk images to a DOS folder
    • Write files from DOS folder to CP/M structured disk image
    • Filters for choosing diverse formats
    • Select a predefined format from sheet DISKDEF by clicking a button
    • Define own formats in sheet DISKDEF (or copy from another EXCEL sheet)
      It is similar to the definitions of other tools: SKEW, INTERLEAVE, FILLORDER, etc.
    • Option: Generate a sequence number for DOS files as prefix, in order of reading CP/M files from image. On writing back to CP/M image, so the sequence of the files may be controlled and the prefix will be deleted automatically.
    • Option: Change CP/M filenames with extension “COM” to “CPM” when writing to DOS and back when writing to CP/M.
    • Short Help Screen
    • Integrated help items at several cells (when this option is activated in EXCEL extras)


    Mit diesem EXCEL-Sheet ist es möglich Imagedateien “.DSK“ vom Typ EDSK, welches vom Tool „SAMdisk“ (von Simon Owen https://simonowen.com/samdisk/ , siehe auch obigen Link zu Diskettenhandling Philips) erzeugt wird, zu Lesen und zu Schreiben. Auch Dateien vom Typ “.td0“ oder “.IMD“ können nach Konvertierung mit SAMdisk auf Typ EDSK, von  SAMCONV verarbeitet werden.


    Einfache Anwenderkenntnisse mit EXCEL werden vorausgesetzt (z.B.: Einfügen von neuen Datenzeilen in ein Arbeitsblatt, etc.)


    Im vorliegenden EXCEL-Sheet sind nur etwas mehr als 50 CP/M-Formate definiert. Dies ist eine Auswahl von verschiedenartigsten Geometrien, um auch als Vorlage für weitere Formate zu dienen. Es können diverse neue Formate definiert, oder von anderen Quellen bekannte Formate eingebracht werden. Die Anzahl ist durch die Zeilenanzahl im EXCEL-Sheet limitiert (viele Tausend!).


    Zu diesem Zweck werde ich nächstes Mal ein Zusatzprogramm vorstellen, mit dem man aus einer bestimmten, bekannten Formatdatei (im Textformat) Parameter in ein EXCEL einlesen kann. Von dort lassen sich die Formatdefinitionen leicht nach SAMCONV kopieren.



    Viel Erfolg!


    PAW

  • Ich habe bei mir grundsätzlich Makros aus, wenn ich sie deswegen einschalte, vergesse ich sicherlich irgendwann nach Benutzung dieses Tools, die wieder auszuschaten. Und mit ein bichen Pech habe ich dann mal den Salat. DIe Fähigkeiten des Tools lesen sich toll, aber warum ausgerechnet als Makro in Excel?

  • Woher bekomme ich die Parameter für die Diskettenkonvertierung?


    Im vorliegenden SAMCONV 2.0 ist nur ein kleiner Teil (ca. 50) der möglichen CP/M-Disketten-Konfigurationen gespeichert.



    Ist das gewünschte Format in der Liste nicht zu finden, gibt es mehrere Möglichkeiten.


    Eine davon möchte ich hier vorstellen.


    Verfügt man über das Tool 22DISK (siehe im Netz), gibt es die Möglichkeit die dort in der Datei CPMDISK.DEF enthaltenen Formate zu exportieren. Dazu muss man mit dem in 22DISK vorhandenen Tool STRIPIDX.EXE die DEF-Datei in eine TXT-Datei umwandeln (siehe Doku in 22DISK). Dann sind die Parameter als Text lesbar. Man könnte nun die einzelnen Werte in SAMCONV.xls eintragen, was aber sehr mühsam wäre.


    Hinweis: In der unregistrierten Version von 22DISK sind viel weniger Formate definiert (ca. 190), als in der registrierten Version (ca. 480)!


    Man kann aber auch nachfolgendes EXCEL verwenden, um die Texte in ein Sheet zu bekommen und von dort mittels Copy and Paste ins SAMCONV zu kopieren.


    READ22DISK100.zip


    Dazu kopiert man die CPMDISKS.TXT oder auch selbst in diesem Format erstellte Definitionen, in das gleiche Verzeichnis, wie READ22DISK100.xls. Der Name der Datei muss mit dem Input File im Sheet übereinstimmen. Danach den Button EINLESEN drücken.



    Das Einlesen dauert eine Weile (üblicherweise < 1 Minute). Danach liegen die Parameter in gleicher Art, wie sie von SAMCONV benötigt werden, vor.


    Hier markiert man alle Zeilen (die Zeilennummern markieren), die man kopieren möchte und kopiert diese dann z.B. mittels Tastenkombination Strg C in die Zwischenablage. (Hier z.B.: alle XEROX-Formate.)


    Hinweis: Ich arbeite mit Office 2003. Deshalb kann es sein , dass bei anderen Officeversionen, die Bedienung von EXCEL leicht abweicht.



    Dann öffnet man in SAMCONV das Blatt DISKDEF und markiert die Zeile (oder die erste Zelle in der Zeile), vor der eingefügt werden soll.



    Man kann dann mit der rechten Maustaste ein Untermenü öffnen und „Kopierte Zeilen einfügen“ anklicken.


    Die Zeilen aus der Zwischenablage werden dann zwischen Zeile 10 und 11 eingefügt.


    READ22DISK100.xls kann nun geschlossen werden.


    Es empfiehlt sich in SAMCONV die Formeln neu berechnen zu lassen mit Button „OVERWRITE ALL CP/M FORMULAS“ (bei Spalten AC bis AG).


    SAMCONV kann nun gespeichert und anschließend verwendet werden.


    Hinweis: In Spalte „Groups“ kann man Gruppenzugehörigkeiten eintragen (z.B.: Philips oder Xerox). Es kann aber auch ein andere Kommentar eingetragen und später mittels Filter selektiert werden. (z.B: „Meine Disketten“)


    Sollten die benötigten Formate auch hier nicht zu finden sein, so zeige ich nächstes Mal noch andere Möglichkeiten.



    Grüße


    PAW

  • Ich habe bei mir grundsätzlich Makros aus, wenn ich sie deswegen einschalte, vergesse ich sicherlich irgendwann nach Benutzung dieses Tools, die wieder auszuschaten. Und mit ein bichen Pech habe ich dann mal den Salat. DIe Fähigkeiten des Tools lesen sich toll, aber warum ausgerechnet als Makro in Excel?

    Ich würde da 3 Teilantworten geben:

    1. Excel fragt (bei entsprechenden Einstellungen) ohnehin bei jedem Öffnen einer Datei ob Makros aktiviert werden sollen. Du musst sie nicht generell und permanent zulassen.
    2. Für Retro-Computing empfiehlt sich sowieso ein eigener Rechner (oder zumindest ein virtuelles System), für die Disk-Konvertierungen brauchst Du auch keinen Internet-Zugriff. Insofern ist das Risiko im Excel wohl überschaubar.
    3. Die Konvertierungen ließen sich grundsätzlich leicht in ein Stand-Alone-Visual Basic Programm übertragen (allenfalls sicher auch in JAVA), aber dann müsste man das GUI (das derzeit eben aus den Excel-Tabellenblättern besteht) neu schreiben. Zudem braucht man natürlich Visual Basic. Insofern ist der Aufwand zur Erstellung von SAMCONV in Excel offensichtlich geringer als auf anderen Plattformen. Allerdings bleibt auch ein gewisses Risiko betreffend "Zukunftssicherheit" (zukünftige Excel-Versionen arbeiten vielleicht ein wenig anders).
  • ZUM THEMA: SICHERHEIT BEI EXCEL-MAKROS



    Zum Zitat von 1ST1


    gpospi hat schon das Meiste richtig beantwortet! Ich verstehe aber die berechtigte Vorsicht von 1ST1 im Umgang mit Makros. Das Problem ist, dass die Funktionalität von EXCEL extrem eingeschränkt ist, wenn man auf Makros verzichtet.


    Es gibt aber eine elegante Lösung für das Problem!


    Um zu sehen, auf welcher Stufe die Makrosicherheit eingestellt ist, ruft man im EXCEL folgendes Menü auf: Extras/Makro/Sicherheit…



    Steht die Einstellung auf „Sehr hoch“, dann "geht gar nichts"! Es können nur speziell signierte Makros ausgeführt werden.


    Kann man sich jedoch mit der Einstellung „Hoch“ anfreunden, dann gibt es eine elegante Möglichkeit, bestimmte, vertrauenswürdige Makros ausführen zu können, ohne andere Makros zuzulassen!




    Im Microsoft Office Paket gibt es ein Programm SELFCERT.EXE


    Dieses befindet sich meist in folgendem Verzeichnis (bei Office 2003). Bei neueren Versionen gibt es eine andere Nummer hinter OFFICE. Anleitungen sind auch im Netz zu finden. Sollte das Programm nicht zu finden sein, dann sollte man nochmals die Office Installation durchführen.


       C:\Programme\Microsoft Office\OFFICE11\.SELFCERT.EXE


    Mit SELFCERT.EXE kann man ein eigenes Zertifikat erstellen, dass es ermöglicht EXCEL-Makros genau in diesem Sheet auszuführen, obwohl andere EXCEL-Sheets für Makros gesperrt sind! Zu diesem Zweck muss die Sicherheitsstufe „Hoch“ gewählt.


    Als Zertifikatsname wählt man einen sprechenden Namen, damit man ihn später in der Zertifikatsliste wieder findet.



    Danach ruft man SAMCONV auf und öffnet den Visual Basic Editor (z.B. mit ALT F11)


    Im Menüpunkt Extras/Digitale Signatur… kann man nun das zuvor erstellte Zertifikat PAW_SAMCONV auswählen.



    Anschließend speichert man SAMCONV.


    Bei neuerlichem Start von SAMCONV erscheint folgende Meldung:

    Hier den Haken bei Makros setzen und "Makros deaktivieren" anklicken!



    OK drücken und EXCEL schließen, danach SAMCONV nochmals öffnen.


    Diesmal bringt SAMCONV keine Meldung und die Makros sind ausführbar!


    Ich hoffe, dass damit alle Sicherheitsbedenken ausgeräumt sind.



    Grüße


    PAW

  • Ich muss 1ST1 zustimmen. Solche Makro-Viren gibt es nicht wenige, und dann noch im alten XLS (statt XLSX) das zu benutzen, wo man eben aufgrund des binären Dateiformats sowieso Probleme beim Analysieren des Codes hat (XLSX ist prinzipiell einfach nur ein ZIP mit vielen XML Dateien, wenn keine Makros drin sind), ist keine gute Praxis. Wenn das in VBA geschrieben ist, sollte eine Übertragung nach Visual BASIC eigentlich auch nicht sooo viel Mühe machen.

    Nur signierten und vertrauenswürdigen Code ausführen ist erstmal kein schlechter Gedanke. Selbstsignierte Makros bzw. Dateien mit Makros sind aber normalerweise auch keine Lösung, weil der Angreifer natürlich "diese Quelle" auch einfach selbst angeben kann.


    Was noch dazu kommt... es soll wohl auch Leute geben, die kein Microsoft Office benutzen, sondern bspw. Softmaker Office oder LibreOffice. Was machen die dann ?

    "Ich habe keine Zeit mich zu beeilen." (Igor Strawinsky)


    ... und schaut auch mal bei meinem Blog vorbei ...

  • Weitere Quellen für Parameter zur Diskettenkonvertierung



    Verfügt man über Super Copy (Version 335 oder 340) gibt es auch folgende Möglichkeit. Ähnlich zu 22DISK gibt es auch in SCopy diverse Formatdefinitionen. Diese sind aber in einer binären Datei SELECT.DAT gespeichert. Es gibt dazu leider auch kein Konvertierungs Programm, welches die Parameter in Textform bringen könnte.


    Anmerkung: Super Copy hat gegenüber 22DISK einen großen Nachteil … man kann keine eigenen Formate definieren. Dafür gibt es aber einige Formate, welche sich nicht in 22DISK abbilden lassen.


    Mit dem nachfolgenden EXCEL-Sheet kann man jedoch die Formate auslesen und in eine für SAMCONV lesbare Form bringen (ähnlich wie beim zuletzt beschrieben READ22DISK)


    READSELECT-DATEN100.zip


    Die Vorgangsweise ist analog zur vorigen. Die Datei SELECT.DAT ins gleiche Verzeichnis wie das EXCEL-Sheet kopieren. Dateinamen abstimmen und den EINLESEN-Button drücken.


    Das Einlesen dauert eine Weile (üblicherweise < 1 Minute). Danach liegen die Parameter in gleicher Art, wie sie von SAMCONV benötigt werden, vor. Bei Version 340 sind es ca. 300 Formate.


    Da die Dateiinhalte von SELECT.DAT (im Gegensatz zu 22DISK) nicht spezifiziert sind, ist es möglich, dass einige Formate nicht richtig interpretiert werden. Deshalb müssen die Ergebnisse jeweils überprüft werden.




    Nachtrag zu SAMCONV 2.0


    Aufgrund eines Fehler beim Aufruf von Button „Filter OFF“ sowie „OVERWRITE ALL CP/M FORMULAS“ gibt es eine neue Version 2.01. Die Dokumentation ist unverändert.


    SAMCONV201.zip



    Das nächste Mal zeige ich, wie man die Konvertierungsergebnisse mittels Testdaten leicht überprüfen kann.



    Grüße


    PAW

  • Überprüfung der Konvertierung mittels Testdaten


    Da die Formate nicht immer eindeutig spezifiziert sind, für welchen Computer sie zutreffen, ist es unbedingt nötig die Konvertierungsergebnisse zu prüfen.


    Für diverse Tests empfiehlt es sich brauchbare Testdaten anzulegen. Um zu erkennen, ob die Parameter, wie Interleave, Fillorder, Cylinders, Sides, etc. richtig eingestellt sind, benötigt man größere Textdateien, deren Zeilen oder Blöcke durchnummeriert sind. So kann man dann die richtige Reihenfolge der Datensätze (bzw. Sektoren) checken. Andere Parameter, wie Sektorgröße, etc. fallen ohnehin sofort auf, da das File bei Differenzen überhaupt nicht lesbar ist.


    Fall 1: Es steht ein laufendes Zielsystem mit CP/M und MBASIC (oder gleichwertig) zur Verfügung:


    Um Testdaten zu erstellen kann man nachfolgendes MBASIC Programm auf dem Zielsystem verwenden. In Zeile 20 wird angegeben, wie viele Kilobyte ungefähr ausgegeben werden sollen. Die Größe richtet sich nach der voraussichtlichen Kapazität der Zieldiskette. Die Datei sollte in der Regel ca. 60-90% der Diskette füllen, damit auch die Rückseite (falls vorhanden) getestet wird. In Zeile 30 wird das Ausgabelaufwerk (hier B:) und der Name der Datei angegeben.


    10 REM SCHREIBT CIRCA Z KILOBYTE DATEN (128 BYTES PRO ZEILE)

    20 Z=100

    30 F$ = "B:TESTFILE.TXT"

    120 C$=" TESTDATEN " + STRING$(109, "=")

    150 OPEN "O",1,F$

    200 FOR I=1 TO Z*8

    250 N$=STR$(I)

    260 N$=STRING$(7-LEN(N$),"0") + MID$(N$,2)

    300 PRINT N$

    400 PRINT #1,N$;C$

    500 NEXT I

    1000 CLOSE 1


    Sollte keine Übertragungsmöglichkeit zur Verfügung stehen, muss das kurze Programm am Zielsystem eingetippt werden.


    Nach Start sieht der TESTFILE.TXT so aus:

    000001 TESTDATEN =============================================================================================================

    000002 TESTDATEN =============================================================================================================

    000003 TESTDATEN =============================================================================================================


    Die mit dem Testfile beschriebene Diskette kann nun mit SAMdisk eingelesen werden. Das damit erstellte Image vom Typ DSK wird dann mit SAMCONV in ein DOS-Verzeichnis eingelesen.


    Kommt es beim Einlesen zu einem Fehler, dann stimmen vermutlich die Diskparameter nicht.


    Man kann mit SAMdisk Option SCAN die Anzahl Tracks, Sides, Sektoranzahl und Größe anzeigen lassen. Diese müssen mit den Parametern in SAMCONV übereinstimmen.


    Wird keine Datei im Inhaltsverzeichnis angezeigt, kann es sein, dass die Anzahl der Systemtracks (reserved Space) nicht übereinstimmt.


    Werden bei einer Diskette mit mehreren Dateien zu wenige angezeigt, kann es sein dass der Interleave falsch eingestellt ist.


    Öffnet man die Datei z.B. mit Notepad oder Editor, dann müssen alle Datenzeilen wie oben in der richtigen Reihenfolge zu lesen sein. Sind die Zeilen durcheinander, ist meist der Interleave falsch.


    Sollten die Ergebnisse positiv sein, dann kann man auch noch den umgekehrten Weg, wie in Fall 2 beschrieben, durchführen. Dann ist die Übertragung in beide Richtungen gesichert.



    Fall 2: Es steht ein laufendes Zielsystem mit CP/M, aber ohne MBASIC (oder gleichwertig) zur Verfügung:


    In diesem Fall kann man den umgekehrten Weg wählen. Man erstellt auf dem PC Testdaten und bringt diese anschließend mit SAMCONV und SAMdisk auf eine Zieldiskette. Auf dem Zielsystem kann man dann die Testdaten überprüfen.


    Die Auswertung ist analog zu Fall 1 durchzuführen.


    Hier noch ein kleines EXCEL-Hilfsprogramm zum Erstellen der Testdateien auf dem PC.

    ACHTUNG! Eine bestehende Zieldatei wird ohne Fragen überschrieben!


    TESTFILE erstellen.zip





    Fall 3: Es steht kein Zielsystem zur Verfügung, sondern nur eine „Originaldiskette“, die konvertiert werden soll.


    Hier ist die Überprüfung schwierig und nicht immer möglich und hängt vor allem von den zur Verfügung stehenden Disketten ab.


    Gibt es CP/M Systemdisketten, dann kann man die konvertierten Systemdateien mit am PC bekannten CP/M-Systemdateien abgleichen (so ferne die gleiche CP/M Version vorliegt). Falls keine Vergleichsdateien vorliegen, gibt es meist die Datei DUMP.ASM, welche als Text lesbar ist. Hier sieht man, ob der Text fehlerfrei und durchgängig vorhanden ist. Die Datei hat üblicherweise eine Größe von 4224 Bytes und belegt so bei vielen Disketten einen ganzen Track. Damit ist ein eventueller Fehler beim Interleave gut ersichtlich.



    Fall 4: Es stehen weder ein Zielsystem, noch „Originaldisketten“ zur Verfügung:


    In diesem Fall kann man nur die genauen Parameter erfragen und sich auf die Konvertierung verlassen, bzw. von jemand anderen prüfen lassen.




    NICHT DAS RICHTIGE FORMAT GEFUNDEN?


    Sollten die bisher angelegten Formate nicht ausreichen, so kann man die im Fall 1 angelegte Diskette mit der Testdatei analysieren und die Parameter für SAMCONV weitgehend herausfinden. Dies sollte aber von erfahrenen CP/M-Programmierern durchgeführt werden, da dazu eine Menge Kenntnisse betreffend CP/M nötig sind. Laien empfehle ich, eine Imagedatei (am Besten mit SAMdisk) zu erstellen und um Analyse ersuchen.


    Hilfreich ist in jedem Fall, bereits bekannte Parameter zur Verfügung zu stellen, wie z.B. Computername, 3,5“/5,25“/8“, Single/Double Side, FM/MFM, 48/96tpi, Anzahl Tracks, Kapazität, Ausdruck von CP/M-Programm STAT von Laufwerk, etc.



    Ich wünsche Gutes Gelingen!


    PAW

  • Wie geschrieben, dein Tool ist voll interessant, aber ich sehe hier Fensterrahmen von Windows XP und ich weiß dass du Office 2003 (oder noch älter) nutzt, mit Makros. Excel steht bei mir nur noch unter Win 10 in der Version 365 zur Verfügung und Makros sind ausgeschaltet. Ich kann das also nicht verwenden.

  • Eine Standard-Testdisk für CP/M-Formate




    Für den, letztes Mal beschrieben Fall 1, das heißt, wenn ein laufendes Zielsystem (Alien-System) mit CP/M und MBASIC (oder gleichwertig) zur Verfügung steht, habe ich eine Standard Diskette entwickelt. Sie ist ähnlich der dort beschriebenen Testdaten aufgebaut, beinhaltet aber alle zur Analyse nötigen Daten.


    Aus der Standard-Testdisk können alle für die Diskettenkonvertierung nötigen Parameter abgeleitet werden.


    Die Diskette muss am Alien-CP/M-System erstellt werden. Ich habe dafür ein kurzes MBASIC-Programm vorbereitet, welches auf einer Philips P2500 getestet wurde.


    10 REM TESTDISK V0.20 FUER SAMCONV AM ALIEN-COMPUTER

    11 REM DISKETTE VORHER MIT MAGNET LOESCHEN UND NEU FORMATIEREN

    12 REM SCHREIBT LAUTER NULLFILES, BIS DIRECTORY VOLL

    13 REM DANACH WERDEN DIESE WIEDER GELÖSCHT

    15 REM FUELLT DIE KOMPLETTE DISKETTE B: AN, BIS ERROR

    20 REM DIE REM-ZEILEN KOENNEN WEGGELASSEN WERDEN

    25 REM ------------------------------------------------------

    30 GOTO 60

    50 N$=STR$(R):N$=STRING$(4-LEN(N$),"0") + MID$(N$,2):D$=F$+N$+".TXT":RETURN

    60 F$ = "B:TEST_"

    70 ON ERROR GOTO 200

    80 FOR R=1 To 1024:GOSUB 50:OPEN "R",2,D$:PRINT "NEW ";D$:CLOSE 2:NEXT R

    200 RESUME 230

    230 ON ERROR GOTO 0

    250 REM LOESCHT DIE NULLDATEIEN WIEDER

    252 REM -----------------------------

    260 I=R-1: FOR R = 1 To I: GOSUB 50: KILL D$: PRINT "DEL ";D$: NEXT R

    270 REM ERSTELLT EINEN GROSSEN FILE, BIS DISK VOLL

    272 REM ----------------------------------------------

    280 C$=" TESTDATEN " + STRING$(109, "="): OPEN "O",1,F$ + "000.TXT"

    290 FOR I=1 TO 15000: N$=STR$(I): N$=STRING$(7-LEN(N$),"0") + MID$(N$,2)

    300 PRINT N$: PRINT #1,N$;C$: NEXT I: END


    Beschreibung zum Programm:


    Das Programm erwartet die Zieldiskette in Laufwerk „B:“. Ist ein anderes Diskettenlaufwerk gewünscht, kann dies in Zeile 60 eingetragen werden,

    z.B.: für Laufwerk A … 60 F$=“A:TEST_“

    Der auf das Laufwerk folgende Dateiname darf nicht verändert werden! Keinesfalls darf Laufwerk C oder eine andere Harddisk angegeben werden, da sonst möglicherweise die dort befindlichen Daten überschrieben werden.


    Das BASIC-Programm besteht im Prinzip aus drei Teilen.


    Teil1:  FOR-Schleife ab Zeile 80, welche so viele leere Dateien mit Länge Null erzeugt, bis das Inhaltsverzeichnis der Diskette voll ist. Bei manchen BASIC-Varianten kann es vorkommen, dass keine Nulldateien erzeugt werden können, sondern nur welche mit minimaler Dateilänge in Größe einer CP/M-Unit. In diesem Fall kann der CP/M-Parameter DRM (maximale Anzahl der Dateinamen im Verzeichnis) nicht immer exakt ermittelt werden und ist eventuell zu klein. Dies ist dann der Fall, wenn DRM größer als DSM ist (maximale Anzahl von CP/M-Units auf der gesamten Disk). Sobald ein Fehler auftritt, wird die FOR-Schleife abgebrochen. Der Fehler wird mit ON-ERROR abgefangen und bei Teil2 fortgesetzt.


    Teil2:  FOR-Schleife ab Zeile 260 löscht die zuvor angelegten Dateien wieder. Die Einträge werden im Verzeichnis nur mit hex E5 als gelöscht markiert, bleiben aber erhalten. Daher kann später festgestellt werden, wie groß das Inhaltsverzeichnis maximal sein kann.


    Teil3:  Vorbereitung und FOR Schleife ab Zeile 280 erstellt eine große Textdatei, die die komplette Diskette mit definierten Daten ausfüllt. Es wird jeweils ein Datensatz mit 128 Byte ausgegeben, bis ein Fehler auftritt: „Disk full in 300“. Dann ist die Testdiskette fertig.

    Auf der P2500 bleiben dabei, die bis dahin geschriebenen Datensätze samt Directory-Eintrag erhalten. Sollte das auf einem anderen System nicht der Fall sein, dann muss die Anzahl der Sätze so begrenzt werden, dass sie gerade noch ohne Fehler darauf geschrieben werden können. Dazu ist eine Änderung in Zeile 290 nötig … den TO-Wert von 15000 auf den Richtigen ändern.


    WICHTIG:

    Die zu erstellende Diskette sollte zuvor mit einem starken Magneten gründlich gelöscht werden, damit nicht Fragmente von vorherigen Daten darauf stehen bleiben. SAMdisk erkennt teilweise auch Reste von Daten, was zu unerwünschten Ergebnissen führen kann!

    Anschließend muss die Diskette am Alien-System neu formatiert werden. Ist keine Formatierungsmöglichkeit vorhanden, kann notfalls auch eine Kopie einer Aliendiskette herangezogen werden. Diese ist dann nicht mit dem Magneten zu löschen, sondern es müssen nur alle Dateien mittels ERA entfernt werden. Es darf sich keine Datei mehr darauf befinden.


    HINWEIS:

    Falls keine Möglichkeit existiert, das Programm auf das Alien System zu transferieren, kann es auch manuell eingegeben werden. Dabei können die Kommentarzeilen (REM) entfallen.



    Die so erstellte Diskette kann dann mit SAMdisk auf dem PC eingelesen werden.


    Hier das Beispiel mit der P2500:


    P2500 STANDARD TESTDISK.zip


    Da ich die Anzahl der Seiten und Spuren schon kannte, habe ich dies beim Einlesen mit SAMdisk berücksichtigt. SAMdisk ist dann etwas schneller, da es den Rest nicht analysiert.


    TIPP:

    Falls die Geometrie der Diskette völlig unbekannt ist, kann man mit der SCAN-Funktion von SAMdisk ein paar Spuren (z.B. 6) beidseitig einlesen. Daraus ist ersichtlich, ob die Diskette einseitig ist (Rückseite beim Scannen leer), oder ob 48 bzw. 96-tpi verwendet werden. Bei 48tpi ist jede zweite Spur leer. Hat man das herausgefunden, kann man die komplette Diskette mit der richtigen Einstellung in eine DSK-Datei einlesen.


    Der DSK-File von der Diskette sollte wie folgt aufgebaut sein (Beispiel P2500, 77 Tracks Single Side, 256 Byte Sektoren):


    Directory beginnt auf Track 2. Aufgrund von Interleave sind die Adressen nicht lückenlos.



    Die Datensätze von TEST_000.TXT sehen wie folgt aus:


    Diese Textdatei kann später als Testdatei dienen, um das Ergebnis einer Konvertierung zu überprüfen (wie schon bei Fall 1 beschrieben).


    Wie man von der Standard-Testdisk zu den gewünschten Parametern kommt, werde ich nächstes Mal zeigen.


    Grüße


    PAW

  • Hallo Peter


    Schau Dir doch mal bei Gelegenheit die Creative Commons License CC-BY-NC-ND an (Details sind hier). Die erlaubt die freie Weitergabe, verbietet aber die Veränderung und die kommerzielle Nutzung. Vielleicht ist das genau die Art der Lizenzierung, die Dir für Dein Werk vorschwebt. Wenn Du SAMconf darunter stellst, ist das eindeutig (und rechtssicher) festgelegt.


    Gruß- Georg B.

    Erfahrung ist Wissen, das wir erwerben, kurz nachdem wir es gebraucht hätten.


    Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

  • AUTO-SCAN für CP/M Standard-Testdisk


    NEW FEATURE IN SAMCONV:


    AUTOMATIC SCAN OF STANDARD-TESTDISKS TO DETERMINE ALL RELEVANT PARAMETERS FOR CP/M-DISK CONVERSION

    USER MANUAL (ENGLISH) INCLUDED IN ZIP-FILE


    Wie letztes Mal versprochen zeige ich hier, wie man alle zur Konvertierung benötigten Parameter aus der Standard-Testdisk gewinnen kann. Prinzipiell kann man dies auch manuell durchführen, was aber sehr mühsam wäre. Aus diesem Grund habe ich SAMCONV erweitert und eine SCAN-Funktion eingebaut, die alle nötigen Parameter extrahiert und im Sheet DISKDEF ablegt. Dies sollte für alle gängigen Formate funktionieren.


    SAMCONV210.zip



    Auslesen der Parameter


    Zuerst muss die Standard-Testdisk auf das bereits bekannte Format „.DSK“ eingescannt werden. Z.B. mit SAMdisk


    Das eingescannte Diskimage muss wie folgt umbenannt werden: der Dateiname muss mit „ALIEN-„ beginnen und mit „.DSK“ enden: „ALIEN-xxxxx.DSK“

    Beispiel für meine single side P2500 Diskette: „ALIEN-P2500SS.DSK“


    Im Sheet DISKDEF muss in einer leeren Zeile in der Spalte INDEX folgender Eintrag gemacht werden: „###SCAN-xxxxx”, wobei „xxxxx“ mit dem Dateinamen übereinstimmen muss. Beispiel: „###SCAN-P2500SS.DSK”


    Hinweis: der Prefix „###SCAN-„ darf für „normale“ Formatnamen nicht verwendet werden, da sonst immer die Daten in der Zeile überschrieben werden.


    Nun die Zeile mit „###SCAN-P2500SS.DSK” anklicken und den Button SELECT DISK-TYPE drücken. Daraufhin liest SAMCONV das Diskimage der Standard-Testdisk und ermittelt die Parameter. Wenn noch kein Wert in Spalte „Disk Diameter“ vorhanden ist, wird nun danach gefragt. Dieser Wert (3,5 / 5,25 / 8 Zoll) lässt sich nicht aus dem Image auslesen und muss daher manuell erfasst werden.


    Nachdem die Parameter in der aktuellen Zeile durch SAMCONV eingetragen wurden, kann man in Spalte COMMENT einen Text betreffend des Formates eintragen (z.B.: Philips P2500). Außerdem muss der Name in Spalte INDEX geändert werden (Prefix „###SCAN-„ entfernen), damit nicht beim nächsten Mal wieder ein SCAN durchgeführt wird. Sobald dies erledigt ist, kann zum Abschluss eine Kopie des Images gemacht und auf SamImage.dsk umbenannt werden. Nun kann das Format durch Einlesen TO DOS ausprobiert werden. Die einzige Datei "TEST_000.TXT" sollte ins DOS-Verzeichnis eingelesen werden und wie folgt aussehen:


    000001 TESTDATEN =============================================================================================================

    000002 TESTDATEN =============================================================================================================

    000003 TESTDATEN =============================================================================================================


    Die Zeilennummern müssen lückenlos aufsteigend sein! Wenn nicht, dann hat die Konvertierung nicht richtig funktioniert.


    Nun kann das neue Format für die Konvertierung der CP/M-Aliendisks verwendet werden.


    Ich wünsche viel Erfolg!


    PAW

  • Was für ein Excel braucht man denn dafür? Der modernste Rechner im Haus, der Laptop meiner Frau, hat Excel 2010.

    Da mag es auch nicht. Faselt was von Architektur nicht kompatibel, wenn man Diskettenformate auswählen will.....

    Sollte kein Problem sein, das gibts ja als Downloadlink bei Ebay recht günstig, müßte nur wissen welche Version ich kaufen muß.

  • Quote

    Toshi

    Was für ein Excel braucht man denn dafür? Der modernste Rechner im Haus, der Laptop meiner Frau, hat Excel 2010.


    Ich verwende Office 2003. Ich arbeite nur damit, da es von der Oberfläche besser zu bedienen ist, als neuere Versionen. Habe auch keine neueren Versionen zum Testen zur Verfügung.

    gpospi hat mir gesagt, er habe auch schon auf einer neueren Version als 2003 getestet. Ich weiß aber nicht welche.

  • Die P3800 DSK Images habe ich mit HxC Soft nach IMD gewandelt und mit IMD auf Diskette geschrieben.


    Die ging einwandfrei und die Disketten ließen sich mit 22disk und auf dem J&K PMDS Rechner lesen.







  • Nun mal Supercopy unter MSDOS im direkten Vergleich zu PAW s SAMCONV.

    (Was bei mir nun perfekt läuft, auf meiner neuen XP Maschine und Excel 2003).


    Supercopy kann die Disketten vermeintlich lesen, erkennt aber die "USER" Unterverzeichnisse nicht (ist klar, steht ja auch so im Handbuch). Im Handbuch steht aber, daß alle Dateien dann in einem Verzeichnis zusammengefaßt werden.


    Das funktioniert aber bei den P3800 Disketten nicht!


    Wie man an den Beispielen von Diskette 3 sieht, enthalten die mit SAMCONV extrahierten Images viel mehr Dateien als die mit SUPERCOPY extrahierten!


    Zumal SAMCONV die "User" Unterverzeichnisse richtig zuordnet!


    Also PAW - herzlichen Dank für das großartige Stück Software.



    :Meister:


    In den Anhängen jeweils links, das Ergebnis von SAMCONV und rechts das Ergebnis von SUPERCOPY.





    Btw, ich habe gern mit Supercopy gearbeitet, und finde es immer noch Klasse, weil

    es direkte Disk Operationen zuläßt, aber SAMCONV ist eine super Ergänzung dazu!

  • Na die Diskette 3 werde ich mir doch gleich mal mit Scopy anschauen.


    Für die Files wurde das Attribut 'System' gesetzt. Mit dem NC unter DOS ist dies auch sichtbar.


    Mit DIR /w /a werden die Dateien im SCOPY Drive auch angezeigt.



  • Hallo PAW !


    Ich habe hier eine SAGE-II Maschine mit 96tpi Laufwerken.

    Hierfür habe ich die Betriebssysteme CP/M-68k und UCSD p-System (siehe mit samdisk erzeugte Beispiele im Anhang).


    Das hier weiss ich über die Diskettenparameter, und daß die CP/M Disketten nicht vom p-Systen gelesen werden können umgekehrt.

    Wäre es möglich, mit SAMCONV auch diese Disketten zu bearbeiten?

    Die Sage IV 48 TPI Variante ist ja schon implementiert.


    Könntest Du mir eine Hilfestellung geben, wie ich vorgehen muß?


    Viele Grüße

    Stephan

  • Hallo @Toshi


    UCSD ist derzeit nur für Philipsdisketten implementiert und lässt sich auch nicht parametrisieren. Ist fix verdrahtet. Werde ich auch nicht in nächster Zeit in Angriff nehmen, da dies viel Aufwand bedeutet. Wäre natürlich schön, wenn man die Möglichkeiten der Parametrisierung auch für UCSD hätte. Würde mich dann an Dich wenden, da ich Unterstützung bei der Erstellung einer UCSD-Testdisk benötige.


    CP/M-Formate

    Die oben abgebildeten Diskettenparameter reichen für eine CP/M-Konvertierung leider nicht aus, da Du noch die Parameter für CP/M bräuchtest (lassen sich teilweise aus CP/M gewinnen), aber der Interleave ist meist nur schwer zu ermitteln.


    Hast Du nachgesehen, ob Sage II in 22Disk oder SuperCopy definiert ist? Falls ja, dann kannst Du die Parameter aus diesen auslesen. Wie das geht ist weiter oben in zwei Threads beschrieben! So kannst Du über 500 Formate für SAMCONV aufbereiten und übernehmen.


    Ist das gewünschte Format nicht dabei, dann kannst Du, da Du ja eine funktionierende CP/M-Maschine als Zielsystem hast, eine Standard-Testdisk (auch weiter oben beschrieben) erstellen. Mit SAMCONV 2.0 kannst Du diese analysieren und die Parameter dafür automatisch erstellen lassen. Danach kannst Du dieses Format in SAMCONV benutzen!

    Beste Grüße

    Peter

  • Vielen Dank PAW für die Erläuterungen!

    Das UCSD PC VOL File muß ich mir mal ansehen. Vielleicht funktioniert das auch mit der Amiga-Version!


    EDIT: Wahrscheinlich nicht. Es ist kleiner als 640kb.


  • PAW Ich habs trotzdem mal versucht mit der UCSD PC VOL Einstellung - die Software verlangt auch bei VOL Files, daß diese eingepackt sind in einem DSK?


    Ich habe mal mit BU.EXE probiert das Amiga UCSD vol-File zu extrahieren, und siehe da: es geht. Zumindest werden files rausgeschrieben, deren Integrität habe ich noch nicht geprüft. Sogar die vertuellen SVOLs im VOL kann man damit auspacken. Fazit: Das UCSD VOL Format scheint systemunabhängig zu sein, denn für die Amiga-Version spezifisch gedacht sind die Tools vom Jefferson Computer Museum nicht.


    Leider kann man mit BU.EXE nur auspacken und keine Dateien in ein .VOL File hineinschreiben.


    Btw, kann jemand was mit der Spalte "Ux..." anfangen?


  • @Toshi

    UCSD-VOL-Files sind nicht als DSK gespeichert. Diese VOL-Files können mit dem UCSD-Emulator am PC erstellt und auch wieder eingelesen werden. SAMCONV kann nur solche vom PC-Emulator oder von Philips lesen/schreiben. Habe versucht auf Dein psystem.VOL zuzugreifen. SAMCONV zeigt zwar ein paar Dateien aus dem Inhaltsverzeichnis an, bricht aber mit einem Überlauffehler ab. Dürfte also nicht mit dem PC-Emulator-Format übereinstimmen.


    Natürlich kann man auch P2500 und IBM-PC UCSD Diskettenimages im DSK-Format bearbeiten, aber eben nur diese.