X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fdrv%2Fkb.c;h=b67c8e31b305f2ab3490caf0b43997b56a1dc913;hb=311b8047c85b22302153740947694df50d2ce356;hp=07e07f5d624857e2677f6b9a145ad88c49a57e48;hpb=599466207eaeee9cb2bf397a7a62d0455599d05c;p=tpg%2Facess2.git diff --git a/Kernel/drv/kb.c b/Kernel/drv/kb.c index 07e07f5d..b67c8e31 100644 --- a/Kernel/drv/kb.c +++ b/Kernel/drv/kb.c @@ -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;