about summary refs log tree commit diff stats
path: root/html/subx
diff options
context:
space:
mode:
Diffstat (limited to 'html/subx')
-rw-r--r--html/subx/000organization.cc.html23
-rw-r--r--html/subx/001help.cc.html25
-rw-r--r--html/subx/002test.cc.html25
-rw-r--r--html/subx/003trace.cc.html25
-rw-r--r--html/subx/003trace.test.cc.html21
-rw-r--r--html/subx/010---vm.cc.html25
-rw-r--r--html/subx/011run.cc.html27
-rw-r--r--html/subx/012elf.cc.html25
-rw-r--r--html/subx/013direct_addressing.cc.html27
-rw-r--r--html/subx/014indirect_addressing.cc.html27
-rw-r--r--html/subx/015immediate_addressing.cc.html27
-rw-r--r--html/subx/016index_addressing.cc.html27
-rw-r--r--html/subx/017jump_disp8.cc.html27
-rw-r--r--html/subx/018jump_disp32.cc.html27
-rw-r--r--html/subx/019functions.cc.html27
-rw-r--r--html/subx/020syscalls.cc.html27
-rw-r--r--html/subx/021byte_addressing.cc.html25
-rw-r--r--html/subx/028translate.cc.html25
-rw-r--r--html/subx/029transforms.cc.html19
-rw-r--r--html/subx/030---operands.cc.html25
-rw-r--r--html/subx/031check_operands.cc.html27
-rw-r--r--html/subx/032check_operand_bounds.cc.html27
-rw-r--r--html/subx/034compute_segment_address.cc.html27
-rw-r--r--html/subx/035labels.cc.html27
-rw-r--r--html/subx/036global_variables.cc.html27
-rw-r--r--html/subx/038---literal_strings.cc.html25
-rw-r--r--html/subx/039debug.cc.html23
-rw-r--r--html/subx/040---tests.cc.html27
-rw-r--r--html/subx/050_write.subx.html1
-rw-r--r--html/subx/051test.subx.html1
-rw-r--r--html/subx/052kernel_string_equal.subx.html1
-rw-r--r--html/subx/053new_segment.subx.html1
-rw-r--r--html/subx/054string_equal.subx.html1
-rw-r--r--html/subx/055trace.subx.html1
-rw-r--r--html/subx/056write.subx.html1
-rw-r--r--html/subx/057stop.subx.html1
-rw-r--r--html/subx/058read.subx.html1
-rw-r--r--html/subx/059read-byte.subx.html1
-rw-r--r--html/subx/060write-stream.subx.html1
-rw-r--r--html/subx/apps/crenshaw2-1.subx.html1
-rw-r--r--html/subx/apps/crenshaw2-1b.subx.html1
-rw-r--r--html/subx/apps/factorial.subx.html5
-rw-r--r--html/subx/examples/ex1.subx.html1
-rw-r--r--html/subx/examples/ex10.subx.html1
-rw-r--r--html/subx/examples/ex11.subx.html1
-rw-r--r--html/subx/examples/ex12.subx.html1
-rw-r--r--html/subx/examples/ex2.subx.html1
-rw-r--r--html/subx/examples/ex3.subx.html1
-rw-r--r--html/subx/examples/ex4.subx.html1
-rw-r--r--html/subx/examples/ex5.subx.html1
-rw-r--r--html/subx/examples/ex6.subx.html1
-rw-r--r--html/subx/examples/ex7.subx.html1
-rw-r--r--html/subx/examples/ex8.subx.html1
-rw-r--r--html/subx/examples/ex9.subx.html1
54 files changed, 428 insertions, 318 deletions
diff --git a/html/subx/000organization.cc.html b/html/subx/000organization.cc.html
index 056519bd..f367ee9e 100644
--- a/html/subx/000organization.cc.html
+++ b/html/subx/000organization.cc.html
@@ -11,17 +11,19 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Identifier { color: #c0a020; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 -->
 </style>
 
@@ -55,6 +57,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/000organization.cc'>https://github.com/akkartik/mu/blob/master/subx/000organization.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: You guessed right: the '000' prefix means you should start reading here.</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//:</span>
diff --git a/html/subx/001help.cc.html b/html/subx/001help.cc.html
index 1a3fe7ed..aa899790 100644
--- a/html/subx/001help.cc.html
+++ b/html/subx/001help.cc.html
@@ -11,19 +11,21 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .CommentedCode { color: #6c6c6c; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -58,6 +60,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/001help.cc'>https://github.com/akkartik/mu/blob/master/subx/001help.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Everything this project/binary supports.</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: This should give you a sense for what to look forward to in later layers.</span>
diff --git a/html/subx/002test.cc.html b/html/subx/002test.cc.html
index 5ae00cdf..6927f559 100644
--- a/html/subx/002test.cc.html
+++ b/html/subx/002test.cc.html
@@ -11,19 +11,21 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .CommentedCode { color: #6c6c6c; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -58,6 +60,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/002test.cc'>https://github.com/akkartik/mu/blob/master/subx/002test.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: A simple test harness. To create new tests, define functions starting with</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: 'test_'. To run all tests so defined, run:</span>
diff --git a/html/subx/003trace.cc.html b/html/subx/003trace.cc.html
index 1abc6fe9..860b3575 100644
--- a/html/subx/003trace.cc.html
+++ b/html/subx/003trace.cc.html
@@ -11,18 +11,20 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -57,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/003trace.cc'>https://github.com/akkartik/mu/blob/master/subx/003trace.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: The goal of layers is to make programs more easy to understand and more</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: malleable, easy to rewrite in radical ways without accidentally breaking</span>
diff --git a/html/subx/003trace.test.cc.html b/html/subx/003trace.test.cc.html
index 243c5075..caaace9f 100644
--- a/html/subx/003trace.test.cc.html
+++ b/html/subx/003trace.test.cc.html
@@ -11,16 +11,18 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 -->
 </style>
 
@@ -54,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/003trace.test.cc'>https://github.com/akkartik/mu/blob/master/subx/003trace.test.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Normal">void</span> <a href='003trace.test.cc.html#L1'>test_trace_check_compares</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
 <span id="L2" class="LineNr">  2 </span>  <a href='003trace.cc.html#L203'>trace</a><span class="Delimiter">(</span><span class="Constant">&quot;test layer&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;foo&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
diff --git a/html/subx/010---vm.cc.html b/html/subx/010---vm.cc.html
index 6ae23a23..c95cb76b 100644
--- a/html/subx/010---vm.cc.html
+++ b/html/subx/010---vm.cc.html
@@ -11,20 +11,22 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
 .CommentedCode { color: #6c6c6c; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .SalientComment { color: #00ffff; }
 -->
 </style>
@@ -59,6 +61,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/010---vm.cc'>https://github.com/akkartik/mu/blob/master/subx/010---vm.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Core data structures for simulating the SubX VM (subset of an x86 processor)</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//:</span>
diff --git a/html/subx/011run.cc.html b/html/subx/011run.cc.html
index c06a3b32..99ff7ec9 100644
--- a/html/subx/011run.cc.html
+++ b/html/subx/011run.cc.html
@@ -11,22 +11,24 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
 .traceContains { color: #008000; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
 .SalientComment { color: #00ffff; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
-.PreProc { color: #800080; }
+.Comment { color: #8080ff; }
+.PreProc { color:#800080; }
 -->
 </style>
 
@@ -60,6 +62,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/011run.cc'>https://github.com/akkartik/mu/blob/master/subx/011run.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Running SubX programs on the VM.</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/012elf.cc.html b/html/subx/012elf.cc.html
index 06a6ed4c..88b0ffac 100644
--- a/html/subx/012elf.cc.html
+++ b/html/subx/012elf.cc.html
@@ -11,18 +11,20 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -57,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/012elf.cc'>https://github.com/akkartik/mu/blob/master/subx/012elf.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Generating ELF binaries for SubX programs.</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: This will allow us to run them natively on a Linux kernel.</span>
diff --git a/html/subx/013direct_addressing.cc.html b/html/subx/013direct_addressing.cc.html
index 504d7809..7fc2052c 100644
--- a/html/subx/013direct_addressing.cc.html
+++ b/html/subx/013direct_addressing.cc.html
@@ -11,24 +11,26 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
 .traceContains { color: #008000; }
 .Error { color: #ffffff; background-color: #ff6060; padding-bottom: 1px; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
 .SalientComment { color: #00ffff; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .CommentedCode { color: #6c6c6c; }
-.PreProc { color: #800080; }
+.PreProc { color:#800080; }
 -->
 </style>
 
@@ -62,6 +64,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/013direct_addressing.cc'>https://github.com/akkartik/mu/blob/master/subx/013direct_addressing.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: operating directly on a register</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/014indirect_addressing.cc.html b/html/subx/014indirect_addressing.cc.html
index 4b0eb7fc..433dce9e 100644
--- a/html/subx/014indirect_addressing.cc.html
+++ b/html/subx/014indirect_addressing.cc.html
@@ -11,23 +11,25 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .Error { color: #ffffff; background-color: #ff6060; padding-bottom: 1px; }
 .traceContains { color: #008000; }
-.LineNr { color: #444444; }
+.LineNr { color:#444444; }
 .traceAbsent { color: #c00000; }
-.Constant { color: #00a0a0; }
+.Constant { color:#00a0a0; }
 .SalientComment { color: #00ffff; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
-.PreProc { color: #800080; }
+.Comment { color: #8080ff; }
+.PreProc { color:#800080; }
 -->
 </style>
 
@@ -61,6 +63,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/014indirect_addressing.cc'>https://github.com/akkartik/mu/blob/master/subx/014indirect_addressing.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: operating on memory at the address provided by some register</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: we'll now start providing data in a separate segment</span>
diff --git a/html/subx/015immediate_addressing.cc.html b/html/subx/015immediate_addressing.cc.html
index d2d6a059..5fd4d6c7 100644
--- a/html/subx/015immediate_addressing.cc.html
+++ b/html/subx/015immediate_addressing.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
-.PreProc { color: #800080; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
+.PreProc { color:#800080; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
 .SalientComment { color: #00ffff; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .CommentedCode { color: #6c6c6c; }
 .traceContains { color: #008000; }
 -->
@@ -61,6 +63,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/015immediate_addressing.cc'>https://github.com/akkartik/mu/blob/master/subx/015immediate_addressing.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: instructions that (immediately) contain an argument to act with</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/016index_addressing.cc.html b/html/subx/016index_addressing.cc.html
index 74d09f0d..b4707946 100644
--- a/html/subx/016index_addressing.cc.html
+++ b/html/subx/016index_addressing.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .Error { color: #ffffff; background-color: #ff6060; padding-bottom: 1px; }
 .traceContains { color: #008000; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
-.PreProc { color: #800080; }
+.Comment { color: #8080ff; }
+.PreProc { color:#800080; }
 -->
 </style>
 
@@ -59,6 +61,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/016index_addressing.cc'>https://github.com/akkartik/mu/blob/master/subx/016index_addressing.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: operating on memory at the address provided by some register plus optional scale and offset</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/017jump_disp8.cc.html b/html/subx/017jump_disp8.cc.html
index 358100f2..39c5a3e8 100644
--- a/html/subx/017jump_disp8.cc.html
+++ b/html/subx/017jump_disp8.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .traceAbsent { color: #c00000; }
 .traceContains { color: #008000; }
-.PreProc { color: #800080; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.PreProc { color:#800080; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .SalientComment { color: #00ffff; }
 -->
 </style>
@@ -60,6 +62,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/017jump_disp8.cc'>https://github.com/akkartik/mu/blob/master/subx/017jump_disp8.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: jump to 8-bit offset</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/018jump_disp32.cc.html b/html/subx/018jump_disp32.cc.html
index 3363fe0a..cb829dc6 100644
--- a/html/subx/018jump_disp32.cc.html
+++ b/html/subx/018jump_disp32.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .traceAbsent { color: #c00000; }
 .traceContains { color: #008000; }
-.PreProc { color: #800080; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.PreProc { color:#800080; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .SalientComment { color: #00ffff; }
 -->
 </style>
@@ -60,6 +62,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/018jump_disp32.cc'>https://github.com/akkartik/mu/blob/master/subx/018jump_disp32.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: jump to 32-bit offset</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/019functions.cc.html b/html/subx/019functions.cc.html
index 2cab5df7..9295ee02 100644
--- a/html/subx/019functions.cc.html
+++ b/html/subx/019functions.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .CommentedCode { color: #6c6c6c; }
 .traceContains { color: #008000; }
-.PreProc { color: #800080; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.PreProc { color:#800080; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .SalientComment { color: #00ffff; }
 -->
 </style>
@@ -60,6 +62,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/019functions.cc'>https://github.com/akkartik/mu/blob/master/subx/019functions.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="SalientComment">//:: call</span>
 <span id="L2" class="LineNr"> 2 </span>
diff --git a/html/subx/020syscalls.cc.html b/html/subx/020syscalls.cc.html
index efbd687c..32b7580a 100644
--- a/html/subx/020syscalls.cc.html
+++ b/html/subx/020syscalls.cc.html
@@ -11,19 +11,21 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.PreProc { color: #800080; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.PreProc { color:#800080; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -58,6 +60,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/020syscalls.cc'>https://github.com/akkartik/mu/blob/master/subx/020syscalls.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
 <span id="L2" class="LineNr">  2 </span><a href='001help.cc.html#L253'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L378'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;cd&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;software interrupt (int)&quot;</span><span class="Delimiter">);</span>
diff --git a/html/subx/021byte_addressing.cc.html b/html/subx/021byte_addressing.cc.html
index f9f9e055..e339fd4f 100644
--- a/html/subx/021byte_addressing.cc.html
+++ b/html/subx/021byte_addressing.cc.html
@@ -11,19 +11,21 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .traceContains { color: #008000; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -58,6 +60,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/021byte_addressing.cc'>https://github.com/akkartik/mu/blob/master/subx/021byte_addressing.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: SubX mostly deals with instructions operating on 32-bit operands, but we</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: still need to deal with raw bytes for strings and so on.</span>
diff --git a/html/subx/028translate.cc.html b/html/subx/028translate.cc.html
index ccd31900..67a910de 100644
--- a/html/subx/028translate.cc.html
+++ b/html/subx/028translate.cc.html
@@ -11,19 +11,21 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Special { color: #c00000; }
-.Delimiter { color: #800080; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Special { color:#c00000; }
+.Delimiter { color:#800080; }
 .SalientComment { color: #00ffff; }
-.Identifier { color: #c0a020; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -58,6 +60,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/028translate.cc'>https://github.com/akkartik/mu/blob/master/subx/028translate.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: The bedrock level 1 of abstraction is now done, and we're going to start</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: building levels above it that make programming in x86 machine code a</span>
diff --git a/html/subx/029transforms.cc.html b/html/subx/029transforms.cc.html
index 0a9ed032..7a72cec6 100644
--- a/html/subx/029transforms.cc.html
+++ b/html/subx/029transforms.cc.html
@@ -11,14 +11,16 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.LineNr { color: #444444; }
-.Delimiter { color: #800080; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.LineNr { color:#444444; }
+.Delimiter { color:#800080; }
+.Comment { color: #8080ff; }
 -->
 </style>
 
@@ -52,6 +54,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/029transforms.cc'>https://github.com/akkartik/mu/blob/master/subx/029transforms.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="Comment">//: Ordering transforms is a well-known hard problem when building compilers.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="Comment">//: In our case we also have the additional notion of layers. The ordering of</span>
diff --git a/html/subx/030---operands.cc.html b/html/subx/030---operands.cc.html
index cf670140..afe9e115 100644
--- a/html/subx/030---operands.cc.html
+++ b/html/subx/030---operands.cc.html
@@ -11,19 +11,21 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.Identifier { color: #c0a020; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.Identifier { color:#c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
 .SalientComment { color: #00ffff; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .traceContains { color: #008000; }
 -->
 </style>
@@ -58,6 +60,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/030---operands.cc'>https://github.com/akkartik/mu/blob/master/subx/030---operands.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Beginning of &quot;level 2&quot;: tagging bytes with metadata around what field of</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: an x86 instruction they're for.</span>
diff --git a/html/subx/031check_operands.cc.html b/html/subx/031check_operands.cc.html
index 8d06d539..e6302677 100644
--- a/html/subx/031check_operands.cc.html
+++ b/html/subx/031check_operands.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .CommentedCode { color: #6c6c6c; }
-.PreProc { color: #800080; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
+.PreProc { color:#800080; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
 .SalientComment { color: #00ffff; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .traceContains { color: #008000; }
 -->
 </style>
@@ -60,6 +62,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/031check_operands.cc'>https://github.com/akkartik/mu/blob/master/subx/031check_operands.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Since we're tagging operands with their types, let's start checking these</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: operand types for each instruction.</span>
diff --git a/html/subx/032check_operand_bounds.cc.html b/html/subx/032check_operand_bounds.cc.html
index e21d0265..ca3d7ed9 100644
--- a/html/subx/032check_operand_bounds.cc.html
+++ b/html/subx/032check_operand_bounds.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.Comment { color: #8080ff; }
 .traceContains { color: #008000; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
 .cSpecial { color: #008000; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.PreProc { color: #800080; }
+.PreProc { color:#800080; }
 .SalientComment { color: #00ffff; }
 -->
 </style>
@@ -60,6 +62,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/032check_operand_bounds.cc'>https://github.com/akkartik/mu/blob/master/subx/032check_operand_bounds.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="SalientComment">//:: Check that the different operands of an instruction aren't too large for their bitfields.</span>
 <span id="L2" class="LineNr"> 2 </span>
diff --git a/html/subx/034compute_segment_address.cc.html b/html/subx/034compute_segment_address.cc.html
index 3a46ee38..53c3ddaa 100644
--- a/html/subx/034compute_segment_address.cc.html
+++ b/html/subx/034compute_segment_address.cc.html
@@ -11,20 +11,22 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .traceContains { color: #008000; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
-.PreProc { color: #800080; }
+.Comment { color: #8080ff; }
+.PreProc { color:#800080; }
 -->
 </style>
 
@@ -58,6 +60,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/034compute_segment_address.cc'>https://github.com/akkartik/mu/blob/master/subx/034compute_segment_address.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Start allowing us to not specify precise addresses for the start of each</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: segment.</span>
diff --git a/html/subx/035labels.cc.html b/html/subx/035labels.cc.html
index 2e388d80..6c5f4220 100644
--- a/html/subx/035labels.cc.html
+++ b/html/subx/035labels.cc.html
@@ -11,20 +11,22 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
-.PreProc { color: #800080; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.PreProc { color:#800080; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .traceContains { color: #008000; }
 -->
 </style>
@@ -59,6 +61,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/035labels.cc'>https://github.com/akkartik/mu/blob/master/subx/035labels.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Labels are defined by ending names with a ':'. This layer will compute</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//: displacements for labels, and compute the offset for instructions using them.</span>
diff --git a/html/subx/036global_variables.cc.html b/html/subx/036global_variables.cc.html
index 24e8a9ee..d4b2a869 100644
--- a/html/subx/036global_variables.cc.html
+++ b/html/subx/036global_variables.cc.html
@@ -11,23 +11,25 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
 .traceContains { color: #008000; }
 .CommentedCode { color: #6c6c6c; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .SalientComment { color: #00ffff; }
-.PreProc { color: #800080; }
+.PreProc { color:#800080; }
 -->
 </style>
 
@@ -61,6 +63,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/036global_variables.cc'>https://github.com/akkartik/mu/blob/master/subx/036global_variables.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Global variables.</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//:</span>
diff --git a/html/subx/038---literal_strings.cc.html b/html/subx/038---literal_strings.cc.html
index 5beff626..4c9a0391 100644
--- a/html/subx/038---literal_strings.cc.html
+++ b/html/subx/038---literal_strings.cc.html
@@ -11,20 +11,22 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
-.LineNr { color: #444444; }
+.LineNr { color:#444444; }
 .traceAbsent { color: #c00000; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 .traceContains { color: #008000; }
 -->
 </style>
@@ -59,6 +61,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/038---literal_strings.cc'>https://github.com/akkartik/mu/blob/master/subx/038---literal_strings.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="Comment">//: Allow instructions to mention literals directly.</span>
 <span id="L2" class="LineNr">  2 </span><span class="Comment">//:</span>
diff --git a/html/subx/039debug.cc.html b/html/subx/039debug.cc.html
index c52eece9..7e66bad2 100644
--- a/html/subx/039debug.cc.html
+++ b/html/subx/039debug.cc.html
@@ -11,17 +11,19 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
+.Comment { color: #8080ff; }
 -->
 </style>
 
@@ -55,6 +57,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/039debug.cc'>https://github.com/akkartik/mu/blob/master/subx/039debug.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="Comment">//: Some helpers for debugging.</span>
 <span id="L2" class="LineNr"> 2 </span>
diff --git a/html/subx/040---tests.cc.html b/html/subx/040---tests.cc.html
index 14ae7ce0..f00d27e4 100644
--- a/html/subx/040---tests.cc.html
+++ b/html/subx/040---tests.cc.html
@@ -11,21 +11,23 @@
 <style type="text/css">
 <!--
 pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
-a { color:#eeeeee; text-decoration: none; }
-a:hover { text-decoration: underline; }
-* { font-size: 12pt; font-size: 1em; }
+body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+.subxS2Comment a { color:inherit; }
+.subxS1Comment a { color:inherit; }
+.subxComment a { color:inherit; }
+.subxH2Comment a { color:inherit; }
+.subxH1Comment a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
 .cSpecial { color: #008000; }
 .traceContains { color: #008000; }
-.LineNr { color: #444444; }
-.Constant { color: #00a0a0; }
-.Delimiter { color: #800080; }
-.Special { color: #c00000; }
-.Identifier { color: #c0a020; }
+.LineNr { color:#444444; }
+.Constant { color:#00a0a0; }
+.Delimiter { color:#800080; }
+.Special { color:#c00000; }
+.Identifier { color:#c0a020; }
 .Normal { color: #aaaaaa; background-color: #080808; padding-bottom: 1px; }
-.Comment { color: #9090ff; }
-.Comment a { color:#0000ee; text-decoration:underline; }
-.PreProc { color: #800080; }
+.Comment { color: #8080ff; }
+.PreProc { color:#800080; }
 -->
 </style>
 
@@ -59,6 +61,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/040---tests.cc'>https://github.com/akkartik/mu/blob/master/subx/040---tests.cc</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="Comment">//: Automatically aggregate functions starting with 'test-' into a test suite</span>
 <span id="L2" class="LineNr"> 2 </span><span class="Comment">//: called 'run-tests'. Running this function will run all tests.</span>
diff --git a/html/subx/050_write.subx.html b/html/subx/050_write.subx.html
index 369c7b33..0dfa8594 100644
--- a/html/subx/050_write.subx.html
+++ b/html/subx/050_write.subx.html
@@ -56,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/050_write.subx'>https://github.com/akkartik/mu/blob/master/subx/050_write.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># _write: write to a file descriptor</span>
 <span id="L2" class="LineNr"> 2 </span>
diff --git a/html/subx/051test.subx.html b/html/subx/051test.subx.html
index cf87bbb0..89ebfd20 100644
--- a/html/subx/051test.subx.html
+++ b/html/subx/051test.subx.html
@@ -58,6 +58,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/051test.subx'>https://github.com/akkartik/mu/blob/master/subx/051test.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Rudimentary test harness</span>
 <span id="L2" class="LineNr"> 2 </span>
diff --git a/html/subx/052kernel_string_equal.subx.html b/html/subx/052kernel_string_equal.subx.html
index ae0840b8..e35b1aa3 100644
--- a/html/subx/052kernel_string_equal.subx.html
+++ b/html/subx/052kernel_string_equal.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/052kernel_string_equal.subx'>https://github.com/akkartik/mu/blob/master/subx/052kernel_string_equal.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># Checking null-terminated ascii strings.</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
diff --git a/html/subx/053new_segment.subx.html b/html/subx/053new_segment.subx.html
index 0290b2f9..cc8a1748 100644
--- a/html/subx/053new_segment.subx.html
+++ b/html/subx/053new_segment.subx.html
@@ -57,6 +57,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/053new_segment.subx'>https://github.com/akkartik/mu/blob/master/subx/053new_segment.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Create a new segment (for data) using mmap().</span>
 <span id="L2" class="LineNr"> 2 </span>
diff --git a/html/subx/054string_equal.subx.html b/html/subx/054string_equal.subx.html
index 657cce79..5b6504d2 100644
--- a/html/subx/054string_equal.subx.html
+++ b/html/subx/054string_equal.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/054string_equal.subx'>https://github.com/akkartik/mu/blob/master/subx/054string_equal.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># Comparing 'regular' length-prefixed strings.</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/055trace.subx.html b/html/subx/055trace.subx.html
index b46b0a11..bd3ec9c0 100644
--- a/html/subx/055trace.subx.html
+++ b/html/subx/055trace.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/055trace.subx'>https://github.com/akkartik/mu/blob/master/subx/055trace.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># primitives for emitting traces to a trace stream, and for tests to check the trace stream</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
diff --git a/html/subx/056write.subx.html b/html/subx/056write.subx.html
index e92b59bb..d21a4bfb 100644
--- a/html/subx/056write.subx.html
+++ b/html/subx/056write.subx.html
@@ -58,6 +58,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/056write.subx'>https://github.com/akkartik/mu/blob/master/subx/056write.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># write: like _write, but also support in-memory streams in addition to file</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment"># descriptors.</span>
diff --git a/html/subx/057stop.subx.html b/html/subx/057stop.subx.html
index 1f859d12..bd4dec2c 100644
--- a/html/subx/057stop.subx.html
+++ b/html/subx/057stop.subx.html
@@ -58,6 +58,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/057stop.subx'>https://github.com/akkartik/mu/blob/master/subx/057stop.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># stop: dependency-injected wrapper around the exit() syscall</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
diff --git a/html/subx/058read.subx.html b/html/subx/058read.subx.html
index b464068c..9f17a3ed 100644
--- a/html/subx/058read.subx.html
+++ b/html/subx/058read.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/058read.subx'>https://github.com/akkartik/mu/blob/master/subx/058read.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># read: analogously to write, support reading from in-memory streams in</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment"># addition to file descriptors.</span>
diff --git a/html/subx/059read-byte.subx.html b/html/subx/059read-byte.subx.html
index 6573c8c5..eb760dd4 100644
--- a/html/subx/059read-byte.subx.html
+++ b/html/subx/059read-byte.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/059read-byte.subx'>https://github.com/akkartik/mu/blob/master/subx/059read-byte.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># read-byte: one higher-level abstraction atop 'read'.</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
diff --git a/html/subx/060write-stream.subx.html b/html/subx/060write-stream.subx.html
index ba6ed457..d8425da4 100644
--- a/html/subx/060write-stream.subx.html
+++ b/html/subx/060write-stream.subx.html
@@ -58,6 +58,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/060write-stream.subx'>https://github.com/akkartik/mu/blob/master/subx/060write-stream.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># write-stream: like write, but write streams rather than strings</span>
 <span id="L2" class="LineNr">  2 </span>
diff --git a/html/subx/apps/crenshaw2-1.subx.html b/html/subx/apps/crenshaw2-1.subx.html
index 348defea..b4e300ad 100644
--- a/html/subx/apps/crenshaw2-1.subx.html
+++ b/html/subx/apps/crenshaw2-1.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/apps/crenshaw2-1.subx'>https://github.com/akkartik/mu/blob/master/subx/apps/crenshaw2-1.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># Port of <a href="https://github.com/akkartik/crenshaw/blob/master/tutor2.1.pas">https://github.com/akkartik/crenshaw/blob/master/tutor2.1.pas</a></span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment"># which corresponds to the section &quot;single digits&quot; in <a href="https://compilers.iecc.com/crenshaw/tutor2.txt">https://compilers.iecc.com/crenshaw/tutor2.txt</a></span>
diff --git a/html/subx/apps/crenshaw2-1b.subx.html b/html/subx/apps/crenshaw2-1b.subx.html
index d6e00742..f38703f0 100644
--- a/html/subx/apps/crenshaw2-1b.subx.html
+++ b/html/subx/apps/crenshaw2-1b.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/apps/crenshaw2-1b.subx'>https://github.com/akkartik/mu/blob/master/subx/apps/crenshaw2-1b.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># Port of <a href="https://github.com/akkartik/crenshaw/blob/master/tutor2.1.pas">https://github.com/akkartik/crenshaw/blob/master/tutor2.1.pas</a></span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment"># which corresponds to the section &quot;single digits&quot; in <a href="https://compilers.iecc.com/crenshaw/tutor2.txt">https://compilers.iecc.com/crenshaw/tutor2.txt</a></span>
diff --git a/html/subx/apps/factorial.subx.html b/html/subx/apps/factorial.subx.html
index 61c6854a..7e43deaf 100644
--- a/html/subx/apps/factorial.subx.html
+++ b/html/subx/apps/factorial.subx.html
@@ -59,12 +59,13 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/apps/factorial.subx'>https://github.com/akkartik/mu/blob/master/subx/apps/factorial.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment">## compute the factorial of 5, and return the result in the exit code</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr">  3 </span><span class="subxComment"># To run (from the subx directory):</span>
-<span id="L4" class="LineNr">  4 </span><span class="subxComment">#   $ subx translate apps/factorial.subx -o apps/factorial</span>
-<span id="L5" class="LineNr">  5 </span><span class="subxComment">#   $ subx run apps/factorial</span>
+<span id="L4" class="LineNr">  4 </span><span class="subxComment">#   $ ./subx translate apps/factorial.subx -o apps/factorial</span>
+<span id="L5" class="LineNr">  5 </span><span class="subxComment">#   $ ./subx run apps/factorial</span>
 <span id="L6" class="LineNr">  6 </span><span class="subxComment"># Expected result:</span>
 <span id="L7" class="LineNr">  7 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L8" class="LineNr">  8 </span><span class="subxComment">#   120</span>
diff --git a/html/subx/examples/ex1.subx.html b/html/subx/examples/ex1.subx.html
index 2c8d9fee..b72d5054 100644
--- a/html/subx/examples/ex1.subx.html
+++ b/html/subx/examples/ex1.subx.html
@@ -54,6 +54,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex1.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex1.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># First program: same as <a href="https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html">https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html</a></span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment"># Just return 42.</span>
diff --git a/html/subx/examples/ex10.subx.html b/html/subx/examples/ex10.subx.html
index 132958ec..f0f582f2 100644
--- a/html/subx/examples/ex10.subx.html
+++ b/html/subx/examples/ex10.subx.html
@@ -56,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex10.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex10.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># String comparison: return 1 iff the two args passed in at the commandline are equal.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex11.subx.html b/html/subx/examples/ex11.subx.html
index 56377403..9749967e 100644
--- a/html/subx/examples/ex11.subx.html
+++ b/html/subx/examples/ex11.subx.html
@@ -59,6 +59,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex11.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex11.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># Null-terminated vs length-prefixed ascii strings.</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex12.subx.html b/html/subx/examples/ex12.subx.html
index 35235c57..e2dfc4e0 100644
--- a/html/subx/examples/ex12.subx.html
+++ b/html/subx/examples/ex12.subx.html
@@ -58,6 +58,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex12.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex12.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Example showing mmap syscall.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment"># Create a new segment using mmap, save the address, write to it.</span>
diff --git a/html/subx/examples/ex2.subx.html b/html/subx/examples/ex2.subx.html
index 42a590f1..04e1e9c4 100644
--- a/html/subx/examples/ex2.subx.html
+++ b/html/subx/examples/ex2.subx.html
@@ -54,6 +54,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex2.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex2.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Add 1 and 1, and return the result in the exit code.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex3.subx.html b/html/subx/examples/ex3.subx.html
index fb098a31..533bea07 100644
--- a/html/subx/examples/ex3.subx.html
+++ b/html/subx/examples/ex3.subx.html
@@ -56,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex3.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex3.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Add the first 10 numbers, and return the result in the exit code.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex4.subx.html b/html/subx/examples/ex4.subx.html
index dab870b9..db75131c 100644
--- a/html/subx/examples/ex4.subx.html
+++ b/html/subx/examples/ex4.subx.html
@@ -56,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex4.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex4.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Read a character from stdin, save it to a global, write it to stdout.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex5.subx.html b/html/subx/examples/ex5.subx.html
index 917a55d6..5364e97f 100644
--- a/html/subx/examples/ex5.subx.html
+++ b/html/subx/examples/ex5.subx.html
@@ -56,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex5.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex5.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Read a character from stdin, save it to a local on the stack, write it to stdout.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex6.subx.html b/html/subx/examples/ex6.subx.html
index 092685e2..fb8b5bd7 100644
--- a/html/subx/examples/ex6.subx.html
+++ b/html/subx/examples/ex6.subx.html
@@ -57,6 +57,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex6.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex6.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Print out a (global variable) string to stdout.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex7.subx.html b/html/subx/examples/ex7.subx.html
index e20ebc88..f22f852f 100644
--- a/html/subx/examples/ex7.subx.html
+++ b/html/subx/examples/ex7.subx.html
@@ -57,6 +57,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex7.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex7.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr">  1 </span><span class="subxComment"># Example showing file syscalls.</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex8.subx.html b/html/subx/examples/ex8.subx.html
index ed29f0b4..50f28a7c 100644
--- a/html/subx/examples/ex8.subx.html
+++ b/html/subx/examples/ex8.subx.html
@@ -56,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex8.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex8.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Example reading commandline arguments: compute length of first arg.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
diff --git a/html/subx/examples/ex9.subx.html b/html/subx/examples/ex9.subx.html
index 578c7cd7..23e35839 100644
--- a/html/subx/examples/ex9.subx.html
+++ b/html/subx/examples/ex9.subx.html
@@ -56,6 +56,7 @@ if ('onhashchange' in window) {
 </script>
 </head>
 <body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/subx/examples/ex9.subx'>https://github.com/akkartik/mu/blob/master/subx/examples/ex9.subx</a>
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Example showing arg order on the stack.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>