home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / STERM.ZIP / STERM.H < prev    next >
Text File  |  1990-12-20  |  6KB  |  183 lines

  1. /*  Header for STERM virtual console */
  2.  
  3. #ifdef MAIN
  4. #define AREF
  5. #else
  6. #define AREF extern
  7. #endif
  8. #ifdef STERMV
  9. #define VREF
  10. #else
  11. #define VREF extern
  12. #endif
  13. #ifdef STERMC
  14. #define CREF
  15. #else
  16. #define CREF extern
  17. #endif
  18. #ifdef STERMK
  19. #define KREF
  20. #else
  21. #define KREF extern
  22. #endif
  23. #ifdef STERMP
  24. #define PREF
  25. #else
  26. #define PREF extern
  27. #endif
  28.  
  29.  
  30. /* special Alt-Keys */
  31. #define EXITKEY 0x2D          /*  EOJ key - Alt-X */
  32. #define PLEX    0x12          /*  echo switch  Alt-E */
  33. #define CLEARKEY 0x2E         /*  Alt-C screen clear (tty mode) */
  34. #define CMDKEY  0x20          /*  Alt-D command mode toggle */
  35.  
  36. #define TIMELIM 30000L  /* 'AWAIT' timeout default */
  37. #define PHONEL 20      /* phone string (unused) */
  38. #define WSLEN  132    /* maximum string/packet length */
  39.  
  40. /* records */
  41. typedef struct
  42.    {
  43.    enum { immed, termin, dhead } mtype;
  44.    /* data is immediate, msg is to terminate,
  45.       or data of mlen bytes follows  */
  46.    int  mlen;     /* length of following data in stream */
  47.    char imdat;   /* immediate data byte */
  48.    BOOL doecho;  /* give echo */
  49.    } MsgH;  /* standard message header */
  50.  
  51. /* global data structs */
  52. typedef
  53. struct _F41Info {         /*   DosDevIoCtl struct */
  54.        unsigned BaudRate; /* 1200, 2400, ... 9600 */
  55.        } F41Info;
  56.  
  57. typedef
  58. struct _F42Info {
  59.        char DataBits;     /* char length 5-8 */
  60.        char Parity;       /*  0=N, 1=O, 2=E, 3=M, 4=S */
  61.        char StopBits;     /*  0=1, 1=1.5, 2=2 */
  62.        } F42Info;
  63.  
  64. typedef
  65. struct _F53Info {
  66.        USHORT wrt_timeout; /* write timeout .01 secs */
  67.        USHORT rde_timeout; /* read timeout */
  68.        BYTE enflag;       /*  enable disable flag */
  69.        #define enable_DTR 0x01  /* DTR control mode */
  70.        BYTE xonflag;      /*  flow control flag */
  71.        BYTE timoflag;     /*  timeout flags   */
  72.        char errchar;      /* err replace char */
  73.        char breakchar;    /* break replace char */
  74.        char xonchar;      /* XON char */
  75.        char xoffchar;     /* XOFF char */
  76.        } F53Info;
  77.  
  78. #define MAXBLK 500   /* maximum file block */
  79. typedef
  80. struct _blokchar {
  81.    char  blknum[6]; /* transmit block num */
  82.    char  rsize[2];  /* record length header */
  83.    char  cksumc[3]; /* checksum in ascii hex */
  84.    char  resevd;    /* not in use */
  85.    char  data[MAXBLK];  /* actual data */
  86.    } blokchar;
  87.  
  88. typedef
  89. struct _transfil {
  90.    struct _transfil *nextb;  /* link fields */
  91.    char     *bufp; /* current position within buffer */
  92.    blokchar *buf;  /* buffer area */
  93.    } transfil;
  94.  
  95.  
  96. /* global data areas */
  97.  
  98.  
  99. /* our principal set of pipes */
  100. AREF USHORT  vworkR;  /* read by vidout */
  101. AREF USHORT  vworkW;  /* written by vidout users */
  102.  
  103. AREF USHORT  comiW;  /* written by comin */
  104. AREF USHORT  comiR;  /* read by comin users */
  105.  
  106. AREF USHORT  comoW;  /* written by comout users */
  107. AREF USHORT  comoR;  /* read by comout */
  108.  
  109. AREF USHORT  kbdinW;  /* written by kbdin */
  110. AREF USHORT  kbdinR;  /* read by Kbdin users */
  111.  
  112. /* port definition */
  113. typedef struct _PortDef
  114.      {
  115.      struct _PortDef *nxtport;  /* chain ptr */
  116.      PSZ cport;       /* Port Device Name */
  117.      HFILE chandle;   /* COM port handle */
  118.      F41Info lspeed;  /* baudrate */
  119.      F42Info ltype;   /* line characteristics */
  120.      F53Info ldcb;    /* device control block */
  121.      BOOL halfplex;   /* half-duplex mode */
  122.      BOOL beforex;    /* before 1st xmit */
  123.      char phone[PHONEL];  /* phone string */
  124.      } PortDef;
  125.  
  126. typedef
  127.    enum { ignore, command, tty, SIMVT, XMsend, XMrecv } kmode;
  128.  
  129.  
  130. AREF PortDef *CurP;              /* current port data */
  131. AREF KBDKEYINFO keyi;            /* key status */
  132. AREF KBDINFO keyb;               /* keyboard status */
  133. AREF ULONG exitsem;              /* quit semaphore */
  134. AREF LONG  timelim;              /* 'await' timeout */
  135. AREF char waitstr[WSLEN];        /* comout wait string */
  136. AREF USHORT waitlen;             /* length of above */
  137. AREF USHORT waitrc;              /* result of await */
  138. #define AWAIT_OK 0               /* what you want */
  139. #define AWAIT_WARN 4             /* parm error */
  140. #define AWAIT_ENDP 8             /* stop processing parms */
  141. #define AWAIT_EOJ 32             /* terminate program */
  142. AREF ULONG  waitsem;             /* handle for above */
  143. AREF ULONG  readsem;             /* handle for port read gate */
  144. AREF char initstr[WSLEN];        /* Modem init string */
  145. AREF kmode keymode;              /* current keyboard mode */
  146. AREF kmode prevmode;             /* keyboard mode prior to command */
  147.  
  148. AREF UCHAR fldcolor;   /* video color for color display */
  149. AREF UCHAR fldmono;    /* video color for mono display */
  150.  
  151. AREF BOOL ComLog;      /* log COM input to STERM.LOG */
  152. AREF PUCHAR *Sim3270;  /* ptr to 3270 key translate tbl */
  153.  
  154. AREF void errexit( char * );
  155. AREF void emsg( char * );
  156.  
  157. /* Definition for Vio functions */
  158.  
  159. VREF void clrscrn( void );
  160. VREF void clreor( void );
  161. VREF void gotorc( int r, int c );
  162. VREF void setcursor( int r, int c, int im );
  163. VREF void outstr( PUCHAR s, USHORT len );
  164. VREF BOOL insmode;  /* SIM3278 insert mode */
  165. VREF void vidout( void ); /* video thread */
  166.  
  167.  
  168. /* Definition for COMx data/functions */
  169. CREF enum { TERM, VTHCMD, VTSEND, VTRECV } xstate;  /* transmit state */
  170. CREF UCHAR compbuf[WSLEN];  /* incoming compare buff */
  171. CREF transfil  *blkp;      /* file transfer info */
  172. CREF void comin( void );
  173. CREF void comout( void );
  174. CREF int  setport( PortDef *pd );
  175.  
  176. /* Definition for Keyboard Functions */
  177. KREF void kbdin( void );  /* keyboard thread */
  178. KREF PUCHAR vtkey[];  /* addr of default 3270 translate tbl */
  179. KREF PUCHAR prockey( PUCHAR );  /* tranlate 3270 keys */
  180.  
  181. /* Definition for Parameter Functions */
  182. PREF int      verbex( PCHAR vb );  /* execute a stmt */
  183. PREF PortDef *defile( PCHAR fn );  /* process definition file */