home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol079 / odump.pli < prev    next >
Text File  |  1984-04-29  |  2KB  |  62 lines

  1.   /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2.    *                                                     *
  3.    *                       ODUMP                         *
  4.    *                                                     *
  5.    *                  HEX DUMP ROUTINE                   *
  6.    *                                                     *
  7.    * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  8.  
  9.        displays offset and data (no address)
  10.  
  11.        dptr         =  ptr to data to be dumped
  12.        nbytes       =  number of bytes to dump */
  13.  
  14. odump:proc(dptr,nbytes);
  15.       %replace
  16.         true   by  '1'b,
  17.         false  by  '0'b;
  18.  
  19.     declare
  20.         dptr           ptr,
  21.         nbytes         bin fixed (15);
  22.  
  23.     declare
  24.         data(0:127)    bit(8) based (dptr),
  25.         (offset,lngth) fixed,
  26.         optr           ptr,
  27.         offseta        bit(16) based (optr),
  28.         (i,j)          fixed,
  29.         c              char(1),
  30.         chrptr         ptr,
  31.         chr            char(1) based (chrptr);
  32.  
  33.     put skip;
  34.     offset = 0;
  35.     optr = addr (offset);
  36.     lngth = max (0, nbytes-1);
  37.  
  38.         do while (offset < lngth);
  39.         j = min (offset+15, lngth); 
  40.         put skip;
  41.         put edit (offseta,'') (b4,a(3));
  42.         put edit ((data(i) do i = offset to j)) (8(b4, x(1)),x(1));
  43.         put edit ('') (col(59), a);
  44.  
  45.             do i = offset to j;
  46.             if data(i) > '1f'b4 & data(i) < '7f'b4 then do;
  47.                 chrptr = addr(data(i));
  48.                 c = chr;
  49.                 end;
  50.             else
  51.                 c = '.';
  52.             put edit (c) (a(1));
  53.                 end;
  54.         offset = offset + 16;
  55.         end;
  56.  
  57.     end odump;
  58.  
  59.  
  60.  
  61.  
  62.