var
S: String;
begin
TEMSArea.Load(F) ;
if not EMSErrorFlag then
if ReadFile(F,S,SizeOf(RegHeadTEMSScreen))
and (S=RegHeadTEMSScreen) then ReadFile(F,Mode,1) else
Done
end; {TEMSScreen.Load} (•-.-.———————————}
Procedure TEMSScreen.Store(var F: File) ;
{Сохраняет объект в файле} begin
TEMSArea.Store(F) ;
if not EMSErrorFlag then
if WriteFile(F,RegHeadTEMSScreen,SizeOf(TEMSScreen)) then WriteFile(F,Mode,1)
end; {TEMSScreen.Store} _•—————————_——__
Procedure TEMSScreen.PutScreen;
{Записывает в EMS-лаиять копию экрана} var
x,y,xx,yy,dy: Integer;
Pag: Byte;
EMS,Video: Pointer;
begin
{Проверяем текущий видеорежим} with R-eg do begin
ah := $F;
Intr($lO,Reg) ;
if aloMode then {Режим соответствует Mode?} begin (Нет - сообщаем и выходим} EMSError($AD) ;
Exit «id end;
(Копируем видеопамять в зависимости от режима} EMS :» ptr(EMSS,0); {Начало EMS} case Mode of
1..6,13..14: {Текстовые режимы всех адаптеров,
кроме MDA, графика CGA или ее имитация:
начало видеопамяти в $В800, длина до 16 Кбайт} begin
Video := Ptr($B8OO,0) ;
MapEMSPage(Handle,0,0) ;
if not EMSErrorFlag then
MoveFromScreen (Video^EMS^yLPage) end;
7: {Текстовый режим MDA: начало видеопамяти в $ВООО, длина 4 Кбайт) begin
Video := Ptr($BOOO,0) ;
MapEMSPage(Handle,0,0) ;
if not EMSErrorFlag then
MoveFromScreen(Video,EMS,Lpage div 4) end;
else {Остальные: дисплеи: предполагается, что