diff --git a/src/log.c b/src/log.c
new file mode 100644
index 0000000..19959e7
--- /dev/null
+++ b/src/log.c
@@ -0,0 +1,63 @@
+#include "log.h"
+#include "kint.h"
+#include "vga.h"
+#include "stdarg.h"
+
+void kprintf(const char *format, ...)
+{
+	va_list args;
+	va_start(args, format);
+
+	while (*format)
+	{
+		if (*format == '%')
+		{
+			format++;
+			
+			switch (*format)
+			{
+			case 'd':
+			{
+				uint x = (uint) va_arg(args, uint);
+				vga_putd(x);
+				break;
+			}
+				
+			case 'x':
+			{
+				// consider hex always unsigned
+				uint x = (uint) va_arg(args, uint);
+				vga_putx(x);
+				break;
+			}
+
+			case 's':
+			{
+				char *s = va_arg(args, char *);
+				vga_write(s);
+				break;
+			}
+			}
+			format++;
+		}
+		else
+		{
+			vga_put(*format);
+			format++;
+		}
+	}
+
+	va_end(args);
+}
+
+void kassert_int(bool condition, const char *message, const char *file, const int line)
+{
+	if (!condition)
+	{
+		vga_set_color(LIGHT_RED, BLACK);
+		kprintf("ASSERTION FAILED: %s:%d\n%s\n", file, line, message);
+		
+		while (1)
+		{}
+	}
+}
