www.pudn.com > norti2.0 > NOSIO.H
/******************************************************************************
* NORTi対応 シルアル入出力関数ヘッダ *
* *
* File name : nosio.h *
* Copyright (c) Miyazaki System Planning Office. 1993-1995 *
* *
* 93-04-14 作成 *
* 93-05-16 Ver1.13β *
* 94-01-05 Ver1.14 *
* 95-06-15 Ver1.20 *
* 95-08-14 T_SIOFP の定義を nosio.c へ移す *
******************************************************************************/
#ifndef NOSIO_H
#define NOSIO_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef LSI_C80
#ifndef const
#define const /**/
#endif
#endif
/* error code */
#define EV_SIOINI 1 /* 未初期化 */
#define EV_SIOOVF 2 /* 受信buffer overflow */
#define EV_SIOPTY 3 /* parity error */
#define EV_SIOORN 4 /* overrun error */
#define EV_SIOFRM 5 /* framing error */
#define EV_SIOBRK 6 /* break検出 */
/* 機能code */
#define TSIO_RXE 0x01 /* 受信enable */
#define TSIO_RXD 0x02 /* 受信disable */
#define TSIO_TXE 0x04 /* 送信enable */
#define TSIO_TXD 0x08 /* 送信disable */
#define TSIO_RTSON 0x10 /* RTS信号ON */
#define TSIO_RTSOFF 0x20 /* RTS信号OFF */
#define TSIO_DTRON 0x40 /* DTR信号ON */
#define TSIO_DTROFF 0x80 /* DTR信号OFF */
#define TSIO_RXCLR 0x0100 /* 受信buffer clear */
#define TSIO_TXCLR 0x0200 /* 送信buffer clear */
#define TSIO_SBON 0x0400 /* break送信ON */
#define TSIO_SBOFF 0x0800 /* break送信OFF */
/* serial入出力状態packet */
typedef struct t_sios
{
UB siostat; /* serial入出力status */
#define TSIO_CD 0x01 /* 受信career検出 */
#define TSIO_CTS 0x02 /* CTS信号ON(1)/OFF(0) */
#define TSIO_TXEMP 0x04 /* 送信buffer空 */
#define TSIO_PE 0x08 /* parity error */
#define TSIO_OE 0x10 /* overrun error */
#define TSIO_FE 0x20 /* framing error */
#define TSIO_BD 0x40 /* break状態検出 */
#define TSIO_DSR 0x80 /* DSR信号ON(1)/OFF(0) */
UB rxchr; /* 受信bufferの先頭の文字 */
UH rxlen; /* 受信bufferのdata長 */
UH frbufsz; /* 送信bufferのspace size */
UH eotcnt; /* 受信bufferの終端文字個数 */
} T_SIOS;
/* 関数prototype */
ER pascal ini_sio(INT, const B *);
void cdecl ext_sio(void);
ER pascal get_sio(INT, UB *, TMO);
ER pascal put_sio(INT, UB, TMO);
ER pascal ctl_sio(INT, UH);
ER pascal ref_sio(INT, T_SIOS *);
ER pascal fls_sio(INT, TMO);
/* serial入出力制御block構造体 */
typedef struct t_sio
{
UB ch; /* channel番号 */
UB flag; /* 制御flag */
#define TSF_INIT 0x01 /* 初期化済み */
#define TSF_TXREQ 0x02 /* XON/XOFF送信要求 */
#define TSF_RXOFF 0x04 /* XOFF受信した */
#define TSF_TXOFF 0x08 /* XOFF送信した */
#define TSF_XON 0x10 /* XON/OFFによるflow制御有り */
#define TSF_DTR 0x20 /* DTRによるflow制御有り */
#define TSF_RTS 0x40 /* RTSによるflow制御有り */
UB txchr; /* 送信文字 */
UB rxchr; /* 受信文字 */
UB rxsts; /* 受信status */
UB oldchr; /* 前回の受信文字 */
UB oldsts; /* 前回の受信status */
UB eot; /* 終端文字 */
UH eotcnt; /* 終端文字検出counter */
ID txtid; /* 送信待ちtaskID */
ID rxtid; /* 受信待ちtaskID */
ID tetid; /* 送信終了待ちtaskID */
UB cmd[6]; /* SIO command buffer */
UB rsv[2]; /* 予備 */
UH txcnt; /* 送信buffer内の文字数 */
UH rxcnt; /* 受信buffer内の文字数 */
UB *txbuf; /* 送信buffer */
UB *rxbuf; /* 受信buffer(+BUFSZ に受信 status buffer)*/
UB *txputp; /* 送信buffer格納pointer */
UB *txgetp; /* 送信buffer取得pointer */
UB *rxputp; /* 受信buffer格納pointer */
UB *rxgetp; /* 受信buffer取得pointer */
#ifdef NORTi86
H far *vram; /* moniter表示用text VRAM address */
#endif
} T_SIO;
#ifdef __cplusplus
};
#endif
#endif /* NOSIO_H */