home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 210_01 / dump.c < prev    next >
Text File  |  1985-11-15  |  2KB  |  82 lines

  1.     /*                     - DUMP.C, V 1.7 -
  2.                     A memory HEX/ASCII Dump program
  3.                          by K.G.Busch, Oct 86                       */
  4.  
  5.     #include "stdio"
  6.  
  7.     main()
  8.     {
  9.         int maddr, mchar, mptr;
  10.         int b, c, q;
  11.         int mask = 0Xfff0;
  12.         void head(), border();
  13.  
  14.         do {
  15.             printf("\nEnter the address in HEX to peek at: ");
  16.             scanf("%x%*c",&maddr);
  17.             mptr = maddr & mask;
  18.  
  19.             do {
  20.                 head();
  21.                 border();
  22.                 for (b=0; b<=15; b++) {
  23.                     printf("\n%4X  ",mptr);
  24.                     for (q=0; q<=15; q++) hlook(&mchar,&mptr,&q);
  25.                     printf("   ");
  26.                     for (q=0; q<=15; q++) alook(&mchar,&mptr,&q);
  27.                     mptr += 16;
  28.                 }
  29.                 printf("\nENTER to continue otherwise exit");
  30.                 printf(" for another address: ");
  31.             } while ((c = getchar()) == '\n');
  32.         } while ((c = getchar()) == '\n');
  33.     }
  34.  
  35.         /* ------- The head function for column labels ------- */
  36.  
  37.         void head()
  38.             {
  39.                 int q;
  40.                 printf("\nAddr  ");
  41.                 for (q=0; q<=15; q++) {
  42.                     printf("%2X ",q);
  43.                 }
  44.             }
  45.  
  46.         /* -------- The double line border function -------- */
  47.  
  48.         void border()
  49.             {
  50.                 int q;
  51.                 char bdr;
  52.                 bdr = '=';
  53.                 printf("\n");
  54.                 for (q=1; q<=53; q++) {
  55.                     putchar(bdr);
  56.                 }
  57.             }
  58.  
  59.         /* ------ The look functions for peek and print ------ */
  60.  
  61.         hlook(ptr1,ptr2,ptr3)           /* Point to mchar, mptr, and q */
  62.             int *ptr1,*ptr2,*ptr3;
  63.          {
  64.             *ptr1 = peek(*ptr2 + *ptr3);
  65.             printf("%2X ",*ptr1);
  66.          }
  67.  
  68.         alook(ptr1,ptr2,ptr3)         /* Point to mchar, mptr, and q */
  69.             int *ptr1,*ptr2,*ptr3;
  70.         {
  71.             *ptr1 = peek(*ptr2 + *ptr3);
  72.             if (*ptr1 >= 32 && *ptr1 <= 126) printf("%c",*ptr1);
  73.             else printf(".");
  74.         }
  75.  
  76.     /* ------------ This is the end of the program ------------ */
  77.  
  78. int to mchar, mptr, and q */
  79.             int *ptr1,*ptr2,*ptr3;
  80.          {
  81.             *ptr1 = peek(*ptr2 + *ptr3);
  82.