mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-02 05:09:49 +01:00
* compatibility enhancements
This commit is contained in:
parent
21923e7dab
commit
47386fceef
@ -77,10 +77,12 @@ begin
|
||||
{Get the address of the original videobuffer and size.}
|
||||
if VioGetBuf (PScr, PWord (@OrigScreenSize)^, 0) = 0 then
|
||||
begin
|
||||
{$IFDEF PPC_VIRTUAL}
|
||||
{$IFDEF BIT_32}
|
||||
{$IFDEF PPC_VIRTUAL}
|
||||
SelToFlat (PScr);
|
||||
{$ELSE}
|
||||
{$ELSE}
|
||||
PScr := SelToFlat (TFarPtr (PScr));
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
GetMem (OrigScreen, OrigScreenSize);
|
||||
Move (PScr^, OrigScreen^, OrigScreenSize);
|
||||
@ -190,7 +192,9 @@ begin
|
||||
{$ELSE}
|
||||
if VioGetBuf (VideoBuf, PWord (@VideoBufSize)^, 0) = 0 then
|
||||
begin
|
||||
{$IFDEF BIT_32}
|
||||
VideoBuf := SelToFlat (TFarPtr (VideoBuf));
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
SetHighBitBlink (true);
|
||||
GetMem (OldVideoBuf, VideoBufSize);
|
||||
@ -308,10 +312,12 @@ begin
|
||||
if (VioGetBuf (PScr, PWord (@ScrSize)^, 0) = 0)
|
||||
and (ScrSize = OrigScreenSize) then
|
||||
begin
|
||||
{$IFDEF PPC_VIRTUAL}
|
||||
{$IFDEF BIT_32}
|
||||
{$IFDEF PPC_VIRTUAL}
|
||||
SelToFlat (PScr);
|
||||
{$ELSE}
|
||||
{$ELSE}
|
||||
PScr := SelToFlat (TFarPtr (PScr));
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
Move (OrigScreen^, PScr^, OrigScreenSize);
|
||||
VioShowBuf (0, ScrSize, 0);
|
||||
@ -358,7 +364,9 @@ begin
|
||||
{$ELSE}
|
||||
if VioGetBuf (VideoBuf, PWord (@VideoBufSize)^, 0) = 0 then
|
||||
begin
|
||||
{$IFDEF BIT_32}
|
||||
VideoBuf := SelToFlat (TFarPtr (VideoBuf));
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
DefaultVideoModeSelector := true;
|
||||
SetHighBitBlink (true);
|
||||
@ -376,7 +384,9 @@ begin
|
||||
SelToFlat (pointer (VideoBuf));
|
||||
{$ELSE}
|
||||
VioGetBuf (VideoBuf, PWord (@VideoBufSize)^, 0);
|
||||
{$IFDEF BIT_32}
|
||||
VideoBuf := SelToFlat (TFarPtr (VideoBuf));
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
SetHighBitBlink (true);
|
||||
CheckCellHeight;
|
||||
@ -391,7 +401,9 @@ begin
|
||||
SelToFlat (pointer (VideoBuf));
|
||||
{$ELSE}
|
||||
VioGetBuf (VideoBuf, PWord (@VideoBufSize)^, 0);
|
||||
{$IFDEF BIT_32}
|
||||
VideoBuf := SelToFlat (TFarPtr (VideoBuf));
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
SetHighBitBlink (true);
|
||||
SetCursorType (LastCursorType);
|
||||
@ -408,17 +420,24 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
{$ASMMODE INTEL}
|
||||
{$IFDEF PPC_FPC}
|
||||
{$ASMMODE INTEL}
|
||||
{$ENDIF}
|
||||
|
||||
procedure UpdateScreen (Force: boolean);
|
||||
|
||||
{$IFDEF BIT_32}
|
||||
var SOfs: cardinal;
|
||||
{$ELSE}
|
||||
var SOfs: word;
|
||||
{$ENDIF}
|
||||
|
||||
begin
|
||||
if LockUpdateScreen = 0 then
|
||||
begin
|
||||
if not (Force) then
|
||||
begin
|
||||
{$IFDEF BIT_32}
|
||||
asm
|
||||
mov esi, VideoBuf
|
||||
mov edi, OldVideoBuf
|
||||
@ -435,6 +454,25 @@ begin
|
||||
end;
|
||||
Inc (SOfs);
|
||||
SOfs := VideoBufSize - (SOfs shl 2);
|
||||
{$ELSE}
|
||||
asm
|
||||
push ds
|
||||
lds si, VideoBuf
|
||||
les di, OldVideoBuf
|
||||
mov cx, word ptr VideoBufSize
|
||||
shr cx
|
||||
repe
|
||||
cmpsw
|
||||
mov SOfs, cx
|
||||
or cx, cx
|
||||
jz @no_update
|
||||
mov Force, 1
|
||||
@no_update:
|
||||
pop ds
|
||||
end;
|
||||
Inc (SOfs);
|
||||
SOfs := VideoBufSize - (SOfs shl 1);
|
||||
{$ENDIF}
|
||||
end else
|
||||
SOfs := 0;
|
||||
if Force then
|
||||
@ -449,7 +487,10 @@ end;
|
||||
{
|
||||
|
||||
$Log$
|
||||
Revision 1.9 2000-10-11 05:28:29 hajny
|
||||
Revision 1.10 2000-10-11 20:10:04 hajny
|
||||
* compatibility enhancements
|
||||
|
||||
Revision 1.9 2000/10/11 05:28:29 hajny
|
||||
* really a faster version now ;-)
|
||||
|
||||
Revision 1.8 2000/10/10 20:28:18 hajny
|
||||
|
||||
Loading…
Reference in New Issue
Block a user