diff --git a/src/kernel/Jmk b/src/kernel/Jmk
index e1dc457..4133349 100644
--- a/src/kernel/Jmk
+++ b/src/kernel/Jmk
@@ -11,6 +11,9 @@
 archetype(asm)
 
 depends(initrd, $(ROOT)/boot/initrd, initrd.img)
+depends(ata_pio, dri/ata_pio, ata_pio.a)
+
+CFLAGS += -I $(ROOT)/include/kernel
 
 LDFLAGS += -Tlink.ld -melf_i386
 ASMFLAGS += -felf -Fdwarf
@@ -37,7 +40,8 @@
 			vfs_initrd.o \
 			syscall.o \
 			task.o \
-			task_api.o
+			task_api.o \
+			lib(ata_pio)
 
 type(custom_link)
 
diff --git a/src/kernel/dri/ata_pio/Jmk b/src/kernel/dri/ata_pio/Jmk
new file mode 100644
index 0000000..b2fa318
--- /dev/null
+++ b/src/kernel/dri/ata_pio/Jmk
@@ -0,0 +1,17 @@
+init(ata_pio, ata_pio.a)
+
+preset(freestanding)
+preset(optimize)
+preset(debug)
+preset(32)
+preset(warn)
+
+CFLAGS += -I $(ROOT)/include/kernel
+
+archetype(c)
+
+OBJECTS = ata_pio.o
+
+type(static_lib)
+
+finish
diff --git a/src/kernel/dri/ata_pio/ata_pio.c b/src/kernel/dri/ata_pio/ata_pio.c
new file mode 100644
index 0000000..a8ec300
--- /dev/null
+++ b/src/kernel/dri/ata_pio/ata_pio.c
@@ -0,0 +1,70 @@
+#include <dri/ata_pio/ata_pio.h>
+
+#include <io.h>
+#include <log.h>
+
+static uchar test_buffer[256 * 4];
+
+void ata_pio_wait_bsy()
+{
+	while (inb(ATA_PORT_CMD) & ATA_BSY)
+	{}
+}
+
+void ata_pio_wait_drq()
+{
+	while (!(inb(ATA_PORT_CMD) & ATA_RDY))
+	{}
+}
+
+static void ata_pio_send_init(uint lba, uchar num_sectors)
+{
+	outb(ATA_PORT_DRIVE_SEL, 0xe0 | (lba >> 24));
+	outb(ATA_PORT_SECTOR_COUNT, num_sectors);
+	outb(ATA_PORT_LBA_LOW, lba & 0xff);
+	outb(ATA_PORT_LBA_MID, (lba >> 8) & 0xff);
+	outb(ATA_PORT_LBA_HIGH, (lba >> 16) & 0xff);
+}
+
+void ata_pio_read_sectors(uchar *buffer, uint lba, uchar num_sectors)
+{
+	ata_pio_wait_bsy();
+
+	ata_pio_send_init(lba, num_sectors);
+	outb(ATA_PORT_CMD, ATA_CMD_READ);
+
+	for (int i = 0; i < num_sectors; i++)
+	{
+		ata_pio_wait_bsy();
+		ata_pio_wait_drq();
+
+		for (int j = 0; j < 256; j++)
+			buffer[i * 256 + j] = inb(ATA_PORT_DATA);
+	}
+}
+
+void ata_pio_write_sectors(uint lba, uchar num_sectors, uchar *buffer)
+{
+	ata_pio_wait_bsy();
+
+	ata_pio_send_init(lba, num_sectors);
+	outb(ATA_PORT_CMD, ATA_CMD_WRITE);
+
+	for (int i = 0; i < num_sectors; i++)
+	{
+		ata_pio_wait_bsy();
+		ata_pio_wait_drq();
+
+		for (int j = 0; j < 256; j++)
+			outb(ATA_PORT_DATA, buffer[i * 256 + j]);
+	}
+}
+
+void test_ata_pio()
+{
+	kprintf("Going to ata_pio_read_sectors\n");
+	ata_pio_read_sectors(test_buffer, 0, 4);
+
+	for (int i = 0; i < 256 * 4; i += 64)
+		kprintf("Byte %d = %d\n", test_buffer[i]);
+}
diff --git a/src/kernel/io.h b/src/kernel/io.h
deleted file mode 100644
index 85f2e8c..0000000
--- a/src/kernel/io.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include "kint.h"
-#include "registers.h"
-
-#define KBD_CMD_PORT 0x64
-#define KBD_DATA_PORT 0x60
-
-struct kbd_scan_code_info
-{
-	bool pressed;
-	bool escape;
-	char key;
-};
-
-extern struct kbd_scan_code_info scan_code_table[0xff];
-
-void outb(ushort port, uchar val);
-uchar inb(ushort port);
-ushort inw(ushort port);
-
-/* Random string.h stuff, TODO: move to own header */
-void *memset(void *s, int c, size_t n);
-void *memcpy(void *dest, const void *src, size_t n);
-void strcpy(char *dest, char *src);
-int strcmp(char *a, char *b);
-uint strlen(char *a);
-
-uchar kbd_scan_code();
-void kbd_handle_input(struct registers *registers);
-void init_kbd();
diff --git a/src/kernel/kint.h b/src/kernel/kint.h
deleted file mode 100644
index f70b22f..0000000
--- a/src/kernel/kint.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-typedef unsigned char uchar;
-typedef unsigned short ushort;
-typedef unsigned int uint;
-typedef unsigned long ulong;
-
-typedef unsigned long size_t;
-
-typedef _Bool bool;
-
-enum
-{
-	false = 0,
-	true,
-};
-
-#define NULL 0
-#define MIN(a, b) ((a)>(b)?(b):(a))
-#define MAX(a, b) ((a)>(b)?(a):(b))
-
-// Coerce into 1 or 0
-#define BOOL(a) (!(!(a)))
diff --git a/src/kernel/log.h b/src/kernel/log.h
deleted file mode 100644
index fe5dcd9..0000000
--- a/src/kernel/log.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-
-#include "kint.h"
-
-void kprintf(const char *format, ...);
-void kassert_int(bool condition, const char *message, const char *file,
-				 const int line);
-
-#define kassert(cond, msg) kassert_int((cond), (msg), __FILE__, __LINE__)
-#define kpanic(msg)                                                            \
-	kassert(false, msg);                                                       \
-	__builtin_unreachable()
diff --git a/src/kernel/main.c b/src/kernel/main.c
index 355ce9f..2ee8192 100644
--- a/src/kernel/main.c
+++ b/src/kernel/main.c
@@ -10,6 +10,7 @@
 #include "vfs.h"
 #include "vfs_initrd.h"
 #include "vga.h"
+#include <dri/ata_pio/ata_pio.h>
 
 void greet()
 {
@@ -76,15 +77,13 @@
 	init_tasks();
 	kprintf("\ndone initializing tasks\n");
 
+#ifdef TEST_THREADS
 	spawn_thread(other_thread, NULL);
 
 	greet();
+#endif
 
-	asm volatile("cli");
-
-	switch_task();
-
-	kprintf("Switched task, this should have done nothing.\n");
+	test_ata_pio();
 
 	while (true)
 		asm volatile("hlt");
diff --git a/src/kernel/registers.h b/src/kernel/registers.h
deleted file mode 100644
index 687bd0e..0000000
--- a/src/kernel/registers.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "kint.h"
-
-struct registers
-{
-	uint ds;
-	uint edi, esi, ebp, esp, ebx, edx, ecx, eax;
-	uint interrupt_number, error_code;
-	uint eip, cs, eflags, useresp, ss;
-};
