- 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/debug.l b/debugger/debug.l
index 75f165d..0adf93c 100644
--- a/debugger/debug.l
+++ b/debugger/debug.l
@@ -5,7 +5,6 @@
  */
 
 %{
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include "debugger.h"
@@ -23,11 +22,8 @@
 	if ( (result = dbg_read((char *) buf, max_size )) < 0 ) \
 	    YY_FATAL_ERROR( "read() in flex scanner failed" );
 
-extern char * readline(const char *);
-extern void add_history(char *);
 static int dbg_read(char * buf, int size);
 static char * make_symbol(char *);
-void flush_symbols();
 
 #endif  /* DONT_USE_READLINE */
 
@@ -86,33 +82,6 @@
 {STRING} { yylval.string = make_symbol(yytext); return tSTRING; }
 <DEBUGSTR>[a-z+\-,]* { yylval.string = yytext; return tDEBUGSTR; }
 
-$pc     { yylval.reg = REG_EIP; return tREG; }
-$flags  { yylval.reg = REG_EFL; return tREG; }
-$eip    { yylval.reg = REG_EIP; return tREG; }
-$ip     { yylval.reg = REG_IP;  return tREG; }
-$esp    { yylval.reg = REG_ESP; return tREG; }
-$sp     { yylval.reg = REG_SP;  return tREG; }
-$eax    { yylval.reg = REG_EAX; return tREG; }
-$ebx    { yylval.reg = REG_EBX; return tREG; }
-$ecx    { yylval.reg = REG_ECX; return tREG; }
-$edx    { yylval.reg = REG_EDX; return tREG; }
-$esi    { yylval.reg = REG_ESI; return tREG; }
-$edi    { yylval.reg = REG_EDI; return tREG; }
-$ebp    { yylval.reg = REG_EBP; return tREG; }
-$ax     { yylval.reg = REG_AX;  return tREG; }
-$bx     { yylval.reg = REG_BX;  return tREG; }
-$cx     { yylval.reg = REG_CX;  return tREG; }
-$dx     { yylval.reg = REG_DX;  return tREG; }
-$si     { yylval.reg = REG_SI;  return tREG; }
-$di     { yylval.reg = REG_DI;  return tREG; }
-$bp     { yylval.reg = REG_BP;  return tREG; }
-$es     { yylval.reg = REG_ES;  return tREG; }
-$ds     { yylval.reg = REG_DS;  return tREG; }
-$cs     { yylval.reg = REG_CS;  return tREG; }
-$ss     { yylval.reg = REG_SS;  return tREG; }
-$fs     { yylval.reg = REG_FS;  return tREG; }
-$gs     { yylval.reg = REG_GS;  return tREG; }
-
 <INITIAL>info|inf|in			{ BEGIN(INFO_CMD); return tINFO; }
 <INITIAL>up				{ BEGIN(NOCMD); return tUP; }
 <INITIAL>down|dow|do			{ BEGIN(NOCMD); return tDOWN; }
@@ -155,7 +124,7 @@
 
 <INFO_CMD>share|shar|sha		{ return tSHARE; }
 <INFO_CMD>locals|local|loca|loc		{ return tLOCAL; }
-<INFO_CMD,WALK_CMD>class|clas|cla                  { return tCLASS; }
+<INFO_CMD,WALK_CMD>class|clas|cla       { return tCLASS; }
 <INFO_CMD,WALK_CMD>module|modul|modu|mod  { return tMODULE; }
 <INFO_CMD,WALK_CMD>queue|queu|que	{ return tQUEUE; }
 <INFO_CMD,WALK_CMD>process|proces|proce|proc   		{ return tPROCESS; }
@@ -163,7 +132,7 @@
 <INFO_CMD,WALK_CMD>modref|modre|modr	{ return tMODREF; }
 <INFO_CMD>registers|regs|reg|re		{ return tREGS; }
 <INFO_CMD>segments|segment|segm|seg|se	{ return tSEGMENTS; }
-<INFO_CMD>stack|stac|sta|st     		{ return tSTACK; }
+<INFO_CMD>stack|stac|sta|st     	{ return tSTACK; }
 <INFO_CMD>maps|map			{ return tMAPS; }
 <INFO_CMD,WALK_CMD>window|windo|wind|win|wnd	{ return tWND; }
 <HELP_CMD>info|inf|in                   { return tINFO; }
@@ -184,6 +153,7 @@
 enum					{ return tENUM; }
 
 {IDENTIFIER}	{ yylval.string = make_symbol(yytext); return tIDENTIFIER; }
+"$"{IDENTIFIER}	{ yylval.string = make_symbol(yytext+1); return tINTVAR; }
 
 <PATH_EXPECTED>{PATHNAME}	{ yylval.string = make_symbol(yytext); return tPATH; }
 
@@ -279,11 +249,12 @@
 static char *local_symbols[30];
 static int next_symbol;
 
-char * make_symbol(char * symbol){
+static char * make_symbol(char * symbol)
+{
         return local_symbols[next_symbol++] = DBG_strdup(symbol);
 }
 
-void flush_symbols()
+void flush_symbols(void)
 {
 	while(--next_symbol>= 0) DBG_free(local_symbols[next_symbol]);
 	next_symbol = 0;