Added kprintln and memset

This commit is contained in:
Nocturn9x 2022-11-18 02:40:46 +01:00
parent 070de9c196
commit 6a020aeeee
7 changed files with 36 additions and 6 deletions

View File

@ -41,6 +41,7 @@ limitations under the License.
void clearScreen(void);
void kprintAt(char* message, i32 col, i32 row);
void kprint(char* message);
void kprintln(char* message);
#endif

View File

@ -22,7 +22,13 @@ limitations under the License.
#define true 1
#define false 0
typedef unsigned char byte;
// Some of these are duplicates, but their meaning
// is purely contextual (to make it clearer what is
// what in a given function)
typedef char i8;
typedef char byte;
typedef unsigned char u8;
typedef unsigned short int u16;
typedef short int i16;
typedef unsigned int u32;

View File

@ -20,6 +20,7 @@ limitations under the License.
#include "kernel/types.h"
void copystr(const char* source, char* dest, i32 n);
void itoa(i32 i, char* a);
void memset(u8* dest, u8 val, u32 len);
void itoa(const i32 i, char* a);
#endif

View File

@ -58,7 +58,7 @@ load_kernel: ; Loads the kernel into memory
mov si, loading_kernel_msg
call bios_println
mov bx, kernel_offset
mov dh, 3
mov dh, 4
mov dl, [boot_drive]
call load_disk
ret

View File

@ -68,6 +68,15 @@ void kprint(char* message) {
}
void inline kprintln(char* message) {
/*
Identical to kprint, but calls
kprint("\n") afterwards
*/
kprint(message);
kprint("\n");
}
// Private API below
i32 putchar(byte ch, i32 col, i32 row, byte attr) {

View File

@ -24,9 +24,9 @@ i32 kmain(void) {
The kernel entry point of TSOS
*/
// Newline so we skip the log
// messages from the bootloader
kprint("\nTSOS: Kernel load OK");
// We skip the log messages from
// the bootloader
kprintln("\n\n\n\nTSOS: Kernel load OK");
// TODO...
return 0x022172; // :D
}

View File

@ -17,6 +17,7 @@ limitations under the License.
#include "kernel/types.h"
#include "kernel/util.h"
void copystr(const char* restrict source, char* restrict dest, i32 n) {
/*
Copies n bytes from source to dest. The two memory locations may
@ -34,6 +35,18 @@ void copystr(const char* restrict source, char* restrict dest, i32 n) {
}
void memset(u8* dest, u8 val, u32 len) {
/*
Implementation for memset
*/
u8* temp = (u8*)dest;
while (len) {
*temp++ = val;
len--;
}
}
i32 countDigits(i32 n) {
/*
Returns the number of digits