home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / INFOP131.ZIP / PAGE_15.INC < prev    next >
Text File  |  1990-09-04  |  4KB  |  169 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 : writeln('DOS-12');
  96.             $02,$03 : Writeln('XENIX');
  97.             $04 : writeln('DOS-16');
  98.             $05 : writeln('Ext DOS-16');
  99.             $06 : Writeln('Big DOS-16');
  100.             $07 : Writeln('QNX');
  101.             $08 : Writeln('AIX boot');
  102.             $09 : Writeln('AIX data');
  103.             $51 : Writeln('Dsk Managr');
  104.             $52 : Writeln('CP/M');
  105.             $56 : Writeln('GB');
  106.             $61 : Writeln('Speedstor');
  107.             $63 : Writeln('SysV/386');
  108.             $64 : Writeln('NOVELL');
  109.             $75 : Writeln('PC/IX');
  110.             $80 : Writeln('Minix v1.3-');
  111.             $81 : Writeln('Minix v1.5+');
  112.             $DB : Writeln('CP/M');
  113.             $E1 : Writeln('SpdStr-12');
  114.             $E4 : Writeln('SpdStr-16');
  115.             $FF : Writeln('BBT')
  116.             else
  117.               writeln('(', hex(xbyte, 2), ')')
  118.           end;
  119.           writeln(part[xword + 5]);
  120.           xbyte:=part[xword + 6];
  121.           writeln(xbyte and $3F);
  122.           writeln(cbw(part[xword + 7], xbyte shr 6));
  123.           xlong:=0;
  124.           for k:=11 downto 8 do
  125.             xlong:=xlong shl 8 + part[xword + k];
  126.           writeln(xlong);
  127.           xlong:=0;
  128.           for k:=15 downto 12 do
  129.             xlong:=xlong shl 8 + part[xword + k];
  130.           writeln(xlong)
  131.         end
  132.       else
  133.          for k:=1 to 9 do
  134.            writeln('-')
  135.       end;
  136.       xbool4:=false;
  137.       repeat
  138.         if i < $99 then
  139.           begin
  140.           inc(i);
  141.           with regs do
  142.             begin
  143.             AX:=$0201;
  144.             CX:=$0001;
  145.             DX:=i;
  146.             ES:=seg(part);
  147.             BX:=ofs(part);
  148.             intr($13, regs);
  149.             if nocarry then
  150.               begin
  151.               xbool4:=true;
  152.               pause1;
  153.               if endit then
  154.                 Exit;
  155.               end
  156.             end
  157.           end
  158.         else
  159.           begin
  160.           xbool3:=true;
  161.           xbool4:=true
  162.           end
  163.       until xbool4
  164.     until xbool3
  165.     end
  166.   else
  167.     writeln('(no fixed disks)')
  168.   end;
  169.