[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]

    Uses Dos,Crt;
    { saves and restores and area of screen }
    Const
       Max = 3;

    Type
       ScreenImage = Array[0..1999] of word;
       FrameRec    = Record
                        Upperleft    : Word;
                        LowerRight   : Word;
                        ScreenMemory : ScreenImage;
                     End;

    VAR
       SnapShot     : ^ScreenImage;
       FrameStore   : Array [1..10] of ^FrameRec;
       WindowNum    : Byte;

    Procedure OpenWindow(UpLeftX,UpLeftY,LoRightX,LoRightY : Byte);
    Begin
       SnapShot := Ptr( $B800, $0000);
       Inc(WindowNum);
       New(FrameStore[WindowNum]);
       WITH Framestore[WindowNum]^ do
       Begin
          ScreenMemory := SnapShot^;
          UpperLeft    := WindMin;
          LowerRight   := WindMax;
       end;
       Window(UpLeftX,UpLeftY,LoRightX,LoRightY);
    end;

    Procedure CloseWindow;
    Begin
       With Framestore[WindowNum]^ do
       Begin
          Snapshot^ := ScreenMemory;
          Window ( (Lo(UpperLeft)+1), (Hi(UpperLeft)+1),
                 (Lo(LowerRight)+1), (Hi(LowerRight)+1) );
       end;
       Dispose( Framestore[WindowNum]);
       Dec(WindowNum);
    End;

    Begin
    OpenWIndow(3,3,45,15);
    ClrScr;
    Readkey;
    CloseWindow;
    End.

[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]