Instancing and Instanced UMBs A little known and little used feature that was added to Windows 3.1 is the ability to instance TSRs and to create instanced Upper memory. Instanced Upper memory is upper memory that is unique to each DOS box (VM). If upper memory is instanced drivers and TSRs can be loaded high in the VMs, and each VM can have different things loaded in it's UMBs. So, one VM could have a pop-up calendar loaded high for use with a project manager, while another VM could have a pop-up speller loaded for use with the spreadsheet running in that VM. Instancing TSRs involves creating unique copies of TSRs for each VM that is created. These copies are created dynamically when the VM is first launched. This is primarily useful for drivers, such as ANSI.SYS, that are loaded before Windows, and need to operate independently in each VM. For example, ANSI.SYS should be instanced so that it maintains a unique cursor position, screen color, screen size and so on, for each VM. This way each VM can maintain it's own copy of ANSI running independently. How to instance Drivers and TSRs. To tell windows to instance a Driver, place the command "LOCAL=driver-name" on a line by itself in the [386Enh] section of the SYSTEM.INI. The driver name is the device name of the device as it appears in the device driver chain. This can be ascertained by using the MEM /D command, or by using a system analysis program such as Discover or MSD. To instance a TSR place (or add) the command "LocalTSRs=" in the [NonWindowsApp] section of the SYSTEM.INI. List the name of the TSR's EXE file. For example, to instance Sidekick (SK.COM) and Turbo Lightning (LIGHT.EXE), you would say "LocalTSRS=SK,LIGHT" How to create instanced upper memory. To create instanced upper memory, place the command "LocalLoadhigh=on" in the [386Enh] section of the Windows SYSTEM.INI file. Keep in mind though that Windows makes extensive use of upper memory, and this command prevents Windows from using Upper memory for itself. If you do want to use local UMBs, be sure to use a TSR such as Netroom's WINMEM to reserve some upper memory for Windows' use. Under DOS 6 you can also use the EMM386 WIN= command, or Netroom's WINMEM=. This will reserve some memory for Windows to use as global memory and for translation buffers. Instancing is dangerous. Having TSRs instanced is dangerous and, if you are not very, careful you can lose data. Think of the following: SideKick is loaded and is instanced. You pop up sidekick in one VM, enter some data and save it, say in the calendar. Switch to another VM enter some other data and save it. The data you saved in the first instance is overwritten by the data from the second instance, and is gone forever. So although instancing can be useful, as in ANSI.SYS, it can also be deadly (think of instancing DoubleSpace's DBLSSYS$). Copyright (c) 1993, Helix Software Co., Inc.