home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug053.arc
/
MONITOR.INC
< prev
next >
Wrap
Text File
|
1979-12-31
|
2KB
|
99 lines
{file MONITOR.INC}
{$U+}
type
ascii = set of 0..127;
allchar = set of #0..#127;
const
crlf: set of byte = [13,10];
resp: set of char = ['Y','y','N','n'];
respy: set of char = ['Y','y'];
anykey: ascii = [1..127];
print: ascii = [32..126];
nonspace: ascii = [33..126];
procedure seemem(memad,lines: integer;list: boolean);
var
memad2,i,j,k: integer;
memhex: string[4];
big: boolean;
yn: char;
function toreal(i: integer): real;
begin {toreal}
if i < 0 then
toreal := 65536.0 + i
else
toreal := i;
end;
procedure printer;
begin
write(lst,'>>>>> Memory dump from ');
write(lst,toreal(memad):6:0,' ( ',memhex,' hex)');
writeln(lst,' 16 bytes per line.');
for i := 0 to lines do begin
if i mod 4 = 0 then
writeln(lst,toreal(memad+i*16):5:0,': ');
for j := 0 to 15 do begin
k := ord(mem[memad+i*16+j]);
write(lst,k:3,' ');
end;
for j := 0 to 15 do begin
k := ord(mem[memad+i*16+j]);
if not (k in print) then k := ord('.');
write(lst,chr(k));
end;
end;
writeln(lst);
writeln(lst);
writeln(lst);
end;
procedure screen;
begin
clrscr;
write('>>>> Memory dump from ');
write(toreal(memad):6:0,' ( ',memhex,' hex)');
writeln(' 16 bytes per line');
for i := 0 to lines do begin
if i mod 4 = 0 then
writeln(toreal(memad+i*16):5:0,': ');
for j := 0 to 7 do begin
lowvideo;
k := ord(mem[memad+i*16+j*2]);
write(k:3,' ');
normvideo;
k := ord(mem[memad+i*16+j*2+1]);
write(k:3);
end;
write(' ');
for j := 0 to 15 do begin
k := ord(mem[memad+i*16+j]);
if not (k in print) then k := ord('.');
write(chr(k));
end;
writeln;
end;
writeln(toreal(memad+(i+1)*16):5:0,': ');
end;
procedure tohex;
begin
memhex := ' ';
big := (memad < 0);
if big then memad2 := 32767 + memad +1 else memad2 := memad;
for i := 4 downto 1 do begin
j := memad2 mod 16;
memad2 := memad2 div 16;
if big and (i = 1) then j := 8+j;
memhex[i] := copy('0123456789ABCDEF',j+1,1);
end;
end;
begin
tohex;
if list then printer else screen;
write('Press <SPACE> bar to continue......');
read(kbd,yn);
end;