home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* SWAPDEMO.PAS *)
- (* Kleine Demo zur Unit MEMOSWAP *)
- (* ------------------------------------------------------ *)
- PROGRAM SwapDemo;
-
- USES Crt, MemoSwap;
-
- CONST
- ESC_Key = #27;
-
-
- VAR
- VideoMode : BYTE ABSOLUTE $40:$49;
- ActiveScreen : POINTER;
- SavedScreen : ARRAY [1..4000] OF BYTE;
- s : STRING;
- c : CHAR;
- Restore : BOOLEAN;
-
- FUNCTION ReverseString(s : String) : String;
- VAR
- i : Byte;
- BEGIN
- FOR i := 1 TO Length(s) DIV 2 DO
- SwapByte(s[i], s[Length(s)+1-i]);
- { Gleichwertig : SwapMem(@s[i],@s[Length(s)+1-i],1) }
- ReverseString := s;
- END;
-
- BEGIN
- IF VideoMode = 7 THEN
- ActiveScreen := Ptr($B000, 0)
- ELSE
- ActiveScreen := Ptr($B800,0);
- s := 'Dieser Text meint nur sich selbst.';
- WriteLn(s);
- WriteLn(ReverseString(s));
- Move(Ptr(CSeg,0)^, SavedScreen, 4000);
- Restore := False;
- c := ReadKey;
- WHILE c <> ESC_Key DO BEGIN
- SwapMem(@SavedScreen, ActiveScreen, 4000);
- Restore := NOT Restore;
- IF c = #0 THEN c := ReadKey;
- c := ReadKey
- END;
- IF Restore THEN
- SwapMem(@SavedScreen, ActiveScreen, 4000);
- END.
- (* ------------------------------------------------------ *)
- (* Ende von SWAPDEMO.PAS *)
-