diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-02-02 21:48:38 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-02-02 21:48:38 -0500 |
| commit | c8a195e1eb19d346c03c1dfa6ed66c6215caefa2 (patch) | |
| tree | 3096ea08f7f213d7efe56a86391ab79b27333d40 /libc/stdio.c | |
| parent | 5c84e678defa9333aefcdcd0870564fb945a8c61 (diff) | |
| download | kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.zip kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.gz kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.bz2 kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.xz | |
Refactor, begin writing a PS/2 driver
Diffstat (limited to '')
| -rw-r--r-- | libc/stdio.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libc/stdio.c b/libc/stdio.c index 4888338..17c5a2f 100644 --- a/libc/stdio.c +++ b/libc/stdio.c @@ -14,6 +14,21 @@ int puts(const char* str) return 0; } +static char hex_table[16] = { '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + +static void print_hex(unsigned int n) +{ + unsigned mask = 0xF0000000; + unsigned shift = 28; + while(mask) + { + putchar(hex_table[(n & mask) >> shift]); + mask >>= 4; + shift -= 4; + } +} + int printf(const char *fmt, ...) { va_list ap; @@ -33,6 +48,9 @@ int printf(const char *fmt, ...) case 's': puts(va_arg(ap, const char*)); break; + case 'x': + print_hex(va_arg(ap, unsigned)); + break; default: puts("printf: unknown format\n"); break; |