home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR2 / DIGIPROG.ZIP / FCT4.C < prev    next >
C/C++ Source or Header  |  1993-03-29  |  2KB  |  91 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;
  11.  
  12. union REGS regs;
  13. /*struct SREGS sregs;*/
  14.  
  15. /* special char - <CR> */
  16.  
  17.     regs.x.ax = regs.x.bx = regs.x.cx = 0;
  18.     regs.h.ah = 0x04;
  19.  
  20.     printf("\nEnter DX : ");
  21.     scanf("%d",&dx); while(kbhit()) getch();
  22.  
  23.     printf("Set Break ? (Y/*) : ");
  24.     if(toupper(getch()) == 'Y') regs.h.al = 1;
  25.  
  26. Par:
  27.     printf("\nSelect Parity  N)one   O)dd   E)ven  : ");
  28.     switch(toupper(getch()))
  29.     {
  30.         case 'N' :    regs.h.bh |= 0x0; break;
  31.         case 'O' :    regs.h.bh |= 0x1; break;
  32.         case 'E' :    regs.h.bh |= 0x2; break;
  33.         default  : goto Par;
  34.     }
  35.  
  36. SBits:
  37.     printf("\nSelect Stop Bits  1)  2)  : ");
  38.     switch(toupper(getch()))
  39.     {
  40.         case '1' :    regs.h.bl |= 0x0; break;
  41.         case '2' :    regs.h.bl |= 0x1; break;
  42.         default  : goto SBits;
  43.     }
  44.  
  45. DBits:
  46.     printf("\nSelect Data Bits  5)  6)  7)  8)  : ");
  47.     switch(toupper(getch()))
  48.     {
  49.         case '5' :    regs.h.ch |= 0x0; break;
  50.         case '6' :    regs.h.ch |= 0x1; break;
  51.         case '7' :    regs.h.ch |= 0x2; break;
  52.         case '8' :    regs.h.ch |= 0x3; break;
  53.         default  : goto DBits;
  54.     }
  55. Baud:
  56.     printf("\nSelect Parity  A) 110     B) 150   C) 300    D) 600    E) 1200   F) 2400   \n");
  57.     printf("               G) 4800    H) 9600  I) 19200  J) 38400  K) 57600  L) 76800  \n");
  58.     printf("               M) 115.2k  N) 50    O) 75     P) 134    Q) 200    R) 1800 ");
  59.     switch(toupper(getch()))
  60.     {
  61.         case 'A' :    regs.h.cl = 0x00; break;
  62.         case 'B' :    regs.h.cl = 0x01; break;
  63.         case 'C' :    regs.h.cl = 0x02; break;
  64.         case 'D' :    regs.h.cl = 0x03; break;
  65.         case 'E' :    regs.h.cl = 0x04; break;
  66.         case 'F' :    regs.h.cl = 0x05; break;
  67.         case 'G' :    regs.h.cl = 0x06; break;
  68.         case 'H' :    regs.h.cl = 0x07; break;
  69.         case 'I' :    regs.h.cl = 0x08; break;
  70.         case 'J' :    regs.h.cl = 0x09; break;
  71.         case 'K' :    regs.h.cl = 0x0A; break;
  72.         case 'L' :    regs.h.cl = 0x0B; break;
  73.         case 'M' :    regs.h.cl = 0x0C; break;
  74.         case 'N' :    regs.h.cl = 0x0D; break;
  75.         case 'O' :    regs.h.cl = 0x0E; break;
  76.         case 'P' :    regs.h.cl = 0x0F; break;
  77.         case 'Q' :    regs.h.cl = 0x10; break;
  78.         case 'R' :    regs.h.cl = 0x11; break;
  79.         default  : goto Par;
  80.     }
  81.     regs.x.dx = dx;
  82.  
  83.     printf("\n Call   - AH : %02X  AL : %02X  ",regs.h.ah, regs.h.al);
  84.     printf("\n        - BH : %02X  BL : %02X  ",regs.h.bh, regs.h.bl);
  85.     printf("\n        - CH : %02X  CL : %02X  ",regs.h.ch, regs.h.cl);
  86.  
  87.     int86(0x14,®s,®s);
  88.     printf("\n Return - AH : %02X  AL : %02X",regs.h.ah,regs.h.al);
  89.  
  90.  
  91. }