                  FDI-
                 1.1 ( .)
                 2 (deathsoft)

  / fdi  1  2   
wldr_fdi.cpp  UnrealSpeccy v0.38.3

  fdi      :

TFdiHdr -  
TFdiAddInfo -    2   (  1 )
TTrkHdr[c*h] -   
...
FdiTrkData[] -      
...
( 2  1 (   ))
TFdiTrkAddInfo[] -        
...
FdiTrkAddData[] -             


                          
 TFdiHdr:
------------------------------------------------------------------------------
       
------------------------------------------------------------------------------

0       3         'FDI'
3       1               (0 - write enabled, 1 - write disabled)
4       2        
6       2        
8       2         (   )
A       2        
       2           .
                  1.0 - 0x0000
                  2 -   TFdiAddInfo (. "  ")

E       "  " ( 0,    )
                . "  "

E+"  "
        ???
                  .     
                 .      
                " "*" " . 
                   Cyl 0 Head 0, Cyl 0 Head 1, Cyl 1 Head 0  ..
                   .

" "
        ???
                  .  -  .
                MAKEFDI       
                  64    ,    
                       
                 

" "
        ???
                     .   
                ,      -   .

-------------------------------------------------------------------------------

 FDI-      ,
   .


                          
 TTrkHdr:
------------------------------------------------------------------------------
       
------------------------------------------------------------------------------

0       4         -     
                         " "
4       2         0 (  )
6       1          

7       ( )*7
                    .    7
                .  4  -   C,H,R,N 
                 .   - :

                 bit 7=0 -   , 1 -  ;
                 bit 0-5:  CRC.      , 
                       128,256,1024,2048 
                 4096     .   
                  0 -      .
                 bit 6:     0. , 1   
                        .

                 2  -     
                   .    
                 ,      " " 
                " "
------------------------------------------------------------------------------
7*( +1)      

        ,          
.

                           (FDI 2  )

 :
u8  -  8  (1 )
u16 -  16 (2 )
u32 -  32 (4 )

  TFdiAddInfo:
struct TFdiAddInfo
{
    // ,    
    u16 Ver; // 2 - FDI 2
    u16 AddInfoType; //   :
                     // 1 - bad bytes info (   )

    //  AddInfoType == 1 (      )
    u32 TrkAddInfoOffset; //    TFdiTrkAddInfo     
                          //    " " * " "  FDI
                          //  (!    )
    u32 DataOffset; //      (  )
};

  TFdiTrkAddInfo:
struct TFdiTrkAddInfo(int n) // n -    ,    
                             //  0  " " * " "-1
{
    u32 TrkOffset;  //        
                    //  FdiAddInfo.DataOffset
                    // 0xFFFFFFFF -      
    if(n && (TrkOffset != 0xFFFFFFFF))
    {
        TFdiSecAddInfo Sec[n]; //      ( n==0,  )
    }
};

  TFdiSecAddInfo:
struct TFdiSecAddInfo
{
    u8 Flags; // 1 -    

    //         TFdiTrkAddInfo[i].TrkOffset;
    //     
    //      
    //        
    // u32 offs = FdiAddInfo.DataOffset + FdiAddInfo[i].TrkOffset + (FdiAddInfo[i].Sec[s].Flags & 1) ? (128 << FdiHdr.Trk[i].Sec[s].n) : 0;
    // ( i -  , s -  , Sec[s].n -    0-128, 1-256,2-512,3-1024  ..)
    //     offs>>3,       offs&7
    u16 DataOffset;
};

           
(  xor   ).
          
(  xor   )    CRC .
