home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: DFÜ und Kommunikation / SOS-DFUE.ISO / programm / dos / utility / pccp076 / masterm.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-08-24  |  5.6 KB  |  199 lines

  1. /* Copyright (C) 1992, 1993 Peter Edward Cann, all rights reserved */
  2.  
  3. #include<stdio.h>
  4. #include<process.h>
  5. #include"port.h"
  6.  
  7. main(argc, argv)
  8.     int argc;
  9.     char **argv;
  10.     {
  11.     int run, basereg;
  12.     char stopbstr[2], fpname[256], cmdstr[256], c, oldstat;
  13.     if(!strcmp(getenv("REMOTE"), "YES"))
  14.         {
  15.         printf("You appear to be logged in remotely, judging by the environment\n");
  16.         printf("variable REMOTE, so this is probably a very bad idea.\n");
  17.         printf("Are you sure you want to run MASTERM? (y or n) --> ");
  18.         if(getchar()!='y') /* Note getchar() and not getch()! */
  19.             {
  20.             printf("n\nI didn't think so!\n");
  21.             exit(99);
  22.             }
  23.         else
  24.             printf("y\nOK, you're the boss!\n");
  25.         }
  26.     if((argc!=4)&&(argc!=5))
  27.         {
  28.         printf("USAGE: masterm <port#> <speed> <databits><parity><stopbits> [<emu file>]\n");
  29.         exit(1);
  30.         }
  31.     switch(argv[1][0])
  32.         {
  33.         case '1':
  34.             basereg=0x3f8;
  35.             break;
  36.         case '2':
  37.             basereg=0x2f8;
  38.             break;
  39.         case '3':
  40.         case '5':
  41.         case '7':
  42.             basereg=0x3e8;
  43.             break;
  44.         case '4':
  45.         case '6':
  46.         case '8':
  47.             basereg=0x2e8;
  48.             break;
  49.         default:
  50.             printf("Bad port number.\n");
  51.             exit(2);
  52.         }
  53.     oldstat=inp(basereg+MCTLREG);
  54.     outp(basereg+MCTLREG, 0x03);
  55.     if(getenv("PCCPPATH")==NULL)
  56.         sprintf(cmdstr, "term");
  57.     else
  58.         sprintf(cmdstr, "%s/term", getenv("PCCPPATH"));
  59.     if(argc==5)
  60.         spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], argv[4], NULL);
  61.     else
  62.         spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], NULL);
  63.     stopbstr[0]=argv[3][2];
  64.     stopbstr[1]='\0';
  65.     run=1;
  66.     while(run)
  67.         {
  68.         printf("\n     Copyright (C) 1992, 1993 Peter Edward Cann, all rights reserved.\n\n");
  69.         printf("     UPLOAD:  (1) X   (2) X CRC   (3) X CRC 1K   (4) X CRC 16K   (a) ASCII\n\n");
  70.         printf("   DOWNLOAD:  (5) X   (6) X CRC 128/1K/16K Automatic\n\n");
  71.         printf("      (t, SPACE or ENTER) Terminal   (d) Terminal with Dribble\n\n");
  72.         printf("                             (q) Quit\n\n             ---> ");
  73.         c=getch();
  74.         printf("%c\n", c);
  75.         switch(c)
  76.             {
  77.             case 'q':
  78.             case 'Q':
  79.                 run=0;
  80.                 break;
  81.             case 't':
  82.             case 'T':
  83.             case ' ':
  84.             case '\r':
  85.                 if(getenv("PCCPPATH")==NULL)
  86.                     sprintf(cmdstr, "term");
  87.                 else
  88.                     sprintf(cmdstr, "%s/term", getenv("PCCPPATH"));
  89.                 if(argc==5)
  90.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], argv[4], NULL);
  91.                 else
  92.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], NULL);
  93.                 break;
  94.             case 'd':
  95.             case 'D':
  96.                 if(getenv("PCCPPATH")==NULL)
  97.                     sprintf(cmdstr, "term");
  98.                 else
  99.                     sprintf(cmdstr, "%s/term", getenv("PCCPPATH"));
  100.                 printf("Dribble file pathname? (Blank to cancel)\n --> ");
  101.                 gets(fpname);
  102.                 if(!strlen(fpname))
  103.                     break;
  104.                 if(argc==5)
  105.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], argv[4], fpname, NULL);
  106.                 else
  107.                     spawnlp(P_WAIT, cmdstr, "term", argv[1], argv[2], argv[3], "-", fpname, NULL);
  108.                 break;
  109.             case '1':
  110.                 if(getenv("PCCPPATH")==NULL)
  111.                     sprintf(cmdstr, "xmodems");
  112.                 else
  113.                     sprintf(cmdstr, "%s/xmodems", getenv("PCCPPATH"));
  114.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  115.                 gets(fpname);
  116.                 if(!strlen(fpname))
  117.                     break;
  118.                 spawnlp(P_WAIT, cmdstr, "xmodems", argv[1], argv[2], stopbstr, fpname, NULL);
  119.                 putch('\007');
  120.                 break;
  121.             case 'a':
  122.             case 'A':
  123.                 if(getenv("PCCPPATH")==NULL)
  124.                     sprintf(cmdstr, "asciis");
  125.                 else
  126.                     sprintf(cmdstr, "%s/asciis", getenv("PCCPPATH"));
  127.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  128.                 gets(fpname);
  129.                 if(!strlen(fpname))
  130.                     break;
  131.                 spawnlp(P_WAIT, cmdstr, "asciis", argv[1], argv[2], argv[3], fpname, NULL);
  132.                 putch('\007');
  133.                 break;
  134.             case '2':
  135.                 if(getenv("PCCPPATH")==NULL)
  136.                     sprintf(cmdstr, "xmcrcs");
  137.                 else
  138.                     sprintf(cmdstr, "%s/xmcrcs", getenv("PCCPPATH"));
  139.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  140.                 gets(fpname);
  141.                 if(!strlen(fpname))
  142.                     break;
  143.                 spawnlp(P_WAIT, cmdstr, "xmcrcs", argv[1], argv[2], stopbstr, fpname, NULL);
  144.                 putch('\007');
  145.                 break;
  146.             case '3':
  147.                 if(getenv("PCCPPATH")==NULL)
  148.                     sprintf(cmdstr, "xmcrc1ks");
  149.                 else
  150.                     sprintf(cmdstr, "%s/xmcrc1ks", getenv("PCCPPATH"));
  151.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  152.                 gets(fpname);
  153.                 if(!strlen(fpname))
  154.                     break;
  155.                 spawnlp(P_WAIT, cmdstr, "xmcrc1ks", argv[1], argv[2], stopbstr, fpname, NULL);
  156.                 putch('\007');
  157.                 break;
  158.             case '4':
  159.                 if(getenv("PCCPPATH")==NULL)
  160.                     sprintf(cmdstr, "xmcrc16s");
  161.                 else
  162.                     sprintf(cmdstr, "%s/xmcrc16s", getenv("PCCPPATH"));
  163.                 printf("Source file pathname? (Blank to cancel)\n --> ");
  164.                 gets(fpname);
  165.                 if(!strlen(fpname))
  166.                     break;
  167.                 spawnlp(P_WAIT, cmdstr, "xmcrc16s", argv[1], argv[2], stopbstr, fpname, NULL);
  168.                 putch('\007');
  169.                 break;
  170.             case '5':
  171.                 if(getenv("PCCPPATH")==NULL)
  172.                     sprintf(cmdstr, "xmodemr");
  173.                 else
  174.                     sprintf(cmdstr, "%s/xmodemr", getenv("PCCPPATH"));
  175.                 printf("Target file pathname? (Blank to cancel)\n --> ");
  176.                 gets(fpname);
  177.                 if(!strlen(fpname))
  178.                     break;
  179.                 spawnlp(P_WAIT, cmdstr, "xmodemr", argv[1], argv[2], stopbstr, fpname, NULL);
  180.                 putch('\007');
  181.                 break;
  182.             case '6':
  183.                 if(getenv("PCCPPATH")==NULL)
  184.                     sprintf(cmdstr, "xmcrcr");
  185.                 else
  186.                     sprintf(cmdstr, "%s/xmcrcr", getenv("PCCPPATH"));
  187.                 printf("Target file pathname? (Blank to cancel)\n --> ");
  188.                 gets(fpname);
  189.                 if(!strlen(fpname))
  190.                     break;
  191.                 spawnlp(P_WAIT, cmdstr, "xmcrcr", argv[1], argv[2], stopbstr, fpname, NULL);
  192.                 putch('\007');
  193.                 break;
  194.             }
  195.         }
  196.     outp(basereg+MCTLREG, oldstat);
  197.     exit(0);
  198.     }
  199.