[Back to SAVESCRN SWAG index] [Back to Main SWAG index] [Original]
{
Hi All!
I've been reading SWAG sources concerning text windows and screen saving many
times. Text windows from SWAG library are quite good and fast. And, what is
much more important, they pushed the screen behind them to the stack - and
when they're disposed they pop it. Quite simple, isn't it?
Well, what if you'd like push the screen before you simply _write_ sth to
screen... There's no simple screen saving procedures :((
Since now - I've got something quite simple, fast and safe:
}
{***************************************************}
{ REWRITTEN FROM ENTER POLISH COMP. MAGAZINE }
{ BY LUKASZ GRABUN - POLAND }
{ FIDO: 2:480/49.22 }
{***************************************************}
unit OScreen;
interface
const pom : Pointer = nil;
type Scrtype = array[1..11352] of byte;
ScreenType = record
scr : scrtype;
prev : pointer
end;
var SS : ScrType absolute $b800:0;
Screen : ^ScreenType;
procedure PopScreen;
procedure PushScreen;
implementation
procedure PushScreen;
begin
new(Screen);
Screen^.Prev:=Pom;
Pom:=Screen;
Screen^.Scr:=SS
end;
procedure PopScreen;
begin
screen:=pom;
pom:=screen^.prev;
SS:=Screen^.Scr;
dispose(screen)
end;
end.
When you want save screen - simply write PushScreen, and when you want to
restore it - PopScreen. And just one thing: number of used PushScreen
procedures _must be_ equal to number of used PopScreen procs.
Enjoy!!!
CU L8R! - Wookasz
[Back to SAVESCRN SWAG index] [Back to Main SWAG index] [Original]