home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
TURBOPAS
/
TP-UTIL.ARK
/
VARDUMP1.SRC
< prev
next >
Wrap
Text File
|
1986-01-06
|
1KB
|
38 lines
PROCEDURE VARDUMP(VAR DEVICE : TEXT; VAR TARGET; ITSIZE : INTEGER);
CONST PRINTABLES : SET OF CHAR = [' '..'}'];
VAR I,J : INTEGER;
FULL,LEFT : INTEGER;
DUMPIT : ARRAY[0..MAXINT] OF BYTE ABSOLUTE TARGET;
PROCEDURE DUMP_LINE(OFFSET,BYTE_COUNT : INTEGER);
VAR I : INTEGER;
BEGIN
FOR I := 0 TO BYTE_COUNT-1 DO { Hex dump the data }
BEGIN
WRITE_HEX(DEVICE,DUMPIT[(OFFSET*16)+I]);
WRITE(DEVICE,' ')
END;
FOR I := 0 TO 56 - (BYTE_COUNT*3) DO WRITE(DEVICE,' '); { Space interval }
WRITE(DEVICE,'|'); { Show first boundary bar }
FOR I := 0 TO BYTE_COUNT-1 DO { Show printable equivalents }
IF CHR(DUMPIT[(OFFSET*16)+I]) IN PRINTABLES THEN
WRITE(DEVICE,CHR(DUMPIT[(OFFSET*16)+I]))
ELSE WRITE(DEVICE,'.');
WRITELN(DEVICE,'|') { Final boundary bar }
END;
BEGIN
FULL := ITSIZE DIV 16; { Number of 16-byte chunks in TARGET }
LEFT := ITSIZE MOD 16; { 'Leftover' bytes after last 16-byte chunk }
FOR I := 0 TO FULL-1 DO { Not executed if less than 16 bytes in TARGET }
DUMP_LINE(I,16);
IF LEFT > 0 THEN { Not executed if size of TARGET divides by 16 }
DUMP_LINE(FULL,LEFT);
WRITELN(DEVICE) { Space down one line after dump }
END; { VARDUMP }