home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / MODEMS / ZMODEM / ZMP-SRC.LBR / ZMCONF2.CZ / ZMCONF2.C
Text File  |  2000-06-30  |  8KB  |  405 lines

  1. /*************************************************************************/
  2. /*                                     */
  3. /*        Configuration Overlay for ZMP - Module 2         */
  4. /*                                     */
  5. /*************************************************************************/
  6.  
  7.  
  8. #include "zmp.h"
  9. #include "zconfig.h"
  10.  
  11. #ifdef   AZTEC_C
  12. #include "libc.h"
  13. #else
  14. #include <stdio.h>
  15. #endif
  16.  
  17.  
  18. setparity()
  19. {
  20.      int c;
  21.  
  22.     cls();
  23.     do {
  24.         printf("(N)o parity, (O)dd parity, or (E)ven parity?  ");
  25.     }
  26.         while ((c=toupper(bdos(CONIN))) != 'N' && c != 'O'
  27.             && c != 'E' && c != 0);
  28.     if (c)
  29.         Line.parity = c;
  30. }
  31.  
  32. setdatabits()
  33. {
  34.     int c;
  35.  
  36.     cls();
  37.     do {
  38.         printf("(7) data bits or (8) data bits?  ");
  39.     }
  40.         while ((c=(bdos(CONIN)-'0')) != 7 && c != 8 && c != 0);
  41.     if (c)
  42.         Line.databits = c;
  43. }
  44.    
  45. setstopbits()
  46. {
  47.     int c;
  48.  
  49.     cls();
  50.     do {
  51.         printf("(1) stop bit or (2) stop bits?  ");
  52.     }
  53.         while ((c = (bdos(CONIN)-'0')) != 1 && c != 2 && c != 0);
  54.     if (c);
  55.         Line.stopbits = c;
  56. }
  57.  
  58. #ifdef HOSTON
  59.  
  60. sethost()
  61. {
  62.    int c;
  63.  
  64. start:
  65.    cls();
  66.    printf("\r\t\t\t");
  67.    stndout();
  68.    printf(" HOST MODE PARAMETERS ");
  69.    stndend();
  70.    printf("\n\n\tA - Welcome string.....%s\n",Host.welcome);
  71.    printf("\tB - Autoanswer string..%s\n",Host.autoanswer);
  72.    printf("\tC - Password...........%s\n",Host.password);
  73.    printf("\tD - Connection type....%s\n",Host.modemconnection ? 
  74.       "MODEM" : "DIRECT");
  75.    printf("\tZ - Exit\n\n");
  76.    printf("   Select:  ");
  77.    c = toupper(bdos(CONIN));
  78.    cls();
  79.    switch (c) {
  80.    case 'A':
  81.       gnewstr("welcome string",Host.welcome,20);
  82.       break;
  83.  
  84.    case 'B':
  85.       gnewstr("autoanswer string",Host.autoanswer,20);
  86.       break;
  87.  
  88.    case 'C':
  89.       gnewstr("password",Host.password,20);
  90.       break;
  91.  
  92.    case 'D':
  93.       printf("(M)odem or (D)irect connection? <M> :  ");
  94.       if (toupper(bdos(CONIN)) == 'D')
  95.          Host.modemconnection = FALSE;
  96.       else
  97.          Host.modemconnection = TRUE;
  98.       break;
  99.  
  100.    case ESC:
  101.    case 'Z':
  102.       return;
  103.       break;
  104.  
  105.    default:
  106.       printf("\007\nInvalid Entry\n");
  107.       wait(1);
  108.       break;
  109.    }
  110.    goto start;
  111. }
  112.  
  113. #endif        /* HOSTON */
  114.  
  115. phonedit()
  116. {
  117.     int i, c, change;
  118.     char *answer;
  119.  
  120.     cloadnos();
  121.     answer = Pathname;
  122.     while (TRUE) {
  123.         flush();
  124.         cshownos();
  125.         printf("\nEnter letter of phone number to change/enter,\n");
  126.         printf("or anything else to EXIT:  ");
  127.         c = toupper(bdos(CONIN)) - 'A';
  128.         if (c < 0 || c > 20)
  129.             break;
  130.         change = TRUE;
  131.         flush();
  132.         printf("\n          Name:  %s\nEnter new name:  ",
  133.             PBook[c].name);
  134.         if (getline(answer,18)) {
  135.             while (strlen(answer) < 17)
  136.                 strcat(answer," "); /* Pad with spaces */
  137.             strcpy(PBook[c].name,answer);
  138.         }
  139.         printf("\n          Number:  %s\nEnter new number:  ",
  140.             PBook[c].number);
  141.         if (getline(answer,18))
  142.             strcpy(PBook[c].number,answer);
  143.         printf("\n          Bit rate:  %u\nEnter new bit rate:  ",
  144.             Baudtable[PBook[c].pbaudindex]);
  145.         if (getline(answer,18)) {
  146.             for (i = 0; i < 13; i++) {
  147.                 if (atoi(answer) == Baudtable[i]) {
  148.                     PBook[c].pbaudindex = i;
  149.                     break;
  150.                 }
  151.             }
  152.         }
  153.         printf("\n          Parity:  %c\nEnter new parity:  ",
  154.             PBook[c].pparity);
  155.         if (getline(answer,18))
  156.             PBook[c].pparity = toupper(answer[0]);
  157.         printf("\n    Nr data bits:  %d\nEnter new number:  ",
  158.             PBook[c].pdatabits);
  159.         if (getline(answer,18))
  160.             PBook[c].pdatabits = atoi(answer);
  161.         printf("\n    Nr stop bits:  %d\nEnter new number:  ",
  162.             PBook[c].pstopbits);
  163.         if (getline(answer,18))
  164.             PBook[c].pstopbits = atoi(answer);
  165.         printf("\n                Duplex:  %s\nEnter (H)alf or (F)ull:  ",
  166.             PBook[c].echo?"Half":"Full");
  167.         if (getline(answer,18))
  168.             PBook[c].echo = (toupper(answer[0]) == 'H');
  169.     }
  170.     flush();
  171.     cls();
  172. }
  173.  
  174. cshownos()
  175. {
  176.     int i, j;
  177.  
  178.     cls();
  179.     stndout();
  180.     printf("         NAME                NUMBER          B   P D S E");
  181.     stndend();
  182.     for (i = 0, j = 1; i < 20; i++, j++) {
  183.         LOCATE(i+1,0);
  184.         printf("%c - %s",i+'A',PBook[i].name);
  185.         printf(" %s",PBook[i].number);
  186.         LOCATE(i+1,44);
  187.         printf("%4d %c",Baudtable[PBook[i].pbaudindex],
  188.             PBook[i].pparity);
  189.         printf(" %d %d %c\n",PBook[i].pdatabits,PBook[i].pstopbits,
  190.             PBook[i].echo?'H':'F');
  191.     }
  192. }
  193.  
  194. cloadnos()
  195. {
  196.     int i,result;
  197.     char dummy;
  198.     FILE *fd;
  199.  
  200.     result = NERROR;
  201.     strcpy(Pathname,Phonefile);
  202.     addu(Pathname,Overdrive,Overuser);
  203.        fd = fopen(Pathname,"r");
  204.        if (fd)
  205.        {
  206.         for (i = 0; i < 20; i++) {
  207.             fgets(PBook[i].name,17,fd);
  208.             fscanf(fd,"%c %s %d %c %d %d %d",
  209.                 &dummy,
  210.                 PBook[i].number,
  211.                 &PBook[i].pbaudindex,
  212.                 &PBook[i].pparity,
  213.                 &PBook[i].pdatabits,
  214.                 &PBook[i].pstopbits,
  215.                 &PBook[i].echo);
  216.             fgetc(fd);    /* remove LF */
  217.         }
  218.         fclose(fd);
  219.         result = OK;
  220.     }
  221.     return result;
  222. }      
  223.  
  224. ldedit()
  225. {
  226.     char *p, *answer;
  227.     int c;
  228.  
  229.     answer = Pathname;
  230. start:
  231.     cls();
  232.     printf("\r\t\t\t");
  233.     stndout();
  234.     printf(" LONG DISTANCE ACCESS CODE ");
  235.     stndend();
  236.     printf("\n\nEnter access code to edit:\n\n");
  237.     printf("  + (currently '%s')\n  - (currently '%s')\n\tor Z to exit: ",
  238.         Sprint,Mci);
  239.     c = toupper(bdos(CONIN));
  240.     switch (c) {
  241.  
  242.         case '+':
  243.             p = Sprint;
  244.             break;
  245.  
  246.         case '-':
  247.             p = Mci;
  248.             break;
  249.  
  250.         case ESC:
  251.         case 'Z':
  252.             return;
  253.             break;
  254.  
  255.         default:
  256.             goto start;
  257.     }
  258.     printf("\nEnter new code: ");
  259.     if (getline(answer,20))
  260.         strcpy(p,answer);
  261.     goto start;
  262. }
  263.  
  264. edit()
  265. {
  266.     static int i;
  267.     static char *buffer;
  268.     static char keypad[] = "0123456789";
  269.     static char keybuf[2];
  270.  
  271.     buffer = Pathname;
  272.     while (TRUE) {
  273.         cls();
  274.         flush();
  275.         printf("\r\t\t");
  276.         stndout();
  277.         printf(" KEYPAD MACRO LIST \n\n");
  278.         stndend();
  279.         for (i=0; i<10; i++)
  280.             printf("%d - %s\n",i,KbMacro[i]);
  281.         printf("\nPress key of macro to edit, esc to quit:  ");
  282.         keybuf[0] = bdos(CONIN);
  283.         keybuf[1] = '\0';
  284.         switch (keybuf[0]) {
  285.  
  286.             case ESC:
  287.             case 'Z':
  288.                 break;
  289.  
  290.             default:
  291.                 i = stindex(keypad,keybuf);
  292.  
  293. #ifdef DEBUG
  294.     printf("\nKeypad = %s\n   I = %d   Keybuf = %s\n",keypad,i,keybuf);
  295.     wait(2);
  296. #endif
  297.  
  298.                 if (i<0 || i>9)
  299.                     continue;
  300.                 flush();
  301.                 printf("\nIf you want the macro to end with a RETURN,\n");
  302.                 printf("add a '!' to the end of your entry (20 characters max).");
  303.                 printf("\n\nOld Macro:  %s",KbMacro[i]);
  304.                 printf("\n\nNew Macro:  ");
  305.                 if (getline(buffer,21))
  306.                     strcpy(KbMacro[i],buffer);
  307.                 continue;
  308.         }    /* end of switch */
  309.     break;
  310.     }        /* end of WHILE */
  311.     flush();
  312. }
  313.  
  314. savephone()
  315. {
  316.     int i;
  317.     FILE *fd;
  318.  
  319.     strcpy(Pathname,Phonefile);
  320.     addu(Pathname,Overdrive,Overuser);
  321.     fd = fopen(Pathname,"w");
  322.     if (fd) {
  323.         printf("\nSaving Phone numbers...");
  324.         for (i = 0; i < 20; i++) {
  325.             fprintf(fd,"%s %s %d %c %d %d %d\n",
  326.                 PBook[i].name,
  327.                 PBook[i].number,
  328.                 PBook[i].pbaudindex,
  329.                 PBook[i].pparity,
  330.                 PBook[i].pdatabits,
  331.                 PBook[i].pstopbits,
  332.                 PBook[i].echo);
  333.         }
  334.         fclose(fd);
  335.         printf("Successful.\n");
  336.     }
  337.     else wrerror(Phonefile);
  338. }
  339.  
  340. saveconfig()
  341. {
  342.     int i;
  343.     FILE *fd;
  344.  
  345.     strcpy(Pathname,Cfgfile);
  346.     addu(Pathname,Overdrive,Overuser);
  347.     fd = fopen(Pathname,"w");
  348.     if (fd) {
  349.         printf("\n\nSaving Configuration...");
  350.         fprintf(fd,"%d %d %d %d %d\n",Crcflag,Wantfcs32,
  351.             XonXoff,Filter,ParityMask);
  352.         for (i = 0; i < 10; i++)
  353.             fprintf(fd,"%s\n",KbMacro[i]);
  354.         fprintf(fd,"%s\n%s\n",Mci,Sprint);
  355.         fprintf(fd,"%s\n%s\n%s\n",Modem.init,Modem.dialcmd,
  356.             Modem.dialsuffix);
  357.         fprintf(fd,"%s\n%s\n%s\n",Modem.connect,Modem.busy1,
  358.             Modem.busy2);
  359.         fprintf(fd,"%s\n%s\n%s\n",Modem.busy3,Modem.busy4,
  360.             Modem.hangup);
  361.         fprintf(fd,"%d %d\n",Modem.timeout,Modem.pause);
  362.         fprintf(fd,"%d %c %d %d\n",Line.baudindex,Line.parity,
  363.             Line.databits,Line.stopbits);
  364.         fprintf(fd,"%d %u %c %d %d\n",Zrwindow,Pbufsiz,Maxdrive,
  365.             Chardelay,Linedelay);
  366.         fclose(fd);
  367.         printf("Successful.\n");
  368.     }
  369.     else wrerror(Cfgfile);
  370. }
  371.  
  372. setbaud()
  373. {
  374.     int baud;
  375.     char *buffer;
  376.  
  377.     buffer = Pathname;
  378.     do {
  379.         printf("\nEnter default modem bit rate:  ");
  380.         if (!(getline(buffer,6)))
  381.             break;
  382.         baud = atoi(buffer);
  383.         printf("\n");
  384.     }
  385.         while (!goodbaud(baud));
  386. }
  387.  
  388. goodbaud(value)
  389. int value;
  390. {
  391.     int i;
  392.    
  393.     for (i = 0; i < 14; i++) {
  394.         if (value == Baudtable[i]) {
  395.             Line.baudindex = i;
  396.             return TRUE;
  397.         }
  398.     }
  399.     printf("\nInvalid entry\n");
  400.     wait(1);
  401.     return FALSE;
  402. }
  403.  
  404. /************************* END OF ZMCONFIG MODULE 2 *************************/
  405.