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

  1.  
  2. #include <dos.h>
  3. #include <stdio.h>
  4.  
  5. main()
  6. {
  7.  
  8. struct REGPACK  sregs;
  9.  
  10.     int    y,x,numbytes,dx,quit,xx,yy,mask;
  11.  
  12.     union REGS regs;
  13.     /*struct SREGS sregs;*/
  14.  
  15.     clrscr();
  16.     printf("\nEnter DX : ");
  17.     scanf("%d",&dx); while(kbhit()) getch();
  18.  
  19.     regs.h.ah = 0x1f;
  20.     regs.h.al = 0;
  21.     regs.x.dx = dx;
  22.  
  23.     printf("A) Enable Events    B) Disable Events : ");
  24.     if(toupper(getch()) == 'A')
  25.     {
  26.         printf("\nEnter Selection To Toggle ");
  27.         printf("\nA) Event on Break           : "); xx=wherex(); yy=wherey();
  28.         printf("\nB) Event on TxLow           : ");
  29.         printf("\nC) Event on TxBuff Empty    : ");
  30.         printf("\nD) Event on RX data present : ");
  31.         printf("\nE) Event on CTS change      : ");
  32.         printf("\nF) Event on DSR change      : ");
  33.         printf("\nG) Event on RI change       : ");
  34.         printf("\nH) Event on DCD change      : ");
  35.         printf("\nQ)uit                       : ");
  36.  
  37.         quit = mask = 0;
  38.         Toggle(mask,xx,yy);
  39.  
  40.         while(!quit)
  41.         {
  42.             switch(toupper(getch()))
  43.             {
  44.                 case 'A' : mask ^= 0x01; break;
  45.                 case 'B' : mask ^= 0x02; break;
  46.                 case 'C' : mask ^= 0x04; break;
  47.                 case 'D' : mask ^= 0x08; break;
  48.                 case 'E' : mask ^= 0x1000; break;
  49.                 case 'F' : mask ^= 0x2000; break;
  50.                 case 'G' : mask ^= 0x4000; break;
  51.                 case 'H' : mask ^= 0x8000; break;
  52.                 case 'Q' : quit = 1; break;
  53.             }
  54.             Toggle(mask,xx,yy);
  55.         }
  56.         regs.h.al = mask & 0x00ff;
  57.         if(mask & 0xf000) mask |= 0x20;            /* Set mdm chng IRQ     */
  58.         else              mask &= 0xffdf;        /* Clear mdm chng IRQ     */
  59.         regs.h.al = mask & 0x00ff;
  60.         regs.h.bl = mask >> 8;
  61.     }
  62.     else
  63.         regs.h.al = 0;
  64.  
  65.     printf("\nCall   - AH : %02X   AL : %02X   BL : %02X",
  66.             regs.h.ah, regs.h.al, regs.h.bl);
  67.     int86(0x14,®s,®s);
  68. }
  69.  
  70.  
  71. Toggle(unsigned mask,int xx, int yy)
  72. {
  73.     int x,y;
  74.     char    *Str[2] = {"OFF"," ON"};
  75.  
  76.     x = wherex(); y=wherey();
  77.  
  78.     gotoxy(xx,yy++); printf("%s",Str[mask&0x1]);
  79.     gotoxy(xx,yy++); printf("%s",Str[(mask&0x2)>>1]);
  80.     gotoxy(xx,yy++); printf("%s",Str[(mask&0x4)>>2]);
  81.     gotoxy(xx,yy++); printf("%s",Str[(mask&0x8)>>3]);
  82.     gotoxy(xx,yy++); printf("%s",Str[(mask&0x1000)>>12]);
  83.     gotoxy(xx,yy++); printf("%s",Str[(mask&0x2000)>>13]);
  84.     gotoxy(xx,yy++); printf("%s",Str[(mask&0x4000)>>14]);
  85.     gotoxy(xx,yy++); printf("%s",Str[(mask&0x8000)>>15]);
  86.     gotoxy(x,y);
  87. }