        Dies und das zu den Dateisystemen ISO 9293, GEMDOS und MS-DOS


Copyright  1995-07-02 by Rainer Seitel

Diese Datei darf mit Quellenangabe ganz oder teilweise zitiert werden.


Bootsektor
----------

Aufbau eines Bootsektors nach Atari, MS-DOS und ISO 9293:
  $00-$02  00-02        M68000- oder I8086-Sprungbefehl
                        MS-DOS will ab Laufwerk C: hier $EB $3C $90!
  $03-$0A  03-10        Name des Initialisierungsprogrammes
                        Erlaubte Zeichen:  !"%&'()*+,-./0..9:;<=>?A..Z_
  $08-$0A  08-10        TOS erwartet hier eine Seriennummer zur
                        Diskwechselerkennung! Ab TOS 2 wird auch die
                        von MS-DOS geschriebene Seriennummer beachtet.
  $0B-$0C  11-12        Sektorlnge
  $0D      13           Sektoren je Cluster
  $0E-$0F  14-15        Anzahl reservierter Sektoren einschlielich Bootsektor
  $10      16           Anzahl der FATs (nach ISO immer 2)
  $11-$12  17-18        Eintrge im Wurzelverzeichnis
  $13-$14  19-20        Gesamtzahl der Sektoren oder 0 bei mehr als 65535
  $15      21           Datentrger-Kennzeichen, Media-Byte
  $16-$17  22-23        Sektoren je FAT
  $18-$19  24-25        Sektoren je Spur
  $1A-$1B  26-27        Anzahl der Seiten
  $1C-$1D  28-29        Anzahl versteckter Sektoren vor dem Bootsektor
Ab MS-DOS 4.0 gibt es den erweiterten BPB:
  $1C-$1F  28-31        Anzahl versteckter Sektoren vor dem Bootsektor
  $20-$23  32-35        Gesamtzahl der Sektoren wenn mehr als 65535
  $24      36           physikalische Laufwerksnummer fr MS-DOS
  $25      37           fr MS-DOS reserviert
  $26      38           $29 kennzeichnet den erweiterten BPB
  $27-$2A  39-42        Seriennummer, Zeitpunkt der Initialisierung
  $2B-$35  43-53        Diskname wie im Wurzelverzeichnis
  $36-$3D  54-61        Dateisystem: FAT12   , FAT16   
  $3E-$FD  62-253       Boot-Programm
  $FE-$FF  254-255      Atari: Ausgleich fr Prfsumme $1234 wenn bootfhig
                        MS-DOS: $55 $AA wenn bootfhig
                        Mac: mu $55 $AA sein, das ist ein Fehler!


/* Media-Byte und Format-Parameter fr MS-DOS, Atari und DIN EN 29293 =
   ISO 9293 : 1987. Nach ISO bedeutet das Media-Byte $FD Werte aus der Tabelle
   benutzen und $F9 Werte aus dem Bootsektor lesen. Wenn 40-Spur-Disketten von
   der Tabelle abweichen, dann ist das Media-Byte also $F9.
   "ISO Typ ..." nach DIN EN 29983 = ISO/IEC 9983 : 1989.

Media-Byte   Diskette  Gre       Formatierung        Initialisierung
MS Atar ISO  ISO Typ   in mm (in)  CYL NSIDES SPT BPS  RES  SPF  SPR  SPC  Clust
$F0 $F0 $F9   303       90 (3,5 )   80    2   36  512    1    9   15    2  2863
$F0     $F9   302       90 (3,5 )   80    2   18  512    1    9   14    1  2847
    $F0       302       90 (3,5 )   80    2   18  512    1    6   14    2  1426
$F8 $F8      Festplatte
$F9     $F9   301       90 (3,5 )   80    2    9  512    1    3    7    2   713
    $F9       301       90 (3,5 )   80    2    9  512    1    5    7    2   711
    $F9      (301)      90 (3,5 )   80    1    9  512    1    5    7    2   351
        $F9   203      130 (5,25)   80    2    9  512    1    3   11    2   711
$F9     $F9   204      130 (5,25)   80    2   15  512    1    7   14    1  2371
$FC $FC      (202)     130 (5,25)   40    1    9  512    1    2    4    1   351
$FD $FD $FD   202      130 (5,25)   40    2    9  512    1    2    7    2   354
$FE          (202)     130 (5,25)   40    1    8  512    1    1    4    1   313
$FF          (202)     130 (5,25)   40    2    8  512    1    1    7    2   315
 */


FATs
----

Die Eintrge 0 und 1 enhalten das Media-Byte und $FF.
Die Werte in den Eintrgen 2 bis Clusterzahl + 1 bedeuten:
$0000                        freier Cluster
$0001                        nicht mglich
$0002 bis (Clusterzahl + 1)  nchster Cluster
(Clusterzahl + 2) bis $FFEF  reserviert
$FFF0 bis $FFF6              verboten!
$FFF7                        defekter Cluster
$FFF8 bis $FFFF              Dateiende


Beschrnkungen auf TOS-kompatiblen Rechnern
-------------------------------------------

DL_SECSIZ     $4000   $4000   $4000   $4000   $8000   $8000?
DL_MINFAT         2       2       1       1       1       ?
DL_MAXFAT         2       2       2       2       2       2
DL_MINSPC         1       1       1       1       1       1
DL_MAXSPC         2      32      32      64      64      64
DL_CLUSTS     $7FFE   $FFEE   $FFEE   $FFEE   $FFEE   $7FEE?
DL_MAXSEC     $7FFF   $FFFF   $FFFF   $FFFF $FFFFFF   $FFFF   $FFFF
DL_DRIVES        16      16      16      16      32      16      26
DL_CLSIZB     $4000   $4000   $4000   $8000   $8000   $8000?
DL_RDLEN       1008    1008    1008    1008?   2032       ?
DL_FSIZ         128     256     256     256     256     256     256
DL_FATREC         ?       ?       ?       ?     512       ?
DL_CLUSTS12    $7FE    $FEE    $FEE    $FEE    $FEE       ?
DL_CLUSTS32       0       0       0       0       0       0       0
DL_BFLAGS         1       1       3       3       3       ?
DL_FILESYS   '_DOS'  '_DOS'  '_DOS'  '_DOS'  'BDOS'  'MAGX'  'MAGX'
DL_VERSION     0.13    0.15    0.20    0.30 19950401      2       3
Ab TOS         1.00    1.04    2.06    4.04

Die Tabelle ist noch nicht vollstndig. ber Ergnzungen freue ich mich.

Ab GEMDOS 0.15 (TOS 1.04) sind Partitionen mit mehr als 32767 Sektoren bzw. 
32766 Cluster mglich. Wegen eines vorzeichenbehafteten Vergleichs in Ataris 
GEMDOS ist es ratsam, einen bestimmten Cluster als defekt zu markieren:
Bei  1 Sektor   pro Cluster den Cluster $7FFF = 32767.
Bei  2 Sektoren pro Cluster den Cluster $3FFF = 16383.
Bei  4 Sektoren pro Cluster den Cluster $1FFF =  8191.
Bei  8 Sektoren pro Cluster den Cluster  $7FF =  4095.
Bei 16 Sektoren pro Cluster den Cluster  $3FF =  2047.
Bei 32 Sektoren pro Cluster den Cluster  $1FF =  1023.
Bei 64 Sektoren pro Cluster den Cluster   $7F =   511.


Dlock() bei Big-DOS (vorlufig)
-------------------------------

#define FUTIME    (('F' << 8) | 3)  /* Zeit des Verzeichnisses setzen */
/* Die Bezeichnungen XH_DL_... sind die der DOS-Limits aus xhdi.h. */
#define DL_SECSIZ ('D' << 8 | XH_DL_SECSIZ)  /* max. bpb->recsiz */
    return 0x8000;
#define DL_MINFAT ('D' << 8 | XH_DL_MINFAT)
    return 1;
#define DL_MAXFAT ('D' << 8 | XH_DL_MAXFAT)
    return 2;
#define DL_MINSPC ('D' << 8 | XH_DL_MINSPC)  /* min. bpb->clsiz */
    return 1;
#define DL_MAXSPC ('D' << 8 | XH_DL_MAXSPC)  /* max. bpb->clsiz */
    return 64;
#define DL_CLUSTS ('D' << 8 | XH_DL_CLUSTS)  /* max. bpb->numcl 16-Bit-FAT */
    return 0xFFF0L-FIRST_CLUSTER;
#define DL_MAXSEC ('D' << 8 | XH_DL_MAXSEC)  /* max. Anzahl Sektoren */
    return 0xFFFFFFL;
#define DL_DRIVES ('D' << 8 | XH_DL_DRIVES)  /* max. Anzahl Laufwerke */
    return NUM_DRIVES;
#define DL_CLSIZB ('D' << 8 | 8)  /* max. bpb->clsizb */
    return 0x8000;
#define DL_RDLEN ('D' << 8 | 9)  /* max. (bpb->rdlen * bpb->recsiz / 32) */
    return 2032;
#define DL_FSIZ ('D' << 8 | 10)  /* max. bpb->fsiz */
    return 256;
#define DL_FATREC ('D' << 8 | 11)  /* max. bpb->fatrec */
    return 512;
#define DL_CLUSTS12 ('D' << 8 | 12)  /* max. bpb->numcl 12-Bit-FAT */
    return 0xFF0-FIRST_CLUSTER;
#define DL_CLUSTS32 ('D' << 8 | 13)  /* max. bpb->numcl 32-Bit-FAT */
    return 0;
#define DL_BFLAGS ('D' << 8 | 14)  /* untersttzte Bits in bpb->bflags */
    return 3;
#define DL_FILESYS ('D' << 8 | 15)  /* (XBRA-)Kennung des Dateisystems */
    return 'BDOS';
#define DL_VERSION ('D' << 8 | 16)  /* Version des Dateisystems */
    return 19950401L;
#define DL_CHAR ('D' << 8 | 17)  /* erlaubte Zeichen */
    /* Erlaubte Zeichen auf GEMDOS: */
    return "!\"#$%&'()+,-0..9;<=>@A..Z[]^_`{|}~";
    /* Erlaubte Zeichen auf ISO 9293: */
    return "0..9A..Z_";
    /* Erlaubte Zeichen auf MS-DOS: */
    return "!#$%&'()-0..9@A..Z^_`{}~";
#define DL_SETCHAR ('D' << 8 | 18)  /* Erlaubte Zeichen setzen oder abfragen */
    /* arg = -1: Erlaubte Zeichen abfragen */
    /* arg = 0: Erlaubte Zeichen auf GEMDOS setzen */
    /* arg = 1: Erlaubte Zeichen auf ISO 9293 (oder ISO 9660) d-Zeichen setzen*/
    /* arg = 2: Erlaubte Zeichen auf MS-DOS setzen */


MausNet:  Rainer Seitel @ KA
Internet: Rainer_Seitel@ka.maus.de (keine Mail > 16 KByte!)
          Rainer.Seitel@stud.uni-karlsruhe.de
http://www.uni-karlsruhe.de/~Rainer.Seitel/bigdos.html
(http://129.13.95.1/~ujo7/bigdos.html)
