$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