- Enhanced internal variables framework (including read/save to
  registry and typing)
- Finalized use of Windows' Console I/O interface (instead of Unix std
  streams)
- Now handling registers as internal variables (they are no longer
  seen as a specific type)

diff --git a/debugger/debugger.h b/debugger/debugger.h
index 1c7b9ed..9190b37 100644
--- a/debugger/debugger.h
+++ b/debugger/debugger.h
@@ -41,6 +41,7 @@
 /*
  * For constants generated by the parser, we use this datatype
  */
+extern struct datatype * DEBUG_TypeShortUInt;
 extern struct datatype * DEBUG_TypeInt;
 extern struct datatype * DEBUG_TypeIntConst;
 extern struct datatype * DEBUG_TypeUSInt;
@@ -135,7 +136,7 @@
        } w;
     } u;
     struct expr * condition;
-} BREAKPOINT;
+} DBG_BREAKPOINT;
 
 typedef struct tagDBG_THREAD {
     struct tagDBG_PROCESS*	process;
@@ -147,7 +148,7 @@
     int				dbg_mode;
     enum exec_mode 		dbg_exec_mode;
     int 			dbg_exec_count;
-    BREAKPOINT			stepOverBP;
+    DBG_BREAKPOINT		stepOverBP;
     struct tagDBG_THREAD* 	next;
     struct tagDBG_THREAD* 	prev;
 } DBG_THREAD;
@@ -207,20 +208,12 @@
 #define DM_TYPE_NE		2
 #define DM_TYPE_PE		3
 
-#ifdef __i386__
-#ifdef REG_SP  /* Some Sun includes define this */
-#undef REG_SP
-#endif
-
-enum debug_regs
-{
-    REG_EAX, REG_EBX, REG_ECX, REG_EDX, REG_ESI,
-    REG_EDI, REG_EBP, REG_EFL, REG_EIP, REG_ESP,
-    REG_AX,  REG_BX,  REG_CX,  REG_DX,  REG_SI,
-    REG_DI,  REG_BP,  REG_FL,  REG_IP,  REG_SP,
-    REG_CS,  REG_DS,  REG_ES,  REG_SS,  REG_FS, REG_GS
-};
-#endif
+typedef struct {
+   DWORD		val;
+   const char*		name;
+   LPDWORD		pval;
+   struct datatype*	type;
+} DBG_INTVAR;
 
 #define	OFFSET_OF(__c,__f)		((int)(((char*)&(((__c*)0)->__f))-((char*)0)))
 
@@ -241,9 +234,27 @@
   /* debugger/db_disasm.c */
 extern void DEBUG_Disasm( DBG_ADDR *addr, int display );
 
+  /* debugger/dbg.y */
+extern BOOL DEBUG_Main( BOOL is_debug, BOOL force, DWORD code );
+extern void DEBUG_Exit( DWORD );
+
+  /* debugger/debug.l */
+extern void flush_symbols(void);
+
+  /* debugger/display.c */
+extern int DEBUG_DoDisplay(void);
+extern int DEBUG_AddDisplay(struct expr * exp, int count, char format);
+extern int DEBUG_DoDisplay(void);
+extern int DEBUG_DelDisplay(int displaynum);
+extern int DEBUG_InfoDisplay(void);
+
+  /* debugger/editline.c */
+extern char * readline(const char *);
+extern void add_history(char *);
+
   /* debugger/expr.c */
 extern void DEBUG_FreeExprMem(void);
-struct expr * DEBUG_RegisterExpr(enum debug_regs);
+struct expr * DEBUG_IntVarExpr(const char* name);
 struct expr * DEBUG_SymbolExpr(const char * name);
 struct expr * DEBUG_ConstExpr(int val);
 struct expr * DEBUG_StringExpr(const char * str);
@@ -262,12 +273,8 @@
 extern int DEBUG_FreeExpr(struct expr * exp);
 extern int DEBUG_DisplayExpr(const struct expr * exp);
 
-  /* debugger/display.c */
-extern int DEBUG_DoDisplay(void);
-extern int DEBUG_AddDisplay(struct expr * exp, int count, char format);
-extern int DEBUG_DoDisplay(void);
-extern int DEBUG_DelDisplay(int displaynum);
-extern int DEBUG_InfoDisplay(void);
+  /* debugger/external.c */
+extern void DEBUG_ExternalDebugger(void);
 
   /* debugger/hash.c */
 extern struct name_hash * DEBUG_AddSymbol( const char *name, 
@@ -329,8 +336,8 @@
 extern void DEBUG_WalkWindows(HWND hWnd, int indent);
 
   /* debugger/memory.c */
-extern int DEBUG_ReadMemory( const DBG_ADDR *address );
-extern void DEBUG_WriteMemory( const DBG_ADDR *address, int value );
+extern int  DEBUG_ReadMemory( const DBG_VALUE* value );
+extern void DEBUG_WriteMemory( const DBG_VALUE* val, int value );
 extern void DEBUG_ExamineMemory( const DBG_VALUE *addr, int count, char format);
 extern void DEBUG_InvalAddr( const DBG_ADDR* addr );
 extern void DEBUG_InvalLinAddr( void* addr );
@@ -360,11 +367,8 @@
 extern void DEBUG_InitCVDataTypes(void);
 
   /* debugger/registers.c */
-extern void DEBUG_SetRegister( enum debug_regs reg, int val );
-extern int DEBUG_GetRegister( enum debug_regs reg );
 extern void DEBUG_InfoRegisters(void);
 extern BOOL DEBUG_ValidateRegisters(void);
-extern int DEBUG_PrintRegister(enum debug_regs reg);
 
   /* debugger/stack.c */
 extern void DEBUG_InfoStack(void);
@@ -418,20 +422,15 @@
 extern void DEBUG_NukePath(void);
 extern void DEBUG_Disassemble( const DBG_VALUE *, const DBG_VALUE*, int offset );
 
-  /* debugger/external.c */
-extern void DEBUG_ExternalDebugger(void);
-
-  /* debugger/dbg.y */
-extern BOOL DEBUG_Main( BOOL is_debug, BOOL force, DWORD code );
-extern void DEBUG_Exit( DWORD );
-
   /* debugger/winedbg.c */
 #define DBG_CHN_MESG	1
 #define DBG_CHN_ERR	2
 #define DBG_CHN_WARN	4
 #define DBG_CHN_FIXME	8
 #define DBG_CHN_TRACE	16
-extern int DEBUG_Printf(int chn, const char* format, ...);
+extern void	DEBUG_Output(int chn, const char* buffer, int len);
+extern int	DEBUG_Printf(int chn, const char* format, ...);
+extern DBG_INTVAR*	DEBUG_GetIntVar(const char*);
 
   /* Choose your allocator! */
 #if 1
@@ -465,9 +464,16 @@
 #define	DEBUG_STATUS_DIV_BY_ZERO	(DEBUG_STATUS_OFFSET+2)
 #define	DEBUG_STATUS_BAD_TYPE		(DEBUG_STATUS_OFFSET+3)
 
-#define  DBG_IVAR(_var)	DEBUG_IV_##_var
-#define  INTERNAL_VAR(_var,_val) extern int DBG_IVAR(_var);
+extern DBG_INTVAR		DEBUG_IntVars[];
+
+#define  DBG_IVARNAME(_var)	DEBUG_IV_##_var
+#define  DBG_IVARSTRUCT(_var)	DEBUG_IntVars[DBG_IVARNAME(_var)]
+#define  DBG_IVAR(_var)		(*(DBG_IVARSTRUCT(_var).pval))
+#define  INTERNAL_VAR(_var,_val,_ref,_typ) DBG_IVARNAME(_var),
+enum debug_int_var {
 #include "intvar.h"
+   DBG_IV_LAST
+};
 #undef   INTERNAL_VAR
 
 #endif  /* __WINE_DEBUGGER_H */