about summary refs log tree commit diff stats
path: root/html/subx/examples
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2018-12-30 00:02:42 -0800
committerKartik Agaram <vc@akkartik.com>2018-12-30 00:02:42 -0800
commit08a0eed699b8ea07d37163aba610c8e04feee003 (patch)
treeaab05fd9b23ca4f5cfc6492ade82896f3ba5e4bb /html/subx/examples
parentac07e589b3e912c704c2011d543f18b16712ff15 (diff)
downloadmu-08a0eed699b8ea07d37163aba610c8e04feee003.tar.gz
4891
Couple more tweaks to html rendering:
a) SubX definitions no longer link redundantly to themselves. This long-standing
issue turns out to be tractable to solve for SubX files since the syntax
is so simple.
b) Fix links to SubX definitions in other directories. I forgot that I
have to always generate tags from the directory of the file being linkified.
c) Fix link colors. Before we lost all syntax highlighting for functions
and Globals. Now they maintain their colors, just add an underline.
Diffstat (limited to 'html/subx/examples')
-rw-r--r--html/subx/examples/ex1.subx.html1
-rw-r--r--html/subx/examples/ex10.subx.html5
-rw-r--r--html/subx/examples/ex11.subx.html77
-rw-r--r--html/subx/examples/ex12.subx.html5
-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.html7
-rw-r--r--html/subx/examples/ex5.subx.html1
-rw-r--r--html/subx/examples/ex6.subx.html9
-rw-r--r--html/subx/examples/ex7.subx.html35
-rw-r--r--html/subx/examples/ex8.subx.html5
-rw-r--r--html/subx/examples/ex9.subx.html5
12 files changed, 82 insertions, 70 deletions
diff --git a/html/subx/examples/ex1.subx.html b/html/subx/examples/ex1.subx.html
index a1707447..4a3c685b 100644
--- a/html/subx/examples/ex1.subx.html
+++ b/html/subx/examples/ex1.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
diff --git a/html/subx/examples/ex10.subx.html b/html/subx/examples/ex10.subx.html
index cdca2942..3b6ab07e 100644
--- a/html/subx/examples/ex10.subx.html
+++ b/html/subx/examples/ex10.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
@@ -83,7 +84,7 @@ if ('onhashchange' in window) {
 <span id="L26" class="LineNr">26 </span>    <span class="subxS2Comment"># . . push argv[1]</span>
 <span id="L27" class="LineNr">27 </span>    ff          6/subop/push        1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+8)</span>
 <span id="L28" class="LineNr">28 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L29" class="LineNr">29 </span>    e8/call argv-equal/disp32
+<span id="L29" class="LineNr">29 </span>    e8/call <a href='ex10.subx.html#L37'>argv-equal</a>/disp32
 <span id="L30" class="LineNr">30 </span>    <span class="subxComment"># syscall(exit, EAX)</span>
 <span id="L31" class="LineNr">31 </span>    89/copy                         3/mod/direct    3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EAX to EBX</span>
 <span id="L32" class="LineNr">32 </span>    b8/copy-to-EAX  1/imm32/exit
@@ -91,7 +92,7 @@ if ('onhashchange' in window) {
 <span id="L34" class="LineNr">34 </span>
 <span id="L35" class="LineNr">35 </span><span class="subxComment"># compare two null-terminated ascii strings</span>
 <span id="L36" class="LineNr">36 </span><span class="subxComment"># reason for the name: the only place we should have null-terminated ascii strings is from commandline args</span>
-<span id="L37" class="LineNr">37 </span><span class="subxFunction">argv-equal</span>:  <span class="subxComment"># (s1, s2) : null-terminated ascii strings -&gt; EAX : boolean</span>
+<span id="L37" class="LineNr">37 </span><span class="subxFunction"><a href='ex10.subx.html#L37'>argv-equal</a></span>:  <span class="subxComment"># (s1, s2) : null-terminated ascii strings -&gt; EAX : boolean</span>
 <span id="L38" class="LineNr">38 </span>    <span class="subxComment"># initialize s1 (ECX) and s2 (EDX)</span>
 <span id="L39" class="LineNr">39 </span>    8b/copy                         1/mod/*+disp8   4/rm32/sib    4/base/ESP  4/index/none <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ESP+4) to ECX</span>
 <span id="L40" class="LineNr">40 </span>    8b/copy                         1/mod/*+disp8   4/rm32/sib    4/base/ESP  4/index/none <span class="Normal"> . </span>          2/r32/EDX   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ESP+8) to EDX</span>
diff --git a/html/subx/examples/ex11.subx.html b/html/subx/examples/ex11.subx.html
index 3173e33d..5b7807aa 100644
--- a/html/subx/examples/ex11.subx.html
+++ b/html/subx/examples/ex11.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .Constant { color: #008787; }
@@ -88,7 +89,7 @@ if ('onhashchange' in window) {
 <span id="L28" class="LineNr"> 28 </span>
 <span id="L29" class="LineNr"> 29 </span><span class="subxComment"># compare a null-terminated ascii string with a more idiomatic length-prefixed byte array</span>
 <span id="L30" class="LineNr"> 30 </span><span class="subxComment"># reason for the name: the only place we should have null-terminated ascii strings is from commandline args</span>
-<span id="L31" class="LineNr"> 31 </span><span class="subxFunction"><a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a></span>:  <span class="subxComment"># s : null-terminated ascii string, benchmark : length-prefixed ascii string -&gt; EAX : boolean</span>
+<span id="L31" class="LineNr"> 31 </span><span class="subxFunction"><a href='ex11.subx.html#L31'>kernel-string-equal</a></span>:  <span class="subxComment"># s : null-terminated ascii string, benchmark : length-prefixed ascii string -&gt; EAX : boolean</span>
 <span id="L32" class="LineNr"> 32 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L33" class="LineNr"> 33 </span>    55/push-EBP
 <span id="L34" class="LineNr"> 34 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
@@ -170,13 +171,13 @@ if ('onhashchange' in window) {
 <span id="L110" class="LineNr">110 </span>
 <span id="L111" class="LineNr">111 </span><span class="subxH1Comment"># - tests</span>
 <span id="L112" class="LineNr">112 </span>
-<span id="L113" class="LineNr">113 </span><span class="subxTest"><a href='052kernel_string_equal.subx.html#L113'>test-compare-null-kernel-string-with-empty-array</a></span>:
+<span id="L113" class="LineNr">113 </span><span class="subxTest"><a href='ex11.subx.html#L113'>test-compare-null-kernel-string-with-empty-array</a></span>:
 <span id="L114" class="LineNr">114 </span>    <span class="subxComment"># EAX = kernel-string-equal(Null-kernel-string, &quot;&quot;)</span>
 <span id="L115" class="LineNr">115 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L116" class="LineNr">116 </span>    68/push  <span class="Constant">&quot;&quot;</span>/imm32
-<span id="L117" class="LineNr">117 </span>    68/push  <span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L255'>Null-kernel-string</a></span>/imm32
+<span id="L117" class="LineNr">117 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L345'>Null-kernel-string</a></span>/imm32
 <span id="L118" class="LineNr">118 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L119" class="LineNr">119 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L119" class="LineNr">119 </span>    e8/call  <a href='ex11.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L120" class="LineNr">120 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L121" class="LineNr">121 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L122" class="LineNr">122 </span>    <span class="subxComment"># check-ints-equal(EAX, 1, msg)</span>
@@ -185,18 +186,18 @@ if ('onhashchange' in window) {
 <span id="L125" class="LineNr">125 </span>    68/push  1/imm32/true
 <span id="L126" class="LineNr">126 </span>    50/push-EAX
 <span id="L127" class="LineNr">127 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L128" class="LineNr">128 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L128" class="LineNr">128 </span>    e8/call  <a href='ex11.subx.html#L256'>check-ints-equal</a>/disp32
 <span id="L129" class="LineNr">129 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L130" class="LineNr">130 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
 <span id="L131" class="LineNr">131 </span>    c3/return
 <span id="L132" class="LineNr">132 </span>
-<span id="L133" class="LineNr">133 </span><span class="subxTest"><a href='052kernel_string_equal.subx.html#L133'>test-compare-null-kernel-string-with-non-empty-array</a></span>:
+<span id="L133" class="LineNr">133 </span><span class="subxTest"><a href='ex11.subx.html#L133'>test-compare-null-kernel-string-with-non-empty-array</a></span>:
 <span id="L134" class="LineNr">134 </span>    <span class="subxComment"># EAX = kernel-string-equal(Null-kernel-string, &quot;Abc&quot;)</span>
 <span id="L135" class="LineNr">135 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L136" class="LineNr">136 </span>    68/push  <span class="Constant">&quot;Abc&quot;</span>/imm32
-<span id="L137" class="LineNr">137 </span>    68/push  <span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L255'>Null-kernel-string</a></span>/imm32
+<span id="L137" class="LineNr">137 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L345'>Null-kernel-string</a></span>/imm32
 <span id="L138" class="LineNr">138 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L139" class="LineNr">139 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L139" class="LineNr">139 </span>    e8/call  <a href='ex11.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L140" class="LineNr">140 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L141" class="LineNr">141 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L142" class="LineNr">142 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -205,18 +206,18 @@ if ('onhashchange' in window) {
 <span id="L145" class="LineNr">145 </span>    68/push  0/imm32/false
 <span id="L146" class="LineNr">146 </span>    50/push-EAX
 <span id="L147" class="LineNr">147 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L148" class="LineNr">148 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L148" class="LineNr">148 </span>    e8/call  <a href='ex11.subx.html#L256'>check-ints-equal</a>/disp32
 <span id="L149" class="LineNr">149 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L150" class="LineNr">150 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
 <span id="L151" class="LineNr">151 </span>    c3/return
 <span id="L152" class="LineNr">152 </span>
-<span id="L153" class="LineNr">153 </span><span class="subxTest"><a href='052kernel_string_equal.subx.html#L153'>test-compare-kernel-string-with-equal-array</a></span>:
+<span id="L153" class="LineNr">153 </span><span class="subxTest"><a href='ex11.subx.html#L153'>test-compare-kernel-string-with-equal-array</a></span>:
 <span id="L154" class="LineNr">154 </span>    <span class="subxComment"># EAX = kernel-string-equal(Abc-kernel-string, &quot;Abc&quot;)</span>
 <span id="L155" class="LineNr">155 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L156" class="LineNr">156 </span>    68/push  <span class="Constant">&quot;Abc&quot;</span>/imm32
-<span id="L157" class="LineNr">157 </span>    68/push  <span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L257'>Abc-kernel-string</a></span>/imm32
+<span id="L157" class="LineNr">157 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L347'>Abc-kernel-string</a></span>/imm32
 <span id="L158" class="LineNr">158 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L159" class="LineNr">159 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L159" class="LineNr">159 </span>    e8/call  <a href='ex11.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L160" class="LineNr">160 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L161" class="LineNr">161 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L162" class="LineNr">162 </span>    <span class="subxComment"># check-ints-equal(EAX, 1, msg)</span>
@@ -225,18 +226,18 @@ if ('onhashchange' in window) {
 <span id="L165" class="LineNr">165 </span>    68/push  1/imm32/true
 <span id="L166" class="LineNr">166 </span>    50/push-EAX
 <span id="L167" class="LineNr">167 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L168" class="LineNr">168 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L168" class="LineNr">168 </span>    e8/call  <a href='ex11.subx.html#L256'>check-ints-equal</a>/disp32
 <span id="L169" class="LineNr">169 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L170" class="LineNr">170 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
 <span id="L171" class="LineNr">171 </span>    c3/return
 <span id="L172" class="LineNr">172 </span>
-<span id="L173" class="LineNr">173 </span><span class="subxTest"><a href='052kernel_string_equal.subx.html#L173'>test-compare-kernel-string-with-inequal-array</a></span>:
+<span id="L173" class="LineNr">173 </span><span class="subxTest"><a href='ex11.subx.html#L173'>test-compare-kernel-string-with-inequal-array</a></span>:
 <span id="L174" class="LineNr">174 </span>    <span class="subxComment"># EAX = kernel-string-equal(Abc-kernel-string, &quot;Adc&quot;)</span>
 <span id="L175" class="LineNr">175 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L176" class="LineNr">176 </span>    68/push  <span class="Constant">&quot;Adc&quot;</span>/imm32
-<span id="L177" class="LineNr">177 </span>    68/push  <span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L257'>Abc-kernel-string</a></span>/imm32
+<span id="L177" class="LineNr">177 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L347'>Abc-kernel-string</a></span>/imm32
 <span id="L178" class="LineNr">178 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L179" class="LineNr">179 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L179" class="LineNr">179 </span>    e8/call  <a href='ex11.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L180" class="LineNr">180 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L181" class="LineNr">181 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L182" class="LineNr">182 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -245,18 +246,18 @@ if ('onhashchange' in window) {
 <span id="L185" class="LineNr">185 </span>    68/push  0/imm32/false
 <span id="L186" class="LineNr">186 </span>    50/push-EAX
 <span id="L187" class="LineNr">187 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L188" class="LineNr">188 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L188" class="LineNr">188 </span>    e8/call  <a href='ex11.subx.html#L256'>check-ints-equal</a>/disp32
 <span id="L189" class="LineNr">189 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L190" class="LineNr">190 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
 <span id="L191" class="LineNr">191 </span>    c3/return
 <span id="L192" class="LineNr">192 </span>
-<span id="L193" class="LineNr">193 </span><span class="subxTest"><a href='052kernel_string_equal.subx.html#L193'>test-compare-kernel-string-with-empty-array</a></span>:
+<span id="L193" class="LineNr">193 </span><span class="subxTest"><a href='ex11.subx.html#L193'>test-compare-kernel-string-with-empty-array</a></span>:
 <span id="L194" class="LineNr">194 </span>    <span class="subxComment"># EAX = kernel-string-equal(Abc-kernel-string, &quot;&quot;)</span>
 <span id="L195" class="LineNr">195 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L196" class="LineNr">196 </span>    68/push  <span class="Constant">&quot;&quot;</span>/imm32
-<span id="L197" class="LineNr">197 </span>    68/push  <span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L257'>Abc-kernel-string</a></span>/imm32
+<span id="L197" class="LineNr">197 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L347'>Abc-kernel-string</a></span>/imm32
 <span id="L198" class="LineNr">198 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L199" class="LineNr">199 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L199" class="LineNr">199 </span>    e8/call  <a href='ex11.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L200" class="LineNr">200 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L201" class="LineNr">201 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L202" class="LineNr">202 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -265,18 +266,18 @@ if ('onhashchange' in window) {
 <span id="L205" class="LineNr">205 </span>    68/push  0/imm32/false
 <span id="L206" class="LineNr">206 </span>    50/push-EAX
 <span id="L207" class="LineNr">207 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L208" class="LineNr">208 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L208" class="LineNr">208 </span>    e8/call  <a href='ex11.subx.html#L256'>check-ints-equal</a>/disp32
 <span id="L209" class="LineNr">209 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L210" class="LineNr">210 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
 <span id="L211" class="LineNr">211 </span>    c3/return
 <span id="L212" class="LineNr">212 </span>
-<span id="L213" class="LineNr">213 </span><span class="subxTest"><a href='052kernel_string_equal.subx.html#L213'>test-compare-kernel-string-with-shorter-array</a></span>:
+<span id="L213" class="LineNr">213 </span><span class="subxTest"><a href='ex11.subx.html#L213'>test-compare-kernel-string-with-shorter-array</a></span>:
 <span id="L214" class="LineNr">214 </span>    <span class="subxComment"># EAX = kernel-string-equal(Abc-kernel-string, &quot;Ab&quot;)</span>
 <span id="L215" class="LineNr">215 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L216" class="LineNr">216 </span>    68/push  <span class="Constant">&quot;Ab&quot;</span>/imm32
-<span id="L217" class="LineNr">217 </span>    68/push  <span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L257'>Abc-kernel-string</a></span>/imm32
+<span id="L217" class="LineNr">217 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L347'>Abc-kernel-string</a></span>/imm32
 <span id="L218" class="LineNr">218 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L219" class="LineNr">219 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L219" class="LineNr">219 </span>    e8/call  <a href='ex11.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L220" class="LineNr">220 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L221" class="LineNr">221 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L222" class="LineNr">222 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -285,18 +286,18 @@ if ('onhashchange' in window) {
 <span id="L225" class="LineNr">225 </span>    68/push  0/imm32/false
 <span id="L226" class="LineNr">226 </span>    50/push-EAX
 <span id="L227" class="LineNr">227 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L228" class="LineNr">228 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L228" class="LineNr">228 </span>    e8/call  <a href='ex11.subx.html#L256'>check-ints-equal</a>/disp32
 <span id="L229" class="LineNr">229 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L230" class="LineNr">230 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
 <span id="L231" class="LineNr">231 </span>    c3/return
 <span id="L232" class="LineNr">232 </span>
-<span id="L233" class="LineNr">233 </span><span class="subxTest"><a href='052kernel_string_equal.subx.html#L233'>test-compare-kernel-string-with-longer-array</a></span>:
+<span id="L233" class="LineNr">233 </span><span class="subxTest"><a href='ex11.subx.html#L233'>test-compare-kernel-string-with-longer-array</a></span>:
 <span id="L234" class="LineNr">234 </span>    <span class="subxComment"># EAX = kernel-string-equal(Abc-kernel-string, &quot;Abcd&quot;)</span>
 <span id="L235" class="LineNr">235 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L236" class="LineNr">236 </span>    68/push  <span class="Constant">&quot;Abcd&quot;</span>/imm32
-<span id="L237" class="LineNr">237 </span>    68/push  <span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L257'>Abc-kernel-string</a></span>/imm32
+<span id="L237" class="LineNr">237 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L347'>Abc-kernel-string</a></span>/imm32
 <span id="L238" class="LineNr">238 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L239" class="LineNr">239 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L239" class="LineNr">239 </span>    e8/call  <a href='ex11.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L240" class="LineNr">240 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L241" class="LineNr">241 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L242" class="LineNr">242 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -305,7 +306,7 @@ if ('onhashchange' in window) {
 <span id="L245" class="LineNr">245 </span>    68/push  0/imm32/false
 <span id="L246" class="LineNr">246 </span>    50/push-EAX
 <span id="L247" class="LineNr">247 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L248" class="LineNr">248 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L248" class="LineNr">248 </span>    e8/call  <a href='ex11.subx.html#L256'>check-ints-equal</a>/disp32
 <span id="L249" class="LineNr">249 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L250" class="LineNr">250 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
 <span id="L251" class="LineNr">251 </span>    c3/return
@@ -313,7 +314,7 @@ if ('onhashchange' in window) {
 <span id="L253" class="LineNr">253 </span><span class="subxH1Comment"># - helpers</span>
 <span id="L254" class="LineNr">254 </span>
 <span id="L255" class="LineNr">255 </span><span class="subxComment"># print msg to stderr if a != b, otherwise print &quot;.&quot;</span>
-<span id="L256" class="LineNr">256 </span><span class="subxFunction"><a href='051test.subx.html#L24'>check-ints-equal</a></span>:  <span class="subxComment"># (a : int, b : int, msg : (address array byte)) -&gt; boolean</span>
+<span id="L256" class="LineNr">256 </span><span class="subxFunction"><a href='ex11.subx.html#L256'>check-ints-equal</a></span>:  <span class="subxComment"># (a : int, b : int, msg : (address array byte)) -&gt; boolean</span>
 <span id="L257" class="LineNr">257 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L258" class="LineNr">258 </span>    55/push-EBP
 <span id="L259" class="LineNr">259 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
@@ -330,7 +331,7 @@ if ('onhashchange' in window) {
 <span id="L270" class="LineNr">270 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L271" class="LineNr">271 </span>    68/push  <span class="Constant">&quot;.&quot;</span>/imm32
 <span id="L272" class="LineNr">272 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L273" class="LineNr">273 </span>    e8/call  write-stderr/disp32
+<span id="L273" class="LineNr">273 </span>    e8/call  <a href='ex11.subx.html#L305'>write-stderr</a>/disp32
 <span id="L274" class="LineNr">274 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L275" class="LineNr">275 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L276" class="LineNr">276 </span>    <span class="subxS1Comment"># . return</span>
@@ -343,14 +344,14 @@ if ('onhashchange' in window) {
 <span id="L283" class="LineNr">283 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L284" class="LineNr">284 </span>    51/push-ECX
 <span id="L285" class="LineNr">285 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L286" class="LineNr">286 </span>    e8/call  write-stderr/disp32
+<span id="L286" class="LineNr">286 </span>    e8/call  <a href='ex11.subx.html#L305'>write-stderr</a>/disp32
 <span id="L287" class="LineNr">287 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L288" class="LineNr">288 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L289" class="LineNr">289 </span>    <span class="subxComment"># print newline</span>
 <span id="L290" class="LineNr">290 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L291" class="LineNr">291 </span>    68/push  <span class="SpecialChar"><a href='051test.subx.html#L81'>Newline</a></span>/imm32
+<span id="L291" class="LineNr">291 </span>    68/push  <span class="SpecialChar"><a href='ex11.subx.html#L338'>Newline</a></span>/imm32
 <span id="L292" class="LineNr">292 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L293" class="LineNr">293 </span>    e8/call  write-stderr/disp32
+<span id="L293" class="LineNr">293 </span>    e8/call  <a href='ex11.subx.html#L305'>write-stderr</a>/disp32
 <span id="L294" class="LineNr">294 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L295" class="LineNr">295 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L296" class="LineNr">296 </span><span class="Constant">$check-ints-equal:end</span>:
@@ -362,7 +363,7 @@ if ('onhashchange' in window) {
 <span id="L302" class="LineNr">302 </span>    5d/pop-to-EBP
 <span id="L303" class="LineNr">303 </span>    c3/return
 <span id="L304" class="LineNr">304 </span>
-<span id="L305" class="LineNr">305 </span><span class="subxFunction">write-stderr</span>:  <span class="subxComment"># s : (address array byte) -&gt; &lt;void&gt;</span>
+<span id="L305" class="LineNr">305 </span><span class="subxFunction"><a href='ex11.subx.html#L305'>write-stderr</a></span>:  <span class="subxComment"># s : (address array byte) -&gt; &lt;void&gt;</span>
 <span id="L306" class="LineNr">306 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L307" class="LineNr">307 </span>    55/push-EBP
 <span id="L308" class="LineNr">308 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
@@ -395,16 +396,16 @@ if ('onhashchange' in window) {
 <span id="L335" class="LineNr">335 </span>
 <span id="L336" class="LineNr">336 </span>== data
 <span id="L337" class="LineNr">337 </span>
-<span id="L338" class="LineNr">338 </span><span class="SpecialChar"><a href='051test.subx.html#L81'>Newline</a></span>:
+<span id="L338" class="LineNr">338 </span><span class="SpecialChar"><a href='ex11.subx.html#L338'>Newline</a></span>:
 <span id="L339" class="LineNr">339 </span>    <span class="subxComment"># size</span>
 <span id="L340" class="LineNr">340 </span>    01 00 00 00
 <span id="L341" class="LineNr">341 </span>    <span class="subxComment"># data</span>
 <span id="L342" class="LineNr">342 </span>    0a/newline
 <span id="L343" class="LineNr">343 </span>
 <span id="L344" class="LineNr">344 </span><span class="subxComment"># for kernel-string-equal tests</span>
-<span id="L345" class="LineNr">345 </span><span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L255'>Null-kernel-string</a></span>:
+<span id="L345" class="LineNr">345 </span><span class="SpecialChar"><a href='ex11.subx.html#L345'>Null-kernel-string</a></span>:
 <span id="L346" class="LineNr">346 </span>    00/null
-<span id="L347" class="LineNr">347 </span><span class="SpecialChar"><a href='052kernel_string_equal.subx.html#L257'>Abc-kernel-string</a></span>:
+<span id="L347" class="LineNr">347 </span><span class="SpecialChar"><a href='ex11.subx.html#L347'>Abc-kernel-string</a></span>:
 <span id="L348" class="LineNr">348 </span>    41/A 62/b 63/c 00/null
 <span id="L349" class="LineNr">349 </span>
 <span id="L350" class="LineNr">350 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
diff --git a/html/subx/examples/ex12.subx.html b/html/subx/examples/ex12.subx.html
index 3fe6f836..60eb5b06 100644
--- a/html/subx/examples/ex12.subx.html
+++ b/html/subx/examples/ex12.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
@@ -68,7 +69,7 @@ if ('onhashchange' in window) {
 <span id="L12" class="LineNr">12 </span><span class="subxS1Comment"># . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes</span>
 <span id="L13" class="LineNr">13 </span>
 <span id="L14" class="LineNr">14 </span>    <span class="subxComment"># syscall(mmap, 0x1000)</span>
-<span id="L15" class="LineNr">15 </span>    bb/copy-to-EBX  <span class="SpecialChar">Mmap-new-segment</span>/imm32
+<span id="L15" class="LineNr">15 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex12.subx.html#L30'>Mmap-new-segment</a></span>/imm32
 <span id="L16" class="LineNr">16 </span>    b8/copy-to-EAX  0x5a/imm32/mmap
 <span id="L17" class="LineNr">17 </span>    cd/syscall  0x80/imm8
 <span id="L18" class="LineNr">18 </span>
@@ -83,7 +84,7 @@ if ('onhashchange' in window) {
 <span id="L27" class="LineNr">27 </span>== data
 <span id="L28" class="LineNr">28 </span>
 <span id="L29" class="LineNr">29 </span><span class="subxComment"># various constants used here were found in the Linux sources (search for file mman-common.h)</span>
-<span id="L30" class="LineNr">30 </span><span class="SpecialChar">Mmap-new-segment</span>:  <span class="subxComment"># type mmap_arg_struct</span>
+<span id="L30" class="LineNr">30 </span><span class="SpecialChar"><a href='ex12.subx.html#L30'>Mmap-new-segment</a></span>:  <span class="subxComment"># type mmap_arg_struct</span>
 <span id="L31" class="LineNr">31 </span>    <span class="subxComment"># addr</span>
 <span id="L32" class="LineNr">32 </span>    00 00 00 00  <span class="subxComment"># null</span>
 <span id="L33" class="LineNr">33 </span>    <span class="subxComment"># len</span>
diff --git a/html/subx/examples/ex2.subx.html b/html/subx/examples/ex2.subx.html
index f2ac27f9..5a4eb9dd 100644
--- a/html/subx/examples/ex2.subx.html
+++ b/html/subx/examples/ex2.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
diff --git a/html/subx/examples/ex3.subx.html b/html/subx/examples/ex3.subx.html
index e6ec437b..1d06a94d 100644
--- a/html/subx/examples/ex3.subx.html
+++ b/html/subx/examples/ex3.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
diff --git a/html/subx/examples/ex4.subx.html b/html/subx/examples/ex4.subx.html
index cb139f48..d4cb221e 100644
--- a/html/subx/examples/ex4.subx.html
+++ b/html/subx/examples/ex4.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
@@ -65,7 +66,7 @@ if ('onhashchange' in window) {
 <span id="L10" class="LineNr">10 </span><span class="subxS1Comment"># . fd = 0 (stdin)</span>
 <span id="L11" class="LineNr">11 </span>bb/copy-to-EBX  0/imm32
 <span id="L12" class="LineNr">12 </span><span class="subxS1Comment"># . data = X (location to write result to)</span>
-<span id="L13" class="LineNr">13 </span>b9/copy-to-ECX  <span class="SpecialChar">X</span>/imm32
+<span id="L13" class="LineNr">13 </span>b9/copy-to-ECX  <span class="SpecialChar"><a href='ex4.subx.html#L37'>X</a></span>/imm32
 <span id="L14" class="LineNr">14 </span><span class="subxS1Comment"># . size = 1 character</span>
 <span id="L15" class="LineNr">15 </span>ba/copy-to-EDX  1/imm32
 <span id="L16" class="LineNr">16 </span><span class="subxS1Comment"># . syscall</span>
@@ -76,7 +77,7 @@ if ('onhashchange' in window) {
 <span id="L21" class="LineNr">21 </span><span class="subxS1Comment"># . fd = 1 (stdout)</span>
 <span id="L22" class="LineNr">22 </span>bb/copy-to-EBX  1/imm32
 <span id="L23" class="LineNr">23 </span><span class="subxS1Comment"># . initialize X (location to read from)</span>
-<span id="L24" class="LineNr">24 </span>b9/copy-to-ECX  <span class="SpecialChar">X</span>/imm32
+<span id="L24" class="LineNr">24 </span>b9/copy-to-ECX  <span class="SpecialChar"><a href='ex4.subx.html#L37'>X</a></span>/imm32
 <span id="L25" class="LineNr">25 </span><span class="subxS1Comment"># . size = 1 character</span>
 <span id="L26" class="LineNr">26 </span>ba/copy-to-EDX  1/imm32
 <span id="L27" class="LineNr">27 </span><span class="subxS1Comment"># . syscall</span>
@@ -89,7 +90,7 @@ if ('onhashchange' in window) {
 <span id="L34" class="LineNr">34 </span>
 <span id="L35" class="LineNr">35 </span>== data
 <span id="L36" class="LineNr">36 </span>
-<span id="L37" class="LineNr">37 </span><span class="SpecialChar">X</span>:
+<span id="L37" class="LineNr">37 </span><span class="SpecialChar"><a href='ex4.subx.html#L37'>X</a></span>:
 <span id="L38" class="LineNr">38 </span>    00 00 00 00  <span class="subxComment"># space for read() to write to</span>
 <span id="L39" class="LineNr">39 </span>
 <span id="L40" class="LineNr">40 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
diff --git a/html/subx/examples/ex5.subx.html b/html/subx/examples/ex5.subx.html
index aa75d79c..1b6a4db8 100644
--- a/html/subx/examples/ex5.subx.html
+++ b/html/subx/examples/ex5.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
diff --git a/html/subx/examples/ex6.subx.html b/html/subx/examples/ex6.subx.html
index 297a5ca3..b6a36df8 100644
--- a/html/subx/examples/ex6.subx.html
+++ b/html/subx/examples/ex6.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
@@ -70,9 +71,9 @@ if ('onhashchange' in window) {
 <span id="L14" class="LineNr">14 </span>    <span class="subxS1Comment"># . fd = 1 (stdout)</span>
 <span id="L15" class="LineNr">15 </span>    bb/copy-to-EBX  1/imm32
 <span id="L16" class="LineNr">16 </span>    <span class="subxS1Comment"># . initialize X (location to write result to)</span>
-<span id="L17" class="LineNr">17 </span>    b9/copy-to-ECX  <span class="SpecialChar">X</span>/imm32
+<span id="L17" class="LineNr">17 </span>    b9/copy-to-ECX  <span class="SpecialChar"><a href='ex6.subx.html#L32'>X</a></span>/imm32
 <span id="L18" class="LineNr">18 </span>    <span class="subxS1Comment"># . initialize Size</span>
-<span id="L19" class="LineNr">19 </span>    8b/copy                         0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/EDX   <span class="SpecialChar">Size</span>/disp32    <span class="Normal"> . </span>                <span class="subxComment"># copy *Size to EDX</span>
+<span id="L19" class="LineNr">19 </span>    8b/copy                         0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/EDX   <span class="SpecialChar"><a href='ex6.subx.html#L30'>Size</a></span>/disp32    <span class="Normal"> . </span>                <span class="subxComment"># copy *Size to EDX</span>
 <span id="L20" class="LineNr">20 </span>    <span class="subxS1Comment"># . syscall</span>
 <span id="L21" class="LineNr">21 </span>    b8/copy-to-EAX  4/imm32/write
 <span id="L22" class="LineNr">22 </span>    cd/syscall  0x80/imm8
@@ -83,9 +84,9 @@ if ('onhashchange' in window) {
 <span id="L27" class="LineNr">27 </span>
 <span id="L28" class="LineNr">28 </span>== data
 <span id="L29" class="LineNr">29 </span>
-<span id="L30" class="LineNr">30 </span><span class="SpecialChar">Size</span>:  <span class="subxComment"># size of string</span>
+<span id="L30" class="LineNr">30 </span><span class="SpecialChar"><a href='ex6.subx.html#L30'>Size</a></span>:  <span class="subxComment"># size of string</span>
 <span id="L31" class="LineNr">31 </span>    0e 00 00 00  <span class="subxComment"># 14</span>
-<span id="L32" class="LineNr">32 </span><span class="SpecialChar">X</span>:  <span class="subxComment"># string to print</span>
+<span id="L32" class="LineNr">32 </span><span class="SpecialChar"><a href='ex6.subx.html#L32'>X</a></span>:  <span class="subxComment"># string to print</span>
 <span id="L33" class="LineNr">33 </span>    48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 0a       00
 <span id="L34" class="LineNr">34 </span><span class="subxComment">#   H  e  l  l  o  ,  ␣  w  o  r  l  d  !  newline  null</span>
 <span id="L35" class="LineNr">35 </span>
diff --git a/html/subx/examples/ex7.subx.html b/html/subx/examples/ex7.subx.html
index 0cce7bec..164701ab 100644
--- a/html/subx/examples/ex7.subx.html
+++ b/html/subx/examples/ex7.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
@@ -73,75 +74,75 @@ if ('onhashchange' in window) {
 <span id="L17" class="LineNr"> 17 </span><span class="subxS1Comment"># . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes</span>
 <span id="L18" class="LineNr"> 18 </span>
 <span id="L19" class="LineNr"> 19 </span>    <span class="subxComment"># syscall(creat, Filename)</span>
-<span id="L20" class="LineNr"> 20 </span>    bb/copy-to-EBX  <span class="SpecialChar">Filename</span>/imm32
+<span id="L20" class="LineNr"> 20 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L102'>Filename</a></span>/imm32
 <span id="L21" class="LineNr"> 21 </span>    b9/copy-to-ECX  0x180/imm32/fixed-perms
 <span id="L22" class="LineNr"> 22 </span>    b8/copy-to-EAX  8/imm32/creat
 <span id="L23" class="LineNr"> 23 </span>    cd/syscall  0x80/imm8
 <span id="L24" class="LineNr"> 24 </span>
 <span id="L25" class="LineNr"> 25 </span>    <span class="subxComment"># stream = syscall(open, Filename, O_WRONLY, 0)  # we can't use 'fd' because it looks like a hex byte</span>
-<span id="L26" class="LineNr"> 26 </span>    bb/copy-to-EBX  <span class="SpecialChar">Filename</span>/imm32
+<span id="L26" class="LineNr"> 26 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L102'>Filename</a></span>/imm32
 <span id="L27" class="LineNr"> 27 </span>    b9/copy-to-ECX  1/imm32/wronly
 <span id="L28" class="LineNr"> 28 </span>    ba/copy-to-EDX  0x180/imm32/fixed-perms
 <span id="L29" class="LineNr"> 29 </span>    b8/copy-to-EAX  5/imm32/open
 <span id="L30" class="LineNr"> 30 </span>    cd/syscall  0x80/imm8
 <span id="L31" class="LineNr"> 31 </span>    <span class="subxComment"># save stream</span>
-<span id="L32" class="LineNr"> 32 </span>    bb/copy-to-EBX  <span class="SpecialChar">Stream</span>/imm32
+<span id="L32" class="LineNr"> 32 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L96'>Stream</a></span>/imm32
 <span id="L33" class="LineNr"> 33 </span>    89/copy                         0/mod/indirect  3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EAX to *EBX</span>
 <span id="L34" class="LineNr"> 34 </span>
 <span id="L35" class="LineNr"> 35 </span>    <span class="subxComment"># syscall(write, Stream, &quot;a&quot;, 1)</span>
 <span id="L36" class="LineNr"> 36 </span>    <span class="subxS1Comment"># . load stream</span>
-<span id="L37" class="LineNr"> 37 </span>    bb/copy-to-EBX  <span class="SpecialChar">Stream</span>/imm32
+<span id="L37" class="LineNr"> 37 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L96'>Stream</a></span>/imm32
 <span id="L38" class="LineNr"> 38 </span>    8b/copy                         0/mod/indirect  3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EBX to EBX</span>
 <span id="L39" class="LineNr"> 39 </span>    <span class="subxS1Comment"># .</span>
-<span id="L40" class="LineNr"> 40 </span>    b9/copy-to-ECX  <span class="SpecialChar">A</span>/imm32
+<span id="L40" class="LineNr"> 40 </span>    b9/copy-to-ECX  <span class="SpecialChar"><a href='ex7.subx.html#L98'>A</a></span>/imm32
 <span id="L41" class="LineNr"> 41 </span>    ba/copy-to-EDX  1/imm32/size
 <span id="L42" class="LineNr"> 42 </span>    b8/copy-to-EAX  4/imm32/write
 <span id="L43" class="LineNr"> 43 </span>    cd/syscall  0x80/imm8
 <span id="L44" class="LineNr"> 44 </span>
 <span id="L45" class="LineNr"> 45 </span>    <span class="subxComment"># syscall(close, Stream)</span>
 <span id="L46" class="LineNr"> 46 </span>    <span class="subxS1Comment"># . load stream</span>
-<span id="L47" class="LineNr"> 47 </span>    bb/copy-to-EBX  <span class="SpecialChar">Stream</span>/imm32
+<span id="L47" class="LineNr"> 47 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L96'>Stream</a></span>/imm32
 <span id="L48" class="LineNr"> 48 </span>    8b/copy                         0/mod/indirect  3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EBX to EBX</span>
 <span id="L49" class="LineNr"> 49 </span>    <span class="subxS1Comment"># .</span>
 <span id="L50" class="LineNr"> 50 </span>    b8/copy-to-EAX  6/imm32/close
 <span id="L51" class="LineNr"> 51 </span>    cd/syscall  0x80/imm8
 <span id="L52" class="LineNr"> 52 </span>
 <span id="L53" class="LineNr"> 53 </span>    <span class="subxComment"># stream = syscall(open, Filename, O_RDONLY, 0)</span>
-<span id="L54" class="LineNr"> 54 </span>    bb/copy-to-EBX  <span class="SpecialChar">Filename</span>/imm32
+<span id="L54" class="LineNr"> 54 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L102'>Filename</a></span>/imm32
 <span id="L55" class="LineNr"> 55 </span>    b9/copy-to-ECX  0/imm32/rdonly
 <span id="L56" class="LineNr"> 56 </span>    ba/copy-to-EDX  0x180/imm32/fixed-perms
 <span id="L57" class="LineNr"> 57 </span>    b8/copy-to-EAX  5/imm32/open
 <span id="L58" class="LineNr"> 58 </span>    cd/syscall  0x80/imm8
 <span id="L59" class="LineNr"> 59 </span>    <span class="subxS1Comment"># . save Stream</span>
-<span id="L60" class="LineNr"> 60 </span>    bb/copy-to-EBX  <span class="SpecialChar">Stream</span>/imm32
+<span id="L60" class="LineNr"> 60 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L96'>Stream</a></span>/imm32
 <span id="L61" class="LineNr"> 61 </span>    89/copy                         0/mod/indirect  3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EAX to *EBX</span>
 <span id="L62" class="LineNr"> 62 </span>
 <span id="L63" class="LineNr"> 63 </span>    <span class="subxComment"># syscall(read, Stream, B, 1)</span>
 <span id="L64" class="LineNr"> 64 </span>    <span class="subxS1Comment"># . load stream</span>
-<span id="L65" class="LineNr"> 65 </span>    bb/copy-to-EBX  <span class="SpecialChar">Stream</span>/imm32
+<span id="L65" class="LineNr"> 65 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L96'>Stream</a></span>/imm32
 <span id="L66" class="LineNr"> 66 </span>    8b/copy                         0/mod/indirect  3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EBX to EBX</span>
 <span id="L67" class="LineNr"> 67 </span>    <span class="subxS1Comment"># .</span>
-<span id="L68" class="LineNr"> 68 </span>    b9/copy-to-ECX  <span class="SpecialChar">B</span>/imm32
+<span id="L68" class="LineNr"> 68 </span>    b9/copy-to-ECX  <span class="SpecialChar"><a href='ex7.subx.html#L100'>B</a></span>/imm32
 <span id="L69" class="LineNr"> 69 </span>    ba/copy-to-EDX  1/imm32/size
 <span id="L70" class="LineNr"> 70 </span>    b8/copy-to-EAX  3/imm32/read
 <span id="L71" class="LineNr"> 71 </span>    cd/syscall  0x80/imm8
 <span id="L72" class="LineNr"> 72 </span>
 <span id="L73" class="LineNr"> 73 </span>    <span class="subxComment"># syscall(close, Stream)</span>
 <span id="L74" class="LineNr"> 74 </span>    <span class="subxS1Comment"># . load stream</span>
-<span id="L75" class="LineNr"> 75 </span>    bb/copy-to-EBX  <span class="SpecialChar">Stream</span>/imm32
+<span id="L75" class="LineNr"> 75 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L96'>Stream</a></span>/imm32
 <span id="L76" class="LineNr"> 76 </span>    8b/copy                         0/mod/indirect  3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EBX to EBX</span>
 <span id="L77" class="LineNr"> 77 </span>    <span class="subxComment">#</span>
 <span id="L78" class="LineNr"> 78 </span>    b8/copy-to-EAX  6/imm32/close
 <span id="L79" class="LineNr"> 79 </span>    cd/syscall  0x80/imm8
 <span id="L80" class="LineNr"> 80 </span>
 <span id="L81" class="LineNr"> 81 </span>    <span class="subxComment"># syscall(unlink, filename)</span>
-<span id="L82" class="LineNr"> 82 </span>    bb/copy-to-EBX  <span class="SpecialChar">Filename</span>/imm32
+<span id="L82" class="LineNr"> 82 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L102'>Filename</a></span>/imm32
 <span id="L83" class="LineNr"> 83 </span>    b8/copy-to-EAX  0xa/imm32/unlink
 <span id="L84" class="LineNr"> 84 </span>    cd/syscall  0x80/imm8
 <span id="L85" class="LineNr"> 85 </span>
 <span id="L86" class="LineNr"> 86 </span>    <span class="subxComment"># syscall(exit, b)</span>
 <span id="L87" class="LineNr"> 87 </span>    <span class="subxS1Comment"># . load b</span>
-<span id="L88" class="LineNr"> 88 </span>    bb/copy-to-EBX  <span class="SpecialChar">B</span>/imm32
+<span id="L88" class="LineNr"> 88 </span>    bb/copy-to-EBX  <span class="SpecialChar"><a href='ex7.subx.html#L100'>B</a></span>/imm32
 <span id="L89" class="LineNr"> 89 </span>    8b/copy                         0/mod/indirect  3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EBX to EBX</span>
 <span id="L90" class="LineNr"> 90 </span>    <span class="subxComment">#</span>
 <span id="L91" class="LineNr"> 91 </span>    b8/copy-to-EAX  1/imm32/exit
@@ -149,13 +150,13 @@ if ('onhashchange' in window) {
 <span id="L93" class="LineNr"> 93 </span>
 <span id="L94" class="LineNr"> 94 </span>== data
 <span id="L95" class="LineNr"> 95 </span>
-<span id="L96" class="LineNr"> 96 </span><span class="SpecialChar">Stream</span>:
+<span id="L96" class="LineNr"> 96 </span><span class="SpecialChar"><a href='ex7.subx.html#L96'>Stream</a></span>:
 <span id="L97" class="LineNr"> 97 </span>    00 00 00 00
-<span id="L98" class="LineNr"> 98 </span><span class="SpecialChar">A</span>:
+<span id="L98" class="LineNr"> 98 </span><span class="SpecialChar"><a href='ex7.subx.html#L98'>A</a></span>:
 <span id="L99" class="LineNr"> 99 </span>    61 00 00 00
-<span id="L100" class="LineNr">100 </span><span class="SpecialChar">B</span>:
+<span id="L100" class="LineNr">100 </span><span class="SpecialChar"><a href='ex7.subx.html#L100'>B</a></span>:
 <span id="L101" class="LineNr">101 </span>    00 00 00 00
-<span id="L102" class="LineNr">102 </span><span class="SpecialChar">Filename</span>:
+<span id="L102" class="LineNr">102 </span><span class="SpecialChar"><a href='ex7.subx.html#L102'>Filename</a></span>:
 <span id="L103" class="LineNr">103 </span>    2e 66 6f 6f 00 00 00 00
 <span id="L104" class="LineNr">104 </span>
 <span id="L105" class="LineNr">105 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
diff --git a/html/subx/examples/ex8.subx.html b/html/subx/examples/ex8.subx.html
index af438a07..5990b476 100644
--- a/html/subx/examples/ex8.subx.html
+++ b/html/subx/examples/ex8.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
@@ -82,7 +83,7 @@ if ('onhashchange' in window) {
 <span id="L25" class="LineNr">25 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L26" class="LineNr">26 </span>    ff          6/subop/push        1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+8)</span>
 <span id="L27" class="LineNr">27 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L28" class="LineNr">28 </span>    e8/call  ascii-length/disp32
+<span id="L28" class="LineNr">28 </span>    e8/call  <a href='ex8.subx.html#L37'>ascii-length</a>/disp32
 <span id="L29" class="LineNr">29 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L30" class="LineNr">30 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L31" class="LineNr">31 </span>
@@ -91,7 +92,7 @@ if ('onhashchange' in window) {
 <span id="L34" class="LineNr">34 </span>    b8/copy-to-EAX  1/imm32/exit
 <span id="L35" class="LineNr">35 </span>    cd/syscall  0x80/imm8
 <span id="L36" class="LineNr">36 </span>
-<span id="L37" class="LineNr">37 </span><span class="subxFunction">ascii-length</span>:  <span class="subxComment"># s : (address array byte) -&gt; n/EAX</span>
+<span id="L37" class="LineNr">37 </span><span class="subxFunction"><a href='ex8.subx.html#L37'>ascii-length</a></span>:  <span class="subxComment"># s : (address array byte) -&gt; n/EAX</span>
 <span id="L38" class="LineNr">38 </span>    <span class="subxComment"># EDX = s</span>
 <span id="L39" class="LineNr">39 </span>    8b/copy                         1/mod/*+disp8   4/rm32/sib    4/base/ESP  4/index/none <span class="Normal"> . </span>          2/r32/EDX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ESP+4) to EDX</span>
 <span id="L40" class="LineNr">40 </span>    <span class="subxComment"># var result/EAX = 0</span>
diff --git a/html/subx/examples/ex9.subx.html b/html/subx/examples/ex9.subx.html
index fa8732f7..1c654479 100644
--- a/html/subx/examples/ex9.subx.html
+++ b/html/subx/examples/ex9.subx.html
@@ -12,6 +12,7 @@
 <!--
 pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
 .subxComment { color: #005faf; }
 .subxS2Comment { color: #8a8a8a; }
@@ -86,7 +87,7 @@ if ('onhashchange' in window) {
 <span id="L30" class="LineNr">30 </span>    <span class="subxS2Comment"># . . push argv[1]</span>
 <span id="L31" class="LineNr">31 </span>    ff          6/subop/push        1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+8)</span>
 <span id="L32" class="LineNr">32 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L33" class="LineNr">33 </span>    e8/call  ascii-difference/disp32
+<span id="L33" class="LineNr">33 </span>    e8/call  <a href='ex9.subx.html#L41'>ascii-difference</a>/disp32
 <span id="L34" class="LineNr">34 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L35" class="LineNr">35 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L36" class="LineNr">36 </span>    <span class="subxComment"># syscall(exit, EAX)</span>
@@ -94,7 +95,7 @@ if ('onhashchange' in window) {
 <span id="L38" class="LineNr">38 </span>    b8/copy-to-EAX  1/imm32/exit
 <span id="L39" class="LineNr">39 </span>    cd/syscall  0x80/imm8
 <span id="L40" class="LineNr">40 </span>
-<span id="L41" class="LineNr">41 </span><span class="subxFunction">ascii-difference</span>:  <span class="subxComment"># (s1, s2) : null-terminated ascii strings</span>
+<span id="L41" class="LineNr">41 </span><span class="subxFunction"><a href='ex9.subx.html#L41'>ascii-difference</a></span>:  <span class="subxComment"># (s1, s2) : null-terminated ascii strings</span>
 <span id="L42" class="LineNr">42 </span>    <span class="subxComment"># a = first letter of s1 (ECX)</span>
 <span id="L43" class="LineNr">43 </span>    8b/copy                         1/mod/*+disp8   4/rm32/sib    4/base/ESP  4/index/none              0/r32/EAX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ESP+4) to EAX</span>
 <span id="L44" class="LineNr">44 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to EAX</span>