Копирование дискет

Тема в разделе "Другие", создана пользователем IDeonisI, 24 фев 2007.

  1. IDeonisI

    IDeonisI Гость

    Репутация:
    0
    Всем привет! Как сделать копию пяти дюймовой дискеты на ПК, при условии, что файловая система неизвестна (отличная от стандартных) и то, что там написано тоже неизвестно?
     
  2. sab0tage

    sab0tage Гость

    Репутация:
    0
    Легко, только тебе что нужно? Программа, которая это делает (DiskDuplicate) или код? Писал лет 6 назад на паскале-асме. На тот момент альтернатив было немеряно. (Посмотри сайты типа 386.ru)
     
  3. IDeonisI

    IDeonisI Гость

    Репутация:
    0
    Спасибо за совет sab0tage! На данный момент нужна программа, но былоб интересно
    разобраться в коде. Какие WinIP функции можно использовать для обращения к конкретным байтам информации на дискете, вне зависимости от файловой системы?
     
  4. sab0tage

    sab0tage Гость

    Репутация:
    0
    На WinApi не получиться, посмотри int25h/26h (Прямая дисковая операция чтения/записи)
    Я использовал Int13h:
    Код (Text):
    { 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ти дюймовым.)

    Удачи.
     
  5. IDeonisI

    IDeonisI Гость

    Репутация:
    0
    Спасибо! Попробую сделать так, как ты говоришь.
     
Загрузка...

Поделиться этой страницей