home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 01 / praxis / memview.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-10-20  |  2.5 KB  |  74 lines

  1. (* ------------------------------------------------------------------------- *)
  2. (*                         MEMVIEW.PAS                                       *)
  3. (*          Memory-Browser als Demoprogramm für SCROLL-Unit                  *)
  4. (*                                                                           *)
  5. (*                (c) 1988   TOOLBOX  &  Karsten Gieselmann                  *)
  6. (* ------------------------------------------------------------------------- *)
  7.  
  8. {$R-,S-,I-,V-,B-,N-}  (* keine Fehlerprüfung, größtmögliche Geschwindigkeit! *)
  9.  
  10. PROGRAM MemView;
  11.  
  12. USES
  13.   Crt, Scroll;                                            (* benötigte Units *)
  14.  
  15. VAR
  16.   k   : BYTE;                                             (* Schleifenzähler *)
  17.   Key : WORD;
  18.  
  19. {$F+}                  (* wichtig: Ausgaberoutine im FAR-Modell kompilieren! *)
  20.  
  21. PROCEDURE DumpParagraph(Col,Row : BYTE; Paragraph : LONGINT);
  22.               (* gibt einen Paragraphen an der Fensterposition (Col,Row) aus *)
  23. VAR
  24.   k : BYTE;                                               (* Schleifenzähler *)
  25.  
  26.   FUNCTION Hex(b : BYTE) : STRING;
  27.                         (* Konvertierung eines Dezimalbytes nach Hexadezimal *)
  28.   CONST
  29.     HexDigit : ARRAY[0..15] OF Char = '0123456789ABCDEF';
  30.   BEGIN
  31.     Hex := HexDigit[b SHR $04] + HexDigit[b AND $0F]
  32.   END;
  33.  
  34.   FUNCTION HexW(w : WORD) : STRING;
  35.                         (* Konvertierung eines Dezimalworts nach Hexadezimal *)
  36.   BEGIN
  37.     HexW := Hex(w SHR $08) + Hex(w AND $FF)
  38.   END;
  39.  
  40. BEGIN
  41.   GotoXY(Col,Row);
  42.   Write(HexW(Pred(Paragraph)), '0  ');
  43.   FOR k:=0 TO 15 DO
  44.     Write(Hex(Mem[Pred(Paragraph):k]), ' ');
  45.   Write(' ');
  46.   FOR k:=0 TO 15 DO
  47.      IF Mem[Pred(Paragraph):k] >= 32 THEN
  48.        Write(Chr(Mem[Pred(Paragraph):k]))
  49.      ELSE
  50.        Write('.');
  51. END;
  52.  
  53. {$F-}
  54.  
  55. {$I UTILITY.INC}                    (* Einbinden verschiedener Hilfsroutinen *)
  56.  
  57. BEGIN
  58.   ClrScr;
  59.   CursorOff;
  60.   Write('╔'); FOR k:=1 TO 78 DO Write('═'); Write('╗');
  61.   FOR k:=1 TO 17 DO
  62.     Write ('║', '':78, '║');
  63.   Write('╚'); FOR k:=1 TO 78 DO Write('═'); Write('╝');
  64.   Window(5,2,79,18);
  65.   SetupScrollArea(65536, @DumpParagraph, NIL);
  66.   Key := $4700;                               (* Home: Speicheranfang zeigen *)
  67.   WHILE NOT Aborted DO BEGIN
  68.     ScrollResponse(Key);                              (* Datei durchblättern *)
  69.     Key := GetKey;
  70.   END;
  71.   TextMode(LastMode);
  72. END.
  73. (* ------------------------------------------------------------------------- *)
  74. (*                        Ende von MEMVIEW.PAS                               *)