108 lines
5.0 KiB
C
108 lines
5.0 KiB
C
/*
|
|
+----------------------------------------------------+
|
|
| Thunderbird Software |
|
|
+----------------------------------------------------+
|
|
| Filespec : Serial.c |
|
|
| Date : October 24, 1991 |
|
|
| Time : 15:03 |
|
|
| Revision : 1.1 |
|
|
| Update : August 29, 1994 |
|
|
| Update : March 12, 1995 by Bob Stout |
|
|
+----------------------------------------------------+
|
|
| Programmer: Scott Andrews |
|
|
| Address : 5358 Summit RD SW |
|
|
| City/State: Pataskala, Ohio |
|
|
| Zip : 43062 |
|
|
+----------------------------------------------------+
|
|
| Released to the Public Domain |
|
|
+----------------------------------------------------+
|
|
*/
|
|
|
|
#ifndef SERIAL__H
|
|
#define SERIAL__H
|
|
|
|
#include "extkword.h"
|
|
#include "pchwio.h"
|
|
|
|
#define SerInBufSize 4096 /* Size of input buffer */
|
|
#define SerOutBufSize 512 /* Size of output buffer */
|
|
|
|
/* 8250 registers */
|
|
|
|
#define REC 0 /* Uart receive reg. */
|
|
#define XMIT 0 /* Uart transmit reg. */
|
|
#define INT_EN 1 /* Uart int. enable reg. */
|
|
#define INT_ID 2 /* Uart int. ident. reg. */
|
|
#define LINE_CNTRL 3 /* Uart line control reg. */
|
|
#define MODEM_CNTRL 4 /* Uart modem control reg. */
|
|
#define LINE_STATUS 5 /* Uart line status reg. */
|
|
#define MODEM_STATUS 6 /* Uart modem status reg. */
|
|
#define BAUD_LSB 0 /* Uart baud divisor reg. */
|
|
#define BAUD_MSB 1 /* Uart baud divisor reg. */
|
|
|
|
#define NONE 0 /* Handshake param none */
|
|
#define HDW 1 /* Handshake param hardware */
|
|
#define XON 2 /* Handshake param software */
|
|
|
|
/* Interrupt enable register */
|
|
|
|
#define RX_INT 0x01 /* Receive interrupt mask */
|
|
#define TBE_INT 0x02 /* Transmit buffer empty mask */
|
|
#define ERR_INT 0x04 /* Error interrupt mask */
|
|
#define RS_INT 0x08 /* Line interrupt mask */
|
|
|
|
/* Interrupt id register */
|
|
|
|
#define OUT2 0x08 /* Out 2 line */
|
|
#define DTR 0x01 /* DTR high */
|
|
#define RTS 0x02 /* RTS high */
|
|
#define CTS 0x10
|
|
#define DSR 0x20
|
|
#define XMTRDY 0x20
|
|
#define TXR 0 /* Transmit register (WRITE) */
|
|
|
|
#if !defined TRUE /* Define boolean true/false */
|
|
#define FALSE 0
|
|
#define TRUE !FALSE
|
|
#endif
|
|
|
|
extern void (INTERRUPT FAR *oldvector_serial )( void);
|
|
|
|
extern int ComBase; /* Comm port address */
|
|
extern int IrqNum; /* Comm interrupt request */
|
|
|
|
typedef struct /* Save existing comm params */
|
|
{ int int_enable; /* old interrupt enable reg value*/
|
|
int line; /* " line control " " */
|
|
int modem; /* old modem control " " */
|
|
int baud_lsb; /* old baud rate divisor LSD */
|
|
int baud_msb; /* " " " " MSD */
|
|
int int_cntrl; /* old PIC interrupt reg value */
|
|
} OLD_COMM_PARAMS;
|
|
extern OLD_COMM_PARAMS old_comm_params;
|
|
|
|
typedef struct
|
|
{ int line; /* Uart line status reg. */
|
|
int modem; /* Uart mode status reg. */
|
|
int intrupt; /* Uart interrupt reg. */
|
|
int handshake; /* Handshake status */
|
|
} COMM_STATUS; /* status, updated, handler */
|
|
extern COMM_STATUS comm_status;
|
|
|
|
int OpenComPort ( char Port ); /*setup comm for usage */
|
|
void InitComPort ( char Baud[], char Databits, char Parity, char Stop );
|
|
void CloseComPort ( void ); /* Restore comm port */
|
|
void DropDtr ( void ); /* Lower DTR */
|
|
void RaiseDtr ( void ); /* Raise DTR */
|
|
int ComRecChar ( void ); /* Fetch character from rcv buf*/
|
|
|
|
int ComSendChar ( char character ); /* Put char into xmit buffer */
|
|
int ComSendString ( char *string );
|
|
int ComSendData ( char *buffer, unsigned buffer_length );
|
|
int ComStatus ( void ); /* Fetch comm status */
|
|
void INTERRUPT FAR serial ( void ); /* interrupt handler */
|
|
|
|
/* End of Serial.H */
|
|
|
|
#endif /* SERIAL__H */
|