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

    >---------< How to save/restore the whole screen >----------
    {$X+}
    Uses Crt;

    Type PScreenBuf = ^TScreenBuf;
         TScreenBuf = Array [1..2000] of Word;

    Var ScreenBuf: PScreenBuf;   { Pointer to actual video ram }
        Scr:       TScreenBuf;   { buffer For screen storage   }
        VideoPort: Word Absolute 0:$463;  { the video port adr }
        i:         Byte;         { :-) you'll always find it   }
                                 { in Programs like this :-)   }
    begin
      if VideoPort = $3D4 then
        ScreenBuf := Ptr ($B800,0)        { oh, it's color :-) }
      else
        ScreenBuf := Ptr ($B000,0);          { oh no, mono :-( }

      Scr := ScreenBuf^;                   {*** SAVE SCREEN ***}

      if ReadKey=#0 then ReadKey;           { wait For any key }
      For i:=1 to 60 do
        Writeln ('Hello guys out there...');  { DESTROY SCREEN }
      if ReadKey=#0 then ReadKey;           { wait For any key }

      ScreenBuf^ := Scr;                {*** REStoRE SCREEN ***}

      if ReadKey=#0 then ReadKey;           { wait For any key }
    end.
    >-----------------< Yes! Even tested! >---------------------

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