]>
git.dujemihanovic.xyz Git - nameless-os.git/blob - kernel/kernel/kprint.c
9 void kprint(const char *string
, const enum vga_color fg
, const enum vga_color bg
)
11 char character
= *string
;
12 for (int i
=1; character
; i
++) {
13 vga_print_char(character
, fg
, bg
);
14 character
= string
[i
];
18 void kprintc(const char character
, const enum vga_color fg
, const enum vga_color bg
)
20 vga_print_char(character
, fg
, bg
);
23 void kprintnibble(uint8_t nibble
)
27 kprintc('0' + nibble
, VGA_LIGHT_GRAY
, VGA_BLACK
);
28 else kprintc('a' - 0xa + nibble
, VGA_LIGHT_GRAY
, VGA_BLACK
);
31 void kprintb(const uint8_t byte
, const int print_delm
)
34 kprint("0x", VGA_LIGHT_GRAY
, VGA_BLACK
);
36 kprintnibble(byte
>> 4);
40 void kprintw(const uint16_t word
, const int print_delm
)
43 kprint("0x", VGA_LIGHT_GRAY
, VGA_BLACK
);
45 kprintb(word
>> 8, 0);
49 void kprintd(const uint32_t dword
, const int print_delm
)
52 kprint("0x", VGA_LIGHT_GRAY
, VGA_BLACK
);
54 kprintw(dword
>> 16, 0);
58 void kprintq(const uint64_t qword
, const int print_delm
)
61 kprint("0x", VGA_LIGHT_GRAY
, VGA_BLACK
);
63 kprintd(qword
>> 32, 0);
67 int kprintdec(uint32_t num
, const enum vga_color fg
, const enum vga_color bg
)
71 /* TODO: make an actual memset function to use instead of this */
72 for (int i
=0; i
<11; i
++) {
76 /* put the numbers in the buffer */
77 for (int i
=9; i
>0 && num
>0; i
--) {
78 const uint8_t currdigit
= num
%10;
79 buffer
[i
] = currdigit
+'0';
83 /* shift the array as much as needed */
84 while (*buffer
== '\0') {
86 for (int i
=0; i
<9; i
++) {
87 buffer
[i
] = buffer
[i
+1];
91 /* zero out any leftovers */
93 for (int i
=digits
; i
<10; i
++) {
98 kprint(buffer
, fg
, bg
);