home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR2 / DIGIPROG.ZIP / FCT1E.C < prev    next >
C/C++ Source or Header  |  1993-03-30  |  2KB  |  96 lines

  1.  
  2. #include <dos.h>
  3. #include <stdio.h>
  4.  
  5. main()
  6. {
  7.  
  8. struct REGPACK  sregs;
  9.  
  10. int    y,x,water,dx;
  11.  
  12. union REGS regs;
  13.  
  14.     printf("\nEnter DX : ");
  15.     scanf("%d",&dx); while(kbhit()) getch();
  16.  
  17. Choose0:
  18.     printf("\nSoftware Flow Control (XON/XOFF) ");
  19.     printf("\n\nN)one");
  20.     printf("\nT)x Flow");
  21.     printf("\nR)x Flow");
  22.     printf("\nB)oth    : ");
  23.  
  24.     switch(toupper(getch()))
  25.     {
  26.         case 'N' : regs.h.bh = 0x0; break;
  27.         case 'T' : regs.h.bh = 0x1; break;
  28.         case 'R' : regs.h.bh = 0x2; break;
  29.         case 'B' : regs.h.bh = 0x3; break;
  30.         default  : goto Choose0;
  31.     }
  32.  
  33.     regs.x.cx = 0;
  34.     if(regs.h.bh)
  35.     {
  36.         printf("\nSet New XON/XOFF Characters ? (Y/*) : ");
  37.         if(toupper(getch()) == 'Y')
  38.         {
  39.             printf("\nEnter New XON Char (Hex) : ");
  40.             scanf("%x",®s.h.cl);
  41.             printf("\nEnter New XOFF Char (Hex) : ");
  42.             scanf("%x",®s.h.ch);
  43.         }
  44.     }
  45.  
  46. Choose1:
  47.     printf("\n\nHardware RX Flow Control ");
  48.     printf("\n\nN)one");
  49.     printf("\nD)TR Flow");
  50.     printf("\nR)TS Flow");
  51.     printf("\nB)oth    : ");
  52.  
  53.     switch(toupper(getch()))
  54.     {
  55.         case 'N' : regs.h.bl = 0x0; break;
  56.         case 'D' : regs.h.bl = 0x1; break;
  57.         case 'R' : regs.h.bl = 0x2; break;
  58.         case 'B' : regs.h.bl = 0x3; break;
  59.         default  : goto Choose1;
  60.     }
  61.  
  62. Choose2:
  63.     printf("\n\nHardware TX Flow Control ");
  64.     printf("\n\nN)one");
  65.     printf("\nA) CTS Flow");
  66.     printf("\nB) DSR Flow");
  67.     printf("\nC) DCD Flow");
  68.     printf("\nD) CTS & DSR Flow");
  69.     printf("\nE) CTS & DCD Flow");
  70.     printf("\nF) DSR & DCD Flow");
  71.     printf("\nG) ALL             : ");
  72.  
  73.     switch(toupper(getch()))
  74.     {
  75.         case 'N' : regs.h.bl |= 0x0; break;
  76.         case 'A' : regs.h.bl |= 0x10; break;
  77.         case 'B' : regs.h.bl |= 0x20; break;
  78.         case 'C' : regs.h.bl |= 0x80; break;
  79.         case 'D' : regs.h.bl |= 0x30; break;
  80.         case 'E' : regs.h.bl |= 0x90; break;
  81.         case 'F' : regs.h.bl |= 0xA0; break;
  82.         case 'G' : regs.h.bl |= 0xB0; break;
  83.         default  : goto Choose2;
  84.     }
  85.  
  86.  
  87.     regs.h.ah = 0x1e;
  88.     regs.x.dx = dx;
  89.  
  90.     printf("\nCall   - AH : %02X  BH : %02X  BL : %02X  CH : %02X  CL : %02X",
  91.             regs.h.ah, regs.h.bh, regs.h.bl, regs.h.ch, regs.h.cl);
  92.  
  93.     int86(0x14,®s,®s);
  94.     printf("\nReturn - AH : %02X",regs.h.ah);
  95.  
  96. }