home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 07_08 / tricks / swapdemo.pas < prev    next >
Pascal/Delphi Source File  |  1991-02-25  |  1KB  |  53 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   SWAPDEMO.PAS                         *)
  3. (*           Kleine Demo zur Unit MEMOSWAP                *)
  4. (* ------------------------------------------------------ *)
  5. PROGRAM SwapDemo;
  6.  
  7. USES Crt, MemoSwap;
  8.  
  9. CONST
  10.   ESC_Key = #27;
  11.  
  12.  
  13. VAR
  14.   VideoMode    : BYTE ABSOLUTE $40:$49;
  15.   ActiveScreen : POINTER;
  16.   SavedScreen  : ARRAY [1..4000] OF BYTE;
  17.   s            : STRING;
  18.   c            : CHAR;
  19.   Restore      : BOOLEAN;
  20.  
  21.   FUNCTION ReverseString(s : String) : String;
  22.   VAR
  23.     i : Byte;
  24.   BEGIN
  25.     FOR i := 1 TO Length(s) DIV 2 DO
  26.       SwapByte(s[i], s[Length(s)+1-i]);
  27.       { Gleichwertig : SwapMem(@s[i],@s[Length(s)+1-i],1) }
  28.     ReverseString := s;
  29.   END;
  30.  
  31. BEGIN
  32.   IF VideoMode = 7 THEN
  33.     ActiveScreen := Ptr($B000, 0)
  34.   ELSE
  35.     ActiveScreen := Ptr($B800,0);
  36.   s := 'Dieser Text meint nur sich selbst.';
  37.   WriteLn(s);
  38.   WriteLn(ReverseString(s));
  39.   Move(Ptr(CSeg,0)^, SavedScreen, 4000);
  40.   Restore := False;
  41.   c := ReadKey;
  42.   WHILE c <> ESC_Key DO BEGIN
  43.     SwapMem(@SavedScreen, ActiveScreen, 4000);
  44.     Restore := NOT Restore;
  45.     IF c = #0 THEN c := ReadKey;
  46.     c := ReadKey
  47.   END;
  48.   IF Restore THEN
  49.     SwapMem(@SavedScreen, ActiveScreen, 4000);
  50. END.
  51. (* ------------------------------------------------------ *)
  52. (*                Ende von SWAPDEMO.PAS                   *)
  53.