PC-DOS 1.1 / MS-DOS 1.25 - Probleme?

  • Hallo,

    bin etwas ratlos. Habe mal mit PC-DOS 1.1 und MS-DOS 1.25 (CDP Version) herumgespielt, mir ist aufgefallen dass die DOS Versionsabfrage nur teilweise funktioniert.

    Fakt ist wohl, das eigentlich alle DOS-Funktionsaufrufe ab 30h nicht mit DOS-Versionen unter 2.0 funktionieren.

    Die Versionsabfrage laut verschiedenen Artikeln im Internet funktioniert immerhin soweit, dass man Versionen unter 2.0 zumindest am Rückgabewert 0 im Register AL erkennen kann.

    Das funktioniert aber dann doch nur mit PC-DOS 1.1 (siehe Image, 320KB entpackt). Bei MS-DOS 1.25 geht das schief.

    Was aber noch komischer ist, WINIMAGE ziert sich den Inhalt der Diskettenimages anzuzeigen, obwohl man einwandfrei damit via PCem oder 86Box arbeiten kann.

    Gibt es andere Programme, die die Diskettenimages korrekt bearbeiten können ?


    P.S.: Das DEBUG, was bei PC-DOS 1.1/MS-DOS 1.25 dabei ist, kann kein "A" (Assemble) Befehl, aber noch schlimmer, auch kein "P" (Procedure) ...

    Dateien

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

    Einmal editiert, zuletzt von Peter z80.eu ()

  • Hallo Peter,

    das mit WinImage kann ich zumindest wohl erklären - es erwartet genau wie spätere DOS-Versionen die "magic bytes" 55AA am Ende des Bootsektors, um sie als DOS-Diskette zu erkennen, die Versionen 1.x hatten die wohl noch nicht.


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • D.h. wenn ich die 55 AA (inkl. veränderter, einfacher Prüfsumme für den gesamten Sektor) korrigiere, kann WINIMAGE mit den Diskettenimages wieder umgehen ? Sicher ?

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Ich habe das mal mit der 55 AA Signatur am Schluß ausprobiert, mit dem so geänderten Bootsektor kann man zwar weiterhin booten, aber WINIMAGE meint immer noch, die Diskette wäre leer. Muss an was anderes liegen, mit "Disk Probe" (kommt noch aus Windows NT Zeiten) wird nichts gescheites angezeigt, Norton Disk Editor (s.u.) zeigt da auch nichts an, denke das ist der Grund warum auch WINIMAGE damit nicht zurecht kommt.

    Es stehen einfach an den in späteren DOS-Versionen vorgesehenen Stellen keine interpretierbaren Werte im Bootsektor.


    Warum eine neuere DOS-Version hingegen die Diskette einwandfrei als 320KB (40 Spur, 8 Sektoren, 2 Seiten) erkennt, verstehe ich aber weiterhin nicht.

  • Zusatz, im winworldpc-Forum habe ich das gefunden:


    WINIMAGE

    In order to make 160kb and 320kb DOS disks readable in WINIMAGE,

    the following changes should be make to the floppy disk header.

    This is the first 30 bytes of the disk. You will need a hex editor for this.

    These modifications should work for most disks in WINIMAGE, and most disks

    should boot in DOS. There is one known exception, although it is readable

    in WINIMAGE, COMPAQ will not boot up if this change is made. Also this

    will not work for the infamous boot disks, since there are no files to see.

    As always NEVER attempt this on the original disks, make a copy.


    5¼" disk

    ADDRESS BYTES 160 320  
    ------ ----- ----- -----  
    00-02 00-02 DO NO CHANGE jump code  
    03-0A 03-10 OPTIONAL INFO optional OEM name and version  
    0B 0C 11-12 00 02 00 02 bytes per sector
    0D 13 01 02 sectors per allocation unit
    0E 0F 14-15 01 00 01 00 reserved sectors
    ------ ----- ----- -----  
    10 16 02 02 number of FATs
    11 12 17-18 40 00 70 00 maximum number of root directory entries
    13 14 19-20 40 01 80 02 number of sectors in logical image
    15 21 FE FF media descriptor byte
    16 17 22-23 01 00 01 00 number of sectors occupied by a single FAT
    18 19 24-25 08 00 08 00 sectors per track
    1A 1B 26-27 01 00 02 00 number of heads
    1C 1D 28-29 00 00 00 00 # of hidden sectors



    Das kann man auch mit einem einfachen C-Programm machen, mal schauen.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

    Einmal editiert, zuletzt von Peter z80.eu ()

  • Im Boot Sektor dieser Diskette ist nur ein Sprung enthalten und keine validen Disk Parameter, wie bei späteren DOS Versionen.


    DOS vor 2.x verwendet ausschließlich das erste Byte der FAT um das Medium zu erkennen.

    Dieses byte ist hier 0xFF. Damit ergeben sich die hart verdrahteten Diskettenparameter.


    Bei späteren DOS Versionen sind die Disketten (und Festplattenparameter) im Boot Sektor abgelegt worduch keine Tabelle mit Media Bytes mehr benötigt wird.

    Damit konnten alle möglichen Disketten und Festplatten verwendet werden und nicht nur die vordefinierten.


    Um so eine alte Diskette mit modernen Tools bearbeiten zu können, muss man im Boot Sektor die entsprechenden Werte eintragen.

    Ausserdem, wie schon oben gesagt wurde, die Signatur 55AA am Endes des Boot Sektors.

    Dann sollte es funktionieren.

    Für die passenden Werte siehe Tabelle mit Boot Record Offsets und Inhalten unten.

    Anbei auch eine so modifiziertes Datei.


    Ausgabe meines eigenen DOS-Image Tools (nur für Analyse und Extraktion, kein Schreiben)

    Das Progrämmchen habe ich gerade so modifiziert, dass es auch das 1.x Format erkennt.

    Scheint zumindest die Einzelddateien richtig zu extrahieren.


  • Habe dazu ein kleines Hilfsprogramm in C geschrieben, kompilierbar mit dem kleinen TCC Compiler, heraus kommt ein 32bit Windows Console Programm:


    Kompilieren mit:

    C:\tcc>tcc -Iinclude dos1boot.c


    Aufruf mit:

    C:\legacy\tcc>dos1boot pcdos11.ima npcdos11.ima

    Input file is sized 327680 bytes.

    Parameters set for double sided disk


    C:\tcc>


    Danach ist das Image (ein- oder zweiseitige Diskette, 160KB oder 320KB groß) mit WinImage lesbar und weiterhin bootfähig (getestet).


    Anbei die EXE Datei und auch den C-Quellcode.


    P.S: Die "magische" Signatur am Ende (also 0x55 0xAA) ist völlig unerheblich, sowohl für WinImage als auch für den genutzten PC, mit dem die Diskette zum Booten von DOS genutzt wird.

  • Mal als Anekdote... Compaq MS-DOS 1.10 ist ein ganz anderer Fall, dort kann man den originalen Bootsektor (übrigens auch OHNE '55' 'AA' Signatur am Ende des Bootsektors!) nicht einfach so mit dem o.g. Programm modifizieren.

    Um das wieder geradezubiegen, muss man den ganzen Bootsektor austauschen und leicht anpassen (auf das Laden IOSYS.COM und MSDOS.COM).

    Das werde ich bei Gelegenheit auch wieder per Programm möglich machen, aber so geht's ja auch für diejenigen, die auch mal Compaq MS-DOS 1.10 ausprobieren wollen, und halt auch andere Programme zur Bootdiskette hinzufügen wollen.

    Den so modifizierten Bootsektor kann man leicht auch auf neu via Compaq MS-DOS 1.10 formatierte Disketten mit "Bordmitteln" übertragen, und zwar mit:


    1. Modifizierte Bootdiskette einlegen

    2. "DEBUG" aufrufen

    3. "L100 0 0 1" eingeben

    4. Neu formatierte, andere (Boot)diskette einlegen

    5. "W100 0 0 1" eingeben

    6. "Q" eingeben, fertig