Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Tool zur Extraction der Dateien aus UDOS/NDOS Disketten Image Dateien » Themenansicht

Autor Thread - Seiten: -1-
000
20.08.2026, 16:22 Uhr
mj666



Ich habe hier noch ein altes Schätzchen, das noch funktioniert.



Das ist ein Eigenbau aus den 80er-Jahren. Darauf läuft alternativ eine UDOS-Variante sowie auch eine Version von CP/M.

Ich wollte schon immer mal die Dateien am PC öffnen und mir einige der alten Dateien (Sourcecodes, Dokumente usw.) ansehen. Nachdem ich die Disketten mithilfe eines Greaseweazle als Images verfügbar hatte, war das für die CP/M-Disketten auch kein Problem (CPMTools).

Für die UDOS-/NDOS-Disketten habe ich allerdings kein entsprechendes Tool gefunden. Daher habe ich mithilfe einer im Internet verfügbaren Dokumentation und Claude ein PowerShell-Skript erstellt, das die Inhalte der Disketten in Windows-Dateien extrahieren kann.

Vielleicht ist es für jemanden hier noch hilfreich?

https://github.com/MJ666/UDOS_Extract
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
20.08.2026, 18:24 Uhr
Early8Bitz

Avatar von Early8Bitz

Kann ich extrahieren. Image muss im CQM Format oder als RAW Image vorliegen.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
20.08.2026, 20:37 Uhr
mj666




Zitat:
Early8Bitz schrieb
Kann ich extrahieren. Image muss im CQM Format oder als RAW Image vorliegen.


Das Image ist ein binäres RAW Image. Meine NDOS Disketten sind alle im im Format 80x32x256.

Quellcode:
# 2. NDOS Erweitert 80-Spuren (Für modernere 80-Spur QD-Laufwerke)
# Format: 80 Zylinder, 2 Köpfe, 16 Sektoren ? 256 Bytes
disk robotron_ndos80
    cyls = 80
    heads = 2
    tracks * ibm.mfm
        secs = 16
        bps = 256
    end
end


Dieser Beitrag wurde am 20.08.2026 um 21:00 Uhr von mj666 editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
20.08.2026, 21:56 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
mj666 schrieb
Das Image ist ein binäres RAW Image. Meine NDOS Disketten sind alle im im Format 80x32x256.


Schick mir mal so ein Image. Mailadresse als PN.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
20.08.2026, 22:21 Uhr
mj666




Zitat:
Early8Bitz schrieb
Schick mir mal so ein Image. Mailadresse als PN.



Habe mal ein Image geschickt. Mit Greasewezle 4.1 und folgendem Kommando ausgelesen.

gw.exe read --device=COM4 --drive=A --diskdefs diskdefs_robotron.cfg --format robotron_ndos80 DiskImage.img

Dieser Beitrag wurde am 20.08.2026 um 22:34 Uhr von mj666 editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
21.08.2026, 18:21 Uhr
Early8Bitz

Avatar von Early8Bitz

Es gab mal im Zusammenhang mit dem P8000emu von Matt Knoth ein Tool

extract_cqm_udos

als C-Quelle. Der P8000emu benutzt als Imageformat für seine Disketten das QM/CQM Format.
Mit diesem Tool konnte man alle Dateien von einem UDOS Diskettenimage im o.g. Format
extrahieren.

Math Knoth war 2009 als MKN im RT-Forum aktiv. Seine damalige Webseite, wo man das
runter laden konnte, existiert schon lange nicht mehr.
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=4202
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
21.08.2026, 18:59 Uhr
felge1966
Default Group and Edit


https://web.archive.org/web/20140612060055/http://www.knothusa.net/uploads/P8000emu_0.99beta.zip

Gruß Jörg
--
http://felgentreu.spdns.org/bilder/jacob120.gif
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
21.08.2026, 20:42 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
felge1966 schrieb
https://web.archive.org/web/20140612060055/http://www.knothusa.net/uploads/P8000emu_0.99beta.zip


Das ist nur der P8000 Emulator. Das o.g. Tool war entweder einzeln oder im Paket mit anderen Utilities im Download.

Aber hier habe ich es auch gerade wiedergefunden:
http://www.pofo.de/P8000/misc/sources/tools/extract_cqm_udos.c
In diesem Beitrag
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=556
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 21.08.2026 um 20:44 Uhr von Early8Bitz editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
24.08.2026, 00:11 Uhr
mj666



Ich habe ein weiteres Tool gebaut um CQM Images in IMG Images und zurück zu konvertieren. Ich habe damit erfolgreich die Disketten Images vom P8000 Emulator nach IMG konvertiert und auch extrahiert (OSM, UDOS). Weiterhin habe ich eine von meinen UDOS IMG Dateien nach CQM konvertiert und im P8000 Emulator ins Laufwerk 1: eingelegt. Die dem Emulator beiliegende UDOS Diskette schein nicht richtig zu funktionieren? Der CAT Befehl liefert keine Dateien (FILE NOT FOUND)? Nach einem Reset mit beiden Disketten bootet der Emulator wohl mit einem Teil von meiner Diskette und CAT liefert mir die Dateien von meiner Diskette aber nichts von Laufwerk 0:.




In dem Metadaten vom Export der P8000 UDOS Diskette habe ich gesehen das wohl bei allen Dateien das Secret Flag gesetzt ist. Eventuell ist das der Grund warum nichts angezeigt wird. Bin schon eine Weile raus hier :-)

Falls hier Interesse an diesem Tool (PowerShell Skript) besteht kann ich es auch auf GIT veröffentlichen.

Dieser Beitrag wurde am 24.08.2026 um 00:14 Uhr von mj666 editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
24.08.2026, 09:16 Uhr
Early8Bitz

Avatar von Early8Bitz

CAT D=0

CAT 0 würde nur eine Datei namens '0' auflisten.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
24.08.2026, 13:35 Uhr
mj666




Zitat:
Early8Bitz schrieb
CAT D=0

CAT 0 würde nur eine Datei namens '0' auflisten.



Du hast recht. Das Problem war tatsächlich das Secret Attribut bei allen Dateien auf der UDOS Diskette.

Ich habe das Git Repository etwas bearbeitet und noch zwei weitere Tools hinzugefügt.

https://github.com/MJ666/RetroTools

Der alte Link funktioniert im Moment aber auch noch.

Dieser Beitrag wurde am 24.08.2026 um 13:37 Uhr von mj666 editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
24.08.2026, 17:13 Uhr
Early8Bitz

Avatar von Early8Bitz

In o.g. Tool

http://www.pofo.de/P8000/misc/sources/tools/extract_cqm_udos.c

ist noch ein Bug, die Property-Bits der UDOS-Datei werden aus dem entsprechenden Byte im Descriptor in der falschen Reihenfolge ausgelesen.
Hier der Fix als diff.

Quellcode:
--- extract_cqm_udos.c    2009-07-28 11:17:45.000000000 +0200
+++ extract_cqm_udos_fix.c    2009-08-14 22:50:18.000000000 +0200
@@ -25,6 +25,10 @@
  *    MA 02111-1307, USA                                                     *
  *                                                                           *
  *****************************************************************************/
+/*****************************************************************************
+ * Changes by RPN                                                            *
+ * 2009-08-14  Fix output of properties (WELSRF)                             *
+ *****************************************************************************/

#include<stdio.h>
#include<string.h>
@@ -462,12 +466,12 @@
                                                    descriptor[0x20],descriptor[0x21],descriptor[0x22],descriptor[0x23],descriptor[0x24],descriptor[0x25]);
    
         strcpy(buf,"......");
-        if(descriptor[0x13] & 0x04)  buf[ 5]='W';
-        if(descriptor[0x13] & 0x08)  buf[ 4]='E';
-        if(descriptor[0x13] & 0x10)  buf[ 3]='L';
-        if(descriptor[0x13] & 0x20)  buf[ 2]='S';
-        if(descriptor[0x13] & 0x40)  buf[ 1]='R';
-        if(descriptor[0x13] & 0x80)  buf[ 0]='F';
+        if(descriptor[0x13] & 0x04)  buf[ 5]='F';
+        if(descriptor[0x13] & 0x08)  buf[ 4]='R';
+        if(descriptor[0x13] & 0x10)  buf[ 3]='S';
+        if(descriptor[0x13] & 0x20)  buf[ 2]='L';
+        if(descriptor[0x13] & 0x40)  buf[ 1]='E';
+        if(descriptor[0x13] & 0x80)  buf[ 0]='W';
         fprintf(fp,"%s   ",buf);

         fprintf(fp,"%04x    %04x   %04x   "  ,(descriptor[0x29]<<8)|descriptor[0x28], (descriptor[0x7b]<<8)|descriptor[0x7a],(descriptor[0x7d]<<8)|descriptor[0x7c]);


--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 24.08.2026 um 17:14 Uhr von Early8Bitz editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
24.08.2026, 17:26 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
mj666 schrieb
Ich habe ein weiteres Tool gebaut um CQM Images in IMG Images und zurück zu konvertieren.


Gibt es alles schon. Auf

https://www.seasip.info/Unix/LibDsk/

gibt es eine Library, mit der der Zugriff auf eine Menge unterschiedlicher Disk-Image-Formate möglich ist, ohne die Internas der einzelnen Formate (Header, Signaturen, Prüfsummen/CRC, Kompression) kennen zu müssen.

Ein fertiges GUI-basiertes Programm "dsktool", welches auf dieser Library basiert, liegt bei.
Mit dem können Images zwischen unterschiedlichen Formaten konvertiert werden.
Das nehme ich immer für die Umwandlung CQM - IMG (raw) und zurück.
Es sind auch einige Kommandozeilentools enthalten, die ebenfalls zum Konvertieren u.a. benutzt werden können.

Neben den eingebauten Diskettenformaten kann man durch eine "libdskrc" Datei eigene Formate definieren, die dann zusätzlich zur Verfügung stehen.

Quellcode:
# libdskrc 2019-05-06 early8bitz.de
# private format definitions for LibDsk library

[robo640k]
Description = Robotron 5.25" DSDD 640k
Sides = alt
Cylinders = 80
Heads = 2
Sectors = 16
SecBase = 1
SecSize = 256
DataRate = DD
RWGap = 32
FmtGap = 50

[robo720k]
Description = Robotron 5.25" DSDD 720k
Sides = alt
Cylinders = 80
Heads = 2
Sectors = 9
SecBase = 1
SecSize = 512
DataRate = DD
RWGap = 27
FmtGap = 84

[robo800k]
Description = Robotron 5.25" DSDD 800k
Sides = alt
Cylinders = 80
Heads = 2
Sectors = 5
SecBase = 1
SecSize = 1024
DataRate = DD
RWGap = 55
FmtGap = 116

[p8k_t3]
Description = P8000 Typ 2,3 5.25" DSDD 160k
Sides = alt
Cylinders = 40
Heads = 1
Sectors = 16
SecBase = 1
SecSize = 256
DataRate = DD
RWGap = 32
FmtGap = 50

[p8k_t4]
Description = P8000 Typ 4 5.25" DSDD 320k
Sides = alt
Cylinders = 80
Heads = 1
Sectors = 16
SecBase = 1
SecSize = 256
DataRate = DD
RWGap = 32
FmtGap = 50

[p8k_t5]
Description = P8000 Typ 5 5.25" DSDD 640k
Sides = alt
Cylinders = 80
Heads = 2
Sectors = 16
SecBase = 1
SecSize = 256
DataRate = DD
RWGap = 32
FmtGap = 50

[p8k_t6]
Description = P8000 Typ 6 5.25" DSDD 720k
Sides = alt
Cylinders = 80
Heads = 2
Sectors = 9
SecBase = 1
SecSize = 512
DataRate = DD
RWGap = 27
FmtGap = 84

[p8k_t7]
Description = P8000 Typ 7,8,9 5.25" DSDD 800k
Sides = alt
Cylinders = 80
Heads = 2
Sectors = 5
SecBase = 1
SecSize = 1024
DataRate = DD
RWGap = 55
FmtGap = 116

[pc1715_200]
Description = PC1715 40x5x1x1024 5.25" SSDD 200k
Sides = alt
Cylinders = 40
Heads = 1
Sectors = 5
SecBase = 1
SecSize = 1024
DataRate = DD
RWGap = 55
FmtGap = 116


--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
24.08.2026, 17:53 Uhr
Early8Bitz

Avatar von Early8Bitz

Hier ein Beispiel mit dem Kommandozeilentool "dskconv.exe" aus der LibDsk Sammlung.

Quellcode:
D:\z80\devel\qmtools>dskconv
Syntax:
      dskconv {options} in-image out-image

Options are:
-itype <type>   type of input disc image
-otype <type>   type of output disc image
                'dskconv -types' lists valid types.
-format         Force a specified format name
                'dskconv -formats' lists valid formats.

Default in-image type is autodetect.
Default out-image type is LDBS.

eg: dskconv diag800b._01 diag800b.ldbs
    dskconv -otype raw diag800b._01 diag800b.ufi

D:\z80\devel\qmtools>dskconv -formats
Disk formats supported:

   pcw180     : PCW / IBM 180k
   cpcsys     : CPC System
   cpcdata    : CPC Data
   pcw720     : PCW / IBM 720k
   pcw1440    : PcW16 / IBM 1440k
   ibm160     : IBM 160k (CP/M-86 / DOSPLUS)
   ibm320     : IBM 320k (CP/M-86 / DOSPLUS)
   ibm360     : IBM 360k (CP/M-86 / DOSPLUS)
   ibm720     : IBM 720k (144FEAT)
   ibm1200    : IBM 1.2M (144FEAT)
   ibm1440    : IBM 1.4M (144FEAT)
   acorn160   : Acorn 160k
   acorn320   : Acorn 320k
   acorn640   : Acorn 640k
   acorn800   : Acorn 800k
   acorn1600  : Acorn 1600k
   pcw800     : PCW 800k
   pcw200     : PCW 200k
   bbc100     : BBC 100k
   bbc200     : BBC 200k
   mbee400    : Microbee 400k
   mgt800     : MGT 800k
   trdos640   : TR-DOS 640k
   ampro200   : Ampro 40 track single-sided
   ampro400d  : Ampro 40 track double-sided
   ampro400s  : Ampro 80 track single-sided
   ampro800   : Ampro 80 track double-sided
   pcw1200    : PcW16 / IBM 1200k
   mac400     : Macintosh GCR 400k
   mac800     : Macintosh GCR 800k
   myz80      : MYZ80 8Mb
   pcpm320    : IBM 320k (CP/M-86 / DOSPLUS)
   p8k_t7     : P8000 Typ 7,8,9 5.25" DSDD 800k
   p8k_t6     : P8000 Typ 6 5.25" DSDD 720k
   p8k_t5     : P8000 Typ 5 5.25" DSDD 640k
   p8k_t4     : P8000 Typ 4 5.25" DSDD 320k
   p8k_t3     : P8000 Typ 2,3 5.25" DSDD 160k
   robo800k   : Robotron 5.25" DSDD 800k
   robo720k   : Robotron 5.25" DSDD 720k
   robo640k   : Robotron 5.25" DSDD 640k
   pc1715_200 : PC1715 40x5x1x1024 5.25" SSSD 200k

D:\z80\devel\qmtools>dskconv -types
Disk image types supported:

   ntwdm      : NT WDM floppy driver
   floppy     : Win32 floppy driver
   gotek      : Gotek 1440k disc image collection
   gotek72    : Gotek 720k disc image collection
   remote     : Remote LibDsk instance
   rcpmfs     : Reverse CP/MFS driver
   dsk        : CPCEMU .DSK driver
   edsk       : Extended .DSK driver
   apridisk   : APRIDISK file driver
   copyqm     : CopyQM file driver
   tele       : TeleDisk file driver
   ldbs       : LibDsk block store
   ldbst      : LDBS (text form)
   sap        : SAP file driver
   qrst       : Quick Release Sector Transfer
   imd        : IMD file driver
   ydsk       : YAZE YDSK driver
   raw        : Raw file driver (alternate sides)
   rawoo      : Raw file driver (out and out)
   rawob      : Raw file driver (out and back)
   myz80      : MYZ80 hard drive driver
   simh       : SIMH disc image driver
   nanowasp   : NanoWasp image file driver
   logical    : Raw file logical sector order
   jv3        : JV3 file driver
   dc42       : Disk Copy 4.2
   cfi        : CFI file driver

D:\z80\devel\qmtools>dskconv -format p8k_t5 RAW_Image.img -otype qm CQM_Image.cqm
Input driver: Raw file driver (alternate sides)
Output driver:CopyQM file driver

D:\z80\devel\qmtools>dir *_image*
Datenträger in Laufwerk D: ist Daten
Volumeseriennummer: B216-BF58

Verzeichnis von D:\z80\devel\qmtools

24.08.2026  17:46           399.713 CQM_Image.cqm
20.08.2026  23:04           655.360 RAW_Image.img
               2 Datei(en),      1.055.073 Bytes
               0 Verzeichnis(se), 542.770.692.096 Bytes frei


--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 24.08.2026 um 18:07 Uhr von Early8Bitz editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
24.08.2026, 19:20 Uhr
mj666



LibDisk hatte ich mir angesehen aber keine Dokumentation gefunden. Habe es nicht zum laufen bekommen. Muss ich mir noch mal anschauen. Vielen Dank für die Info.
Dieser Beitrag wurde am 24.08.2026 um 19:50 Uhr von mj666 editiert.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
24.08.2026, 19:55 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
mj666 schrieb
LibDisk hatte ich mir angesehen aber keine Dokumentation gefunden. Hätte mir das mal genauer anschauen und vielleicht auch mal starten sollen. Vielen Dank für die Info.


In der libdsk-<version>.tar.gz steckt eine libdsk-<version>.tar.
In dem tar-File steckt dann der ganze Source-Tree und auch ein doc-Verzeichnis mit einer PDF.
Ich schick dir mal die aktuellste PDF als Mail.

Ich habe mir das ganze in einer MSYS2 UCRT64 Umgebung kompiliert.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
24.08.2026, 22:47 Uhr
mj666



Habe mir die fertigen Windows Executables runtergeladen. Ursprünglich nur die Stable Version (ohne dskconv). Habe nun auch die Development Version mit deinen Diskettenformaten installiert und laufen. Vielen Dank.
 
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek