Category : OS/2 Files
Archive   : DD_IN_C.ZIP
Filename : SERIAL.H

 
Output of file : SERIAL.H contained in archive : DD_IN_C.ZIP
/* serial.h
include file for sample driver
*/

#define SAMPLE_CAT 0x90 /* category for DosDevIOCtl */
#define CR 0x0d
#define MIN_TIMEOUT 5000L /* 5 second timeout */
#define UART_PORT_ADDRESS 0x220

/* driver utilized structures */

typedef struct _DCBINFO { /* DCB storage for this driver */
USHORT usWriteTimeout; /* timeouts for Block calls */
USHORT usReadTimeout; /* real Block call timeout */
UCHAR fbCtlHndShake; /* OS/2 std data follows */
UCHAR fbFlowReplace;
UCHAR fbTimeout;
UCHAR bErrorReplacementChar;
UCHAR bBreakReplacementChar;
UCHAR bXONChar;
UCHAR bXOFFChar;
}
DCBINFO;

typedef struct _MODEMSTATUS {
UCHAR fbModemOn;
UCHAR fbModemOff;
}
MODEMSTATUS;

/* standard OS/2 structure */

typedef struct _LINECONTROL {
UCHAR bDataBits;
UCHAR bParity;
UCHAR bStopBits;
UCHAR fbTransBreak;
} LINECONTROL;

/* queue info returned by driver */

typedef struct _QUEUE {
USHORT cch;
USHORT cb;
}
QUEUE;

/* this structure holds the register values for the 82510 uart */

typedef struct _UARTREGS {

/* bank 0, 8250/16450 compatibility bank */

UCHAR Txd_0; /* transmit/read data FIFO */
UCHAR Ger; /* general enable register */
UCHAR Bal; /* baud rate generator A low */
UCHAR Bah; /* baud rate generator A high */
UCHAR Bank_0; /* select bank 0 */
UCHAR Lcr; /* line control register */
UCHAR Mcr_0; /* modem control register */
UCHAR Lsr; /* line status register */
UCHAR Msr; /* modem status register */
UCHAR Acr0; /* character match value 0 */

/* bank 1, general work bank */

UCHAR Txd_1; /* transmit/read data FIFO */
UCHAR Txf; /* 9th bit transmit register */
UCHAR Bank_1; /* select bank 1 */
UCHAR Tmcr; /* start timer A/B command register */
UCHAR Mcr_1; /* modem control register for bank 1 */
UCHAR Rcm; /* receiver command register */
UCHAR Tcm; /* transmit command register */
UCHAR Icm; /* internal command register */

/* bank 2, general configuration bank */

UCHAR Fmd; /* FIFO threshold register */
UCHAR Bank_2; /* select bank 2 */
UCHAR Tmd; /* transmit mode register */
UCHAR Imd; /* internal mode register */
UCHAR Acr1; /* character match value 1 */
UCHAR Rie; /* receiver interrupt enable register */
UCHAR Rmd; /* receive mode register */

/* bank 3, modem configuration bank */

UCHAR Clcf; /* clocks configure register */
UCHAR Bacf; /* baud rate generator A config. reg. */
UCHAR Bbl; /* baud rate generator B low value */
UCHAR Bbh; /* baud rate generator B high value */
UCHAR Bank_3; /* selct bank 3 */
UCHAR Bbcf; /* baud rate generator B config. reg. */
UCHAR Pmd; /* I/O mode pin register */
UCHAR Mie; /* modem interrupt enable register */
UCHAR Tmie; /* timer interrupt enable register */

} UARTREGS;
/* this structure holds the start and end message times for an adam message*/

typedef struct _DATETIME { /* date, adam driver/server specific */
UCHAR hours;
UCHAR minutes;
UCHAR seconds;
UCHAR hundredths;
UCHAR day;
UCHAR month;
USHORT year;
short timezone;
UCHAR weekday;

} DATETIME;
typedef DATETIME far *PDATETIME;

/* this structure holds all the driver and uart specific data for each
of the four or eight 82510 uarts.
*/

typedef struct _UART {
UARTREGS uart_regs; /* 82510 register structures */
LINECONTROL line_control; /* OS/2 line control struct */
MODEMSTATUS modem_status; /* OS/2 modem status struct */
DCBINFO dcb_info; /* our special DCBINFO struct */
UCHAR opencount; /* number of opens on a device */
unsigned int savepid; /* saved PID of app that opened device */
PREQPACKET ReadQHead; /* head pointer for linked req. queue */
PREQPACKET WriteQHead; /* head pointer for linked req. queue */
PREQPACKET ThisReadRP; /* pointer to current read req. pkt. */
PREQPACKET ThisWriteRP; /* pointer to current write req. pkt. */
ULONG ReadID; /* used for thread ID for read Block */
ULONG WriteID; /* used for thread ID for write Block */
USHORT baud_rate; /* current baud rate for port */
USHORT first_flag; /* for timeout logic */
ULONG tickcount; /* used for driver Block call timeout */
UCHAR inchar; /* current char read from uart FIFO */
UCHAR outchar; /* current output character */
UCHAR savechar; /* last char transmitted for bus cont. */
UCHAR tempchar; /* temp character storage */
ULONG timeout; /* current driver timeout value */
int temp; /* misc temp storage */
int temp_port; /* used to hold port temporarily */
int com_error_word; /* OS/2-like, holds last comm error */
int com_event_word; /* what happened last */
char com_status_word; /* what's happening now */
USHORT transmit_data_status; /* xmit status */
char modem_input_signals; /* status of modem signals */
char modem_output_signals;/* set modem signals */
int port; /* current port */
QUEUE receive_queue; /* receive queue data returned to app */
QUEUE transmit_queue; /* xmit queue data returned to app */
CHARQUEUE rxadam_queue; /* OS/2 circular receive queue */
CHARQUEUE txadam_queue; /* OS/2 circular transmit queue */

} UART;




  3 Responses to “Category : OS/2 Files
Archive   : DD_IN_C.ZIP
Filename : SERIAL.H

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/