home *** CD-ROM | disk | FTP | other *** search
/ Emulator Universe CD / emulatoruniversecd1998.iso / CPC / Utils / DSKutil / XTI_SHLL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-12-13  |  5.7 KB  |  207 lines

  1. /* XTI 1.2 - shell interface stuff */
  2. /* file name : xti_shll.c */
  3.  
  4.  
  5.  
  6. #define kDSK  0
  7. #define kEDK  1
  8. #define kDIF  2
  9. #define kCPD  3
  10. #define kEMC  4
  11. #define kODF  5
  12. #define kAMI  6
  13. #define kCPC  7
  14. #define kNPC  8
  15. #define kNEWD 200
  16. #define kNEWS 201
  17. #define kNEWI 202
  18. #define kNUL  255
  19.  
  20. char *sDSK = "plain disk image";
  21. char *sEDK = "extended disk image";
  22. char *sDIF = "DIF revision 2";
  23. char *sODF = "DIF older revision";
  24. char *sCPD = "CPD format";
  25. char *sEMC = "EmuCPC format";
  26. char *sAMI = "AmiCPC format";
  27. char *sCPC = "!CPCEmu format";
  28. char *sNPC = "NO$CPC format";
  29.  
  30. char *fDSK = "-dsk";
  31. char *fEDK = "-edsk";
  32. char *fDIF = "-dif";
  33. char *fODF = "-odif";
  34. char *fCPD = "-cpd";
  35. char *fEMC = "-emu";
  36. char *fAMI = "-ami";
  37. char *fCPC = "-cpc";
  38. char *fNPC = "-ncpc";
  39.  
  40. char *fNEWD = "-newD";
  41. char *fNEWS = "-newS";
  42. char *fNEWI = "-newI";
  43. char *fCUT = "-cut";
  44. char *fDET = "-DE";
  45. char *fMRG = "-merge";
  46. char *fICL = "-incl";
  47. char *fES1 = "-es1";
  48. char *fES2 = "-es2";
  49. char *fBCK = "-back";
  50.  
  51.  
  52. #if MSDOS == 0
  53. char *sfEDSK = ".edsk";
  54. char *sfDDSK = ".ddsk";
  55. char *sfXDSK = ".xdsk";
  56. #else
  57. char *sfEDSK = ".edk";
  58. char *sfDDSK = ".ddk";
  59. char *sfXDSK = ".xdk";
  60. #endif
  61.  
  62. char *sfODSK = ".dsk";
  63.  
  64.  
  65. void doFlag1(char *theFlags)
  66.  if (!strcmp(theFlags,fDSK)) { theFormat = kDSK;
  67.         printf("Source file is assumed to be %s\n",sDSK); }
  68.  else if (!strcmp(theFlags,fEDK)) { theFormat = kEDK;
  69.         printf("Source file is assumed to be %s\n",sEDK); }
  70.  else if (!strcmp(theFlags,fDIF)) { theFormat = kDIF;
  71.         printf("Source file is assumed to be %s\n",sDIF); }
  72.  else if (!strcmp(theFlags,fODF)) { theFormat = kODF;
  73.         printf("Source file is assumed to be %s\n",sODF); }
  74.  else if (!strcmp(theFlags,fCPD)) { theFormat = kCPD;
  75.         printf("Source file is assumed to be %s\n",sCPD); }
  76.  else if (!strcmp(theFlags,fEMC)) { theFormat = kEMC;
  77.         printf("Source file is assumed to be %s\n",sEMC); }
  78.  else if (!strcmp(theFlags,fAMI)) { theFormat = kAMI;
  79.         printf("Source file is assumed to be %s\n",sAMI); }
  80.  else if (!strcmp(theFlags,fCPC)) { theFormat = kCPC;
  81.         printf("Source file is assumed to be %s\n",sCPC); }
  82.  else if (!strcmp(theFlags,fNPC)) { theFormat = kNPC;
  83.         printf("Source file is assumed to be %s\n",sNPC); }
  84. }
  85.  
  86.  
  87. void doFlag2(char *theFlags)
  88. {
  89.  int i;
  90.  
  91.  if (strstr(theFlags, fCUT) == theFlags)
  92.    { i = atoi(theFlags + strlen(fCUT));
  93.      if (i>0) theCut = min(i,k8KB);        /* 8k sector buffer limit */
  94.            else printf("Incorrect sector limit, using %d\n", theCut); }
  95.  else if (!strcmp(theFlags, fDET)) DETrick = 1;
  96. }
  97.  
  98.  
  99. int newFlag(char *theFlags)
  100. {
  101.  if (!strcmp(theFlags,fNEWD)) { theFormat = kNEWD; return(1); }
  102.  else if (!strcmp(theFlags,fNEWS)) { theFormat = kNEWS; return(1); }
  103.  else if (!strcmp(theFlags,fNEWI)) { theFormat = kNEWI; return(1); }
  104.  return(0);
  105. }
  106.  
  107.  
  108. void getFormat(char *fileName)
  109. {
  110.  FILE *Scanned;
  111.  char buffer[9];
  112.  int  i;
  113.  
  114.  if ( (Scanned = fopen(fileName, "r")) != NULL)
  115.   {
  116.    for(i=0; i<8; i++) buffer[i] = fgetc(Scanned);
  117.    buffer[8] = '\0';
  118.  
  119.    if (!strcmp(buffer, "EXTENDED")) { theFormat = kEDK;
  120.         printf("Source file is %s\n", sEDK); }
  121.    else if (!strcmp(buffer, "NORMDISK")) { theFormat = kCPD;
  122.         printf("Source file is %s\n", sCPD); }
  123.    else if (!strcmp(buffer, "MV - CPC")) { theFormat = kDSK;
  124.         printf("Source file is %s\n", sDSK); }
  125.    else if (!strcmp(buffer, "CPC-Emul")) { theFormat = kCPC;
  126.         printf("Source file is %s\n", sCPC); }
  127.    else if (!strncmp(buffer, "CPCD", 4)) { theFormat = kEMC;
  128.         printf("Source file is %s\n", sEMC); }
  129.    else if ( (strstr(fileName, ".dif") != NULL)
  130.            ||(strstr(fileName, ".DIF") != NULL))
  131.       { if (*buffer < 2) {theFormat = kODF;
  132.                           printf("Source file is probably %s\n", sODF); }
  133.         else if (*buffer == 2) {theFormat = kDIF;
  134.                           printf("Source file is probably %s\n", sDIF); }
  135.       }
  136.    else if ( (strstr(fileName, ".dsk") != NULL)
  137.            ||(strstr(fileName, ".DSK") != NULL)) { theFormat = kNPC;
  138.         printf("Source file is probably %s\n", sNPC); }
  139.    else if ((buffer[0] == 0) && (buffer[1] == 0) && (buffer[2] == 2)) { theFormat = kAMI;
  140.         printf("Source file is probably %s\n", sAMI); }
  141.  
  142.    fclose(Scanned);
  143.   }  
  144. }
  145.  
  146.  
  147. void doFile(char *SourceName)
  148. {
  149.  char TargetName[256];
  150.  char *dotpt;
  151.  
  152.  
  153.  if (theFormat == kNUL)
  154.     { fprintf(stderr, "Improper file format !\n"); exit(1);}
  155.  theCutHi = (theCut >> 8) & 255;
  156.  theCutLo = theCut & 255;
  157.  
  158.  
  159.  sprintf (TargetName, "%s", SourceName);
  160.  if ((dotpt = strchr(TargetName, '.')) == NULL) dotpt = TargetName + strlen(TargetName);
  161.  sprintf (dotpt, sfEDSK);
  162.  if (!strcmp(SourceName, TargetName)) sprintf (dotpt, sfXDSK);
  163.  
  164.  if ((Source = fopen(SourceName,"rb")) == NULL)
  165.      {
  166.      fprintf(stderr, "Unable to open %s !\n", SourceName);
  167.      exit(2);
  168.      }
  169.  
  170.  Target = fopen(TargetName, "w");                      
  171.  
  172. switch(theFormat)
  173. {
  174.  case kDSK:
  175.        printf("Extending the image...\n");
  176.        dsk2edsk(); break;
  177.  case kEDK:
  178.        printf("Cleaning the image...\n");
  179.        edsk2edsk(); break;
  180.  case kDIF:
  181.        printf("Converting the image...\n");
  182.        dif2edsk(); break;
  183.  case kODF:
  184.        printf("Converting the image...\n");
  185.        Odif2edsk(); break;
  186.  case kCPD:
  187.        printf("Converting the image...\n");
  188.        cpd2edsk(); break;
  189.  case kEMC:
  190.        printf("Converting the image...\n");
  191.        emc2edsk(); break;
  192.  case kAMI:
  193.        printf("Converting the image...\n");
  194.        ami2edsk(); break;
  195.  case kCPC:
  196.        printf("Converting the image...\n");
  197.        cpc2edsk(); break;
  198.  case kNPC:
  199.        printf("Converting the image...\n");
  200.        npc2edsk(); break;
  201. }
  202.  
  203.  fclose(Source);
  204.  fclose(Target);
  205. }
  206.