home *** CD-ROM | disk | FTP | other *** search
- {
- >show some help Text or something, and then make it disappear
- >without erasing the Text that the Window overlapped. In other
- >Words, there will be a screen full of Text, the Window would open
- >up over some Text display whatever message, and disappear, leaving
-
- The Text you see displayed on the screen can be captured to a Variable
- and subsequently restored through direct screen reads/Writes. Video
- memory is located (on most systems) at $B800 For color and $B000 on
- monochrome adapters. Each screen location consists of two Bytes: 1) the
- Foreground/background color of the location, and 2) the Character at the
- location.
-
- The following Program Writes a screen full of 'Text', captures this
- screen to a Variable (VidScreen), Writes over top of the current screen,
- then restores original screen stored in VidScreen.
- }
- Program OverLap;
- Uses Crt;
-
- Const
- VidSeg = $B800; {..$B000 For monochrome}
-
- Type
- VidArray = Array[1..2000] of Word;
-
- Var
- VidScreen : VidArray;
- x : Integer;
-
-
- Procedure SetScreenColor(back,Fore : Integer);
- begin
- TextBackGround(back);
- TextColor(Fore);
- end;
-
-
- begin
- SetScreenColor(4,2); {.. green on red }
- ClrScr;
- For x := 1 to 25 do
- begin {..Write original screen }
- GotoXY(1,x);
- Write('Text Text Text Text Text Text Text Text Text Text Text '+
- 'Text Text Text Text Text');
- end;
- readln; {..press enter to cont. }
-
- For x := 1 to 2000 do {..store current screen in }
- VidScreen[x] := MemW[VidSeg:x]; { VidScreen Array }
-
- SetScreenColor(7,0); {..black on white }
- GotoXY(38,11);
- WriteLn('HELP'); {..Write help Text, or }
- GotoXY(38,12); { whatever... }
- WriteLn('HELP');
- GotoXY(38,13);
- WriteLn('HELP');
- readln; {..press enter to cont. }
-
- For x := 1 to 2000 do {..restore VidScreen Array }
- MemW[VidSeg:x] := VidScreen[x];
- readln;
- end.