home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / alde_c / misc / lib / r_la4_02 / ser300.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-01-18  |  1.8 KB  |  44 lines

  1. /* SER300.C - From page 485 of "Microsoft C Programming for     */
  2. /* the IBM" by Robert Lafore. This program is a simple prog-    */
  3. /* ram that communicates with a serial port and needs a Hayes   */
  4. /* compatible modem as the program is written.                  */
  5. /****************************************************************/
  6.  
  7. #include "dos.h"              /*For ROM BIOS calls*/
  8. #define COM 1                 /*Serial port (0 = COM1, 1 = COM2)*/
  9. #define CONF 0x43             /*300 baud, no par, 1 stop, 8 bits*/
  10. #define DATAR 0x100           /*data-ready bit in status word*/
  11. #define TRUE 1
  12.  
  13. main()
  14. {
  15. union REGS inregs, outregs;
  16. char ch;
  17.  
  18.    inregs.h.ah = 0;           /*initialize port service*/
  19.    inregs.x.dx = COM;         /*port number*/
  20.    inregs.h.al = CONF;        /*configuration*/
  21.    int86(0x14, &inregs, &outregs);  /*serial port interrupt*/
  22.    printf("\n\nPort status after initialization: 0x%x.\n\n", outregs.x.ax);
  23.    while(TRUE)  {
  24.       if(kbhit())  {          /*if key pressed*/
  25.          ch = getch();        /*get char from keyboard*/
  26.          inregs.h.ah = 1;     /*'sent char' service*/
  27.          inregs.x.dx = COM;   /*port number*/
  28.          inregs.h.al = ch;    /*character*/
  29.          int86(0x14, &inregs, &outregs);
  30.       }
  31.       inregs.h.ah = 3;        /*'get port status' service*/
  32.       inregs.x.dx = COM;      /* port number*/
  33.       int86(0x14, &inregs, &outregs);
  34.       if(outregs.x.ax & DATAR)  {      /*data ready ? */
  35.          inregs.h.ah = 2;     /*'receive char' service*/
  36.          inregs.x.dx = COM;   /*port number*/
  37.          int86(0x14, &inregs, &outregs);
  38.          ch = outregs.h.al & 0x7F;     /*get char*/
  39.          putch(ch);                    /*display char*/
  40.       }                    /*end if*/
  41.    }                       /*end while*/
  42. }
  43.  
  44.