[Back to SAVESCRN SWAG index] [Back to Main SWAG index] [Original]
{ - SCREEN.PAS -}
unit screen;
Interface
uses crt,dos;
type
ScreenRec = Record
Character:Byte;
Attribute:Byte;
end;
SnapShot = record
Screen:array[1..4000] of ScreenRec;
StoreX:byte;
StoreY:byte;
end;
ScreenStore=object
Memory:SnapShot;
constructor Init(InitX,InitY,InitChar,InitColor:byte);
procedure storescreen;
procedure restorescreen;
end;
ScreenStorePointer = ^ScreenStore;
Implementation
CONSTRUCTOR ScreenStore.Init(InitX,InitY,InitChar,InitColor:byte);
{** Initializes to Cleared Screens **}
var
Count:integer;
begin
Count:=1;
while Count<=4000 do
begin
FillChar(Memory.Screen[Count].Character,
SizeOf(Memory.Screen[Count].Character),InitChar);
FillChar(Memory.Screen[Count].Attribute,
SizeOf(Memory.Screen[Count].Attribute),InitColor);
inc(Count);
end;
Memory.StoreX:=InitX;
Memory.StoreY:=InitY;
end;
PROCEDURE ScreenStore.StoreScreen;
var
MonoAddress: char absolute $B000:0000;
ColorAddress: char absolute $B800:0000;
begin
if lastmode=mono then
move(monoAddress,Memory.Screen,8000)
else
move(colorAddress,Memory.Screen,8000);
Memory.StoreX:=WhereX;
Memory.StoreY:=WhereY;
end;
{STORESCREEN}
PROCEDURE ScreenStore.RestoreScreen;
var
MonoAddress: char absolute $B000:0000;
ColorAddress: char absolute $B800:0000;
begin
if lastmode=mono then
move(Memory.Screen,monoAddress,8000)
else
move(Memory.Screen,colorAddress,8000);
gotoxy(Memory.StoreX,Memory.StoreY);
end;
begin
end.
[Back to SAVESCRN SWAG index] [Back to Main SWAG index] [Original]