WipeDisk

From Lo-tech Wiki
Jump to navigation Jump to search

WipeDisk is a simple utility to erase the partition table from a fixed disk. This is useful on MS-DOS powered PCs, where the partition table contains non-DOS partitions since MS-DOS's FDISK utility will not delete such partitions.

Usage

<source lang=text> A:\>wipedisk WipeDisk - this will erase the first 64 sectors of the primary hard disk (80h) Press C to continue and erase the disk: _ </source>

Press 'C' (as in uppercase) to erase as shown; any other key will exit to the DOS prompt.

Source Code

Turbo Pascal source:

<source lang=pascal> Program WipeDisk;

{Erases the first 64 sectors of drive 80h. Use with care!}

uses crt;

type

 Buff = array[0..32767] of byte;


var

 Buffer : ^Buff;
 i      : word;
 sBuff,
 oBuff  : word;
 Chr    : Char;
 Res    : byte;

begin

 WriteLn('WipeDisk - this will erase the first 64 sectors of the');
 WriteLn('primary hard disk (80h)');
 WriteLn;
 Write('Press C to continue and erase the disk: ');
 Chr := ReadKey;   {get user key input}
 WriteLn(Chr);
 If Chr <> 'C' then Halt(0);
 Write('Erasing...');
 new(Buffer);
 sBuff := Seg(Buffer^);
 oBuff := Ofs(Buffer^);
 for i := 0 to 32767 do Buffer^[i] := 0;
 Res := 0; {ok}
 asm
   mov AL, 64;  {64 sectors}
   mov AH, 3;   {03h = write}
   mov CH, 0;
   mov CL, 1;
   mov DH, 0;   {we're wiping the first 128 sectors}
   mov DL, $80; {drive 80h = C}
   mov ES, sBuff;
   mov BX, oBuff;
   int $13;     {call BIOS, bye-bye MBR and partition table!}
   jnc @OK
   mov Res, AL; {save error code}
   @OK:
 end;{asm}
 if Res = 0 then WriteLn(' done.')
 else WriteLn(' BIOS returned error code ', Res);
 Dispose(Buffer);

end.{program} </source>

Downloads

See Also