diff --git a/Makefile b/Makefile
index 4a890a9fcb0ea011a3f987d7d7933d9b3624a8e5..7586c19704d24f5602785b05e77c1a26e4cda953 100644
--- a/Makefile
+++ b/Makefile
@@ -54,6 +54,24 @@ kernel : $(OBJS) bootother.S init
 	$(LD) -Ttext 0x100000 -e main0 -o kernel $(OBJS) -b binary bootother init
 	$(OBJDUMP) -S kernel > kernel.asm
 
+tags: $(OBJS) bootother.S init
+	etags *.S *.c
+
+PRINT =	README\
+	types.h param.h defs.h x86.h asm.h elf.h mmu.h spinlock.h\
+	bootasm.S bootother.S main.c init.c spinlock.c\
+	proc.h proc.c setjmp.S kalloc.c\
+	syscall.h trapasm.S traps.h trap.c vectors.pl syscall.c\
+	buf.h dev.h fcntl.h stat.h fd.h fs.h fsvar.h fd.c fs.c bio.c ide.c\
+	pipe.c\
+	mp.h ioapic.h mp.c lapic.c ioapic.c picirq.c\
+	console.c\
+	string.c\
+
+print: $(PRINT)
+	a2ps --line-numbers=1 -M Letter $(PRINT) -o xv6.ps
+	a2ps --line-numbers=1 -M Letter $(PRINT) --toc -atoc -o xv6toc.ps
+
 vectors.S : vectors.pl
 	perl vectors.pl > vectors.S
 
diff --git a/README b/README
index ce0bbfb2db79dced53ef630acc88dea65325da4b..beea549394cc49f14600f0656a05b757a1667816 100644
--- a/README
+++ b/README
@@ -1 +1,12 @@
-This is the content of file README.
+xv6 is a re-implementation of Unix Version 6 (v6), which was developed
+by Dennis Ritchie and Ken Thompson. xv6 follows the structure and
+style of v6, but is implemented for a modern x86-based multiprocessor
+using ANSI C.
+
+xv6 is inspired by the following work by Lions about Unix version 6:
+
+- Lions' Commentary on UNIX' 6th Edition, John Lions, Peer to Peer
+Communications; ISBN: 1-57398-013-7; 1st edition (June 14, 2000). See
+also http://pdos.csail.mit.edu/6.828/2006/v6.html, which provides
+pointers to on-line resources for v6.
+
diff --git a/init.c b/init.c
index 983246b47cc200afd6d30862b378e073a4aa8752..5e387a8e5358bc05958d68ae2ce2d64803a7af3f 100644
--- a/init.c
+++ b/init.c
@@ -4,6 +4,8 @@
 #include "fs.h"
 #include "fcntl.h"
 
+/* The initial user-level program */
+
 char *sh_args[] = { "sh", 0 };
 
 int