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

  1. /*    Copyright (C) 1992 Peter Edward Cann, all rights reserved.
  2.  *    MicroSoft QuickC: >qcl term.c graphics.lib
  3.  */
  4.  
  5. #include<stdio.h>
  6. #include<bios.h>
  7. #include<dos.h>
  8. #include<fcntl.h>
  9. #include<signal.h>
  10. #include"port.h"
  11.  
  12. #define CAN 24 /* Control-X */
  13.  
  14. quit()
  15.     {
  16.     cleanup();
  17.     exit(99);
  18.     }
  19.  
  20. sendchar(c)
  21.     unsigned char c;
  22.     {
  23.     while(!((inp(basereg+STATREG)&TXMTMASK)&&(inp(basereg+MSTATREG)&CTSMASK)))
  24.         if(kbhit())
  25.             getch();
  26.     outp(basereg, c);
  27.     }
  28.  
  29. main(argc, argv)
  30.     int argc;
  31.     char **argv;
  32.     {
  33.     FILE *fd;
  34.     char c, str[256];
  35.     int follow, i, flag;
  36.     index=follow=0;
  37.     printf("Copyright (C) 1992 Peter Edward Cann, all rights reserved.\n");
  38.     if(argc!=5)
  39.         {
  40.         printf("USAGE: term <comnum> <bps> <data><parity><stop> <file>\n");
  41.         exit(1);
  42.         }
  43.     printf("ASCII send of %s\n", argv[4]);
  44.     if((fd=fopen(argv[4], "r"))==NULL)
  45.         {
  46.         printf("Couldn't open file %s.\n");
  47.         exit(10);
  48.         }
  49.     comnum=atoi(argv[1])-1;
  50.     speed=atoi(argv[2]);
  51.     parity=argv[3][1];
  52.     databits=argv[3][0];
  53.     stopbits=argv[3][2];
  54.     setport();
  55.     signal(SIGINT, quit);
  56.     readset();
  57.     setup();
  58.     while(1)
  59.         {
  60.         if(kbhit())
  61.             getch();
  62.         if(fgets(str, 255, fd)==NULL)
  63.             {
  64.             while(!(inp(basereg+STATREG)&TXSHMTMASK));
  65.             cleanup(0);
  66.             exit(0);
  67.             }
  68.         for(i=0;(str[i]!='\0')&&(i<256);++i)
  69.             if(str[i]!='\n')
  70.                 sendchar(str[i]);
  71.             else
  72.                 sendchar('\r');
  73.         flag=0;
  74.         do
  75.             {
  76.             if(follow>=TBUFSIZ)
  77.                 follow=0;
  78.             while(follow==index)
  79.                 if(kbhit())
  80.                     if(getch()=='\r')
  81.                         {
  82.                         putch('\n');
  83.                         flag=1;
  84.                         break;
  85.                         }
  86.             if(flag)
  87.                 break;
  88.             if(buf[follow]!=CAN)
  89.                 putch(buf[follow]);
  90.             else
  91.                 exit(12);
  92.             }
  93.         while((buf[follow++]&0x7f)!='\r');
  94.         if(follow>=TBUFSIZ)
  95.             follow=0;
  96.         }
  97.     }
  98.