4Swat Reference

n	keyboard



Usage:	keyboard [<object>]

Examples:	

"keyboard"	print keyboard hierarchy from system object down

"keyboard -i" 	print keyboard hierarchy from implied grab down

"keyboard ^l4e10h:20h" 
print keyboard hierarchy from ^l4e10h:20h down.

Synopsis:	Prints the keyboard hierarchy below an object.

Notes:	

u	If no object is specified, the system object is used. 

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

u	The variable "printNamesInObjTrees" can be used to print out the actual 
app-defined labels for the objects, instead of the class, where available. 

	This variable defaults to false. 

See Also:	target, focus, mouse, model, pobject.

n	keyboardobj



Usage:	keyboardobj

Examples:	

"keyboardobj" 	
return object with keyboard grab

"pobj [keyboardobj]" 
do a pobject on the object with the keyboard grab (equivalent  
to "pobj -kg".

Synopsis:	Returns the object with the keyboard grab.

See Also:	target, focus, mouse, keyboard, mouseobj.

n	lastCommand



Usage:	$lastCommand

Examples:	

"var repeatCommand $lastCommand"
Set the current command as the command to execute next time.

Synopsis:	$lastCommand stores the text of the command currently being executed.

Notes:	This variable is set by top-level-read. Setting it yourself will have no effect, 
unless you call set-address or some similar routine that looks at it. 

See Also:	repeatCommand, top-level-read.

n	length

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	lhwalk



Usage:	lhwalk [<address>]

Examples:	

"lhwalk 1581h"
list the lm heap at 1581h:0

Synopsis:	Prints out information about a local memory heap.

Notes:	

u	The address argument is the address of the block to print. The default is 
the block pointed to by DS.

See Also:	hwalk, objwalk

n	link



Usage:	link <library> [<patient>]

Examples:	

"link motif"	Makes the library "motif" a library of the current patient as far 
as Swat is concerned.

Synopsis:	Allows you to link a patient to act as an imported library of another patient, 
even though the other patient doesn't actually import the patient. This is 
useful only for symbol searches.

Notes:	

u	sym-default is a much better way to have Swat locate symbols for 
libraries that are loaded by GeodeUseLibrary(). 

u	Cycles are not allowed. I.e. don't link your application as a library of the 
UI, as it won't work-or if it does, it will make Swat die. 

u	The link persists across detach/attach sequences so long as the <patient> 
isn't recompiled and downloaded. 

u	If you don't give <patient>, then the current patient will be the one made 
to import <library> 

u	Both <library> and <patient> are patient names, not tokens.

See Also:	help-fetch.

n	list

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	listi



Usage:	listi [<address>] [<length>]

Examples:	

"l"	disassemble at the current point of execution

"listi geos::Dispatch"
disassemble at the kernel's dispatch routine

"listi DocClip:IsOut"
disassemble at the local label

"listi cs:ip 20"
disassemble 20 instructions from the current point of execution

Synopsis:	Disassemble at a memory address.

Notes:	

u	The <address> argument is the address to examine. If not specified, the 
address after the last examined memory location is used. If no address 
has be examined then CS:IP is used for the address.

u	The <length> argument is the number of instructions to list. It defaults 
to 16.

u	Pressing <Return> after this command continues the list.

See Also:	istep, sstep, skip, where.

n	load

Usage:	load <file>

Synopsis:	Load a file of Tcl commands.

u	If the file cannot be found as given, it is looked for in all the directories 
mentioned in the "load-path" variable. This variable is initialized from 
the SWATPATH environment variable, which is in the form 
<dir1>:<dir2>:...:<dirN>.

u	The Swat library directory is appended to this path so you need not 
include it yourself. The file need not end in ".tcl".

u	When searching, file, file.tcl, and file.tlc are searched for. If load finds a 
file.tlc file, that file will be used only if it is more recent than any 
corresponding file.tcl or file file.

n	loadapp



Load an application from swat. Single argument is the file name of the 
application to launch (application must reside in the appl subdirectory of the 
GEOS tree). 

The application is opened in normal application mode. Note that the 
application will not be loaded until you continue the machine, as the loading 
is accomplished by sending a message to the UI.

n	loadgeode



Load a geode from swat. Mandatory first argument is the name of the file to 
load (with path from top-level GEOS directory, using / instead of \ as the path 
separator). 

Second and third arguments are the data words to pass to the geode. The 
second argument is passed to the geode in cx, while the third argument is 
passed in dx.

Both the second and third arguments are optional and default to 0. They 
likely are unnecessary.

n	locals



Usage:	locals [<func>]

Examples:	

"locals"	Print the values of all local variables and arguments for the 
current frame.

"locals WinOpen"
Print the names of all local variables for the given function. No 
values are printed.

Synopsis:	Allows you to quickly find the values or names of all the local variables of a 
function or stack frame.

See Also:	print, frame info

n	localwin



Usage:	localwin [<numlines>]

Examples:	

"localwin" 	Display local variables in a 10-line window

 "localwin 15" 
Display local variables in a 15-line window

 "localwin off" 
Turn off the local variable display

Synopsis:	Turn on or off the continuous display of local variables.

Notes:	

u	Passing an optional numerical argument turns on display of that size. 
The default size is 10 lines. 

u	Only one local variable display may be active at a time.

n	loop



Simple integer loop procedure. Usage is:
 loop <loop-variable> <start>,<end> [step <step>] <body>

<start>, <end>, and <step> are integers. <body> is a string for Tcl to 
evaluate. If no <step> is given, 1 or -1 (depending as <start> is less than or 
greater than <end>, respectively) is used. <loop-variable> is any legal Tcl 
variable name.

n	map



Usage:	map <var-list> <data-list>+ <body>

Examples:	

"map {i j} {a b} {c d} {list $i $j}"
Executes the command "list $i $j" with i and j assigned to 
successive elements of the lists {a b} and {c d}, respectively, 
merging the results into the list {{a c} {b d}}

Synopsis:	This applies a command string to the successive elements of one or more lists, 
binding each element in turn to a variable and evaluating the command 
string. The results of all the evaluations are merged into a result list.

Notes:	

u	The number of variables given in <var-list> must match the number of 
<data-list> arguments you give.

u	 All the <data-list> arguments must have the same number of elements.

u	 You do not specify the result of the <body> with the "return" command. 
Rather, the result of <body> is the result of the last command executed 
within <body>.

See Also:	foreach, mapconcat.

n	mapconcat



Usage:	mapconcat <var-list> <data-list>+ <body>

Examples:	

"mapconcat {i j} {a b} {c d} {list $i $j}"
Executes the command "list $i $j" with i and j assigned to 
successive elements of the lists {a b} and {c d}, respectively, 
merging the results into a string.

n	map-method



Usage:	map-method <number> <object>
map-method <number> <class-name> [<object>]

Examples:	

"map-method ax ^lbx:si" 
Prints the name of the message in ax, from the object at 
^lbx:si's perspective.

"map-method 293 GenClass" 
Prints the name of message number 293 from GenClass's 
perspective.

Synopsis:	Maps a message number to a human-readable message name, returning that 
name. This command is useful both for the user and for a Tcl procedure.

Notes:	

u	When called from a Tcl procedure, the <class-name> argument should be 
the fullname of the class symbol (usually obtained with the obj-class 
function), and <object> should be the address of the object for which the 
mapping is to take place. If no <object> argument is provided, 
map-method will be unable to resolve messages defined by one of the 
object's superclasses that lies beyond a variant superclass. 

u	If no name can be found, the message number, in decimal, is returned. 

u	The result is simply returned, not echoed. You will need to echo the result 
yourself if you call this function from anywhere but the command line. 

See Also:	obj-class.

n	mcount



Usage:	mcount [<args>]

Examples:	

"mcount"	start the method count or print the count

"mcount reset" 
restart the method count

"mcount stop" 
stop the method count

"mcount MyAppRecalcSize" 
count messages handled by MyAppRecalcSize

Synopsis:	Keep a count of the methods called.

Notes:	The args argument may be one of the following:

 nothing 	start the method count or print the current count

'reset' 	reset the count to zero

'stop' 	stop the method count and remove it's breakpoint

 message handler 	
start the method count for a particular method

See Also:	mwatch, showcalls.

n	memsize



Usage:	memsize [<memory size>]

Examples:	

"memsize"

"memsize 512"

Synopsis:	Change the amount of memory that GEOS thinks that it has.

Notes:	

u	The <memory size> argument is the size to make the heap. If none is 
specified then the current memory size is returned.

u	Memsize can only be run at startup, before the heap has been initialized. 
Use this right after an `att -s'.

u	Memsize accounts for the size of the stub.

n	methods



Usage:	methods <class>
methods <object>
methods <flags>

Examples:	

"methods -p" 	Print out methods defined for process

"methods ui::GenDocumentClass"
Print out GenDocumentClass methods

"methods 3ffch:072fh"
Print out methods for class at addr

"methods -a" 	Print methods of top class of app obj

Synopsis:	Prints out the method table for the class specified, or if an object is passed, 
for the overall class of the object. Useful for getting a list of candidate 
locations to breakpoint.

n	model



Usage:	model [<object>]

Examples:	

"model"	print model hierarchy from system object down

 "model -i" 	print model hierarchy from implied grab down

 "model ^l4e10h:20h" 
print model hierarchy from ^l4e10h:20h down.

Synopsis:	Prints the model hierarchy below an object.

Notes:	

u	If no object is specified, the system object is used. 

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

u	Remember that the object you start from may have the model exclusive 
within its part of the hierarchy, but still not have the exclusive because 
something in a different part of the tree has it. 

u	The variable "printNamesInObjTrees" can be used to print out the actual 
app-defined labels for the objects, instead of the class, where available. 

	This variable defaults to false. 

See Also:	target, focus, mouse, keyboard, pobject.

n	modelobj



Usage:	modelobj

Examples:	

"modelobj"	print model hierarchy from system object down

"pobj [modelobj]"
Do a pobject on the object with the model grab (the equivalent 
of a "pobj -m").

Synopsis:	Returns the object with the model grab.

See Also:	target, focus, model, focusobj, targetobj.

n	mouse



Usage:	mouse [<object>]

Examples:	

"mouse"	print mouse hierarchy from system object down

"mouse -i" 	print mouse hierarchy from implied grab down

"mouse ^l4e10h:20h" 
print mouse hierarchy from ^l4e10h:20h down.

Synopsis:	Prints the mouse hierarchy below an object.

Notes:	

u	If no object is specified, the system object is used. 

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

u	The variable "printNamesInObjTrees" can be used to print out the actual 
app-defined labels for the objects, instead of the class, where available. 

	This variable defaults to false. 

See Also:	target, focus, model, keyboard, pobject.

n	mouseobj



Usage:	mouseobj

Examples:	

"mouseobj"	return object with mouse grab

 "pobj [mouseobj]" 
do a pobject on the object with the mouse grab (equivalent to 
"pobj -mg").

Synopsis:	Returns the object with the mouse grab.

See Also:	target, focus, mouse, keyboard, keyboardobj.

n	mwatch



Usage:	mwatch <msg>+
mwatch add <msg>+
mwatch list
mwatch clear

Examples:	

"mwatch MSG_VIS_DRAW MSG_METAQUIT"
watch these messages

"mwatch add MSG_META_START_SELECT"
watch this message also

"mwatch"	clear all message watches

Synopsis:	Display all deliveries of a particular message.

Notes:	

u	The msg argument is which messages to watch. Those specified replace 
any messages watched before. If none are specified then any messages 
watched will be cleared.

u	You may specify up to eight messages to be watched (fewer if you have 
other conditional breakpoints active). See cbrk for more information 
about conditional breakpoints.

u	"mwatch clear" will clear all message watches. 

u	"mwatch add" will add the specified messages to the watch list. 

u	"mwatch list" will return a list of breakpoints that have been set by 
previous calls to mwatch.

See Also:	objwatch, objbrk, objmessagebrk, procmessagebrk.

n	next



Usage:	next

Examples:	

"next"	execute the next assembly instruction without entering it

"n"

Synopsis:	Execute the patient by a single assembly instruction, skipping over any calls, 
repeated instructions, or software interrupts.

Notes:	

u	next does not protect against recursion, so when the breakpoint for the 
next instruction is hit, the frame of execution may be one lower.

See Also:	step, istep.

n	noStructEnum



Usage:	var noStructEnum [(0|1)]

Examples:	

"var noStructEnum 1" 
Don't put "struct" or "enum" before the data type for variables 
that are structures or enumerated types.

Synopsis:	Structure fields that are structures or enumerated types normally have 
"struct" or "enum" as part of their type description. This usually just clutters 
up the display, however, so this variable shuts off this prepending.

Notes:	The default value of this variable is one.

See Also:	print.

n	null



Usage:	null <val>

Examples:	

"null $sym"	Sees if the symbol token stored in $sym is the empty string or 
"nil."

Synopsis:	Checks to see if a string is either empty or "nil," special values returned by 
many commands when something isn't found or doesn't apply. Returns 
non-zero if <val> is either of these special values.

Notes:	The notion of "nil" as a value comes from lisp.

See Also:	index, range

n	objbrk



Usage:	objbrk [<obj address>] [<message>]

Examples:	

"objbrk ds:si MSG_VIS_DRAW"
break when a MSG_VIS_DRAW reaches the object

"objbrk -p"	Break when any message is sent to the process object.

Synopsis:	Break when a particular message reaches a particular object.

Notes:	

u	If you do not give a <message> argument after the <obj> argument, the 
machine will stop when any message is delivered to the object.

u	<obj> is the address of the object to watch.

u	The <objbrk> argument to "objbrk del" is the token/number returned 
when you set the breakpoint.

See Also:	objwatch, objmessagebrk, mwatch.

n	obj-class



Usage:	objclass <obj-addr>

Examples:	

"var cs [obj-class ^lbx:si]" 
Store the symbol token for the class of the object ^lbx:si in the 
variable $cs.

Synopsis:	Figures out the class of an object, coping with unrelocated object blocks and 
the like.

Notes:	

u	The value return is a symbol token, as one would pass to the "symbol" 
command. Using "symbol name" or "symbol fullname" you can obtain the 
actual class name. 

u	We decide whether to relocate the class pointer ourselves based on the 
LMF_RELOCATED bit in the LMBH_flags field of the object block's header. 
There are times, e.g. during the call to MSG_META_RELOCATE for an 
object, when this bit doesn't accurately reflect the state of the class 
pointer and we will return an error when we should not. 

See Also:	symbol.

n	objcount



Usage:	objcount [-q] [-X] [-Y] [-b #] [-o #] [-p #]

Examples:	

"objcount" 	count all objects

"objcount -p welcome" 
count all objects owned by welcome

"objcount -o *desktop::DiskDrives" 
count this one object

"objcount -b 0x3270" 
count all objects in this block.

Synopsis:	Count up instances of various objects on the heap.

Notes:	

u	The first argument specifies the options:

            q 	quiet operation - no progress output (not applicable with X, Y)

            o # 	check only object #

            b # 	check ONLY block #

            p # 	check only blocks for patient #

            c # 	check only objects of class #

            C # 	check only objects of top-level class #

            X 	show general verbose info

            Y 	show search verbose info

u	Output fields:

          direct	number of direct instances of this class

          indirect
number if indirect instance of this class (i.e object's superclass 
is this class)

          size	total size of instance data for this class (excludes instance data 
inherited from superclass)

u	Status output:

           .	processing heap block

           ,	processing matching object's top-level class

           ;	processing matching object's non-top-level class

See Also:	hwalk, objwalk, lhwalk.

n	obj-foreach-class



Usage:	obj-foreach-class <function> <object> [<args>]

Examples:	

"obj-foreach-class foo-callback ^lbx:si" 
calls foo-callback with each class in turn to which the object 
^lbx:si belongs.

Synopsis:	Processes all the classes to which an object belongs, calling a callback 
procedure for each class symbol in turn.

Notes:	

u	<function> is called with the symbol for the current class as its first 
argument, <object> as its second, and the arguments that follow <object> 
as its third and subsequent arguments. 

u	<function> should return an empty string to continue up the class tree. 

u	obj-foreach-class returns whatever <function> returned, if it halted 
processing before the root of the class tree was reached. It returns the 
empty string if <function> never returned a non-empty result.

See Also:	obj-class.

n	objmessagebrk



Usage:	objmessagebrk [<address>]

Examples:	

"objmessagebrk MyObj"
break whenever a message is sent to MyObj

"objmessagebrk"
stop intercepting messages

Synopsis:	Break whenever a message is sent to a particular object via ObjMessage.

Notes:	

u	The <address> argument is the address to an object to watch for 
messages being sent to it. If no argument is specified then the watching 
is stopped.

u	This breaks whenever a message is sent (before they get on the message 
queue. This enables one to track identical messages to an object which 
can be removed.

See Also:	objwatch, mwatch, procmessagebrk, pobject.

n	objwalk



Usage:	objwalk [<address>]

Examples:	"objwalk"

Synopsis:	Prints out information about an object block.

Notes:	

u	The <address> argument is the address of the block to print. The default 
is the block pointed at by DS.

See Also:	lhwalk, pobject

n	objwatch



Usage:	objwatch [<address>]

Examples:	

"objwatch ds:si"
watch the messages which reach the object at DS:SI

"objwatch MyObject"
watch the messages which reach MyObject

"objwatch"
Watch the messages which reach the process object.

Synopsis:	Display message calls that have reached a particular object.

Notes:	

u	The <address> argument is the address of the object to watch.

u	This returns the token of the breakpoint being used to watch message 
deliveries to the object. Use the "brk" command to enable, disable, or turn 
off the watching of the object.

See Also:	brk, mwatch, objmessagebrk, procmessagebrk, pobject.

n	omfq



Usage:	omfq <message> <object> <args>* 

Examples:	

"omfq MSG_META_QUIT *HelloApp"
 Sends MSG_META_QUIT to the *HelloApp object.

Synopsis:	Forces a message for an object onto its event queue.

Notes:	

u	This command calls ObjMessage, passing it 
di=mask MF_FORCE_QUEUE. 

u	<args> is the set of additional parameters to pass to ObjMessage. It 
consists of <variable/register> <value> pairs, which are passed to the 
"assign" command. As a special case, if the variable is "push", the value 
(a word) is pushed onto the stack and is popped when the message has 
been queued. 

u	The registers active before you issued this command are always restored, 
regardless of whether the call to ObjMessage completes successfully. 
This is in contrast to the "call" command, which leaves you where the 
machine stopped with the previous state lost. 

See Also:	call.

n	pappcache



Usage:	pappcache

Examples:	

"pappcache" 	Print out current state of the app-cache

Synopsis:	Prints out the current state of the system application cache, for systems 
operating in transparent launch mode.

Notes:	Specifically, this command prints out:

u	Applications in the cache (First choice for detaching)

u	Top full-screen App (Not detached except by another full screen app)

u	Desk accessories (detached only as last resort)

u	Application geodes in the process of detaching

n	patch



Usage:	patch [<addr>]
patch del <addr>*

Synopsis:	Patch assists in creating breakpoints that invisibly make small changes to 
code. This can help the programmer find several bugs without remaking and 
redownloading.

Notes:	

u	If you give no <addr> when creating a patch, the patch will be placed at 
the most-recently accessed address, as set by the command that 
most-recently accessed memory (e.g. bytes, words, listi, imem, etc.)

u	When creating a patch, you are prompted for its contents, each line of 
which comes from the following command set: (see Table 4-2)

Table 4-2 Patch Command Set

Form			Meaning			Example

<reg> = <value>			assign value to reg			ax = bx		dl = 5

push <reg>|<value>			push value			push ax		push 45

pop <reg>|<value>			pop value			pop ax		pop 45

pop			pop nothing (sp=sp+2)			pop

jmp <address>			change ip			jmp UI_Attach+45

scall <address> <regs>			call routine (save)			scall MemLock ax = 3

mcall<address> <regs>			call routine (modify)			mcall MemLock ax = 3

xchg <reg> <reg>			swap two registers			xchg ax bx

set <flag>			set condition flag			set CF		set ZF

reset <flag>			reset condition flag			reset CF		reset ZF

if <flag>			if flag set then -	 		if CF

if !<flag>			if flag reset then -			if !ZF

if <expr>			if expr then -			if foo == 4

else

endif

ret			make function return			ret

$			terminate input

a			abort

<other>			tcl command			echo $foo

<flag> is taken from the set TF, IF, DF, OF, SF, ZF, PF, AF, CF and must be in upper-case.

The "scall" command has no effect on the current registers (not even for 
purposes of return values), while the "mcall" command changes whatever 
registers the function called modifies. See the "call" documentation for the 
format of <regs>.

n	patchin



Patchin undoes the work of patchout.

n	patchout



This command causes a RET to be placed at the start of a routine.

n	patient

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	patient-default



Usage:	patient-default [<geode-name>]

Examples:	

"patient-default hello2"
Makes "hello2" the default patient.

"patient-default"
Prints the names of the current default patient.

Synopsis:	Specifies the default patient. The send and run commands will use this as 
the default patient to operate on if none is passed to them.

n	pbitmap



Usage:	pbitmap <address>

Synopsis:	Print a bitmap graphically.

Notes:	

u	The address argument is the address of the Bitmap or CBitmap 
structure.

u	Color bitmaps are printed with a letter representing the color as well. 
The letters are index from the string (kbgcrvnAaBGCRVYW).

n	pbody



Usage:	pbody [<address>]

Examples:	

"pbody"	prints the GrObjBody given a GrObj block at DS.

 "pbody ^hbx" 
Prints the GrObjBody given a GrObj block whose handle is BX.

Synopsis:	Finds the GrObjBody-prints its OD and its instance data.

Notes:	If no arguments are given, then DS is assumed to point to an object block 
containing GrObjects.

n	pcarray



Usage:	pcarray [-eth] [<address>]

Examples:	

"pcarray"	Print the chunk array at *DS:SI (header only)

"pcarray es:di"
Print the chunk array at ES:DI (header only)

"pcarray -e"	Print the chunk array at *DS:SI and print the elements in the 
array

"pcarray -tMyStruct"
Print the chunk array at *DS:SI and print the elements where 
the elements are of type MyStruct

"pcarry -tMyStruct -TMyExtraStruct"
Like above, but data after MyStruct is printed as an array of 
MyExtraStruct structures.

"pcarray -e3"
Print the chunk array at *DS:SI and print the third element

"pcarray -hMyHeader"
Print the chunk array at *DS:SI (header only) where the header 
is of type MyHeader

Synopsis:	Print information about a chunk array.

Notes:	

u	The flags argument can be any combination of the flags "e", "t", and "h". 
The "e" flag prints all elements. If followed by a number (e.g. "-e3"), then 
only the third element will be printed.

u	The `t' flag specifies the elements' type. It should be followed
 immediately by the element type. You can also use "-tgstring" if
 the elements are GString Elements.

u	 The `h' flag specifies the header type. It should be followed immediately 
by the element type. 

u	 The `l' flag specifies how many elements to print. It can be used in 
conjunction with the `e' flag to print a range of element numbers. 

u	 The `H' flag suppresses printing of the header. 

u	 All flags are optional and may be combined.

u	The address argument is the address of the chunk array. If not specified 
then *ds:si is used.

n	pcbitmap



Usage:	pcbitmap <address> <width> <height> [<no space flag>]

Examples:	

"pcbitmap *ds:si 64 64 t"
print the bitmap without spaces

Synopsis:	Print out a one-bit deep packbits-compacted bitmap.

Notes:	

u	The <address> argument is the address to the bitmap data.

u	The <width> argument is the width of the bitmap in pixels.

u	The <height> argument is the height of the bitmap in pixels.

u	The <no space flag> argument removes the space normally printed 
between the pixels. Anything (like "t") will activate the flag.

See Also:	pncbitmap.

n	pcelldata



Usage:	pcelldata [<addr>]

Examples:	

"pcelldata *es:di" 
Print cell data for cell at *es:di.

Synopsis:	Prints data for a spreadsheet data.

Notes:	If no address is given, *es:di is used.

See Also:	content, pcelldeps.

n	pcelldeps



Usage:	pcelldeps <filehan> [<addr>]

Examples:	

"pcelldeps 4be0h *es:di"	
 print dependencies of cell in file 4be0h.

Synopsis:	Prints dependencies for a cell in the spreadsheet.

Notes:	If no address is given, *es:di is used.

See Also:	content, pcelldata.

n	pclass



Usage:	pclass [<address>]

Examples:	

"pclass"	prints the class of *DS:SI

"pclass ^l4ac0h:001eh"
Print the class of the object at the given address.

Synopsis:	Print the object's class.

Notes:	

u	The <address> argument is the address of the object to find the class of. 
This defaults to *DS:SI.

n	pdb



Produces useful information about a DBase block. For now, only information 
about the map block of the DBase file is produced. First arg H is the SIF_FILE 
or SIG_VM handle's ID. Second arg B is the VM block handle for which 
information is desired.

n	pdisk



Usage:	pdisk <disk-handle>

Examples:	

"pdisk 00a2h"
Prints information about the disk whose handle is 00a2h.

Synopsis:	Prints out information about a registered disk, given its handle.

Notes:	The Flags column is a string of single-character flags with the following 
meanings:

           w 	The disk is writable.

           V 	The disk is always valid, i.e. it's not removable.

           S 	The disk is stale. This is set if the drive for the disk has been 
deleted.

           u 	The disk is unnamed, so the system has made up a name for it.

See Also:	diskwalk, drivewalk.

n	pdrive



Usage:	pdrive <drive-handle>
pdrive <drive-name>
pdrive <drive-number>

Examples:	

"pdrive si"	 Print a description of the drive whose handle is in SI

"pdrive al"	 Print a description of the drive whose number is in AL

"pdrive C"	Print a description of drive C

Synopsis:	Provides the same information as "drivewalk," but for a single drive, given 
the offset to its DriveStatusEntry structure in the FSInfoResource.

Notes:	This is intended for use by implementors of IFS drivers, as no one else is 
likely to ever see a drive handle.

See Also:	drivewalk.

n	penum



Usage:	penum <type> <value>

Examples:	

"penum FatalErrors 0"
print the first FatalErrors enumeration

Synopsis:	Print an enumeration constant given a numerical value.

Notes:	

u	The <type> argument is the type of the enumeration.

u	The <value> argument is the value of the enumeration in a numerical 
format.

See Also:	print, precord.

n	pevent



Usage:	pevent <handle>

Examples:	

"pevent 39a0h"
Print event with handle.

Synopsis:	Print an event given its handle.

See Also:	elist, eqlist, eqfind, erfind.

n	pflags



Usage:	pflags

Synopsis:	Prints the current machine flags (carry, zero, etc.).

See Also:	setcc, getcc.

n	pfont



Usage:	pfont [-c] [<address>]

Examples:	

"pfont"	print bitmaps of the characters of the font in BX.

"pfont -c ^h1fd0h"
list the characters in the font at ^h1fd0h.

Synopsis:	Print all the bitmaps of the characters in a font.

Notes:	

u	The "-c" flag causes pfont to list which characters are in the font and any 
special status (i.e. NOT BUILT).

u	The <address> argument is the address of the font. If none is specified 
then ^hbx is used.

See Also:	fonts, pusage, pfontinfo.

n	pfontinfo



Usage:	pfontinfo <font ID>

Examples:	"pfontinfo FID_BERKELEY"

Synopsis:	Prints font header information for a font. Also lists all sizes built.

Notes:	

u	The <font ID> argument must be supplied. If not known, use `fonts -u' to 
list all the fonts with their IDs.

See Also:	fonts, pfont.

n	pgen



Usage:	pgen <element> [<object>]

Examples:	

"pgen GI_states @65"
print the states of object 65

"pgen GI_visMoniker"
print the moniker of the object at *DS:SI

"pgen GI_states -i"
print the states of the object at the implied grab

Synopsis:	Print an element of the generic instance data.

Notes:	

u	The <element> argument specifies which element in the object to print

u	The <object> argument is the address to the object to print out. It 
defaults to *DS:SI and is optional. The `-i' flag for an implied grab may be 
used.

See Also:	gentree, gup, pobject, piv, pvis.

n	pgs



Usage:	pgs <address>

Examples:	

"pgs"	List the graphics string at DS:SI

"pgs ^hdi"	Lift the graphics string whose handle is in DI, starting at the 
current position.

"pgs -s ^hdi"	List the graphics string whose handle is in DI, starting at the 
beginning of the graphics string.

"pgs -l3 ^hdi"	
List three elements of the graphics string whose handle is in 
DI, starting at the current position.

Synopsis:	List the contents of a graphics string.

Notes:	

u	The <address> argument is the address of a graphics string. If none is 
specified then DS:SI is used as a pointer to a graphics string.

u	The passed address may also be the base of a gstate (e.g. "^hdi"). In this 
case, the gstring that is associated with the gstate will be printed.

u	The -s option can be used to specify that the gstring should be listed from 
the beginning of the string. By default, gstrings will be listed starting at 
the current position.

u	The -g option can be used to specify that the passed address is the 
address of a GrObj (GStringClass) object- the gstring for that object will 
be listed.

See Also:	pbitmap.

n	phandle



Usage:	phandle <handle ID>

Examples:	

"phandle 1a8ch"
print the handle 1a8ch

Synopsis:	Print out a handle.

Notes:	

u	The <handle ID> argument is just the handle number. Make sure that the 
proper radix is used.

u	The size is in paragraphs.

See Also:	hwalk, lhwalk.

n	pharray



Usage:	pharray [<flags>] [<vmfile> <dirblk>]

Examples:	

"pharray" 	Print the huge array at ^vbx:di (header only)

"pharray dx cx" 
Print the huge array at ^vdx:cx (header only)

"pharray -e" 	Print the huge array at ^vbx:di and print the elements in the 
array

"pharray -tMyStruct" 
Print the huge array at ^vbx:di and print the elements where 
the elements are of type MyStruct

"pharray -e3" 
Print the huge array at ^vbx:di and print the third element

"pharray -h" 	Print the header of the HugeArray at ^vbx:di, using the default 
header type (HugeArrayDirectory).

"pharray -hMyHeader" 
Print the huge array at ^vbx:di (header only) where the header 
is of type MyHeader

"pharray -d" 	Print the directory elements of a HugeArray

"pharray -e5 -l8" 
Print 8 HugeArray elements starting with number 5

Synopsis:	Print information about a huge array.

Notes:	

u	The flags argument can be any combination of the flags `e', `t', and `h'. The 
`e' flag prints all elements. If followed by a number "-e3", then only the 
third element is printed. 

	The `t' flag specifies the elements' type. It should be followed immediately 
by the element type. You can also use "gstring", in which case the 
elements will be interpreted as GString Elements. 

	The `h' flag specifies the header type. It should be followed immediately 
by the element type. If no options are specified, then 
"-hHugeArrayDirectory" is used. If any other options are specified, then 
the printing of the header is disabled. So, for example, if you want both 
the header and the third element, use "-h -e3". 

	The `d' flag specifies that the HugeArray directory entries should be 
printed out. 

	The `l' flag specified how many elements to print.

	The `s' flag requests that a summary table be printed.

	All flags are optional and may be combined. 

u	The address arguments are the VM file handle and the VM block handle 
for the directory block. If nothing is specified, then bx:di is used

n	pini



Usage:	pini [<category>]

Examples:	

"pini Lights Out" 
Print out the contents of the Lights Out category in each .ini 
file

 "pini" 	Print out each currently loaded .ini file.

Synopsis:	Provides you with the contents of the .ini files being used by the current 
GEOS session.

Notes:	<category> may contain spaces and other such fun things. In fact, if you 
attempt to quote the argument (e.g. "pini {Lights Out}"), this will not find the 
category.

n	pinst



Usage:	pinst [<address>]

Examples:	

"pinst"	print the last master level of instance data of the object at 
*DS:SI

"pinst *MyObject"	
print the last master level of instance data of MyObject.

"pinst -i"	print the last master level of the windowed object at the mouse 
pointer.

Synopsis:	Print out all the instance data to the last level of the object.

Notes:	

u	The <address> argument is the address of the object to examine. If not 
specified then pinst will use a default address. If you are debugging a C 
method, then the oself value will be used. Otherwise, *DS:SI is assumed 
to be an object.

u	This command is useful for classes you've created and you are not 
interested in the data in the master levels which pobject would display.

u	The following special values are accepted for <address>:

           -a	the current patient's application object

           -i 	the current "implied grab": the windowed object over which the 
mouse is currently located.

           -f 	the leaf of the keyboard-focus hierarchy

           -t 	the leaf of the target hierarchy

           -m 	the leaf of the model hierarchy

           -c 	the content for the view over which the mouse is currently 
located

           -kg 	the leaf of the keyboard-grab hierarchy

           -mg	 the leaf of the mouse-grab hierarchy

u	pinst prints out the same information as "pobj l".

See Also:	pobject, piv.

n	piv



Usage:	piv <master> <iv> [<address>]

Examples:	

"piv Vis VCNI_viewHeight"
print Vis.VCNI_viewHeight at *DS:SI

Synopsis:	This prints out the value of the instance variable specified.

Notes:	

u	The <master> argument expects the name of a master level. The name 
may be found using pobject to print the levels, and then using the name 
that appears after "master part:" and before the "_offset".

u	The <iv> argument expects the name of the instance variable to print.

u	The <address> argument is the address of the object to examine. If not 
specified then *DS:SI assumed to be an object.

u	This command is useful for when you know what instance variable you 
want to see but don't want to wade through a whole pobject command.

See Also:	pobject, pinst.

Synopsis:	Prints a keyboard map in assembly-language format.

n	plines



Usage:	plines <start> [<obj-address>]

Examples:	

"plines 12"	Print lines starting at line 12.

"plines 12 ^l6340h:0020h"
Print lines starting at line 12 of object at given address.

Synopsis:	Print information about the lines in a text object.

Notes:	The printed line-starts are not correct.

See Also:	ptext.

n	plist



Prints out a list of structures stored in an lmem chunk. It takes two 
arguments, the structure type that makes up the list, and the lmem handle 
of the chunk. e.g. plist FontsInUseEntry ds:di

n	pncbitmap



Usage:	pncbitmap <address> <width> <height> [<no space flag>]

Examples:	

"pncbitmap *ds:si 64 64 t"
print the bitmap without spaces

Synopsis:	Print out a one-bitdeep noncompacted bitmap.

Notes:	

u	The <address> argument is the address to the bitmap data.

u	The <width> argument is the width of the bitmap in pixels.

u	The <height> argument is the height of the bitmap in pixels.

u	The <no space flag> argument removes the space normally printed 
between the pixels. Anything (like `t') will activate the flag.

See Also:	pcbitmap.

n	pnormal



Usage:	pnormal [-v]

Examples:	

"pnormal -v"
Print out verbose information about the current normal 
transfer item.

Synopsis:	Prints out information about the current "normal" transfer item on the 
clipboard.

Notes:	If you give the "-v" flag, this will print out the contents of the different 
transfer formats, rather than just an indication of their types. 

See Also:	pquick, print-clipboard-item.

n	pobjarray



Usage:	pobjarray [<address>]

Examples:	

"pobjarray"	Print the array of ODs at *ds:si.

Synopsis:	Print out an array of objects.

See Also:	pbody.

n	pobject



Usage:	pobject [<address>] [<detail>]

Examples:	

"pobj" 	print the object at *ds:si from Gen down if Gen is one of its 
master levels; else, print all levels

"pobj *MyGenObject" 
print MyGenObject from Gen down

"pobj Gen" 	print the Gen level for the object at *ds:si

"pobj last"	 print the last master level for the object at *ds:si

"pobj *MyObject"
 all print all levels of MyObject

"pobj -i sketch" 
print the master level headings of the windowed object at the 
mouse pointer

"pobj *MyObject FI_foo"
 print the FI_foo instance variable for MyObject

"pobj HINT_FOO" 
print the HINT_FOO variable data entry for the object at *ds:si

"pobj v" 	print the variable data for the object at *ds:si

Synopsis:	Print all or part of an object's instance and variable data.

Notes:	

u	The <address> argument is the address of the object to examine. If not 
specified then oself is used, unless the current function is written in 
assembly, in which case *DS:SI . 

u	The following flag values are accepted in lieu of an address:

           -a	the current patient's application object

           -i 	the current "implied grab": the windowed object over which the 
mouse is currently located.

           -f 	the leaf of the keyboard-focus hierarchy

           -t 	the leaf of the target hierarchy

           -m 	the leaf of the model hierarchy

           -c 	the content for the view over which the mouse is currently 
located

           -kg 	the leaf of the keyboard-grab hierarchy

           -mg	 the leaf of the mouse-grab hierarchy

u	The detail argument specifies what information should be printed out 
about the object. If none is specified, all levels of the object from the Gen 
level down will be printed if Gen is one of the object's master levels; else, 
the whole object will be printed.

u	The following values are accepted for detail:

           all (or a) 	
all master levels

           last (or l)	
last master level only

           sketch (or s)
master level headings only

           vardata (or v)
vardata only

           a master level name

           an instance variable name

           a variable data entry name 

See Also:	pinst, piv, pvardata.

n	pobjmon



Usage:	pobjmon [<address>] [<text only>]

Examples:	

"pobjmon"	print the VisMoniker from the gentree object at *DS:SI

Notes:	

u	The <address> argument is the address of an object with a VisMoniker. 
If none is specified then *DS:SI is used.

u	The <text only> argument returns a shortened description of the 
structure. To set it use something other than `0' for the second argument.

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

See Also:	pvismon, pobject, vistree, gup, gentree, impliedgrab, systemobj.

n	pod



Usage:	pod <address>

Examples:	

"pod ds:si"

Synopsis:	Print in output descriptor format (^l<handle>:<chunk>) the address passed.

Notes:	The address argument is the address of an object.

n	ppath



Usage:	ppath (current|docClip|winClip) [<gstate>]

Examples:	

"ppath" 	print the current path of the GState in ^hdi

 "ppath docClip ^hgstate"
 print the document clip path of the GState with handle gstate.

 "ppath winClip ds" 
print the window clip path of the GState in the DS register.

Synopsis:	Print the structure of a path.

Notes:	Unique abbreviations for the path to be printed are allowed.

n	pquick



Usage:	pquick [-v]

Examples:	

"pquick -v"	Print out verbose information about the current quick transfer 
item.

Synopsis:	Prints out information about the current "quick" transfer item on the 
clipboard.

Notes:	If you give the "-v" flag, this will print out the contents of the different 
transfer formats, rather than just an indication of their types.

See Also:	pnormal, print-clipboard-item.

n	precord



Usage:	precord <type> <value> [<silent>]

Examples:	

"precord GSControl c0h"
print the GSControl record with the top two bits set

Synopsis:	Print a record using a certain value.

Notes:	

u	The <type> argument is the type of the record.

u	The <value> argument is the value of the record.

u	The <silent> argument will suppress the text indicating the record type 
and value. This is done by passing a non zero value like `1'. This is useful 
when precord is used by other functions.

See Also:	print, penum.

n	preg



Usage:	preg [-g] <addr>

Examples:	

 "preg *es:W_appReg" 
Prints the application-defined clipping region for the window 
pointed to by es.

 "preg -g ds:si" 
Prints a "graphical" representation of the region beginning at 
ds:si

Synopsis:	Decodes a graphics GEOS region and prints it out, either numerically, or as a 
series of x's and spaces.

Notes:	

u	This command can deal with parameterized regions. When printing a 
parameterized region with the -g flag, the region is printed as if it were 
unparameterized, with the offsets from the various PARAM constants 
used as the coordinates.

u	If no address is given, this will use the last-accessed address (as the 
"bytes" and "words" commands do). It sets the last-accessed address, for 
other commands to use, to the first byte after the region definition.

n	print



Usage:	print <expression>

Examples:	

"print 56h"	print the constant 56h in various formats

"print ax - 10"
print ax less 10 decimal

"print ^l31a0h:001eh"
print the absolute address of the pointer

Synopsis:	Print the value of an expression.

Notes:	

u	The <expression> argument is usually an address that has a type or that 
is given a type by casting and may span multiple arguments. The 
contents of memory of the given type at that address is what's printed. If 
the expression has no type, its offset part is printed in both hex and 
decimal. This is used for printing registers, for example.

u	The first argument may contain the following flags (which start with `-'):

x	integers (bytes, words, dwords if dwordIsPtr false) printed in 
hex

d	integers printed in decimal

o	integers printed in octal c bytes printed as characters (byte 
arrays printed as strings, byte variables/fields printed as 
character followed by integer equivalent)

C	bytes treated as integers 

a 	align structure fields

A	Don't align structure fields

p	dwords are far pointers

P	dwords aren't far pointers

r 	parse regions

R 	don't try to parse regions

u	 These flags operate on the following Tcl variables:

intFormat	A printf format string for integers.

bytesAsChar	
Treat bytes as characters if non-zero.

alignFields	
Align structure fields if non-zero.

dwordIsPtr	DWords are far pointers if non-zero.

noStructEnum
If non-zero, doesn't print the "struct", "enum" or "record" before 
the name of a structured/enumerated type -- just gives the type 
name.

printRegions
If non-zero, prints what a Region points to (bounds and so on).

condenseSpecial
If non-zero, condense special structures (Rectangles, 
OutputDescriptors, ObjectDescriptors, TMatrixes and all 
fixed-point numbers) to one line.

u	This does not print enumerations. Use penum for that.

See Also:	precord, penum, _print.

n	print-cell



Usage:	print-cell [row column <cfp ds:si>]

Examples:	

"print-cell 1 1"
print the cell <1,1>

"print-cell 1 2 *ds:si"
print the cell <1,2> given *DS:SI

Synopsis:	Print information about a cell

See Also:	print-row, print-row-block, print-cell-params, print-column-element

n	print-cell-params



Usage:	print-cell-params [<address>]

Examples:	

"print-cell-params" 
print the CellFunctionParameters at ds:si.

"print-cell-params ds:bx" 
print the CellFunctionParameters at ds:bx.

Synopsis:	Print a CellFunctionParameters block.

See Also:	print-row, print-column-element, print-row-block, print-cell.

n	print-clipboard-item



Usage:	print-clipboard-item [-v] <vmfile> <vmblock>
print-clipboard-item [-v] <memhandle>
print-clipboard-item [-v] <addr> 

Examples:	

"print-clipboard-item bx" 
Print out info about the transfer item whose memory handle is 
in the BX register.

Synopsis:	Prints out information about a transfer item.

Notes:	

u	If you give the "-v" flag, this will print out the contents of the different 
transfer formats, rather than just an indication of their types. 

u	The -v flag will not work unless the transfer item is in a VM file.

See Also:	pnormal, pquick.

n	print-column-element



Usage:	print-column-element [<address>]

Examples:	

"print-column-element"
Print the ColumnArrayElement at ds:si.

"print-column-element ds:bx" print the ColumnArrayElement at ds:bx 

Synopsis:	Print a single ColumnArrayElement at a given address.

n	print-db-group



Usage:	print-db-group file group

Examples:	

"print-db-group ax bx"
print the group at bx/ax.

Synopsis:	Print information about a dbase group block.

See Also:	print-db-item.

n	print-db-item



Usage:	print-db-item file group item

Examples:	

"print-db-item bx ax di"
print the item at bx/ax/di

Synopsis:	Print information about a single dbase item

See Also:	print-db-group

n	print-eval-dep-list



Usage:	print-eval-dep-list [<addr>] 

Examples:	

"print-eval-dep-list es:0"
Print dependency list at ES:0.

Synopsis:	Prints a dependency list used for evaluation.

See Also:	content, pcelldeps.

n	printNamesInObjTrees



Usage:	var printNamesInObjTrees (0|1)

Examples:	

"var printNamesInObjTrees 1"
Sets "gentree," "vistree," etc. commands to print object names 
(where available).

Synopsis:	Determines whether object names are printed (where available) rather than 
class names when using the following commands: vistree, gentree, focus, 
target, model, mouse, keyboard.

Notes:	The default value for this variable is zero.

See Also:	gentree, vistree, focus, target, model, mouse, keyboard.

n	print-obj-and-method



Usage:	print-obj-and-method <handle> <chunk> <message> [<cx> [<dx> 
                                                   [<bp> [<class>]]]] 

Examples:	

"print-obj-and-method [read-reg bx] [read-reg si]"
Prints a description of the object ^lbx:si with the value stored 
and a hex representation.

"print-obj-and-method $h $c $m [read-reg cx] [read-reg dx] [read-reg bp]"
Prints a description of the object ^l$h:$c and the name of the 
message whose number is in $c. This is followed by the three 
words of data in cx, dx, and bp.

Synopsis:	Prints a nicely formatted representation of an object, with option message, 
register data, label, hex address, & carriage return. The class indication may 
also be overriden.

Notes:	

u	You may specify anywhere from 0 to 5 arguments after the message 
number. These are interpreted as the value of the message, the registers 
CX, DX and BP, and the symbol token of the class to print, respectively. 

u	All arguments must be integers, as this is expected to be called by 
another procedure, not by the user, so the extra time required to call 
getvalue would normally be wasted. (The user should call pobj, gup, or 
other such functions for this sort of print out.)

See Also:	mwatch, map-method, objwatch.

n	printRegions



Usage:	var printRegions [(0|1)]

Examples:	

"var printRegions 1"
If a structure contains a pointer to a region, "print" will 
attempt to determine its bounding box.

Synopsis:	Controls whether "print" parses regions to find their bounding rectangle.

Notes:	The default value for this variable is one.

See Also:	print, condenseSpecial.

n	print-row



Usage:	print-row [<address *DS:SI>]

Examples:	

"print-row"	print the row at *DS:SI

"print-row ds:si"
print the row at DS:SI

Synopsis:	Print a single row in the cell file given a pointer to the row.

See Also:	print-column-element print-cell-params print-row-block print-cell

n	print-row-block



Usage:	print-row-block [<address ds>]

Examples:	

"print-row-block" 
print the row-block at DS:0

"print-row-block es" 
print the row-block at ES:0 

Synopsis:	Print a row-block.

See Also:	print-row, print-cell-params, print-column-element, print-cell.

n	printStop



Synopsis:	This variable controls how the current machine state is printed each time the 
machine comes to a complete stop. Possible values:

asm 	Print the current assembly-language instruction, complete 
with the values for the instruction operands.

 src 	Print the current source line, if it's available. If the source line 
is not available, the current assembly-language instruction is 
displayed as above.

 why 	Print only the reason for the stopping, not the current machine 
state. "asm" and "src" modes also print this.

 nil 	Don't print anything. 

n	proc

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	procmessagebrk



Usage:	procmessagebrk [<handle>]

Examples:	

"procmessagebrk MyObj"
break whenever a message is sent to MyObj

"procmessagebrk"
stop intercepting messages

Synopsis:	Break whenever a message is sent to a particular process via ObjMessage.

Notes:	

u	The <handle> argument is the handle to a process to watch for messages 
being sent to it. If no argument is specified then the watching is stopped. 
The process' handle may be found by typing "ps -p". The process's handle 
is the number before the process's name.

u	This command breaks whenever a message is sent (before they get on the 
message queue. This enables one to track identical messages to a process 
which can be removed.

See Also:	objwatch, mwatch, objmessagebrk, pobject.

n	protect

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	ps



Usage:	ps [<flags>]

Examples:	

"ps -t"	list all threads in GEOS.

Synopsis:	Print out GEOS' system status.

Notes:	The flags argument may be one of the following:

-t	Prints out info on all threads. May be followed by a list of 
patients whose threads are to be displayed.

-p	Prints out info on all patients. May be followed by a list of 
patients to be displayed.

-h	Prints out info on all handles. May be followed by a list of 
patients whose handles are to be displayed.

 The default is `-p'.

See Also:	switch, sym-default.

n	pscope



Usage:	pscope [<scope-name> [<sym-class>]]

Examples:	

"pscope WinOpen"    
Prints out all the local labels, variables, and arguments within 
the WinOpen() procedure

Synopsis:	This prints out all the symbols contained in a particular scope.

Notes:	

u	This can be useful when you want to know just the fields in a structure, 
and not the fields within those fields, or if you know the segment in which 
a variable lies, but not its name. Admittedly, this could be overkill.

u	sym-class can be a list of symbol classes to restrict the output. For 
example, "pscope Filemisc proc" will print out all the procedures within 
the Filemisc resource.

See Also:	whatis, locals.

n	psize



Usage:	psize <structure>

Examples:	"psize FontsInUseEntry"

Synopsis:	Print the size of the passed structure.

n	pssheet



Usage:	pssheet [-isSfrcvd] <address>

Examples:	

"pssheet -s ^l3ce0h:001eh"
print style attributes.

"pssheet -f -i 94e5h:0057h"
print file info from instance data.

Synopsis:	Prints out information about a spreadsheet object.

Notes:	

u	If you are in the middle of debugging a spreadsheet routine and have a 
pointer to the Spreadsheet instance, the "-i" flag can be used to specify 
the object using that pointer. 

u	 If you simply have the OD of the spreadsheet object, use that. 

u	Alternatively, you can do:

 pssheet <flags> [targetobj]

See Also:	content, targetobj.

n	psup



Usage:	psup [<object>]

Examples:	

"psup"	print superclasses of object at *ds:si.

"psup -i" 	print superclasses of object under mouse.

"psup ^l4e10h:20h" 
print superclasses of object at ^l4e10h:20h.

Synopsis:	Prints superclasses of an object.

Notes:	If no object is specified, *ds:si is used.

See Also:	is-obj-in-class.

n	ptext



Usage:	ptext [-lsrtcegR] <address>

Synopsis:	Prints out a text object

Notes:	The flag may be one of the following:

-c	Print out the characters (the default).

-e	print out elements in addition to runs.

-l 	print out line and field structures.

-s 	print out char attr structures.

-r 	print out para attr structures.

-g 	print out graphics structures.

-t 	print out type structures.

-R 	print out region structures.

n	pthread



Usage:	pthread <id>

Examples:	

"pthread 16c0h"
Prints information about the thread whose handle is 16c0h.

Synopsis:	Provides various useful pieces of information about a particular thread 
including its current priority and its current registers.

Notes:	<id> is the thread's handle ID, as obtained with the "ps -t" or "threadstat" 
command.

See Also:	os, threadstat.

n	ptimer



Usage:	ptimer <handle>

Examples:	

"ptimer bx"	Print out information about the timer whose handle is in the 
BX register.

Synopsis:	Prints out information about a timer registered with the system: when it will 
fire, what it will do when it fires, etc.

Notes:	<handle> may be a variable, register, or constant.

See Also:	twalk, phandle.

n	ptrans



Usage:	ptrans [<flags>] [<address>]

Examples:	

"ptrans" 	print the normal transform for the object at *ds:si.

 "ptrans -s" 	print the sprite transform for the GrObj object at *ds:si. 

 "ptrans ^lbx:cx" 
print the normal transform for the object whose OD is ^lbx:cx.

Synopsis:	Prints the ObjectTransform data structure as specified.

Notes:	

u	The -s flag can be used to print the "sprite" transform (the "sprite" is the 
shape's outline which is drawn to give feedback to the user when said 
user is moving/rotating/etc. the GrObj).

u	<address> defaults to *ds:si 

See Also:	pobject.

n	ptreg



Usage:	ptreg <start> [<obj-addr>]

Examples:	

"ptreg 12" 	Print lines for region 12

"ptreg 12 ^lcx:dx" 
Print lines for region 12 of object ^lcx:dx 

Synopsis:	Print information about the lines in a region.

See Also:	ptext.

n	pusage



Usage:	pusage [<address>]

Examples:	

"pusage"	print the usage of characters in the font

Synopsis:	List the characters in a font and when they were last used.

Notes:	

u	The <address> argument is the address of a font. If none is given then 
^hbx is used.

See Also:	fonts, pfont, pfontinfo, plist.

n	pvardata



Usage:	pvardata [<entry>]

Examples:	

"pvardata ds:si"
 Prints vardata of object at *ds:si

"pvardata -i"
 Prints vardata of object with implied grab.

Notes:	

u	The address argument is the address of an object with variable data. The 
default is *ds:si.

n	pvardentry



Usage:	pvardentry <address> <object>

Examples:	

"pvardentry ds:bx *ds:si"

Notes:	

u	The address argument is the address of a variable data entry in an 
object's variable data storage area. The default is ds:bx. 

u	The <object> argument is required to determine the name of the tag for 
the entry, as well as the type of data stored with it.

n	pvis



Usage:	pvis <element> [<object>]

Examples:	

"pvis VI_bounds @65"
print the bounds of object 65

"pvis VI_optFlags"
print the flags of the object at *DS:SI

"pvis VI_attrs -i"
print the attributes of the object at the implied grab

Synopsis:	Print an element of the visual instance data.

Notes:	

u	The <element> argument specifies which element in the object to print

u	The <object> argument is the address to the object to print out. It 
defaults to *DS:SI and is optional. The `-i' flag for an implied grab may be 
used.

See Also:	vistree, vup, pobject, piv, pgen.

n	pvismon



Usage:	pvismon [<address>] [<text only>]

Examples:	

"pvismon"	print the moniker at *DS:SI

"pvismon -i 1" 
print a short description of the implied grab object.

Synopsis:	Print a visual moniker structure at an absolute address.

Notes:	

u	The <address> argument is the address to an object in the visual tree. 
This defaults to *DS:SI. The `-i' flag for an implied grab may be used.

u	The <text only> argument returns a shortened description of the 
structure. Pass a non-zero value to turn on this flag.

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

See Also:	pobjmon, pobject, vistree, gup, gentree, impliedgrab, systemobj.

n	pvmb



Synopsis:	Prints out the VMBlockHandle for a VM block given the file handle H and the 
VM block handle B.

n	pvmt



Usage:	pvmt [-p] [-a] [-s] [-c] (<handle> | <segment>)

Examples:	

"pvmt bx" 	Print out all used blocks for the open VM file whose file handle 
is in BX.

"pvmt -as ds" 
Print out all blocks for the open VM file the segment of whose 
header block is in DS.

Synopsis:	Prints out a map of the VM block handles for a VM file.

Notes:	

u	The -p flag will only print out blocks that have the Preserve flag set. 
Useful for examining object blocks in GeoCalc files, for example. 

u	The -a flag causes pvmt to print out all block handles, not just those that 
have been allocated. The other two types of block handles are "assigned" 
(meaning they're available for use, but currently are tracking unused 
space in the file) and "unassigned" (they're available for use). 

u	The -s indicates the final argument is a segment, not a file handle. This 
is used only if you're inside the VM subsystem of the kernel. 

u	The -c flag requests a count of the different types of blocks at the end of 
the printout.

u	The blocks are printed in a table with the following columns:

han 	VM block handle (in hex)

flags 	D if the block is dirty, 
C if the block is clean, 
- if the block is non-resident, 
L if the block is LMem, 
B if the block has a backup, 
P if the preserve handle bit is set for the block, 
! if the block is locked

memhan 	Associated memory handle. Followed by "(d)" if the memory for 
the block was discarded but the handle retained. Followed by 
(s) if the memory has been swapped out.

block type 	The type of block:

             VMBT_USED a normal in-use block,

             VMBT_DUP an in-use block that has been backed up or allocated since 
the last call to VMSave()

             VMBT_BACKUP a place-holder to keep track of the previous version 
of a VMBT_DUP block. The uid is the VM block handle to which 
the file space used to belong.

             VMBT_ZOMBIE a block that has been freed since the last VMSave(). 
The handle is preserved in case of a VMRevert() (a 
VMBT_BACKUP block retains the file space).

uid 	The "used ID" bound to the block.

size 	Number of bytes allocated for the block in the file.

pos 	The position of those bytes in the file.

See Also:	pgs.

n	pvsize



Usage:	pvsize [<object>]

Examples:	

"pvsize" 	print the dimensions of the visual object at *ds:si.

Synopsis:	Print out the dimensions of a visual object.

Notes:	

u	The object argument is the address to the object to print out. It defaults 
to *ds:si and is optional. The `-i' flag for an implied grab may be used.

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

n	pwd



Usage:	pwd

Examples:	"pwd"

Synopsis:	Prints the current working directory for the current thread.

See Also:	dirs, stdpaths.

n	quit



Usage:	quit [<options>]

Examples:	

"quit cont"	continue GEOS and quit swat

"quit det"	detach from the PC and quit swat.

Synopsis:	Stop the debugger and exit.

Notes:	

u	The <option> argument may be one of the following: 
continue: continue GEOS and exit swat; 
leave: keep GEOS stopped and exit swat.

u	 Anything else causes swat to detach and exit.

See Also:	detach.

n	range

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	read-char



Usage:	read-char [<echo>]

Examples:	

"read-char 0"
Read a single character from the user and don't echo it.

Synopsis:	Reads a character from the user.

Notes:	If <echo> is non-zero or absent, the character typed will be echoed.

See Also:	read-line.

n	read-line



Usage:	read-line [<isTcl> [<initial input> [<special chars>]]]

Examples:	

"read-line"	reads a single line of text.

"read-line 1"	reads a Tcl command.

"read-line 1 {go}"
reads a Tcl command that starts with "go "

"read-line 1 {} {\e\4}"
reads a Tcl command, considering escape and control-d cause 
for immediate return, regardless of whether braces and 
brackets are balanced

Synopsis:	Reads a single line of input from the user. If optional argument is non-zero, 
the line is interpreted as a Tcl command and will not be returned until all 
braces/brackets are balanced. The final newline is stripped. Optional second 
argument is input to be placed in the buffer first. This input must also be 
on-screen following the prompt, else it will be lost.

Notes:	

u	If <isTcl> is non-zero, the input may span multiple lines, as read-line will 
not return until all braces and brackets are properly balanced, according 
to the rules of Tcl. This behavior may be overridden by the <special 
chars> argument.

u	If <initial input> is given and non-empty, it is taken to be the initial 
contents of the input line and may be edited by the user just as if s/he had 
typed it in. The string is not automatically displayed; that is up to the 
caller.

u	<special chars> is an optional string of characters that will cause this 
routine to return immediately. The character that caused the immediate 
return is left as the last character of the string returned. You may use 
standard backslash escapes to specify the characters. This will return 
even if the user is entering a multi-line Tcl command whose braces and 
brackets are not yet balanced.

u	The user's input is returned as a single string with the final newline 
stripped off.

See Also:	top-level-read

n	read-reg



Usage:	read-reg <register>

Examples:	

"read-reg ax"
return the value of AX

"read-reg CC"
return the value of the conditional flags

Synopsis:	Return the value of a register in decimal.

Notes:	

u	The <register> argument is the two letter name of a register in either 
upper or lower case.

See Also:	frame register, assign, setcc, clrcc.

n	regs



Usage:	regs

Synopsis:	Print the current registers, flags, and instruction.

See Also:	assign, setcc, clrcc, read-reg.

n	regwin



Usage:	regwin [off]

Examples:	"regwin"
"regwin off"

Synopsis:	Turn the continuous display of registers on or off.

Notes:	

u	If you give the optional argument "off", you will turn off any active 
register display.

u	If you give no argument, the display will be turned on.

u	Only one register display may be active at a time.

See Also:	display.

n	repeatCommand



Usage:	var repeatCommand <string>

Examples:	

"var repeatCommand [list foo nil]" 
Execute the command "foo nil" if the user just hits <Enter> at 
the next command prompt.

Synopsis:	This variable holds the command Swat should execute if the user enters an 
empty command. It is used by all the memory-referencing commands to 
display the next chunk of memory, and can be used for other purposes as well.

Notes:	

u	repeatCommand is emptied just before top-level-read returns the 
command the interpreter should execute and must be reset by the 
repeated command if it wishes to continue to be executed when the user 
just hits <Enter>. 

u	The text of the current command is stored in lastCommand, should you 
wish to use it when setting up repeatCommand. 

See Also:	target, focus, mouse, keyboard.

n	require



Usage:	require <name> [<file>]

Examples:	

"require fmtval print"
Ensure the procedure "fmtval" is defined, loading the file 
"print.tcl" if it is not.

Synopsis:	This ensures that a particular function, not normally invoked by the user but 
present in some file in the system library, is actually loaded.

Notes:	If no <file> is given, a file with the same name (possibly suffixed ".tcl") as the 
function is assumed.

See Also:	autoload.

n	restore-state



Usage:	restore-state

Examples:	

"restore-state"
Set all registers for the current thread to the values saved by 
the most recent save-state.

Synopsis:	Pops all the registers for a thread from the internal state stack.

Notes:	

u	This is the companion to the "save-state" command.

u	All the thread's registers are affected by this command.

See Also:	save-state.

n	ret



Usage:	ret [<function name>]

Examples:	"ret"
"ret ObjMessage"

Synopsis:	Return from a function and stop.

u	The <function name> argument is the name of a function in the patient's 
stack after which swat should stop. If none is specified then Swat returns 
from the current function.

u	The function returned from is the first frame from the top of the stack 
which calls the function (like the "finish" command).

u	This command does not force a return. The machine continues until it 
reaches the frame above the function.

See Also:	finish, backtrace.

n	return

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	return-to-top-level



Usage:	return-to-top-level

Examples:	

"return-to-top-level"
Returns to the top-level interpreter.

Synopsis:	Forces execution to return to the top-level interpreter loop, unwinding 
intermediate calls (protected commands still have their protected clauses 
executed, but nothing else is).

See Also:	top-level, protect.

n	rs



Usage:	rs

Examples:	

"rs"	restart GEOS without attaching

Synopsis:	Restart GEOS without attaching.

See Also:	att, attach.

n	run



Usage:	run [<patient-name>]

Examples:	

"run uki"
Run the application with patient name "uki".

"run -e uki"			run EC Uki

"run -n uki"			run non-EC Uki

"run -p games\ukiec.geo	"
run games\ukiec.geo

"run"			run the default patient, as specified by the patient-default 
command.

Synopsis:	"Runs" an application by loading it via a call to UserLoadApplication() and 
stopping when the app reaches the GenProcess handler for 
MSG_META_ATTACH. Return patient created, if any (In the examples shown, 
this would be "uki").

Notes:	

u	May be used even if stopped inside the loader, in which case GEOS will be 
allowed to continue starting up,  and the specified app run after GEOS is 
Idle. 

u	If the machine stops for any other reason other than the call's completion, 
you are left wherever the machine stopped.

See Also:	patient-default, send, spawn, switch.

n	rwatch



Usage:	rwatch [(on|off)]

Examples:	

"rwatch on" 	Watch text-recalculation as it happens

 "rwatch off" 	Turn output off

 "rwatch" 	See what the status is



Synopsis:	Displays information about text recalculation. Specifically designed for 
tracking bugs in the rippling code.

See Also:	ptext.

n	save



Usage:	save (<#lines>|<filename>)

Examples:	

"save 500"	Save the last 500 lines that scroll off the screen.

"save /dumps/puffball"
Save the contents of the entire scroll buffer to the file "puffball".

Synopsis:	Controls the scrollback buffer Swat maintains for its main command window.

Notes:	

u	If the argument is numeric, it sets the number of lines to save (the default 
is 1,000). 

u	If the argument is anything else, it's taken to be the name of a file in 
which the current buffer contents (including the command window) 
should be saved. If the <filename> is relative, it is taken relative to the 
directory in which the executable for the patient to which the current 
stack frame's function belongs is located. If the file already exists, it is 
overwritten.

n	save-state



Usage:	save-state

Examples:	

"save-state"
Push the current register state onto the thread's state stack.

Synopsis:	Records the state of the current thread (all its registers) for later restoration 
by "restore-state".

Notes:	

u	Swat maintains an internal state stack for each thread it knows, so 
calling this has no effect on the target PC. 

u	This won't save any memory contents, just the state of the thread's 
registers.

See Also:	restore-state, discard-state.

n	sbwalk



Usage:	sbwalk [<patient>]

Examples:	

"sbwalk"	list the saved blocks of the current patient.

"sbwalk geos"
list the saved blocks of the GEOS patient.

Synopsis:	List all the saved blocks in a patient.

Notes:	

u	The <patient> argument is any GEOS patient. If none is specified then 
the current patient is used.

n	scan

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	scope



Usage:	scope [<scope-name>]

Examples:	

"scope"	Returns the name of the current auxiliary scope.

Synopsis:	This changes the auxiliary scope in which Swat looks first when trying to 
resolve a symbol name in an address expression.

Notes:	

u	This command isn't usually typed by users, but it is the reason you can 
reference local labels after you've listed a function unrelated to the 
current one. 

u	You most likely want to use the set-address Tcl procedure, rather than 
this command. 

u	If <scope-name> is "..", the auxiliary scope will change to be the lexical 
parent of the current scope. 

See Also:	set-address, addr-parse, whatis.

n	screenwin



Usage:	screenwin

Synopsis:	Print the address of the current top-most screen window.

n	send



Usage:	send [-enpr] <geode-name>

Examples:	

"send icon"	
send EC Icon Editor if running in EC mode; send non-EC Icon 
Editor if running in non-EC mode.

"send -r icon"
send appropriate icon editor, then run it. (See documentation 
for "run" above.)

"send -e icon"
send EC Icon editor.

"send -n icon"
send non-EC Icon Editor

"send -p c:/pcgeos/appl/icon/icon.geo"
send c:/pcgeos/appl/icon/icon.geo

"send"	send the default patient (as set by the patient-default 
command).

Synopsis:	Send a geode from the host to target machine.

n	send-file



Usage:	send-file <file> <targfilename>

Examples:	

"send-file /pcgeos/appl/sdk/mess1/mess1.geo WORLD/soundapp.geo"
Send the mess1.geo file on the host machine to the WORLD 
directory of the host machine, where it will be called 
soundapp.geo.

Synopsis:	Sends a file from the host machine to the target.

n	set-address



Set the last-accessed address recorded for memory-access commands. Single 
argument is an address expression to be used by the next memory-access 
command (except via <return>).

n	setcc



Usage:	setcc <flag> [<value>]

Examples:	

"setcc c"	set the carry flag

"setcc z 0"	clear the zero flag

Synopsis:	Set a flag in the computer.

Notes:	

u	The first argument is the first letter of the flag to set. The following is a 
list of the flags:

          t	trap

          i	interrupt enable

          d	direction

          o	overflow

          s	sign

          z	zero

          a	auxiliary carry

          p	parity

          c	carry

u	The second argument is the value to assign the flag. It defaults to one but 
may be zero to clear the flag.

See Also:	clrcc, compcc.

n	set-masks



Usage:	set-masks <mask1> <mask2>

Examples:	

"set-masks 0xff 0xff"
Allow no hardware interrupts to be handled while the machine 
is stopped.

Synopsis:	Sets the interrupt masks used while the Swat stub is active. Users should use 
the "int" command.

Notes:	

u	<mask1> is the mask for the first interrupt controller, with a 1 bit 
indicating the interrupt should be held until the stub returns the 
machine to GEOS. <mask2> is the mask for the second interrupt 
controller. 

u	These masks are active only while the machine is executing in the stub, 
which usually means only while the machine is stopped.

See Also:	int.

n	set-repeat



Sets the command to be repeated using a template string and the 
lastCommand variable. The variables $0-$n substitute the fields 0-n from 
the lastCommand variable. The final result is placed in repeatCommand 
which will be executed should the user type Enter.

n	set-startup-ec



Usage:	set-startup-ec [<args>]

Examples:	

"set-startup-ec +vm"
 turn on VM error checking when starting up

"set-startup-ec none"
 turn off all ec code when starting up

Synopsis:	Executes the "ec" command upon startup, to allow one to override the default 
error checking flags.

See Also:	ec.

n	sftwalk



Usage:	sftwalk

Examples:	"sftwalk"

Synopsis:	Print the SFT out by blocks.

Notes:	

u	This is different than sysfiles in that it shows less details of the files and 
instead shows where the SFT blocks are and what files are in them.

See Also:	sysfiles, geosfiles, fwalk.

n	showcalls



Usage:	showcalls [<flags>] [<args>]

Examples:	

"showcalls -o"
show all calls using ObjMessage and ObjCall*

"showcalls -ml"
show all calls changing global and local memory

"showcalls"	stop showing any calls

Synopsis:	Display calls to various parts of GEOS.

Notes:	

u	The <flags> argument determines the types of calls displayed. Multiple 
flags must all be specified in the first argument such as "showcalls -vl". If 
no flags are passed then showcalls stops watching. The flags may be any 
of the following:

-p	Modify all other flags to work for the current patient only

-b	Monitors vis builds

-s	Monitors shutdown: MSG_DETACH, DETACH_COMPLETE, 
ACK, DETACH_ABORT

-d	Show dispatching of threads

-e	Show FOCUS, TARGET, MODAL, DEFAULT, etc. exclusive grabs 
& releases

-g	Show geometry manager resizing things (all sizes in hex)

-l	Show local memory create, destroy, relocate

-m	Show global memory alloc, free, realloc

-o	Show ObjMessage() and ObjCall-()

-w	Show WinOpen(), WinClose(), WinMoveResize(), 
WinChangePriority().

-N	Show navigation calls (between fields, and between windows)

u	The<args> argument is used to pass values for some of options.

See Also:	mwatch, objwatch.

n	showMethodNames



Usage:	var showMethodNames

Synopsis:	If this variable is non-zero, Swat prints out the names of the method in the 
AX register when unassembling a message call.

n	skip



Usage:	skip [<number of instructions>]

Examples:	

"skip"	skip the current instruction

"skip 6"	skip the next six instructions

Synopsis:	Skip one or more instructions.

Notes:	

u	The <number of instructions> argument defaults to one if not specified.

See Also:	istep, sstep, patch.

n	sleep



Usage:	sleep <seconds>

Examples:	

"sleep 5"	Pauses Swat for 5 seconds.

Synopsis:	This pauses Tcl execution for the given number of seconds, or until the user 
types Ctrl-C.

Notes:	

u	Messages from the PC continue to be processed, so a FULLSTOP event will 
be dispatched if the PC stops, but this command won't return until the 
given length of time has elapsed. 

u	<seconds> is a real number, so "1.5" is a valid argument. 

u	Returns non-zero if it slept for the entire time, or 0 if the sleep was 
interrupted by the user.

n	slist



Usage:	slist [<args>]

Examples:	

"slist"	list the current point of execution

"slist foo.asm::15"
list foo.asm at line 15

"slist foo.asm::15,45"
list foo.asm from lines 15 to 45

Synopsis:	List source file lines in swat.

Notes:	

u	The args argument can be any of the following:

<address>	Lists the 10 lines around the given address

<line>	Lists the given line in the current file

<file>::<line>
Lists the line in the given file

<line1>,<line2>
Lists the lines between line1 and line2, inclusive, in the current 
file

<file>::<line1>,<line2>
Lists the range from <file>

u	 The default is to list the source lines around CS:IP.

See Also:	listi, istep, regs.

n	smatch



Synopsis:	Look for symbols of a given class by pattern. First argument <pattern> is the 
pattern for which to search (it's a standard Swat pattern using shell wildcard 
characters). Optional second argument <class> is the class of symbol for 
which to search and is given directly to the "symbol match" command. 
Defaults to "any".

n	source

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	sort



Usage:	sort [-r] [-n] [-u] <list>

Examples:	

"sort -n $ids"
Sorts the list in $ids into ascending numeric order.

Synopsis:	This sorts a list into ascending or descending order, lexicographically or 
numerically.

Notes:	

u	If "-r" is given, the sort will be in descending order. 

u	If "-u" is given, duplicate elements will be eliminated. 

u	If "-n" is given, the elements are taken to be numbers (with the usual 
radix specifiers possible) and are sorted accordingly. 

u	The sorted list is returned.

See Also:	map, foreach, mapconcat.

n	spawn



Usage:	spawn <processName> [<addr>]

Synopsis:	Set a temporary breakpoint in a not-yet-existent process/thread, waiting for 
a new one to be created. First argument is the permanent name of the process 
to watch for. Second argument is an address expression specifying where to 
place the breakpoint. If no second argument is present, the machine will be 
stopped and Swat will return to the command level when the new thread is 
spawned by GEOS.

Notes:	

u	This can also be used to catch the spawning of a new thread.

u	If the machine stops before the breakpoint can be set, you'll have to do 
this again.

n	src

This is a Tcl primitive. See page 316.

n	srcwin



Usage:	srcwin <numLines>

Examples:	

"srcwin 6"	Show 6 lines of source context around CS:IP

"srcwin 0"	Show no source lines, i.e. turn the display off.

Synopsis:	Set the number of lines of source code to be displayed when the target 
machine stops.

Notes:	

u	Only one source display may be active at a time.

See Also:	display, regwin, search.

n	sstep



Usage:	sstep [<default command>]

Examples:	

"ss"	enter source step mode

"sstep n"	enter source step mode, <ret> does a next command

Synopsis:	Step through the execution of the current patient by source lines. This is THE 
command for stepping through high-level (e.g., C) code.

u	The <default> command argument determines what pressing the 
<Return> key does. By default, <Return> executes a step command. Any 
other command listed below may be substituted by passing the letter of 
the command.

u	Sstep steps through the patient line by line, printing where the 
instruction pointer is and what line is to be executed Sstep waits for the 
user to type a command which it performs and then prints out again 
where sstep is executing.

u	This is a list of sstep commands:

q, <Esc>,` `	Stops sstep and returns to command level.

b	Toggles a breakpoint at the current location.

c	Stops sstep and continues execution.

n	Continues to the next source line, skipping procedure calls, 
repeated string instructions, and software interrupts. Only 
stops when the machine returns to the right context (i.e. the 
stack pointer and current thread are the same as they are when 
the `n' command was given).

l	Goes to the next library routine.

N	Like n, but stops whenever the breakpoint is hit, whether 
you're in the same frame or not.

M	Goes to the next message called. Doesn't work when the 
message is not handled anywhere.

f	Finishes out the current stack frame.

s, <Ret>	Steps one source line

S	Skips the current instruction

J	Jump on a conditional jump, even when "Will not jump" 
appears. This does not change the condition codes.

g	Executes the `go' command with the rest of the line as 
arguments.

e	Executes a Tcl command and returns to the prompt.

R	References either the function to be called or the function 
currently executing.

h, ?	A help message.

u	Emacs will load in the correct file executing and following the lines where 
sstep is executing if its server is started and if ewatch is on in swat. If 
ewatch is off emacs will not be updated.

u	If the current patient isn't the actual current thread, sstep waits for the 
patient to wake up before single-stepping it.

See Also:	istep, listi, ewatch.

n	stdpaths



Usage:	stdpaths

Examples:	"stdpaths"

Synopsis:	Print out all paths set for standard directories

See Also:	pwd, dirs.

n	step



Usage:	step

Examples:	

"step"	execute the next instruction

"s"

Synopsis:	Execute the patient by a single machine instruction.

Notes:	

u	If waitForPatient is non-zero, step waits for the machine to stop again.

u	This doesn't do any of the checks for special conditions (XchgTopStack, 
software interrupts, etc.) performed by the `s' command in istep.

See Also:	istep, next.

n	step-patient



Usage:	step-patient 

Examples:	

"step-patient"
Execute a single instruction on the target PC.

Synopsis:	Causes the PC to execute a single instruction, returning only when the 
instruction has been executed.

Notes:	

u	Unlike the continue-patient command, this command will not return 
until the machine has stopped again.

u	No other thread will be allowed to run, as timer interrupts will be turned 
off while the instruction is being executed.

See Also:	help-fetch.

n	step-until



Usage:	step-until expression [byte|word]

Examples:	

"step-until ax=0"
Single-step until ax is zero.

"step-until ds:20h!=0 byte" 
Single-step until byte at ds:20h is non-zero

"step-until ds:20h!=0 word"
Single-step until word at ds:20h is non-zero

"step-until c=0"
Single-step until the carry is clear

"step-until ax!=ax"
Step forever

This command causes Swat to step until a condition is met.

Notes:	Useful for tracking memory or register trashing bugs.

See Also:	step-while 

n	stop



Usage:	stop in <class>::<message> [if <expr>]
stop in <procedure> [if <expr>]
stop in <address-history-token> [if <expr>]
stop at [<file>:]<line> [if <expr>]
stop <address> [if <expr>]

Examples:	"stop in main"
"stop in @3"
"stop at /staff/pcgeos/Loader/main.asm:36 if { joe_local ==22}"
"stop at 25"
"stop MemAlloc+3 if {ax==3}"

Synopsis:	Specify a place and condition at which the machine should stop executing. 
This command is intended primarily for setting breakpoints when debugging 
a geode created in C or another high-level language, but may also be used 
when debugging assembly-language geodes.

Notes:	

u	"stop in" will set a breakpoint at the beginning of a procedure, 
immediately after the procedure's stack frame has been set up.

u	"stop at" will set a breakpoint at the first instruction of the given source 
line. If no <file> is specified, the source file for the current stack frame is 
used.

u	If a condition is specified, by means of an "if <expr>" clause, you should 
enclose the expression in {}'s to prevent any nested commands, such as a 
"value fetch" command, from being evaluated until the break-point is hit.

u	For convenience, "stop in" also allows address-history tokens. This is 
useful when used in conjunction with the "methods" command.

See Also:	brk, ibrk

n	stop-catch



Usage:	stop-catch <body>

Examples:	

"stop-catch {go ProcCallModuleRoutine}"
Let machine run until it reaches ProcCallModuleRoutine(), 
but do not issue a FULLSTOP event when it gets there.

Synopsis:	Allows a string of commands to execute without a FULLSTOP event being 
generated while they execute.

Notes:	Why is this useful? A number of things happen when a FULLSTOP event is 
dispatched, including notifying the user where the machine stopped. This is 
inappropriate in something like "istep" or "cycles" that is single-stepping the 
machine, for example.

See Also:	event, continue-patient, step-patient.

n	stop-patient



Usage:	stop-patient

Examples:	

"stop-patient"
Stops the target PC.

Synopsis:	Stops the target PC, in case you continued it and didn't wait for it to stop on 
its own.

Notes:	This is different from the "stop" subcommand of the "patient" command.

See Also:	continue-patient.

n	stream



Usage:	stream open <file> (r|w|a|r+|w+)
stream read (line|list|char) <stream>
stream print <list> <stream>
stream write <string> <stream>
stream rewind <stream>
stream seek (<posn>|+<incr>|-<decr>|end) <stream>
stream state <stream>
stream eof <stream>
stream close <stream>
stream flush <stream>
stream watch <stream> <what> <procName>
stream ignore <stream>

Examples:	

"var s [stream open kmap.def w]" 
Open the file "kmap.def" for writing, creating it if it wasn't 
there before, and truncating any existing file.

 "stream write $line $s" 
Write the string in $line to the open stream.

Synopsis:	This allows you to read, write, create, and otherwise manipulate files on the 
host machine from Swat.

Notes:	

u	Subcommands may be abbreviated uniquely. 

u	Streams are a precious resource, so you should be sure to always close 
them when you are done. This means stream access should usually be 
performed under the wings of a "protect" command so the stream gets 
closed even if the user types Ctrl+C. 

u	Swat's current directory changes as you change stack frames, with the 
directory always being the one that holds the executable file for the 
patient to which the function in the current frame belongs. If the <file> 
given to "stream open" isn't absolute, it will be affected by this. 

u	The global variable file-init-dir contains the absolute path of the 
directory in which Swat was started. It can be quite useful when forming 
the <file> argument to "stream open".

u	The second argument to "stream open" is the access mode of the file. The 
meanings of the 5 possible values are:

           r 	read-only access. The <file> must already exist.

           w	 write-only access. If <file> doesn't already exist, it will be 
created. If it does exist, it will be truncated.

           a 	append mode. The file is opened for writing only. If <file> 
doesn't already exist, it will be created. If it does exist, writing 
will commence at its end.

           r+ 	read/write. The <file> must already exist. A single read/write 
position is maintained, and it starts out at the start of the file. 

          w+ 	read/write. If <file> doesn't already exist, it will be created. If it 
does exist, it will be truncated. A single read/write position is 
maintained, and it starts out at the start of the file.

u	"stream read" can read data from the stream in one of three formats:

           line 	Returns all the characters from the current position up to the 
first newline or the end of the file, whichever comes first. The 
newline, if seen, is placed at the end of the string as \n. Any 
other non-printable characters or backslashes are similarly 
escaped.

            list 	Reads a single list from the stream, following all the usual 
rules of Tcl list construction. If the character at the current 
read position is a left brace, this will read to the matching right 
brace, bringing in newlines and other whitespace. If there is 
whitespace at the initial read position, it is skipped. Standard 
Tcl comments before the start of the list are also skipped over 
(so if the first non-whitespace character encountered is #, the 
characters up to the following newline or end-of-file will also be 
skipped).

            char 	This reads a single character from the stream. If the character 
isn't printable ASCII, it will be returned as one of the regular 
Tcl backslash escapes.

	 If there's nothing left to read, you will get an empty string back.

u	"stream write" writes the string exactly as given, without interpreting 
backslash escapes. If you want to include a newline or something of the 
sort in the string, you'll need to use the "format" command to generate 
the string, or place the whole thing in braces and have the newlines in 
there literally. 

u	While the syntax for "stream print" is the same as for "stream write", 
there is a subtle difference between the two. "stream write" will write the 
string as it's given, while "stream print" is intended to write out data to 
be read back in by "stream read list". Thus the command

 stream write {foo biff} $s

	 would write the string "foo biff" to the stream. In contrast,

 stream print {foo biff} $s

	 would write "{foo biff}" followed by a newline.

u	To ensure that all data you have written has made it to disk, use the 
"stream flush" command. Nothing is returned. 

u	 "stream rewind" repositions the read/write position at the start of the 
stream. "stream seek" gives you finer control over the position. You can 
set the stream to an absolute position (obtained from a previous call to 
"stream seek") by passing the byte number as a decimal number. You can 
also move forward or backward in the file a relative amount by specifying 
the number of bytes to move, preceded by a "+", for forward, or a "-", for 
backward. Finally, you can position the pointer at the end of the file by 
specifying a position of "end". 

u	"stream seek" returns the new read/write position, so a call of "stream 
seek +0 $s" will get you the current position without changing anything. 
If the seek couldn't be performed, -1 is returned. 

u	"stream state" returns one of three strings: "error", if there's been some 
error accessing the file, "eof" if the read/write position is at the end of the 
file, or "ok" if everything's fine. "stream eof" is a shortcut for figuring if 
you've reached the end of the file. 

u	"stream close" shuts down the stream. The stream token should never be 
used again. 

u	"stream watch" and "stream ignore" are valid only on UNIX and only 
make sense if the stream is open to a device or a socket. "stream watch" 
causes the procedure <procName> to be called whenever the stream is 
ready for the access indicated by <what>, which is a list of conditions 
chosen from the following set:

           read	 the stream has data that may be read.

            write 	the stream has room for data to be written to it.

	 When the stream is ready, the procedure is called:

 <procName> <stream> <what>

	 where <what> is the list of operations for which the stream is ready.

See Also:	protect, source, file.

n	string

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	switch



Usage:	switch <thread-id>
switch [<patient>] [:<thread-num>]

Examples:	

"switch 3730h"
Switches swat's current thread to be the one whose handle ID 
is 3730h.

 "switch :1"	 Switches Swat's current thread to be thread number 1 for the 
current patient.

 "switch parallel:2" 
Switches Swat's current thread to be thread number 2 for the 
patient "parallel"

 "switch write" 
Switches Swat's current thread to be thread number 0 (the 
process thread) for the patient "write"

 "switch"	 Switches Swat's current thread to be the current thread on the 
PC.

Synopsis:	Switches between applications/threads.

Notes:	

u	Takes a single argument of the form <patient>:<thread-num> or 
<threadID>. With the first form, :<thread-num> is optional -- if the 
patient has threads, the first thread is selected. To switch to another 
thread of the same patient, give just :<thread-num>. You can also switch 
to a patient/thread by specifying the thread handle ID. NOTE: The switch 
doesn't happen on the PC-just inside swat.

u	If you don't give an argument, it switches to the actual current thread in 
the PC.

n	symbol

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	symbolCompletion



Usage:	var symbolCompletion [(0|1)]

Examples:	

"var symbolCompletion 1" 
Enable symbol completion in the top-level command reader.

Synopsis:	This variable controls whether you can ask Swat to complete a symbol for you 
while you're typing a command. Completion is currently very slow and 
resource-intensive, so you probably don't want to enable it.

Notes:	

u	Even when symbolCompletion is 0, file-name, variable-name, and 
command- name completion are always enabled, using the keys 
described below. 

u	When completion is enabled, three keys cause the interpreter to take the 
text immediately before the cursor and look for all symbols that begin 
with those characters. The keys are:

 Ctrl+D 	Produces a list of all possible matches to the prefix.

 Escape 	Completes the command as best possible. If the characters 
typed so far could be the prefix for more than one command, 
Swat will fill in as many characters as possible.

 Ctrl+] 	Cycles through the list of possible symbols, in alphabetical 
order.

See Also:	top-level-read.

n	sym-default



Usage:	sym-default [<name>]

Examples:	

"sym-default motif"
Make swat look for any unknown symbols in the patient named 
"motif" once all other usual places have been searched.

Synopsis:	Specifies an additional place to search for symbols when all the usual places 
have been searched to no avail.

Notes:	

u	The named patient need not have been loaded yet when you execute this 
command.

u	A typical use of this is to make whatever program you're working on be 
the sym-default in your .swat file so you don't need to worry about 
whether it's the current one, or reachable from the current one, when the 
machine stops and you want to examine the patient's state.

u	If you don't give a name, you'll be returned the name of the current 
sym-default.

n	sysfiles



Usage:	sysfiles

Examples:	"sysfiles"

Synopsis:	Print out all open files from dos's system file table.

Notes:	Normally SFT entries that aren't in-use aren't printed. If you give the 
optional argument "all", however, all SFT entries, including those that aren't 
in-use, will be printed.

See Also:	geosfiles, sftwalk, fwalk.

n	systemobj



Usage:	systemobj

Examples:	

"gentree [systemobj]"
print the generic tree starting at the system's root

"pobject [systemobj]"
print the system object

Synopsis:	Prints out the address of the uiSystemObj, which is the top level of the 
generic tree.

Notes:	

u	This command is normally used with gentree as shown above to print out 
the whole generic tree starting from the top.

See Also:	gentree, impliedgrab.

n	table

This is a Tcl primitive. See page 321.

n	target



Usage:	target [<object>]

Examples:	

"target" 	print target hierarchy from the system object down

 "target -i" 	print target hierarchy from implied grab down

 "target ^l4e10h:20h" 
print target hierarchy from ^l4e10h:20h down

 "target [content]" 
print target hierarchy from content under mouse.

Synopsis:	Prints the target hierarchy below an object.

Notes:	

u	If no argument is specified, the system object is used. 

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

u	Remember that the object you start from may have the target within its 
part of the hierarchy, but still not have the target because something in 
a different part of the tree has it. 

u	The variable "printNamesInObjTrees" can be used to print out the actual 
app-defined labels for the objects, instead of the class, where available. 

	This variable defaults to false. 

See Also:	focus, model, mouse, keyboard, pobject.

n	targetobj



Usage:	targetobj

Examples:	

"targetobj" 	return object with target

"pobj [targetobj]" 
do a pobject on the target object (equivalent to "pobj -t").

Synopsis:	Returns the object with the target.

See Also:	target, focus, focusobj, modelobj.

n	tbrk



Usage:	tbrk <addr> <condition>*
tbrk del <tbrk>+
tbrk list
tbrk cond <tbrk> <condition>*
tbrk count <tbrk>
tbrk reset <tbrk>
tbrk address <tbrk>

Examples:	

 "tbrk ObjCallMethodTable" 
Count the number of times ObjCallMethodTable() is called.

"tbrk count 2" 
Find the number of times tally breakpoint number 2 was hit.

 "tbrk reset 2" 
Reset the counter for tbrk number 2 to 0.

"tbrk list" 	Print a list of the set tally breakpoints and their current counts.

Synopsis:	This command manipulates breakpoints that tally the number of times they 
are hit without stopping execution of the machine-the breakpoint is noted 
and the machine is immediately continued. Such a breakpoint allows for 
real-time performance analysis, which is nice.

Notes:	

u	If you specify one or more <condition> arguments when setting the tally 
breakpoint, only those stops that meet the conditions will be counted. 

u	The condition argument is exactly as defined by the "brk" command, q.v..

u	When you've set a tally breakpoint, you will be returned a token of the 
form "tbrk<n>", where <n> is some number. You use this token, or just 
the <n>, if you're not a program, wherever <tbrk> appears in the Usage 
description, above. 

u	There are a limited number of tally breakpoints supported by the stub. 
You'll know when you've set too many.

u	"tbrk address" returns the address at which the tbrk was set, as a 
symbolic address expression.

See Also:	brk, cbrk.

n	tcl-debug



Usage:	tcl-debug top 
tcl-debug next <tcl-frame>
tcl-debug prev <tcl-frame>
tcl-debug args <tcl-frame>
tcl-debug getf <tcl-frame>
tcl-debug setf <tcl-frame> <flags>
tcl-debug eval <tcl-frame> <expr>
tcl-debug complete <tcl-frame>
tcl-debug next-call 

Examples:	

"var f [tcl-debug top]"
Sets $f to be the frame at which the debugger was entered.

"var f [tcl-debug next $f]" 
Retrieves the next frame down (away from the top) the Tcl call 
stack from $f.

Synopsis:	This provides access to the internals of the Tcl interpreter for the Tcl 
debugger (which is written in Tcl, not C). It will not function except after the 
debugger has been entered.

See Also:	debug.

n	text-fixup



Usage:	

1	Run geos under swat, run swat on the development system 

2	Run GeoWrite 

3	Open the GeoWrite file that needs fixing 

4	Set the breakpoint in swat:

 patch text::CalculateRegions
 => text-fixup

	 This will set a breakpoint at the right spot 

5	Turn on the error-checking code in swat:

 ec +text 

6	Enter a <space> into the document. This forces recalculation which will 
cause CalculateRegions() to be called which will cause text-fixup to be 
called. 

If it worked, this code should patch together the file. If it's not, you'll get a 
FatalError right now.

7	Turn off the ec code and disable the fixup breakpoint.

 ec none

 dis <breakpoint number>

 continue 

8	Delete the space and save the file. 

To do another file, you can just enable the breakpoint once the new file is open 
and turn on the ec code.

Synopsis:	Helps fix up trashed GeoWrite documents.

n	thaw



Usage:	thaw [<patient>]
thaw :<n>
thaw <patient>:<n>
thaw <id>

Examples:	

"thaw"	Thaw the current thread.

"thaw term" 	Allows the application thread for "term" to run normally

 "thaw :1" 	Allows thread #1 of the current patient to run normally 

"thaw 16c0h" 	Allows the thread whose handle is 16c0h to run normally.

Synopsis:	Thawing a thread restores its priority to what it was before the thread was 
frozen.

See Also:	freeze.

n	thread

This is a Tcl primitive. See page 322.

n	threadname



Usage:	threadname <id>

Examples:	

"threadname 21c0h"	
Returns the name of the thread whose handle id is 21c0h.

Synopsis:	Given a thread handle, produces the name of the thread, in the form 
<patient>:<n>

Notes:	If the handle is not one of those swat knows to be for a thread, this returns 
the string "unknown."

See Also:	thread, patient.

n	threadstat



Usage:	threadstat

Examples:	

"threadstat" 

Synopsis:	Provides information about all threads and various thread queues and 
synchronization points in the system.

See Also:	ps.

n	timebrk



Usage:	timebrk <start-addr> <end-addr>+
 timebrk del <timebrk>+
 timebrk list
 timebrk time <timebrk>
 timebrk reset <timebrk>

Examples:	

"timebrk LoadResourceData -f" 
Calculate the time required to process a call to 
LoadResourceData().

 "timebrk time 2" 
Find the amount of time accumulated for timing breakpoint 
number 2.

 "timebrk reset 2" 
Reset the counter for timebrk number two to zero.

 "timebrk list" 
Print a list of the set timing breakpoints and their current 
counts and time. 

Synopsis:	This command manipulates breakpoints that calculate the amount of time 
executing between their starting point and a specified ending point. The 
breakpoints also record the number of times their start is hit, so you can 
figure the average amount of time per hit.

Notes:	

u	You can specify a place at which timing should end either as an address 
or as "-f". If you use "-f", timing will continue until the finish of the 
routine at whose start you've placed the breakpoint. Such a breakpoint 
may only be set at the start of a routine, as the stub hasn't the 
wherewithal to determine what the return address is at an arbitrary 
point within the function. 

u	You may specify more than one ending point. Timing will stop when 
execution reaches any of those points. 

u	When you've set a timing breakpoint, you will be returned a token of the 
form "timebrk<n>", where <n> is some number. You use this token, or 
just the <n>, if you're not a program, wherever <timebrk> appears in the 
Usage description, above. 

See Also:	brk, cbrk, tbrk.

n	timingProcessor



Usage:	var timingProcessor [i86|i88|i286|V20]

Synopsis:	The processor for which to generate cycle counts.

n	tmem



Usage:	tmem

Examples:	

"tmem"	turn on memory tracing.

Synopsis:	Trace memory usage.

Notes:	The tmem command catches calls to DebugMemory, printing out the 
parameters passed (move, free, realloc, discard, swapout, swapin, modify).

n	top-level



Usage:	top-level

Examples:	

"top-level"	Begin reading and interpreting Tcl commands in a nested 
interpreter.

Synopsis:	This is the top-most read-eval-print loop of the Swat Tcl interpreter.

Notes:	This command will only return if the user issues the "break" command. 
Otherwise it loops infinitely, reading and executing and printing the results 
of Tcl commands. 

See Also:	top-level-read.

n	tundocalls



Usage:	tundocalls [-acPCrR]

Examples:	

"tundocalls -a" Print out all text undo calls

"tundocalls -r" Print run undo calls

"tundocalls -R" Print replace undo calls

"tundocalls -c" Print info when undo information is created

"tundocalls -cP" Print info about para attributes only

"tundocalls -cC" Print info about char attributes only

"tundocalls"

Synopsis:	Prints out information about each undo call made to the text object.

See Also:	ptext, showcalls.

n	twalk



Usage:	twalk

Examples:	

"twalk"	print all the timers in the system.

"twalk -o ui" 	print all the timers in the system for the ui thread.

 "twalk -a" 	print all the timers with the "real" data for the time for time 
remaining rather than maintaining a total.

Synopsis:	List all the timers in GEOS.

n	type

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	unalias



Usage:	unalias <name>+

Examples:	

"unalias p"	Removes "p" as an alias for print.

Synopsis:	This removes an alias.

Notes:	

u	In fact, this actually can be used to delete any command at all, including 
Tcl procedures and Swat built-in commands. Once they're gone, however, 
there's no way to get them back.

See Also:	alias.

n	unassemble



Usage:	unassemble [<addr> [<decode-args>]]

Examples:	

"unassemble cs:ip 1" 
Disassemble the instruction at CS:IP and return a string that 
shows the values of the arguments involved.

Synopsis:	This decodes data as machine instructions and returns them to you for you 
to display as you like. It is not usually typed from the command line.

Notes:	

u	The return value is always a four-element list:

 {<symbolic-addr> <instruction> <size> <args>}

	 where <symbolic-addr> is the address expressed as an offset from some 
named symbol, <instruction> is the decoded instruction (without any 
leading whitespace), <size> is the size of the instruction (in bytes) and 
<args> is a string displaying the values of the instruction operands, if 
<decode-args> was given and non-zero (it is the empty string if 
<decode-args> is missing or 0). 

u	If <addr> is missing or "nil", the instruction at the current frame's CS:IP 
is returned.

See Also:	listi.

n	unbind-key



Usage:	unbind-key <ascii_value>

Examples:	

"unbind-key \321"
Unbinds scroll-down key on host machine.

Synopsis:	Unbinds the passed ASCII value.

See Also:	alias, bind-key, get-key-binding.

n	undebug



Usage:	undebug <proc-name>+

Examples:	

"undebug fooproc"
Cease halting execution each time "fooproc" is executing.

Synopsis:	Removes a Tcl breakpoint set by a previous "debug" command.

See Also:	debug.

n	up



Usage:	up [<frame offset>]

Examples:	

"up"	move the frame one frame up the stack

"up 4"	move the frame four frames up the stack

Synopsis:	Move the frame up the stack.

Notes:	

u	The <frame offset> argument is the number of frame to move up the 
stack. If none is specified then the current frame is moved up one frame.

u	This command may be repeated by pressing <Return>.

See Also:	backtrace, down.

n	value



Usage:	value fetch <addr> [<type>]
value store <addr> <value> [<type>]
value hfetch <num>
value hstore <addr-list>
value hset <number-saved>

Examples:	

"value fetch ds:si [type word]" 
Fetch a word from ds:si

"value store ds:si 0 [type word]" 
Store 0 to the word at ds:si

"value hfetch 36" 
Fetch the 36th address list stored in the value history.

"value hstore $a" 
Store the address list in $a into the value history.

"value hset 50"
Keep track of up to 50 address lists in the value history. 

Synopsis:	This command allows you to fetch and alter values in the target PC. It is also 
the maintainer of the value history, which you normally access via 
@<number> terms in address expressions.

Notes:	

u	"value fetch" returns a value list that contains the data at the given 
address. If the address has an implied data type (it involves a named 
variable or a structure field), then you do not need to give the <type> 
argument. 

	All integers and enumerated types are returned in decimal. 32-bit 
pointers are returned as a single decimal integer whose high 16 bits are 
the high 16 bits (segment or handle) of the pointer. 16-bit pointers are 
likewise returned as a single decimal integer. 

	Characters are returned as characters, with non-printable characters 
converted to the appropriate backslash escapes (for example, newline is 
returned as \n). 

	Arrays are returned as a list of value lists, one element per element of the 
array. 

	Structures, unions and records are returned as a list of elements, each of 
which is a 3-element list: {<field-name> <type> <value>} <field-name> is 
the name of the field, <type> is the type token for the type of data stored 
in the field, and <value> is the value list for the data in the field, 
appropriate to its data type. 

u	You will note that the description of value lists is recursive. For example, 
if a structure has a field that is an array, the <value> element in the list 
that describes that particular field will be itself a list whose elements are 
the elements of the array. If that array were an array of structures, each 
element of that list would again be a list of {<field-name> <type> 
<value>} lists. 

u	The "field" command is very useful when you want to extract the value 
for a structure field from a value list.

u	As for "value fetch", you do not need to give the <type> argument to

u	 "value store" if the <addr> has an implied data type. The <value> 
argument is a value list appropriate to the type of data being stored, as 
described above. 

u	"value hstore" returns the number assigned to the stored address list. 
These numbers always increase, starting from 1. 

u	If no address list is stored for a given number, "value hfetch" will 
generate an error. 

u	"value hset" controls the maximum number of address lists the value 
history will hold. The value history is a FIFO queue; if it holds 50 entries, 
and the 51st entry is added to it, the 1st entry will be thrown out.

See Also:	addr-parse, assign, field.

n	var

This is a Tcl primitive. See "Tool Command Language," Chapter 5.

n	varwin



Usage:	varwin <num-lines> <var-name> 

n	view



Usage:	view [<args>]

Examples:	

"view foo.goc"
Bring up foo.goc in the source window.

Synopsis:	View a file in Swat.

See Also:	view-line, view-default, srcwin.

n	view-default



Usage:	view-default [patient]

Examples:	

"view-default spool"
 sets the default view to the spool patient.

"view-default"
 turns off the view default.

Synopsis:	If the view-default is set the view command will automatically look for source 
files from that patient. If it's not set then the view command will look for files 
from the current patient.

See Also:	view, view-line, srcwin.

n	view-size



Usage:	view-size <number-of-lines>

Examples:	

"view-size 10"
Makes the view window 10 lines high.

See Also:	view, view-line, view-default, srcwin.

n	vistree



Usage:	vistree [<address>] [<instance field>]

Examples:	

"vistree"	print the visual tree starting at *DS:SI

"vistree -i"	print the visual tree under the mouse

"vistree @23 VI_optFlags"
print the visual tree with opt flags

"vistree *uiSystemObj"
starts the visual tree at the root of the system.

Synopsis:	Print out a visual tree.

Notes:	

u	The <address> argument is the address to an object in the generic tree. 
This defaults to *DS:SI. The `-i' flag for an implied grab may be used.

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

u	The <instance field> argument is the offset to any instance data within 
the VisInstance which should be printed out.

u	The variable "printNamesInObjTrees" can be used to print out the actual 
app-defined labels for the objects, instead of the class, where available. 
This variable defaults to false.

See Also:	vup, gentree, impliedgrab, pobject.

n	vup



Usage:	vup [<address>] [<instance field>]

Examples:	

"vup"	print the visual object at *DS:SI and its ancestors

"vup @23 VI_optFlags"
print the states of object @23 and its ancestors

 "vup -i"	 print the visual object under the mouse and the object's 
ancestors

Synopsis:	Print a list of the object and all of its visual ancestors.

Notes:	

u	The <address> argument is the address to an object in the visual tree. 
This defaults to *DS:SI. The `-i' flag for an implied grab may be used.

u	The special object flags may be used to specify <object>.  For a list of these 
flags, see pobject.

u	The <instance field> argument is the offset to any instance data within 
the GenInstance which should be printed out.

See Also:	vistree, gup, gentree, impliedgrab, pobject.

n	wait



Usage:	wait

Examples:	

"wait"	Wait for the target PC to halt.

Synopsis:	This is used after the machine has been continued with "continue-patient" to 
wait for the machine to stop again. Its use is usually hidden by calling "cont" 
or "next".

Notes:	

u	This returns 0 if the patient halted naturally (because it hit a 
breakpoint), and 1 if it was interrupted (by the user typing Ctrl+C to 
Swat). 

u	Most procedures won't need to use this function.

See Also:	brk, ibrk

n	waitForPatient



Usage:	var waitForPatient [(1|0)]

Examples:	

"var waitForPatient 0"
Tells Swat to return to the command prompt after continuing 
the machine.

Synopsis:	Determines whether the command-level patient-continuation commands 
(step, next, and cont, for example) will wait for the machine to stop before 
returning.

Notes:	

u	The effect of this is to return to the command prompt immediately after 
having issued the command. This allows you to periodically examine the 
state of the machine without actually halting it. 

u	The output when the machine does stop (e.g. when it hits a breakpoint) 
can be somewhat confusing. Furthermore, this isn't fully tested, so it 
should probably be set to 0 only in somewhat odd circumstances.

See Also:	step, next, cont, int.

n	wakeup



Wait for a given patient/thread to wake up. WHO is of the same form as the 
argument to the "switch" command, ("help switch" to find out more). Leaves 
you stopped in the kernel in the desired thread's context unless something 
else causes the machine to stop before the patient/thread wakes up. WHO 
defaults to the current thread.

n	wakeup-thread



Subroutine to actually wake up a thread. Argument WHO is as for the 
"switch"command. Returns non-zero if the wakeup was successful and zero if 
the machine stopped for some other reason.

n	wclear



Usage:	wclear

Synopsis:	Clears the current window.

n	wcreate



Usage:	wcreate <height>

Synopsis:	Create a window of the given height and return a token for it. The window is 
placed just above the command window, if there's room. If there aren't that 
many lines free on the screen, an error is returned.

n	wdelete



Usage:	wdelete <window>

Synopsis:	Delete the given window. All windows below it move up and the command 
window enlarges.

n	whatat



Usage:	whatat [<address>]

Examples:	

"whatat"	name of variable at *DS:SI

"whatat ^l2ef0h:002ah"
name of variable at the specified address

Synopsis:	Print the name of the variable at the address.

Notes:	

u	The <address> argument specifies where to find a variable name for. The 
address defaults to *DS:SI.

u	If no appropriate variable is found for the address, `*nil*' is returned.

See Also:	pobject, hwalk, lhwalk.

n	whatis



Usage:	whatis (<symbol>|<addr>)

Examples:	"whatis WinColorFlags"

Synopsis:	This produces a human-readable description of a symbol, giving whatever 
information is pertinent to its type.

Notes:	

u	For type symbols (e.g. structures and enumerated types), the description 
of the type is fully displayed, so if a structure has a field with an 
enumerated type, all the members of the enumerated type will be printed 
as well. Also all fields of nested structures will be printed. If this level of 
detail isn't what you need, use the "pscope" command instead.

u	It's not clear why you'd need the ability to find the type of an 
address-expression, since those types always come from some symbol or 
other, but if you want to type more, you certainly may.

n	where

Common alias for "backtrace"

n	why



Usage:	why

Examples:	"why"

Synopsis:	Print a description of why the system crashed.

Notes:	

u	This must be run from within the frame of the FatalError function. 
Sometimes GEOS is not quite there. In this case, step an instruction or 
two and then try the "why" command again.

u	This simply looks up the enumerated constant for the error code in AX in 
the "FatalErrors" enumerated type defined by the geode that called 
FatalError. For example, if a function in the kernel called FatalError, AX 
would be looked up in geos::FatalErrors, while if a function in your 
application called FatalError, this function would look it up in the 
FatalErrors type defined by your application. Each application defines 
this enumerated type by virtue of having included ec.def or ec.goh.

u	For certain fatal errors, additional information is provided by invoking 
the command <patient>::<error code name>, if it exists.

See Also:	regs, backtrace, explain.

n	wintree



Usage:	wintree <window handle> [<data field>]

Examples:	

"wintree ^hd060h"
print a window tree starting at the handle d060h

Synopsis:	Print a window tree starting with the root specified.

Notes:	

u	The <window address> argument is the address to a window.

u	The <data field> argument is the offset to any instance data within a 
window (like W_ptrFlags).

See Also:	vistree, gentree.

n	winverse



Usage:	winverse

Synopsis:	Sets the inverse-mode of the current window (whether newly-echoed 
characters are displayed in inverse video) on or off, depending on its 
argument (1 is on).

n	wmove



Usage:	wmove [(+|-)] <x-coord> [(+|-)] <y-coord>

Synopsis:	Moves the cursor for the current window. Takes two arguments: the new x 
position and the new y position. These positions may be absolute or relative 
(absolute positions begin with + or -). If you attempt to move outside the 
current window, an error is generated. This command returns the new cursor 
position as {x y}.

n	words



Usage:	words [<address>] [<length>]

Examples:	

"words"	lists 8 words at DS:SI

"words ds:di 16"
lists 16 words starting at DS:DI

Synopsis:	Examine memory as a dump of words.

Notes:	

u	The <address> argument is the address to examine. If not specified, the 
address after the last examined memory location is used. If no address 
has been examined then DS:SI is used for the address.

u	The <length> argument is the number of bytes to examine. It defaults to 
8.

u	Pressing <Return> after this command continues the list.

See Also:	bytes, dwords, imem, assign.

n	wpop



Usage:	wpop

Synopsis:	Revert the current window to its previously pushed value.

n	wpush



Usage:	wpush <window>

Synopsis:	Switch to a new window, saving the old current-window. Use wpop to go back 
to the previous window. All I/O goes through the current window.



n	wrefresh



Usage:	wrefresh

Synopsis:	Synchronizes the current window with the screen. This need only be 
performed if you don't echo a newline, as echoing a newline refreshes the 
current window.

n	wtop

Usage:	wtop <flag>

Synopsis:	Sets where windows go. If argument is non-zero, windows go at the top of the 
screen and work down. Else windows go at the bottom of the screen and work 
up
