|
|
#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);
|