windows-nt/Source/XPSP1/NT/shell/osshell/accesory/terminal/dynacomm.h
2020-09-26 16:20:57 +08:00

1732 lines
55 KiB
C

#include "fsemacro.h" // rjs - macros for dynacomm
#include <io.h> /* for open,read,write,close file crt -sdj*/
#include <string.h> /* for strncpy -sdj */
#include <stdio.h> /* for sprintf sscanf -sdj */
#include <fcntl.h> /*added cause CRT's need defines*/
#include <sys\types.h>
#include <sys\stat.h>
#include "asm2c_32.h"
/*****************************************************************************/
/* Compilation Switches */
/*****************************************************************************/
#ifdef DEBUG
#define DEBOUT(a,b) DbgPrint("WIN32DEBUG: " a, (b));
#else
#define DEBOUT(a,b)
#endif
#define DEBUG_FLAG FALSE
#define DEBUG_FLAG1 (DEBUG_FLAG & 0x0002)
#define NULL_PORT TRUE /* enables DynaComm to function */
/* without a valid COMM PORT */
/*****************************************************************************/
/* Type Definitions */
/*****************************************************************************/
typedef BYTE STRING; /* denotes PASCAL-type string */
typedef BYTE * Ptr;
typedef BYTE HUGE_T * HPSTR;
typedef VOID (NEAR *procPtr)();
typedef HWND ControlHandle;
/*****************************************************************************/
typedef enum {KBD_LOCK, KBD_UNLOCK, KBD_ECHO, KBD_BUFFER, KBD_WAIT} KBD_STATE;
typedef enum {ICS_NONE, ICS_BRITISH, ICS_DANISH, ICS_FINISH,
ICS_FRENCH, ICS_CANADIAN, ICS_GERMAN, ICS_ITALIAN,
ICS_SPANISH, ICS_SWEDISH, ICS_SWISS, ICS_MAXTYPE} ICS_TYPE;
typedef enum {XFRNORMAL, XFRCHAR, XFRLINE} TTXTTYPE;
typedef enum {XFRCHRDELAY, XFRCHRWAIT} TCHRTYPE;
typedef enum {XFRLINDELAY, XFRLINWAIT} TLINTYPE;
typedef enum {BNEITHER, BPAUSE, BWHEN, BBOTH} BREAKCOND;
typedef enum {EXNONE, EXVPOS, EXHPOS, EXSCS, EXSETMODE, EXRESETMODE} ESCEXTEND;
typedef enum {TBLBEGINLINE, TBLNONSPACE, TBLONESPACE, TBLSPACES} TBLPOS;
typedef enum {XFRNONE, XFRSND, XFRRCV, XFRTYP, XFRBSND, XFRBRCV} XFERFLAG;
typedef enum {GRNONE, GRSEMI, GRHIGH, GRMEDM} VIDGRAPHICS;
typedef enum {XFRDYNACOMM, XFRXMODEM, XFRYMODEM, XFRKERMIT, XFRYTERM} tBinType;
typedef enum {XFRBOTH, XFRDATA, XFRRESOURCE} tBinFork;
/*****************************************************************************/
/* Constant Definitions */
/*****************************************************************************/
#define PATHLEN 80
#define FILENAMELEN 32 // -sdj 12 is really bad if you have ntfs names 12
#define ESCSKIPNDX 32 /* used: resetEmul (itutil1.c) */
#define MAXTIMERNUM 3 /* mbbx 2.00: multiple timers */
/*****************************************************************************/
/* STANDARD CHARACTER CONSTANTS */
#define CR 13 /* Carriage return */
#define LF 10 /* Line Feed */
#define SP 32 /* Space */
#define TAB 9 /* Tab */
#define FF 12 /* Form Feed */
#define BS 8 /* BackSpace */
#define ESC 27 /* Escape */
#define BELL 7 /* Bell */
#define CHFILL 32 /* buffer fill char. */
#define XOFF 19 /* XOFF */
#define XON 17 /* XON */
#define CNTRLZ 26 /* end of file ^Z */
#define CNTRLC 3 /* ^C same song second CHETX */
#define CHSOH 1
#define CHSTX 2
#define CHETX 3
#define CHEOT 4
#define CHACK 6
#define CHNAK 21
#define CHCAN 24
#define CHTIMEOUT -1
#define CHQUOTE '"' /* mbbx 1.04: REZ... */
#define CHSQUOTE '\''
/* SYSTEM CONSTANTS */
#define KILOBYTES * 1024
#define KILOBYTESL * 1024L
#define MEGABYTES * 1024 KILOBYTES
#define MEGABYTESL * 1024 KILOBYTESL
#define MAXUNSIGNEDINT 64 KILOBYTES - 1
#define MAXUNSIGNEDINTL 64 KILOBYTESL - 1
#define MAXINT 32 KILOBYTES - 1
#define MININT -1 * MAXINT
#define MAXINTL 32 KILOBYTESL -1
#define MAXLONGINT 2048 MEGABYTESL
#define MINLONGINT -1 * MAXLONGINT
#define MAXUNSIGNEDCHAR 255
#define TERM_MAXCHAR 127 /* changed from MAXCHAR to avoid conflict*/
/* MAXCHAR was not used in any files anyway-sdj*/
#define MILLISECONDS * 1
#define SECONDS * 1000 MILLISECONDS
#define versSettings 4
#define STR255 256 /* Faking Pascal str255 type */
#define DONTCARE 0xff /* General purpose don't care */
#define MAXROWCOL MAXLONGINT /* Max. value for type ROWCOL */
#define STANDARDKEY 0x00
#define KEYPADKEY 0x01
#define TERMINALFKEY 0x02
#define SCROLLKEY 0x04
#define SYSTEMFKEY 0xF0
#define SHORTBREAK 0xFE /* Defined for serial short brk */
#define LONGBREAK 0xFF /* Defined for serial long brk */
#define DAYS_IN_A_YEAR 31+28+31+30+31+30+31+31+30+31+30+31
#define SECS_IN_A_DAY 24l*60l*60l
#define MAXSCREENLINE 23
#define MINPOINTSIZE 6
#define MAXPOINTSIZE 15 /* Maximum point size for the */
/* terminal screen font */
#define STATUSLINE 24
#define UPDATETICKS 3
#define YIELDCHARS 48 /* *** optimize this */
/* ARRAY DECLARATOR CONSTANTS */
#define LOCALMODEMBUFSZ 513 /* mbbx: previously 1024 */
#define NINQUEUE 1024 /* mbbx 1.04: was 3072 */
#define NOUTQUEUE 256 /* mbbx 1.04: was 512 */
#define KEYSEQLEN 5
#define SIZEOFEMULKEYINFO 50*KEYSEQLEN /* mbbx 2.00: was 52,44 */
/* #define FKEYLEN 64 jtf 3.12 Max. sizeof funct. key text */
#define DCS_FKEYLEVELS 4 /* Number of level keys */
#define DCS_NUMFKEYS 8 /* Number of function keys */
#define DCS_FKEYTITLESZ 20 /* Length of fkey title rkhx 2.00 */
#define DCS_FKEYTEXTSZ 44 /* Length of fkey text rkhx 2.00 */
#define DCS_NUMSYSVARS 10 /* rkhx 2.00 */
#define MDMRESLEN 20
#define TMPNSTR 255 /* Gen. purpose temp. string len*/
#define MINRESSTR 32
#define STATUSRECTBORDER 4
#define SPACE 32 /* Space (yterm) */
#define SERINBUFFSIZE LOCALMODEMBUFSZ /* mbbx: yterm */
#define YTERMTIMEOUT 600
/* VIRTUAL KEY STATE */
#define VKS_SHIFT 0x0100 /* mbbx 1.04: keymap ... */
#define VKS_CTRL 0x0200
#define VKS_ALT 0x0400
#define FKB_UPDATE_BKGD 0x0001 /* mbbx 2.00: fkey button options... */
#define FKB_UPDATE_TIMER 0x0002
#define FKB_DISABLE_CTRL 0x8000
/* CHARACTER ATTRIBUTES */
#define ANORMAL 0x00 /* mbbx 1.03 ... */
#define ABOLD 0x01
#define AREVERSE 0x02
#define ABLINK 0x04
#define AUNDERLINE 0x08
#define APROTECT 0x10
#define AGRAPHICS 0x20
#define ADIRTY 0x40
#define ACLEAR 0x80
#define AMASK (ABOLD | AREVERSE | ABLINK | AUNDERLINE | APROTECT)
#define ANOTGRAPHICS ~AGRAPHICS
/* LINE ATTRIBUTES */
#define LNORMAL 0
#define LHIGHTOP 1
#define LHIGHBOTTOM 2
#define LWIDE 3
#define LATTRIB 132
#define LFLAGS 133
#define LDIRTY 0x01
#define LCLEAR 0x02
#define ATTRROWLEN 134
/* FILE ERROR CONSTANTS */
#define NOERR FALSE /* No file error flag value */
#define EOFERR 262
#define FERR_FILENOTFOUND 2
#define FERR_PATHNOTFOUND 3
#define FERR_TOOMANYOPENFILES 4
#define FERR_ACCESSDENIED 5
#define FERR_INVALIDACCESS 12
#define FERR_INVALIDFILENAME 257
#define FERR_OPEN 258
#define FERR_READ 259
#define FERR_FILELENGTH 260
#define FERR_CLOSE 261
/* rkhx 2.00 ... */
#if OLD_CODE /* mbbx 2.00: using bit fields... */
/* commFlags */
#define DCS_CF_RESETDEVICE 0x8000 /* select new comm device */
#endif
/* termFlags */
#define DCS_TF_SCROLLBARS 0x0001 /* show terminal scroll bars */
/* modemFlags */
#define DCS_MF_USEDEFAULT 0x0001 /* use default modem settings */
/* communication flags */ /* rjs bug2 */
#define DCS_CF_NETNAMEPADDING 0x0001 /* if set, then use blank padding in NetBios names, else null */
/* environmentFlags */
#define DCS_EVF_FKEYSSHOW 0x0001 /* show fkeys */
#define DCS_EVF_FKEYSARRANGE 0x0002 /* auto arrange when shown */
/* parentFlags */
#define DCS_PF_ 0x0001 /* */
#define DCS_FILE_ID 0x20534344 /* mbbx 2.00 ... */
/* #define DCS_HEADERSZ 4 */
#define DCS_VERSIONSZ 6
#define DCS_DESCRIPTIONSZ 53
#define DCS_PASSWORDSZ 16
#define DCS_ANSWERBACKSZ 44
#define DCS_FONTFACESZ 32
#define DCS_XLINSTRSZ 24
#define DCS_MODEMCMDSZ 32
#define DCS_FKEYNEXTSZ 20
#define DCS_SYSVARSZ 44
#define DCS_DCINITAGSZ 16
#if OLD_CODE
/* FILE DIALOG BOX ATTRIBUTE CONSTANTS */
#define GETFILE 0x0001
#define PUTFILE 0x0002
#define VIEWTXTFILE 0x0004
#define SENDTXTFILE 0x0008
#define MACFILETYPE 0x0010
#define APPENDTXTFILE 0x0020
#define SENDFILE 0x0040
#define FORCEXTENSION 0x0080
#define RECEIVEFILE 0x0100
#define EXECUTEFILE 0x0200
#define PRINTFILE 0x0400
#define REMOTEFILE 0x0800
#endif
/* strings constants: */
#define DC_WNDCLASS "DC_Term" /* mbbx 1.04: REZ... */
#define HEX_STR "0123456789ABCDEF" /* mbbx 2.00 */
#define NULL_STR "\0" /* mbbx 1.00: 00 00 */
#define VOID_STR "\1\0" /* mbbx 1.00: 01 00 00 */
#define PRMPT_STR "\1?"
#define LABEL_STR "\1*"
#define SPACE_STR "\1 "
#define SEMI_STR "\1;"
#define TIME_STR "\800:00:00"
#define OK_STR "\2OK"
#define VIDEO_STR "\5VIDEO"
#define CRLF_STR "\2\015\012"
#define DBG_FNL_STR "["
#define DBG_FNR_STR "]\r\n"
#define MSDOS_STR "MSDOS"
#define VT100_STR "VT-100"
#define PAR2_STR "PAR2"
#define TEXT_STR "TEXT"
#define PARM_STR "PARM"
#define CCL_STR "CCL "
#define YT_WSA_STR "\3WSA"
#define YT_W43_STR "\3W43"
#define YT_RSA_STR "\3RSA"
#define YT_R43_STR "\3R43"
#define YT_CRC_STR "\02##"
#define YT_RESP_STR "012345"
/*****************************************************************************/
/* Data File Definitions */
/*****************************************************************************/
typedef enum {FILE_NDX_DATA, FILE_NDX_SETTINGS, FILE_NDX_TASK,
FILE_NDX_SCRIPT, FILE_NDX_MEMO, MAX_FILE_NDX} FILEDOCTYPE;
#define DATA_FILE_TYPE "\\*.*"
#define SETTINGS_FILE_TYPE "\\*.TRM"
#define TASK_FILE_TYPE "\\*.TXT"
#define SCRIPT_FILE_TYPE "\\*.TXT"
#define MEMO_FILE_TYPE "\\*.TXT"
#define ANY_FILE_TYPE "\\*.*"
#define NO_FILE_TYPE "\\*." /* mbbx 2.00 */
#define INI_FILE_TYPE "\\*.INI"
#define EXE_FILE_TYPE "\\*.EXE"
#define DRIVER_FILE_TYPE "\\*.DRV" /* mbbx 2.00 ... */
/* #define TERMINAL_FILE_TYPE "\\*.TRM" mbbx 2.00: no forced extents */
#define FILEDOCDATA struct tagFileDocData
struct tagFileDocData
{
BYTE filePath[PATHLEN];
BYTE fileName[16];
BYTE fileExt[16];
BYTE title[PATHLEN];
} fileDocData[MAX_FILE_NDX];
/*
struct tagFileDocData
{
BYTE filePath[FO_MAXPATHLENGTH];
BYTE fileName[FO_MAXFILELENGTH];
BYTE fileExt[FO_MAXEXTLENGTH];
BYTE title[FO_MAXPATHLENGTH];
} fileDocData[MAX_FILE_NDX];
*/
/* #define ATTRDIRLIST 0x4010 */
INT saveFileType; /* mbbx 2.00: save prev file type... */
/*****************************************************************************/
/* Structure Definitions */
/*****************************************************************************/
/* rkhx 2.00 */
/* obsolete
typedef
struct {
BYTE title[TITLELEN];
BYTE xtra[XTRALEN];
} TITLEREC;
*/
// -sdj this is the portable way to pack the structures 1 byte aligned.
// win3.0 sources are compiled with -Zp option so that the structures are
// byte aligned. This pragma would work for MIPS and X86 MS compilers
#ifdef ORGCODE
#else
#pragma pack(1)
#endif
typedef
struct {
/* House keeping: 86 + 42 = 128 bytes */
LONG fileID; /* mbbx 2.00 ... */
/* BYTE header[DCS_HEADERSZ]; header ('DCS ') */
BYTE version[DCS_VERSIONSZ]; /* version (2.00: ) */
BYTE description[DCS_DESCRIPTIONSZ]; /* description */
BYTE controlZ; /* fake eof for typing text */
WORD fileSize; /* file size */
WORD crc; /* crc check */
WORD groupSave; /* global save params flag DCS_GS_... */
BYTE password[DCS_PASSWORDSZ]; /* password */
BYTE headerXtraRoom[42]; /* extra room for header section */
/* Communications: (7 + 5) + (7 + 5) + (98 + 6) = 128 bytes */
WORD fParity: 1; /* mbbx 2.00: bit fields... */
WORD fCarrier: 1;
WORD commFlags: 13; /* communication settings DCS_CF_... */
WORD fResetDevice: 1;
BYTE newDevRef; /* new comm device */
BYTE comDevRef; /* comm device */
BYTE comExtRef; /* comm extension */
BYTE comPortRef; /* comm port */
BYTE comModeRef;
BYTE commXtraRoom1[5]; /* extra room for comm section */
WORD speed; /* mbbx 2.00: allow ANY baud rate */
BYTE dataBits;
BYTE parity;
BYTE stopBits;
BYTE flowControl;
BYTE priority; /* com priority (as per spooler) */
BYTE commXtraRoom2[5]; /* extra room for comm section */
BYTE localName[16]; /* used for deviceName */
BYTE remoteName[64];
BYTE deviceName[14]; /* used for deviceName */
WORD netRcvTimeOut;
WORD netSndTimeOut;
BYTE commXtraRoom3[6]; /* extra room for comm section */
/* Terminal: 94 + 34 = 128 bytes */
WORD termFlags: 12;
WORD fInpLFCR: 1;
WORD fBSKey: 1;
WORD fHideTermHSB: 1;
WORD fHideTermVSB: 1;
BYTE emulate; /* terminal emulation */
BYTE fCtrlBits; /* mbbx 1.10: VT220 8BIT */
BYTE answerBack[DCS_ANSWERBACKSZ]; /* answer back string */
BYTE lineWrap;
BYTE localEcho;
BYTE sound;
BYTE inpCRLF;
BYTE outCRLF;
BYTE columns;
BYTE termCursor;
BYTE cursorBlink;
BYTE fontFace[DCS_FONTFACESZ]; /* font face */
WORD fontSize; /* font point size */
WORD language; /* mbbx 1.04 */
WORD bufferLines; /* terminal scroll buffer size */
/**** nov25,91 win31 added 2 bytes here! -sdj ********************/
/**** to compensate the xtra room was reduced by 2 bytes 34->32 -sdj *********/
BYTE setIBMXANSI;
BYTE useWinCtrl;
BYTE termXtraRoom[32]; /* extra room for terminal section */
/* Binary Transfers: 9 + 119 = 128 bytes */
WORD binXferFlags; /* binary transfer state DCS_BXF_... */
BYTE xBinType;
WORD rcvBlSz;
WORD sendBlSz;
BYTE retryCt;
BYTE psChar; /* mbbx 1.04: xferPSChar */
BYTE binXferXtraRoom[119]; /* extra room for bin xfer section */
/* Text Transfers: 33 + 95 = 128 bytes */
WORD txtXferFlags; /* text transfer state DCS_TXF_... */
BYTE xTxtType;
BYTE xChrType;
BYTE xChrDelay;
BYTE xLinType;
BYTE xLinDelay;
BYTE xLinStr[DCS_XLINSTRSZ];
BYTE xWordWrap;
BYTE xWrapCol;
BYTE txtXferXtraRoom[95]; /* extra room for txt xfer section */
/* Phone: 38 + 90 = 128 bytes */
WORD phoneFlags; /* phone state DCS_PHF_... */
BYTE phone[DCS_MODEMCMDSZ];
BYTE dlyRetry;
BYTE cntRetry;
BYTE flgRetry;
BYTE flgSignal;
BYTE phoneXtraRoom[90]; /* extra room for phone section */
/* Modem: 387 + 253 = 640 bytes */
WORD modemFlags; /* modem state DCS_MF_... */
BYTE xMdmType;
BYTE dialPrefix[DCS_MODEMCMDSZ];
BYTE dialSuffix[DCS_MODEMCMDSZ];
BYTE hangPrefix[DCS_MODEMCMDSZ];
BYTE hangSuffix[DCS_MODEMCMDSZ];
BYTE binTXPrefix[DCS_MODEMCMDSZ];
BYTE binTXSuffix[DCS_MODEMCMDSZ];
BYTE binRXPrefix[DCS_MODEMCMDSZ];
BYTE binRXSuffix[DCS_MODEMCMDSZ];
BYTE answer[DCS_MODEMCMDSZ];
BYTE originate[DCS_MODEMCMDSZ];
BYTE fastInq[DCS_MODEMCMDSZ]; /* mbbx 2.00: not used */
BYTE fastRsp[DCS_MODEMCMDSZ]; /* mbbx 2.00: not used */
BYTE modemXtraRoom[221]; /* extra room for modem section */
BYTE phone2[DCS_MODEMCMDSZ]; /* mbbx 2.00: not used */
/* Environment: 2510 + 50 = 2560 bytes */
WORD environmentFlags; /* environment state DCS_EVF_... */
BYTE fKeyNext[DCS_FKEYNEXTSZ];
BYTE fKeyTitle[DCS_FKEYLEVELS][DCS_NUMFKEYS][DCS_FKEYTITLESZ]; /* 4 * 8 * 20 = 640 */
BYTE fKeyText[DCS_FKEYLEVELS][DCS_NUMFKEYS][DCS_FKEYTEXTSZ]; /* 4 * 8 * 44 = 1408 */
BYTE systemVariables[DCS_NUMSYSVARS][DCS_SYSVARSZ]; /* 10 * 44 = 440 */
BYTE environmentXtraRoom[50]; /* extra room for environment section */
/* Parent: 42 + 86 = 128 bytes */
WORD parentFlags; /* arrange/stack flags DCS_PF_... */
SHORT dummy1;
SHORT dummy2;
SHORT dummy3;
SHORT dummy4;
BYTE keyMapTag[DCS_DCINITAGSZ]; /* key remapping tag (.ini file) */
BYTE videoAttrTag[DCS_DCINITAGSZ]; /* video tag (.ini file) */
BYTE szConnectorName[DCS_DCINITAGSZ]; /* slc nova 031 bjw nova 001 Connector DLL file name */
BYTE connectorConfigData[32]; /* slc nova 028 */
BYTE parentXtraRoom[86 - DCS_DCINITAGSZ - 32 ]; /* extra room for parent section */
} recTrmParams;
typedef recTrmParams FAR *LPSETTINGS;
#ifdef ORGCODE
#else
#pragma pack()
#endif
typedef
struct {
LONG row;
LONG col;
} ROWCOL;
typedef
struct {
GLOBALHANDLE hText;
RECT viewRect;
LONG selStart;
LONG selEnd;
BOOL active;
FARPROC clikLoop;
HFONT hFont;
} tEHandle;
#define TF_CHANGED 0x8000
#define TF_NOCLOSE 0x4000
#define TF_DIM 0x2000
#define TF_HIDE 0x1000
#define TF_DEFTITLE 0x0010
typedef
struct
{
BYTE filePath[PATHLEN+1];
BYTE fileName[FILENAMELEN+1];
BYTE fileExt[FILENAMELEN+1];
BYTE title[PATHLEN+1];
WORD flags;
} curDataRec;
typedef
struct {
BOOL good;
BYTE vRefNum[PATHLEN+1];
BYTE fName[PATHLEN+1];
} FSReply;
typedef
struct {
WORD hour;
WORD minute;
WORD second;
WORD dayOfWeek; /* 0 = Sunday ... 6 = Saturday */
WORD mm; /* Month (1 - 12) */
WORD dd; /* Day (1 - 31) */
WORD yy; /* Year (1980 - 2099) */
} DOSTIME;
typedef
struct {
BYTE fdType[4];
BYTE fdCreator[4];
INT fdFlags;
DWORD ioFlLgLen;
DWORD ioFlRLgLen;
LONG ioFlCrDat;
LONG ioFlMdDat;
} PARAMBLOCKREC;
typedef
struct {
BYTE reserved[21];
BYTE attribute;
WORD time;
WORD date;
LONG size;
BYTE filename[14];
} DTA;
typedef DTA FAR *LPDTA;
/*****************************************************************************/
/* Variable Definitions */
/*****************************************************************************/
/* WORD winVersion; */
INT itemHit;
BOOL doneFlag; /* End of DynaComm - Flag */
BOOL cancelAbort; /* Abort spooling process ? */
DWORD dwWriteFileTimeout; /* used for wait after writefile*/
BYTE MaxComPortNumberInMenu; /* N in max ComN, just now 4 */
BYTE bPortDisconnected; /* this flag is used to indicate that
the specified port is no longer accesible
user should select some other port. Typically
this will happen when user presses cntl-c or
quit at the telnet prompt, and after this the
right thing to do is to close this port and
prompt user to select other port */
int WindowXPosition; // x cord for createwindow
int WindowYPosition; // y cord for createwindow
int WindowWidth; // width for createwindow
int WindowHeight; // height for createwindow
CHAR szCurrentPortName[TMPNSTR+1]; // this variable will contain the name
// of port which terminal attempted an open on
BOOL bPortIsGood; /* to indicate that the port is good*/
typedef struct _ComNumAndName {
BYTE Index;
CHAR PortName[TMPNSTR+1];
} COMMNUMANDNAME, *PCOMMNUMANDNAME;
COMMNUMANDNAME arComNumAndName[20];
BOOL activTerm; /* Active terminal flag */
POINT nScrollRange;
POINT nScrollPos; /* port macro added MPOINT*/
BOOL noSelect; /* rjs bugs 020 */
BOOL activSelect;
BOOL answerMode; /* Answer mode flag */
BOOL mdmValid;
BOOL cursorValid;
BOOL debugFlg; /* Monitor mode (dis)enabled ? */
BOOL prtFlag;
BOOL transPrintFlag; /* rjs bug2 */
BOOL prtPause;
BOOL escSeq; /* Incoming are part of escSeq */
BOOL ansi;
BOOL escAnsi;
BOOL escGraphics;
BOOL escCursor;
BOOL escVideo;
BOOL statusLine; /* Status line enabled ? */
BOOL chInsMode;
BOOL vidInverse;
BOOL cursorKeyMode;
BOOL keyPadAppMode;
BOOL originMode;
BOOL grChrMode;
BOOL cursorOn;
BOOL dialing;
BOOL cursBlinkOn;
BOOL scrapSeq;
BOOL outBufSeq;
BOOL copiedTable;
BOOL useScrap;
BOOL mdmOnLine;
BOOL timerActiv;
BOOL useMacFileName;
BOOL vScrollShowing;
BOOL later;
BOOL bufferFull;
BOOL fKeysShown;
BOOL protectMode; /* mbbx: emulation */
BYTE szAppClass[20]; /* rjs bug2 */
BYTE szAppName_private[20]; /* Windows registered name */
BYTE szAppName[20]; /* Windows name */
BYTE szMessage[80]; /* Tiled window caption */
BYTE serBytes[LOCALMODEMBUFSZ]; /* Our IT local modem buffer */
BYTE attrib[25][134]; /* Screen attribute map */
BYTE curAttrib; /* Current character attribute */
BYTE ch; /* Modem character */
BYTE theChar; /* Modem character - all 7 bits */
BYTE the8Char; /* Modem character - all 8 bits */
BYTE tabs[132];
BYTE fileVolume[80];
BYTE macFileName[PATHLEN+1];
BYTE charSet[2];
BYTE chAscii;
BYTE emulInfo[128];
BYTE icsXlateTable[256]; /* mbbx 1.04: ics */
BYTE ansiXlateTable[256]; /* mbbx 1.06A: ics new xlate */
WORD keyMapState; /* mbbx 1.04: keymap */
STRING mdmResult[MDMRESLEN]; /* Non-displayed modem chars. */
STRING line25[132]; /* Status line 25 characters */
STRING strAnsi[STR255];
STRING outBuf[134];
STRING fKeyStr[STR255];
STRING keyPadString[5];
/*---------------------------------------------------------------------------*/
XFERFLAG xferFlag;
BOOL xferStopped;
INT xferErrors;
LONG xferLength;
HANDLE xferBufferHandle; /* rjs bugs 016 */
WORD xferBufferCount; /* rjs bugs 016 */
INT xferRefNo;
STRING xferVRefNum[PATHLEN];
STRING xferFname[PATHLEN];
STRING rdCH[256];
int ioCnt; /* flagged by port macro*/
WORD xferMenuAdds;
INT xferSndLF; /* mbbx: (-1,0,1)=>(NOLF,CR,CRLF) */
WORD xferViewPause; /* mbbx: auto line count */
WORD xferViewLine;
INT xferBlkNumber;
INT xferPct;
INT xferLinDelay;
INT xferChrDelay;
BOOL xferPaused;
BOOL xferBreak; /* mbbx 2.00: xfer ctrls */
BOOL xferSaveCtlChr;
BOOL xferTableSave;
BOOL xferWaitEcho;
BOOL xferAppend;
BOOL xferFast;
BYTE xferCharEcho;
BYTE xferPSChar; /* mbbx 1.02: packet switching */
STRING xferLinStr[DCS_XLINSTRSZ]; /* rkhx 2.00 */
STRING strRXBytes[32];
STRING strRXErrors[32];
STRING strRXFname[32];
STRING strRXFork[4];
TTXTTYPE xferTxtType;
TCHRTYPE xferChrType;
TLINTYPE xferLinType;
tBinType xferBinType;
tBinFork xferBinFork;
LONG xferEndTimer;
LONG xferOrig;
LONG xferBlkSize;
LONG xferRLgLen;
LONG xferLgLen;
LONG xferBytes;
LPBYTE xferBuffer;
CHAR NoMemStr[41];
/*---------------------------------------------------------------------------*/
INT serNdx; /* Index into local modem buff. */
INT serCount; /* Index comm. buffer */
INT curCol;
INT curLin;
INT maxChars;
INT maxLines;
INT escChar;
INT escSkip;
BOOL termDirty; /* mbbx: used to be termLine */
INT savTopLine;
INT curTopLine;
INT savLeftCol;
INT chrWidth, stdChrWidth;
INT chrHeight, stdChrHeight;
INT scrRgnBeg;
INT scrRgnEnd;
INT escCol;
INT escLin;
INT curLeftCol;
INT maxScreenLine; /* Windows only */
INT visScreenLine; /* Windows only */
INT curLevel;
INT vidBG;
INT textIndex;
INT outBufCol;
INT fKeyNdx;
INT keyPadIndex;
HANDLE sPort; /* Serial port id win32 */
INT portLocks; /* number of unreleased getPorts*/
BOOL sPortErr;
INT lineFeeds;
INT seqTableNdx;
INT progress;
INT decScs;
INT shiftCharSet;
INT activCursor;
INT scrollBegin;
INT scrollEnd;
INT nScroll;
INT fKeysHeight; /* (mbbx) */
INT ctrlsHeight; /* mbbx 1.04 */
ESCEXTEND escExtend;
TBLPOS tblPos;
VIDGRAPHICS vidGraphics;
KBD_STATE kbdLock;
DWORD gIdleTimer; /* rjs bug2 001 */
LONG lastChTick;
LONG timPointer;
LONG cursorTick;
LONG dialStart;
LONG textLength;
/* \\\ Long Pointers /// */
LPBYTE textPtr;
HWND hItWnd; /* Application Window Handle */
HWND hTermWnd; /* Window handle to terminal */
HWND hdbmyControls; /* Window handle to fkey dlg. */
HWND hdbXferCtrls; /* mbbx 1.04: term ctrls */
HWND hEdit;
HWND fKeyHdl;
HWND hwndThread; // rjs thread
DWORD dwTimerRes; // rjs thread
HWND commThread; // rjs thread
BOOL CommThreadExit; // sdj thread
BOOL gotCommEvent; // rjs thread
HANDLE overlapEvent; // rjs thread
BOOL gbThreadDoneFlag; // rjs thread
HANDLE hMutex; // rjs thread
BOOL gbXferActive; // rjs thread
BOOL bgOutStandingWrite; /* slc swat */
ControlHandle xferCtlStop;
ControlHandle xferCtlPause;
ControlHandle xferCtlScale;
ControlHandle fKeyHandles[DCS_NUMFKEYS+1];
HDC hPrintDC;
HDC thePort;
HBRUSH theBrush;
HBRUSH blackBrush;
HMENU hMenu;
WORD sysAppMenu[16]; /* mbbx 2.00.03: control app menu */
HMENU hEditMenu; /* Edit popup for Terminal WND */
HMENU hLastEdit;
HANDLE hInst;
HANDLE hIconLib; /* mbbx 1.10: DCICONS.LIB */
HANDLE hemulKeyInfo;
HANDLE tEScrapHandle;
HANDLE hDevNames;
HANDLE hDevMode;
HBITMAP hCloseBox; /* mbbx: mdi */
HANDLE hDCCLib; /* mbbx 2.00: compile */
HWND hDCCDlg; /* mbbx 2.00: compile */
MSG msg; /* Application queue messages */
RECT cursorRect; /* Rectangle of the current curs*/
RECT timerRect;
RECT statusRect; /* CCL commands show up in here */
POINT lastPoint; /* last hTermWnd client point */
DOSTIME startTimer[MAXTIMERNUM]; /* mbbx 2.00: multiple timers */
DOSTIME lastTime;
recTrmParams trmParams; /* Contains global 'settings' */
tEHandle hTE; /* Main text edit window struct */
curDataRec termData; /* Current data associated w/ */
/* terminal window */
PARAMBLOCKREC xferParams;
struct icontype
{
HICON hIcon;
INT last;
BOOL flash;
INT dy;
INT dx;
} icon;
struct /* mbbx 2.00: intl date/time... */
{
INT iDate; /* 0=MDY, 1=DMY, 2=YMD */
BYTE sDate[2]; /* date separator */
INT iTime; /* 0=12HR, 1=24HR */
BYTE sTime[2]; /* time separator */
BYTE s1159[4]; /* AM trailing string */
BYTE s2359[4]; /* PM trailing string */
} intlData;
/* \\\ Functions & Procedures /// */
/* FARPROC lpdbPortInit; mbbx: now local */
/* mbbx 1.04: obsolete...
FARPROC lpitWndProc;
FARPROC lptrmWndProc;
FARPROC lpSizeBoxProc;
FARPROC lpdbStdFN;
FARPROC lpdbGetPutFN;
FARPROC lpdbTypTFile;
FARPROC lpdbRcvTFile;
FARPROC lpdbSendFile;
FARPROC lpdbPrompt;
FARPROC lpdbSelSavApp;
FARPROC lpdbPhon;
FARPROC lpdbEmul;
FARPROC lpdbTerm;
FARPROC lpdbFkey;
FARPROC lpdbTxtX;
FARPROC lpdbBinX;
FARPROC lpdbComm;
FARPROC lpdbModem;
FARPROC lpEditProc;
*/
procPtr termState;
procPtr escHandler;
procPtr pEscTable[128];
procPtr aEscTable[128];
procPtr pProcTable[72]; /* mbbx 2.00 ... */
procPtr aProcTable[72];
procPtr ansiParseTable[16];
/* KERMIT STUFF */
#define DEL 127 /* Delete (rubout) */
/* crt also defines EOF so dont define this twice -sdj*/
#ifndef EOF
#define EOF -1
#endif
#define DEFESC '^' /* Default escape character for CONNECT */
#define DEFIM TRUE /* Default image mode */
#define DEFFNC FALSE
#define KERFILE 1 /* bufemp goes to a file */
#define KERBUFF 2 /* bufemp goes to KER_buff */
#define KERSCREEN 4 /* bufemp goes to the screen */
#define tochar(ch) ((ch) + ' ')
#define unchar(ch) ((ch) - ' ')
#define ctl(ch) ((ch) ^ 64 )
#define unpar(ch) ((ch) & 127)
INT
KER_size, /* Size of present data */
KER_rpsiz, /* Maximum receive packet size */
KER_spsiz, /* Maximum send packet size */
KER_pad, /* How much padding to send */
KER_timint, /* Timeout for foreign host on sends */
KER_n, /* Packet number */
KER_numtry, /* Times this packet retried */
KER_oldtry, /* Times previous packet retried */
ttyfd, /* File descriptor of tty for I/O, 0 if remote */
KER_remote, /* -1 means we're a remote kermit */
KER_image, /* -1 means 8-bit mode */
KER_parflg, /* TRUE means use parity specified */
KER_turn, /* TRUE means look for turnaround char (XON) */
KER_lecho, /* TRUE for locally echo chars in connect mode */
KER_8flag, /* TRUE means 8th bit quoting is done */
KER_initState, /* jtf 3.20 Used for retries durring send/receive */
KER_parMask, /* tge Used for auto parity selection */
KER_mask, /* tge Used for auto parity checsum masking */
KER_pktdeb, /* TRUE means log all packet to a file */
KER_filnamcnv, /* -1 means do file name case conversions */
KER_filecount, /* Number of files left to send */
KER_timeout; /* TRUE means a timeout has occurred. */
BYTE
KER_state, /* Present state of the automaton */
KER_cchksum, /* Our (computed) checksum */
KER_padchar, /* Padding character to send */
KER_eol, /* End-Of-Line character to send */
KER_escchr, /* Connect command escape character */
KER_quote, /* Quote character in incoming data */
KER_select8, /* 8th bit quote character to send either 'Y' or '&'*/
KER_firstfile,
KER_getflag,
**KER_filelist, /* List of files to be sent */
*KER_filnam, /* Current file name */
recpkt[94], /* Receive packet buffer */
packet[94], /* Packet buffer */
KER_buff[94], /* buffer for translations */
outstr[80], /*output string for debugging and translations */
KERRCVFLAG; /* direct recieved buffers to screen, file or buffer*/
LONG
KER_bytes; /* number of bytes received */
/*
19 * 2 byte = 38 bytes
9 * 1 byte
2 * 4 bytes
3 * 94 bytes
1 * 80 bytes
1 * 1 byte = 380 bytes
1 * 4 bytes = 4 bytes
422 bytes total + room for filenames */
/*****************************************************************************/
/* Macro Definitions */
/*****************************************************************************/
#define proc void near
#define getResId MAKEINTRESOURCE
#define eraseRect(rectangle) FillRect(getPort(),(LPRECT) &rectangle, theBrush); releasePort()
#define invalRect(rectangle) InvalidateRect(hTermWnd, (LPRECT) &rectangle)
#define validRect(rectangle) ValidateRect(hTermWnd, (LPRECT) &rectangle)
#define invertRect(rectanlge) InvertRect(getPort(), (LPRECT) &rectanlge); releasePort()
#define tickCount() GetCurrentTime() * 60/1000
#define TEDelete(h) SendMessage(h, WM_CLEAR, 0, 0L)
#define sysBeep() MessageBeep(0)
#define nullTerminate(str) str[*str+1] = 0
#define strEquals(dst,src) memcpy(dst, src, (WORD) src[0] + 1), nullTerminate(dst)
#define blockMove(src, dst, len) lmovmem(src, dst, (DWORD) len)
#define equalString(str1, str2) !strcmpi(str1, str2)
#define repeat do
#define until(cond) while(!(cond))
#define stringToNum(str,num) sscanf(&str[1], "%ld", num)
#define c2p(str1, str2) lstrcpy((LPBYTE) &str1[1], (LPBYTE) str2), *str1 = lstrlen((LPBYTE) &str1[1])
#define p2c(str1, str2) lmovmem((LPBYTE) &str2[1], (LPBYTE) str1, (unsigned) *str2), str1[*str2] = NULL
#define SWAPBYTES(i) (((WORD) i >> 8) | (i << 8))
#define yield(lpmsg, hWnd) PeekMessage(lpmsg, hWnd, 0, 0, FALSE)
/*****************************************************************************/
/* Forward Procedure Definitions */
/*****************************************************************************/
/*** INITCODE.C ***/
//WORD MMain(HANDLE, HANDLE, LPSTR, INT); /* causing compiler to puke*/
BOOL initWndClass(); /* mbbx 1.04: was registerIt(); */
VOID initPort();
VOID initIcon();
BOOL createWindows(INT);
/* VOID hidemyControls(); mbbx 2.00: obsolete... */
VOID setDefaultFonts();
VOID sizeWindows();
HBITMAP NEAR extractCloseBitmap();
BOOL initWindows(HANDLE, HANDLE, INT);
VOID initDialogs();
INT_PTR APIENTRY dbPortInit(HWND, UINT, WPARAM, LPARAM);
BOOL NEAR setProfileExtent(BYTE *, BYTE *); /* mbbx 2.00: default paths... */
BOOL NEAR initFileDocData(FILEDOCTYPE fileType, WORD strResID,BYTE *fileExt,BYTE *szSection);
VOID initProfileData();
BOOL setup();
/* VOID initMemPort(); mbbx 2.00: */
VOID NEAR initIconLib();
BOOL NEAR initTermFile(BYTE *);
BOOL NEAR initTaskExec(BYTE *);
BOOL NEAR initEditFile(INT, BYTE *);
VOID NEAR readCmdLine(LPSTR);
VOID freeItResources();
/*** WINMAIN.C ***/
VOID FAR mainProcess();
VOID FAR mainEventLoop();
BOOL NEAR checkInputBuffer(MSG *);
void APIENTRY idleProcess(VOID);
VOID FAR updateTimer();
BOOL updateFKeyButton(WPARAM wParam ,LPARAM lParam,WORD status); /* JAP fix adding wParam*/
VOID getTimeString(BYTE *, DOSTIME *); /* mbbx 2.00: intl date/time */
VOID FAR cursorAdjust();
VOID NEAR blinkCursor();
BOOL NEAR taskProcess();
/*** WNDPROC.C ***/ /* mbbx 1.04 ... */
VOID selectTopWindow();
/* changed WORD -> UINT -sdj */
LRESULT APIENTRY DC_WndProc(HWND, UINT, WPARAM, LPARAM);
VOID termKeyProc(HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam);
/* changed WORD -> UINT -sdj */
LRESULT APIENTRY TF_WndProc(HWND, UINT, WPARAM, LPARAM);
/*** CHRPAINT.C ***/
VOID eraseColorRect(HDC hDC,LPRECT rect,BYTE cAttr);
VOID reDrawTermScreen(INT, INT, INT); /* mbbx 2.00.06: jtf disp2 */
VOID reDrawTermLine(INT, INT, INT);
VOID updateLine(INT);
VOID drawTermLine(LPBYTE txtPtr,INT len, INT lin, INT col,BYTE lAttr,BYTE cAttr);
VOID setAttrib(BYTE cAttr);
/*** DOFILE.C ***/
VOID getFileDocData(FILEDOCTYPE, BYTE *, BYTE *, BYTE *, BYTE *);
VOID setFileDocData(FILEDOCTYPE, BYTE *, BYTE *, BYTE *, BYTE *); /* mbbx 2.00: no forced extents... */
VOID getDataPath(FILEDOCTYPE, BYTE *, BYTE *);
BOOL setDataPath(FILEDOCTYPE, BYTE *, BOOL);
BOOL EditGetDocData(BYTE *, BYTE *, BYTE *);
BOOL EditSetDocData(BYTE *, BYTE *, BYTE *, WORD, BOOL);
/*** MODEMINP.C ***/
VOID cleanRect(INT, INT);
VOID updateLine(INT);
proc scrollBuffer();
proc doScroll();
VOID trackCursor();
VOID termCleanUp();
proc putChar(BYTE ch);
VOID checkSelect();
VOID clrAttrib(INT, INT, INT, INT);
proc clrLines(INT, INT);
proc clrChars(INT, INT, INT);
VOID getUnprot(INT, INT, INT *, INT *);
INT getProtCol();
proc pCursToggle();
proc pCursOn();
proc pCursOff();
proc pCursRC();
proc pSetStatusLine(); /* mbbx 1.03: TV925 ... */
proc pCursHome();
proc pVideo(BYTE attr);
proc pCursRelative(INT, INT);
proc pCursUp();
proc pCursDn();
proc pCursRt();
proc pCursLt();
proc pVPosAbsolute();
proc pHPosAbsolute();
proc pClrScr();
proc pClrBol();
proc pClrBop();
proc pClrEol();
proc pClrEop();
proc pClrLine();
proc scrollAttrib(INT, INT, INT, BOOL);
proc pLF();
proc pInsLin(INT, INT);
proc pDelLin(INT, INT, INT);
proc pDelChar(INT);
VOID begGraphics();
VOID endGraphics();
proc pGrSemi();
proc pGrDoIt(INT, HBRUSH);
proc pGrFill();
proc pGrChar();
proc pSetGrMode();
proc pSetMode();
proc pDecScs();
proc getParms();
proc pInquire();
proc pTab();
proc pClearAllTabs();
proc pSetTab();
proc pClearTab();
proc pCmpSrvResponse();
proc pSndCursor();
proc pIndex();
proc pRevIndex();
proc pSetLineAttrib();
proc pInsChar();
proc pSaveCursorPos();
proc pRestoreCursorPos();
proc pEscSkip();
proc pNullState();
proc pCursorState();
proc pVPosState();
proc pHPosState();
proc pLAttrState();
proc pAnsi();
proc pAnsiState();
proc pGrState();
proc pSkipState();
proc pReverseOff();
proc pReverseOn();
proc pProtOff();
proc pProtOn();
proc pBegProtect(); /* mbbx 1.03: TV925 */
proc pEndProtect(); /* mbbx 1.03: TV925 */
proc pBegGraphics(); /* mbbx 1.03: TV925 */
proc pEndGraphics(); /* mbbx 1.03: TV925 */
proc pLinDel();
proc pCharDel();
proc pLinIns();
proc pNextLine();
proc pClrAll();
proc pPrintOn();
proc pPrintOff();
proc pTransPrint(); /* rjs bug2 */
VOID NEAR checkTransPrint(BYTE); /* rjs swat */
proc pVideoAttrib();
proc pVideoAttribState();
proc pCursorOnOff();
proc pCursorOnOffState();
proc pAnswerBack();
proc pEchoOff();
proc pEchoOn();
proc pCR();
proc pBackSpace();
proc pBeep();
proc pEscSequence();
VOID NEAR aSetCompLevel(); /* mbbx 1.10: VT220 8BIT */
VOID NEAR pSetCtrlBits(); /* mbbx 2.00: VT220 8BIT */
proc aCursor();
proc aClrEol();
proc aClrEop();
proc aCursUp();
proc aCursDn();
proc aCursRt();
proc aCursLt();
proc aClearTabs();
proc aVideo();
proc aSetMode();
proc aReport();
proc aSetScrRgn();
proc aDelLin();
proc aInsLin();
proc aDelChar();
proc pVT100H();
proc pVT100D();
proc pVT100M();
proc pVT100c();
proc pVT100P(); /* mbbx: new routine */
proc pDCS(); /* mbbx: yterm */
proc pDCSTerminate();
proc ansiArgument();
proc ansiDelimiter();
proc ansiHeathPrivate();
proc ansiDecPrivate();
proc testPause(BYTE);
BOOL NEAR writeRcvChar(BYTE theChar); /* mbbx 1.10 */
VOID NEAR putRcvChar(BYTE theChar); /* mbbx 1.10 */
VOID putDebugChar(BYTE, BOOL); /* mbbx 2.00: FAR, bRcvChar... */
VOID modemInp(INT, BOOL); /* mbbx 1.10 */
/*** PHONE.C ***/
BOOL termSendCmd(BYTE *str, INT nBytes,WORD wFlags);
/*** RDMODEM.C ***/
BOOL FAR testWhenEnabled();
BOOL FAR testWhenActive();
BOOL NEAR brake();
VOID rdModem(BOOL);
/*** SERIAL.C ***/
VOID resetSerial(recTrmParams *trmParams, BOOL bLoad, BOOL bInit, BYTE byFlowFlag); /* slc swat */
BOOL PASCAL NEAR resetSerialError0(recTrmParams *trmParams, WORD count);
BOOL PASCAL NEAR resetSerialError1(recTrmParams *trmParams, WORD count);
DWORD checkCommEvent(LPVOID);
/*** SETTINGS.C ***/
BOOL doSettings(INT, DLGPROC);
/* changed WORD -> UINT -sdj */
INT_PTR APIENTRY dbPhon(HWND, UINT, WPARAM, LPARAM);
INT_PTR APIENTRY dbEmul(HWND, UINT, WPARAM, LPARAM);
INT_PTR APIENTRY dbTerm(HWND, UINT, WPARAM, LPARAM);
VOID NEAR setDlgFkeys(HWND, INT);
VOID NEAR getDlgFkeys(HWND, INT);
/* changed WORD -> UINT -sdj */
INT_PTR APIENTRY dbFkey(HWND, UINT, WPARAM, LPARAM);
VOID NEAR enableChrItems(HWND, BOOL);
VOID NEAR enableLinItems(HWND, BOOL);
/* changed WORD -> UINT -sdj */
INT_PTR APIENTRY dbTxtX(HWND, UINT, WPARAM, LPARAM);
INT_PTR APIENTRY dbBinX(HWND, UINT, WPARAM, LPARAM);
INT_PTR APIENTRY dbComm(HWND, UINT, WPARAM, LPARAM);
INT_PTR APIENTRY dbComBios(HWND, WORD, WPARAM, LPARAM); /* mbbx 2.00: network... */
INT_PTR APIENTRY dbNetBios(HWND, WORD, WPARAM, LPARAM); /* mbbx 2.00: network... */
INT_PTR APIENTRY dbUBNetCI(HWND, WORD, WPARAM, LPARAM); /* mbbx 2.00: network... */
INT_PTR APIENTRY dbDevice(HWND, WORD, WPARAM, LPARAM); /* mbbx 2.00: network... */
/* changed WORD -> UINT -sdj */
INT_PTR APIENTRY dbModem(HWND, UINT, WPARAM, LPARAM); /* mbbx 1.10: CUA... */
VOID chkGrpButton(HWND, INT, INT, INT);
BYTE whichGrpButton(HWND, INT, INT);
/* mbbx 1.04: obsolete routines...
VOID initDlgPhon ();
VOID dlgCommandPhon ();
VOID initDlgEmul ();
VOID dlgCommandEmul ();
VOID initDlgTerm ();
VOID dlgCommandTerm ();
VOID initDlgFkey ();
VOID dlgCommandFkey ();
VOID setFkeys ();
VOID getFkeys ();
VOID enableButton ();
VOID initDlgTxtX ();
VOID dlgCommandTxtX ();
VOID initDlgBinX ();
VOID dlgCommandBinX ();
VOID initDlgComm ();
VOID dlgCommandComm ();
BOOL APIENTRY dbModem();
*/
INT_PTR APIENTRY dbKerRemote(HWND, UINT, WPARAM, LPARAM);
/*
VOID initDlgKerRemote();
VOID dlgCommandKerRemote();
*/
/*** MDMUTIL.C ***/
BOOL mdmConnect();
VOID modemReset();
VOID modemSendBreak(INT);
INT modemBytes();
/* BOOL modemAvail(); */
BYTE getMdmChar(BOOL); /* mbbx 1.06A: ics new xlate */
BOOL getRcvChar(BYTE *, BYTE);
BOOL waitRcvChar(BYTE *, WORD, BYTE,BYTE, ...);
BOOL modemRd(BYTE *); /* obsolete !!! */
BOOL modemRdy(); /* obsolete !!! */
BOOL modemWt(BYTE *); /* obsolete !!! */
VOID flushRBuff();
BOOL modemWrite(LPSTR, INT);
VOID modemWr(BYTE);
VOID termStr(STRING *, INT, BOOL);
/*** YTERM.C ***/
VOID yTermRcvBlock();
VOID yTermEnd();
VOID yTermCancel();
VOID yTermInit();
VOID blk43Decode();
VOID yTermPutStr();
INT yTermBlkEncode();
VOID ytSendCRC();
VOID yTermResponse();
VOID yTermBegin();
VOID yTermCheckSum();
VOID hostReady();
BYTE hostAck();
/*** DCUTIL1.C ***/
VOID setDefaults();
BOOL clearTermBuffer(UINT prevLines,UINT bufLines,UINT lineWidth); /* mbbx 2.00.03 ... */
BOOL initTermBuffer(WORD bufLines, WORD lineWidth,BOOL bReset);
VOID resetTermBuffer(VOID);
/*** DCUTIL2.C ***/
VOID showTerminal(BOOL, BOOL); /* mbbx 2.00.08: term init */
VOID showHidedbmyControls(BOOL, BOOL); /* mbbx 2.00 */
/*** DCUTIL3.C ***/
VOID buildTermFont();
VOID clearFontCache();
// VOID lsetmem(LPSTR, BYTE, WORD);
VOID getFileDate(DOSTIME *, INT);
// VOID lmovmem(LPSTR, LPSTR, WORD);
/*** SCROLL.C ***/
VOID updateTermScrollBars(BOOL); /* mbbx 2.00.06: jtf display... */
proc scrollTermWindow(INT, INT);
proc scrollTermLine(INT, INT, INT);
VOID scrollBits();
VOID scrollUp(INT, INT, INT);
VOID scrollDown(INT, INT, INT);
VOID pageScroll(INT);
VOID hPageScroll(INT);
VOID trackScroll(INT, INT);
/*** SHOWSTAT.C ***/ /* mbbx 2.00: xfer ctrls... */
VOID setXferCtrlButton(WORD wCtrlID, WORD wResID);
INT NEAR placeXferCtrl(HWND, INT);
VOID showXferCtrls(WORD fShowCtrls);
HDC NEAR beginXferCtrlUpdate(HWND, RECT *, BOOL);
VOID NEAR setItemText(INT, BYTE *, BOOL);
VOID bSetUp(BYTE *);
VOID showScale();
VOID updateProgress(BOOL);
VOID showBBytes(LONG, BOOL);
VOID showRXFname(BYTE *, INT);
VOID showBErrors(INT);
VOID updateIndicators();
/* mbbx: yterm mods to SNDBFILE.C */
VOID setupFinderInfo();
VOID getFinderInfo();
proc scrollTopPart ();
proc scroll ();
VOID pageFeed ();
VOID paintTerm ();
VOID setFKeyTitles(); /* mbbx 2.00 ... */
BOOL NEAR testFKeyLevel(INT);
INT NEAR nextFKeyLevel(INT);
VOID setFKeyLevel(INT, BOOL);
VOID doCommand ();
VOID resetEmul ();
VOID openAwindow ();
VOID clearBuffer ();
VOID termAnswer ();
VOID termSpecial ();
VOID clearModes ();
VOID onCursor ();
VOID offCursor ();
VOID putCursor ();
VOID reDrawTermLine ();
VOID toggleCursor ();
VOID doEditMenu ();
VOID scrollText ();
VOID xferFile ();
VOID termSpecial ();
VOID stripLeadingSpaces ();
VOID xferEnd ();
VOID trackScroll ();
VOID scrollBits ();
VOID scrollUp ();
VOID scrollDown ();
VOID pageScroll ();
VOID hPageScroll ();
VOID teScr ();
VOID delay (UINT units, DWORD *endingCount);
VOID setDefaultFonts ();
/* VOID zoomTerm (); */
VOID zoomChild(HWND);
VOID freeItResources ();
VOID updateTimer ();
VOID readDateTime ();
VOID timerAction(BOOL, BOOL); /* mbbx 1.03: VOID tmrAction(); */
VOID timerToggle(BOOL); /* mbbx 1.03: VOID tmrToggle(); */
VOID clipRect ();
//VOID setAttrib ();
VOID getMdmResult ();
VOID saveSelection ();
VOID frameTime ();
VOID loadKeyPadString ();
VOID rectCursor ();
VOID exitSerial ();
VOID errTest ();
VOID newFile ();
VOID clsFile ();
VOID savFile ();
VOID svsFile ();
VOID opnFile ();
VOID getWTitle ();
VOID addExtension();
VOID setWTitle ();
VOID execErr ();
VOID addParen ();
VOID rdErr ();
VOID stripFileExt ();
/* VOID forceExtension(); mbbx 2.00: defined in FILEOPEN.H */
VOID sndTFile ();
VOID typTFile ();
VOID rcvTFile ();
VOID sndBFile ();
VOID rcvPutFile ();
VOID rcvBFile ();
VOID rcvErr ();
VOID rcvPre ();
VOID showRXFname ();
VOID showScale ();
VOID sndBPre ();
VOID sndBFileErr ();
VOID showBErrors ();
VOID rcvErr ();
VOID rcvBPre ();
VOID showBBytes ();
VOID rxEventLoop ();
VOID rcvAbort ();
VOID getDateTime ();
VOID sec2date ();
VOID date2secs ();
VOID termActivate ();
VOID termDeactivate ();
VOID termSetSelect ();
VOID termClick ();
VOID releasePort ();
VOID dialPhone ();
VOID hangUpPhone ();
VOID waitCall ();
VOID printchar ();
VOID lineFeed ();
VOID endOfPrintJob ();
VOID prAction ();
VOID prSelection ();
VOID xShowLine ();
VOID ansInTalk ();
VOID ansKermit();
VOID selectTermFont ();
VOID sizeTimerRect ();
VOID hideTermCursor ();
VOID showTermCursor ();
BOOL getScrCh ();
BOOL copyTable ();
BOOL myAbort();
BOOL keyPadSequence ();
BOOL getArg ();
BOOL APIENTRY dbSendFile ();
BOOL APIENTRY pasClikLoop ();
BOOL APIENTRY dbSelSavApp ();
INT_PTR APIENTRY dbAbortDlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
//BOOL APIENTRY dbDialing ();
//BOOL APIENTRY dbmyControls();
BOOL writeFile ();
BOOL myPutFile ();
BOOL getPutFN ();
BOOL newPath ();
BOOL searchFileSpec ();
BOOL checkFilename ();
BOOL isCharLegal ();
BOOL fnErr ();
BOOL fileExist ();
BOOL ldFile ();
BOOL readFile ();
BOOL rdFileErr ();
BOOL APIENTRY dbStdFN ();
BOOL APIENTRY dbGetPutFN ();
BOOL APIENTRY dbTypTFile ();
BOOL APIENTRY dbRcvTFile ();
BOOL APIENTRY abortDlgProc (HDC, INT);
BOOL readMacSettings ();
BOOL writeMacSettings ();
BOOL readMacSettings ();
BOOL writeMacSettings ();
//BOOL APIENTRY dbDialing ();
BOOL rcvPutBFile ();
BOOL getSndTFile ();
BOOL getSndBFile ();
BOOL getSndTFile ();
BOOL startOfPrintJob ();
BYTE *concat ();
// BYTE *getcwd ();
/* this is redefined here, now including the cruntime headers -sdj*/
/* BYTE *strchr (); */
BYTE whichGrpButton ();
INT valIndex ();
INT pos ();
INT classifyKey (WORD vrtKey);
INT availSerial ();
INT testBox ();
INT sysError ();
INT wrErr ();
LONG fileSize();
HDC getPort ();
HANDLE macToDOSText ();
/* VOID newHTE (); mbbx 2.00.03: old code */
/* VOID crBuffer(int, int); mbbx 2.00.03: old code */
/*** DATESTUF.C ***/
VOID date2secs (DOSTIME *, LONG *);
/*were not defined but called from initcode.c */
BOOL PrintFileInit();
void PrintFileShutDown ();
VOID sizeFkeys(LONG clientSize);
VOID initChildSize(RECT *pRect);
VOID setDefaultAttrib(BOOL bLoad);
VOID initDlgPos(HWND hDlg);
VOID initComDevSelect(HWND hDlg, WORD wListID, BOOL bInit);
BYTE getComDevSelect(HWND hDlg, WORD wListID, BYTE *newDevRef);
BOOL getFileType(BYTE *fileName, BYTE *fileExt);
VOID taskInit();
VOID keyMapInit();
BOOL termInitSetup(HANDLE hPrevInstance);
VOID forceExtension(BYTE *fileName, BYTE *fileExt, BOOL bReplace);
BOOL termFile(BYTE *filePath,BYTE *fileName,BYTE *fileExt,BYTE *title,WORD flags);
VOID sizeTerm(LONG termSize);
VOID keyMapCancel();
/*****************/
/* were not defined but called from winmain.c */
VOID xSndBFile();
VOID xRcvBFile();
/**************/
/* were not defined but called from winmain.c*/
void myDrawIcon(HDC hDC, BOOL bErase);
BOOL termCloseAll(VOID);
void flashIcon(BOOL bInitFlash, BOOL bEndProc);
WORD childZoomStatus(WORD wTest, WORD wSet);
VOID initMenuPopup(WORD menuIndex);
BOOL keyMapTranslate(WPARAM *wParam, LPARAM *lParam, STRING *mapStr);
BOOL fKeyStrBuffer(BYTE *str,WORD len);
BOOL keyMapSysKey(HWND hWnd, WORD message , WPARAM *wParam, LPARAM lParam); //sdj: AltGr
VOID longToPoint(long sel, POINT *pt);
VOID keyMapKeyProc(HWND hWnd, WORD message, WPARAM wParam, LPARAM lParam); //sdj: AltGr
BOOL termCloseFile(VOID);
VOID hpageScroll(int which);
VOID PrintFileString(LPSTR lpchr,LONG count, BOOL bCRtoLF);
BOOL PrintFileOn(HANDLE theInstance,HWND theWnd,
LPSTR thePrintName,LPSTR thePrintType,LPSTR thePrintDriver,
LPSTR thePrintPort,BOOL showDialog);
BOOL PrintFileOff();
void PrintFileLineFeed (BOOL nextLine);
void PrintFilePageFeed ();
BOOL termSaveFile(BOOL bGetName);
int testMsg(BYTE *str0, BYTE* str1, BYTE *str2);
VOID xferStopBreak(BOOL bStop);
VOID xferPauseResume(BOOL bPause, BOOL bResume);
void selectFKey(UINT wIDFKey);
BOOL sendKeyInput(BYTE theByte);
VOID sndAbort ();
int countChildWindows(BOOL bUnzoom);
VOID stripBlanks (LPBYTE ptr, DWORD *len);
VOID doFileNew();
VOID doFileOpen();
VOID doFileClose();
VOID doFileSave();
VOID doFileSaveAs();
VOID stripControl(STRING *str);
int TF_ErrProc(WORD errMess, WORD errType,WORD errCode);
BOOL XM_RcvFile(WORD rcvStatus);
BOOL FAR KER_Receive(BOOL bRemoteServer);
VOID listFontSizes(BYTE *faceName, BYTE *sizeList, int maxSize);
void updateIcon();
BOOL XM_SndFile(WORD);
BOOL FAR KER_Send();
VOID setAppTitle();
VOID icsResetTable(WORD icsType);
VOID rcvFileErr();
/* connector.c needs this fn from wndproc.c */
HWND dlgGetFocus();
/* initcode.c needs this from connect.c */
BOOL initConnectors(BOOL bInit);
/* defined in messages.c called from dcutil */
INT testResMsg(WORD wResID);
/* two famous functions. dont know how this was working in win3.0 -sdj*/
/* these functions have some case problem, called with uppercase B and
defined with lowercase b in term.c, not changed to Board */
VOID keyBoardToMouse(INT partCode);
/* this one was called as bSetup and defined as bSetUp() in showstat.c */
VOID bSetup(BYTE *str);
void APIENTRY nextFlash(HWND hWnd, UINT message, UINT_PTR nIDEvent, DWORD sysTime);
INT_PTR APIENTRY dbDialing(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
INT_PTR APIENTRY dbmyControls(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
/* rjs - add prototype for the about dialog function */
INT_PTR CALLBACK dbAbout(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);