README.TXT

SoftICE 3.2 Release Notes


-----------------------------------------------------------------
                        Table Of Contents 
-----------------------------------------------------------------
* What's New in SoftICE 3.2
      SMP Support (Windows NT version)
      Memphis Beta 1 support (Windows 95 version)
      Universal Video Driver
      Improved serial operation
      43 Lines on Hercules-compatible Monochrome Cards
      Miscellaneous Options
* System Requirements
* Installation
* Quick Start to Debugging
* Using Multiple Monitors Under Memphis
* Debugging Display Drivers Under Memphis
* Using SoftICE with Visual C++ 5.0
* Using SoftICE with Borland C++ Builder
* VToolsD Support
* Known Anomalies
* Troubleshooting Tips
* Known Problems Related to Watcom C++
* Reporting Problems And Suggestions


What's New in SoftICE 3.2
-------------------------

Major new features in SoftICE 3.2 include:

* SMP support (Windows NT version)
* Memphis Beta 1 support (Windows 95 version)
* Universal video driver: hardware-independent video support that works 
with most recent cards.
* Improved serial operation
* 43 lines on Hercules-compatible monochrome cards (first introduced in 
SoftICE 3.01)


SMP Support (Windows NT version)
--------------------------------

SoftICE 3.2 supports Pentium and Pentium Pro multiprocessor systems, up 
to 8 CPUs, which use the standard Intel multiprocessor scheme (APIC). 
Note that there are a variety of semistandard and proprietary 
multiprocessor systems on the market; these are NOT supported.

The CPU command can be used to dump the state of the various processors. 
While SoftICE is active (popped up) only one CPU is in use; the rest are 
halted. At other times all CPUs run concurrently, as normal.


Memphis Beta 1 support (Windows 95 version)
-------------------------------------------

SoftICE 3.2 (Windows 95 version) supports Memphis Beta 1 (build 1525). 
The following features have been added:

* The DEVICE, DRIVER, FOBJ, IRP and OBJDIR commands have been added to 
the Memphis version.  These commands operate in the same manner as those 
found in SoftICE for Windows NT.  Please refer to the SoftICE Command 
Reference manual for additional information.

* If WDMEXPORTS=ON is placed in WINICE.DAT, SoftICE for Windows 95 will 
dynamically build exports for WDM drivers.


Universal Video Driver
----------------------

Previous versions of SoftICE ran exclusively in text mode, and relied on 
device-dependent drivers, written by NuMega, to switch from normal 
Windows hires mode to text mode and back. The main problem with this is 
that each display device requires special support. SoftICE 3.2 
introduces a "universal" video driver which works in a largely device-
independent manner, eliminating the need to explicitly support each 
device.

Rather than switch into text mode, the universal video driver uses 
whatever video mode is currently in effect, and writes directly into the 
frame buffer. Thus SoftICE appears as a movable "window" on the Windows 
display.

In the case where Windows hires mode is not active, e.g. full-screen DOS 
box, SoftICE switches the display to text mode, just as it would if the 
universal video driver were not selected. Although this involves device-
dependent register access, in most cases the Standard VGA driver can be 
used successfully, since the display is in a standard VGA mode. (An 
exception would be a DOS program that switched the display into a SVGA 
mode).

To summarize, the key benefits of the universal video driver are:

* Device-independent (within certain parameters); most new cards work 
automatically without requiring special support.

* SoftICE pops up as a movable "window" on the Windows desktop. Up to 
128 lines are supported with 3 font choices.

The universal video driver is enabled during the video setup phase of 
the installation by selecting the "Universal Video Driver" checkbox. As 
explained above, when the universal video driver is enabled the video 
card choice only affects SoftICE when the system is in VGA mode (e.g. 
full-screen DOS box), so Standard VGA is an acceptable choice if your 
video card is not listed.

Be sure to select the "Test" button to verify that your video card and 
driver are supported. In order to use the universal video driver the 
video card must meet the following conditions:

1) The video card uses a linear (not bank-switched) frame buffer (only 
required on Windows NT)
2) The video driver supports DirectDraw (only required on Windows NT). 
Note that being able to run DirectDraw programs does not imply that your 
video driver supports DirectDraw.
3) The video card must run in 8-bit, 15/16-bit, 24-bit, or 32-bit modes.

With the universal video driver enabled, SoftICE will pop up directly on 
the Windows desktop, using whatever video mode is currently in effect. 

The universal video driver is not supported under NT 3.51.


COMMANDS

The following commands and hotkeys can be used to change the location 
and appearance of the SoftICE "window":

SET FONT n
 	where n is 1, 2 or 3, selects a font.

SET ORIGIN x y
 	Where x and y are pixel coordinates, locates the window.

LINES n
	Where n is 25-128, selects the number of lines for SoftICE to use

Control-Alt- cursor keys
	Moves the SoftICE window by a character increment.

Control-Alt-Home
	Resets the SoftICE window position to (0, 0)

Control-L
	Refreshes the SoftICE display. This is useful in the rare case 
where the part of the display used by SoftICE is overlapped by a bitblt 
operation that happened to be running when SoftICE popped up.


SETTING THE VIDEO MEMORY SIZE

When using the universal video driver, SoftICE must save the existing 
contents of the frame buffer so it can be restored later. The amount of 
memory required depends on the video mode, the number of lines used by 
SoftICE, and (for DirectDraw applications) how many flipping surfaces 
are in use. In any case, the amount of memory required can't exceed the 
amount of memory on your video card. By default, SoftICE reserves 2MB, 
but you can modify this using the Symbol Loader (go to Edit -> SoftICE 
Initialization Settings and change the "Video memory size" setting).


Improved serial operation
-------------------------

SoftICE 3.2 includes a new Win32 implementation of the utility used 
control SoftICE over a standard serial port, called SERIAL32.EXE. If the 
remote machine is running MSDOS, the old MSDOS version of SERIAL may 
still be used. (The DOS SERIAL.EXE program has been relocated to the 
UTIL16 directory).  The command line syntax for SERIAL32 is as follows:

serial32 [-l=25|43|50|60] [<port name> [<baud rate>]]

'-l' sets initial screen lines
<port name> is COM1, COM2, etc...
<baud rate> is the baud rate

The SoftICE SERIAL command line usage has not changed.  This is 
documented in the manual.

As an alternative to running SERIAL32 or SERIAL, SoftICE 3.2 can also be 
used with a VT100 compatible terminal (or program) as the controlling 
device.  In VT100 mode, function keys can be entered by using the key 
sequence "^F" "digit" ("^F" denotes pressing the "F" key while holding 
down the Control key).  The digits "0" thru "9" may be used.  Example: 
"^F" "1" denotes function key F1.  "^F" "0" denotes function key F10.  
Some ALT keys may be entered by using the key sequence "^A" "character".  
Example:  "^A" "A" denotes ALT-A.  

To initiate use of the VT100 serial mode in SoftICE, use the following 
command:

SERIAL VT100 [com-port] [baud-rate]


43 Lines on Hercules-compatible Monochrome Cards
------------------------------------------------

As of version 3.01, SoftICE has the ability to run in graphics mode on 
Hercules-compatible monochrome cards, allowing it to display 43 lines of 
text rather than the 25 lines possible in text mode. This mode is 
entered via the commands:

ALTSCR MONO
LINES 43

There is a related SET option. SET WIDE ON causes SoftICE to use 9-pixel 
wide character cells rather than 8-pixel wide characters. Outside of 43-
line monochrome mode, the option is meaningless.


Miscellaneous Options
---------------------

Some miscellaneous options have been added in this release.

SET WHEELLINES n
	For IntelliPoint mice: sets the number of lines that should be 
scrolled for each wheel movement.

SET BUTTONREVERSE [on|off]
	Setting this to ON will reverse the normal meaning of the two 
mouse buttons.


System Requirements
-------------------

For All Systems:

* 5 MB disk space required
* 2.5 MB disk space optional (Adobe Acrobat Reader for on-line manuals)
* Microsoft-compatible Serial or PS/2 mouse (optional)
* Single monitor, an additional monochrome monitor, and remote debugging 
are supported

For Windows 95:

* Windows 95
* 16 MB RAM minimum (32 MB recommended)

For Windows NT:

* Intel x86 uniprocessor or Intel-standard SMP system
* Windows NT 3.51
* Windows NT 4.0 (Build 1381)
* 32 MB RAM minimum (64 MB recommended)
* Installation account with administrator rights


Installation
------------

* To install SoftICE, run SETUP.EXE. For Windows NT, run Setup from an 
account with administrator rights.

* Setup will prompt you to select your display adapter's make and model, 
and allow you to select the "Universal" video driver or an additional 
monochrome monitor.

* Setup will prompt you to select the type of mouse you are using (none, 
serial-COM1, serial-COM2, or PS/2). The bus mouse is not supported.

* You can change your display adapter or mouse later by running Display 
Adapter or Mouse Setup from the SoftICE start menu (Windows 95) or the 
SoftICE program group (Windows NT).

* For Windows NT only: Setup will prompt you to select a startup mode 
for SoftICE. You can change your startup mode later by running Startup 
Mode Setup from the SoftICE program group.

* To uninstall SoftICE, select Remove SoftICE from the SoftICE start 
menu (Windows 95) or from the SoftICE program group (Windows NT).


Quick Start to Debugging
------------------------

1) Run Symbol Loader (LOADER32.EXE).

2) Choose File-Open Module, and select the module you want to debug.

3) Choose Module-Load (or click the Load button on the toolbar). SoftICE 
automatically extracts symbol information from your module, creates a 
.NMS file containing the information, loads the symbols and source code, 
and, if you are loading an EXE file, loads the EXE and sets a 
breakpoint. You're ready to start debugging.

Other features to check in the new symbol loader:

* Module-Settings (symbol translation and debug options for your module)
* Module-Translate (creates a .NMS file for pre-loading at start up)
* Edit-SoftICE Initialization Settings (replaces WINICE.DAT)
* File-Load Exports (loads exported symbols for DLLs you select)
* File-Save SoftICE History (replaces WLOG and DLOG)


Using Multiple Monitors Under Memphis
-------------------------------------

NOTE: This section applies to Memphis only. SoftICE does not currently 
support multiple displays under Windows NT.

Memphis supports multiple display devices. One of the devices, called 
the primary display, supports VGA (this is the device that is active at 
boot time); the other devices run with VGA disabled.

In the video setup phase of the installation, be sure to select the 
device being used as the primary video card. For example, if you're 
using an S3 card as the primary display and an ATI card as the secondary 
display, tell SoftICE to use the S3 card.


SPECIFYING WHICH MONITOR TO USE

When the Universal Video Driver is in use, it is possible to control 
which monitor SoftICE will use. Add a line to WINICE.DAT such as this:

MONITOR=1

This tells SoftICE to use the "second" monitor. Other numbers (0, 1, 2, 
etc) can be used.


Debugging Display Drivers Under Memphis
---------------------------------------

Under Memphis there can be multiple display drivers loaded 
simultaneously, and multiple instances of display drivers. 
Unfortunately, all these drivers have the same module name, DISPLAY, so 
SoftICE doesn't know which driver it should associate with the symbol 
table. The symbol table will be associated with the first driver loaded, 
which may not be the one you want to debug.

There are two solutions to this problem:

* Don't load multiple display drivers or display driver instances unless 
it's really necessary.

* Use the SYMLOC command to tell SoftICE which module it should 
associate with the symbol table, as follows:

SYMLOC [hmod]

Where hmod is a module handle (a 16-bit number). Use the MOD command 
(e.g. MOD DISPLAY) to get a list of the loaded display drivers and their 
handles.


Using SoftICE with Visual C++ 5.0
---------------------------------

When linking, the /PDBTYPE:CON option must be used. To set this option 
from the IDE, go to the Link tab of the project settings, select 
Category "Debug", and ensure that the "Separate types" option is NOT 
selected.


Using SoftICE with Borland C++ Builder
--------------------------------------

C++ Builder stores the Borland debug information in .TDS files separate 
from the executable. TDS files are also produced by the TDSTRP32 
utility. To load symbols and source into SoftICE, simply use the Symbol 
Loader to load the .TDS file. If you want to load the executable from 
the Symbol Loader that must be done afterward as a separate step. 
Alternatively, you could set the desired breakpoints and then load the 
executable normally.


VToolsD Support
---------------

SoftICE 3.2 includes support for locals and structures, which makes it 
easier than ever to develop VxDs in C/C++. To take full advantage of 
SoftICE 3.2, VToolsD users will need to make some minor modifications to 
the VtoolsD make files.

NOTE:
Replacement makefiles incorporating these changes are available from 
ftp://ftp.numega.com/pub/tech/vtoolsd.zip

Microsoft Visual C++ users:

Edit vtd95\include\ms9.mak as follows:

1) Replace all instances of /Zd with /Zi. This ensures that full debug 
information is included.

2) Remove references to DBG2MAP and MSYM. Those tools were used with 
older versions of SoftICE but are now obsolete. Instead, to create your 
.NMS symbol file, use:

NMSYM /PROMPT /TRANSLATE:package,always /SOURCE:$(VTOOLSD)\lib\source;$(VTOOLSD)\lib\classlib;$(VTOOLSD)\lib\include $(TARGNAME)

Unzipping the VtoolsD source code is recommended for full source-level 
debugging.

Borland C++ users:

1) Build your VxD with debug information using the /v switch for the 
compiler and linker (as usual).

2) Use the PELE utility with the -s switch to create a section mapping 
file (.SMF). Translate the .SMF file to a .NMS symbol file with LOADER32 
or NMSYM. Note that translating the .DLL produced by the linker will not 
work; it is essential to translate from the .SMF file.


Known Anomalies
---------------

* When using the universal video driver, you may notice that the Windows 
cursor overlays the SoftICE display. This occurs because the Windows 
cursor is (usually) implemented as a hardware sprite. If this bothers 
you, one way around it is to select a color or animated cursor (in the 
Windows control panel settings); the operating system will revert to a 
software cursor, which can be erased by the SoftICE display rendering.

* Under the following conditions SoftICE for Windows NT may appear to 
hang your machine (it is not really hung however!):
- You start SoftICE for Windows NT manually, and you are NOT in full-
screen (VGA) mode.
- You are using the universal video driver.
- You do not have an "X;" at the end of your SoftICE INIT string.

If all these conditions are met, SoftICE will start but will be 
invisible. Hit Control-D to regain control of the system. The next time 
you hit Control-D SoftICE should pop up normally. The reason for this 
anomaly is that the SoftICE universal video driver can't begin to 
operate until at least one command has been passed to the display 
driver. None of this applies to SoftICE for Windows 95.

* When debugging 16-bit programs, ? <variable> and WATCH <variable> are 
not supported. However, the locals window is fully functional.

* The NT 3.51 checked build crashes when SoftICE is loaded using the 
default winice.dat file. To fix the problem, change winice.dat as 
follows:
- Add the line: mouse=off
- If you are using a mouse in SoftICE, add "set mouse on" to your INIT 
string. Example: init="set mouse on;X;"

* SoftICE 3.2 for Windows 95 is not compatible with BoundsChecker for 
Windows 3.x (16-bit).

* The Windows 95 shutdown option Restart computer in MS-DOS mode is not 
supported when running SoftICE. Loading SoftICE after choosing this 
option causes the system to become unstable and eventually crash. To 
return to MS-DOS after you shut down Windows 95, set BOOTGUI=0 in 
MSDOS.SYS (really an ini file with hidden, read-only, system 
attributes). Then use Shutdown the Computer to restart your system.

* Windows NT becomes unstable when it runs low on non-paged memory. This 
can occur if you load many symbols and source files. Use Symbol Loader-
Help-About Symbol loader to monitor SoftICE memory usage. You may need 
to be selective about how much information you load into SoftICE. 
SoftICE loads all source files by default. To limit the source files, 
list the files to be loaded in a .SRC file with the same name as your 
module. Put the .SRC file in the same directory with your executable.


Troubleshooting Tips
--------------------

* Erratic keyboard behavior:  If the keyboard behaves erratically when 
you load SoftICE, run Symbol Loader, select Edit-SoftICE Initialization 
Settings, and select the following option on the Troubleshooting page, 
and restart SoftICE:

--- Disable Num Lock and Caps Lock programming

If the erratic behavior persists in Windows NT, select this 
Troubleshooting option as well:

--- Do not patch keyboard driver

* Erratic mouse pointer movement: If mouse movement occurs when SoftICE 
pops up, the operating system and the mouse hardware might become out of 
sync because part of a mouse packet is lost. This results in erratic 
mouse pointer movement. Use one of the following to resync the mouse:
- Type ctrl-M in SoftICE. You may need to do this a few times.
- Switch to a full screen DOS box in Windows NT.
- Use SET MOUSE OFF, followed by SET MOUSE ON, in Windows 95.

* If you encounter a situation where either program logic or a corrupt 
data structure causes SoftICE to enter an endless loop and the 
informational commands do not respond in a timely manner, press the 
Escape (Esc) key one or more times to abort the current operation.

* Debugging Delphi Programs - Be sure to use the $O- option to turn off 
optimizations. When optimizations are on, many unreferenced parameters 
and locals are optimized out, although some reference to them still 
exists in the debug information.


Known Problems Related to Watcom C++
------------------------------------

* Watcom C++ V11.0 does not seem to produce correct Codeview debug 
information in all cases (line number sections are missing). No such 
problem was observed with earlier versions of Watcom C++.

* When Watcom C++ V10.6 is used with the Microsoft linker (from VC++ 
V4.2) to produce VxDs, the line number debug information produced by the 
linker is not correct. The reason for this is unknown, and may affect 
other versions as well.


Reporting Problems And Suggestions
----------------------------------

Be sure to check our web site at http://www.numega.com for product 
updates, FAQs, white papers and other technical support information.

Contact Technical Support via our SUPPORT page at our web site or send 
e-mail to tech@numega.com.  Priority Support Customers can call us at 1 
888 NUMEGAS or +1 603 578 8100.	You can also FAX us at +1 603 578 
8401 (attention: Technical Support).

If you are not a Priority Support Customer but are interested in 
becoming one, visit our website or call 1 800 4NUMEGA.

Include the following in your problem report:

* System Configuration (O/S, processor, and RAM)
* Detailed problem description (include exact error message text)
* If video related, include video adapter and driver names and version
  (include PCI Vendor ID and Device ID as well if available)
* How to reproduce the problem


-----------------------------------------------------------------
Copyright 1997 NuMega Technologies Inc.
07/24/97

