From 4af62bb53676b7f721b46cabee78cac3a557e924 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 5 Aug 2020 18:28:26 +0200 Subject: Some proc things --- apps/Makefile | 2 +- apps/init.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ apps/root.c | 49 ------------------------------------------------- 3 files changed, 50 insertions(+), 50 deletions(-) create mode 100644 apps/init.c delete mode 100644 apps/root.c (limited to 'apps') diff --git a/apps/Makefile b/apps/Makefile index 56e5472..91d7920 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -1,6 +1,6 @@ # MIT License, Copyright (c) 2020 Marvin Borner -COBJS = a.o b.o root.o +COBJS = a.o b.o init.o CC = ../cross/opt/bin/i686-elf-gcc LD = ../cross/opt/bin/i686-elf-ld OC = ../cross/opt/bin/i686-elf-objcopy diff --git a/apps/init.c b/apps/init.c new file mode 100644 index 0000000..bd33033 --- /dev/null +++ b/apps/init.c @@ -0,0 +1,49 @@ +// MIT License, Copyright (c) 2020 Marvin Borner + +#include + +u32 strlen(const char *s) +{ + const char *ss = s; + while (*ss) + ss++; + return ss - s; +} + +u8 inb(u16 port) +{ + u8 value; + __asm__ volatile("inb %1, %0" : "=a"(value) : "Nd"(port)); + return value; +} + +void outb(u16 port, u8 data) +{ + __asm__ volatile("outb %0, %1" ::"a"(data), "Nd"(port)); +} + +int is_transmit_empty() +{ + return inb(0x3f8 + 5) & 0x20; +} + +void serial_put(char ch) +{ + while (is_transmit_empty() == 0) + ; + outb(0x3f8, (u8)ch); +} + +void serial_print(const char *data) +{ + for (u32 i = 0; i < strlen(data); i++) + serial_put(data[i]); +} + +void main() +{ + serial_print("Init loaded\n"); + __asm__ volatile("int $0x80"); + while (1) { + }; +} diff --git a/apps/root.c b/apps/root.c deleted file mode 100644 index 097d0db..0000000 --- a/apps/root.c +++ /dev/null @@ -1,49 +0,0 @@ -// MIT License, Copyright (c) 2020 Marvin Borner - -#include - -u32 strlen(const char *s) -{ - const char *ss = s; - while (*ss) - ss++; - return ss - s; -} - -u8 inb(u16 port) -{ - u8 value; - __asm__ volatile("inb %1, %0" : "=a"(value) : "Nd"(port)); - return value; -} - -void outb(u16 port, u8 data) -{ - __asm__ volatile("outb %0, %1" ::"a"(data), "Nd"(port)); -} - -int is_transmit_empty() -{ - return inb(0x3f8 + 5) & 0x20; -} - -void serial_put(char ch) -{ - while (is_transmit_empty() == 0) - ; - outb(0x3f8, (u8)ch); -} - -void serial_print(const char *data) -{ - for (u32 i = 0; i < strlen(data); i++) - serial_put(data[i]); -} - -void main() -{ - serial_print("root loaded\n"); - __asm__ volatile("int $0x80"); - while (1) { - }; -} -- cgit v1.2.3