home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_100 / 183_01 / compgm.c86 < prev    next >
Text File  |  1984-06-22  |  2KB  |  46 lines

  1. /* Communications Program for C86
  2.    by Earl C. Terwilliger Jr
  3.    Version   1.0   05-02-1983
  4.                    */
  5. #include "stdio.h"
  6. #define LF    10
  7. #define PORT  0
  8. #define TRUE  1
  9. main() {
  10.  unsigned flags = 0;
  11.  struct regval { unsigned ax,bx,cx,dx,si,di,ds,es; };
  12.  struct regval srv,rrv;
  13.  srv.dx = PORT;               /* RS232  port      */
  14.  srv.ax = 0X005A;              /* Initialize
  15.                          Parms 300,E,1,7  */
  16.  sysint(20,&srv,&rrv);              /* INT 14H          */
  17.  while (TRUE) {
  18.    srv.ax = 0X0300;              /* Return Rs232 status */
  19.    srv.dx = PORT;
  20.    sysint(20,&srv,&rrv);          /* INT 14H         */
  21.    while (rrv.ax & 0X0100) {
  22.      srv.ax = 0X0200;              /* Receive a character */
  23.      srv.dx = PORT;
  24.      sysint(20,&srv,&rrv);          /* INT 14H         */
  25.      putchar(rrv.ax);              /* Display a character */
  26.      srv.ax = 0X0300;              /* Rs232 Status     */
  27.      srv.dx = PORT;
  28.      sysint(20,&srv,&rrv);          /* INT 14H         */
  29.    }
  30.   srv.ax = 0X0100;             /* Test Keyboard buffer */
  31.   flags = sysint(22,&srv,&rrv);      /* INT 16H         */
  32.   flags &= 0X0040;             /* Mask out all but Z     */
  33.   while (!flags)  {
  34.     srv.ax = 0;              /* Get a Keyboard char  */
  35.     sysint(22,&srv,&rrv);         /* INT 16H         */
  36.     srv.ax = rrv.ax & 0X01FF;         /* Character to send     */
  37.     srv.ax |=  0X0100;             /* Rs232 send function  */
  38.     srv.dx = PORT;
  39.     sysint(20,&srv,&rrv);         /* INT 14H         */
  40.     srv.ax = 0X0100;             /* Test Keyboard buffer */
  41.     flags = sysint(22,&srv,&rrv);     /* INT 16H         */
  42.     flags &=  0X0040;             /* Mask out all but Z     */
  43.   }
  44.  }
  45. }
  46.