home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------------- *)
- (* MEMVIEW.PAS *)
- (* Memory-Browser als Demoprogramm für SCROLL-Unit *)
- (* *)
- (* (c) 1988 TOOLBOX & Karsten Gieselmann *)
- (* ------------------------------------------------------------------------- *)
-
- {$R-,S-,I-,V-,B-,N-} (* keine Fehlerprüfung, größtmögliche Geschwindigkeit! *)
-
- PROGRAM MemView;
-
- USES
- Crt, Scroll; (* benötigte Units *)
-
- VAR
- k : BYTE; (* Schleifenzähler *)
- Key : WORD;
-
- {$F+} (* wichtig: Ausgaberoutine im FAR-Modell kompilieren! *)
-
- PROCEDURE DumpParagraph(Col,Row : BYTE; Paragraph : LONGINT);
- (* gibt einen Paragraphen an der Fensterposition (Col,Row) aus *)
- VAR
- k : BYTE; (* Schleifenzähler *)
-
- FUNCTION Hex(b : BYTE) : STRING;
- (* Konvertierung eines Dezimalbytes nach Hexadezimal *)
- CONST
- HexDigit : ARRAY[0..15] OF Char = '0123456789ABCDEF';
- BEGIN
- Hex := HexDigit[b SHR $04] + HexDigit[b AND $0F]
- END;
-
- FUNCTION HexW(w : WORD) : STRING;
- (* Konvertierung eines Dezimalworts nach Hexadezimal *)
- BEGIN
- HexW := Hex(w SHR $08) + Hex(w AND $FF)
- END;
-
- BEGIN
- GotoXY(Col,Row);
- Write(HexW(Pred(Paragraph)), '0 ');
- FOR k:=0 TO 15 DO
- Write(Hex(Mem[Pred(Paragraph):k]), ' ');
- Write(' ');
- FOR k:=0 TO 15 DO
- IF Mem[Pred(Paragraph):k] >= 32 THEN
- Write(Chr(Mem[Pred(Paragraph):k]))
- ELSE
- Write('.');
- END;
-
- {$F-}
-
- {$I UTILITY.INC} (* Einbinden verschiedener Hilfsroutinen *)
-
- BEGIN
- ClrScr;
- CursorOff;
- Write('╔'); FOR k:=1 TO 78 DO Write('═'); Write('╗');
- FOR k:=1 TO 17 DO
- Write ('║', '':78, '║');
- Write('╚'); FOR k:=1 TO 78 DO Write('═'); Write('╝');
- Window(5,2,79,18);
- SetupScrollArea(65536, @DumpParagraph, NIL);
- Key := $4700; (* Home: Speicheranfang zeigen *)
- WHILE NOT Aborted DO BEGIN
- ScrollResponse(Key); (* Datei durchblättern *)
- Key := GetKey;
- END;
- TextMode(LastMode);
- END.
- (* ------------------------------------------------------------------------- *)
- (* Ende von MEMVIEW.PAS *)