home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 139 / c / basepage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-05-13  |  8.0 KB  |  153 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module:     basepage.c - Examine base page variables                     */
  4. /*                                                                          */
  5. /* Programmer: George R. Woodside                                           */
  6. /*                                                                          */
  7. /* Date:       February 28, 1987                                            */
  8. /*                                                                          */
  9. /****************************************************************************/
  10.  
  11. #include <stdio.h>
  12. #include <osbind.h>
  13. #include <ctype.h>
  14. #include <basepage.h>
  15.  
  16. #ifndef MWC
  17. extern  struct  b_page *_base; /* input base page address */
  18.         struct  b_page *page; /* set our own pointer */
  19.         long    bp_addr = page; /* save the address */
  20. #else
  21.         struct  b_page *page = BP; /* input base page address */
  22.         long    bp_addr = BP; /* save the address */
  23. #endif
  24.  
  25. main()
  26. {
  27.   register  int      c;
  28.   register  int      i;
  29.   register  int      limit;
  30.   register  long     avail;
  31.   register  char    *estr;
  32.   char     *envs[13];                   /* environment pointers             */
  33.  
  34. #ifndef MWC
  35.   page = _base; /* set our own pointer */
  36. #endif
  37.  
  38.   limit = (int) page->p_cmdlin[0];        /* force an int                     */
  39.  
  40.   estr = (char *)page->p_env;           /* get environment start            */
  41.  
  42.   for (i = 0; i < 13; i++ )
  43.     envs[i] = (char *) NULL;            /* zero all pointers                */
  44.  
  45.   i = 0;                                /* reset array index                */
  46.  
  47.   while( (*estr) && i < 13)             /* until we hit end of strings,     */
  48.     {
  49.       envs[i++] = estr;                 /* load label start                 */
  50.       while(*estr++);                   /* skip to end of label             */
  51.     }                                   /* end of environment string scan   */
  52.   i = 0;                                /* clear the index                  */
  53.  
  54.   printf("Base page:              %8X   ",page);
  55.   if(envs[0])
  56.     printf("Environment:");
  57.   printf("\n");
  58.  
  59.   printf("Base of TPA:            %8X   ",page->p_lowtpa);
  60.   if(envs[i])                           /* if an environment variable,      */
  61.     printf("%-32s\n",envs[i++]);        /* print it                         */
  62.   else                                  /* if not,                          */
  63.     printf("\n");                       /* move down a line                 */
  64.  
  65.   printf("End of TPA:             %8X   ",page->p_hitpa);
  66.   if(envs[i])                           /* if an environment variable,      */
  67.     printf("%-32s\n",envs[i++]);        /* print it                         */
  68.   else                                  /* if not,                          */
  69.     printf("\n");                       /* move down a line                 */
  70.  
  71.   printf("Base of text segment:   %8X   ",page->p_tbase);
  72.   if(envs[i])                           /* if an environment variable,      */
  73.     printf("%-32s\n",envs[i++]);        /* print it                         */
  74.   else                                  /* if not,                          */
  75.     printf("\n");                       /* move down a line                 */
  76.  
  77.   printf("Length of text segment: %8X   ",page->p_tlen);
  78.   if(envs[i])                           /* if an environment variable,      */
  79.     printf("%-32s\n",envs[i++]);        /* print it                         */
  80.   else                                  /* if not,                          */
  81.     printf("\n");                       /* move down a line                 */
  82.  
  83.   printf("Base of data segment    %8X   ",page->p_dbase);
  84.   if(envs[i])                           /* if an environment variable,      */
  85.     printf("%-32s\n",envs[i++]);        /* print it                         */
  86.   else                                  /* if not,                          */
  87.     printf("\n");                       /* move down a line                 */
  88.  
  89.   printf("Length of data segment: %8X   ",page->p_dlen);
  90.   if(envs[i])                           /* if an environment variable,      */
  91.     printf("%-32s\n",envs[i++]);        /* print it                         */
  92.   else                                  /* if not,                          */
  93.     printf("\n");                       /* move down a line                 */
  94.  
  95.   printf("Base of BSS segment:    %8X   ",page->p_bbase);
  96.   if(envs[i])                           /* if an environment variable,      */
  97.     printf("%-32s\n",envs[i++]);        /* print it                         */
  98.   else                                  /* if not,                          */
  99.     printf("\n");                       /* move down a line                 */
  100.  
  101.   printf("Length of BSS segment:  %8X   ",page->p_blen);
  102.   if(envs[i])                           /* if an environment variable,      */
  103.     printf("%-32s\n",envs[i++]);        /* print it                         */
  104.   else                                  /* if not,                          */
  105.     printf("\n");                       /* move down a line                 */
  106.  
  107.   printf("Disk Transfer Address:  %8X   ",page->p_dta);
  108.   if(envs[i])                           /* if an environment variable,      */
  109.     printf("%-32s\n",envs[i++]);        /* print it                         */
  110.   else                                  /* if not,                          */
  111.     printf("\n");                       /* move down a line                 */
  112.  
  113.   printf("Parent's basepage:      %8X   ",page->p_parent);
  114.   if(envs[i])                           /* if an environment variable,      */
  115.     printf("%-32s\n",envs[i++]);        /* print it                         */
  116.   else                                  /* if not,                          */
  117.     printf("\n");                       /* move down a line                 */
  118.  
  119.   printf("Environment string:     %8X   ",page->p_env);
  120.   if(envs[i])                           /* if an environment variable,      */
  121.     printf("%-32s\n",envs[i++]);        /* print it                         */
  122.   else                                  /* if not,                          */
  123.     printf("\n");                       /* move down a line                 */
  124.  
  125.   printf("Command line length:          %2x   ",limit);
  126.   if(envs[i])                           /* if an environment variable,      */
  127.     printf("%-32s\n",envs[i++]);        /* print it                         */
  128.   else                                  /* if not,                          */
  129.     printf("\n");                       /* move down a line                 */
  130.  
  131.   printf("Command line:                      ");
  132.   if(envs[i])                           /* if an environment variable,      */
  133.     printf("%-32s\n",envs[i++]);        /* print it                         */
  134.   else                                  /* if not,                          */
  135.     printf("\n");                       /* move down a line                 */
  136.  
  137.   c=page->p_cmdlin[1];                    /* must set first character         */
  138.  
  139.   for(i=1; i<=limit; c=page->p_cmdlin[++i])/* for however long it is,          */
  140.     if(isprint(c))                      /* if it is printable,              */
  141.       printf("%c",c);                   /* print the command line           */
  142.     else 
  143.       printf("^%c",c+'@');              /* display as a control             */
  144.  
  145.   printf("\n");                         /* get a fresh line                 */
  146.  
  147.   avail = page->p_hitpa - page->p_lowtpa; /* compute free RAM               */
  148.   printf("RAM size, Hex: %X Decimal %D\n",avail,avail);
  149.   printf("\n(Press any key.) ");        /* warn the user, and               */
  150.   Crawcin();                            /* wait for a keypress              */
  151.   printf("\n");                         /* space down                       */
  152. }                                       /* end main                         */
  153.