home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 3 Comm
/
03-Comm.zip
/
STERM.ZIP
/
STERM.H
< prev
next >
Wrap
Text File
|
1990-12-20
|
6KB
|
183 lines
/* Header for STERM virtual console */
#ifdef MAIN
#define AREF
#else
#define AREF extern
#endif
#ifdef STERMV
#define VREF
#else
#define VREF extern
#endif
#ifdef STERMC
#define CREF
#else
#define CREF extern
#endif
#ifdef STERMK
#define KREF
#else
#define KREF extern
#endif
#ifdef STERMP
#define PREF
#else
#define PREF extern
#endif
/* special Alt-Keys */
#define EXITKEY 0x2D /* EOJ key - Alt-X */
#define PLEX 0x12 /* echo switch Alt-E */
#define CLEARKEY 0x2E /* Alt-C screen clear (tty mode) */
#define CMDKEY 0x20 /* Alt-D command mode toggle */
#define TIMELIM 30000L /* 'AWAIT' timeout default */
#define PHONEL 20 /* phone string (unused) */
#define WSLEN 132 /* maximum string/packet length */
/* records */
typedef struct
{
enum { immed, termin, dhead } mtype;
/* data is immediate, msg is to terminate,
or data of mlen bytes follows */
int mlen; /* length of following data in stream */
char imdat; /* immediate data byte */
BOOL doecho; /* give echo */
} MsgH; /* standard message header */
/* global data structs */
typedef
struct _F41Info { /* DosDevIoCtl struct */
unsigned BaudRate; /* 1200, 2400, ... 9600 */
} F41Info;
typedef
struct _F42Info {
char DataBits; /* char length 5-8 */
char Parity; /* 0=N, 1=O, 2=E, 3=M, 4=S */
char StopBits; /* 0=1, 1=1.5, 2=2 */
} F42Info;
typedef
struct _F53Info {
USHORT wrt_timeout; /* write timeout .01 secs */
USHORT rde_timeout; /* read timeout */
BYTE enflag; /* enable disable flag */
#define enable_DTR 0x01 /* DTR control mode */
BYTE xonflag; /* flow control flag */
BYTE timoflag; /* timeout flags */
char errchar; /* err replace char */
char breakchar; /* break replace char */
char xonchar; /* XON char */
char xoffchar; /* XOFF char */
} F53Info;
#define MAXBLK 500 /* maximum file block */
typedef
struct _blokchar {
char blknum[6]; /* transmit block num */
char rsize[2]; /* record length header */
char cksumc[3]; /* checksum in ascii hex */
char resevd; /* not in use */
char data[MAXBLK]; /* actual data */
} blokchar;
typedef
struct _transfil {
struct _transfil *nextb; /* link fields */
char *bufp; /* current position within buffer */
blokchar *buf; /* buffer area */
} transfil;
/* global data areas */
/* our principal set of pipes */
AREF USHORT vworkR; /* read by vidout */
AREF USHORT vworkW; /* written by vidout users */
AREF USHORT comiW; /* written by comin */
AREF USHORT comiR; /* read by comin users */
AREF USHORT comoW; /* written by comout users */
AREF USHORT comoR; /* read by comout */
AREF USHORT kbdinW; /* written by kbdin */
AREF USHORT kbdinR; /* read by Kbdin users */
/* port definition */
typedef struct _PortDef
{
struct _PortDef *nxtport; /* chain ptr */
PSZ cport; /* Port Device Name */
HFILE chandle; /* COM port handle */
F41Info lspeed; /* baudrate */
F42Info ltype; /* line characteristics */
F53Info ldcb; /* device control block */
BOOL halfplex; /* half-duplex mode */
BOOL beforex; /* before 1st xmit */
char phone[PHONEL]; /* phone string */
} PortDef;
typedef
enum { ignore, command, tty, SIMVT, XMsend, XMrecv } kmode;
AREF PortDef *CurP; /* current port data */
AREF KBDKEYINFO keyi; /* key status */
AREF KBDINFO keyb; /* keyboard status */
AREF ULONG exitsem; /* quit semaphore */
AREF LONG timelim; /* 'await' timeout */
AREF char waitstr[WSLEN]; /* comout wait string */
AREF USHORT waitlen; /* length of above */
AREF USHORT waitrc; /* result of await */
#define AWAIT_OK 0 /* what you want */
#define AWAIT_WARN 4 /* parm error */
#define AWAIT_ENDP 8 /* stop processing parms */
#define AWAIT_EOJ 32 /* terminate program */
AREF ULONG waitsem; /* handle for above */
AREF ULONG readsem; /* handle for port read gate */
AREF char initstr[WSLEN]; /* Modem init string */
AREF kmode keymode; /* current keyboard mode */
AREF kmode prevmode; /* keyboard mode prior to command */
AREF UCHAR fldcolor; /* video color for color display */
AREF UCHAR fldmono; /* video color for mono display */
AREF BOOL ComLog; /* log COM input to STERM.LOG */
AREF PUCHAR *Sim3270; /* ptr to 3270 key translate tbl */
AREF void errexit( char * );
AREF void emsg( char * );
/* Definition for Vio functions */
VREF void clrscrn( void );
VREF void clreor( void );
VREF void gotorc( int r, int c );
VREF void setcursor( int r, int c, int im );
VREF void outstr( PUCHAR s, USHORT len );
VREF BOOL insmode; /* SIM3278 insert mode */
VREF void vidout( void ); /* video thread */
/* Definition for COMx data/functions */
CREF enum { TERM, VTHCMD, VTSEND, VTRECV } xstate; /* transmit state */
CREF UCHAR compbuf[WSLEN]; /* incoming compare buff */
CREF transfil *blkp; /* file transfer info */
CREF void comin( void );
CREF void comout( void );
CREF int setport( PortDef *pd );
/* Definition for Keyboard Functions */
KREF void kbdin( void ); /* keyboard thread */
KREF PUCHAR vtkey[]; /* addr of default 3270 translate tbl */
KREF PUCHAR prockey( PUCHAR ); /* tranlate 3270 keys */
/* Definition for Parameter Functions */
PREF int verbex( PCHAR vb ); /* execute a stmt */
PREF PortDef *defile( PCHAR fn ); /* process definition file */