386SWAT Profile Options

The following profile options are recognized by 386SWAT. Options may be entered in upper and/or lower case. See the file 386SWAT for a list you can use already in profile format.


[section name] For versions of DOS which support MultiConfig, this option limits profile processing to the matching MultiConfig section in CONFIG.SYS.
ADDRHBITS=n Bits to use for address hashing (8-12; default 12). See SWATSYM.DOC.
ALTSCR Display debugging information on the screen other than the current one being used. That is, in a two monitor system, if the current screen uses the color adapter, display debugging data on the monochrome screen and vice versa. This option is valid only if we detect that there are both a color and monochrome adapter in the system. Otherwise, it is ignored. Note that the screens can be swapped via Alt-F7. An alias for this option is /A.
BUCKETS=n Specify the number of name hashing blocks to allocate (about 1K each). See SWATSYM.DOC.
CMDHIST=nnn Specify the size of the command history buffer used by command line recall. Default is 1024.
COLDBOOT Don't write 1234h to warm boot flag location when rebooting system from within 386SWAT.
DEBUG=TRIP Use triple fault method of rebooting. Sometimes a system doesn't reboot when using the 8042 method (the default), so here's another way to skin the cat.
DVGA Use a Dual VGA screen as the secondary monitor.
GPSKIP=key[,key] If a GP Fault occurs on any of the instructions named in the list, do not signal this to 386SWAT. This option allows you to trap GP Faults but filter out ones which may commonly occur but not be of interest. The key values (GP Skip instructions) supported are
Keyword Instruction(s)
CLI CLI
CRn MOV r32,CRn
MOV CRn,r32
HLT HLT
IND IN AL,DX
IN AX,DX
IN EAX,DX
INI IN AL,immed
IN AX,immed
IN EAX,immed
INT INT xx
IRET IRET
IRETD
OUTD OUT DX,AL
OUT DX,AX
OUT DX,EAX
OUTI OUTimmed,AL
OUT immed,AX
OUT immed,EAX
PPF PUSHF
POPF
PUSHFD
POPFD
STI STI
The keyword ALL covers all of the above options.
INTRUDE Attempt to intrude into another memory manager's PL0 context. If this is successful, 386SWAT appears as a PL0 debugger in the context of the memory manager. This option is now the default. To disable this option, use VCPISWAT.
KEYB=cclay Use international keyboard whose country code/layout is cclay. Possible values are
cclay Country
GR129 Germany
SP172 Spain
If your international keyboard is not in this list, read the file KEYBIN.TXT to see how you can help.
LCD Specify that an LCD screen is present (and 386SWAT uses the LCD screen attributes). Does anyone know how to detect this case under program control? I would prefer not to require the user to tell us what the screen is like.
LOADLOW Tell 386MAX it's not OK to load us into extended memory after INIT_REAL and to relocate our INIT_VIRT code. It's highly unlikely you'll need this option.
LOADSYM=filename [optional] Load specified symbol file with optional arguments:
/b=xxxxxxxx Optional physical base address in hex
/h Optional HPDA flag (enable DPMI services)
/li- Optional disable of line numbers
/xl Disable larger comparison w/SYMSIZE
LOGSIZE=nnnnn Define size of error log in bytes. Default is 4096.
MONO Use monochrome adapter if present.
NOGD Because some programs may reset the debug registers which you've carefully setup, 386SWAT automatically sets the Global Debug (GD) bit in DR7 on startup so that we can stop such programs before they can do any harm. In case you don't want 386SWAT to do this, use this keyword.
NORMLIDT Disable Real Mode LIDT redirection. Device 386SWAT uses a separate IDT to handle nasty bugs which write into the Real Mode IDT at 0:0 such as DOS 6.x does during its transient CONFIG.SYS processing. This is the default state. Use RMLIDT to find this kind of bug.
NOSWAP Don't restore the previous underlying screen when single-stepping. This option is useful in conjunction with the ALTSCR option. This option specifies the initial state only. It can be toggled via Alt-F6.
NOWINK Disable Windows Kernel Debugging.
PASSTHROUGH=xx,xx,xx,... Allow one or more hardware interrupts to be passed through to the previous protected mode handler while 386SWAT is active. Currently, these are limited to 76, 77, 0B, and 0C. THIS OPTION SHOULD NOT BE USED UNLESS NECESSARY. For example, when the IBM PS/2 SCSI adapter (8EFE or 8EFF) is used, staying in 386SWAT for more than 1 or 2 minutes will cause the hard disk to lock on the next disk access. PASSTHROUGH=76 will allow one to stay in 386SWAT indefinitely.
PATH=d:\dir1[,d:\dir2[,...]] Specify source file search path (see SWATSYM.DOC).
PORTINIT=string Initialize serial port. String may contain any character except semicolon, including the following escape sequences:
\\ Send backslash.
\r Send CR.
\b Send a break signal (this is a hardware signal, not a character).
\p Pause for about 250ms.
\1 - \0 Delay for 1 - 10 seconds.
SETCOM must be specified to set the parameters for the serial port. On the first entry to 386SWAT (which may be remotely triggered) 386SWAT will automatically try to connect for remote debugging.
PRO=d:\path\filename.ext Read subsequent command line options from a profile. Just as with 386MAX, as you append more and more options to the 386SWAT command line, you may prefer to collect them all in a 386SWAT profile, one per line. These options may be followed by a semicolon and a comment. This profile is handled exactly the same way as is the corresponding profile for 386MAX.
PROXSRCH=r[,g] Set range and granularity for proximity searching on symbol addresses. See SWATSYM.DOC.
PS4=xxxx Periscope 4 hardware debugger board is installed at I/O port xxxx (for reference, the factory setting is 300h). This feature allows 386SWAT to manage the traceback buffer and other features of the Periscope Company's 386 hardware debugger. *NOTE* this feature isn't finished.
RMLIDT Enable Real Mode LIDT redirection. Device 386SWAT uses a separate IDT to handle nasty bugs which write into the Real Mode IDT at 0:0 such as DOS 6.x does during its transient CONFIG.SYS processing.
SAVESCREEN=nnn Specify the number of last screens to save. This keyword allows you to control how many screens back Alt-F10 can display. The default is sixteen. Each screen consumes 4000 bytes of storage in extended memory.
SETCOM=port,bps[,itype[,portbase]] Specify port to use for remote debugging.
port From 1-4 for COM1 through COM4.
bps Transfer rate, from 1 to 115200.
itype Interrupt mode. May be 3 or 4 to specify IRQ (default is IRQ3 for COM2/COM4, IRQ4 for COM1/COM3), * for default, or p for polled operation. Currently, an IRQ line is required for remote debugging.
portbase UART port base if different from defaults: COM1=3F8, COM2=2F8, COM3=3E8, COM4=2E8.
SYMFILTER=text1 [text2 [...]] Some symbols, especially from Windows programs written in C, are prefaced with text such as "__imp__", "_", and the like which adds to the symbol's length but not understanding. This feature allows you to specify in the 386SWAT profile leading text which is to be stripped from each symbol.

The default settings are

SYMFILTER=__imp__ _

Up to 128 characters can be specified in this way.

SYMSIZE=nnnnn Specify the number of bytes to reserve for the symbol table. The default size is 4096. See SWATSYM.DOC.
TRAPBOUND Trap BOUND instruction interrupts, ignoring INT 05h.
TRAPDEBUG Intercept INT 01h/03h at installation time. Normally, 386MAX directs protected mode occurrences of INT 01h/03h to 386SWAT and real mode occurrences to the real IDT handler. This options causes all such interrupts to be handled by 386SWAT. This feature may be toggled via Alt-F1.
TRAPDIV Trap divide overflow interrupts.
TRAPGENP Trap General Protection Faults (toggle via Alt-F3).
TRAPINV Trap Invalid Opcode interrupts (toggle via Ctl-F3).
TRAPNMI Trap Non-Maskable Interrupts. This option is useful in conjunction with a hardware breakout switch which can be used to invoke the debugger even if all interrupts are disabled (toggle via Alt-F2).
TRAPPAGE Trap Page Faults (toggle via Alt-F4).
TRAPSEGNP Trap Segment Not Present Faults.
TRAPSKIP Trap INT 03h instructions (toggle via Ctl-F2).
TRAPSTACK Trap Stack Faults (toggle via Ctl-F4).
TRAPSTEP Trap INT 01h breakpoints (toggle via Ctl-F1).
TRAPTSS Trap TSS Faults.
VCPISWAT Do not attempt to intrude into another memory manager's PL0 context. This option disables the default INTRUDE option.
VIDEO=d:\path\filename.ext Read in/write to video tables. If the specified file exists, it is read in and used as video table information. If the file doesn't exist, it is created. The information in the video table specifies how to switch to particular video modes as well as how to set certain cursor types. Use this option if you wish to bring up 386SWAT on top of graphic applications on single-monitor systems. *NOTE* this option doesn't fully work as yet, so I suggest that you don't use it.
VMSCOUNT=n Used with VMSINT. Limit number of times 386SWAT inserts itself into a VCPI client's GDT/IDT. This may be useful when debugging VCPI applications that call Enter Protected Mode (AX=DE0C) repeatedly, such as a real-mode INT 08h handler that enters protected mode on every clock tick. The correct value may have to be determined by trial and error.
VMSINT[=xx,xx,...] Trap VCPI Enter Protected Mode switches (AX=DE0C) and blast in sufficient GDT and IDT entries to debug the client application. This option is useful when debugging a VCPI application which does not follow the preliminary VCPI debugger specification. Use this option with care. The argument (if present) limits the intercepted interrupts to the values. When VMSINT is in effect, it may be important to limit the interrupts. For example, some DOS16M apps (such as Lotus 1-2-3 Version 3.0) intercept interrupts but don't set the access rights byte in the IDT (they assume that it's still set for a 286 interrupt gate, as DOS16M setup originally). Thus when 386SWAT blasts its task gate entries into the IDT, subsequent DOS16M intercepts leave those entries marked as a task gate. This debug option limits us to intercepting those faults necessary to catch catastrophic errors, but not everything. Interrupts which may be intercepted are 00, 01, 02, 03, 05, 06, 0A, 0B, 0C, 0D, and 0E.
WKDLS=nnn Reserve space for nnn WKD load segment entries.