home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / communic / encom100 / encom.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-07  |  21.0 KB  |  489 lines

  1. /****************************************************************************/
  2. /*                                                                                                                                                    */
  3. /* ENCOM.H                                                                                                                                     */
  4. /*                                                                                                                                                    */
  5. /* This is the main header for ENCOM, containing all the defines, macros,      */
  6. /* typedefs and prototypes for the library.                                                                    */
  7. /*                                                                                                                    Kevin Huck            */
  8. /*                                                                                                                    Boyd Gafford        */
  9. /*                                                                                                                    01/23/92                */
  10. /****************************************************************************/
  11. #include <time.h>
  12. #include <conio.h>
  13. #ifndef WN_POPUP
  14.     #ifdef M_I86
  15.     #include <stddef.h>
  16.     #include <sys\types.h>
  17.     #pragma pack(1)
  18.     #define setmem(p,c,v)                memset((p),(v),(c))
  19.     #define movmem(s,d,c)                memmove((d),(s),(c))
  20.     #define getvect(i)          _dos_getvect(i)
  21.     #define setvect(i,hdlr)     _dos_setvect(i,hdlr)
  22.     #define enable              _enable
  23.     #define disable             _disable
  24.     #endif
  25. typedef unsigned char uchar;
  26. typedef unsigned int  uint;
  27. typedef unsigned long ulong;
  28. #endif
  29.  
  30. #ifdef M_I86                                                    /* prevents compatibility problems  */
  31. #define outbyte outp                    /* even though Borland has outp,inp */
  32. #define inbyte  inp
  33. #define outword outpw
  34. #define inword  inpw
  35. #else
  36. #define outbyte outportb
  37. #define inbyte  inportb
  38. #define outword outport
  39. #define inword  inport
  40. #endif
  41. typedef unsigned short ushort;
  42.  
  43. extern int   Tics_per_sec;
  44. extern char  Pause_char, Clear_rx_char, Clear_tx_char;
  45. extern uchar Encrypt_char, End_flag;
  46.  
  47. /*---------------------- common globals with UltraWin ----------------------*/
  48. #if defined(WN_POPUP) || defined(ENCOM)
  49. extern int                    (*Idle_func)();                        /* global function pointer        */
  50. extern ulong T_cnt, T_hi;
  51. extern int Counter, Clock_high;
  52. extern int        Uw_timers[4];               /* user timers-decrement to 0 */
  53. extern int        Sys_timers[2], Sound_timer;    /* system/sound timers                */
  54. extern int        Clock_init;                                 /* 1 if we have clock vector    */
  55. extern int        Sound_on;                                     /* 1 when sound is on                    */
  56. extern ulong      Tics;                                                /* total clock interrupts            */
  57.  
  58. #else
  59.  
  60. int                 (*Idle_func)();
  61. ulong          T_cnt, T_hi;
  62. int              Counter, Clock_high;
  63. int        Uw_timers[4];
  64. int        Sys_timers[2], Sound_timer;
  65. int        Clock_init;
  66. int        Sound_on;
  67. ulong      Tics;
  68. #endif
  69.  
  70.  
  71. /*-------------------------- crc definitions -------------------------------*/
  72. #define CRC_UNDEF   0
  73. #define CRC_FORWARD 1
  74. #define CRC_REVERSE 2
  75.  
  76. #define CRCCITT     0x1021
  77. #define CRCCITT_REV 0x8408
  78. #define CRC16       0x8005
  79. #define CRC16_REV   0xa001
  80.  
  81. #define QUOTE_FLAG   0x88
  82. #define QUOTE_MASK   0x11
  83.  
  84. #define MAX_MSG_SIZE 512
  85.  
  86. #define END_FLAG     0x02
  87.  
  88. /*---------------------- constant definitions ------------------------------*/
  89. #define CNTRL 0x43                                                                    /* clock port addresses */
  90. #define TIMER 0x40
  91.  
  92.  
  93. #define HEAD_ROOM        0x8000L        /* 32K memory head room space for allocation    */
  94.  
  95. #define SEC_1                18                /* number of clock tics in 1 second                        */
  96.  
  97. #define ON       1
  98. #define OFF      0
  99.  
  100. #define CRC_INIT 0xffff
  101. #define CRC_FCS  0xf0b8
  102.  
  103. #define SOH    0x01
  104. #define STX    0x02
  105. #define ETX    0x03
  106. #define EOT    0x04
  107. #define SYN    0x16
  108. #define CTRL_Z 26
  109.  
  110. #define XON_CHAR   17
  111. #define XOFF_CHAR  19
  112. #define XON_ANY    256
  113. #define XWAIT             1
  114. #define XRELEASE   0
  115.  
  116. #define NONE      'N'
  117. #define ODD       'O'
  118. #define EVEN      'E'
  119. #define MARK      'M'
  120. #define SPACE     'S'
  121.  
  122. #define MAX_PORTS  4
  123. #define COM1             0
  124. #define COM2             1
  125. #define COM3             2
  126. #define COM4             3
  127.  
  128. #define RX         0x01
  129. #define TX         0x02
  130.  
  131. #define HALF_DUPLEX 0
  132. #define FULL_DUPLEX 1
  133. #define HS_RTS_CTS  2
  134.  
  135. /*-------------------------- uart type defines -----------------------------*/
  136. #define NO_UART  0
  137. #define ID_8250  1
  138. #define ID_16450 2
  139. #define ID_16550 3
  140.  
  141. /*-------------------------- 16650 FIFO control ----------------------------*/
  142. #define FIFO_OFF      0x00                                        /* 16550 fifo enable bit off  */
  143. #define FIFO_ON       0x01                                        /* 16550 fifo enable bit on      */
  144. #define RX_FIFO_RESET 0x02                                        /* 16550 rx fifo reset                */
  145. #define TX_FIFO_RESET 0x04                                        /* 16550 tx fifo reset                */
  146. #define RX_TRIG_1     0x00                    /* 16550 rx fifo trigger 1    */
  147. #define RX_TRIG_4     0x40                                      /* 16550 rx fifo trigger 4    */
  148. #define RX_TRIG_8     0x80                                        /* 16550 rx fifo trigger 8    */
  149. #define RX_TRIG_14    0xc0                                        /* 16550 rx fifo trigger 14   */
  150.  
  151. /*-------------------- line status register bit masks ----------------------*/
  152. #define DR          0x01                            /* data ready                                                         0    */
  153. #define OE          0x02                            /* overrun error                                                 1    */
  154. #define PE          0x04                            /* parity error                                                  2    */
  155. #define FE          0x08                            /* framing error                                                  3    */
  156. #define BI          0x10                            /* break interrupt                                             4    */
  157. #define THRE     0x20                            /* transmitter holding register empty         5    */
  158. #define TSRE     0x40                            /* transmitter shift   register empty         6    */
  159. #define F_ERR  0x80                            /* FIFO error (only for 16550)           7    */
  160.  
  161. /*-------------------- modem status register bit masks ---------------------*/
  162. #define DCTS      0x01                            /* delta 0 clear to send                                 0    */
  163. #define DDSR     0x02                            /* delta data set ready                                  1    */
  164. #define TERI      0x04                            /* trailing edge ring indicator                  2    */
  165. #define DDCD     0x08                            /* delta data carrier detect                         3    */
  166.  
  167. #define CTS         0x10                            /* clear to send                                               4    */
  168. #define DSR      0x20                            /* data set ready                        5    */
  169. #define RI       0x40                            /* ring indicator                        6    */
  170. #define DCD      0x80                            /* data carrier detect                   7    */
  171.  
  172. /*-------------------- modem control register bit masks --------------------*/
  173. #define DTR       0x01                            /* data terminal ready                                   0    */
  174. #define RTS       0x02                            /* request to send                                       1    */
  175. #define OUT1      0x04                            /* out 1                                 2    */
  176. #define OUT2      0x08                            /* out 2                                 3    */
  177. #define LOOP      0x10                            /* loop                                  4    */
  178.  
  179. /*--------------------- line control register bit masks --------------------*/
  180. #define DATA_BITS_5  0x00                /* data bit control    masks                                        */
  181. #define DATA_BITS_6  0x01
  182. #define DATA_BITS_7  0x02
  183. #define DATA_BITS_8  0x03
  184.  
  185. #define STOP_BITS_1  0x00                /* stop bit control    masks                                     */
  186. #define STOP_BITS_2  0x04
  187.  
  188. #define NO_PARITY    0x00                /* parity control masks                                            */
  189. #define ODD_PARITY   0x08
  190. #define EVEN_PARITY  0x18
  191. #define MARK_PARITY  0x28
  192. #define SPACE_PARITY 0x38
  193.  
  194. #define BREAK_CTRL   0x40            /* break control bit                                                */
  195. #define DLAB               0x80                /* divisor latch access bit                                    */
  196.  
  197. /*---------------------- interrupt enable bit masks ------------------------*/
  198. #define DR_IRQ   0x01                        /* data ready irq                           */
  199. #define THRE_IRQ 0x02                        /* transmitter holding register empty irq   */
  200. #define RLS_IRQ  0x04                        /* receiver line status irq                 */
  201. #define MS_IRQ   0x08                        /* modem status irq                         */
  202.  
  203. /*-------------------- interrupt identification masks ----------------------*/
  204. #define IIR_LSTAT 0x06                    /* serialization error or break             */
  205. #define IIR_RX    0x04                    /* received data                            */
  206. #define IIR_TX    0x02                    /* Transmit Buffer Empty                    */
  207. #define IIR_CTRL  0x00                    /* RS-232 input                             */
  208.  
  209. /*-------------------------- 8250 uart registers ---------------------------*/
  210. /*    {    0x3f8, 0x3f8, 0x3f9, 0x3fa, 0x3fb, 0x3fc, 0x3fd, 0x3fe, 0x3f8, 0x3f9, 0x3ff },*/
  211. #define RBR     0                   /* receiver buffer register (read only)             */
  212. #define THR  1                   /* transmitter holding register (write only) */
  213. #define IER  2                      /* interrupt enable register                         */
  214. #define IIR  3                   /* interrupt id register (read only)                    */
  215. #define FCR  3                   /* FIFO control for 16550 (write only)                */
  216. #define LCR  4                      /* line control register                     */
  217. #define MCR  5                      /* modem control register                    */
  218. #define LSR  6                      /* line status register                      */
  219. #define MSR  7                      /* modem status register                     */
  220. #define DLL     8                       /* divisor latch  (low - least significant)  */
  221. #define DLH  9                     /* divisor latch  (high - most significant)  */
  222. #define SCRATCH 10                         /* scratch pad register                                            */
  223.  
  224.  
  225. /*---------------------------- com port defines ----------------------------*/
  226. typedef struct port
  227. {
  228.     uchar  reg_save[12];                 /* saves all uart registers before init            */
  229.  
  230.     int   rx_on;                                 /* receiver on or off                                                */
  231.     uint  rx_read;                              /*    receive queue read  pointer                                */
  232.     uint  rx_write;                             /* recieve queue write pointer               */
  233.     uint  rx_cnt;                  /* # of bytes currently in receive queue            */
  234.     uint  rx_size;                             /* actual size of receive queue                            */
  235.     uint  rx_overflow;                     /* count of byte received when queue full        */
  236.     ulong rx_chars;                             /* receive character count                            */
  237.     uchar *rx_data;                             /* pointer to receive queue data area                */
  238.     uint  parity_errs;                     /* line status errors                                                */
  239.     uint  framing_errs;
  240.     uint  overrun_errs;
  241.     uint  break_cnt;
  242.     int   que_stat_flag;                 /* if 1, status is queued with each byte            */
  243.     uint  msg_cnt;                             /* number of messages (match_chars) rx'd        */
  244.     uchar encrypt_char;                     /* character to use for XOR encryption         */
  245.     uchar match_char;                         /* rx match char.  When rx'd, msg_cnt incs        */
  246.                                                              /* Only a call to get_msg decrements                    */
  247.  
  248.     int   tx_on;                                 /* transmitter on or off                                            */
  249.     uint  tx_read;                              /*    transmit queue read  pointer                            */
  250.     uint  tx_write;                             /* transmit queue write pointer              */
  251.     uint  tx_cnt;                /* # of bytes currently in transmit queue        */
  252.     uint  tx_size;                             /* actual size of transmit queue                            */
  253.     uint  tx_overflow;                     /* count of byte transmit when queue full        */
  254.     ulong tx_chars;                             /* transfer character count                                     */
  255.     uchar *tx_data;                             /* pointer to transmit queue data area                */
  256.  
  257.     int   uart_type;                         /* NO_UART, 8250, 16450, 16550                                */
  258.     int   fifos_enabled;                 /* are fifos enabled if 16550                                */
  259.     int   rx_trig_level;               /* rx trigger level, 1, 4, 8, or 14                    */
  260.     int   chan;                                     /* com port channel index (0 - MAX_PORTS-1)  */
  261.     int   *uart;                                 /* pointer to array of uart i/o addresses        */
  262.     long  baud;                                     /* port baud rate divisor                                        */
  263.     int     data_bits;                         /* number of data bits (5,6,7,8)                            */
  264.     int     stop_bits;                         /* number of stop bits    (1,2)                                    */
  265.     int     parity;                                 /* parity (NONE, ODD, EVEN, MARK, SPACE)            */
  266.     int   status;                                 /* 1 = in use, 0 = not in use                                */
  267.  
  268. #ifdef __cplusplus
  269.     void  interrupt far (*old_vect)(...);
  270. #else
  271.     void  (interrupt far *(old_vect))();
  272. #endif
  273.  
  274.     int   old_mask;                                            /* old com port interrupt mask                */
  275.     int   old_ier;                                            /* old interrupt id register                   */
  276.     int     vect_no;                                            /* uart com port vector number                */
  277.     int   mask;                         /* uart com port interrupt mask       */
  278.  
  279.     int   xon_xoff_mode;                                /* 1 if XON/XOFF handshaking enabled    */
  280.     int   rx_xstate;                                        /* 1 if XOFF sent                     */
  281.     int   tx_xstate;                                        /* 1 if XOFF received                 */
  282.     int   xon_char;                                         /* char to trigger XON, >= 256 if any    */
  283.     int   xoff_char;                                        /* char to trigger XOFF                                */
  284.     uint  highwater;                                        /* point where we send XOFF for rx        */
  285.     uint  lowwater;                     /* point where we send XON to release */
  286.  
  287.     int   rts_cts_mode;                                    /* 1 if RTS/CTS handshaking enabled        */
  288.     int   rts_cts_state;                                /* current RTS/CTS state (ON/OFF)            */
  289.  
  290.     int   dcd_mode;                     /* 1 if CD must be high to rx                    */
  291.     int   dcd_state;                                        /* current DCD state                                    */
  292.  
  293.     int   dsr_mode;                     /* 1 if DSR must be high to rx                */
  294.     int   dsr_state;                                        /* current DSR state                                    */
  295.  
  296.     int   sline_status;                                    /* static line status register                */
  297.     int   smodem_status;                                /* static modem status register                */
  298.  
  299.     int   edge_trigger;                                    /* for rare hardware incompatibility  */
  300.  
  301.     void  *usr_ptr;                               /* user expansion pointer                  */
  302. } PORT;
  303.  
  304.  
  305. /*--------------------------------- macros ---------------------------------*/
  306. #define lower(x, y)          (((x) < (y)) ? (x) : (y))
  307. #define upper(x, y)          (((x) > (y)) ? (x) : (y))
  308. #define lobyte(c)              (uchar) ((c) & 0x00ff)
  309. #define hibyte(c)              (uchar) ((c) >> 8)
  310. #define range(l,b,h)    ( (((b) >= (l)) && ((b) <= (h))) ? 1:0 )
  311. #define swap( a,b,c)      ( (c) = (a), (a) = (b), (b) = (c) )
  312.  
  313. #ifndef min
  314. #define min(x, y)              (((x) < (y)) ? (x) : (y))
  315. #define max(x, y)              (((x) > (y)) ? (x) : (y))
  316. #endif
  317.  
  318. /*------------------------------- com macros -------------------------------*/
  319. #define com_tx_cnt(cp)       ((cp)->tx_cnt)
  320. #define com_rx_cnt(cp)       ((cp)->rx_cnt)
  321. #define com_tx_free(cp)      ((cp)->tx_size - (cp)->tx_cnt)
  322. #define com_rx_free(cp)      ((cp)->rx_size - (cp)->rx_cnt)
  323. #define is_rx_empty(cp)      ((cp)->rx_cnt ? 1 : 0)
  324. #define is_rx_full(cp)       ((cp)->rx_size == (cp)->rx_cnt)
  325. #define is_tx_empty(cp)      ((cp)->tx_cnt ? 1 : 0)
  326. #define is_tx_full(cp)       ((cp)->tx_size == (cp)->tx_cnt)
  327.  
  328. #define set_encrypt(c, cp)     ((cp)->encrypt_char = c)
  329. #define set_match(c, cp)         ((cp)->match_char = c)
  330. #define init_msg(cp)                 (End_flag = (cp)->match_char, Encrypt_char = (cp)->encrypt_char)
  331.  
  332. #define msg_cnt(cp)                     ((cp)->msg_cnt)
  333. #define clear_msg_cnt(cp)    ((cp)->msg_cnt = 0)
  334.  
  335. #define set_que_status(x,cp) ((cp)->que_stat_flag = x)
  336. #define is_que_status(cp)    ((cp)->que_stat_flag)
  337.  
  338. /*----------------------------- flow control -------------------------------*/
  339. #define set_lowwater(l,cp)   ((cp)->lowwater = l)
  340. #define set_highwater(h,cp)  ((cp)->highwater = h)
  341. #define get_lowwater(cp)     ((cp)->lowwater)
  342. #define get_highwater(cp)    ((cp)->highwater)
  343.  
  344. #define set_cts_flow(x,cp)   ((cp)->rts_cts_mode = x)
  345.  
  346. #define is_cts_flow(cp)         ((cp)->rts_cts_mode)
  347. #define is_dcd_flow(cp)        ((cp)->dcd_mode)
  348. #define is_dsr_flow(cp)      ((cp)->dsr_mode)
  349. #define is_xon_flow(cp)           ((cp)->xon_xoff_mode)
  350.  
  351. #define cts_flow_state(cp)     ((cp)->rts_cts_state)
  352. #define dcd_flow_state(cp)      ((cp)->dcd_state)
  353. #define dsr_flow_state(cp)   ((cp)->dsr_state)
  354. #define xon_flow_state(cp)     ((cp)->xon_xoff_state)
  355.  
  356. /*----------------------- 16550 fifo control macro -------------------------*/
  357. #define fifo_enable(cp)   (com_fifo_ctrl( ON,FIFO_ON,(cp)),(cp)->fifos_enabled =  ON)
  358. #define fifo_disable(cp)  (com_fifo_ctrl(OFF,FIFO_ON,(cp)),(cp)->fifos_enabled = OFF)
  359. #define fifo_rx_reset(cp) (com_fifo_ctrl(ON,RX_FIFO_RESET,(cp)))
  360. #define fifo_tx_reset(cp) (com_fifo_ctrl(ON,TX_FIFO_RESET,(cp)))
  361.  
  362. #define is_fifo_enabled(cp)   ((cp)->fifos_enabled)
  363. #define get_trigger_level(cp) ((cp)->rx_trig_level)
  364.  
  365. /*------------------------------ modem macros ------------------------------*/
  366. #define modem_reset(cp)             modem_cmd("ATZ",-1,Tics_per_sec*2,(cp))
  367. #define modem_dial(s,cp)         modem_cmd(s,-1,Tics_per_sec*45,(cp))
  368. #define modem_answer(cp)         modem_cmd("ATA",-1,Tics_per_sec,(cp))
  369. #define modem_hangup(cp)         modem_cmd("+++~~~ATH0",-1,Tics_per_sec*5,(cp))
  370. #define modem_online(cp)                modem_cmd("ATO",-1,Tics_per_sec,(cp))
  371. #define modem_repeat(cp)           modem_cmd("A/",-1,Tics_per_sec,(cp))
  372. #define modem_speaker(x,cp)        modem_cmd("ATM",x,Tics_per_sec,(cp))
  373. #define modem_echo(x,cp)             modem_cmd("ATE",x,Tics_per_sec,(cp))
  374. #define modem_word_reply(x,cp)   modem_cmd("ATV",x,Tics_per_sec,(cp))
  375. #define modem_extend_reply(x,cp) modem_cmd("ATX",x,Tics_per_sec,(cp))
  376. #define modem_duplex(x,cp)           modem_cmd("ATF",x,Tics_per_sec,(cp))
  377. #define modem_quiet(x,cp)                modem_cmd("ATQ",x,Tics_per_sec,(cp))
  378.  
  379. /*-------------------- current modem status macros -------------------------*/
  380. #define is_dcd(cp)           ((inbyte((cp)->uart[MSR]) & DCD) ? 1 : 0)
  381. #define is_cts(cp)           ((inbyte((cp)->uart[MSR]) & CTS) ? 1 : 0)
  382. #define is_dsr(cp)           ((inbyte((cp)->uart[MSR]) & DSR) ? 1 : 0)
  383. #define is_ri(cp)               ((inbyte((cp)->uart[MSR]) & RI ) ? 1 : 0)
  384.  
  385. /*-------------------- static modem status macros --------------------------*/
  386. #define clear_mstatus(cp)          ((cp)->modem_status = 0)
  387. #define is_sdcd(cp)          (((cp)->smodem_status & DCD)  ? 1 : 0)
  388. #define is_scts(cp)          (((cp)->smodem_status & CTS)  ? 1 : 0)
  389. #define is_sdsr(cp)          (((cp)->smodem_status & DSR)  ? 1 : 0)
  390. #define is_sri(cp)           (((cp)->smodem_status & RI )  ? 1 : 0)
  391.  
  392. #define is_sddcd(cp)         (((cp)->smodem_status & DDCD) ? 1 : 0)
  393. #define is_sdcts(cp)         (((cp)->smodem_status & DCTS) ? 1 : 0)
  394. #define is_sddsr(cp)         (((cp)->smodem_status & DDSR) ? 1 : 0)
  395. #define is_sdri(cp)          (((cp)->smodem_status & DRI)  ? 1 : 0)
  396.  
  397. /*-------------------- current line status macros --------------------------*/
  398. #define is_overrun_err(cp)   ((inbyte((cp)->uart[LSR]) & OE)  ? 1 : 0)
  399. #define is_parity_err(cp)    ((inbyte((cp)->uart[LSR]) & PE)  ? 1 : 0)
  400. #define is_framing_err(cp)   ((inbyte((cp)->uart[LSR]) & FE)  ? 1 : 0)
  401. #define is_break(cp)               ((inbyte((cp)->uart[LSR]) & BI)  ? 1 : 0)
  402.  
  403. /*-------------------- static line status macros ---------------------------*/
  404. #define clear_lstatus(cp)          ((cp)->sline_status = 0)
  405. #define is_soverrun_err(cp)  (((cp)->sline_status & OE)  ? 1 : 0)
  406. #define is_sparity_err(cp)   (((cp)->sline_status & PE)  ? 1 : 0)
  407. #define is_sframing_err(cp)  (((cp)->sline_status & FE)  ? 1 : 0)
  408. #define is_sbreak(cp)               (((cp)->sline_status & BI)  ? 1 : 0)
  409.  
  410. /*------------------ current modem control macros --------------------------*/
  411. #define is_dtr(cp)           ((inbyte((cp)->uart[MCR]) & DTR)  ? 1 : 0)
  412. #define is_rts(cp)           ((inbyte((cp)->uart[MCR]) & RTS)  ? 1 : 0)
  413. #define is_out1(cp)          ((inbyte((cp)->uart[MCR]) & OUT1) ? 1 : 0)
  414. #define is_out2(cp)          ((inbyte((cp)->uart[MCR]) & OUT2) ? 1 : 0)
  415. #define is_loop(cp)          ((inbyte((cp)->uart[MCR]) & LOOP) ? 1 : 0)
  416.  
  417.  
  418. /*------------------------- en_main.c prototypes ---------------------------*/
  419. void com_isr( register PORT *cp );
  420. #ifdef __cplusplus
  421. void interrupt far com_isra(...);
  422. void interrupt far com_isrb(...);
  423. PORT *com_vect_init( void interrupt far (*com_isrp)(...), PORT *cp );
  424. #else
  425. void interrupt far com_isra();
  426. void interrupt far com_isrb();
  427. PORT *com_vect_init( void (interrupt far *com_isrp)(), PORT *cp );
  428. #endif
  429. int  com_port_create( int chan, long baud, int parity, int data_bits,
  430.                                             int stop_bits, int rx_size, int tx_size, PORT *cp );
  431. int  com_port_init( long baud, int parity, int data_bits, int stop_bits,
  432.                                         PORT *cp );
  433. void com_port_destroy( PORT *cp );
  434. void com_clear_que( int mode, PORT *cp );
  435. int  com_getc( PORT *cp );
  436. int  com_putc( int c, PORT *cp );
  437. void prime_tx( PORT *cp );
  438. int  force_tx( int c, PORT *cp );
  439. int  com_puts( uchar *s, PORT *cp );
  440. int  check_rts( PORT *cp );
  441. int  com_irq_ctrl( int state, int mask, PORT *cp );
  442. int  com_232_ctrl( int state, int mask, PORT *cp );
  443. void read_regs( uchar *s, PORT *cp );
  444. void write_regs( uchar *s, PORT *cp );
  445.  
  446. /*------------------------- en_supp.c prototypes ---------------------------*/
  447. int  com_getc_qty( uchar *data, uint qty, PORT *cp );
  448. int  com_gets( uchar *data, uchar c, uint qty, PORT *cp );
  449. int  check_xon( PORT *cp );
  450. int  com_putc1( int c, PORT *cp );
  451. int  com_putc_qty( uchar *data, uint qty, PORT *cp );
  452. void send_break( int t, PORT *cp );
  453. int  set_xon_flow( int state, int xon_char, int xoff_char,
  454.                                      uint highwater, uint lowwater, PORT *cp );
  455. int  set_dcd_flow( int state, PORT *cp );
  456. int  set_dsr_flow( int state, PORT *cp );
  457. void suspend( int t );
  458. int  wait_for_rx( int t, uint cnt, PORT *cp );
  459. int  wait_for_no_rx( int t, PORT *cp );
  460. char *modem_cmd( char *cmd_str, int p, int t, PORT *cp );
  461. int com_fifo_ctrl( int state, int mask, PORT *cp );
  462. int com_fifo_trigger( int level, PORT *cp );
  463.  
  464. /*------------------------- en_supp.c prototypes ---------------------------*/
  465. void encrypt_msg( uchar *msg, uint len );
  466. uint calc_crc( uchar *msg, uint len );
  467. uint fmt_msg( uchar *s, uchar *d, uint len );
  468. uint defmt_msg( uchar *src, uchar *dest );
  469. uint get_msg( uchar *dest, PORT *cp );
  470. #ifdef __cplusplus
  471. void mk_crc_tbl( ushort init, ushort poly, ushort (*crcfn)(...) );
  472. #else
  473. void mk_crc_tbl( ushort init, ushort poly, ushort (*crcfn)() );
  474. #endif
  475. ushort gen_crc(ushort data, ushort genpoly, ushort accum);
  476. ushort gen_crc_rev(ushort data, ushort genpoly, ushort accum);
  477.  
  478. /*-------------------------- en_kbd.c prototypes ---------------------------*/
  479. void init_ctrlc_hdlr();
  480. void end_ctrlc_hdlr();
  481. void init_clock( uint speed );
  482. void end_clock();
  483. void clock_speed( uint speed );
  484. void tone( uint freq, int dur );
  485. void sound_off();
  486. void set_idle_func( int (*func_ptr)() );
  487.  
  488. /**** END OF FILE ****/
  489.