Тексты программ__________________________ _____________ __345

dx := ofs(MouseHandler);

Intr($33,Reg);

OldMask := ex end

end; {ChangeMouseHandler! ^————————.———————;

Procedure ClearMouseHandler;

(Удаляет обработчик событий} begin

if IsMouse then with Reg do begin

ax := $OC;

ex := 0;

es :=• 0;

dx := 0;

Intr($33,Reg) end;

end; {ClearMouseHandler} ^==»-====»»==; end. {F_Mouse} {—»—==——=-===}

П6. МОДУЛЬ F EMS ДЛЯ РАБОТЫ С ОТОБРАЖАЕМОЙ ПАМЯТЬЮ

Описание модуля см. п.5.3.

(»=========»===-; Unit F_EMS; f-—==—=-»-«-===/

^—————————————————————————————+

I Этот модуль содержит объекты и подпрограммы f I для работы с EMS-паыятью 1 +——————.———_——————————————————+/

{$X+,N1-,E+)

INTERFACE

^———————————————————————————————;

type

/——----— Базовый объект иерархии -—-————} PEMSArea =ATEMSArea,• TEMSArea " Object

Handle: Word; {Дескриптор}

MaxPag: Word; (Количество страниц}

Size: LongInt; (Длина используемой памяти}

Constructor Init(ASize: LongInt);

Constructor Load(var F: File);

Destructor Done; Virtual;

Peocedure EMSError(NError: Byte); Virtual;

Procedure Store(var F: File); Virtual;

Procedure WriteEMS(var Source; Dest,Sz: LongInt); Virtual;

Procedure ReadEMS(Source: LongInt; var Dest; Sz: LongInt); Virtual;

/———————; private (——————)

Function ReadFilefvar F: File; var Dest; Sz: Word): Boolean; Virtual;

Function WriteFile(var F: file; var Source; Sz: Word): Boolean; Virtual;

end;

{—————— Одномерный массив a EMS ——————}

PEMSVector -"TEMSVector;

TEMSVector - object (TEMSArea)

ItemS : LongInt; {Длина элемента массива)

Minind; LongInt; {Минимальный индекс}

Maxind: LongInt; {Максимальный индекс}

Constructor Init(ASize,Min,Max: LongInt);

Constructor Load(var F: File);