diff --git a/src/drivers/pc80/vga/vga.c b/src/drivers/pc80/vga/vga.c
index 3471c94..a52ba6d 100644
--- a/src/drivers/pc80/vga/vga.c
+++ b/src/drivers/pc80/vga/vga.c
@@ -256,23 +256,55 @@
 	vga_cr_write(0x0D, offset & 0xFF);
 }
 
+static void
+vga_write_at_offset(unsigned int line, unsigned int offset, const char *string)
+{
+	if (!string)
+		return;
+
+	unsigned short *p = (unsigned short *)VGA_FB + (VGA_COLUMNS * line) + offset;
+	size_t i, len = strlen(string);
+
+	for (i = 0; i < (VGA_COLUMNS - offset); i++) {
+		if (i < len)
+			p[i] = 0x0F00 | string[i];
+		else
+			p[i] = 0x0F00;
+	}
+}
+
 /*
  * simply fills a line with the given string.
  */
 void
 vga_line_write(unsigned int line, const char *string)
 {
-	if (!string)
-		return;
+	vga_write_at_offset(line, 0, string);
+}
 
-	unsigned short *p = (unsigned short *)VGA_FB + (VGA_COLUMNS * line);
-	size_t i, len = strlen(string);
+void
+vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line, const char *string)
+{
+	char str[VGA_COLUMNS * VGA_LINES] = {0};
+	memcpy(str, string, strnlen(string, sizeof(str) - 1));
 
-	for (i = 0; i < VGA_COLUMNS; i++) {
-		if (i < len)
-			p[i] = 0x0F00 | string[i];
-		else
-			p[i] = 0x0F00;
+	char *token = strtok(str, "\n");
+
+	while (token != NULL) {
+		size_t offset = VGA_COLUMNS - strnlen(token, VGA_COLUMNS);
+		switch (alignment) {
+		case VGA_TEXT_CENTER:
+			vga_write_at_offset(line++, offset/2, token);
+			break;
+		case VGA_TEXT_RIGHT:
+			vga_write_at_offset(line++, offset, token);
+			break;
+		case VGA_TEXT_LEFT:
+		default:
+			vga_write_at_offset(line++, 0, token);
+			break;
+		}
+		token = strtok(NULL, "\n");
 	}
 }
 
diff --git a/src/include/pc80/vga.h b/src/include/pc80/vga.h
index 4b7b26c..ec012f5 100644
--- a/src/include/pc80/vga.h
+++ b/src/include/pc80/vga.h
@@ -8,6 +8,15 @@
 #define VGA_COLUMNS 80
 #define VGA_LINES 25
 
+#define VGA_TEXT_HORIZONTAL_TOP 0
+#define VGA_TEXT_HORIZONTAL_MIDDLE (VGA_LINES / 2)
+
+enum VGA_TEXT_ALIGNMENT {
+	VGA_TEXT_LEFT,
+	VGA_TEXT_CENTER,
+	VGA_TEXT_RIGHT,
+};
+
 void vga_io_init(void);
 
 void vga_textmode_init(void);
@@ -20,4 +29,10 @@
 
 void vga_line_write(unsigned int line, const char *string);
 
+/*
+ * vga_write_text() writes a line of text aligned left/center/right
+ * horizontally on the screen (i.e. enum VGA_TEXT_ALIGNMENT)
+ */
+void vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line, const char *string);
+
 #endif /* VGA_H */
