diff options
author | Marvin Borner | 2020-07-22 18:26:56 +0200 |
---|---|---|
committer | Marvin Borner | 2020-07-22 18:26:56 +0200 |
commit | 40cc5e32663cd0350b791b8e54825f564489343f (patch) | |
tree | 3561c2f379b98ac3c3005f9048bb5535a0d3952d /src/drivers/serial.c | |
parent | c0a2074864e668b005eea8f50c6719bceb66bf20 (diff) |
Imported some things from master
Diffstat (limited to 'src/drivers/serial.c')
-rw-r--r-- | src/drivers/serial.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/drivers/serial.c b/src/drivers/serial.c new file mode 100644 index 0000000..1ef424a --- /dev/null +++ b/src/drivers/serial.c @@ -0,0 +1,32 @@ +#include <cpu.h> +#include <def.h> +#include <string.h> + +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]); +} |