|
|
1.1 root 1: /*
2: * PC_com.h
3: *
4: * function and structure definitions used external to PC_com.c
5: *
6: * copyright 1992 by Microsoft Corporation
7: * portions copyright 1991 by Insignia Solutions Ltd., used by permission.
8: *
9: * revision history:
10: * 24-Dec-1992 John Morgan: written based on com.h from Insignia Solutions
11: *
12: */
13:
14: #define NUM_SERIAL_PORTS 4
15:
16: typedef unsigned tAdapter;
17: #define INVALID_UART ((tAdapter) ~0)
18: #define adapter_for_port(port) \
19: (((port & 0x3F8) == 0x3F8) ? COM1 : \
20: ((port & 0x3F8) == 0x2F8) ? COM2 : \
21: ((port & 0x3F8) == 0x3E8) ? COM3 : \
22: ((port & 0x3F8) == 0x2E8) ? COM4 : INVALID_UART)
23:
24: #include "UART.h"
25:
26: typedef struct
27: {
28: BUFFER_REG rx_buff_reg;
29: DIVISOR_LATCH divisor_latch;
30: INT_ENABLE_REG int_enable_reg;
31: LINE_CONTROL_REG line_control_reg;
32: MODEM_CONTROL_REG modem_control_reg;
33: LINE_STATUS_REG line_status_reg;
34: MODEM_STATUS_REG modem_status_reg;
35: BYTE scratch; /* scratch register */
36:
37: MODEM_STATUS_REG last_modem_status_value;
38: BOOLEAN modem_status_changed;
39: BOOLEAN divisor_latch_state;
40: BOOLEAN baud_rate_changed;
41:
42: BOOLEAN break_state; /* either OFF or ON */
43:
44: BYTE modem_ctrl_state;
45: BOOLEAN loopback_state; /* either OFF or ON */
46: BOOLEAN out2_state; /* either OFF or ON */
47:
48: BOOLEAN receiver_line_status_interrupt_state;
49: BOOLEAN data_available_interrupt_state;
50: BOOLEAN tx_holding_register_empty_interrupt_state;
51: BOOLEAN modem_status_interrupt_state;
52: BOOLEAN interrupt_line_state;
53:
54: BYTE hw_interrupt_priority;
55: BYTE com_baud_ind;
56: BOOLEAN had_first_read;
57:
58: } UART_STATE;
59:
60:
61: extern void com_init( tAdapter );
62: extern void com_close( tAdapter );
63: extern void com_reset( tAdapter );
64:
65: extern void com_flush_printer( tAdapter );
66:
67: extern void com_inb( WORD, BYTE * );
68: extern void com_outb( WORD, BYTE );
69:
70: extern void com_recv_char( tAdapter );
71: extern void com_modem_change( tAdapter );
72:
73: extern void com_int_data( tAdapter, int *, int * );
74:
75: extern void clear_tbr_flag( UART_STATE * );
76: extern void set_modem_control( tAdapter );
77:
78: extern void raise_rls_interrupt( UART_STATE * );
79: extern void raise_rda_interrupt( UART_STATE * );
80: extern void raise_ms_interrupt( UART_STATE * );
81: extern void raise_thre_interrupt( UART_STATE * );
82:
83: #if 0
84: extern BOOL check_rda_interrupt( UART_STATE * );
85: #endif
86: #define check_rda_interrupt(pUART) ((pUART)->data_available_interrupt_state)
87:
88: #define COM1 0
89: #define COM2 1
90: #define COM3 2
91: #define COM4 3
92:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.