MSDOS(Reg) ;
if ((Flags and FCarry)<>Q) or (al=0) then Goto Exit;
ah := $46; {Получаем номер версии EMM} Intr67;
if EMSStatus~0 then {Если ошибка - нет EMM} begin
EMSVer :« al; {Сохраняем номер версии} ah := $41; {Получаем сегмент окна} Intr67;
EMSS := Ьх (Сохраняем сегмент} end end;
Exit:
IsEMS := EMSVerOO end; {IsEMS} (— —____—_____——}
Function GetEMMVersion: String;
{Возвращает номер версии EMM в формате 'Х.Х'} var
s,ss: Strings-begin
if EMSVer=0 then if IsEMS then;
Str (EMSVer shr 4,s);
Str(EMSVer and $F,ss);
GetEMMVersion := s+'.'+ss end;
^———————————;
Function EMSSeg: Word;
{Возвращает сегментную часть адреса "окна" EMS-памяти} begin
if EMSS=0 then if IsEMS then;
EMSSeg := EMSS end; {EMSSeg! {,—, —————————}
Procedure GetEMSInfo(var AllPage, Pages: Word);
/'Возвращает полное количество (AllPages) и количество незанятых (Pages) страниц} begin
if IsEMS then with Reg do begin
ah :=$42;
Intr67;
AllPage := dx;
Pages := bx end else begin
AllPage := 0;
Pages := 0 end end; {GetEMSInfo} ^————————————;
Procedure NewEMSHandle(var Handle: Word;Pages: Word) ;
{Открывает новый дескриптор Handle и связывает с ним Pages страниц EMS} begin
it IsEMS then with Reg do