807 lines
26 KiB
C
807 lines
26 KiB
C
/*===========================================================================*/
|
|
/* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */
|
|
/* Houston, Texas */
|
|
/*===========================================================================*/
|
|
|
|
#define NOGDICAPMASKS TRUE
|
|
#define NOVIRTUALKEYCODES TRUE
|
|
#define NOICONS TRUE
|
|
#define NOKEYSTATES TRUE
|
|
#define NOSYSCOMMANDS TRUE
|
|
#define NOATOM TRUE
|
|
#define NOCLIPBOARD TRUE
|
|
#define NODRAWTEXT TRUE
|
|
#define NOMINMAX TRUE
|
|
#define NOOPENFILE TRUE
|
|
#define NOSCROLL TRUE
|
|
#define NOHELP TRUE
|
|
#define NOPROFILER TRUE
|
|
#define NODEFERWINDOWPOS TRUE
|
|
#define NOPEN TRUE
|
|
#define NO_TASK_DEFINES TRUE
|
|
#define NOLSTRING TRUE
|
|
#define WIN31
|
|
|
|
#include <windows.h>
|
|
#include <port1632.h>
|
|
#include "dcrc.h"
|
|
#include "dynacomm.h"
|
|
#include "task.h"
|
|
#include "video.h"
|
|
#include <stdlib.h> /* adding for _searchenv and exit crt -sdj*/
|
|
|
|
|
|
VOID NEAR PASCAL DestroyWindows()
|
|
{
|
|
if(hdbmyControls)
|
|
DestroyWindow(hdbmyControls);
|
|
if(hdbXferCtrls)
|
|
DestroyWindow(hdbXferCtrls);
|
|
if(hTermWnd)
|
|
DestroyWindow(hTermWnd);
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* WinMain() - entry point from Windows [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
int APIENTRY WinMain(HANDLE hInst, HANDLE hPrevInst, LPSTR lpCmdLine, INT nCmdShow)
|
|
{
|
|
CHAR errmsg[115],caption[18];
|
|
VOID (APIENTRY *lpfnRegisterPenApp)(WORD, BOOL) = NULL;
|
|
|
|
readDateTime(startTimer);
|
|
trmParams.comDevRef = ITMNOCOM;
|
|
|
|
if(!initConnectors(TRUE))
|
|
return (FALSE);
|
|
|
|
/* Added 02/2591 w-dougw check that all windows are created. */
|
|
if(!initWindows(hInstance, hPrevInstance, cmdShow))
|
|
{
|
|
LoadString(hInstance,STR_ERRCAPTION,caption,sizeof(caption));
|
|
LoadString(hInstance,STR_OUTOFMEMORY,errmsg,79);
|
|
MessageBox(NULL,errmsg,caption,MB_ICONHAND|MB_SYSTEMMODAL);
|
|
return(FALSE);
|
|
}
|
|
initDialogs();
|
|
if(!setup())
|
|
{
|
|
LoadString(hInstance,STR_ERRCAPTION,caption,sizeof(caption));
|
|
LoadString(hInstance,STR_OUTOFMEMORY,errmsg,79);
|
|
MessageBox(NULL,errmsg,caption,MB_ICONHAND|MB_SYSTEMMODAL);
|
|
return(FALSE);
|
|
}
|
|
DEBOUT("Calling: %s\n","readCmdLine()");
|
|
readCmdLine(lpszCmdLine);
|
|
DEBOUT("Outof: %s\n","readCmdLine()");
|
|
|
|
DEBOUT("Calling: %s\n","PrintFileInit()");
|
|
PrintFileInit(); /* jtfterm */
|
|
DEBOUT("Outof: %s\n","PrintFileInit()");
|
|
|
|
/* Register as a good little pen-windows app
|
|
*/
|
|
/* NOTE**** have to confirm that this is the way to go GetSystemMet RC-sdj*/
|
|
/* added typecasting of (HANDLE) to param 1 */
|
|
if (lpfnRegisterPenApp = GetProcAddress((HANDLE)GetSystemMetrics(SM_PENWINDOWS),
|
|
"RegisterPenApp"))
|
|
(*lpfnRegisterPenApp)(1, TRUE);
|
|
|
|
DEBOUT("Calling: %s\n","mainProcess()");
|
|
mainProcess(); /* now load _WINMAIN segment */
|
|
DEBOUT("Outof: %s\n","mainProcess()");
|
|
|
|
/* Make sure to de-register if you register
|
|
*/
|
|
if (lpfnRegisterPenApp)
|
|
(*lpfnRegisterPenApp)(1, FALSE);
|
|
|
|
PrintFileShutDown(); /* jtfterm */
|
|
|
|
DestroyWindow(hdbXferCtrls); /* rjs swat */
|
|
DestroyWindow(hdbmyControls); /* jtf 3.33 */
|
|
DestroyWindow(hItWnd); /* rjs swat */
|
|
|
|
freeItResources();
|
|
|
|
exit(msg.wParam);
|
|
// ExitProcess((DWORD)msg.wParam); should this be used instead of exit()?-sdj
|
|
}
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* initWndClass() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL initWndClass()
|
|
{
|
|
WNDCLASS wndClass;
|
|
|
|
wndClass.style = CS_HREDRAW | CS_VREDRAW;
|
|
wndClass.lpfnWndProc = DC_WndProc;
|
|
wndClass.cbClsExtra = 0;
|
|
wndClass.cbWndExtra = 0;
|
|
wndClass.hInstance = hInst;
|
|
wndClass.hIcon = (HICON) NULL;
|
|
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
wndClass.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1);
|
|
wndClass.lpszMenuName = (LPSTR) szAppName_private;
|
|
wndClass.lpszClassName = (LPSTR) szAppName_private;
|
|
|
|
if(!RegisterClass((LPWNDCLASS) &wndClass)) /* register DYNACOMM class */
|
|
return(FALSE);
|
|
|
|
wndClass.style = CS_DBLCLKS; /* jtf 3.21 | CS_HREDRAW | CS_VREDRAW; */
|
|
wndClass.lpfnWndProc = TF_WndProc;
|
|
wndClass.hIcon = (HICON) NULL;
|
|
wndClass.hCursor = LoadCursor(NULL, IDC_IBEAM);
|
|
wndClass.hbrBackground = (HBRUSH) NULL;
|
|
wndClass.lpszMenuName = (LPSTR) NULL;
|
|
wndClass.lpszClassName = (LPSTR) DC_WNDCLASS;
|
|
|
|
if(!RegisterClass((LPWNDCLASS) &wndClass)) /* register TERMINAL class */
|
|
return(FALSE);
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* initPort () - Initialize hTE text rectangles and init thePort */
|
|
/* thePort is always 0 or an active DC of hTermWnd */
|
|
/* portLocks is count of number of un'releasePort'ed getPort calls */
|
|
|
|
extern BOOL insertionPoint;
|
|
|
|
VOID initPort ()
|
|
{
|
|
insertionPoint = TRUE;
|
|
thePort = 0;
|
|
portLocks = 0;
|
|
hTE.active = TRUE;
|
|
hTE.selStart = hTE.selEnd = MAXROWCOL;
|
|
|
|
/* Added 02/22/91 for win 3.1 common dialog interface */
|
|
hDevNames = NULL;
|
|
hDevMode = NULL;
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* initIcon() */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
VOID APIENTRY nextFlash();
|
|
|
|
VOID initIcon()
|
|
{
|
|
CHAR temp[10];
|
|
|
|
icon.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ICO_DYNACOMM));
|
|
|
|
icon.flash = FALSE;
|
|
|
|
icon.dx = GetSystemMetrics(SM_CXICON)/16;
|
|
icon.dy = GetSystemMetrics(SM_CYICON)/16;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* createWindows() - Determine tube size and create all Windows. */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL createWindows(cmdShow)
|
|
INT cmdShow;
|
|
{
|
|
INT ndx;
|
|
HMENU hSysMenu;
|
|
BYTE work[80], work1[80], work2[80];
|
|
|
|
LoadString(hInst, STR_APPNAME, (LPSTR) work, MINRESSTR);
|
|
strcpy(work+strlen(work), " - ");
|
|
LoadString(hInst, STR_TERMINAL, (LPSTR) work+strlen(work), MINRESSTR);
|
|
|
|
if(!(hItWnd = CreateWindow((LPSTR) szAppName_private,
|
|
(LPSTR) work,
|
|
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
|
|
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
|
|
(HWND) NULL,
|
|
(HMENU) NULL,
|
|
(HANDLE) hInst,
|
|
(LPSTR) NULL)))
|
|
return(FALSE);
|
|
|
|
LoadString(hInst, STR_INI_MAXIMIZED, (LPSTR) work, MINRESSTR);
|
|
if(!GetProfileInt((LPSTR) szAppName_private, (LPSTR) work, 0) ||
|
|
(cmdShow == SW_SHOWMINNOACTIVE) || (cmdShow == SW_SHOWMINIMIZED) || (cmdShow == SW_MINIMIZE))
|
|
{
|
|
ShowWindow(hItWnd, cmdShow);
|
|
}
|
|
else
|
|
ShowWindow(hItWnd, SW_SHOWMAXIMIZED);
|
|
|
|
if(!(hdbmyControls = CreateDialog(hInst, getResId(IDDBMYCONTROLS),
|
|
hItWnd, dbmyControls)))
|
|
{
|
|
return(FALSE);
|
|
}
|
|
|
|
for(ndx = 0; ndx < DCS_NUMFKEYS; ndx += 1) /* mbbx 2.00: moved from hidemyControls... */
|
|
{
|
|
fKeyHandles[ndx] = GetDlgItem(hdbmyControls, IDFK1 + ndx);
|
|
DEBOUT("createWindows: fKeyHandles[]=%lx from GetDlgItem()\n",fKeyHandles[ndx]);
|
|
}
|
|
LoadString(hInst, STR_TERMINAL, (LPSTR) work, MINRESSTR);
|
|
if(!(hTermWnd = CreateWindow((LPSTR) DC_WNDCLASS,
|
|
(LPSTR) work,
|
|
/* Removed WS_THICKFRAME jtf 3.21 */
|
|
WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_CLIPSIBLINGS | CS_BYTEALIGNWINDOW,
|
|
0, 0, 0, 0,
|
|
hItWnd,
|
|
(HMENU) NULL,
|
|
(HANDLE) hInst,
|
|
(LPSTR) NULL)))
|
|
return(FALSE);
|
|
|
|
/* jtf 3.33 hSysMenu = GetSystemMenu(hTermWnd, FALSE);
|
|
for(ndx = GetMenuItemCount(hSysMenu)-1; ndx >= 0; ndx -= 1)
|
|
{
|
|
if(GetMenuString(hSysMenu, ndx, (LPSTR) work, 80, MF_BYPOSITION))
|
|
{
|
|
sscanf(work, "%s %s", work1, work2);
|
|
sprintf(work, "%s\t xxxxCtrl+%s", work1, work2+4);
|
|
ChangeMenu(hSysMenu, ndx, (LPSTR) work, GetMenuItemID(hSysMenu, ndx),
|
|
MF_CHANGE | MF_BYPOSITION | GetMenuState(hSysMenu, ndx, MF_BYPOSITION));
|
|
}
|
|
} */
|
|
|
|
if(!(hdbXferCtrls = CreateDialog(hInst, getResId(IDDBXFERCTRLS),
|
|
hTermWnd, dbmyControls)))
|
|
return(FALSE);
|
|
/* mbbx 1.04 */
|
|
xferCtlStop = GetDlgItem(hdbXferCtrls, IDSTOP); /* mbbx 2.00: moved from hidemyControls()... */
|
|
xferCtlPause = GetDlgItem(hdbXferCtrls, IDPAUSE);
|
|
xferCtlScale = GetDlgItem(hdbXferCtrls, IDSCALE);
|
|
showXferCtrls(NULL);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* sizeWindows() - */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
VOID sizeWindows()
|
|
{
|
|
RECT fKeysRect;
|
|
RECT ctrlsRect;
|
|
RECT termRect;
|
|
|
|
setDefaultFonts();
|
|
|
|
GetWindowRect(hdbmyControls, (LPRECT) &fKeysRect);
|
|
GetWindowRect(fKeyHandles[0], (LPRECT) &ctrlsRect); /* mbbx 2.00: fkeys... */
|
|
MoveWindow(hdbmyControls, 0, fKeysRect.top, fKeysRect.right,
|
|
fKeysHeight = ((ctrlsRect.bottom - ctrlsRect.top) * 2), FALSE);
|
|
|
|
GetClientRect(hItWnd, (LPRECT) &fKeysRect); /* mbbx 2.00: may not init maximized... */
|
|
sizeFkeys(MAKELONG(fKeysRect.right, fKeysRect.bottom));
|
|
|
|
|
|
GetWindowRect(hdbXferCtrls, (LPRECT) &ctrlsRect); /* mbbx 1.04: fkeys... */
|
|
ctrlsHeight = ctrlsRect.bottom - ctrlsRect.top;
|
|
|
|
initChildSize(&termRect);
|
|
MoveWindow(hTermWnd, 0, 0, termRect.right, termRect.bottom, FALSE); /* jtf 3.21 */
|
|
}
|
|
/*---------------------------------------------------------------------------*/
|
|
/* initWindows() - */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL initWindows(hInstance, hPrevInstance, cmdShow)
|
|
HANDLE hInstance;
|
|
HANDLE hPrevInstance;
|
|
INT cmdShow;
|
|
{
|
|
hInst = hInstance;
|
|
|
|
/* Added 02/26/91 for window existence */
|
|
hItWnd = NULL;
|
|
hdbmyControls = NULL;
|
|
hTermWnd = NULL;
|
|
hdbXferCtrls = NULL;
|
|
hEdit = NULL;
|
|
fKeyHdl = NULL;
|
|
|
|
LoadString(hInst, STR_APPNAME_PRIVATE, (LPSTR) szAppName_private, 20);
|
|
LoadString(hInst, STR_APPNAME, (LPSTR) szAppName, 20);
|
|
LoadString(hInst, STR_DEVELOPER, (LPSTR) szMessage, 80);
|
|
LoadString(hInst, STR_NOMEMORY,(LPSTR)NoMemStr,sizeof(NoMemStr)); /* rjs msoft ??? */
|
|
|
|
setDefaultAttrib(TRUE); /* mbbx 1.04: ...szAppName loaded */
|
|
|
|
if(!hPrevInstance)
|
|
{
|
|
if(!initWndClass()) /* mbbx 1.04 ... */
|
|
return(FALSE);
|
|
}
|
|
|
|
initPort();
|
|
initIcon();
|
|
|
|
theBrush = GetStockObject (WHITE_BRUSH);
|
|
blackBrush = GetStockObject (BLACK_BRUSH);
|
|
|
|
if(!createWindows(cmdShow))
|
|
return(FALSE);
|
|
|
|
sizeWindows();
|
|
|
|
maxScreenLine = MAXSCREENLINE; /* rjs moved from size windows */
|
|
|
|
hMenu = GetMenu(hItWnd);
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* initDialogs() - Do all dialogbox initialization. [scf] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
VOID initDialogs() /* mbbx: remove ALL of these... */
|
|
{
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* dbPortInit() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL APIENTRY dbPortInit(hDlg, message, wParam, lParam) /* mbbx 2.01.10 ... */
|
|
HWND hDlg;
|
|
UINT message;
|
|
WPARAM wParam;
|
|
LONG lParam;
|
|
{
|
|
#ifdef WIN32
|
|
WORD temp_wParam;
|
|
#endif
|
|
|
|
switch(message)
|
|
{
|
|
case WM_INITDIALOG:
|
|
initDlgPos(hDlg);
|
|
initComDevSelect(hDlg, ITMCONNECTOR, TRUE);
|
|
return(TRUE);
|
|
|
|
case WM_COMMAND:
|
|
switch(GET_WM_COMMAND_ID(wParam, lParam))
|
|
{
|
|
case IDOK:
|
|
break;
|
|
|
|
case ITMCONNECTOR:
|
|
if(GET_WM_COMMAND_CMD(wParam, lParam) == LBN_DBLCLK)
|
|
break;
|
|
return(TRUE);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return(FALSE);
|
|
}
|
|
|
|
trmParams.comPortRef = getComDevSelect(hDlg, ITMCONNECTOR, &trmParams.newDevRef);
|
|
trmParams.fResetDevice = TRUE;
|
|
#ifdef WIN32
|
|
/* code in next block passes address of wParam to function*/
|
|
/* so we pass temp variable instead, since we need extract ID from wParam under WIN32*/
|
|
temp_wParam = GET_WM_COMMAND_ID(wParam, lParam);
|
|
#endif
|
|
|
|
#ifdef ORGCODE
|
|
trmParams.comPortRef = getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &wParam);
|
|
#else
|
|
trmParams.comPortRef = getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &temp_wParam);
|
|
#endif
|
|
resetSerial(&trmParams, TRUE, TRUE, NULL); /* slc swat */
|
|
if(trmParams.comDevRef != trmParams.newDevRef)
|
|
{
|
|
exitSerial();
|
|
return(TRUE);
|
|
}
|
|
exitSerial();
|
|
|
|
#ifdef ORGCODE
|
|
EndDialog(hDlg, (INT) getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &wParam));
|
|
#else
|
|
EndDialog(hDlg, (INT) getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &temp_wParam));
|
|
#endif
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* setProfileExtent() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/* mbbx: 1.01 - moved from itutil1.c */
|
|
|
|
BOOL NEAR setProfileExtent(section, extent) /* mbbx 2.00: NEAR call... */
|
|
BYTE *section;
|
|
BYTE *extent;
|
|
{
|
|
BOOL setProfileExtent = FALSE;
|
|
BYTE str[80];
|
|
BYTE temp[80];
|
|
|
|
if(!GetProfileString((LPSTR) section, (LPSTR) extent, (LPSTR) NULL_STR, (LPSTR) temp, 80))
|
|
{
|
|
strcpy(temp, extent);
|
|
AnsiLower((LPSTR) temp);
|
|
sprintf(str, "%s.exe ^.%s", szAppName_private, temp);
|
|
AnsiLower((LPSTR) str);
|
|
WriteProfileString((LPSTR) section, (LPSTR) temp, (LPSTR) str);
|
|
setProfileExtent = TRUE;
|
|
}
|
|
|
|
return(setProfileExtent);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* initFileDocData() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL NEAR initFileDocData(fileType, strResID, fileExt, szSection) /* mbbx 2.00 ... */
|
|
FILEDOCTYPE fileType;
|
|
WORD strResID;
|
|
BYTE *fileExt;
|
|
BYTE *szSection;
|
|
{
|
|
BYTE work1[MINRESSTR], work2[80];
|
|
|
|
LoadString(hInst, strResID, (LPSTR) work1, MINRESSTR);
|
|
GetProfileString((LPSTR) szAppName_private, (LPSTR) work1, (LPSTR) NULL_STR, (LPSTR) work2, 80);
|
|
|
|
getDataPath(fileType, fileDocData[fileType].filePath, work2);
|
|
|
|
strcpy(fileDocData[fileType].fileExt, fileExt);
|
|
if(!getFileType(work2, fileDocData[fileType].fileExt))
|
|
strcpy(work2, fileDocData[fileType].fileExt);
|
|
|
|
strcpy(fileDocData[fileType].fileName, fileDocData[fileType].fileExt+1);
|
|
|
|
if(work2[strlen(work2)-1] != '*')
|
|
return(setProfileExtent(szSection, fileDocData[fileType].fileExt+3));
|
|
|
|
return(FALSE);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* initProfileData() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
#define DEFBUFFERLINES 100 /* mbbx 1.10... */
|
|
|
|
VOID initProfileData() /* mbbx: 1.01 ... */
|
|
{
|
|
BYTE str[MINRESSTR], str2[MINRESSTR], portName[16];
|
|
INT ndx;
|
|
FARPROC lpdbPortInit;
|
|
BOOL notify;
|
|
|
|
LoadString(hInst, STR_INI_PORT, (LPSTR) str, MINRESSTR);
|
|
if(!GetProfileString((LPSTR) szAppName_private, (LPSTR) str, (LPSTR) NULL_STR, (LPSTR) portName, 5))
|
|
{
|
|
trmParams.comDevRef = ITMNOCOM; /* jtf 3.33 */
|
|
trmParams.speed = 1200; /* jtf 3.33 */
|
|
trmParams.dataBits = ITMDATA8; /* jtf 3.33 */
|
|
trmParams.stopBits = ITMSTOP1; /* jtf 3.33 */
|
|
trmParams.parity = ITMNOPARITY; /* jtf 3.33 */
|
|
if((ndx = doSettings(IDDBPORTINIT, dbPortInit)) != -1) /* mbbx 2.01.10 ... */
|
|
{
|
|
LoadString(hInst, (ndx > 0) ? STR_COM : STR_COM_CONNECT, (LPSTR) str2, MINRESSTR);
|
|
sprintf(portName, str2, ndx);
|
|
WriteProfileString((LPSTR) szAppName_private, (LPSTR) str, (LPSTR) portName);
|
|
}
|
|
}
|
|
|
|
LoadString(hInst, STR_INI_SWAP, (LPSTR) str, MINRESSTR);
|
|
if((ndx = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 0)) > 0)
|
|
*taskState.string = sprintf(taskState.string+1, "%d", SetSwapAreaSize(ndx));
|
|
|
|
LoadString(hInst, STR_INI_INTL, (LPSTR) str, MINRESSTR);
|
|
LoadString(hInst, STR_INI_IDATE, (LPSTR) str2, MINRESSTR);
|
|
intlData.iDate = GetProfileInt((LPSTR) str, (LPSTR) str2, 0);
|
|
LoadString(hInst, STR_INI_SDATE, (LPSTR) str2, MINRESSTR);
|
|
GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) "/", (LPSTR) intlData.sDate, 2);
|
|
LoadString(hInst, STR_INI_ITIME, (LPSTR) str2, MINRESSTR);
|
|
intlData.iTime = GetProfileInt((LPSTR) str, (LPSTR) str2, 0);
|
|
LoadString(hInst, STR_INI_STIME, (LPSTR) str2, MINRESSTR);
|
|
GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) ":", (LPSTR) intlData.sTime, 2);
|
|
LoadString(hInst, STR_INI_S1159, (LPSTR) str2, MINRESSTR);
|
|
GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) "AM", (LPSTR) intlData.s1159, 4);
|
|
LoadString(hInst, STR_INI_S2359, (LPSTR) str2, MINRESSTR);
|
|
GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) "PM", (LPSTR) intlData.s2359, 4);
|
|
|
|
LoadString(hInst, STR_INI_EXTENSIONS, (LPSTR) str, MINRESSTR);
|
|
notify = initFileDocData(FILE_NDX_SETTINGS, STR_INI_SETTINGS, SETTINGS_FILE_TYPE, str);
|
|
if(initFileDocData(FILE_NDX_TASK, STR_INI_TASK, TASK_FILE_TYPE, str))
|
|
notify = TRUE;
|
|
if(initFileDocData(FILE_NDX_SCRIPT, STR_INI_SCRIPT, SCRIPT_FILE_TYPE, str))
|
|
notify = TRUE;
|
|
if(initFileDocData(FILE_NDX_MEMO, STR_INI_MEMO, MEMO_FILE_TYPE, str))
|
|
notify = TRUE;
|
|
if(initFileDocData(FILE_NDX_DATA, STR_INI_DATA, DATA_FILE_TYPE, str))
|
|
notify = TRUE;
|
|
if(notify)
|
|
#ifdef ORGCODE
|
|
SendMessage(0xFFFF, WM_WININICHANGE, 0, (LONG) ((LPSTR) str));
|
|
#else
|
|
SendMessage((HWND)0xFFFFFFFF, WM_WININICHANGE, 0, (LONG) ((LPSTR) str));
|
|
#endif
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* setup() - Reset all varibles, read settings file & emulation. [scf] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL setup() /* mbbx 2.00: no cmd line... */
|
|
{
|
|
BYTE path[PATHLEN+1];
|
|
BYTE tmp1[TMPNSTR+1];
|
|
INT ndx;
|
|
SetRect ((LPRECT) &cursorRect, 0, 0, 0, 0);
|
|
vScrollShowing = TRUE;
|
|
serNdx = 0;
|
|
cursorTick = -1l;
|
|
cursBlinkOn = FALSE;
|
|
cursorOn = TRUE;
|
|
activCursor = 1;
|
|
prtFlag = FALSE;
|
|
useScrap = FALSE;
|
|
copiedTable = FALSE;
|
|
*fKeyStr = 0; /* mbbx 2.00: fKeySeq... */
|
|
fKeyNdx = 1;
|
|
scrapSeq = FALSE;
|
|
|
|
xferFlag = XFRNONE;
|
|
xferPaused = FALSE;
|
|
xferBreak = FALSE; /* mbbx 2.00: xfer ctrls */
|
|
xferEndTimer = 0;
|
|
xferWaitEcho = FALSE;
|
|
xferViewPause = 0; /* mbbx: auto line count */
|
|
xferViewLine = 0;
|
|
xferPSChar = 0; /* mbbx 1.02: packet switching */
|
|
*strRXErrors =
|
|
*strRXBytes =
|
|
*strRXFname =
|
|
*strRXFork = 0;
|
|
taskInit();
|
|
keyMapInit(); /* mbbx 1.04: keymap */
|
|
|
|
debugFlg = FALSE; /* how does this get enabled??? */
|
|
|
|
mdmOnLine = FALSE;
|
|
dialing = FALSE;
|
|
answerMode = FALSE;
|
|
protectMode = FALSE; /* mbbx: emulation state */
|
|
KER_getflag = FALSE;
|
|
gotCommEvent = TRUE;
|
|
|
|
if((hemulKeyInfo = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, (DWORD) SIZEOFEMULKEYINFO)) == NULL)
|
|
return(FALSE);
|
|
|
|
|
|
initProfileData(); /* mbbx: 1.01 */
|
|
|
|
hTE.hText = NULL;
|
|
setDefaults();
|
|
|
|
setFKeyLevel(1, FALSE); /* jtfterm */
|
|
|
|
termInitSetup(NULL);
|
|
|
|
strcpy(szMessage, szAppName);
|
|
return(TRUE);
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* readCmdLine() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL fileDocExist(fileType, filePath) /* mbbx 2.00: no forced extents... */
|
|
WORD fileType;
|
|
BYTE *filePath;
|
|
{
|
|
BOOL fileDocExist;
|
|
BYTE savePath[PATHLEN], testPath[PATHLEN];
|
|
BYTE OEMname[STR255]; /* jtf 3.20 */
|
|
|
|
strcpy(savePath, filePath);
|
|
getDataPath(fileType, testPath, savePath);
|
|
strcpy(testPath+strlen(testPath), savePath);
|
|
|
|
|
|
// JYF -- replace below two line with following if () to
|
|
// remove the use of AnsiToOem()
|
|
//
|
|
//AnsiToOem((LPSTR) testPath, (LPSTR) OEMname); /* jtf 3.20 */
|
|
//if(fileDocExist = fileExist(OEMname)) /* jtf 3.20 */
|
|
|
|
if (fileDocExist = fileExist(testPath))
|
|
strcpy(filePath, testPath);
|
|
|
|
|
|
return(fileDocExist);
|
|
}
|
|
|
|
|
|
WORD NEAR getFileDocType(filePath) /* mbbx 2.00: no forced extents... */
|
|
BYTE *filePath;
|
|
{
|
|
BYTE fileExt[16];
|
|
WORD fileType;
|
|
|
|
*fileExt = 0;
|
|
if(!getFileType(filePath, fileExt))
|
|
{
|
|
forceExtension(filePath, NO_FILE_TYPE+2, FALSE);
|
|
if(fileDocExist(FILE_NDX_DATA, filePath) || fileDocExist(FILE_NDX_SETTINGS, filePath))
|
|
return(FILE_NDX_SETTINGS); /* jtf 3.11 */
|
|
}
|
|
|
|
for(fileType = FILE_NDX_SETTINGS; fileType <= FILE_NDX_MEMO; fileType += 1)
|
|
{
|
|
if(*fileExt == 0)
|
|
forceExtension(filePath, fileDocData[fileType].fileExt+2, TRUE);
|
|
else if((fileType < FILE_NDX_MEMO) && (strcmp(fileDocData[fileType].fileExt+2, fileExt) != 0))
|
|
continue;
|
|
|
|
if(fileDocExist(FILE_NDX_DATA, filePath) || fileDocExist(fileType, filePath) || (*fileExt != 0))
|
|
return(fileType);
|
|
}
|
|
|
|
return(FILE_NDX_DATA);
|
|
}
|
|
|
|
|
|
BOOL NEAR initTermFile(filePath) /* mbbx 2.00 ... */
|
|
BYTE *filePath;
|
|
{
|
|
getDataPath(FILE_NDX_SETTINGS, fileDocData[FILE_NDX_SETTINGS].filePath, filePath);
|
|
|
|
LoadString(hInst, STR_TERMINAL, (LPSTR) termData.title, MINRESSTR);
|
|
/* mbbx 2.00: no forced extents... */
|
|
return(termFile(fileDocData[FILE_NDX_SETTINGS].filePath, filePath,
|
|
fileDocData[FILE_NDX_SETTINGS].fileExt, termData.title, TF_DEFTITLE));
|
|
}
|
|
|
|
|
|
VOID NEAR readCmdLine(lpszCmdLine)
|
|
LPSTR lpszCmdLine;
|
|
{
|
|
INT ndx, ndx2;
|
|
BYTE filePath[PATHLEN];
|
|
BYTE tmpFilePath[PATHLEN];
|
|
INT nEditWnd = 0;
|
|
BYTE OEMname[STR255]; /* jtf 3.20 */
|
|
BYTE work[STR255]; /* jtf 3.28 */
|
|
BYTE work1[STR255]; /* jtf 3.28 */
|
|
INT testFlag;
|
|
|
|
saveFileType = FILE_NDX_SETTINGS; /* jtf 3.11 */
|
|
|
|
AnsiUpper(lpszCmdLine);
|
|
for(ndx = 0; lpszCmdLine[ndx] != 0; ) /* mbbx 2.00 ... */
|
|
{
|
|
while(lpszCmdLine[ndx] == 0x20)
|
|
ndx += 1;
|
|
if(lpszCmdLine[ndx] == 0)
|
|
break;
|
|
|
|
for(ndx2 = 0; (filePath[ndx2] = lpszCmdLine[ndx]) != 0; ndx2 += 1)
|
|
{
|
|
ndx += 1;
|
|
if(filePath[ndx2] == 0x20)
|
|
{
|
|
filePath[ndx2] = 0;
|
|
break;
|
|
}
|
|
}
|
|
strcpy(work1,filePath);
|
|
switch(ndx2 = getFileDocType(filePath)) /* mbbx 2.00: term init... */
|
|
{
|
|
case FILE_NDX_SETTINGS:
|
|
if(!activTerm)
|
|
initTermFile(filePath);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ((!activTerm) && (lstrlen((LPSTR)lpszCmdLine)>0) )
|
|
{
|
|
LoadString(hInst, STRERRNOFILE, (LPSTR) work, STR255-1); /* jtf 3.15 */
|
|
strcpy(filePath,work1);
|
|
forceExtension(filePath, SETTINGS_FILE_TYPE+2, FALSE);
|
|
sprintf(work1, work, filePath);
|
|
testFlag = MessageBox(GetActiveWindow(), (LPSTR) work1, (LPSTR) szAppName, MB_OKCANCEL);
|
|
if (testFlag==IDOK)
|
|
{
|
|
if (filePath[1]==':')
|
|
{
|
|
filePath[0]='A';
|
|
}
|
|
else
|
|
{
|
|
strcpy(work,filePath);
|
|
strcpy(filePath,"A:");
|
|
strcpy(filePath+2,work);
|
|
}
|
|
initTermFile(filePath);
|
|
}
|
|
}
|
|
if(!activTerm) /* mbbx 2.00: term init... */
|
|
{
|
|
LoadString(hInst, STR_AUTOLOAD, (LPSTR) filePath, PATHLEN); /* jtf 3.17 */
|
|
|
|
|
|
// JYF -- replace below two lines with the following if() to
|
|
// remove the use of AnsiToOem()
|
|
//
|
|
//AnsiToOem((LPSTR) filePath, (LPSTR) OEMname); /* jtf 3.20 */
|
|
//if (fileExist(OEMname)) /* jtf 3.20 */
|
|
|
|
if (fileExist(filePath))
|
|
initTermFile(filePath);
|
|
else
|
|
{
|
|
_searchenv( filePath, "PATH", tmpFilePath );
|
|
if(strlen(tmpFilePath)>0)
|
|
initTermFile(tmpFilePath);
|
|
}
|
|
|
|
if(!activTerm)
|
|
{
|
|
if((nEditWnd -= 1) >= 0)
|
|
termData.flags |= TF_HIDE;
|
|
else
|
|
saveFileType = FILE_NDX_SETTINGS;
|
|
|
|
activTerm = TRUE;
|
|
resetSerial(&trmParams, TRUE, TRUE,0);
|
|
|
|
if(!(termData.flags & TF_HIDE))
|
|
showTerminal(TRUE, TRUE);
|
|
}
|
|
}
|
|
if(!IsIconic(hItWnd)) /* rjs bugs 015 */
|
|
sizeTerm(0L); /* jtf 3.21 */
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* freeItResources()- Free up all windows resource b/4 back to DOS executive.*/
|
|
/* Internal house keeping. Note: Close that serial port. */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
VOID freeItResources()
|
|
{
|
|
INT ndx;
|
|
|
|
exitSerial();
|
|
keyMapCancel(); /* mbbx 1.04: keymap */
|
|
|
|
DeleteObject(hTE.hFont);
|
|
clearFontCache(); /* mbbx 2.00: redundant code... */
|
|
|
|
GlobalFree(hTE.hText);
|
|
GlobalFree(hemulKeyInfo);
|
|
}
|