diff options
| author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-02-04 23:07:25 +0100 | 
|---|---|---|
| committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2010-02-04 23:07:25 +0100 | 
| commit | f36a96b59eddd066354018c4e6c6279897b33487 (patch) | |
| tree | 3a55ab20f7e9f91e1131d0fa6873c0b92393af7f /kernel/printf.c | |
| parent | 4b0929187b70588bcebfe004ab216f3590c01038 (diff) | |
Added framebuffer.
Output is now to a framebuffer instead of serial console.
Diffstat (limited to 'kernel/printf.c')
| -rw-r--r-- | kernel/printf.c | 26 | 
1 files changed, 11 insertions, 15 deletions
| diff --git a/kernel/printf.c b/kernel/printf.c index 0b51f8d..61237aa 100644 --- a/kernel/printf.c +++ b/kernel/printf.c @@ -1,13 +1,6 @@  #include "printf.h"  #include "types.h" -#include "portio.h" - -void putchar(char c) { -	if(c == '\n') { -		outb(0x3f8, '\r'); -	} -	outb(0x3f8, c); -} +#include "framebuffer.h"  int printf(const char* format, ...) {  	int32_t* argp = (int32_t*)&format; @@ -15,7 +8,7 @@ int printf(const char* format, ...) {  	while(*format) {  		if(*format != '%') { -			putchar(*format++); +			framebuffer_putchar(*format++);  			num++;  			continue;  		} @@ -36,12 +29,12 @@ int printf(const char* format, ...) {  		switch(*format++) {  			case '%': -				putchar('%'); +				framebuffer_putchar('%');  				num++;  				break;  			case 'c': -				putchar((char)*++argp); +				framebuffer_putchar((char)*++argp);  				num++;  				break; @@ -49,7 +42,7 @@ int printf(const char* format, ...) {  				;  				char* str = (char*)*++argp;  				while(*str) { -					putchar(*str++); +					framebuffer_putchar(*str++);  					num++;  				}  				break; @@ -63,7 +56,7 @@ int printf(const char* format, ...) {  				uint32_t x = (uint32_t)*(++argp);  				if(is_signed && (int32_t)x < 0) {  					x = -x; -					putchar('-'); +					framebuffer_putchar('-');  					min_len--;  				} @@ -79,17 +72,20 @@ int printf(const char* format, ...) {  				} while(x);  				while(min_len > 0) { -					putchar(zero_pad ? '0' : ' '); +					framebuffer_putchar(zero_pad ? '0' : ' ');  					num++;  					min_len--;  				}  				while(*bufp) { -					putchar(*bufp++); +					framebuffer_putchar(*bufp++);  					num++;  				}  				break;  		}  	} +	 +	framebuffer_move_cursor(); +	  	return num;  } | 
