/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ADUMP * * * * HEX DUMP ROUTINE * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * displays address and data (no offset) dptr = ptr to data to be dumped nbytes = number of bytes to dump */ adump:proc(dptr,nbytes); %replace true by '1'b, false by '0'b; declare dptr ptr, nbytes bin fixed (15); declare data(0:127) bit(8) based (dptr), (offset,lngth) fixed, aptr ptr, (i,j) fixed, c char(1), chrptr ptr, chr char(1) based (chrptr); put skip; offset = 0; lngth = max (0, nbytes-1); do while (offset < lngth); j = min (offset+15, lngth); put skip; aptr = addr (data(offset)); put edit (unspec (aptr), '') (b4, a(3)); put edit ((data(i) do i = offset to j)) (8(b4, x(1)), x(1)); put edit ('') (col(59), a); do i = offset to j; if data(i) > '1f'b4 & data(i) < '7f'b4 then do; chrptr = addr(data(i)); c = chr; end; else c = '.'; put edit (c) (a(1)); end; offset = offset + 16; end; end adump;