home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9101 / utils / boots / bootsec.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-10-08  |  3.5 KB  |  107 lines

  1. (*--------------------------------------------------------*)
  2. (*                      BOOTSEC.PAS                       *)
  3. (*           (C) 1991 J. Braun & DMV-Verlag               *)
  4. (*--------------------------------------------------------*)
  5. {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S-,V-,X-}
  6. {$M 4096,0,1024}
  7.  
  8. PROGRAM BootSecInfo;
  9.  
  10. USES
  11.   Dos, Absolute;
  12.  
  13. TYPE
  14.   tBootBlock = RECORD
  15.     Jump              : ARRAY[01.. 03] OF BYTE;
  16.     OEM               : ARRAY[01.. 08] OF CHAR;
  17.     Data              : tBPB;
  18.     (* Ab hier kein Standard mehr. Kompatible Systeme     *)
  19.     (* können einen anderen Aufbau besitzen               *)
  20.     DiskLabel         : ARRAY[01.. 11] OF CHAR;  (* DOS 4 *)
  21.     FATTypeText       : ARRAY[01.. 08] OF CHAR;  (* DOS 4 *)
  22.     DosLoader         : ARRAY[00..351] OF BYTE;
  23.     Messages          : ARRAY[00.. 64] OF CHAR;
  24.     FileLoader        : ARRAY[00.. 30] OF CHAR;
  25.     (* Ab hier wieder Standard                            *)
  26.     EndMarker         : ARRAY[00.. 01] OF CHAR;
  27.   END;
  28.  
  29. VAR
  30.   vBuffer    : ARRAY[0..$200] OF BYTE;
  31.   vBootBlock : tBootBlock ABSOLUTE vBuffer;
  32.   i          : WORD;
  33.   vPString   : ComStr;
  34.   vDrvChar   : CHAR;
  35.  
  36. CONST
  37.   vDrive     : tDrives = C;
  38.   cCRLF      = CHR(13) + CHR(10);
  39.  
  40. BEGIN
  41.   WriteLn(cCRLF + 'Bootsektor-Information Version 1.01, ' +
  42.         '(C) 1991 J. Braun & DMV-Verlag.');
  43.  
  44.   IF ParamCount > 0 THEN BEGIN
  45.     vPString := ParamStr(1);
  46.     IF vPString[1] IN ['-', '/'] THEN
  47.       Delete(vPString, 1, 1);
  48.     vDrvChar := UpCase(vPString[1]);
  49.     IF vDrvChar IN ['A'..'Z'] THEN
  50.       vDrive := tDrives(ORD(vDrvChar) - 64)
  51.     ELSE IF vDrvChar = '?' THEN BEGIN
  52.       WriteLn(cCRLF + 'Aufruf:');
  53.       WriteLn(' BOOTSEC [-][Laufwerk|?]');
  54.       WriteLn(' ''?'' zeigt diese Information');
  55.       WriteLn(' Es reicht, wenn der Laufwerksbuchstabe ' +
  56.               'angegeben');
  57.       WriteLn(' wird. Wird kein Laufwerk angegeben, wird ' +
  58.               'Laufwerk');
  59.       WriteLn(' C: angezeigt.' + cCRLF);
  60.       Halt(0);
  61.     END;
  62.   END;
  63.  
  64.   ReadBootSector(vDrive, vBuffer);
  65.  
  66.   WriteLn(cCRLF + 'Daten im Bootsektor von Laufwerk ' +
  67.           CHR(ORD(vDrive) + 64) + ':');
  68.   WriteLn('───────────────────────────────────');
  69.   WITH vBootBlock DO BEGIN
  70.     Write  ('OEM              : ');
  71.     FOR i := 1 TO 8 DO Write(OEM[i]);  WriteLn;
  72.     WriteLn('Bytes/Sektor     : ', Data.BytesPerSector);
  73.     WriteLn('Sektoren/Cluster : ', Data.SectorsPerCluster);
  74.     WriteLn('Reservierte Sekt.: ', Data.ReservedSectors);
  75.     WriteLn('Anzahl FATs      : ', Data.NumberOfFATs);
  76.     WriteLn('Anzahl Rooteintr.: ', Data.RootEntries);
  77.  
  78.     IF Data.TotalSectors <> 0 THEN
  79.       WriteLn('Sektoren (12 Bit): ', Data.TotalSectors)
  80.     ELSE
  81.     WriteLn('Sektoren (16 Bit): ', Data.BigTotalSectors);
  82.  
  83.     WriteLn('Media-Beschreiber: ', Data.MediaDescriptor);
  84.     WriteLn('Sektoren/FAT     : ', Data.SectorsPerFAT);
  85.     WriteLn('Sektoren/Spur    : ', Data.SectorsPerTrack);
  86.     WriteLn('Köpfe            : ', Data.Heads);
  87.     WriteLn('Versteckte Sekt. : ', Data.HiddenSectors);
  88.  
  89.     Write(cCRLF + 'Disk-Label (DOS4): ');
  90.     FOR i := 1 TO 11 DO BEGIN
  91.       IF DiskLabel[i] IN ['A'..'Z', '0'..'9'] THEN
  92.         Write(Disklabel[i]);
  93.     END;
  94.     WriteLn;
  95.  
  96.     Write  ('FAT-ID     (DOS4): ');
  97.     FOR i := 1 TO 8 DO BEGIN
  98.       IF FatTypeText[i] IN ['A'..'Z', '0'..'9']
  99.         THEN Write(FatTypeText[i]);
  100.     END;
  101.     IF Lo(DosVersion) < 4 THEN
  102.       WriteLn('Hier kann bei Ihrem DOS auch etwas anderes stehen');
  103.  
  104.     WriteLn;
  105.  
  106.   END;
  107. END.