Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Копирование дискет
Форум программистов > Системное программирование > Другие
IDeonisI
Всем привет! Как сделать копию пяти дюймовой дискеты на ПК, при условии, что файловая система неизвестна (отличная от стандартных) и то, что там написано тоже неизвестно?
sab0tage
Легко, только тебе что нужно? Программа, которая это делает (DiskDuplicate) или код? Писал лет 6 назад на паскале-асме. На тот момент альтернатив было немеряно. (Посмотри сайты типа 386.ru)
IDeonisI
Спасибо за совет sab0tage! На данный момент нужна программа, но былоб интересно
разобраться в коде. Какие WinIP функции можно использовать для обращения к конкретным байтам информации на дискете, вне зависимости от файловой системы?
sab0tage
На WinApi не получиться, посмотри int25h/26h (Прямая дисковая операция чтения/записи)
Я использовал Int13h:
{ op=$02 to read / op=$03 to write }
function asmRWSectors(Drive,Track,Side,SSect:byte; var Buffer; op:byte):byte;
var
  Regs : registers;
  Tries: byte;
  Done : boolean;
  Result:byte;
  cx_:word;
begin
  Result:=0;
  Tries:=0;
  Done:=False;
  repeat
  cx_:=Track shl 8 + SSect;

   asm
    mov AH,op;
    mov AL,$01;  { Number of sectors to read }
    mov CX,cx_;  { track number and starting sector }
    mov DH,Side;
    mov DL,Drive;
     {DX:=Side shl 8 + Drive;}
    lds BX,Buffer;          { point to data buffer }
    Int 13h;
    mov Result,AH;
   end;

    if Result<>0 then
                  begin
                   Inc(Tries);
                   if Tries>2 then Exit
                              else
                               asm
                               mov AX,$0000;
                               mov DL,Drive;
                               Int 13h;
                               end;
                  end
                 else Done:=True;
    until Done;
  asmRWSectors:=Result;
end;


Есть откомпилированная-консольная версия, но я делал ее для (40-Tracks, 9-sec/tra = 360Kb и 80-Tracks, 15Sec/tra = 1200Kb. это по 5ти дюймовым.)

Удачи.
IDeonisI
Спасибо! Попробую сделать так, как ты говоришь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.