WILDWIND A Dissertation on the operation of WILDCAT! 3.5+ in the Microsoft Windows 3.1, DOS 5.0 environment. Mustang Software Inc. has a disclaimer in their reference manual stating that WILDCAT! is not a Windows application and that they do not recommend or support WILDCAT! in this environment because of the various ways Windows can be configured or mis-configured. We agree with this statement in principle, WILDCAT! is not a Windows application and Windows 3.1 can indeed be mis-configured. It would be an impossible task for a software vendor to attempt to address these environmental issues. This however, should not be construed to mean that WILDCAT! cannot successfully run in a Windows environment, what it does mean is that it is your responsibility to insure that Windows is configured correctly for the operation of WILDCAT! Since Mustang Software, Inc. felt it appropriate to include a disclaimer statement we see no reason to break with tradition. Therefore we do not assume any liability for the use of the information contained in this document. We can attest to the fact that all information presented here has been tested on our machine with WILDCAT! 3.52, Windows 3.1, DOS 5.0, and works as described. We make no guarantees or warranties either express or implied that, should you use any of the information contained herein, that it will perform in your environment, or that it is safe in your environment. The reader must assume all risk for the application of any information contained herein. The first question is, "Why would anyone want to run WILDCAT! under Windows?" To answer this we must first understand exactly what Windows is and what it can and cannot do. Windows is a non-preemptive multi-tasking environment manager that allows you to run more than one application at a time, provides the ability to transfer information between applications, and has a graphical interface that provides a more intuitive and efficient work environment. Non-preemptive means that Windows does not "time-slice" applications but instead gives control to another application that wants it only when all other applications are idle. In order for Windows to work efficiently, the DOS environment must first be optimized. Because of the vast differences in configurations possible in a PC environment, this discussion will address those issues common to all PC's first and concentrate on Windows and WILDCAT! specific issues later. The first and most important consideration is memory, real physical memory installed in your PC. This memory can be in the form of SIMM's (System In-Line Memory Modules) or add-on memory expansion boards. Your system can have as many as three types of memory; Conventional Memory This is the basic type of memory found on all PC's. Most have at least 256k and can accommodate up to 640k. Extended Memory This type of memory is available only to those systems with an 80286 or higher processor and extends from 1024 to the end of physical memory. In the DOS 5.0/Windows 3.1 environment this memory is managed by the Extended Memory Manager, HIMEM.SYS. (More on this later). Expanded Memory Most PC's can accommodate Expanded Memory that consists of two parts; an Expanded Memory board and an Expanded Memory Manager. EMM386.EXE is a device driver that can use Extended Memory to simulate Expanded Memory. (More on this later). In addition, most systems have an Upper Memory Area. The Upper Memory Area of 384k is immediately adjacent to the 640k (max) of conventional memory. It is not considered part of the total memory of your PC because it is not available to application programs. However, DOS can make use of this area. (More on this later). Windows 3.1 runs in either Standard Mode or 386 Enhanced Mode and needs Extended Memory in order to run. Windows loves Extended Memory, the more you have the better Windows will perform. For Standard Mode, the minimum recommended configuration is an 80286 or higher processor and 640k of conventional memory plus 256k of Extended Memory. For operation in 386 Enhanced Mode the requirements are an 80386 or higher processor, 640k of Conventional Memory plus 1024k of Extended Memory. Therefore if you have installed Expanded Memory boards, Windows will run best if you configure these memory boards as all Extended Memory. This discussion will focus on Windows running in the 386 Enhanced Mode. Of course the minimum configurations are not recommended, these are the bare minimums that will allow Windows to start in the designated mode. 386 Enhanced Mode. The advantage to running in 386 Enhanced Mode is to use the virtual memory capabilities of the 80386 or higher processor. With virtual memory, applications have access to more memory than is physically available on your system. We are covering the memory considerations in detail here, not to bore the experienced Windows professional, but to insure that the requirements of Windows are totally understood by all. Windows will use all the memory you allocate to it. This is not to say Windows is a memory hog, Windows is your multi-tasking environment and your environment should be allocated all your memory. System Configuration Files. Critical to the utilization of system resources are two important files, the System Configuration File, CONFIG.SYS, and the AUTOEXEC.BAT file. Through these two files you will set up the DOS environment in which Windows will run. You also will allocate various system drivers and memory managers as well as controlling where DOS locates itself. CONFIG.SYS The following is the System Configuration File for our system. We will cover each line and parameter in detail and discuss various options that may apply to your environment. It is important to understand that unless the operating environment is configured for maximum efficiency, running WILDCAT! under Windows will result in less than optimum performance. files=40 buffers=99,8 stacks=9,256 install=c:\dos\share.exe /f:4096 /l:40 device=c:\windows\himem.sys /shadowram:on device=c:\windows\emm386.exe 640 d=64 ram device=c:\windows\smartdrv.sys 512 256 devicehigh=c:\dos\setver.exe files=40 WILDCAT! contains special code to allow DOS to open more than the normal maximum of 20 files at one time. This statement is VERY IMPORTANT. It may be larger than 40 but never less than that. buffers=99,8 WILDCAT! recommends that this read (buffers=40). Contrary to what the WILDCAT! and Windows operating manuals say, DOS buffers do improve some disk operations even if you are using SMARTDRV.SYS as a disk caching device. We use SMARTDRV.EXE, see line #7, together with the maximum allowable DOS buffers, 99. We are also using secondary buffers that can enhance certain disk operations. If you have many subdirectories, maxing out the buffers to 99,8 can improve system performance at the cost of memory. If DOS is in the High Memory Area then the buffers will be there also. This leaves more conventional memory for DOS applications such as WILDCAT! stacks=9,256 The stacks command supports the dynamic use of data stacks to handle hardware interrupts. The default, if no stacks command is specified is 0,0, this means that each running program must have enough stack space to accommodate the PC's hardware interrupt drivers. The values 9,256 allocate 9 stacks of 256 bytes each. This costs some memory but we do not make the assumption that a program will always have sufficient stack space available. share.exe The DOS share program installs the file sharing and locking facilities. Share is used in a network or multi-tasking environment in which programs share files, and validates all read and write requests. Since WILDCAT! opens at least twice the default values, (/f:space) 2048 and (/:locks) 20, doubling these parameters insures that room is provided for in the system lock table. himem.sys. HIMEM.SYS manages programs' use of Extended Memory and of the High Memory Area, this driver prevents programs from simultaneously using the same area of memory. HIMEM.SYS must precede any device commands that use Extended Memory such as SMARTDRV.SYS and EMM386.EXE. Some PC's support "shadowram", this is a feature in which ROM code is read into and executed from faster RAM memory. If this feature is available on your PC, the inclusion of this switch will speed up the operation of your system at the cost of a little conventional memory. emm386.exe EMM386.EXE simulates Expanded Memory for programs that request it and provides access to the Upper Memory Area on 80386 or higher processors. The 640 parameter requests that 640k of Expanded Memory be available for an application requesting EMS. Since WILDCAT! can swap out during a DOS shell, the preferred option, EMM386.EXE provides EMS memory to hold WILDCAT! until it regains control again thus freeing memory for the DOS command processor. The d=64 parameter reserves 64k for buffered direct memory access (DMA). This increases the size of the DMA buffer used to communicate with the Expanded Memory manager and the Upper Memory Area, the ram parameter tells EMM386.EXE to provide access to both. smartdrv.sys SMARTDRV.SYS creates a disk cache in Extended or Expanded Memory that can significantly speed-up DOS operations. The default cache size is 256k. Windows can reduce the cache size to 0 in memory critical situations effectively disabling disk caching unless you provide additional parameters. The parameter 512 sets an initial cache of 512k and the parameter 256 does not allow the cache to be reduced below 256k thus insuring that the SMARTDRV.SYS's cache mechanism is always active. setver.exe This sets the DOS version that DOS 5.0 reports to a program. Programs designed to run with a prior version of DOS will run correctly with DOS 5.0. Sometimes, however, a program may not run correctly unless its name is included in the version table. This table indicates to the program that it is running with the DOS version for which it was designed, although it is running with DOS 5.0 The AUTOEXEC.BAT The second critical file is the Autoexec.Bat file. At startup or reboot time DOS carries out the commands in your CONFIG.SYS file, then DOS looks for an AUTOEXEC.BAT file. This file defines the characteristics of each device connected to your system. The following is the AUTOEXEC.BAT we use for running WILDCAT! under Windows. @echo off cls path c:\windows;c:\dos\;c:\pctools;d:\vb;d:\winword;d:\excel;c:\gmkw;d:\wc30 loadhigh c:\windows\mouse.com /y loadhigh c:\dos\fastopen.exe c:=40 d:=120 /x prompt $p$g set temp=c:\temp set tmp=c:\temp set gmkw=c:\gmkw\ win Again we will describe each line in detail, not to bore you as was said before, but to insure that everything that is critical to Windows is explained in detail. First, the last line, win. We start windows from a batch file that allows us to check other parameters such as what "mode" we are in now. In our environment weI swap to different DOS configurations to perform various functions like disk compaction where no extraneous TSR's or device drivers are loaded. In the example presented below we are checking to see if the system is in the correct mode to start Windows. @echo off Prevents the batch commands from echoing on the screen. The @ in front of the echo command prevents the echo off command from being echoed to the screen. cls Simply clears the screen. path= This is environmentally specific but the critical entries are for Windows, DOS, and WILDCAT! mouse.com Loads the mouse driver. Try running Windows without a mouse and learn what frustration feels like. The loadhigh= loads the mouse driver into the Upper memory Area if there is sufficient space. fastopen.exe FASTOPEN.EXE is a program that decreases the time needed to open frequently used files. It tracks the location of files on your hard disks and saves the information in memory for fast access. With the correct parameters, and here you must check your DOS User's Guide and Reference, FASTOPEN can significantly reduce access time by going directly to a file rather than having to perform a directory lookup every time a file is referenced. Again, this is being loaded into the High Memory Area. The following parameters set the DOS prompt format, establish environmental variables, and finally invoke the win batch file. This is not necessary, the last line could have simply read c:\windows\win /3. The /3 Windows command line parameter insures that Windows starts in 386 Enhanced Mode or fails in the attempt. While we have never had Windows fail to come up in the proper mode, its there for insurance in the event we have switched DOS into an alternate configuration not compatible with running Windows in Enhanced Mode and did not switch it back to its full operating mode. To insure that this does not happen we use the win batch file below and test what mode the system is set for. A simple text file is named and renamed from swap1.txt to swap2.txt as our operating modes are changed for system maintenance. If swap2.txt is present Windows cannot be started, all the required drivers have not been loaded. The WIN.BAT file. @echo off if exist swap2.txt echo System is in "Stripped Down" configuration, if exist swap2.txt echo Windows may not be started in this mode. if exist swap2.txt goto exit cls cd\windows win /3 smartdrv /c cd\ cls echo System is in "Normal Windows" configuration. :exit Following the win /3 command is another command for SMARTDRV.SYS, smartdrv /c, this writes all cached information from memory to the hard disk. We use this to insure that when Windows is terminated, all its information is written to disk before we run any other tasks. The following statements simply get the system back to the root directory, clear the screen, and remind me that the system is presently configured for Windows operation. "Normal Windows" configuration is the full-blown environment on our machine. At this point memory is configured correctly, all required device drivers are loaded, and Windows 3.1 is up and running in 386 Enhanced Mode. The next task is critical to how WILDCAT! performs in the Windows environment. The PIF (Program Information) file. When Windows is requested to run a non-Windows application such as WILDCAT!, Windows needs some application specific information. This is stored in an application's PIF file. While a PIF file is not absolutely required, (Windows supplies default PIF information), it is mandatory for a communications program such as WILDCAT! in order for it to perform effectively. The PIF tells Windows how the application will use resources, the mode in which the application runs, and several other parameters critical to running WILDCAT! in the Windows environment. The following discussion will cover each of these parameters in detail and describe their effect on Windows and the environment Windows provides for non-Windows applications. Since we are only discussing operations in the 386 Enhanced Mode we will not elaborate on the differences between PIF settings for Standard Mode and Enhanced Mode. We recommend that you create your own WILDCAT! PIF specific to your environment using the Windows PIF editor. Mustang's BBS has available PIF's for running WILDCAT! under Windows but wer'e not sure whether they would be appropriate or applicable to your specific environment. Instead of using values that someone else developed from a different paradigm, we prefer doing it the hard, but accurate, way. Remember, the PIF not only describes the WILDCAT! application to Windows, it also can affect how, and even whether WILDCAT! runs at all. Let's take the PIF fields one at a time, analyze what they do, and arrive at a correct value for each. The first field is Program Filename, this should be wildcat.exe. The Window Title is the name that Windows puts across the top of the window when the application is switched from full-screen to windowed. (we suggest simply, "WILDCAT!".) (More on this later). Optional Parameters are those that follow the invocation of the wildcat.exe program such as /B 2400 that can pass the callers baud rate to WILDCAT!. This has not been necessary for me. A description of these parameters is in the WILDCAT! Sysop Guide in the section, TOMCAT and Net/Echo Mail. Startup Directory specifies the directory you wish to be current when WILDCAT! starts. In our environment WILDCAT! is located on the "d" drive in directory "wc30" so the Startup Parameter in our PIF reads "d:\wc30". Those were the easy parameters, now we get into the serious stuff. Video Memory. The Video Memory options specify how WILDCAT! appears on the screen when it is started. The options are Text, Low Graphics, and High Graphics. You should select the highest resolution video mode that the application will run in. For WILDCAT! we specify Low Graphics. KB Required. Normally you should leave this set at 128. Windows will attempt to start WILDCAT! only if there is at least 128k of free memory available. This does not limit how much memory WILDCAT! receives. Windows gives WILDCAT! at least as much memory as specified by KB Required, plus any available Expanded Memory up to the amount specified in the next parameter, the KB Desired option. KB Desired. This limits the amount of conventional memory WILDCAT! can get. A setting of -1, recommended, gives WILDCAT! as much memory as possible up to the maximum of 640k. It is important that the DOS partition running WILDCAT! be allocated as much memory as possible so that shells to DOS for Doors, and TOMCAT, etc.. have enough memory to run. EMS Memory. Although Windows doesn't use Expanded Memory when running in 386 Enhanced Mode, it simulated Expanded Memory for those applications that can use it such as WILDCAT! As noted early in the WILDCAT! Sysop Guide, it is preferable to have WILDCAT! swap out of memory into EMS/XMS/Disk rather than terminate when calling a Door program or TOMCAT. Allowing WILDCAT! to swap-out to EMS will make your entire operation faster as the program code can be restored very quickly. Another consideration is that swapping simplifies the operation of WILDCAT! as opposed to terminating and restarting the program. A terminate and restart process involves exiting the program, freeing up the resources, allocating them to another task such as a Door or TOMCAT, and reloading and initiating WILDCAT! when the external program is done. All this contributes significantly to the system overhead and slows the operation. Be sure that you have specified in MAKEWILD that WILDCAT! will swap out during DOS shells and that the data should be held in EMS, also specify that the overlay be held in EMS. Now, how to specify EMS memory. KB Required. This should be set at 184 indicating to Windows that it should give WILDCAT! at least 184k of Expanded Memory (EMS). KB Limit. Instead of specifying -1 as we did with the conventional memory, here we wish to limit the amount of EMS memory WILDCAT! can request. The value of 1024 allows WILDCAT! to have up to 1024k or 1 meg of EMS memory. Some applications will take all the EMS available whether they need it or not. We doubt that WILDCAT! is mis-behaved but we set the limit at 1024k just to be sure. XMS Memory. Since we have configured WILDCAT! to swap to EMS memory, a setting of 0 in both the KB Required and KB Limit is appropriate. You should evaluate this for your environment. If you do not have EMS memory configured and only have XMS then set the parameters for EMS above to 0 and use the values specified in this XMS entry instead. Make sure that the MAKEWILD swap parameter specifies XMS not EMS or Disk. Display Usage. This indicates whether you want WILDCAT! to start in a window or a full screen. We would suggest that you start WILDCAT! in the full screen mode. You can always switch WILDCAT! to a window by pressing ALT + ENTER thus allowing you to easily switch to other applications while WILDCAT! is active. You also can reduce the clutter on your "Desktop" by clicking on the down arrow in the upper right corner of the WILDCAT! window to reduce the window to an icon. WILDCAT! will still be running and monitoring the modem but it is out of the way while you do other things in the Windows environment. I'll talk about what happens while you're working with a Windows application and a call comes in shortly. Execution Mode. There are two options, Background and Exclusive. Background specifies that WILDCAT! will continue to run while you use another application. If you do not select this option, WILDCAT! will be suspended if you switch to another application. Exclusive says that when WILDCAT! is the active application, busy and doing work, all other applications are suspended, even if the other applications have the Background option selected. Both these options should be selected for WILDCAT! and since the Exclusive is selected, it is important that WILDCAT! be run in the Full Screen mode. (See the parameter above). If you run an exclusive application in a window, Windows reserves some resources for itself and for running Windows applications. Close Window on Exit. This should be checked for WILDCAT! The only reason for not closing an application's window when it finishes is if it has displayed some information on the screen and you want a chance to see it before the window is closed. Now we get into the serious, and often confusing, section of the PIF. The Advanced Options for 386 Enhanced Mode. The first two options, Background Priority and Foreground Priority deserve a much better explanation than we will present here. These options determine how WILDCAT! runs in relationship to other applications. For our purposes we want to insure that when WILDCAT! wants something it gets it. Anything less for a communications program would cause chaos. WILDCAT!, is, as are all communications programs, interrupt driven. For instance, WILDCAT! will want to become immediately active when a Ring condition is detected on the modem. Background/Foreground Priority We cannot suggest setting for these values because we do not know what you may have specified for other applications in your system. In our environment we have specified 500 for WILDCAT!'s Background Priority. An application is eligible to receive this priority only when its Background check box is selected and any other application's Exclusive box is not selected. The figure you specify is meaningful only when compared with other application's background and foreground priorities. It refers to the amount of processor time the applications use. Foreground Priority specifies how much processor time the application receives when it is the active application. Since we want WILDCAT! to receive as much of the processor time as it needs as setting of 10000 is appropriate. At this setting no background applications can run unless this foreground application, WILDCAT!, is idle. Idle in WILDCAT! could mean no user is logged on and the system is waiting, or a user is on and not performing active work such as reading a screen of information, etc.. Again, the figure specified is meaningful only when compared with other application's Background and Foreground priorities. Detect Idle Time This should be selected to allow Windows to give resources to other applications while WILDCAT! is idle. Memory Options. These options control how WILDCAT! uses the PC's available memory when running in 386 Enhanced Mode. The options are; EMS Memory Locked Checking this prevents WILDCAT!'s EMS memory from being swapped out to a hard disk. Locking WILDCAT!'s EMS memory improves the performance of WILDCAT! at the expense of slowing the rest of the system and reducing the amount of available memory but it is the best choice from a performance standpoint. XMS Memory Locked If you do not have EMS memory or if you specified in MAKEWILD that WILDCAT! should swap to XMS memory, then check this option. The same considerations apply to locked XMS memory as to EMS memory. Use High Memory Area Normally this should be left selected for most applications. If the HMA is available and WILDCAT! uses it, then more memory is available to WILDCAT!. If WILDCAT! does not use the HMA then memory is not wasted. Lock Application Memory This option affects how WILDCAT!'s conventional memory is handled. The use of WILDCAT!'s Expanded or Extended memory is controlled separately by the locked options in the EMS Memory and XMS Memory section. We would suggest that you lock WILDCAT!'s conventional memory to prevent swapping out to disk in the event of a Windows memory shortage situation. Display Options These options control how WILDCAT! appears on the screen and how Windows handles memory when it displays WILDCAT! Since WILDCAT! does not interact directly with input and output ports you can leave these options at their default settings. Windows should not be set to monitor any ports so none of these boxes should be checked. Emulate Text Mode For most applications, including WILDCAT! you can leave this check box selected. This will increase the rate at which WILDCAT! can display text. Retain Video Memory This setting determines if Windows will release WILDCAT!'s extra video memory for use by other applications. We suggest that it not be checked. Other Options Forget Allow Fast Paste, you're not going to be pasting information into WILDCAT! from other Windows applications, and definitely forget Allow Close When Active. Who would want to close WILDCAT! when its busy working? There is also no need to Reserve Shortcut Keys. This concludes the Windows PIF section, we hope we have explained the PIF parameters affecting WILDCAT!'s operation without confusing anyone. If you have any questions at this point we would have to refer you to the User's Guide for Windows 3.1. What happens when a call comes in? You've started WILDCAT!, its up and running, and you've iconized it and started a Windows application. Maybe you're doing something like we're doing here, working with Word for Windows preparing this document. Yes, while we're pounding on these keys WILDCAT! is ready to pounce on the phone when it detects a ringing condition. So what happens to your Windows application? Not much really. It does take a sharp drop in performance, sometimes seeming to stand still. Its not really stopped altogether, but it's close. We usually do a fast save of whatever we have going, exit the application, and restore WILDCAT! to its full screen mode. This is not really necessary but if we're at the keyboard we like to see who is logging on and how they are using our system. Other Considerations Windows 3.1 operating in 386 Enhanced Mode should always have a permanent swap file allocated. Our recommendation for the size of this file is to make a permanent swap file at least the size of the real physical memory you have available. We have been challenged on this but our system never runs out of memory, real or virtual, unless we do something stupid like keep starting DOS partitions using real memory, until we can't start any more. See the User's Guide for Windows for instructions on setting up a permanent swap file. Don't put WILDCAT! into 43-line high resolution mode. Insure that WILDCAT! runs in full screen 80x25 mode. Remember, windowing WILDCAT! takes extra Windows resources. Since you have DOS Share installed be carefull about working with files that WILDCAT! may need or is using while operating. If you manage to get update access to a file that WILDCAT! requests, a sharing violation will occur when WILDCAT! The violation message will be written to the WILDCAT! local screen that you probably can't see because the program that has WILDCAT!'s file is probably in full screen mode. If you switch away from the program that has the WILDCAT! file, Windows will inform you that a sharing violation has occured. Meanwhile, WILDCAT! just sits and waits to get its file. Summary We hope that this dissertation has clarified some important considerations for running WILDCAT! in the Windows 3.1 environment. We are still working on the optimization of our system, a seemingly never ending task considering our constant state of hardware and software evolution. Changing DASD, memory, and major software requires that the environment be reevaluated and optimized to insure optimal performance. WILDCAT! does run under Windows 3.1 and it runs quite well. SEE FOR YOURSELF!!! CALL US. We operate a totally FREE Bulletin Board system that currently has over 700 TrueType and over 700 Adobe PS Type-1 fonts available for downloading, along with a growing number of Windows utilities and graphic image files. If you would like to log-on to our system to see for yourself how WILDCAT! functions you may do so any evening, Monday through Friday from 10:00 pm until 7:00 am without obligation by dialing (813) 886-0988. Our modem is a V.32/bis, V.42/bis MNP Hayes compatable at up to 14,400 bps, 8N1. Because of the file sizes and time limitations for downloading we must ask that you limit your connect time to no more than one hour per day and we cannot accept 300/1200 bps calls, sorry. In preparing this disertation we have drawn on our experience with Windows since it was first introduced. We have also tended to remain on the cautious side, especially with some of the system parameters such as SHARE, etc. Our position is not to dictate to you how you should run your system, but how we are running ours and what we have done that makes WILDCAT! so successful for us. If you have any questions or comments on this paper, anything you feel should be included, or any other consideration for the operation of WILDCAT! in a multi-tasking or LAN environment we would be pleased to hear from you. We can be reached at (813) 882-8693, (by voice or FAX). Or on CompuServe, 71201,370. Gerard E. Bernor President and Senior Partner BC Creative Services, Inc. A Graphic Arts and Publishing Enterprise 9044 Bayou Dr. Tampa, FL 33635-5925