home *** CD-ROM | disk | FTP | other *** search
/ Boston 2 / boston-2.iso / DOS / PROGRAM / C / LITECOMM / LITECOMM.H < prev    next >
Text File  |  1993-12-01  |  6KB  |  219 lines

  1. /*
  2. **    litecomm.h
  3. **        Communications support for Datalight (tm) C
  4. **        Copyright (c) 1987, 1988 - Information Technology, Ltd.,
  5. **                             All Rights Reserved
  6. **  Revisions -
  7. **        01        01/08/88    Modify for DLC 3.21
  8. **                            remove lc_sbrk define
  9. **        2.70    02/25/88    abandon DLC support
  10. */
  11. #undef USEHUGE
  12.  
  13. #ifndef TRUE
  14. #define TRUE 1
  15. #endif
  16. #ifndef FALSE
  17. #define FALSE 0
  18. #endif
  19. #define ERR (-1)
  20.  
  21. #ifndef LITECOMM_H                /* if not already included        */
  22.  
  23. #define COM1BASE    0x3f8        /* base for com port 1 */
  24. #define COM2BASE    0x2f8        /* base for com port 2 */
  25. #define IRQ1        0x10        /* int req mask for port 1 - irq4 */
  26. #define IRQ2        0x08        /* int req mask for port 2 - irq3 */
  27. #define COM1VEC        0x0c        /* vector for port 1 */
  28. #define COM2VEC        0x0b        /* vector for port 2 */
  29.  
  30. #ifdef KRNL
  31. unsigned COM3BASE = 0x3e8;        /* user changeable com port 3 */
  32. unsigned COM4BASE = 0x2e8;        /* user changeable com port 4 */
  33. char IRQ3 = IRQ1;                /* ditto for int levels */
  34. char IRQ4 = IRQ2;
  35. unsigned COM3VEC = 0x0c;
  36. unsigned COM4VEC = 0x0b;
  37. #else
  38. extern unsigned COM3BASE;
  39. extern unsigned COM4BASE;
  40. extern char IRQ3;
  41. extern char IRQ4;
  42. extern unsigned COM3VEC;
  43. extern unsigned COM4VEC;
  44. #endif
  45.  
  46. /*
  47. **    special control characters
  48. */
  49. #define    XON        0x11
  50. #define    XOFF    0x13
  51.  
  52. /*
  53. **    8250 register defines (offsets from base)
  54. */
  55. #define    THREG    0                /* transmit hold register */
  56. #define RDREG    0                /* input data register */
  57. #define LSBDIV    0                /* least sig. byte of baud rate divisor */
  58. #define MSBDIV    1                /* most sig, only when line ctl bit 7 = 1 */
  59. #define IEREG    1                /* interrupt enable register */
  60. #define IIDREG    2                /* interrupt ID register */
  61. #define LCREG    3                /* line control register */
  62. #define MCREG    4                /* modem control register */
  63. #define LSREG    5                /* line status register */
  64. #define MSREG    6                /* modem status register */
  65.  
  66. /*
  67. **    PARITY SETTINGS used in conjunction with above
  68. */
  69. #define    NPARITY    0x00            /* no parity */
  70. #define OPARITY    0x08            /* odd parity */
  71. #define EPARITY    0x18            /* even parity */
  72. #define    MPARITY    0x28            /* mark parity */
  73. #define SPARITY    0x38            /* space parity */
  74.  
  75. /*
  76. **    DATA and STOP BIT settings
  77. */
  78. #define BIT5    0x00            /* 5 data bits */
  79. #define BIT6    0x01            /* 6 data bits */
  80. #define BIT7    0x02            /* 7 data bits */
  81. #define BIT8    0x03            /* 8 data bits */
  82. #define STOP1    0x00            /* 1 stop bit */
  83. #define STOP2    0x04            /* 2 stop bit */
  84.  
  85. /*
  86. **    Baud Rate Settings
  87. */
  88. #define B110    110
  89. #define    B300    300
  90. #define    B600    600
  91. #define B1200    1200
  92. #define    B2400    2400
  93. #define    B4800    4800
  94. #define    B9600    9600
  95. #define    B19200    19200
  96.  
  97. /*
  98. ** SPECIAL PURPOSE SETTINGS - internal use only
  99. */
  100. #define    BREAK_ON 0x40            /* enable transmitter break */
  101. #define    SETBAUD    0x80            /* enable access to baud rate divisor */
  102.  
  103. #define    DTR        0x01            /* turn on DTR modem signal */
  104. #define RTS        0x02            /* turn on RTS modem signal */
  105. #define    OUT2    0x08            /* enable OUT2 for interrupts */
  106. #define    LOOPBACK 0x10            /* enable loopback mode */
  107.  
  108. #define    RDINT    0x01            /* enable receive data int */
  109. #define    THREINT    0x02            /* enable transmit hold reg empty int */
  110. #define    BRKINT    0x04            /* enable break/error int */
  111. #define    MSTINT    0x08            /* enable modem change int */
  112.  
  113. #define NOPEND    0x01            /* no interrupts pending */
  114. #define INTMST    0x00            /* modem change int */
  115. #define    INTTHRE    0x02            /* THRE int */
  116. #define    INTRD    0x04            /* receive data int */
  117. #define    INTBRK    0x06            /* break/error int */
  118.  
  119. /*
  120. **    line status register values
  121. */
  122. #define    RDRDY    0x01            /* receive data ready */
  123. #define ORUNERR    0x02            /* over-run error */
  124. #define    PARERR    0x04            /* parity error */
  125. #define FRMERR    0x08            /* framing error */
  126. #define    BRKDET    0x10            /* break detect */
  127. #define THREMP    0x20            /* transmit hold reg empty */
  128. #define TSREMP    0x40            /* transmit shift reg empty */
  129. #define TIMEOUT    0x80            /* timeout */
  130.  
  131. /*
  132. **    modem status register values
  133. **        Bits 0 - 3 define which signal(s) have changed
  134. **                   with a value of 1 indicating a change has occurred
  135. **        Bits 4 - 7 indicate the current state of each of the 4 signals
  136. */
  137. #define    CTSCHG    0x01            /* delta CTS */
  138. #define DSRCHG    0x02            /* delta DSR */
  139. #define    RICHG    0x04            /* delta RI */
  140. #define    DCDCHG    0x08            /* delta DCD */
  141. #define    CTS        0x10            /* Clear To Send */
  142. #define DSR        0x20            /* Data Set Ready */
  143. #define RI        0x40            /* Ring Indicator */
  144. #define DCD        0x80            /* Data Carrier Detect */
  145.  
  146. /*
  147. ** defines to resolve differences between MSC and TURBOC
  148. ** semantics
  149. */
  150. #ifdef M_I86
  151. #define IVPTR(x) void (interrupt far *x)()
  152. #define getvect(x) _dos_getvect(x)
  153. #define setvect(x,y) _dos_setvect(x,y)
  154. #define enable _enable
  155. #define disable _disable
  156. #define inportb(x) inp(x)
  157. #define outportb(x,y) outp(x,y)
  158.  
  159. /*
  160. ** memory model compatability
  161. */
  162.  
  163. #ifdef M_I86CM
  164. #define USEHUGE
  165. #endif
  166.  
  167. #ifdef M_I86LM
  168. #define USEHUGE
  169. #endif
  170. #endif
  171.  
  172. #ifdef __TURBOC__
  173. #ifdef __COMPACT__
  174. #define USEHUGE
  175. #endif
  176.  
  177. #ifdef __LARGE__
  178. #define USEHUGE
  179. #endif
  180.  
  181. #define IVPTR(x) void interrupt (*x)()
  182. #endif
  183.  
  184. typedef    struct
  185. {
  186.     IVPTR(orgvect);             /* original vector */
  187.     unsigned    orgirq;            /* original irq settings */
  188.     unsigned    baseport;        /* baseline port */
  189.     unsigned    pvector;        /* int vector for port */
  190.     unsigned    pirq;            /* port int req mask */
  191.     volatile unsigned mdmstat;    /* current modem status */
  192.     unsigned    mdmctlr;        /* current modem control values */
  193.     volatile unsigned lasterr;    /* last error return */
  194.     volatile unsigned brkrecd;  /* break was detected */
  195.     unsigned    intmask;        /* current active ints */
  196.     char        *inbuff;        /* input ring buffer */
  197.     char        *inbuffend;        /* internal calcs */
  198.     int         inbuflen;        /* size of buffer */
  199.     volatile int inbufcnt;        /* chars in buffer now */
  200.     int            inbufmrk;        /* trigger point for xoff */
  201.     volatile char *inhead;        /* pointer to insert */
  202.     volatile char *intail;        /* pointer to remove */
  203.     int            xstate;            /* TRUE if XON/XOFF active */
  204.     volatile int inxrecd;        /* TRUE if XOFF rec'd */
  205.     volatile int outxsent;        /* TRUE if XOFF sent */
  206.     char        *outbuff;        /* output ring buffer */
  207.     char        *outbuffend;    /* internal calcs */
  208.     int            outbuflen;        /* size of buffer */
  209.     volatile int outbufcnt;        /* chars in buffer now */
  210.     volatile char *outhead;        /* pointer to insert */
  211.     volatile char *outtail;        /* pointer to remove */
  212.     int        rch;        /* port's input char buffer */
  213. } COMM;
  214.  
  215. #include "litecomm.fns"
  216.  
  217. #define LITECOMM_H    1
  218. #endif
  219.