================================================================================
B A S T A R D                                            disassembly environment



TO-DO List
==========
There is a lot of "main functionality" coding to do to the disassembler; in 
addition, the following areas need some pretty serious attention:

 -- General
   * Make code safe for 32 and 64-bit platforms [via typedefs]
	* Make core code [API, etc] threadsafe for future expansion

 -- VM/CPU Emulation
   * Er, write some
   * Initialize emulated CPU registers to OS-specific startup state

 -- Database
   * Create "bookmark" table so user can mark areas of code. 
	  Link a comment to a bookmark, like in code.
   * remove manual sequence increments from API code
	* Rework bdb.ddl file to use referntial integrity
	* Alter DB interface to use more of Typhoon's internals
	* Finish libbsql!

 -- Documentation
   * Rewrite README.[TXT|CODERS]
	* Write/update doc/*.txt

 -- Runtime Environment
   * Design low-mem/low-disk space .bdb for embedding (bdb_lite.dbd)
	  
 -- Improve command interpreter.
	* Get readline tab completion to handle API calls
	* Add command-line options for setting FORMAT, CPU, etc
	* Add ENV variable for dbpath (where target.bdb is created)

 -- Libraries
   * Get EiC and Typhoon working in Solaris, BSD, Win32, and BeOS
   * Add 64-bit support to Typhoon; propagate this through the API
	* Add "state" saving to Typhoon
   * Fix all of EiC's flakiness, make EiC re-entrant

 -- ARCH extension
	* Allow manual assembly, maybe a bfd/as-based assembler
	* Finish INT_CODE generation
	
 -- FORMAT extension
   * Finish .a, a.out extensions
	* Start PE and COFF
	* Handle DWARF symbols in ELF
	* Write MAGIC plugin for guessing format based in magic
	* Provide support for (.so) unpacker plugins
	
 -- COMPILER extension
   * Write subroutine param/local recognition
	* Provide library signature recognition
	* Do, er, "code idioms" and such
	* Parse includes for fn prototypes
	* Link constants, imports, fn with library/header file
	
 -- OS extension
   * Provide device/exception/trap identification
	* Provide CPU reg startup state info
	* Create system constants and structures

 -- LANG extension
   * Create fin_code from int_code
	* Format subroutines, data
	* Create header files
	
 -- Wrappers
   * Libraries to wrap libbastard for C++, ObjC, Java, Python, et. al.
	
 -- Front-ends
	* Shell   TXT -- ghetto disassembler   
	* Ncurses GUI -- not *entirely* an IDA rip-off
	* Tk      GUI -- just because it can be done            [project: lgb]
	* Gtk     GUI -- might as well make one that looks nice [project: sob]
	* Xt      GUI -- 'cause we all know Gtk can't go two versions without 
	                 trashing their backwards compatibility

