Added BochsGA to build
[tpg/acess2.git] / Kernel / drv / kb.c
index 07e07f5..b67c8e3 100644 (file)
@@ -14,8 +14,9 @@
 #define        USE_KERNEL_MAGIC        1
 
 // === IMPORTS ===
-void   Threads_Dump(void);
-void   Heap_Stats(void);
+extern void    Threads_ToggleTrace(int TID);
+extern void    Threads_Dump(void);
+extern void    Heap_Stats(void);
 
 // === PROTOTYPES ===
  int   KB_Install(char **Arguments);
@@ -191,12 +192,19 @@ void KB_IRQHandler(int IRQNum)
                case '8':       case '9':       case 'a':       case 'b':
                case 'c':       case 'd':       case 'e':       case 'f':
                        {
-                       char    str[2] = {ch,0};
-                       if(giKB_MagicAddressPos == BITS/4)      break;
+                       char    str[4] = {'0', 'x', ch, 0};
+                       if(giKB_MagicAddressPos == BITS/4)      return;
                        giKB_MagicAddress |= atoi(str) << giKB_MagicAddressPos;
                        giKB_MagicAddressPos ++;
                        }
-                       break;
+                       return;
+               
+               // Instruction Tracing
+               case 't':
+                       Log("Toggle instruction tracing on %i\n", giKB_MagicAddress);
+                       Threads_ToggleTrace( giKB_MagicAddress );
+                       giKB_MagicAddress = 0;  giKB_MagicAddressPos = 0;
+                       return;
                
                // Thread List Dump
                case 'p':       Threads_Dump(); return;
@@ -208,10 +216,10 @@ void KB_IRQHandler(int IRQNum)
        }
        #endif
 
-       // Is shift pressed
-       // - Darn ugly hacks !!x means (bool)x
-       if( !!gbKB_ShiftState ^ gbKB_CapsState)
+       // Capitals required?
+       if( (gbKB_ShiftState != 0) != (gbKB_CapsState != 0))
        {
+               // TODO: Move this to the keyboard map header
                switch(ch)
                {
                case 0: break;

UCC git Repository :: git.ucc.asn.au