/*===========================================================================*/ /* 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 /* adding for _searchenv and exit crt -sdj*/ #include #include #include "dcrc.h" #include "dynacomm.h" #include "task.h" #include "video.h" /* mbbx 1.04: per jtfx 1.1 */ #include 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(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, INT cmdShow) { CHAR errmsg[115],caption[18]; VOID (APIENTRY *lpfnRegisterPenApp)(WORD, BOOL) = NULL; // -sdj was unreferenced local var: DWORD tickCount; 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); /* mbbx 2.00 ... */ 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 = (VOID *)GetProcAddress(IntToPtr(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((int)msg.wParam); /*ExitProcess((DWORD)msg.wParam); should this be used instead of exit()?-sdj*/ } /* was BOOL registerIt(hInstance) HANDLE hInstance; */ /*---------------------------------------------------------------------------*/ /* initWndClass() - [mbb] */ /*---------------------------------------------------------------------------*/ BOOL initWndClass() /* mbbx 1.04 ... */ { 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_APPWORKSPACE+1); /* mbbx 2.00 ... */ 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 initIcon() { // -sdj was unreferenced var: 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(INT cmdShow) { INT ndx; // -sdj was unreferenced local var: HMENU hSysMenu; BYTE work[80]; // -sdj was unrefenced var: , work1[80], work2[80]; LoadString(hInst, STR_APPNAME, (LPSTR) work, MINRESSTR); strcpy(work+strlen(work), " - "); LoadString(hInst, STR_TERMINAL, (LPSTR) work+strlen(work), MINRESSTR); //sdj: using the values from the registry instead of hardcoding it if(!(hItWnd = CreateWindow((LPSTR) szAppName_private, (LPSTR) work, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, WindowXPosition, WindowYPosition, WindowWidth, WindowHeight, // was hardcoded to: 10,10,400,400, win31: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); 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(0); } /*---------------------------------------------------------------------------*/ /* sizeWindows() - */ /*---------------------------------------------------------------------------*/ VOID sizeWindows() { RECT fKeysRect; RECT ctrlsRect; RECT termRect; setDefaultFonts(); GetWindowRect(hdbmyControls, &fKeysRect); GetWindowRect(fKeyHandles[0], &ctrlsRect); /* mbbx 2.00: fkeys... */ MoveWindow(hdbmyControls, 0, fKeysRect.top, fKeysRect.right, fKeysHeight = ((ctrlsRect.bottom - ctrlsRect.top) * 2), FALSE); GetClientRect(hItWnd, &fKeysRect); /* mbbx 2.00: may not init maximized... */ sizeFkeys(MAKELONG(fKeysRect.right, fKeysRect.bottom)); GetWindowRect(hdbXferCtrls, &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(HANDLE hInstance, HANDLE hPrevInstance, INT cmdShow) { BYTE str[MINRESSTR]; 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 ??? */ //sdj: lets try and see if the x,y,width,height are in the win.ini //sdj: if so use them and save the values in the global variables //sdj: so that these can be used by the createwindow call during init //sdj: and can be saved using getwindowrect just before the user exits //sdj: the terminal app. //sdj: defaults are 10,10,400,400. win31 had: CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, LoadString(hInst, STR_INI_XPOSITION, (LPSTR) str, MINRESSTR); WindowXPosition = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 10); LoadString(hInst, STR_INI_YPOSITION, (LPSTR) str, MINRESSTR); WindowYPosition = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 10); LoadString(hInst, STR_INI_WIDTH, (LPSTR) str, MINRESSTR); WindowWidth = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 400); LoadString(hInst, STR_INI_HEIGHT, (LPSTR) str, MINRESSTR); WindowHeight = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 400); 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] */ /*---------------------------------------------------------------------------*/ INT_PTR APIENTRY dbPortInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM 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, FALSE); /* slc swat */ if(trmParams.comDevRef != trmParams.newDevRef) { exitSerial(); return(TRUE); } exitSerial(); #ifdef ORGCODE EndDialog(hDlg, (INT) getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &wParam)); #else if (!(getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &temp_wParam))) { EndDialog(hDlg,TRUE); } 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(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(FILEDOCTYPE fileType, WORD strResID,BYTE *fileExt,BYTE *szSection) /* mbbx 2.00 ... */ { 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; // -sdj eas unreferenced local var: 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 = (BYTE)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_BROADCAST, WM_WININICHANGE, 0, (LPARAM) str); #endif } // sdj: added this code to get the list of comm ports which the serial driver // sdj: recognized while loading the system. // sdj: if this number of ports is > 9 then it is set to 9 // sdj: and if this info cannot be retrieved this this is set to 4 as before void GetNumCommPortsInSystem(LPBYTE pMaxCom) { int i,j, nEntries; DWORD dwSize, dwBufz; DWORD dwType; HKEY hkey; char szSerial[40]; char szCom[40]; char szCom2[40]; char szFormat[200]; BYTE tmp1[TMPNSTR+1]; BYTE tmp2[TMPNSTR+1]; // NT Registry keys to find COM port to Serial Device mapping char szRegSerialMap[] = "Hardware\\DeviceMap\\SerialComm"; ////////////////////////////////////////////////////////////////////// // Get list of valid COM ports from DEVICEMAP in registry ////////////////////////////////////////////////////////////////////// *pMaxCom = 0; i = 0; if (!RegOpenKeyEx (HKEY_LOCAL_MACHINE, szRegSerialMap, 0L, KEY_READ, &hkey)) { dwBufz = sizeof(szSerial); dwSize = sizeof(szCom); nEntries = i = 0; while (!RegEnumValue (hkey, i++, szSerial, &dwBufz, NULL, &dwType, szCom, &dwSize)) { if (dwType != REG_SZ) continue; ++nEntries; // arComNumAndName[nEntries].Index = nEntries; // strcpy(arComNumAndName[nEntries].PortName,szCom); // dwSize = sizeof(szCom); dwBufz = sizeof(szSerial); if (nEntries > 19) break; // lets not bother with >= 20 entries } RegCloseKey (hkey); *pMaxCom = (BYTE)nEntries; arComNumAndName[0].Index = (BYTE)nEntries; } else { // sdj: could not find the list of comm ports in the registry, so // sdj: stick with the original terminal hardcoded value of com1-4 LoadString(hInst, STR_NOCOMMPORTS, (LPSTR) tmp1, TMPNSTR); /* mbbx 1.00 */ LoadString(hInst, STR_ERRCAPTION, (LPSTR) tmp2, TMPNSTR); MessageBox(NULL, (LPSTR) tmp1, (LPSTR)tmp2, MB_OK | MB_APPLMODAL); *pMaxCom = 0; } //sdj: if maxcomm is > 9 set it to 9 // if (*pMaxCom > 9) *pMaxCom = 9; // // strcpy(szCom,"COM%d"); for (i=1,j=1; i<= 9; i++) { sprintf(szCom2,szCom,i); if (QueryDosDevice(szCom2,szFormat,400)) { arComNumAndName[j].Index = (BYTE)j; strcpy(arComNumAndName[j].PortName,szCom2); j++; } } } /*---------------------------------------------------------------------------*/ /* setup() - Reset all varibles, read settings file & emulation. [scf] */ /*---------------------------------------------------------------------------*/ BOOL setup() /* mbbx 2.00: no cmd line... */ { // -sdj was unreferenced local var: BYTE path[PATHLEN+1]; // -sdj was unreferenced local var: BYTE tmp1[TMPNSTR+1]; // -sdj was unreferenced local var: INT ndx; SetRect (&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; sPort = NULL; bPortIsGood = FALSE; /* it is not yet opened */ //-sdj for telnet-quit processing bPortDisconnected = TRUE; /* this will ensure that reads dont occur before resetserial inits this to FALSE, it will be set to true by checkcommevent if for some reason, wait(getlasterror) is not IO_PENDING */ bgOutStandingWrite = FALSE; /* slc swat */ //MaxComPortNumberInMenu = 5; /* this will get set to proper value when the win.ini is looked at for COMn entries, but during init, this needs to be set to > COM1 -sdj:04/21/92 */ GetNumCommPortsInSystem(&MaxComPortNumberInMenu); if((hemulKeyInfo = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, (DWORD) SIZEOFEMULKEYINFO)) == NULL) return(FALSE); initProfileData(); /* mbbx: 1.01 */ hTE.hText = NULL; DEBOUT("Calling: %s\n","setDefaults()"); setDefaults(); DEBOUT("Outof: %s\n","setDefaults()"); DEBOUT("Calling: %s\n","setFKeyLevel()"); setFKeyLevel(1, FALSE); /* jtfterm */ DEBOUT("Outof: %s\n","setFKeyLevel()"); DEBOUT("Calling: %s\n","termInitSetup()"); termInitSetup(NULL); DEBOUT("Outof: %s\n","termInitSetup()"); strcpy(szMessage, szAppName); return(TRUE); } /*---------------------------------------------------------------------------*/ /* readCmdLine() - [mbb] */ /*---------------------------------------------------------------------------*/ BOOL fileDocExist(WORD fileType, BYTE *filePath) { BOOL fileDocExist; BYTE savePath[PATHLEN], testPath[PATHLEN]; BYTE OEMname[STR255]; strcpy(savePath, filePath); getDataPath(fileType, testPath, savePath); strcat(testPath, savePath); // JYF -- replace below lines with followin 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(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(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(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++; 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); if(!activTerm) initTermFile(filePath); } ndx = lstrlen(lpszCmdLine); while(ndx) { ndx--; if(isspace(lpszCmdLine[ndx])) lpszCmdLine[ndx] = 0x00; } if ((!activTerm) && (lstrlen(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() { // -sdj was unreferenced local var: INT ndx; exitSerial(); keyMapCancel(); /* mbbx 1.04: keymap */ DeleteObject(hTE.hFont); clearFontCache(); /* mbbx 2.00: redundant code... */ GlobalFree(hTE.hText); GlobalFree(hemulKeyInfo); }