$E8/$00/$00/ {call 61} {@1:}

$5В/ {pop bx}

$83/$ЕВ/$04/ {sub bx,@l-@0)

$07/ {pop es}

$53/ {push bx}

$B4/$C3/ {mov ah,$C3}

$26/$88/$67/$11/$90/ {mov es:[Ьх+в2-в0],ah} i@2:}

$90/ {пор}

$B4/$9O/ {mov ah, $90}

$26/$88/$б7/$11/$90/ {mov es:1Ьк+в2-@0],ah]

$5B); {pop by.) ^————.——————__^

Procedure TrassBlock2;

{Борьба с трассировкой с помощью контроля времени} vac

tl,t2: Longint;

label

Loop;

begin Loop:

tl := MemL[0:$046Cl ;

t2 := 0;

while MemL[O:$O46C]=tl do;

while MemL[0:$O46C]<tl+2 do inc(t2) ;

if t2<500 then goto Loop;

TrassBlockl end; {TrassBlock2} ^————————————;

type

TBuf = array [1..256] of Byte;

var

P: Pointer; {Ссылка на врежнюю ТПД} Buf: TBuf; {Буфер чтения/записи сектора} R: registers; {Регистры} _—.—— _——————_-;

Function DiskettPrepare(var DSK: Byte): Boolean;

type

DBT Type aE record {Структура таблицы параметров дискеты} Reservl : array [O..2] of Byte;

SizeCode: Byte; {Код размера сектора} LastSect: Byte; {Количество секторов на дорожке} Reserv2 : array [5..10] of Byte end;

var

Info: TDisk;

DBT,01dDBT:^DBT_Type;

begin {Проверяем наличие дискеты}

DSK := 0; {Начинаем с диска А:} repeat

TrassBlockl;

GetDiskInfo(DSK,Info) ;

if Disk Error then if DSK=0 then

DSK := 1 (Повторяем для диска В:} else