This is a list of things that theoretically should be possible in some
way or another.  No commitment to actually do these, but these sound
possible to me right now.   In no particular order.  If someone else
wants to dig in, feel free.

1) Some kind of watchpoint capability.  Pretty easy, but we end up
        running the program really slowly one instruction at a time.  
	Use hardware debug registers for this (much harder)???

2) Some kind of .wdbinit file.

3) Add 'info line' command.  Not all *that* useful, but it would tell you
	the range of PC for a given source line.

4) Add search directory list for PDB files.  We have the path in the
	DOS notation (i.e. C:\foo\bar\xxx.c), which may be a useful hint.
	Maybe not.

5) Add support for emacs mode so that you  can run under emacs and have
	the source pop up automatically.  Only useful once the list command
	is implemented.

6 Add support for Borland.  I have heard rumors that Borland is forthcoming
	with info about how their stuff works, so this might not be that
	bad.

7 Add support for Win16.  Not sure if this is really worth the trouble.  How
	much are people really going to use this in the long run???

8) Some of the newer displays are still a little bit sparse on information.
	Make these more like gdb.

9) Make sure operator precedence works OK.

****************
