diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2018-08-28 16:21:37 +0100 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2018-08-28 16:21:37 +0100 |
| commit | d5cf6a9696f6f86bec5652f94ba7485aae4ca1bc (patch) | |
| tree | f49de1a27255090ac38c222dede7b9c6fda06eef | |
| parent | e88de0162cff8bbad80972c1b92355b9d2db0213 (diff) | |
| download | tinyOS-d5cf6a9696f6f86bec5652f94ba7485aae4ca1bc.tar.xz tinyOS-d5cf6a9696f6f86bec5652f94ba7485aae4ca1bc.zip | |
Add print_ln function
| -rw-r--r-- | .gitignore | 3 | ||||
| -rwxr-xr-x | build.sh | 15 | ||||
| -rw-r--r-- | kernel/io/text_mode_diplay.h | 3 | ||||
| -rw-r--r-- | kernel/io/text_mode_display.c (renamed from kernel.c) | 24 | ||||
| -rw-r--r-- | kernel/kernel-bootstrap.asm (renamed from kernel-bootstrap.asm) | 0 | ||||
| -rw-r--r-- | kernel/kernel.c | 15 |
6 files changed, 39 insertions, 21 deletions
@@ -51,4 +51,5 @@ Module.symvers Mkfile.old dkms.conf -bin/
\ No newline at end of file +bin/ +.vscode/
\ No newline at end of file @@ -1,6 +1,11 @@ #!/bin/bash -mkdir -p bin -rm -f bin/* -nasm -f elf32 kernel-bootstrap.asm -o bin/kernel-bootstrap.o -gcc -m32 -std=c99 -c kernel.c -o bin/kernelc.o -ld -m elf_i386 -T link.ld -o bin/kernel bin/kernel-bootstrap.o bin/kernelc.o + +# TODO - proper makefile + +rm -rf bin/kernel/* +mkdir -p bin/kernel/io +nasm -f elf32 kernel/kernel-bootstrap.asm -o bin/kernel-bootstrap.o +gcc -m32 -std=c99 -c kernel/kernel.c -o bin/kernel/kernel.o +gcc -m32 -std=c99 -c kernel/io/text_mode_display.c -o bin/kernel/io/text_mode_display.o +ld -m elf_i386 -T link.ld -o bin/kern bin/kernel-bootstrap.o bin/kernel/kernel.o bin/kernel/io/text_mode_display.o +#ld -m elf_i386 -T link.ld -o bin/kern bin/kernel-bootstrap.o bin/**/*.o
\ No newline at end of file diff --git a/kernel/io/text_mode_diplay.h b/kernel/io/text_mode_diplay.h new file mode 100644 index 0000000..d2d1180 --- /dev/null +++ b/kernel/io/text_mode_diplay.h @@ -0,0 +1,3 @@ +void clear_screen(); +void print(char *msg); +void print_ln(char *msg);
\ No newline at end of file diff --git a/kernel.c b/kernel/io/text_mode_display.c index 1c3a97c..514ba9f 100644 --- a/kernel.c +++ b/kernel/io/text_mode_display.c @@ -1,7 +1,8 @@ +#define COLS 80 +#define ROWS 25 +#define FRAME_SIZE (ROWS * COLS * 2) // 2 bytes per char -#define FRAME_SIZE (80 * 25 * 2) // 80 cols, 25 rows, 2 bytes per char - -char *video_ram = (char *) 0xB8000; +char *video_ram = (char *)0xB8000; int cursor_pos = 0; void clear_screen() @@ -14,7 +15,7 @@ void clear_screen() cursor_pos = 0; } -void print(char *msg) +void print(char *msg) { int j = 0; while (msg[j] != '\0') @@ -25,16 +26,9 @@ void print(char *msg) } } - -void run_kern() -{ - clear_screen(); - - print("I am a kernel!"); - print(" another message"); -} - -void kernel_entrypoint() +void print_ln(char *msg) { - run_kern(); + print(msg); + int current_line = cursor_pos / COLS; + cursor_pos = (current_line + 1) * (COLS*2); } diff --git a/kernel-bootstrap.asm b/kernel/kernel-bootstrap.asm index 9e3b10e..9e3b10e 100644 --- a/kernel-bootstrap.asm +++ b/kernel/kernel-bootstrap.asm diff --git a/kernel/kernel.c b/kernel/kernel.c new file mode 100644 index 0000000..e872fa5 --- /dev/null +++ b/kernel/kernel.c @@ -0,0 +1,15 @@ +#include "./io/text_mode_diplay.h" + +void run_kern() +{ + clear_screen(); + + print_ln("I am a kernel!"); + print("I am on a new line"); + print(" - I am not"); +} + +void kernel_entrypoint() +{ + run_kern(); +} |