+For those eager to jump right in, all functions have comments in the source
+code containing a text description as well as both call and return stacks.
+Simply `#include` the relevant file, setup your call stack per the
+documentation and then `JSR` to the stdlib function of your choice.
+
+Some functions, like `deepdup`, `stackrotate` and `stackrotatereverse`, ease
+stack manipulations by allowing easy access to elements deep on the stack.
+Similarly, `slurp` and `spew` help move bulk data between the stack and heap.
+
+User interactions were also targeted. The included `printf` function provides a
+variety of substitutions to ease user interactions. For user input, `get user
+string` and `atoi` allow easy creation of basic user interfaces.
+
+The library includes a variety of bitwise logic functions as well as heap
+manipulation functions and a handful of math functions including a random
+number generator.
+
+
+# Instructions #
+
+Before we can use this library, we must `#include` it in our program. Looking
+at the "Entry Points" table below, if we wanted to call `deepdup` we would need
+to `#include <stack.pvvs>` in our code, but where?
+
+Recall that VVhitespace processes our code from top to bottom. Thus, it is
+always safe to `#include` files at the bottom, after our program's text. This
+way the files are included in our source code but won't be accidentally
+executed by the interpreter. For example:
+
+ @ Put two elements on the stack.
+ SSSTTTTSTSSN | PUSH 244
+ SSSTN | PUSH 1
+ @ Duplicate the deeper element.
+ SSSTSN | PUSH 2 (argument to deepdup)
+ NSTTTSSN | JSR > 1100 (deepdup)
+ NNN | DIE
+ #include <stack.pvvs>
+
+What about that `PUSH 2` instruction that is an argument to `deepdup`? If we
+check `stack.pvvs`, we will find the following comment above the `deepdup`
+function:
+
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ @ Name:
+ @ deepdup
+ @ Description:
+ @ Duplicates an item deep on the stack, placing the duplicate on TOS.
+ @ By default, maximum depth is 13.
+ @ True maximum depth is (max depth of stackrotate & stackrotatereverse)-1.
+ @ Call Stack:
+ @ stack word n
+ @ ...
+ @ stack word 1
+ @ dupdepth <-- TOS
+ @ Return Stack: (dupdepth=3)
+ @ stack word n
+ @ ...
+ @ stack word 1
+ @ copy of stack word 3 <-- TOS
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ NSSVTTSSN | Mark: 1100 (deepdup)
+ ...
+
+From the "Call Stack" example, we can see that `deepdup` requires a `dupdepth`
+argument on the TOS. Since we wanted to duplicate the second item on the stack,
+we used `PUSH 2` immediately before calling `deepdup`.
+
+In addition to the call stack, the code comments also show you what to expect
+on the return stack, as well as any other information you might need in order
+to use the function.
+
+
+# Resource Reservations #
+
+
+## Entry Points ##
+
+The following labels are entry points to stdlib functions. Read the
+header comment for each function to learn the call and return stack.
+
+ 000xxx - reserved
+ 001xxx - core functions
+ 1000 ----- printf (stdio.pvvs)
+ 1001 ----- print number from stack (stdio.pvvs)
+ 1010 ----- stackrotate (stack.pvvs)
+ 1011 ----- stackrotatereverse (stack.pvvs)
+ 1100 ----- deepdup (stack.pvvs)
+ 010xxx - math functions
+ 10000 ----- random (math.pvvs)
+ 10001 ----- absolute value (math.pvvs)
+ 10010 ----- greatest common divisor (math.pvvs)
+ 10011 ----- fastrand (math.pvvs)
+ 011xxx - heap functions
+ 11000 ----- memset (heap.pvvs)
+ 11001 ----- memcpy (heap.pvvs)
+ 11010 ----- memrand (heap.pvvs)
+ 11011 ----- memcmp (heap.pvvs)
+ 11100 ----- memsrch (heap.pvvs)
+ 11101 ----- <empty>
+ 11110 ----- slurp (heap.pvvs)
+ 11111 ----- spew (heap.pvvs)
+ 100xxx - string functions
+ 100000 ----- strlen (string.pvvs)
+ 100001 ----- isdigit (string.pvvs)
+ 100010 ----- get user string (string.pvvs)
+ 101xxx - logic functions
+ 101000 ----- not (logic.pvvs)
+ 101001 ----- and (logic.pvvs)
+ 101010 ----- or (logic.pvvs)
+ 101011 ----- xor (logic.pvvs)
+ 101100 ----- rshift (logic.pvvs)
+ 101101 ----- lshift (logic.pvvs)
+ 110xxx - conversion functions
+ 110000 ----- atoi (convert.pvvs)
+ 111xxx - debug functions
+ 111000 ----- dump heap (debug.pvvs)
+ 111001 ----- dump stack (debug.pvvs)
+ 111010 ----- print sign (debug.pvvs)
+ 111011 ----- print magnitude (debug.pvvs)
+ 111100 ----- print string (debug.pvvs)
+ 111101 ----- print signed number (debug.pvvs)
+ 111110 ----- stdlib version (debug.pvvs)
+ 1xxxxxx - reserved for less common entry points
+ 1000000 ----- lowbitand (logic.pvvs)
+ 1000001 ----- <empty>
+ 1000010 ----- print sign of number (stdio.pvvs)
+ 1000011 ----- print magnitude of number (stdio.pvvs)
+ 1000100 ----- print string from stack (stdio.pvvs)
+ 1000101 ----- print string from heap (stdio.pvvs)
+
+
+## Labels ##