home *** CD-ROM | disk | FTP | other *** search
/ CD Shareware Masterblend / cdsharewaremasterblend.iso / utils / infoplus / page_15.pas < prev    next >
Pascal/Delphi Source File  |  1990-12-08  |  4KB  |  170 lines

  1. procedure page_15;
  2.  
  3. var
  4.   i : byte;
  5.   j : 0..3;
  6.   k : byte;
  7.   part : array[0..secsiz - 1] of byte;
  8.   xbool1 : boolean;
  9.   xbool2 : boolean;
  10.   xbool3 : boolean;
  11.   xbool4 : boolean;
  12.   xbyte : byte;
  13.   xlong : longint;
  14.   xword : word;
  15.  
  16.   begin
  17.   caption2('Partition table data');
  18.   i:=$80;
  19.   xbool1:=false;
  20.   xbool2:=false;
  21.   repeat
  22.     with regs do
  23.       begin
  24.       AX:=$0201;
  25.       CX:=$0001;
  26.       DX:=i;
  27.       ES:=seg(part);
  28.       BX:=ofs(part);
  29.       intr($13, regs);
  30.       if nocarry then
  31.         begin
  32.         xbool1:=true;
  33.         xbool2:=true
  34.         end
  35.       else
  36.         if i < $99 then
  37.           inc(i)
  38.         else
  39.           xbool1:=true
  40.       end
  41.   until xbool1;
  42.   if xbool2 then
  43.     begin
  44.     writeln;
  45.     caption3('Unit');
  46.     writeln;
  47.     caption3('Partition');
  48.     writeln;
  49.     caption3('Bootable');
  50.     writeln;
  51.     caption3('Starting head');
  52.     writeln;
  53.     caption3('Starting sector');
  54.     writeln;
  55.     caption3('Starting cylinder');
  56.     writeln;
  57.     caption3('System ID');
  58.     writeln;
  59.     caption3('Ending head');
  60.     writeln;
  61.     caption3('Ending sector');
  62.     writeln;
  63.     caption3('Ending cylinder');
  64.     writeln;
  65.     caption3('First partition sector');
  66.     writeln;
  67.     caption3('Sectors in partition');
  68.     writeln;
  69.     xbool3:=false;
  70.     repeat
  71.       window(9, 4, twidth, tlength - 2);
  72.       writeln(i);
  73.       window(27, 5, twidth, tlength - 2);
  74.       clrscr;
  75.       for j:=0 to 3 do
  76.         begin
  77.         window(27 + 12 * j, 5, 38 + 12 * j, tlength - 2);
  78.         writeln(j + 1);
  79.         xword:=$01BE + j shl 4;
  80.         xbyte:=part[xword];
  81.         case xbyte of
  82.           $00 : writeln('no');
  83.           $80 : writeln('yes')
  84.         else
  85.             writeln('(', hex(xbyte, 2), ')')
  86.         end;
  87.         xbyte:=part[xword + 4];
  88.         if xbyte > $00 then
  89.           begin
  90.           writeln(part[xword + 1]);
  91.           writeln(part[xword + 2] and $3F);
  92.           writeln(part[xword + 3] +
  93.             word(part[xword + 2] shr 6 * 256));
  94.           case xbyte of
  95.             $01 : write('DOS-12');
  96.             $02,$03 : Write('XENIX');
  97.             $04 : write('DOS-16');
  98.             $05 : write('Ext DOS-16');
  99.             $06 : Write('Big DOS-16');
  100.             $07 : Write('QNX');
  101.             $08 : Write('AIX boot');
  102.             $09 : Write('AIX data');
  103.             $51 : Write('Dsk Managr');
  104.             $52 : Write('CP/M');
  105.             $56 : Write('GB');
  106.             $61 : Write('Speedstor');
  107.             $63 : Write('SysV/386');
  108.             $64 : Write('NOVELL');
  109.             $75 : Write('PC/IX');
  110.             $80 : Write('Minix v1.3-');
  111.             $81 : Write('Minix v1.5+');
  112.             $DB : Write('CP/M');
  113.             $E1 : Write('SpdStr-12');
  114.             $E4 : Write('SpdStr-16');
  115.             $FF : Write('BBT')
  116.           else
  117.             write('(', hex(xbyte, 2), ')')
  118.           end;
  119.           Writeln;
  120.           writeln(part[xword + 5]);
  121.           xbyte:=part[xword + 6];
  122.           writeln(xbyte and $3F);
  123.           writeln(cbw(part[xword + 7], xbyte shr 6));
  124.           xlong:=0;
  125.           for k:=11 downto 8 do
  126.             xlong:=xlong shl 8 + part[xword + k];
  127.           writeln(xlong);
  128.           xlong:=0;
  129.           for k:=15 downto 12 do
  130.             xlong:=xlong shl 8 + part[xword + k];
  131.           writeln(xlong)
  132.         end
  133.       else
  134.          for k:=1 to 9 do
  135.            writeln('-')
  136.       end;
  137.       xbool4:=false;
  138.       repeat
  139.         if i < $99 then
  140.           begin
  141.           inc(i);
  142.           with regs do
  143.             begin
  144.             AX:=$0201;
  145.             CX:=$0001;
  146.             DX:=i;
  147.             ES:=seg(part);
  148.             BX:=ofs(part);
  149.             intr($13, regs);
  150.             if nocarry then
  151.               begin
  152.               xbool4:=true;
  153.               pause1;
  154.               if endit then
  155.                 Exit;
  156.               end
  157.             end
  158.           end
  159.         else
  160.           begin
  161.           xbool3:=true;
  162.           xbool4:=true
  163.           end
  164.       until xbool4
  165.     until xbool3
  166.     end
  167.   else
  168.     writeln('(no fixed disks)')
  169.   end;
  170.