home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 225_01 / util.c < prev    next >
Text File  |  1987-06-10  |  8KB  |  228 lines

  1. /*-----------------------------------------------------------------*/
  2. /*
  3.          Programme:     UTIL.C
  4.          ---------
  5.          Purpose:       A Menu for the various C utility programmes
  6.          -------        written by Phil E. Cogar to operate under
  7.                         CP/M 2.x or CP/M 3.0.
  8.                         Note that you need to have the 'COM' files
  9.                         on the same disk as this file to be able to
  10.                         run it.   The programme checks whether you
  11.                         have done this and tells you if all is not
  12.                         well.
  13.                         The COM files required are -
  14.  
  15.                         CHKDSK         CLEANUP        CNTFIL
  16.                         DIR2           NOBAD          RESTORE
  17.                         SECREAD        SHOWDIR        USER2
  18.  
  19.          Compiler:      BDS C V 1.50
  20.          --------
  21.          Written:       14/05/86
  22.          -------
  23.          Amended:       12/11/86
  24.          -------
  25.          Version:       2.0
  26.          -------
  27.  
  28.          Copyright 1986 - Cogar Computer Services Pty. Ltd.        */
  29. /*-----------------------------------------------------------------*/
  30. #include <bdscio.h>
  31. #include <pec.h>
  32. /*-----------------------------------------------------------------*/
  33. #define    VERSION "2.0\0"
  34. #define NAME    "UTIL\0"
  35. /*-----------------------------------------------------------------*/
  36.  
  37. main(argc, argv)    /* For Command Line processing             */
  38. int argc;
  39. char *argv[];
  40. {
  41. /*-----------------------------------------------------------------*/
  42. /*  Space reserved for variables used in programme                 */
  43. /*-----------------------------------------------------------------*/
  44.     int i, j, FD, CH;
  45.     char c;
  46.     int CPM;    /* To check the CP/M Version number        */
  47.     char DRIVE;    /* The active drive                        */
  48. /*-----------------------------------------------------------------*/
  49. /*  Put Heading.                                                   */
  50. /*-----------------------------------------------------------------*/
  51.     pec_clear();    /* Universal routine                       */
  52.     printf("%s - Version %s\n",NAME, VERSION);
  53.     printf("Copyright 1986 - Cogar Computer Services Pty.Ltd.\n\n");
  54. /*-----------------------------------------------------------------*/
  55. /*  First check the CP/M Version in use.   If it is less than
  56.     Version 2.0 then inform the user and terminate programme.      */
  57. /*-----------------------------------------------------------------*/
  58.  
  59.     CPM = get_cpm();    /* Obtain the CP/M version and No. */
  60.  
  61.     i = (CPM & 0xff) - 0x20; /* Mask off the MP/M bit          */
  62.  
  63.     if(i < 0)        /* Must be less than V 2.0         */
  64.     {
  65.     printf("This programme requires at least V 2.x of CP/M.\n");
  66.         printf("Sorry but it won't run for you.\n");
  67.         exit();
  68.     }
  69. /*-----------------------------------------------------------------*/
  70. /*  Put up the menu.                                               */
  71. /*-----------------------------------------------------------------*/
  72. printf("This programme allows you to access a number of utility programmes\n");
  73. printf("for checking disks,cleaning up the directory, repairing bad sectors\n");
  74. printf("of disks, and so on.   Select what you want to do from the Menu - ");
  75. lines(2);
  76. printf("ENTRY      FUNCTION\n");
  77. printf("-----      --------\n\n");
  78. printf(" 1         Print DISK STATISTICS and Data Map.\n");
  79. printf(" 2         CLEAN UP Directory Entries.\n");
  80. printf(" 3         Display COUNT of FILES in all User Areas.\n");
  81. printf(" 4         COPY Disk DIRECTORY onto last track of disk.\n");
  82. printf(" 5         FIND BAD SECTORS and lock them out of use.\n");
  83. printf(" 6         READ any SECTOR of a disk in Hex and ASCII.\n");
  84. printf(" 7         ARCHIVE files not previously copied.\n");
  85. printf(" 8         TRANSFER FILES between User Areas.\n");
  86. printf(" 9         RESTORE erased files...sometimes.\n");
  87. printf(" L         Make a HARD COPY of a file on LIST device.\n");
  88. printf(" X         Return to CP/M.\n\n");
  89. printf("Enter CODE for required function  - ");
  90.  
  91. /*-----------------------------------------------------------------*/
  92. /*  Now execute the nominated function.                            */
  93. /*-----------------------------------------------------------------*/
  94.     if((c = getchar()) == '1')
  95.     {
  96.     if((FD = open("CHKDSK.COM",0)) == -1)
  97.     {
  98.         printf("\nYou need  CHKDSK.COM  on this disk to run ");
  99.         printf("the programme.");
  100.         exit();
  101.     }
  102.     close(FD);
  103.     exec("CHKDSK");
  104.     }
  105. /*-----------------------------------------------------------------*/
  106.     else if(c == '2')
  107.     {
  108.     if((FD = open("CLEANUP.COM", 0)) == -1)
  109.     {
  110.         printf("\nYou need  CLEANUP.COM  on this disk to run ");
  111.         printf("the programme.");
  112.         exit();
  113.     }
  114.     close(FD);
  115.     exec("CLEANUP");
  116.     }
  117. /*-----------------------------------------------------------------*/
  118.     else if(c == '3')
  119.     {
  120.     if((FD = open("CNTFIL.COM", 0)) == -1)
  121.     {
  122.         printf("\nYou need  CNTFIL.COM  on this disk to run ");
  123.         printf("the programme.");
  124.         exit();
  125.     }
  126.     close(FD);
  127.     exec("CNTFIL");
  128.     }
  129. /*-----------------------------------------------------------------*/
  130.     else if(c == '4')
  131.     {
  132.     if((FD = open("DIR2.COM", 0)) == -1)
  133.     {
  134.         printf("\nYou need  DIR2.COM  on this disk to run ");
  135.         printf("the programme.");
  136.         exit();
  137.     }
  138.     close(FD);
  139.     exec("DIR2");
  140.     }
  141. /*-----------------------------------------------------------------*/
  142.     else if(c == '5')
  143.     {
  144.     if((FD = open("NOBAD.COM", 0)) == -1)
  145.     {
  146.         printf("\nYou need  NOBAD.COM  on this disk to run ");
  147.         printf("the programme.");
  148.         exit();
  149.     }
  150.     close(FD);
  151.     exec("NOBAD");
  152.     }
  153. /*-----------------------------------------------------------------*/
  154.     else if(c == '6')
  155.     {
  156.     if((FD = open("SECREAD.COM", 0)) == -1)
  157.     {
  158.         printf("\nYou need  SECREAD.COM  on this disk to run ");
  159.         printf("the programme.");
  160.         exit();
  161.     }
  162.     close(FD);
  163.     exec("SECREAD");
  164.     }
  165. /*-----------------------------------------------------------------*/
  166.     else if(c == '7')
  167.     {
  168.     if((FD = open("ARCHIVE.COM", 0)) == -1)
  169.     {
  170.         printf("\nYou need  ARCHIVE.COM on this disk to run ");
  171.         printf("the programme.");
  172.         exit();
  173.     }
  174.     close(FD);
  175.     exec("ARCHIVE");
  176.     }
  177. /*-----------------------------------------------------------------*/
  178.     else if(c == '8')
  179.     {
  180.     if((FD = open("USER2.COM", 0)) == -1)
  181.     {
  182.         printf("\nYou need  USER2.COM  on this disk to run ");
  183.         printf("the programme.");
  184.         exit();
  185.     }
  186.     close(FD);
  187.     exec("USER2");
  188.     }
  189. /*-----------------------------------------------------------------*/
  190.     else if(c == '9')
  191.     {
  192.     if((FD = open("RESTORE.COM", 0)) == -1)
  193.     {
  194.         printf("\nYou need  RESTORE.COM  on this disk to run ");
  195.         printf("the programme.");
  196.         exit();
  197.     }
  198.     close(FD);
  199.     exec("RESTORE");
  200.     }
  201. /*-----------------------------------------------------------------*/
  202.     else if(toupper(c) == 'L')
  203.     {
  204.     if((FD = open("LISTFILE.COM", 0)) == -1)
  205.     {
  206.         printf("\nYou need  LISTFILE.COM  on this disk to run ");
  207.         printf("the programme.");
  208.         exit();
  209.     }
  210.     close(FD);
  211.     exec("LISTFILE");
  212.     }
  213. /*-----------------------------------------------------------------*/
  214.  
  215.  
  216.     else if(toupper(c) != 'X')
  217.     {
  218.         lines(2);
  219.         printf("\nUnknown response....return to system.");
  220.         exit();
  221.     }
  222. }
  223. /*-----------------------------------------------------------------*/ this disk to run ");
  224.         printf("the programme.");
  225.         exit();
  226.     }
  227.     close(FD);
  228.     ex