home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
win100b.zip
/
wkt100.h
< prev
next >
Wrap
C/C++ Source or Header
|
1991-10-20
|
18KB
|
649 lines
/*********************************************************************\
* Header file for the Win600/Win100 programs
*
* Copyright 1990, 1991 by
* William S. Hall
* 3665 Benton Street, #66
* Santa Clara, CA 95051
*
\*********************************************************************/
/* This trick insures that globals are declared in only one place */
#if !defined(EXTERN)
#define EXTERN extern
#endif
/*********************************************************************\
*
* Miscellaneous constants
*
\*********************************************************************/
#define MAXCOMPORTS 4
#define MAXRCSTRLEN 80
#define LINE_ON 2
#define LOCAL_ON 1
#define BUFSIZE 128
#define VK_SCROLL 0x91
#define MAXPROTOLEN 16 /* max len of accumulated ANSI commands */
#define SYMBOL_CHARSET 2
#define EXE_NAME_MAX_SIZE 128
/*********************************************************************\
*
* Structures
*
\*********************************************************************/
/* current buffer descriptor */
typedef struct curbuf_tag {
BYTE *ptr; /* pointer to buffer */
int len; /* remaining chars in buffer */
} CURBUF;
typedef CURBUF *PCURBUF;
/* currently active protocol paramters */
typedef struct curproto_tag {
char type; /* current type (alphanumeric or graphics) */
int (FAR *apf)(void); /* alphanumeric protocol function */
int atype; /* current alpha emulation type */
int gtype; /* graphics type (alphagraphics, point plot, etc.) */
BYTE mask; /* eight bit mask */
int (FAR *pf)(void); /* processing function (alphanumerics or graphics) */
void (FAR *spkeys)(int type); /* keyboard function */
} CURPROTO;
/* main window parameters */
typedef struct _MWND {
HWND hWnd; /* window handle */
HBRUSH hBrush; /* current background brush */
int TextColor, BGColor; /* keep these together */
BOOL LFCR;
BOOL Cursor;
BOOL CursorType;
BOOL Reverse;
int PelSize;
BOOL BreakEnabled;
BOOL CurKeyMode;
BOOL DeleteKey;
BOOL AutoAnswer;
RECT rect; /* current client rectangle */
BOOL ApplMode; /* application or numeric keypad */
BOOL WarningBell;
WORD CharSet[4];
int ActiveCharSet;
BOOL ControlRep;
BOOL Wrap;
#ifdef WIN600
BOOL DelNotLoY;
BOOL LockOutGraphCtrlCodes;
#endif
} MWND;
typedef MWND *pMWND;
/* power-up conditions */
typedef struct _INITDATA {
char portname[MAXCOMPORTS][5]; /* comm port strings in desired order */
short TermRows, TermCols; /* terminal size */
WORD BaudRate; /* comm parameters */
BYTE ByteSize;
BYTE Parity;
BYTE StopBits;
BYTE fParity; /* check parity */
BYTE XonXoff;
WORD XoffLim; /* Xoff limit */
BOOL LocalEcho;
BOOL Wrap; /* wrap lines */
BOOL LFCR;
BOOL MarginBell;
BOOL Cursor;
BOOL CursorType;
int TextColor;
int BGColor;
BOOL WarningBell;
int AlphaEmulation;
BOOL ReverseVideo;
BOOL SmoothScroll;
short ScrollUnits;
BOOL LocalMode;
int AltKeypad;
BOOL BreakEnabled;
BOOL AutoAnswer;
BOOL DeleteKey;
int CursorKeys;
char Fontface[LF_FACESIZE];
short NFontWidth, NFontHeight;
short SFontWidth, SFontHeight;
BOOL ControlRep;
int EWidth;
} INITDATA;
typedef struct _PARITYREC {
BYTE ByteSize;
BYTE Parity;
} PARITYREC;
typedef struct GlobalBuf {
HANDLE hBuf;
LONG lBufSize;
LONG lBufHead;
LONG lBufTail;
} GLOBALBUF;
typedef GLOBALBUF *PGLOBALBUF;
/*********************************************************************\
*
* Function prototypes
*
\*********************************************************************/
/* from win600.c */
LONG FAR PASCAL MainWndProc(HWND,unsigned,WORD,LONG);
BOOL FAR PASCAL MainHasResized(HWND hWnd, LONG lParam);
BOOL FAR PASCAL ColorChange(HWND hWnd, LONG lParam);
void NEAR DoGetMessage(void);
void NEAR DoPeekMessage(void);
/* from win600nt.c */
BOOL FAR InitProgram(HANDLE, HANDLE, LPSTR, int);
void FAR MainWndCreate(HWND hWnd, LONG lParam);
/* from win600fn.c */
void NEAR MainWndPaint(HWND hWnd, LPPAINTSTRUCT lpps);
void CloseCommPort(HWND hWnd, int *pCid);
int ShowMessage(HWND hWnd, int msgnum, WORD style);
void BroadcastWinIniChange(void);
void NEAR WndCommand(HWND, WORD, LONG);
void WriteToComm(BYTE *buf, int len);
void AnswerEnq(BYTE lead, int mode);
void InvertScreen(BOOL flag);
void NEAR WndTimer(HWND hWnd, WORD id);
void IdentifyTerm(short id);
void ReportCursorPos(int r, int c);
void NEAR ProcessChars(BYTE ch, int count);
void SetCols(WORD cols);
void ShowAnswerBack(void);
void NEAR CloseLogFile(void);
void NEAR XCSpecialKeys(int item);
void NEAR AGSpecialKeys(int item);
void NEAR IPPSpecialKeys(int item);
void FAR MakeCaret(BOOL make);
void NEAR WriteClipData(void);
void FAR SetAlphaParams(int type);
void FAR SetGraphicsParams(int type);
int FAR vt100(void);
int FAR vt52(void);
void FAR pushback(void);
int FAR yywrap(void);
void FAR _cdecl dbs(const char *fmt, ...);
/* from win600ms.c */
BOOL OpenDlgBox(HWND hWnd, FARPROC fpProc, WORD boxnum);
BOOL FAR PASCAL AboutBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL ModemBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL DisplayBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL GeneralBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL MiniBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL CopyBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL EditFunctionKeys(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL LogFileBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL KeyboardBoxProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL FontsBoxProc(HWND, unsigned, WORD, LONG);
/* from lex modules */
void FAR vt52SetState(int state);
void FAR vt100SetState(int state);
void FAR VT52SpecialKeys(int item);
void FAR ANSISpecialKeys(int item);
/*********************************************************************\
*
* Resource file constants
*
\*********************************************************************/
/* String ids */
#define IDS_APPNAME 100
#define IDS_ICON 101
#define IDS_TITLE 102
#define IDS_ADDDEFAULTS 103
#define IDS_COM1 104 /* sequential */
#define IDS_COM2 105
#define IDS_COM3 106
#define IDS_COM4 107
#define IDS_FIRSTPORT 108 /* sequential */
#define IDS_SECONDPORT 109
#define IDS_THIRDPORT 110
#define IDS_FOURTHPORT 111
#define IDS_RXQUESIZE 112
#define IDS_TXQUESIZE 113
#define IDS_NOCOM 114
#define IDS_CANNOTCLOSECOM 115
#define IDS_ROWS 116
#define IDS_COLS 117
#define IDS_NOCOMSET 118
#define IDS_BAUD 119
#define IDS_PARITY 120
#define IDS_STOPBITS 121
#define IDS_BYTESIZE 122
#define IDS_PARCHECK 123
#define IDS_XONXOFF 124
#define IDS_XOFFLIM 125
#define IDS_LOCALECHO 126
#define IDS_AUTOLFCR 127
#define IDS_MARGINBELL 128
#define IDS_CURSOR 129
#define IDS_CURSORTYPE 130
#define IDS_WARNINGBELL 131
#define IDS_LINE 132
#define IDS_LOCAL 133
#define IDS_WRAP 134
#define IDS_TEXTCOLOR 135
#define IDS_BGCOLOR 136
#define IDS_TERMTYPE 137
#define IDS_REVERSEVIDEO 138
#define IDS_SMOOTHSCROLL 139
#define IDS_LOCALMODE 140
#define IDS_TRYANOTHER 141
#define IDS_LOGFILENAME 142
#define IDS_LOGSESSION 143
#define IDS_CLOSELOG 144
#define IDS_FILEEXISTS 145
#define IDS_OPENFILEERROR 146
#define IDS_ALTKEYPAD 147
#define IDS_BREAKKEYENABLED 148
#define IDS_AUTOANSWER 149
#define IDS_DELETEKEY 150
#define IDS_CURSORKEYS 151
#define IDS_ANSWERBACKKEY 152
#define IDS_FONTFACE 153
#define IDS_DEFAULTFONT 154
#define IDS_NORMALWIDTH 155
#define IDS_NORMALHEIGHT 156
#define IDS_SMALLWIDTH 157
#define IDS_SMALLHEIGHT 158
#define IDS_SCROLLUNITS 159
#define IDS_CONTROLREP 160
#define IDS_EMULATIONWIDTH 161
/* dialog box strings */
#define IDS_JUMP 200
#define IDS_SMOOTH1 201
#define IDS_SMOOTH2 202
#define IDS_SMOOTH4 203
#define IDS_SMOOTH8 204
#define IDS_VT1007BIT 205
#define IDS_VT1008BIT 206
#define IDS_VT527BIT 207
#define IDS_VT528BIT 208
#define IDS_BLACK 220
#define IDS_DARKRED 221
#define IDS_DARKGREEN 222
#define IDS_DARKYELLOW 223
#define IDS_DARKBLUE 224
#define IDS_DARKMAGENTA 225
#define IDS_DARKCYAN 226
#define IDS_DARKGRAY 227
#define IDS_LIGHTGRAY 228
#define IDS_LIGHTRED 229
#define IDS_LIGHTGREEN 230
#define IDS_LIGHTYELLOW 231
#define IDS_LIGHTBLUE 232
#define IDS_LIGHTMAGENTA 233
#define IDS_LIGHTCYAN 234
#define IDS_WHITE 235
/* help */
#define IDS_WINHELPNAME 300
/* menu items */
#define IDM_ABOUT 100
#define IDM_LINE 101
#define IDM_LOCAL 102
#define IDM_SCROLL 103
#define IDM_NORMAL 104
#define IDM_REVERSE 105
#define IDM_MINI 106
#define IDM_MODEM 110
#define IDM_DISPLAY 111
#define IDM_GENERAL 112
#define IDM_CLEARCOM 120
#define IDM_COPYLINES 121
#define IDM_EDITFKEYS 122
#define IDM_GETFILE 123
#define IDM_CLOSEFILE 124
#define IDM_PASTE 125
#define IDM_RECALLSAVED 126
#define IDM_RECALLDEFAULT 127
#define IDM_KEYBOARD 128
#define IDM_FONTS 129
#define IDM_HELP_INDEX 150
#define IDM_HELP_KEY 151
#define IDM_HELP_COM 152
#define IDM_HELP_PROC 153
#define IDM_HELP_GLOS 154
#define IDM_HELP_HELP 155
/* special keys . Start these from 200 */
#define IDM_UP 200
#define IDM_DOWN 201
#define IDM_RIGHT 202
#define IDM_LEFT 203
#define IDM_HOME 204
#define IDM_END 205
#define IDM_PRIOR 206
#define IDM_NEXT 207
#define IDM_CLEAR 208
#define IDM_INSERT 209
#define IDM_DELETE 210
#define IDM_S_UP 220
#define IDM_S_DOWN 221
#define IDM_S_RIGHT 222
#define IDM_S_LEFT 223
#define IDM_S_HOME 224
#define IDM_S_END 225
#define IDM_S_PRIOR 226
#define IDM_S_NEXT 227
#define IDM_S_CLEAR 228
#define IDM_S_INSERT 229
#define IDM_S_DELETE 230
#define IDM_C_UP 240
#define IDM_C_DOWN 241
#define IDM_C_RIGHT 242
#define IDM_C_LEFT 243
#define IDM_C_HOME 244
#define IDM_C_END 245
#define IDM_C_PRIOR 246
#define IDM_C_NEXT 247
#define IDM_C_CLEAR 248
#define IDM_C_INSERT 249
#define IDM_C_DELETE 250
#define IDM_CS_UP 260
#define IDM_CS_DOWN 261
#define IDM_CS_RIGHT 262
#define IDM_CS_LEFT 263
#define IDM_CS_HOME 264
#define IDM_CS_END 265
#define IDM_CS_PRIOR 266
#define IDM_CS_NEXT 267
#define IDM_CS_CLEAR 268
#define IDM_CS_INSERT 269
#define IDM_CS_DELETE 270
/* function keys */
#define IDM_F1 300
#define IDM_F2 301
#define IDM_F3 302
#define IDM_F4 303
#define IDM_F5 304
#define IDM_F6 305
#define IDM_F7 306
#define IDM_F8 307
#define IDM_F9 308
#define IDM_F10 309
#define IDM_F11 310
#define IDM_F12 311
#define IDM_S_F1 320
#define IDM_S_F2 321
#define IDM_S_F3 322
#define IDM_S_F4 323
#define IDM_S_F5 324
#define IDM_S_F6 325
#define IDM_S_F7 326
#define IDM_S_F8 327
#define IDM_S_F9 328
#define IDM_S_F10 329
#define IDM_S_F11 330
#define IDM_S_F12 331
#define IDM_C_F1 340
#define IDM_C_F2 341
#define IDM_C_F3 342
#define IDM_C_F4 343
#define IDM_C_F5 344
#define IDM_C_F6 345
#define IDM_C_F7 346
#define IDM_C_F8 347
#define IDM_C_F9 348
#define IDM_C_F10 349
#define IDM_C_F11 350
#define IDM_C_F12 351
#define IDM_CS_F1 360
#define IDM_CS_F2 361
#define IDM_CS_F3 362
#define IDM_CS_F4 363
#define IDM_CS_F5 364
#define IDM_CS_F6 365
#define IDM_CS_F7 366
#define IDM_CS_F8 367
#define IDM_CS_F9 368
#define IDM_CS_F10 369
#define IDM_CS_F11 370
#define IDM_CS_F12 371
#define IDM_NUM0 400
#define IDM_NUM1 401
#define IDM_NUM2 402
#define IDM_NUM3 403
#define IDM_NUM4 404
#define IDM_NUM5 405
#define IDM_NUM6 406
#define IDM_NUM7 407
#define IDM_NUM8 408
#define IDM_NUM9 409
#define IDM_ADD 410
#define IDM_SUBTRACT 411
#define IDM_DECIMAL 412
#define IDM_MULTIPLY 413
#define IDM_S_NUM0 420
#define IDM_S_NUM1 421
#define IDM_S_NUM2 422
#define IDM_S_NUM3 423
#define IDM_S_NUM4 424
#define IDM_S_NUM5 425
#define IDM_S_NUM6 426
#define IDM_S_NUM7 427
#define IDM_S_NUM8 428
#define IDM_S_NUM9 429
#define IDM_S_ADD 430
#define IDM_S_SUBTRACT 431
#define IDM_S_DECIMAL 432
#define IDM_S_MULTIPLY 433
#define IDM_C_NUM0 440
#define IDM_C_NUM1 441
#define IDM_C_NUM2 442
#define IDM_C_NUM3 443
#define IDM_C_NUM4 444
#define IDM_C_NUM5 445
#define IDM_C_NUM6 446
#define IDM_C_NUM7 447
#define IDM_C_NUM8 448
#define IDM_C_NUM9 449
#define IDM_C_ADD 450
#define IDM_C_SUBTRACT 451
#define IDM_C_DECIMAL 452
#define IDM_C_MULTIPLY 453
#define IDM_CS_NUM0 460
#define IDM_CS_NUM1 461
#define IDM_CS_NUM2 462
#define IDM_CS_NUM3 463
#define IDM_CS_NUM4 464
#define IDM_CS_NUM5 465
#define IDM_CS_NUM6 466
#define IDM_CS_NUM7 467
#define IDM_CS_NUM8 468
#define IDM_CS_NUM9 469
#define IDM_CS_ADD 470
#define IDM_CS_SUBTRACT 471
#define IDM_CS_DECIMAL 472
#define IDM_CS_MULTIPLY 473
/* dialog box ids */
#define DT_ABOUT 1
#define DT_MODEM 2
#define DT_DISPLAY 3
#define DT_GENERAL 4
#define DT_MINI 5
#define DT_COPYLINES 6
#define DT_EDITFKEYS 7
#define DT_GETFILE 8
#define DT_KEYBOARD 9
#define DT_FONTS 10
/*************************************************************************
**
** Communications Initialization Error Codes
**
*************************************************************************/
#if RC_INVOKED
#define IE_BADID -1 /* Invalid or unsupported id */
#define IE_OPEN -2 /* Device Already Open */
#define IE_NOPEN -3 /* Device Not Open */
#define IE_MEMORY -4 /* Unable to allocate queues */
#define IE_DEFAULT -5 /* Error in default parameters */
#define IE_HARDWARE -10 /* Hardware Not Present */
#define IE_BYTESIZE -11 /* Illegal Byte Size */
#define IE_BAUDRATE -12 /* Unsupported BaudRate */
#endif
/*********************************************************************\
*
* Default values
*
\*********************************************************************/
#define DEFBAUD 1200
#define DEFBYTESIZE 8
#define DEFPARITY NOPARITY
#define DEFSTOP 1
#define DEFPECHECK FALSE
#define DEFPECHAR '?'
#define DEFXONXOFF TRUE
#define DEFXONCHAR DC1
#define DEFXOFFCHAR DC3
#define DEFRXQUE 1024
#define DEFTXQUE 128
#define DEFXONLIM 32
#define DEFXOFFLIM 64
#define DEFLOCALECHO FALSE
#define DEFLFCR FALSE
#define DEFMBELL FALSE
#define DEFCURSOR TRUE
#define DEFCURSORTYPE FALSE
#define DEFWBELL TRUE
#define DEFROWS 24
#define DEFCOLS 80
#define DEFWRAP 0
#define DEFTEXTCOLOR 15
#define DEFBGCOLOR 0
#define DEFTERMTYPE 100
#define DEFEWIDTH 7
#define DEFVIDEO 0
#define DEFSCROLL 0
#define DEFSCROLLUNITS 4
#define MAXSCROLLUNITS 8
#define DEFLOCALMODE 0
#define DEFALTKEYPAD 0
#define DEFCURSORKEYS 0
#define DEFBREAKENABLED TRUE
#define DEFDELETEKEY FALSE
#define DEFAUTOANSWER FALSE
#define DEFCONTROLREP 0
/*********************************************************************\
*
* Global variables
*
\*********************************************************************/
EXTERN SMT Smt; /* smart terminal window data */
EXTERN MWND MWnd; /* main window structure */
EXTERN INITDATA Initdata; /* power up conditions */
EXTERN CURPROTO curproto; /* current protocol */
EXTERN CURBUF ComBuf; /* comm buffer parameters */
EXTERN CURBUF CharBuf; /* char buffer parameters */
EXTERN CURBUF *pBuf; /* pointer to current buffer */
EXTERN char szAppName[10]; /* name of the application */
EXTERN char szIcon[5]; /* icon string */
EXTERN HWND hWndActive; /* handle to active display window */
EXTERN int cid; /* active com port id*/
EXTERN DCB CommData; /* comm data structure */
EXTERN int LineState; /* current line and local echo state */
EXTERN int LocalEcho; /* local echo on or off */
EXTERN BYTE Buffer[BUFSIZE]; /* comm buffer */
EXTERN BOOL ScrollLock; /* state of scroll lock key */
EXTERN HANDLE hAccel;
EXTERN void (NEAR *DoMessage)(void); /* pointer to message function */
EXTERN BOOL BreakState;
EXTERN HANDLE hInst;
EXTERN OFSTRUCT ofLogFile;
EXTERN int hLogFile;
EXTERN HWND hWndNext;
EXTERN GLOBALBUF GB;
EXTERN char szHelpName[EXE_NAME_MAX_SIZE + 1];
EXTERN char szIniName[EXE_NAME_MAX_SIZE + 1];
EXTERN HWND hWndText;
#ifdef WIN600
EXTERN HWND hWndGraph;
#endif
#define BAUDRATETABLESIZE 9
EXTERN WORD BaudRateTable[BAUDRATETABLESIZE]
#if defined(INITIALIZE)
= {110,134,300,600,1200,2400,4800,9600,19200}
#endif
;
#define PARITYTABLESIZE 8
EXTERN PARITYREC ParityTable[PARITYTABLESIZE]
#if defined(INITIALIZE)
= {8,NOPARITY,8,ODDPARITY,8,EVENPARITY,
7,NOPARITY,7,ODDPARITY,7,EVENPARITY,7,MARKPARITY,7,SPACEPARITY}
#endif
;
#define XOFFLIMSIZE 5
EXTERN WORD XoffSizeTable[]
#if defined(INITIALIZE)
= {64,128,256,512,768}
#endif
;
#define COLORTABLESIZE 16
EXTERN DWORD ColorTable[]
#if defined(INITIALIZE)
= {0x000000,0x000080,0x008000,0x008080,0x800000,0x800080,0x808000,0x808080,
0xc0c0c0,0x0000ff,0x00ff00,0x00ffff,0xff0000,0xff00ff,0xffff00,0xffffff}
#endif
;
EXTERN char *szFKey[]
#if defined(INITIALIZE)
= {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10",
"F11", "F12"}
#endif
;
EXTERN char *szSFKey[]
#if defined(INITIALIZE)
= {"SF1", "SF2", "SF3", "SF4", "SF5", "SF6", "SF7", "SF8", "SF9", "SF10",
"SF11", "SF12"}
#endif
;
EXTERN char *szCFKey[]
#if defined(INITIALIZE)
= {"CF1", "CF2", "CF3", "CF4", "CF5", "CF6", "CF7", "CF8", "CF9", "CF10",
"CF11", "CF12"}
#endif
;
EXTERN char *szCSFKey[]
#if defined(INITIALIZE)
= {"CSF1", "CSF2", "CSF3", "CSF4", "CSF5", "CSF6", "CSF7", "CSF8", "CSF9",
"CSF10", "CSF11", "CSF12"}
#endif
;