diff options
author | Freya Murphy <freya@freyacat.org> | 2024-02-03 00:50:07 -0500 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-02-03 00:53:58 -0500 |
commit | 90a6065691beee52bf5309916fba98f7580d27be (patch) | |
tree | 0b5375d20c189f62d394c473d371f7bf7f1d3fc5 /src/arch/amd64/serial.c | |
parent | improved debugger, refactored (diff) | |
download | corn-90a6065691beee52bf5309916fba98f7580d27be.tar.gz corn-90a6065691beee52bf5309916fba98f7580d27be.tar.bz2 corn-90a6065691beee52bf5309916fba98f7580d27be.zip |
refactor, new arch dirs, (wip) page alloc on write, hsv screen (convert to userspace later), other fixes
Diffstat (limited to 'src/arch/amd64/serial.c')
-rw-r--r-- | src/arch/amd64/serial.c | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/arch/amd64/serial.c b/src/arch/amd64/serial.c deleted file mode 100644 index fe21629..0000000 --- a/src/arch/amd64/serial.c +++ /dev/null @@ -1,47 +0,0 @@ -#include <serial.h> -#include "bindings.h" - -#define PORT 0x3F8 - -// initialize the specified COM port for serial -// see https://wiki.osdev.org/Serial_Ports -// and https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming -int serial_init(void) { - outb(PORT + 1, 0x00); // disable interrupts - outb(PORT + 3, 0x80); // enable DLAB (divisor latch access bit) - outb(PORT + 0, 0x03); // (lo) Set baud divisor to 3 38400 baud - outb(PORT + 1, 0x00); // (hi) - outb(PORT + 3, 0x03); // disable DLAB, set 8 bits per word, one stop bit, no parity - outb(PORT + 2, 0xC7); // enable and clear FIFOs, set to maximum threshold - // outb(port + 4, 0x0B); // TODO copied this from osdev wiki but i don't think you need it here - outb(PORT + 4, 0x1E); // set in loopback mode for test - outb(PORT + 0, 0xAE); // test by sending 0xAE - - uint8_t response = inb(PORT + 0); - if (response != 0xAE) { - // TODO panic here? - return -1; - } - - // disable loopback, enable IRQs - outb(PORT + 4, 0x0F); - return 0; -} - -uint8_t serial_in(void) { - // wait for data to be available - while ((inb(PORT + 5) & 0x01) == 0); - return inb(PORT); -} - -void serial_out(uint8_t ch) { - // wait for output to be free - while ((inb(PORT + 5) & 0x20) == 0); - outb(PORT, ch); -} - -void serial_out_str(const char *str) { - for (; *str != '\0'; str++) { - serial_out(*str); - } -} |