Подскажите, чем скопировать дискету.

06 августа 2003 года
00
Нужна точная копия дискеты. Какой софтиной можно воспользоваться для копирования?
06 августа 2003 года
00
Куском пластмассы и напильником.

Цитировать — Сообщение №2
06 августа 2003 года
00
интересно, чем ТОЧНАЯ копия отличается от обыкновенной копии ?

Цитировать — Сообщение №3
06 августа 2003 года
00
dd if=/dev/fd0 of=/tmp/diskette
dd of=/tmp/diskette of=/dev/fd0

Цитировать — Сообщение №4
06 августа 2003 года
00
WinImage

Цитировать — Сообщение №5
06 августа 2003 года
00
Цитата:
Автор оригинальной версии - KOT
dd if=/dev/fd0 of=/tmp/diskette
dd of=/tmp/diskette of=/dev/fd0


ааааааааааа:)))))))))))))))))) ты крут:)


Цитировать — Сообщение №6
06 августа 2003 года
00
Цитата:
Автор оригинальной версии - KOT
dd if=/dev/fd0 of=/tmp/diskette
dd of=/tmp/diskette of=/dev/fd0



Серега, я круче :):

Код:
type TSector0 = Record
       Jump             : Array[1..3] of Char;   { NEAR-переход на код загрузки }
       OEMName          : Array[1..8] of Char;   { OEM-имя компании и версия системы }
       SectSize         : Word;                  { байт на сектор }
       ClustSize        : Byte;                  { секторов на единицу распределения (кластер) }
       ResSecs          : Word;                  { резервных секторов (секторов перед первой FAT) }
       FatCnt           : Byte;                  { число таблиц FAT }
       RootSiz          : Word;                  { макс.число 32-байтовых элементов корневого оглавления }
       TotSecs          : Word;                  { общее число секторов на носителе (раздел DOS) }
       Media            : Byte;                  { дескриптор носителя (то же, что 1-й байт FAT) }
       FatSize          : Word;                  { число секторов в одной FAT }
       TrkSecs          : Word;                  { секторов на дорожку (цилиндр) }
       HeadCnt          : Word;                  { число головок чтения/записи (поверхностей) }
       HidnSec          : Word;                  { спрятанных секторов (исп. в схемах разделения) }
       Ostatok          : Array[1..486] of Char; { Остаток, что-бы сюда можно было читать сектор }
     End;

var s0           : TSector0;
    b:Array[0..512] of Byte;
    F            : File;
    I            : LongInt;
    c            : Integer;

Function ReadSector(A:Pointer;Disk:Byte;Count:Word;Sector:Word):Boolean;
var Error     :Word;
    Offs      :Word;
Begin
 Offs:=Word(A);
 Error:=0;
  asm
         mov  al,[Disk]         {Номер диска 0-A}
         mov  cx,[Count]        {Счетчик считываемых символов}
         mov  dx,[Sector]       {Начальный сектор}

         mov  bx,[Offs]
         int  25h
         pop  dx
         je   @nError
         mov  ax,1
         mov  [Error],ax
@nError:
  end;
 if Error=0 then ReadSector:=True
            else ReadSector:=False;
End;

Function WriteSector(A:Pointer;Disk:Byte;Count:Word;Sector:Word):Boolean;
var Error     :Word;
    Offs      :Word;
Begin
 Offs:=Word(A);
 Error:=0;
  asm
         mov  al,[Disk]         {Номер диска 0-A}
         mov  cx,[Count]        {Счетчик считываемых символов}
         mov  dx,[Sector]       {Начальный сектор}

         mov  bx,[Offs]
         int  26h
         pop  dx
         je   @nError
         mov  ax,1
         mov  [Error],ax
@nError:
  end;
 if Error=0 then WriteSector:=True
            else WriteSector:=False;
End;

Begin
 Assign(F,ParamStr(1));If IOResult<>0 then Exit;
 If not ReadSector(@s0,0,1,0) then Begin WriteLn('Error reading 0 sector.');halt(1); End;
 If (ParamStr(2)='-s') or (ParamStr(2)='-S') or
    (ParamStr(2)='/s') or (ParamStr(2)='/S') then
     Begin
      Reset(F,1);If IOResult<>0 then Exit;
      BlockRead(F,s0,512,c);If c<>512 then Exit;
      Reset(F,1);If IOResult<>0 then Exit;
      Write('Байт на сектор                                 : ');WriteLn(s0.SectSize);
      Write('Секторов на дорожку (цилиндр)                  : ');WriteLn(s0.TrkSecs);
      Write('Число головок чтения/записи (поверхностей)     : ');WriteLn(s0.HeadCnt);
      Write('Общее число секторов на носителе (раздел DOS)  : ');WriteLn(s0.TotSecs);
      Write('Общее число дорожек на носителе                : ');WriteLn(s0.TotSecs div (s0.TrkSecs*s0.HeadCnt));
      Write('Резервных секторов (секторов перед первой FAT) : ');WriteLn(s0.ResSecs);
      Write('Размер FAT                                     : ');WriteLn(s0.FatSize);
      Write('Количество FAT                                 : ');WriteLn(s0.FatCnt);
      WriteLn('¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦');
      For I:=0 to s0.TotSecs-1 do
       Begin
        Write(round(I/s0.TotSecs*100),'%',#13);
        BlockRead(F,b,512,c);If c<>512 then Exit;
        WriteSector(@b,0,1,I);
       End;
     End
 else
  Begin
   ReWrite(F,1);If IOResult<>0 then Exit;
   Write('Байт на сектор                                 : ');WriteLn(s0.SectSize);
   Write('Секторов на дорожку (цилиндр)                  : ');WriteLn(s0.TrkSecs);
   Write('Число головок чтения/записи (поверхностей)     : ');WriteLn(s0.HeadCnt);
   Write('Общее число секторов на носителе (раздел DOS)  : ');WriteLn(s0.TotSecs);
   Write('Общее число дорожек на носителе                : ');WriteLn(s0.TotSecs div (s0.TrkSecs*s0.HeadCnt));
   Write('Резервных секторов (секторов перед первой FAT) : ');WriteLn(s0.ResSecs);
   Write('Размер FAT                                     : ');WriteLn(s0.FatSize);
   Write('Количество FAT                                 : ');WriteLn(s0.FatCnt);
   For I:=0 to s0.TotSecs-1 do
    Begin
     Write(round(I/s0.TotSecs*100),'%',#13);
     ReadSector(@b,0,1,I);
     BlockWrite(F,b,512);
    End;
  End;
 Close(F);
End.

Цитировать — Сообщение №7
07 августа 2003 года
00
Вы меня не поняли... Мне нужно скопировать ключевую дискетку с нестандартным форматированием. Софтина желательно под винду.

Цитировать — Сообщение №8
07 августа 2003 года
00
Да нет, тебя как раз правильно поняли.
Предлагаю воспользоваться предложением Mike'а. Хороший вариант. Посекторное копирование (на физическом уровне можно сказать).
;)

Цитировать — Сообщение №9
07 августа 2003 года
00
Ты бы еще на ВижуалБейсике написал :)
http://newsru.com/world/06aug2003/baboo.html

Цитировать — Сообщение №10
07 августа 2003 года
00
еще во времена дос была прекрассная прога fda - умела делать все с дискетами

Цитировать — Сообщение №11
07 августа 2003 года
00
Миха, а может ты мне еще эту прогу откомпилишь, если не трудно? А то что-то мне паскаля не найти компилятора.

Цитировать — Сообщение №12
07 августа 2003 года
00
Если я не ошибаюсь, то она только читала дискеты. :eyes:
Хотя может и писала, я не помню, лет пять уже прошло.

Компилированная версия тут:
http://mike.nov.ru/soft/dimage/

А вообще WinImage тебе должен помочь.

Цитировать — Сообщение №13
Эта тема закрыта, так как последнее сообшение было оставлено больше года назад.