From 544acef0986977ef9d3a05d87bb9f55163b1280a Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sun, 9 Aug 2020 17:27:08 +0200 Subject: Temporary cpu and serial drivers in libc --- lib/serial.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 lib/serial.c (limited to 'lib/serial.c') diff --git a/lib/serial.c b/lib/serial.c new file mode 100644 index 0000000..dcee4dd --- /dev/null +++ b/lib/serial.c @@ -0,0 +1,32 @@ +#include +#include +#include + +void serial_install() +{ + outb(0x3f8 + 1, 0x00); + outb(0x3f8 + 3, 0x80); + outb(0x3f8 + 0, 0x03); + outb(0x3f8 + 1, 0x00); + outb(0x3f8 + 3, 0x03); + outb(0x3f8 + 2, 0xC7); + outb(0x3f8 + 4, 0x0B); +} + +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]); +} -- cgit v1.2.3