about summary refs log tree commit diff stats
path: root/html/subx
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
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')
-rw-r--r--html/subx/000organization.cc.html1
-rw-r--r--html/subx/001help.cc.html1
-rw-r--r--html/subx/002test.cc.html1
-rw-r--r--html/subx/003trace.cc.html1
-rw-r--r--html/subx/003trace.test.cc.html1
-rw-r--r--html/subx/010---vm.cc.html1
-rw-r--r--html/subx/011run.cc.html1
-rw-r--r--html/subx/012elf.cc.html1
-rw-r--r--html/subx/013direct_addressing.cc.html1
-rw-r--r--html/subx/014indirect_addressing.cc.html1
-rw-r--r--html/subx/015immediate_addressing.cc.html1
-rw-r--r--html/subx/016index_addressing.cc.html1
-rw-r--r--html/subx/017jump_disp8.cc.html1
-rw-r--r--html/subx/018jump_disp32.cc.html1
-rw-r--r--html/subx/019functions.cc.html1
-rw-r--r--html/subx/020syscalls.cc.html1
-rw-r--r--html/subx/021byte_addressing.cc.html1
-rw-r--r--html/subx/028translate.cc.html1
-rw-r--r--html/subx/029transforms.cc.html1
-rw-r--r--html/subx/030---operands.cc.html1
-rw-r--r--html/subx/031check_operands.cc.html1
-rw-r--r--html/subx/032check_operand_bounds.cc.html1
-rw-r--r--html/subx/034compute_segment_address.cc.html1
-rw-r--r--html/subx/035labels.cc.html1
-rw-r--r--html/subx/036global_variables.cc.html1
-rw-r--r--html/subx/037heap.cc.html1
-rw-r--r--html/subx/038---literal_strings.cc.html1
-rw-r--r--html/subx/039debug.cc.html1
-rw-r--r--html/subx/040---tests.cc.html1
-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/061error.subx.html1
-rw-r--r--html/subx/062write-byte.subx.html1
-rw-r--r--html/subx/063print-byte.subx.html1
-rw-r--r--html/subx/064write-buffered.subx.html1
-rw-r--r--html/subx/065error-byte.subx.html1
-rw-r--r--html/subx/066allocate.subx.html1
-rw-r--r--html/subx/apps/hex.subx.html543
-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
59 files changed, 400 insertions, 341 deletions
diff --git a/html/subx/000organization.cc.html b/html/subx/000organization.cc.html
index 9c9a197b..379bf4fe 100644
--- a/html/subx/000organization.cc.html
+++ b/html/subx/000organization.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Constant { color: #008787; }
diff --git a/html/subx/001help.cc.html b/html/subx/001help.cc.html
index 20f81f64..2aef411f 100644
--- a/html/subx/001help.cc.html
+++ b/html/subx/001help.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .CommentedCode { color: #8a8a8a; }
 .LineNr { }
diff --git a/html/subx/002test.cc.html b/html/subx/002test.cc.html
index bde6050b..6580efac 100644
--- a/html/subx/002test.cc.html
+++ b/html/subx/002test.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .CommentedCode { color: #8a8a8a; }
 .LineNr { }
diff --git a/html/subx/003trace.cc.html b/html/subx/003trace.cc.html
index 4e0923e7..2ec5850f 100644
--- a/html/subx/003trace.cc.html
+++ b/html/subx/003trace.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Constant { color: #008787; }
diff --git a/html/subx/003trace.test.cc.html b/html/subx/003trace.test.cc.html
index 2129f4fd..fb3a2f31 100644
--- a/html/subx/003trace.test.cc.html
+++ b/html/subx/003trace.test.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Constant { color: #008787; }
diff --git a/html/subx/010---vm.cc.html b/html/subx/010---vm.cc.html
index 8bb2121e..1d5ce504 100644
--- a/html/subx/010---vm.cc.html
+++ b/html/subx/010---vm.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .LineNr { }
diff --git a/html/subx/011run.cc.html b/html/subx/011run.cc.html
index 03ffbc97..f5f08f80 100644
--- a/html/subx/011run.cc.html
+++ b/html/subx/011run.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/012elf.cc.html b/html/subx/012elf.cc.html
index 79e50909..e38c23ba 100644
--- a/html/subx/012elf.cc.html
+++ b/html/subx/012elf.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Constant { color: #008787; }
diff --git a/html/subx/013direct_addressing.cc.html b/html/subx/013direct_addressing.cc.html
index a9aab198..cf04767e 100644
--- a/html/subx/013direct_addressing.cc.html
+++ b/html/subx/013direct_addressing.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/014indirect_addressing.cc.html b/html/subx/014indirect_addressing.cc.html
index 8b7a7250..b719b747 100644
--- a/html/subx/014indirect_addressing.cc.html
+++ b/html/subx/014indirect_addressing.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .Error { color: #ffffff; background-color: #ff6060; padding-bottom: 1px; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/015immediate_addressing.cc.html b/html/subx/015immediate_addressing.cc.html
index 11597b73..59813443 100644
--- a/html/subx/015immediate_addressing.cc.html
+++ b/html/subx/015immediate_addressing.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .PreProc { color: #c000c0; }
diff --git a/html/subx/016index_addressing.cc.html b/html/subx/016index_addressing.cc.html
index be363047..2e775053 100644
--- a/html/subx/016index_addressing.cc.html
+++ b/html/subx/016index_addressing.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .Error { color: #ffffff; background-color: #ff6060; padding-bottom: 1px; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/017jump_disp8.cc.html b/html/subx/017jump_disp8.cc.html
index be345391..4a6e5732 100644
--- a/html/subx/017jump_disp8.cc.html
+++ b/html/subx/017jump_disp8.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .traceAbsent { color: #c00000; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/018jump_disp32.cc.html b/html/subx/018jump_disp32.cc.html
index 68993154..54b16f4a 100644
--- a/html/subx/018jump_disp32.cc.html
+++ b/html/subx/018jump_disp32.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .traceAbsent { color: #c00000; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/019functions.cc.html b/html/subx/019functions.cc.html
index c745409a..bbd254bd 100644
--- a/html/subx/019functions.cc.html
+++ b/html/subx/019functions.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .CommentedCode { color: #8a8a8a; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/020syscalls.cc.html b/html/subx/020syscalls.cc.html
index 49aae7f8..5074e528 100644
--- a/html/subx/020syscalls.cc.html
+++ b/html/subx/020syscalls.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .PreProc { color: #c000c0; }
 .LineNr { }
diff --git a/html/subx/021byte_addressing.cc.html b/html/subx/021byte_addressing.cc.html
index b4c8c4ee..71b63a6a 100644
--- a/html/subx/021byte_addressing.cc.html
+++ b/html/subx/021byte_addressing.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .traceContains { color: #005f00; }
 .LineNr { }
diff --git a/html/subx/028translate.cc.html b/html/subx/028translate.cc.html
index 7e62d763..d3ac6c96 100644
--- a/html/subx/028translate.cc.html
+++ b/html/subx/028translate.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Constant { color: #008787; }
diff --git a/html/subx/029transforms.cc.html b/html/subx/029transforms.cc.html
index 17658522..dcfd286b 100644
--- a/html/subx/029transforms.cc.html
+++ b/html/subx/029transforms.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Delimiter { color: #c000c0; }
diff --git a/html/subx/030---operands.cc.html b/html/subx/030---operands.cc.html
index 95add670..cfff1fbe 100644
--- a/html/subx/030---operands.cc.html
+++ b/html/subx/030---operands.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .Identifier { color: #af5f00; }
 .LineNr { }
diff --git a/html/subx/031check_operands.cc.html b/html/subx/031check_operands.cc.html
index e7622e5c..7894e88a 100644
--- a/html/subx/031check_operands.cc.html
+++ b/html/subx/031check_operands.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .CommentedCode { color: #8a8a8a; }
 .PreProc { color: #c000c0; }
diff --git a/html/subx/032check_operand_bounds.cc.html b/html/subx/032check_operand_bounds.cc.html
index df4daa11..cc839fa1 100644
--- a/html/subx/032check_operand_bounds.cc.html
+++ b/html/subx/032check_operand_bounds.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .Comment { color: #005faf; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/034compute_segment_address.cc.html b/html/subx/034compute_segment_address.cc.html
index dbcfc21b..8f579b69 100644
--- a/html/subx/034compute_segment_address.cc.html
+++ b/html/subx/034compute_segment_address.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .traceContains { color: #005f00; }
 .LineNr { }
diff --git a/html/subx/035labels.cc.html b/html/subx/035labels.cc.html
index 928e4a65..cae20515 100644
--- a/html/subx/035labels.cc.html
+++ b/html/subx/035labels.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .PreProc { color: #c000c0; }
diff --git a/html/subx/036global_variables.cc.html b/html/subx/036global_variables.cc.html
index 919e77a9..33d99940 100644
--- a/html/subx/036global_variables.cc.html
+++ b/html/subx/036global_variables.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/037heap.cc.html b/html/subx/037heap.cc.html
index ef5ad509..94ac1de2 100644
--- a/html/subx/037heap.cc.html
+++ b/html/subx/037heap.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Constant { color: #008787; }
diff --git a/html/subx/038---literal_strings.cc.html b/html/subx/038---literal_strings.cc.html
index 43f995a5..2f7c2c48 100644
--- a/html/subx/038---literal_strings.cc.html
+++ b/html/subx/038---literal_strings.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .LineNr { }
diff --git a/html/subx/039debug.cc.html b/html/subx/039debug.cc.html
index 999d541e..0f002bd4 100644
--- a/html/subx/039debug.cc.html
+++ b/html/subx/039debug.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .LineNr { }
 .Constant { color: #008787; }
diff --git a/html/subx/040---tests.cc.html b/html/subx/040---tests.cc.html
index de38c642..54ff7bbd 100644
--- a/html/subx/040---tests.cc.html
+++ b/html/subx/040---tests.cc.html
@@ -12,6 +12,7 @@
 <!--
 pre { white-space: pre-wrap; 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; }
 .cSpecial { color: #008000; }
 .traceContains { color: #005f00; }
diff --git a/html/subx/050_write.subx.html b/html/subx/050_write.subx.html
index f42eb707..506fbded 100644
--- a/html/subx/050_write.subx.html
+++ b/html/subx/050_write.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/051test.subx.html b/html/subx/051test.subx.html
index 3532f4ce..dbbbe4dd 100644
--- a/html/subx/051test.subx.html
+++ b/html/subx/051test.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/052kernel_string_equal.subx.html b/html/subx/052kernel_string_equal.subx.html
index d1397093..30f6ea41 100644
--- a/html/subx/052kernel_string_equal.subx.html
+++ b/html/subx/052kernel_string_equal.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; }
diff --git a/html/subx/053new_segment.subx.html b/html/subx/053new_segment.subx.html
index e51b1b21..9e0e47d6 100644
--- a/html/subx/053new_segment.subx.html
+++ b/html/subx/053new_segment.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/054string_equal.subx.html b/html/subx/054string_equal.subx.html
index e9fa32ba..f28c7e95 100644
--- a/html/subx/054string_equal.subx.html
+++ b/html/subx/054string_equal.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; }
diff --git a/html/subx/055trace.subx.html b/html/subx/055trace.subx.html
index 7f0951d7..277f6065 100644
--- a/html/subx/055trace.subx.html
+++ b/html/subx/055trace.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/056write.subx.html b/html/subx/056write.subx.html
index 80b4db69..e71e4565 100644
--- a/html/subx/056write.subx.html
+++ b/html/subx/056write.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/057stop.subx.html b/html/subx/057stop.subx.html
index 265ec210..c6fd5f80 100644
--- a/html/subx/057stop.subx.html
+++ b/html/subx/057stop.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; }
diff --git a/html/subx/058read.subx.html b/html/subx/058read.subx.html
index 47defabc..9fc157d4 100644
--- a/html/subx/058read.subx.html
+++ b/html/subx/058read.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/059read-byte.subx.html b/html/subx/059read-byte.subx.html
index 962d7828..b885524e 100644
--- a/html/subx/059read-byte.subx.html
+++ b/html/subx/059read-byte.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/060write-stream.subx.html b/html/subx/060write-stream.subx.html
index 1a3da3d8..ecc2f17d 100644
--- a/html/subx/060write-stream.subx.html
+++ b/html/subx/060write-stream.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/061error.subx.html b/html/subx/061error.subx.html
index 30d502bd..a3f9c0da 100644
--- a/html/subx/061error.subx.html
+++ b/html/subx/061error.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/062write-byte.subx.html b/html/subx/062write-byte.subx.html
index 6b322039..75c5f602 100644
--- a/html/subx/062write-byte.subx.html
+++ b/html/subx/062write-byte.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/063print-byte.subx.html b/html/subx/063print-byte.subx.html
index cc2cf660..ee22ca2f 100644
--- a/html/subx/063print-byte.subx.html
+++ b/html/subx/063print-byte.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/064write-buffered.subx.html b/html/subx/064write-buffered.subx.html
index 2886cfb4..9091a70a 100644
--- a/html/subx/064write-buffered.subx.html
+++ b/html/subx/064write-buffered.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; }
diff --git a/html/subx/065error-byte.subx.html b/html/subx/065error-byte.subx.html
index 76c30261..175628d3 100644
--- a/html/subx/065error-byte.subx.html
+++ b/html/subx/065error-byte.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/066allocate.subx.html b/html/subx/066allocate.subx.html
index b45edb9f..68746e1f 100644
--- a/html/subx/066allocate.subx.html
+++ b/html/subx/066allocate.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; }
diff --git a/html/subx/apps/hex.subx.html b/html/subx/apps/hex.subx.html
index 11b7ac78..cfa2e3cd 100644
--- a/html/subx/apps/hex.subx.html
+++ b/html/subx/apps/hex.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; }
@@ -96,7 +97,7 @@ if ('onhashchange' in window) {
 <span id="L34" class="LineNr">  34 </span>    68/push  <span class="Constant">&quot;test&quot;</span>/imm32
 <span id="L35" class="LineNr">  35 </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="L36" class="LineNr">  36 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L37" class="LineNr">  37 </span>    e8/call  <a href='052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
+<span id="L37" class="LineNr">  37 </span>    e8/call  <a href='../052kernel_string_equal.subx.html#L31'>kernel-string-equal</a>/disp32
 <span id="L38" class="LineNr">  38 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L39" class="LineNr">  39 </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="L40" class="LineNr">  40 </span>    <span class="subxS1Comment"># . check result</span>
@@ -110,7 +111,7 @@ if ('onhashchange' in window) {
 <span id="L48" class="LineNr">  48 </span><span class="CommentedCode">#?     e8/call test-scan-next-byte-aborts-on-invalid-byte/disp32</span>
 <span id="L49" class="LineNr">  49 </span><span class="CommentedCode">#?     e8/call test-convert-next-octet/disp32</span>
 <span id="L50" class="LineNr">  50 </span>    e8/call  run-tests/disp32
-<span id="L51" class="LineNr">  51 </span>    8b/copy                         0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX   <span class="SpecialChar"><a href='051test.subx.html#L87'>Num-test-failures</a></span>/disp32          <span class="subxComment"># copy *Num-test-failures to EBX</span>
+<span id="L51" class="LineNr">  51 </span>    8b/copy                         0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX   <span class="SpecialChar"><a href='../051test.subx.html#L87'>Num-test-failures</a></span>/disp32          <span class="subxComment"># copy *Num-test-failures to EBX</span>
 <span id="L52" class="LineNr">  52 </span>    eb/jump  $main:end/disp8
 <span id="L53" class="LineNr">  53 </span><span class="Constant">$run-main</span>:
 <span id="L54" class="LineNr">  54 </span>    <span class="subxH1Comment"># - otherwise convert stdin</span>
@@ -123,11 +124,11 @@ if ('onhashchange' in window) {
 <span id="L61" class="LineNr">  61 </span>    <span class="subxComment"># return convert(Stdin, 1/stdout, 2/stderr, ed)</span>
 <span id="L62" class="LineNr">  62 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L63" class="LineNr">  63 </span>    50/push-EAX/ed
-<span id="L64" class="LineNr">  64 </span>    68/push  <span class="SpecialChar"><a href='065error-byte.subx.html#L97'>Stderr</a></span>/imm32
-<span id="L65" class="LineNr">  65 </span>    68/push  <span class="SpecialChar"><a href='062write-byte.subx.html#L10'>Stdout</a></span>/imm32
-<span id="L66" class="LineNr">  66 </span>    68/push  <span class="SpecialChar"><a href='059read-byte.subx.html#L14'>Stdin</a></span>/imm32
+<span id="L64" class="LineNr">  64 </span>    68/push  <span class="SpecialChar"><a href='../065error-byte.subx.html#L97'>Stderr</a></span>/imm32
+<span id="L65" class="LineNr">  65 </span>    68/push  <span class="SpecialChar"><a href='../062write-byte.subx.html#L10'>Stdout</a></span>/imm32
+<span id="L66" class="LineNr">  66 </span>    68/push  <span class="SpecialChar"><a href='../059read-byte.subx.html#L14'>Stdin</a></span>/imm32
 <span id="L67" class="LineNr">  67 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L68" class="LineNr">  68 </span>    e8/call  convert/disp32
+<span id="L68" class="LineNr">  68 </span>    e8/call  <a href='hex.subx.html#L78'>convert</a>/disp32
 <span id="L69" class="LineNr">  69 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L70" class="LineNr">  70 </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>              0x10/imm32        <span class="subxComment"># add to ESP</span>
 <span id="L71" class="LineNr">  71 </span>    <span class="subxS1Comment"># . syscall(exit, 0)</span>
@@ -137,7 +138,7 @@ if ('onhashchange' in window) {
 <span id="L75" class="LineNr">  75 </span>    cd/syscall  0x80/imm8
 <span id="L76" class="LineNr">  76 </span>
 <span id="L77" class="LineNr">  77 </span><span class="subxComment"># the main entry point</span>
-<span id="L78" class="LineNr">  78 </span><span class="subxFunction">convert</span>:  <span class="subxComment"># in : (address buffered-file), out : (address buffered-file), err : (address buffered-file), ed : (address exit-descriptor) -&gt; &lt;void&gt;</span>
+<span id="L78" class="LineNr">  78 </span><span class="subxFunction"><a href='hex.subx.html#L78'>convert</a></span>:  <span class="subxComment"># in : (address buffered-file), out : (address buffered-file), err : (address buffered-file), ed : (address exit-descriptor) -&gt; &lt;void&gt;</span>
 <span id="L79" class="LineNr">  79 </span>    <span class="subxComment"># pseudocode:</span>
 <span id="L80" class="LineNr">  80 </span>    <span class="subxComment">#   repeatedly</span>
 <span id="L81" class="LineNr">  81 </span>    <span class="subxComment">#     EAX = convert-next-octet(in, err, ed)</span>
@@ -157,7 +158,7 @@ if ('onhashchange' in window) {
 <span id="L95" class="LineNr">  95 </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>          0x10/disp8     <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+16)</span>
 <span id="L96" class="LineNr">  96 </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="L97" class="LineNr">  97 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L98" class="LineNr">  98 </span>    e8/call  convert-next-octet/disp32
+<span id="L98" class="LineNr">  98 </span>    e8/call  <a href='hex.subx.html#L136'>convert-next-octet</a>/disp32
 <span id="L99" class="LineNr">  99 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
 <span id="L100" class="LineNr"> 100 </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="L101" class="LineNr"> 101 </span>    <span class="subxComment"># if EAX == 0xffffffff break</span>
@@ -168,7 +169,7 @@ if ('onhashchange' in window) {
 <span id="L106" class="LineNr"> 106 </span>    50/push-EAX
 <span id="L107" class="LineNr"> 107 </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>          0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+12)</span>
 <span id="L108" class="LineNr"> 108 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L109" class="LineNr"> 109 </span>    e8/call  <a href='062write-byte.subx.html#L38'>write-byte</a>/disp32
+<span id="L109" class="LineNr"> 109 </span>    e8/call  <a href='../062write-byte.subx.html#L38'>write-byte</a>/disp32
 <span id="L110" class="LineNr"> 110 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L111" class="LineNr"> 111 </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="L112" class="LineNr"> 112 </span>    <span class="subxComment"># loop</span>
@@ -178,7 +179,7 @@ if ('onhashchange' in window) {
 <span id="L116" class="LineNr"> 116 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L117" class="LineNr"> 117 </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>          0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+12)</span>
 <span id="L118" class="LineNr"> 118 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L119" class="LineNr"> 119 </span>    e8/call  <a href='062write-byte.subx.html#L84'>flush</a>/disp32
+<span id="L119" class="LineNr"> 119 </span>    e8/call  <a href='../062write-byte.subx.html#L84'>flush</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>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L122" class="LineNr"> 122 </span><span class="Constant">$convert:end</span>:
@@ -195,7 +196,7 @@ if ('onhashchange' in window) {
 <span id="L133" class="LineNr"> 133 </span><span class="subxComment"># raise an error and abort on all other unexpected bytes</span>
 <span id="L134" class="LineNr"> 134 </span><span class="subxComment"># return in EAX an _octet_ containing the binary value of the two hex characters</span>
 <span id="L135" class="LineNr"> 135 </span><span class="subxComment"># return 0xffffffff on end of file</span>
-<span id="L136" class="LineNr"> 136 </span><span class="subxFunction">convert-next-octet</span>:  <span class="subxComment"># in : (address buffered-file), err : (address buffered-file), ed : (address exit-descriptor) -&gt; byte-or-eof/EAX</span>
+<span id="L136" class="LineNr"> 136 </span><span class="subxFunction"><a href='hex.subx.html#L136'>convert-next-octet</a></span>:  <span class="subxComment"># in : (address buffered-file), err : (address buffered-file), ed : (address exit-descriptor) -&gt; byte-or-eof/EAX</span>
 <span id="L137" class="LineNr"> 137 </span>    <span class="subxComment"># pseudocode:</span>
 <span id="L138" class="LineNr"> 138 </span>    <span class="subxComment">#   EAX = scan-next-byte(in, err, ed)</span>
 <span id="L139" class="LineNr"> 139 </span>    <span class="subxComment">#   if (EAX == 0xffffffff) return</span>
@@ -217,14 +218,14 @@ if ('onhashchange' in window) {
 <span id="L155" class="LineNr"> 155 </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>          0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+12)</span>
 <span id="L156" class="LineNr"> 156 </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="L157" class="LineNr"> 157 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L158" class="LineNr"> 158 </span>    e8/call  scan-next-byte/disp32
+<span id="L158" class="LineNr"> 158 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L159" class="LineNr"> 159 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L160" class="LineNr"> 160 </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="L161" class="LineNr"> 161 </span>    <span class="subxComment"># if (EAX == 0xffffffff) return</span>
 <span id="L162" class="LineNr"> 162 </span>    81          7/subop/compare     3/mod/direct    0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xffffffff/imm32  <span class="subxComment"># compare EAX</span>
 <span id="L163" class="LineNr"> 163 </span>    74/jump-if-equal  $convert-next-octet:end/disp8
 <span id="L164" class="LineNr"> 164 </span>    <span class="subxComment"># EAX = parse-hex-digit(EAX)</span>
-<span id="L165" class="LineNr"> 165 </span>    e8/call parse-hex-digit/disp32
+<span id="L165" class="LineNr"> 165 </span>    e8/call <a href='hex.subx.html#L1576'>parse-hex-digit</a>/disp32
 <span id="L166" class="LineNr"> 166 </span>    <span class="subxComment"># ECX = EAX</span>
 <span id="L167" class="LineNr"> 167 </span>    89/copy                         3/mod/direct    1/rm32/ECX   <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 ECX</span>
 <span id="L168" class="LineNr"> 168 </span>    <span class="subxComment"># EAX = scan-next-byte(in, err, ed)</span>
@@ -233,12 +234,12 @@ if ('onhashchange' in window) {
 <span id="L171" class="LineNr"> 171 </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>          0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+12)</span>
 <span id="L172" class="LineNr"> 172 </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="L173" class="LineNr"> 173 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L174" class="LineNr"> 174 </span>    e8/call  scan-next-byte/disp32
+<span id="L174" class="LineNr"> 174 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L175" class="LineNr"> 175 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L176" class="LineNr"> 176 </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="L177" class="LineNr"> 177 </span>    <span class="subxComment"># if (EAX == 0xffffffff) error(ed, err, &quot;partial byte found.&quot;)</span>
 <span id="L178" class="LineNr"> 178 </span>    81          7/subop/compare     3/mod/direct    0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xffffffff/imm32  <span class="subxComment"># compare EAX</span>
-<span id="L179" class="LineNr"> 179 </span>    75/jump-if-not-equal  $convert-next-octet:convert/disp8
+<span id="L179" class="LineNr"> 179 </span>    75/jump-if-not-equal  $convert-next-octet:<a href='hex.subx.html#L78'>convert</a>/disp8
 <span id="L180" class="LineNr"> 180 </span>    <span class="subxS1Comment"># . error-byte(ed, err, msg, '.')  # reusing error-byte to avoid creating _yet_ another helper</span>
 <span id="L181" class="LineNr"> 181 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L182" class="LineNr"> 182 </span>    68/push  0x2e/imm32/period/dummy
@@ -246,10 +247,10 @@ if ('onhashchange' in window) {
 <span id="L184" class="LineNr"> 184 </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>          0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+12)</span>
 <span id="L185" class="LineNr"> 185 </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>          0x10/disp8     <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+16)</span>
 <span id="L186" class="LineNr"> 186 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L187" class="LineNr"> 187 </span>    e8/call  <a href='065error-byte.subx.html#L30'>error-byte</a>/disp32  <span class="subxComment"># never returns</span>
-<span id="L188" class="LineNr"> 188 </span><span class="Constant">$convert-next-octet:convert</span>:
+<span id="L187" class="LineNr"> 187 </span>    e8/call  <a href='../065error-byte.subx.html#L30'>error-byte</a>/disp32  <span class="subxComment"># never returns</span>
+<span id="L188" class="LineNr"> 188 </span><span class="Constant">$convert-next-octet:<a href='hex.subx.html#L78'>convert</a></span>:
 <span id="L189" class="LineNr"> 189 </span>    <span class="subxComment"># EAX = parse-hex-digit(EAX)</span>
-<span id="L190" class="LineNr"> 190 </span>    e8/call parse-hex-digit/disp32
+<span id="L190" class="LineNr"> 190 </span>    e8/call <a href='hex.subx.html#L1576'>parse-hex-digit</a>/disp32
 <span id="L191" class="LineNr"> 191 </span>    <span class="subxComment"># EAX = (ECX &lt;&lt; 4) | EAX</span>
 <span id="L192" class="LineNr"> 192 </span>    <span class="subxS1Comment"># . ECX &lt;&lt;= 4</span>
 <span id="L193" class="LineNr"> 193 </span>    c1/shift    4/subop/left        3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm8            <span class="subxComment"># shift ECX left by 4 bits</span>
@@ -263,7 +264,7 @@ if ('onhashchange' in window) {
 <span id="L201" class="LineNr"> 201 </span>    5d/pop-to-EBP
 <span id="L202" class="LineNr"> 202 </span>    c3/return
 <span id="L203" class="LineNr"> 203 </span>
-<span id="L204" class="LineNr"> 204 </span><span class="subxTest">test-convert-next-octet</span>:
+<span id="L204" class="LineNr"> 204 </span><span class="subxTest"><a href='hex.subx.html#L204'>test-convert-next-octet</a></span>:
 <span id="L205" class="LineNr"> 205 </span>    <span class="subxH1Comment"># - check that the first two bytes of the input are assembled into the resulting octet</span>
 <span id="L206" class="LineNr"> 206 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L207" class="LineNr"> 207 </span>    55/push-EBP
@@ -271,43 +272,43 @@ if ('onhashchange' in window) {
 <span id="L209" class="LineNr"> 209 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L210" class="LineNr"> 210 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L211" class="LineNr"> 211 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L212" class="LineNr"> 212 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L212" class="LineNr"> 212 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L213" class="LineNr"> 213 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L214" class="LineNr"> 214 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L214" class="LineNr"> 214 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L215" class="LineNr"> 215 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L216" class="LineNr"> 216 </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="L217" class="LineNr"> 217 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L218" class="LineNr"> 218 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L219" class="LineNr"> 219 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L219" class="LineNr"> 219 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L220" class="LineNr"> 220 </span>    05/add-to-EAX  4/imm32
 <span id="L221" class="LineNr"> 221 </span>    50/push-EAX
 <span id="L222" class="LineNr"> 222 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L223" class="LineNr"> 223 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L223" class="LineNr"> 223 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L224" class="LineNr"> 224 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L225" class="LineNr"> 225 </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="L226" class="LineNr"> 226 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L227" class="LineNr"> 227 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L228" class="LineNr"> 228 </span>    68/push  _test-error-stream/imm32
+<span id="L228" class="LineNr"> 228 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L229" class="LineNr"> 229 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L230" class="LineNr"> 230 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L230" class="LineNr"> 230 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L231" class="LineNr"> 231 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L232" class="LineNr"> 232 </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="L233" class="LineNr"> 233 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L234" class="LineNr"> 234 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L235" class="LineNr"> 235 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L235" class="LineNr"> 235 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L236" class="LineNr"> 236 </span>    05/add-to-EAX  4/imm32
 <span id="L237" class="LineNr"> 237 </span>    50/push-EAX
 <span id="L238" class="LineNr"> 238 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L239" class="LineNr"> 239 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L239" class="LineNr"> 239 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</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>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L242" class="LineNr"> 242 </span>    <span class="subxComment"># initialize '_test-stream' to &quot;abc&quot;</span>
 <span id="L243" class="LineNr"> 243 </span>    <span class="subxS1Comment"># . write(_test-stream, &quot;abc&quot;)</span>
 <span id="L244" class="LineNr"> 244 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L245" class="LineNr"> 245 </span>    68/push  <span class="Constant">&quot;abc&quot;</span>/imm32
-<span id="L246" class="LineNr"> 246 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L246" class="LineNr"> 246 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L247" class="LineNr"> 247 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L248" class="LineNr"> 248 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L248" class="LineNr"> 248 </span>    e8/call  <a href='../056write.subx.html#L31'>write</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>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L251" class="LineNr"> 251 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below</span>
@@ -319,16 +320,16 @@ if ('onhashchange' in window) {
 <span id="L257" class="LineNr"> 257 </span>    68/push  0xc/imm32/nbytes-of-args-for-convert-next-octet
 <span id="L258" class="LineNr"> 258 </span>    51/push-ECX/ed
 <span id="L259" class="LineNr"> 259 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L260" class="LineNr"> 260 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L260" class="LineNr"> 260 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L261" class="LineNr"> 261 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L262" class="LineNr"> 262 </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="L263" class="LineNr"> 263 </span>    <span class="subxComment"># EAX = convert-next-octet(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L264" class="LineNr"> 264 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L265" class="LineNr"> 265 </span>    51/push-ECX/ed
-<span id="L266" class="LineNr"> 266 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L267" class="LineNr"> 267 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L266" class="LineNr"> 266 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L267" class="LineNr"> 267 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L268" class="LineNr"> 268 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L269" class="LineNr"> 269 </span>    e8/call  convert-next-octet/disp32
+<span id="L269" class="LineNr"> 269 </span>    e8/call  <a href='hex.subx.html#L136'>convert-next-octet</a>/disp32
 <span id="L270" class="LineNr"> 270 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L271" class="LineNr"> 271 </span>    <span class="subxComment"># pop args to convert-next-octet</span>
 <span id="L272" class="LineNr"> 272 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -338,12 +339,12 @@ if ('onhashchange' in window) {
 <span id="L276" class="LineNr"> 276 </span>    <span class="subxComment"># check that convert-next-octet didn't abort</span>
 <span id="L277" class="LineNr"> 277 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L278" class="LineNr"> 278 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L279" class="LineNr"> 279 </span>    68/push  <span class="Constant">&quot;F - test-convert-next-octet: unexpected abort&quot;</span>/imm32
+<span id="L279" class="LineNr"> 279 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L204'>test-convert-next-octet</a>: unexpected abort&quot;</span>/imm32
 <span id="L280" class="LineNr"> 280 </span>    68/push  0/imm32
 <span id="L281" class="LineNr"> 281 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L282" class="LineNr"> 282 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L283" class="LineNr"> 283 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L284" class="LineNr"> 284 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L284" class="LineNr"> 284 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L285" class="LineNr"> 285 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L286" class="LineNr"> 286 </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="L287" class="LineNr"> 287 </span>    <span class="subxComment"># return if abort</span>
@@ -355,7 +356,7 @@ if ('onhashchange' in window) {
 <span id="L293" class="LineNr"> 293 </span>    68/push  0xab/imm32/ab
 <span id="L294" class="LineNr"> 294 </span>    50/push-EAX
 <span id="L295" class="LineNr"> 295 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L296" class="LineNr"> 296 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L296" class="LineNr"> 296 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L297" class="LineNr"> 297 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L298" class="LineNr"> 298 </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="L299" class="LineNr"> 299 </span><span class="Constant">$test-convert-next-octet:end</span>:
@@ -365,7 +366,7 @@ if ('onhashchange' in window) {
 <span id="L303" class="LineNr"> 303 </span>    5d/pop-to-EBP
 <span id="L304" class="LineNr"> 304 </span>    c3/return
 <span id="L305" class="LineNr"> 305 </span>
-<span id="L306" class="LineNr"> 306 </span><span class="subxTest">test-convert-next-octet-handles-eof</span>:
+<span id="L306" class="LineNr"> 306 </span><span class="subxTest"><a href='hex.subx.html#L306'>test-convert-next-octet-handles-eof</a></span>:
 <span id="L307" class="LineNr"> 307 </span>    <span class="subxH1Comment"># - check that eof returns the sentinel octet</span>
 <span id="L308" class="LineNr"> 308 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L309" class="LineNr"> 309 </span>    55/push-EBP
@@ -373,34 +374,34 @@ if ('onhashchange' in window) {
 <span id="L311" class="LineNr"> 311 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L312" class="LineNr"> 312 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L313" class="LineNr"> 313 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L314" class="LineNr"> 314 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L314" class="LineNr"> 314 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L315" class="LineNr"> 315 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L316" class="LineNr"> 316 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L316" class="LineNr"> 316 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L317" class="LineNr"> 317 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L318" class="LineNr"> 318 </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="L319" class="LineNr"> 319 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L320" class="LineNr"> 320 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L321" class="LineNr"> 321 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L321" class="LineNr"> 321 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L322" class="LineNr"> 322 </span>    05/add-to-EAX  4/imm32
 <span id="L323" class="LineNr"> 323 </span>    50/push-EAX
 <span id="L324" class="LineNr"> 324 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L325" class="LineNr"> 325 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L325" class="LineNr"> 325 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L326" class="LineNr"> 326 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L327" class="LineNr"> 327 </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="L328" class="LineNr"> 328 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L329" class="LineNr"> 329 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L330" class="LineNr"> 330 </span>    68/push  _test-error-stream/imm32
+<span id="L330" class="LineNr"> 330 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L331" class="LineNr"> 331 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L332" class="LineNr"> 332 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L332" class="LineNr"> 332 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L333" class="LineNr"> 333 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L334" class="LineNr"> 334 </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="L335" class="LineNr"> 335 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L336" class="LineNr"> 336 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L337" class="LineNr"> 337 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L337" class="LineNr"> 337 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L338" class="LineNr"> 338 </span>    05/add-to-EAX  4/imm32
 <span id="L339" class="LineNr"> 339 </span>    50/push-EAX
 <span id="L340" class="LineNr"> 340 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L341" class="LineNr"> 341 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L341" class="LineNr"> 341 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L342" class="LineNr"> 342 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L343" class="LineNr"> 343 </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="L344" class="LineNr"> 344 </span>    <span class="subxComment"># don't initialize '_test-stream'</span>
@@ -413,16 +414,16 @@ if ('onhashchange' in window) {
 <span id="L351" class="LineNr"> 351 </span>    68/push  0xc/imm32/nbytes-of-args-for-convert-next-octet
 <span id="L352" class="LineNr"> 352 </span>    51/push-ECX/ed
 <span id="L353" class="LineNr"> 353 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L354" class="LineNr"> 354 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L354" class="LineNr"> 354 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L355" class="LineNr"> 355 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L356" class="LineNr"> 356 </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="L357" class="LineNr"> 357 </span>    <span class="subxComment"># EAX = convert-next-octet(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L358" class="LineNr"> 358 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L359" class="LineNr"> 359 </span>    51/push-ECX/ed
-<span id="L360" class="LineNr"> 360 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L361" class="LineNr"> 361 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L360" class="LineNr"> 360 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L361" class="LineNr"> 361 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L362" class="LineNr"> 362 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L363" class="LineNr"> 363 </span>    e8/call  convert-next-octet/disp32
+<span id="L363" class="LineNr"> 363 </span>    e8/call  <a href='hex.subx.html#L136'>convert-next-octet</a>/disp32
 <span id="L364" class="LineNr"> 364 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L365" class="LineNr"> 365 </span>    <span class="subxComment"># pop args to convert-next-octet</span>
 <span id="L366" class="LineNr"> 366 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -432,12 +433,12 @@ if ('onhashchange' in window) {
 <span id="L370" class="LineNr"> 370 </span>    <span class="subxComment"># check that convert-next-octet didn't abort</span>
 <span id="L371" class="LineNr"> 371 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L372" class="LineNr"> 372 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L373" class="LineNr"> 373 </span>    68/push  <span class="Constant">&quot;F - test-convert-next-octet: unexpected abort&quot;</span>/imm32
+<span id="L373" class="LineNr"> 373 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L204'>test-convert-next-octet</a>: unexpected abort&quot;</span>/imm32
 <span id="L374" class="LineNr"> 374 </span>    68/push  0/imm32
 <span id="L375" class="LineNr"> 375 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L376" class="LineNr"> 376 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L377" class="LineNr"> 377 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L378" class="LineNr"> 378 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L378" class="LineNr"> 378 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L379" class="LineNr"> 379 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L380" class="LineNr"> 380 </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="L381" class="LineNr"> 381 </span>    <span class="subxComment"># return if abort</span>
@@ -449,7 +450,7 @@ if ('onhashchange' in window) {
 <span id="L387" class="LineNr"> 387 </span>    68/push  0xffffffff/imm32/eof
 <span id="L388" class="LineNr"> 388 </span>    50/push-EAX
 <span id="L389" class="LineNr"> 389 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L390" class="LineNr"> 390 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L390" class="LineNr"> 390 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L391" class="LineNr"> 391 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L392" class="LineNr"> 392 </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="L393" class="LineNr"> 393 </span><span class="Constant">$test-convert-next-octet-handles-eof:end</span>:
@@ -459,7 +460,7 @@ if ('onhashchange' in window) {
 <span id="L397" class="LineNr"> 397 </span>    5d/pop-to-EBP
 <span id="L398" class="LineNr"> 398 </span>    c3/return
 <span id="L399" class="LineNr"> 399 </span>
-<span id="L400" class="LineNr"> 400 </span><span class="subxTest">test-convert-next-octet-aborts-on-single-hex-byte</span>:
+<span id="L400" class="LineNr"> 400 </span><span class="subxTest"><a href='hex.subx.html#L400'>test-convert-next-octet-aborts-on-single-hex-byte</a></span>:
 <span id="L401" class="LineNr"> 401 </span>    <span class="subxH1Comment"># - check that a single unaccompanied hex byte aborts</span>
 <span id="L402" class="LineNr"> 402 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L403" class="LineNr"> 403 </span>    55/push-EBP
@@ -467,43 +468,43 @@ if ('onhashchange' in window) {
 <span id="L405" class="LineNr"> 405 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L406" class="LineNr"> 406 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L407" class="LineNr"> 407 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L408" class="LineNr"> 408 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L408" class="LineNr"> 408 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L409" class="LineNr"> 409 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L410" class="LineNr"> 410 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L410" class="LineNr"> 410 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L411" class="LineNr"> 411 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L412" class="LineNr"> 412 </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="L413" class="LineNr"> 413 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L414" class="LineNr"> 414 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L415" class="LineNr"> 415 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L415" class="LineNr"> 415 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L416" class="LineNr"> 416 </span>    05/add-to-EAX  4/imm32
 <span id="L417" class="LineNr"> 417 </span>    50/push-EAX
 <span id="L418" class="LineNr"> 418 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L419" class="LineNr"> 419 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L419" class="LineNr"> 419 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L420" class="LineNr"> 420 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L421" class="LineNr"> 421 </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="L422" class="LineNr"> 422 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L423" class="LineNr"> 423 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L424" class="LineNr"> 424 </span>    68/push  _test-error-stream/imm32
+<span id="L424" class="LineNr"> 424 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L425" class="LineNr"> 425 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L426" class="LineNr"> 426 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L426" class="LineNr"> 426 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L427" class="LineNr"> 427 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L428" class="LineNr"> 428 </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="L429" class="LineNr"> 429 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L430" class="LineNr"> 430 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L431" class="LineNr"> 431 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L431" class="LineNr"> 431 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L432" class="LineNr"> 432 </span>    05/add-to-EAX  4/imm32
 <span id="L433" class="LineNr"> 433 </span>    50/push-EAX
 <span id="L434" class="LineNr"> 434 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L435" class="LineNr"> 435 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L435" class="LineNr"> 435 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L436" class="LineNr"> 436 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L437" class="LineNr"> 437 </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="L438" class="LineNr"> 438 </span>    <span class="subxComment"># initialize '_test-stream' to &quot;a&quot;</span>
 <span id="L439" class="LineNr"> 439 </span>    <span class="subxS1Comment"># . write(_test-stream, &quot;a&quot;)</span>
 <span id="L440" class="LineNr"> 440 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L441" class="LineNr"> 441 </span>    68/push  <span class="Constant">&quot;a&quot;</span>/imm32
-<span id="L442" class="LineNr"> 442 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L442" class="LineNr"> 442 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L443" class="LineNr"> 443 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L444" class="LineNr"> 444 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L444" class="LineNr"> 444 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L445" class="LineNr"> 445 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L446" class="LineNr"> 446 </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="L447" class="LineNr"> 447 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below</span>
@@ -515,16 +516,16 @@ if ('onhashchange' in window) {
 <span id="L453" class="LineNr"> 453 </span>    68/push  0xc/imm32/nbytes-of-args-for-convert-next-octet
 <span id="L454" class="LineNr"> 454 </span>    51/push-ECX/ed
 <span id="L455" class="LineNr"> 455 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L456" class="LineNr"> 456 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L456" class="LineNr"> 456 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L457" class="LineNr"> 457 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L458" class="LineNr"> 458 </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="L459" class="LineNr"> 459 </span>    <span class="subxComment"># EAX = convert-next-octet(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L460" class="LineNr"> 460 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L461" class="LineNr"> 461 </span>    51/push-ECX/ed
-<span id="L462" class="LineNr"> 462 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L463" class="LineNr"> 463 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L462" class="LineNr"> 462 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L463" class="LineNr"> 463 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L464" class="LineNr"> 464 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L465" class="LineNr"> 465 </span>    e8/call  convert-next-octet/disp32
+<span id="L465" class="LineNr"> 465 </span>    e8/call  <a href='hex.subx.html#L136'>convert-next-octet</a>/disp32
 <span id="L466" class="LineNr"> 466 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L467" class="LineNr"> 467 </span>    <span class="subxComment"># pop args to convert-next-octet</span>
 <span id="L468" class="LineNr"> 468 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -534,12 +535,12 @@ if ('onhashchange' in window) {
 <span id="L472" class="LineNr"> 472 </span>    <span class="subxComment"># check that convert-next-octet aborted</span>
 <span id="L473" class="LineNr"> 473 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 2, msg)</span>
 <span id="L474" class="LineNr"> 474 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L475" class="LineNr"> 475 </span>    68/push  <span class="Constant">&quot;F - test-convert-next-octet-aborts-on-single-hex-byte: unexpected abort&quot;</span>/imm32
+<span id="L475" class="LineNr"> 475 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L400'>test-convert-next-octet-aborts-on-single-hex-byte</a>: unexpected abort&quot;</span>/imm32
 <span id="L476" class="LineNr"> 476 </span>    68/push  2/imm32
 <span id="L477" class="LineNr"> 477 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L478" class="LineNr"> 478 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L479" class="LineNr"> 479 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L480" class="LineNr"> 480 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L480" class="LineNr"> 480 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L481" class="LineNr"> 481 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L482" class="LineNr"> 482 </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="L483" class="LineNr"> 483 </span><span class="Constant">$test-convert-next-octet-aborts-on-single-hex-byte:end</span>:
@@ -553,7 +554,7 @@ if ('onhashchange' in window) {
 <span id="L491" class="LineNr"> 491 </span><span class="subxComment"># return 0xffffffff if file ends without finding a hex byte</span>
 <span id="L492" class="LineNr"> 492 </span><span class="subxComment"># on '#' skip all bytes until newline</span>
 <span id="L493" class="LineNr"> 493 </span><span class="subxComment"># abort on any other byte</span>
-<span id="L494" class="LineNr"> 494 </span><span class="subxFunction">scan-next-byte</span>:  <span class="subxComment"># in : (address buffered-file), err : (address buffered-file), ed : (address exit-descriptor) -&gt; byte-or-eof/EAX</span>
+<span id="L494" class="LineNr"> 494 </span><span class="subxFunction"><a href='hex.subx.html#L494'>scan-next-byte</a></span>:  <span class="subxComment"># in : (address buffered-file), err : (address buffered-file), ed : (address exit-descriptor) -&gt; byte-or-eof/EAX</span>
 <span id="L495" class="LineNr"> 495 </span>    <span class="subxComment"># pseudocode:</span>
 <span id="L496" class="LineNr"> 496 </span>    <span class="subxComment">#   repeatedly</span>
 <span id="L497" class="LineNr"> 497 </span>    <span class="subxComment">#     EAX = read-byte(in)</span>
@@ -572,7 +573,7 @@ if ('onhashchange' in window) {
 <span id="L510" class="LineNr"> 510 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L511" class="LineNr"> 511 </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="L512" class="LineNr"> 512 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L513" class="LineNr"> 513 </span>    e8/call  <a href='059read-byte.subx.html#L45'>read-byte</a>/disp32
+<span id="L513" class="LineNr"> 513 </span>    e8/call  <a href='../059read-byte.subx.html#L45'>read-byte</a>/disp32
 <span id="L514" class="LineNr"> 514 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L515" class="LineNr"> 515 </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="L516" class="LineNr"> 516 </span>    <span class="subxComment"># if (EAX == 0xffffffff) return EAX</span>
@@ -585,7 +586,7 @@ if ('onhashchange' in window) {
 <span id="L523" class="LineNr"> 523 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L524" class="LineNr"> 524 </span>    50/push-EAX
 <span id="L525" class="LineNr"> 525 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L526" class="LineNr"> 526 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L526" class="LineNr"> 526 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L527" class="LineNr"> 527 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L528" class="LineNr"> 528 </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="L529" class="LineNr"> 529 </span>    <span class="subxS1Comment"># . compare with 'false'</span>
@@ -612,7 +613,7 @@ if ('onhashchange' in window) {
 <span id="L550" class="LineNr"> 550 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L551" class="LineNr"> 551 </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="L552" class="LineNr"> 552 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L553" class="LineNr"> 553 </span>    e8/call  skip-until-newline/disp32
+<span id="L553" class="LineNr"> 553 </span>    e8/call  <a href='hex.subx.html#L1588'>skip-until-newline</a>/disp32
 <span id="L554" class="LineNr"> 554 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L555" class="LineNr"> 555 </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="L556" class="LineNr"> 556 </span>    eb/jump  $scan-next-byte:loop/disp8
@@ -624,7 +625,7 @@ if ('onhashchange' in window) {
 <span id="L562" class="LineNr"> 562 </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>          0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+12)</span>
 <span id="L563" class="LineNr"> 563 </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>          0x10/disp8     <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+16)</span>
 <span id="L564" class="LineNr"> 564 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L565" class="LineNr"> 565 </span>    e8/call  <a href='065error-byte.subx.html#L30'>error-byte</a>/disp32  <span class="subxComment"># never returns</span>
+<span id="L565" class="LineNr"> 565 </span>    e8/call  <a href='../065error-byte.subx.html#L30'>error-byte</a>/disp32  <span class="subxComment"># never returns</span>
 <span id="L566" class="LineNr"> 566 </span><span class="Constant">$scan-next-byte:end</span>:
 <span id="L567" class="LineNr"> 567 </span>    <span class="subxS1Comment"># . restore registers</span>
 <span id="L568" class="LineNr"> 568 </span>    <span class="subxS1Comment"># . epilog</span>
@@ -632,7 +633,7 @@ if ('onhashchange' in window) {
 <span id="L570" class="LineNr"> 570 </span>    5d/pop-to-EBP
 <span id="L571" class="LineNr"> 571 </span>    c3/return
 <span id="L572" class="LineNr"> 572 </span>
-<span id="L573" class="LineNr"> 573 </span><span class="subxTest">test-scan-next-byte</span>:
+<span id="L573" class="LineNr"> 573 </span><span class="subxTest"><a href='hex.subx.html#L573'>test-scan-next-byte</a></span>:
 <span id="L574" class="LineNr"> 574 </span>    <span class="subxH1Comment"># - check that the first byte of the input is returned</span>
 <span id="L575" class="LineNr"> 575 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L576" class="LineNr"> 576 </span>    55/push-EBP
@@ -640,43 +641,43 @@ if ('onhashchange' in window) {
 <span id="L578" class="LineNr"> 578 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L579" class="LineNr"> 579 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L580" class="LineNr"> 580 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L581" class="LineNr"> 581 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L581" class="LineNr"> 581 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L582" class="LineNr"> 582 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L583" class="LineNr"> 583 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L583" class="LineNr"> 583 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L584" class="LineNr"> 584 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L585" class="LineNr"> 585 </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="L586" class="LineNr"> 586 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L587" class="LineNr"> 587 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L588" class="LineNr"> 588 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L588" class="LineNr"> 588 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L589" class="LineNr"> 589 </span>    05/add-to-EAX  4/imm32
 <span id="L590" class="LineNr"> 590 </span>    50/push-EAX
 <span id="L591" class="LineNr"> 591 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L592" class="LineNr"> 592 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L592" class="LineNr"> 592 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L593" class="LineNr"> 593 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L594" class="LineNr"> 594 </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="L595" class="LineNr"> 595 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L596" class="LineNr"> 596 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L597" class="LineNr"> 597 </span>    68/push  _test-error-stream/imm32
+<span id="L597" class="LineNr"> 597 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L598" class="LineNr"> 598 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L599" class="LineNr"> 599 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L599" class="LineNr"> 599 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L600" class="LineNr"> 600 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L601" class="LineNr"> 601 </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="L602" class="LineNr"> 602 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L603" class="LineNr"> 603 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L604" class="LineNr"> 604 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L604" class="LineNr"> 604 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L605" class="LineNr"> 605 </span>    05/add-to-EAX  4/imm32
 <span id="L606" class="LineNr"> 606 </span>    50/push-EAX
 <span id="L607" class="LineNr"> 607 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L608" class="LineNr"> 608 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L608" class="LineNr"> 608 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L609" class="LineNr"> 609 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L610" class="LineNr"> 610 </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="L611" class="LineNr"> 611 </span>    <span class="subxComment"># initialize '_test-stream' to &quot;abc&quot;</span>
 <span id="L612" class="LineNr"> 612 </span>    <span class="subxS1Comment"># . write(_test-stream, &quot;abc&quot;)</span>
 <span id="L613" class="LineNr"> 613 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L614" class="LineNr"> 614 </span>    68/push  <span class="Constant">&quot;abc&quot;</span>/imm32
-<span id="L615" class="LineNr"> 615 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L615" class="LineNr"> 615 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L616" class="LineNr"> 616 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L617" class="LineNr"> 617 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L617" class="LineNr"> 617 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L618" class="LineNr"> 618 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L619" class="LineNr"> 619 </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="L620" class="LineNr"> 620 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
@@ -688,16 +689,16 @@ if ('onhashchange' in window) {
 <span id="L626" class="LineNr"> 626 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L627" class="LineNr"> 627 </span>    51/push-ECX/ed
 <span id="L628" class="LineNr"> 628 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L629" class="LineNr"> 629 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L629" class="LineNr"> 629 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L630" class="LineNr"> 630 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L631" class="LineNr"> 631 </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="L632" class="LineNr"> 632 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L633" class="LineNr"> 633 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L634" class="LineNr"> 634 </span>    51/push-ECX/ed
-<span id="L635" class="LineNr"> 635 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L636" class="LineNr"> 636 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L635" class="LineNr"> 635 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L636" class="LineNr"> 636 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L637" class="LineNr"> 637 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L638" class="LineNr"> 638 </span>    e8/call  scan-next-byte/disp32
+<span id="L638" class="LineNr"> 638 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L639" class="LineNr"> 639 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L640" class="LineNr"> 640 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L641" class="LineNr"> 641 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -707,12 +708,12 @@ if ('onhashchange' in window) {
 <span id="L645" class="LineNr"> 645 </span>    <span class="subxComment"># check that scan-next-byte didn't abort</span>
 <span id="L646" class="LineNr"> 646 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L647" class="LineNr"> 647 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L648" class="LineNr"> 648 </span>    68/push  <span class="Constant">&quot;F - test-scan-next-byte: unexpected abort&quot;</span>/imm32
+<span id="L648" class="LineNr"> 648 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L573'>test-scan-next-byte</a>: unexpected abort&quot;</span>/imm32
 <span id="L649" class="LineNr"> 649 </span>    68/push  0/imm32
 <span id="L650" class="LineNr"> 650 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L651" class="LineNr"> 651 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L652" class="LineNr"> 652 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L653" class="LineNr"> 653 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L653" class="LineNr"> 653 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L654" class="LineNr"> 654 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L655" class="LineNr"> 655 </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="L656" class="LineNr"> 656 </span>    <span class="subxComment"># return if abort</span>
@@ -724,7 +725,7 @@ if ('onhashchange' in window) {
 <span id="L662" class="LineNr"> 662 </span>    68/push  0x61/imm32/a
 <span id="L663" class="LineNr"> 663 </span>    50/push-EAX
 <span id="L664" class="LineNr"> 664 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L665" class="LineNr"> 665 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L665" class="LineNr"> 665 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L666" class="LineNr"> 666 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L667" class="LineNr"> 667 </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="L668" class="LineNr"> 668 </span><span class="Constant">$test-scan-next-byte:end</span>:
@@ -734,7 +735,7 @@ if ('onhashchange' in window) {
 <span id="L672" class="LineNr"> 672 </span>    5d/pop-to-EBP
 <span id="L673" class="LineNr"> 673 </span>    c3/return
 <span id="L674" class="LineNr"> 674 </span>
-<span id="L675" class="LineNr"> 675 </span><span class="subxTest">test-scan-next-byte-skips-whitespace</span>:
+<span id="L675" class="LineNr"> 675 </span><span class="subxTest"><a href='hex.subx.html#L675'>test-scan-next-byte-skips-whitespace</a></span>:
 <span id="L676" class="LineNr"> 676 </span>    <span class="subxH1Comment"># - check that the first byte after whitespace is returned</span>
 <span id="L677" class="LineNr"> 677 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L678" class="LineNr"> 678 </span>    55/push-EBP
@@ -742,43 +743,43 @@ if ('onhashchange' in window) {
 <span id="L680" class="LineNr"> 680 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L681" class="LineNr"> 681 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L682" class="LineNr"> 682 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L683" class="LineNr"> 683 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L683" class="LineNr"> 683 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L684" class="LineNr"> 684 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L685" class="LineNr"> 685 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L685" class="LineNr"> 685 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L686" class="LineNr"> 686 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L687" class="LineNr"> 687 </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="L688" class="LineNr"> 688 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L689" class="LineNr"> 689 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L690" class="LineNr"> 690 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L690" class="LineNr"> 690 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L691" class="LineNr"> 691 </span>    05/add-to-EAX  4/imm32
 <span id="L692" class="LineNr"> 692 </span>    50/push-EAX
 <span id="L693" class="LineNr"> 693 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L694" class="LineNr"> 694 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L694" class="LineNr"> 694 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L695" class="LineNr"> 695 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L696" class="LineNr"> 696 </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="L697" class="LineNr"> 697 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L698" class="LineNr"> 698 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L699" class="LineNr"> 699 </span>    68/push  _test-error-stream/imm32
+<span id="L699" class="LineNr"> 699 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L700" class="LineNr"> 700 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L701" class="LineNr"> 701 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L701" class="LineNr"> 701 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L702" class="LineNr"> 702 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L703" class="LineNr"> 703 </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="L704" class="LineNr"> 704 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L705" class="LineNr"> 705 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L706" class="LineNr"> 706 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L706" class="LineNr"> 706 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L707" class="LineNr"> 707 </span>    05/add-to-EAX  4/imm32
 <span id="L708" class="LineNr"> 708 </span>    50/push-EAX
 <span id="L709" class="LineNr"> 709 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L710" class="LineNr"> 710 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L710" class="LineNr"> 710 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L711" class="LineNr"> 711 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L712" class="LineNr"> 712 </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="L713" class="LineNr"> 713 </span>    <span class="subxComment"># initialize '_test-stream' to input with leading whitespace</span>
 <span id="L714" class="LineNr"> 714 </span>    <span class="subxS1Comment"># . write(_test-stream, text)</span>
 <span id="L715" class="LineNr"> 715 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L716" class="LineNr"> 716 </span>    68/push  <span class="Constant">&quot;  abc&quot;</span>/imm32
-<span id="L717" class="LineNr"> 717 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L717" class="LineNr"> 717 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L718" class="LineNr"> 718 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L719" class="LineNr"> 719 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L719" class="LineNr"> 719 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L720" class="LineNr"> 720 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L721" class="LineNr"> 721 </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="L722" class="LineNr"> 722 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
@@ -790,16 +791,16 @@ if ('onhashchange' in window) {
 <span id="L728" class="LineNr"> 728 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L729" class="LineNr"> 729 </span>    51/push-ECX/ed
 <span id="L730" class="LineNr"> 730 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L731" class="LineNr"> 731 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L731" class="LineNr"> 731 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L732" class="LineNr"> 732 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L733" class="LineNr"> 733 </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="L734" class="LineNr"> 734 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L735" class="LineNr"> 735 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L736" class="LineNr"> 736 </span>    51/push-ECX/ed
-<span id="L737" class="LineNr"> 737 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L738" class="LineNr"> 738 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L737" class="LineNr"> 737 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L738" class="LineNr"> 738 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L739" class="LineNr"> 739 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L740" class="LineNr"> 740 </span>    e8/call  scan-next-byte/disp32
+<span id="L740" class="LineNr"> 740 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L741" class="LineNr"> 741 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L742" class="LineNr"> 742 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L743" class="LineNr"> 743 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -809,12 +810,12 @@ if ('onhashchange' in window) {
 <span id="L747" class="LineNr"> 747 </span>    <span class="subxComment"># check that scan-next-byte didn't abort</span>
 <span id="L748" class="LineNr"> 748 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L749" class="LineNr"> 749 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L750" class="LineNr"> 750 </span>    68/push  <span class="Constant">&quot;F - test-scan-next-byte-skips-whitespace: unexpected abort&quot;</span>/imm32
+<span id="L750" class="LineNr"> 750 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L675'>test-scan-next-byte-skips-whitespace</a>: unexpected abort&quot;</span>/imm32
 <span id="L751" class="LineNr"> 751 </span>    68/push  0/imm32
 <span id="L752" class="LineNr"> 752 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L753" class="LineNr"> 753 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L754" class="LineNr"> 754 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L755" class="LineNr"> 755 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L755" class="LineNr"> 755 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L756" class="LineNr"> 756 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L757" class="LineNr"> 757 </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="L758" class="LineNr"> 758 </span>    <span class="subxComment"># return if abort</span>
@@ -826,7 +827,7 @@ if ('onhashchange' in window) {
 <span id="L764" class="LineNr"> 764 </span>    68/push  0x61/imm32/a
 <span id="L765" class="LineNr"> 765 </span>    50/push-EAX
 <span id="L766" class="LineNr"> 766 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L767" class="LineNr"> 767 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L767" class="LineNr"> 767 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L768" class="LineNr"> 768 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L769" class="LineNr"> 769 </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="L770" class="LineNr"> 770 </span><span class="Constant">$test-scan-next-byte-skips-whitespace:end</span>:
@@ -836,7 +837,7 @@ if ('onhashchange' in window) {
 <span id="L774" class="LineNr"> 774 </span>    5d/pop-to-EBP
 <span id="L775" class="LineNr"> 775 </span>    c3/return
 <span id="L776" class="LineNr"> 776 </span>
-<span id="L777" class="LineNr"> 777 </span><span class="subxTest">test-scan-next-byte-skips-comment</span>:
+<span id="L777" class="LineNr"> 777 </span><span class="subxTest"><a href='hex.subx.html#L777'>test-scan-next-byte-skips-comment</a></span>:
 <span id="L778" class="LineNr"> 778 </span>    <span class="subxH1Comment"># - check that the first byte after a comment (and newline) is returned</span>
 <span id="L779" class="LineNr"> 779 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L780" class="LineNr"> 780 </span>    55/push-EBP
@@ -844,59 +845,59 @@ if ('onhashchange' in window) {
 <span id="L782" class="LineNr"> 782 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L783" class="LineNr"> 783 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L784" class="LineNr"> 784 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L785" class="LineNr"> 785 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L785" class="LineNr"> 785 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L786" class="LineNr"> 786 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L787" class="LineNr"> 787 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L787" class="LineNr"> 787 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L788" class="LineNr"> 788 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L789" class="LineNr"> 789 </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="L790" class="LineNr"> 790 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L791" class="LineNr"> 791 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L792" class="LineNr"> 792 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L792" class="LineNr"> 792 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L793" class="LineNr"> 793 </span>    05/add-to-EAX  4/imm32
 <span id="L794" class="LineNr"> 794 </span>    50/push-EAX
 <span id="L795" class="LineNr"> 795 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L796" class="LineNr"> 796 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L796" class="LineNr"> 796 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L797" class="LineNr"> 797 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L798" class="LineNr"> 798 </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="L799" class="LineNr"> 799 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L800" class="LineNr"> 800 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L801" class="LineNr"> 801 </span>    68/push  _test-error-stream/imm32
+<span id="L801" class="LineNr"> 801 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L802" class="LineNr"> 802 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L803" class="LineNr"> 803 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L803" class="LineNr"> 803 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L804" class="LineNr"> 804 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L805" class="LineNr"> 805 </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="L806" class="LineNr"> 806 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L807" class="LineNr"> 807 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L808" class="LineNr"> 808 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L808" class="LineNr"> 808 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L809" class="LineNr"> 809 </span>    05/add-to-EAX  4/imm32
 <span id="L810" class="LineNr"> 810 </span>    50/push-EAX
 <span id="L811" class="LineNr"> 811 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L812" class="LineNr"> 812 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L812" class="LineNr"> 812 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L813" class="LineNr"> 813 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L814" class="LineNr"> 814 </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="L815" class="LineNr"> 815 </span>    <span class="subxComment"># initialize '_test-stream' to input with leading comment</span>
 <span id="L816" class="LineNr"> 816 </span>    <span class="subxS1Comment"># . write(_test-stream, comment)</span>
 <span id="L817" class="LineNr"> 817 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L818" class="LineNr"> 818 </span>    68/push  <span class="Constant">&quot;#x&quot;</span>/imm32
-<span id="L819" class="LineNr"> 819 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L819" class="LineNr"> 819 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L820" class="LineNr"> 820 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L821" class="LineNr"> 821 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L821" class="LineNr"> 821 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L822" class="LineNr"> 822 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L823" class="LineNr"> 823 </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="L824" class="LineNr"> 824 </span>    <span class="subxS1Comment"># . write(_test-stream, Newline)</span>
 <span id="L825" class="LineNr"> 825 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L826" class="LineNr"> 826 </span>    68/push  <span class="SpecialChar"><a href='051test.subx.html#L81'>Newline</a></span>/imm32
-<span id="L827" class="LineNr"> 827 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L826" class="LineNr"> 826 </span>    68/push  <span class="SpecialChar"><a href='../051test.subx.html#L81'>Newline</a></span>/imm32
+<span id="L827" class="LineNr"> 827 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L828" class="LineNr"> 828 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L829" class="LineNr"> 829 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L829" class="LineNr"> 829 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L830" class="LineNr"> 830 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L831" class="LineNr"> 831 </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="L832" class="LineNr"> 832 </span>    <span class="subxS1Comment"># . write(_test-stream, real text)</span>
 <span id="L833" class="LineNr"> 833 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L834" class="LineNr"> 834 </span>    68/push  <span class="Constant">&quot;ab&quot;</span>/imm32
-<span id="L835" class="LineNr"> 835 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L835" class="LineNr"> 835 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L836" class="LineNr"> 836 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L837" class="LineNr"> 837 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L837" class="LineNr"> 837 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L838" class="LineNr"> 838 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L839" class="LineNr"> 839 </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="L840" class="LineNr"> 840 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
@@ -908,16 +909,16 @@ if ('onhashchange' in window) {
 <span id="L846" class="LineNr"> 846 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L847" class="LineNr"> 847 </span>    51/push-ECX/ed
 <span id="L848" class="LineNr"> 848 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L849" class="LineNr"> 849 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L849" class="LineNr"> 849 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L850" class="LineNr"> 850 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L851" class="LineNr"> 851 </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="L852" class="LineNr"> 852 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L853" class="LineNr"> 853 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L854" class="LineNr"> 854 </span>    51/push-ECX/ed
-<span id="L855" class="LineNr"> 855 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L856" class="LineNr"> 856 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L855" class="LineNr"> 855 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L856" class="LineNr"> 856 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L857" class="LineNr"> 857 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L858" class="LineNr"> 858 </span>    e8/call  scan-next-byte/disp32
+<span id="L858" class="LineNr"> 858 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L859" class="LineNr"> 859 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L860" class="LineNr"> 860 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L861" class="LineNr"> 861 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -927,12 +928,12 @@ if ('onhashchange' in window) {
 <span id="L865" class="LineNr"> 865 </span>    <span class="subxComment"># check that scan-next-byte didn't abort</span>
 <span id="L866" class="LineNr"> 866 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L867" class="LineNr"> 867 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L868" class="LineNr"> 868 </span>    68/push  <span class="Constant">&quot;F - test-scan-next-byte-skips-comment: unexpected abort&quot;</span>/imm32
+<span id="L868" class="LineNr"> 868 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L777'>test-scan-next-byte-skips-comment</a>: unexpected abort&quot;</span>/imm32
 <span id="L869" class="LineNr"> 869 </span>    68/push  0/imm32
 <span id="L870" class="LineNr"> 870 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L871" class="LineNr"> 871 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L872" class="LineNr"> 872 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L873" class="LineNr"> 873 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L873" class="LineNr"> 873 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L874" class="LineNr"> 874 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L875" class="LineNr"> 875 </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="L876" class="LineNr"> 876 </span>    <span class="subxComment"># return if abort</span>
@@ -944,7 +945,7 @@ if ('onhashchange' in window) {
 <span id="L882" class="LineNr"> 882 </span>    68/push  0x61/imm32/a
 <span id="L883" class="LineNr"> 883 </span>    50/push-EAX
 <span id="L884" class="LineNr"> 884 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L885" class="LineNr"> 885 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L885" class="LineNr"> 885 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L886" class="LineNr"> 886 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L887" class="LineNr"> 887 </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="L888" class="LineNr"> 888 </span><span class="Constant">$test-scan-next-byte-skips-comment:end</span>:
@@ -954,7 +955,7 @@ if ('onhashchange' in window) {
 <span id="L892" class="LineNr"> 892 </span>    5d/pop-to-EBP
 <span id="L893" class="LineNr"> 893 </span>    c3/return
 <span id="L894" class="LineNr"> 894 </span>
-<span id="L895" class="LineNr"> 895 </span><span class="subxTest">test-scan-next-byte-skips-comment-and-whitespace</span>:
+<span id="L895" class="LineNr"> 895 </span><span class="subxTest"><a href='hex.subx.html#L895'>test-scan-next-byte-skips-comment-and-whitespace</a></span>:
 <span id="L896" class="LineNr"> 896 </span>    <span class="subxH1Comment"># - check that the first byte after a comment and any further whitespace is returned</span>
 <span id="L897" class="LineNr"> 897 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L898" class="LineNr"> 898 </span>    55/push-EBP
@@ -962,59 +963,59 @@ if ('onhashchange' in window) {
 <span id="L900" class="LineNr"> 900 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L901" class="LineNr"> 901 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L902" class="LineNr"> 902 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L903" class="LineNr"> 903 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L903" class="LineNr"> 903 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L904" class="LineNr"> 904 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L905" class="LineNr"> 905 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L905" class="LineNr"> 905 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L906" class="LineNr"> 906 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L907" class="LineNr"> 907 </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="L908" class="LineNr"> 908 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L909" class="LineNr"> 909 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L910" class="LineNr"> 910 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L910" class="LineNr"> 910 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L911" class="LineNr"> 911 </span>    05/add-to-EAX  4/imm32
 <span id="L912" class="LineNr"> 912 </span>    50/push-EAX
 <span id="L913" class="LineNr"> 913 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L914" class="LineNr"> 914 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L914" class="LineNr"> 914 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L915" class="LineNr"> 915 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L916" class="LineNr"> 916 </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="L917" class="LineNr"> 917 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L918" class="LineNr"> 918 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L919" class="LineNr"> 919 </span>    68/push  _test-error-stream/imm32
+<span id="L919" class="LineNr"> 919 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L920" class="LineNr"> 920 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L921" class="LineNr"> 921 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L921" class="LineNr"> 921 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L922" class="LineNr"> 922 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L923" class="LineNr"> 923 </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="L924" class="LineNr"> 924 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L925" class="LineNr"> 925 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L926" class="LineNr"> 926 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L926" class="LineNr"> 926 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L927" class="LineNr"> 927 </span>    05/add-to-EAX  4/imm32
 <span id="L928" class="LineNr"> 928 </span>    50/push-EAX
 <span id="L929" class="LineNr"> 929 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L930" class="LineNr"> 930 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L930" class="LineNr"> 930 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L931" class="LineNr"> 931 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L932" class="LineNr"> 932 </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="L933" class="LineNr"> 933 </span>    <span class="subxComment"># initialize '_test-stream' to input with leading comment and more whitespace after newline</span>
 <span id="L934" class="LineNr"> 934 </span>    <span class="subxS1Comment"># . write(_test-stream, comment)</span>
 <span id="L935" class="LineNr"> 935 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L936" class="LineNr"> 936 </span>    68/push  <span class="Constant">&quot;#x&quot;</span>/imm32
-<span id="L937" class="LineNr"> 937 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L937" class="LineNr"> 937 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L938" class="LineNr"> 938 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L939" class="LineNr"> 939 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L939" class="LineNr"> 939 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L940" class="LineNr"> 940 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L941" class="LineNr"> 941 </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="L942" class="LineNr"> 942 </span>    <span class="subxS1Comment"># . write(_test-stream, Newline)</span>
 <span id="L943" class="LineNr"> 943 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L944" class="LineNr"> 944 </span>    68/push  <span class="SpecialChar"><a href='051test.subx.html#L81'>Newline</a></span>/imm32
-<span id="L945" class="LineNr"> 945 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L944" class="LineNr"> 944 </span>    68/push  <span class="SpecialChar"><a href='../051test.subx.html#L81'>Newline</a></span>/imm32
+<span id="L945" class="LineNr"> 945 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L946" class="LineNr"> 946 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L947" class="LineNr"> 947 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L947" class="LineNr"> 947 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L948" class="LineNr"> 948 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L949" class="LineNr"> 949 </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="L950" class="LineNr"> 950 </span>    <span class="subxS1Comment"># . write(_test-stream, real text)</span>
 <span id="L951" class="LineNr"> 951 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L952" class="LineNr"> 952 </span>    68/push  <span class="Constant">&quot; ab&quot;</span>/imm32
-<span id="L953" class="LineNr"> 953 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L953" class="LineNr"> 953 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L954" class="LineNr"> 954 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L955" class="LineNr"> 955 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L955" class="LineNr"> 955 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L956" class="LineNr"> 956 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L957" class="LineNr"> 957 </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="L958" class="LineNr"> 958 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
@@ -1026,16 +1027,16 @@ if ('onhashchange' in window) {
 <span id="L964" class="LineNr"> 964 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L965" class="LineNr"> 965 </span>    51/push-ECX/ed
 <span id="L966" class="LineNr"> 966 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L967" class="LineNr"> 967 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L967" class="LineNr"> 967 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L968" class="LineNr"> 968 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L969" class="LineNr"> 969 </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="L970" class="LineNr"> 970 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L971" class="LineNr"> 971 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L972" class="LineNr"> 972 </span>    51/push-ECX/ed
-<span id="L973" class="LineNr"> 973 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L974" class="LineNr"> 974 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L973" class="LineNr"> 973 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L974" class="LineNr"> 974 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L975" class="LineNr"> 975 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L976" class="LineNr"> 976 </span>    e8/call  scan-next-byte/disp32
+<span id="L976" class="LineNr"> 976 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L977" class="LineNr"> 977 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L978" class="LineNr"> 978 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L979" class="LineNr"> 979 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -1045,12 +1046,12 @@ if ('onhashchange' in window) {
 <span id="L983" class="LineNr"> 983 </span>    <span class="subxComment"># check that scan-next-byte didn't abort</span>
 <span id="L984" class="LineNr"> 984 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L985" class="LineNr"> 985 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L986" class="LineNr"> 986 </span>    68/push  <span class="Constant">&quot;F - test-scan-next-byte-skips-comment-and-whitespace: unexpected abort&quot;</span>/imm32
+<span id="L986" class="LineNr"> 986 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L895'>test-scan-next-byte-skips-comment-and-whitespace</a>: unexpected abort&quot;</span>/imm32
 <span id="L987" class="LineNr"> 987 </span>    68/push  0/imm32
 <span id="L988" class="LineNr"> 988 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L989" class="LineNr"> 989 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L990" class="LineNr"> 990 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L991" class="LineNr"> 991 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L991" class="LineNr"> 991 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L992" class="LineNr"> 992 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L993" class="LineNr"> 993 </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="L994" class="LineNr"> 994 </span>    <span class="subxComment"># return if abort</span>
@@ -1062,7 +1063,7 @@ if ('onhashchange' in window) {
 <span id="L1000" class="LineNr">1000 </span>    68/push  0x61/imm32/a
 <span id="L1001" class="LineNr">1001 </span>    50/push-EAX
 <span id="L1002" class="LineNr">1002 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1003" class="LineNr">1003 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1003" class="LineNr">1003 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1004" class="LineNr">1004 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1005" class="LineNr">1005 </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="L1006" class="LineNr">1006 </span><span class="Constant">$test-scan-next-byte-skips-comment-and-whitespace:end</span>:
@@ -1072,7 +1073,7 @@ if ('onhashchange' in window) {
 <span id="L1010" class="LineNr">1010 </span>    5d/pop-to-EBP
 <span id="L1011" class="LineNr">1011 </span>    c3/return
 <span id="L1012" class="LineNr">1012 </span>
-<span id="L1013" class="LineNr">1013 </span><span class="subxTest">test-scan-next-byte-skips-whitespace-and-comment</span>:
+<span id="L1013" class="LineNr">1013 </span><span class="subxTest"><a href='hex.subx.html#L1013'>test-scan-next-byte-skips-whitespace-and-comment</a></span>:
 <span id="L1014" class="LineNr">1014 </span>    <span class="subxH1Comment"># - check that the first byte after any whitespace and comments is returned</span>
 <span id="L1015" class="LineNr">1015 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L1016" class="LineNr">1016 </span>    55/push-EBP
@@ -1080,59 +1081,59 @@ if ('onhashchange' in window) {
 <span id="L1018" class="LineNr">1018 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L1019" class="LineNr">1019 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L1020" class="LineNr">1020 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1021" class="LineNr">1021 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1021" class="LineNr">1021 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1022" class="LineNr">1022 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1023" class="LineNr">1023 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1023" class="LineNr">1023 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1024" class="LineNr">1024 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1025" class="LineNr">1025 </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="L1026" class="LineNr">1026 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L1027" class="LineNr">1027 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1028" class="LineNr">1028 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1028" class="LineNr">1028 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1029" class="LineNr">1029 </span>    05/add-to-EAX  4/imm32
 <span id="L1030" class="LineNr">1030 </span>    50/push-EAX
 <span id="L1031" class="LineNr">1031 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1032" class="LineNr">1032 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1032" class="LineNr">1032 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1033" class="LineNr">1033 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1034" class="LineNr">1034 </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="L1035" class="LineNr">1035 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L1036" class="LineNr">1036 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1037" class="LineNr">1037 </span>    68/push  _test-error-stream/imm32
+<span id="L1037" class="LineNr">1037 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L1038" class="LineNr">1038 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1039" class="LineNr">1039 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1039" class="LineNr">1039 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1040" class="LineNr">1040 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1041" class="LineNr">1041 </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="L1042" class="LineNr">1042 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L1043" class="LineNr">1043 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1044" class="LineNr">1044 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L1044" class="LineNr">1044 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L1045" class="LineNr">1045 </span>    05/add-to-EAX  4/imm32
 <span id="L1046" class="LineNr">1046 </span>    50/push-EAX
 <span id="L1047" class="LineNr">1047 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1048" class="LineNr">1048 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1048" class="LineNr">1048 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1049" class="LineNr">1049 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1050" class="LineNr">1050 </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="L1051" class="LineNr">1051 </span>    <span class="subxComment"># initialize '_test-stream' to input with leading whitespace and comment</span>
 <span id="L1052" class="LineNr">1052 </span>    <span class="subxS1Comment"># . write(_test-stream, comment)</span>
 <span id="L1053" class="LineNr">1053 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1054" class="LineNr">1054 </span>    68/push  <span class="Constant">&quot; #x&quot;</span>/imm32
-<span id="L1055" class="LineNr">1055 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1055" class="LineNr">1055 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1056" class="LineNr">1056 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1057" class="LineNr">1057 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1057" class="LineNr">1057 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1058" class="LineNr">1058 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1059" class="LineNr">1059 </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="L1060" class="LineNr">1060 </span>    <span class="subxS1Comment"># . write(_test-stream, Newline)</span>
 <span id="L1061" class="LineNr">1061 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1062" class="LineNr">1062 </span>    68/push  <span class="SpecialChar"><a href='051test.subx.html#L81'>Newline</a></span>/imm32
-<span id="L1063" class="LineNr">1063 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1062" class="LineNr">1062 </span>    68/push  <span class="SpecialChar"><a href='../051test.subx.html#L81'>Newline</a></span>/imm32
+<span id="L1063" class="LineNr">1063 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1064" class="LineNr">1064 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1065" class="LineNr">1065 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1065" class="LineNr">1065 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1066" class="LineNr">1066 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1067" class="LineNr">1067 </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="L1068" class="LineNr">1068 </span>    <span class="subxS1Comment"># . write(_test-stream, real text)</span>
 <span id="L1069" class="LineNr">1069 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1070" class="LineNr">1070 </span>    68/push  <span class="Constant">&quot;ab&quot;</span>/imm32
-<span id="L1071" class="LineNr">1071 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1071" class="LineNr">1071 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1072" class="LineNr">1072 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1073" class="LineNr">1073 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1073" class="LineNr">1073 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1074" class="LineNr">1074 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1075" class="LineNr">1075 </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="L1076" class="LineNr">1076 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
@@ -1144,16 +1145,16 @@ if ('onhashchange' in window) {
 <span id="L1082" class="LineNr">1082 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L1083" class="LineNr">1083 </span>    51/push-ECX/ed
 <span id="L1084" class="LineNr">1084 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1085" class="LineNr">1085 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L1085" class="LineNr">1085 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L1086" class="LineNr">1086 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1087" class="LineNr">1087 </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="L1088" class="LineNr">1088 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L1089" class="LineNr">1089 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1090" class="LineNr">1090 </span>    51/push-ECX/ed
-<span id="L1091" class="LineNr">1091 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L1092" class="LineNr">1092 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1091" class="LineNr">1091 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L1092" class="LineNr">1092 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1093" class="LineNr">1093 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1094" class="LineNr">1094 </span>    e8/call  scan-next-byte/disp32
+<span id="L1094" class="LineNr">1094 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L1095" class="LineNr">1095 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L1096" class="LineNr">1096 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L1097" class="LineNr">1097 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -1163,12 +1164,12 @@ if ('onhashchange' in window) {
 <span id="L1101" class="LineNr">1101 </span>    <span class="subxComment"># check that scan-next-byte didn't abort</span>
 <span id="L1102" class="LineNr">1102 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L1103" class="LineNr">1103 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1104" class="LineNr">1104 </span>    68/push  <span class="Constant">&quot;F - test-scan-next-byte-skips-whitespace-and-comment: unexpected abort&quot;</span>/imm32
+<span id="L1104" class="LineNr">1104 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L1013'>test-scan-next-byte-skips-whitespace-and-comment</a>: unexpected abort&quot;</span>/imm32
 <span id="L1105" class="LineNr">1105 </span>    68/push  0/imm32
 <span id="L1106" class="LineNr">1106 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L1107" class="LineNr">1107 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L1108" class="LineNr">1108 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1109" class="LineNr">1109 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1109" class="LineNr">1109 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1110" class="LineNr">1110 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1111" class="LineNr">1111 </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="L1112" class="LineNr">1112 </span>    <span class="subxComment"># return if abort</span>
@@ -1180,7 +1181,7 @@ if ('onhashchange' in window) {
 <span id="L1118" class="LineNr">1118 </span>    68/push  0x61/imm32/a
 <span id="L1119" class="LineNr">1119 </span>    50/push-EAX
 <span id="L1120" class="LineNr">1120 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1121" class="LineNr">1121 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1121" class="LineNr">1121 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1122" class="LineNr">1122 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1123" class="LineNr">1123 </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="L1124" class="LineNr">1124 </span><span class="Constant">$test-scan-next-byte-skips-whitespace-and-comment:end</span>:
@@ -1190,7 +1191,7 @@ if ('onhashchange' in window) {
 <span id="L1128" class="LineNr">1128 </span>    5d/pop-to-EBP
 <span id="L1129" class="LineNr">1129 </span>    c3/return
 <span id="L1130" class="LineNr">1130 </span>
-<span id="L1131" class="LineNr">1131 </span><span class="subxTest">test-scan-next-byte-reads-final-byte</span>:
+<span id="L1131" class="LineNr">1131 </span><span class="subxTest"><a href='hex.subx.html#L1131'>test-scan-next-byte-reads-final-byte</a></span>:
 <span id="L1132" class="LineNr">1132 </span>    <span class="subxH1Comment"># - check that the final byte in input is returned</span>
 <span id="L1133" class="LineNr">1133 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L1134" class="LineNr">1134 </span>    55/push-EBP
@@ -1198,43 +1199,43 @@ if ('onhashchange' in window) {
 <span id="L1136" class="LineNr">1136 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L1137" class="LineNr">1137 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L1138" class="LineNr">1138 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1139" class="LineNr">1139 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1139" class="LineNr">1139 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1140" class="LineNr">1140 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1141" class="LineNr">1141 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1141" class="LineNr">1141 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1142" class="LineNr">1142 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1143" class="LineNr">1143 </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="L1144" class="LineNr">1144 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L1145" class="LineNr">1145 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1146" class="LineNr">1146 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1146" class="LineNr">1146 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1147" class="LineNr">1147 </span>    05/add-to-EAX  4/imm32
 <span id="L1148" class="LineNr">1148 </span>    50/push-EAX
 <span id="L1149" class="LineNr">1149 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1150" class="LineNr">1150 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1150" class="LineNr">1150 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1151" class="LineNr">1151 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1152" class="LineNr">1152 </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="L1153" class="LineNr">1153 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L1154" class="LineNr">1154 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1155" class="LineNr">1155 </span>    68/push  _test-error-stream/imm32
+<span id="L1155" class="LineNr">1155 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L1156" class="LineNr">1156 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1157" class="LineNr">1157 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1157" class="LineNr">1157 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1158" class="LineNr">1158 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1159" class="LineNr">1159 </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="L1160" class="LineNr">1160 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L1161" class="LineNr">1161 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1162" class="LineNr">1162 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L1162" class="LineNr">1162 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L1163" class="LineNr">1163 </span>    05/add-to-EAX  4/imm32
 <span id="L1164" class="LineNr">1164 </span>    50/push-EAX
 <span id="L1165" class="LineNr">1165 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1166" class="LineNr">1166 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1166" class="LineNr">1166 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1167" class="LineNr">1167 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1168" class="LineNr">1168 </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="L1169" class="LineNr">1169 </span>    <span class="subxComment"># initialize '_test-stream' to input with single character</span>
 <span id="L1170" class="LineNr">1170 </span>    <span class="subxS1Comment"># . write(_test-stream, character)</span>
 <span id="L1171" class="LineNr">1171 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1172" class="LineNr">1172 </span>    68/push  <span class="Constant">&quot;a&quot;</span>/imm32
-<span id="L1173" class="LineNr">1173 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1173" class="LineNr">1173 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1174" class="LineNr">1174 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1175" class="LineNr">1175 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1175" class="LineNr">1175 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1176" class="LineNr">1176 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1177" class="LineNr">1177 </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="L1178" class="LineNr">1178 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
@@ -1246,16 +1247,16 @@ if ('onhashchange' in window) {
 <span id="L1184" class="LineNr">1184 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L1185" class="LineNr">1185 </span>    51/push-ECX/ed
 <span id="L1186" class="LineNr">1186 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1187" class="LineNr">1187 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L1187" class="LineNr">1187 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L1188" class="LineNr">1188 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1189" class="LineNr">1189 </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="L1190" class="LineNr">1190 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L1191" class="LineNr">1191 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1192" class="LineNr">1192 </span>    51/push-ECX/ed
-<span id="L1193" class="LineNr">1193 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L1194" class="LineNr">1194 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1193" class="LineNr">1193 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L1194" class="LineNr">1194 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1195" class="LineNr">1195 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1196" class="LineNr">1196 </span>    e8/call  scan-next-byte/disp32
+<span id="L1196" class="LineNr">1196 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L1197" class="LineNr">1197 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L1198" class="LineNr">1198 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L1199" class="LineNr">1199 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -1265,12 +1266,12 @@ if ('onhashchange' in window) {
 <span id="L1203" class="LineNr">1203 </span>    <span class="subxComment"># check that scan-next-byte didn't abort</span>
 <span id="L1204" class="LineNr">1204 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L1205" class="LineNr">1205 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1206" class="LineNr">1206 </span>    68/push  <span class="Constant">&quot;F - test-scan-next-byte-reads-final-byte: unexpected abort&quot;</span>/imm32
+<span id="L1206" class="LineNr">1206 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L1131'>test-scan-next-byte-reads-final-byte</a>: unexpected abort&quot;</span>/imm32
 <span id="L1207" class="LineNr">1207 </span>    68/push  0/imm32
 <span id="L1208" class="LineNr">1208 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L1209" class="LineNr">1209 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L1210" class="LineNr">1210 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1211" class="LineNr">1211 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1211" class="LineNr">1211 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1212" class="LineNr">1212 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1213" class="LineNr">1213 </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="L1214" class="LineNr">1214 </span>    <span class="subxComment"># return if abort</span>
@@ -1282,7 +1283,7 @@ if ('onhashchange' in window) {
 <span id="L1220" class="LineNr">1220 </span>    68/push  0x61/imm32/a
 <span id="L1221" class="LineNr">1221 </span>    50/push-EAX
 <span id="L1222" class="LineNr">1222 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1223" class="LineNr">1223 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1223" class="LineNr">1223 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1224" class="LineNr">1224 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1225" class="LineNr">1225 </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="L1226" class="LineNr">1226 </span><span class="Constant">$test-scan-next-byte-reads-final-byte:end</span>:
@@ -1292,7 +1293,7 @@ if ('onhashchange' in window) {
 <span id="L1230" class="LineNr">1230 </span>    5d/pop-to-EBP
 <span id="L1231" class="LineNr">1231 </span>    c3/return
 <span id="L1232" class="LineNr">1232 </span>
-<span id="L1233" class="LineNr">1233 </span><span class="subxTest">test-scan-next-byte-handles-eof</span>:
+<span id="L1233" class="LineNr">1233 </span><span class="subxTest"><a href='hex.subx.html#L1233'>test-scan-next-byte-handles-eof</a></span>:
 <span id="L1234" class="LineNr">1234 </span>    <span class="subxH1Comment"># - check that the right sentinel value is returned when there's no data remaining to be read</span>
 <span id="L1235" class="LineNr">1235 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L1236" class="LineNr">1236 </span>    55/push-EBP
@@ -1300,34 +1301,34 @@ if ('onhashchange' in window) {
 <span id="L1238" class="LineNr">1238 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L1239" class="LineNr">1239 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L1240" class="LineNr">1240 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1241" class="LineNr">1241 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1241" class="LineNr">1241 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1242" class="LineNr">1242 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1243" class="LineNr">1243 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1243" class="LineNr">1243 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1244" class="LineNr">1244 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1245" class="LineNr">1245 </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="L1246" class="LineNr">1246 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L1247" class="LineNr">1247 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1248" class="LineNr">1248 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1248" class="LineNr">1248 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1249" class="LineNr">1249 </span>    05/add-to-EAX  4/imm32
 <span id="L1250" class="LineNr">1250 </span>    50/push-EAX
 <span id="L1251" class="LineNr">1251 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1252" class="LineNr">1252 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1252" class="LineNr">1252 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1253" class="LineNr">1253 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1254" class="LineNr">1254 </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="L1255" class="LineNr">1255 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L1256" class="LineNr">1256 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1257" class="LineNr">1257 </span>    68/push  _test-error-stream/imm32
+<span id="L1257" class="LineNr">1257 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L1258" class="LineNr">1258 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1259" class="LineNr">1259 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1259" class="LineNr">1259 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1260" class="LineNr">1260 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1261" class="LineNr">1261 </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="L1262" class="LineNr">1262 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L1263" class="LineNr">1263 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1264" class="LineNr">1264 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L1264" class="LineNr">1264 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L1265" class="LineNr">1265 </span>    05/add-to-EAX  4/imm32
 <span id="L1266" class="LineNr">1266 </span>    50/push-EAX
 <span id="L1267" class="LineNr">1267 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1268" class="LineNr">1268 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1268" class="LineNr">1268 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1269" class="LineNr">1269 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1270" class="LineNr">1270 </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="L1271" class="LineNr">1271 </span>    <span class="subxComment"># leave '_test-stream' empty</span>
@@ -1340,16 +1341,16 @@ if ('onhashchange' in window) {
 <span id="L1278" class="LineNr">1278 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L1279" class="LineNr">1279 </span>    51/push-ECX/ed
 <span id="L1280" class="LineNr">1280 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1281" class="LineNr">1281 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L1281" class="LineNr">1281 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L1282" class="LineNr">1282 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1283" class="LineNr">1283 </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="L1284" class="LineNr">1284 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L1285" class="LineNr">1285 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1286" class="LineNr">1286 </span>    51/push-ECX/ed
-<span id="L1287" class="LineNr">1287 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L1288" class="LineNr">1288 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1287" class="LineNr">1287 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L1288" class="LineNr">1288 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1289" class="LineNr">1289 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1290" class="LineNr">1290 </span>    e8/call  scan-next-byte/disp32
+<span id="L1290" class="LineNr">1290 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L1291" class="LineNr">1291 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L1292" class="LineNr">1292 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L1293" class="LineNr">1293 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -1359,12 +1360,12 @@ if ('onhashchange' in window) {
 <span id="L1297" class="LineNr">1297 </span>    <span class="subxComment"># check that scan-next-byte didn't abort</span>
 <span id="L1298" class="LineNr">1298 </span>    <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 0, msg)</span>
 <span id="L1299" class="LineNr">1299 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1300" class="LineNr">1300 </span>    68/push  <span class="Constant">&quot;F - test-scan-next-byte-handles-eof: unexpected abort&quot;</span>/imm32
+<span id="L1300" class="LineNr">1300 </span>    68/push  <span class="Constant">&quot;F - <a href='hex.subx.html#L1233'>test-scan-next-byte-handles-eof</a>: unexpected abort&quot;</span>/imm32
 <span id="L1301" class="LineNr">1301 </span>    68/push  0/imm32
 <span id="L1302" class="LineNr">1302 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L1303" class="LineNr">1303 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L1304" class="LineNr">1304 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1305" class="LineNr">1305 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1305" class="LineNr">1305 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1306" class="LineNr">1306 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1307" class="LineNr">1307 </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="L1308" class="LineNr">1308 </span>    <span class="subxComment"># return if abort</span>
@@ -1376,7 +1377,7 @@ if ('onhashchange' in window) {
 <span id="L1314" class="LineNr">1314 </span>    68/push  0xffffffff/imm32/eof
 <span id="L1315" class="LineNr">1315 </span>    50/push-EAX
 <span id="L1316" class="LineNr">1316 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1317" class="LineNr">1317 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1317" class="LineNr">1317 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1318" class="LineNr">1318 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1319" class="LineNr">1319 </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="L1320" class="LineNr">1320 </span><span class="Constant">$test-scan-next-byte-handles-eof:end</span>:
@@ -1386,7 +1387,7 @@ if ('onhashchange' in window) {
 <span id="L1324" class="LineNr">1324 </span>    5d/pop-to-EBP
 <span id="L1325" class="LineNr">1325 </span>    c3/return
 <span id="L1326" class="LineNr">1326 </span>
-<span id="L1327" class="LineNr">1327 </span><span class="subxTest">test-scan-next-byte-aborts-on-invalid-byte</span>:
+<span id="L1327" class="LineNr">1327 </span><span class="subxTest"><a href='hex.subx.html#L1327'>test-scan-next-byte-aborts-on-invalid-byte</a></span>:
 <span id="L1328" class="LineNr">1328 </span>    <span class="subxH1Comment"># - check that the a bad byte immediately aborts</span>
 <span id="L1329" class="LineNr">1329 </span>    <span class="subxComment"># This test uses exit-descriptors. Use EBP for setting up local variables.</span>
 <span id="L1330" class="LineNr">1330 </span>    55/push-EBP
@@ -1394,43 +1395,43 @@ if ('onhashchange' in window) {
 <span id="L1332" class="LineNr">1332 </span>    <span class="subxComment"># clear all streams</span>
 <span id="L1333" class="LineNr">1333 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L1334" class="LineNr">1334 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1335" class="LineNr">1335 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1335" class="LineNr">1335 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1336" class="LineNr">1336 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1337" class="LineNr">1337 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1337" class="LineNr">1337 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1338" class="LineNr">1338 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1339" class="LineNr">1339 </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="L1340" class="LineNr">1340 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L1341" class="LineNr">1341 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1342" class="LineNr">1342 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1342" class="LineNr">1342 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1343" class="LineNr">1343 </span>    05/add-to-EAX  4/imm32
 <span id="L1344" class="LineNr">1344 </span>    50/push-EAX
 <span id="L1345" class="LineNr">1345 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1346" class="LineNr">1346 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1346" class="LineNr">1346 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1347" class="LineNr">1347 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1348" class="LineNr">1348 </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="L1349" class="LineNr">1349 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-stream)</span>
 <span id="L1350" class="LineNr">1350 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1351" class="LineNr">1351 </span>    68/push  _test-error-stream/imm32
+<span id="L1351" class="LineNr">1351 </span>    68/push  <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L1352" class="LineNr">1352 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1353" class="LineNr">1353 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1353" class="LineNr">1353 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1354" class="LineNr">1354 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1355" class="LineNr">1355 </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="L1356" class="LineNr">1356 </span>    <span class="subxS1Comment"># . clear-stream(_test-error-buffered-file+4)</span>
 <span id="L1357" class="LineNr">1357 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1358" class="LineNr">1358 </span>    b8/copy-to-EAX  _test-error-buffered-file/imm32
+<span id="L1358" class="LineNr">1358 </span>    b8/copy-to-EAX  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
 <span id="L1359" class="LineNr">1359 </span>    05/add-to-EAX  4/imm32
 <span id="L1360" class="LineNr">1360 </span>    50/push-EAX
 <span id="L1361" class="LineNr">1361 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1362" class="LineNr">1362 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1362" class="LineNr">1362 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1363" class="LineNr">1363 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1364" class="LineNr">1364 </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="L1365" class="LineNr">1365 </span>    <span class="subxComment"># initialize '_test-stream' to &quot;x&quot;</span>
 <span id="L1366" class="LineNr">1366 </span>    <span class="subxS1Comment"># . write(_test-stream, &quot;x&quot;)</span>
 <span id="L1367" class="LineNr">1367 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1368" class="LineNr">1368 </span>    68/push  <span class="Constant">&quot;x&quot;</span>/imm32
-<span id="L1369" class="LineNr">1369 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1369" class="LineNr">1369 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1370" class="LineNr">1370 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1371" class="LineNr">1371 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1371" class="LineNr">1371 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1372" class="LineNr">1372 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1373" class="LineNr">1373 </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="L1374" class="LineNr">1374 </span>    <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
@@ -1442,16 +1443,16 @@ if ('onhashchange' in window) {
 <span id="L1380" class="LineNr">1380 </span>    68/push  0xc/imm32/nbytes-of-args-for-scan-next-byte
 <span id="L1381" class="LineNr">1381 </span>    51/push-ECX/ed
 <span id="L1382" class="LineNr">1382 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1383" class="LineNr">1383 </span>    e8/call  <a href='057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
+<span id="L1383" class="LineNr">1383 </span>    e8/call  <a href='../057stop.subx.html#L51'>tailor-exit-descriptor</a>/disp32
 <span id="L1384" class="LineNr">1384 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1385" class="LineNr">1385 </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="L1386" class="LineNr">1386 </span>    <span class="subxComment"># EAX = scan-next-byte(_test-buffered-file, _test-error-buffered-file, ed)</span>
 <span id="L1387" class="LineNr">1387 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1388" class="LineNr">1388 </span>    51/push-ECX/ed
-<span id="L1389" class="LineNr">1389 </span>    68/push  _test-error-buffered-file/imm32
-<span id="L1390" class="LineNr">1390 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1389" class="LineNr">1389 </span>    68/push  <a href='hex.subx.html#L1700'>_test-error-buffered-file</a>/imm32
+<span id="L1390" class="LineNr">1390 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1391" class="LineNr">1391 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1392" class="LineNr">1392 </span>    e8/call  scan-next-byte/disp32
+<span id="L1392" class="LineNr">1392 </span>    e8/call  <a href='hex.subx.html#L494'>scan-next-byte</a>/disp32
 <span id="L1393" class="LineNr">1393 </span>    <span class="subxComment"># registers except ESP may be clobbered at this point</span>
 <span id="L1394" class="LineNr">1394 </span>    <span class="subxComment"># pop args to scan-next-byte</span>
 <span id="L1395" class="LineNr">1395 </span>    <span class="subxS2Comment"># . . discard first 2 args</span>
@@ -1466,7 +1467,7 @@ if ('onhashchange' in window) {
 <span id="L1404" class="LineNr">1404 </span>    <span class="subxS2Comment"># . . push ed-&gt;value</span>
 <span id="L1405" class="LineNr">1405 </span>    ff          6/subop/push        1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(ECX+4)</span>
 <span id="L1406" class="LineNr">1406 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1407" class="LineNr">1407 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1407" class="LineNr">1407 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1408" class="LineNr">1408 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1409" class="LineNr">1409 </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="L1410" class="LineNr">1410 </span><span class="Constant">$test-scan-next-byte-aborts-on-invalid-byte:end</span>:
@@ -1476,7 +1477,7 @@ if ('onhashchange' in window) {
 <span id="L1414" class="LineNr">1414 </span>    5d/pop-to-EBP
 <span id="L1415" class="LineNr">1415 </span>    c3/return
 <span id="L1416" class="LineNr">1416 </span>
-<span id="L1417" class="LineNr">1417 </span><span class="subxFunction">is-hex-lowercase-byte?</span>:  <span class="subxComment"># c : byte -&gt; bool/EAX</span>
+<span id="L1417" class="LineNr">1417 </span><span class="subxFunction"><a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a></span>:  <span class="subxComment"># c : byte -&gt; bool/EAX</span>
 <span id="L1418" class="LineNr">1418 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L1419" class="LineNr">1419 </span>    55/push-EBP
 <span id="L1420" class="LineNr">1420 </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>
@@ -1508,12 +1509,12 @@ if ('onhashchange' in window) {
 <span id="L1446" class="LineNr">1446 </span>    5d/pop-to-EBP
 <span id="L1447" class="LineNr">1447 </span>    c3/return
 <span id="L1448" class="LineNr">1448 </span>
-<span id="L1449" class="LineNr">1449 </span><span class="subxTest">test-hex-below-0</span>:
+<span id="L1449" class="LineNr">1449 </span><span class="subxTest"><a href='hex.subx.html#L1449'>test-hex-below-0</a></span>:
 <span id="L1450" class="LineNr">1450 </span>    <span class="subxComment"># is-hex-lowercase-byte?(0x2f)</span>
 <span id="L1451" class="LineNr">1451 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1452" class="LineNr">1452 </span>    68/push  0x2f/imm32
 <span id="L1453" class="LineNr">1453 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1454" class="LineNr">1454 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L1454" class="LineNr">1454 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L1455" class="LineNr">1455 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1456" class="LineNr">1456 </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="L1457" class="LineNr">1457 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -1522,17 +1523,17 @@ if ('onhashchange' in window) {
 <span id="L1460" class="LineNr">1460 </span>    68/push  0/imm32/false
 <span id="L1461" class="LineNr">1461 </span>    50/push-EAX
 <span id="L1462" class="LineNr">1462 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1463" class="LineNr">1463 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1463" class="LineNr">1463 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1464" class="LineNr">1464 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1465" class="LineNr">1465 </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="L1466" class="LineNr">1466 </span>    c3/return
 <span id="L1467" class="LineNr">1467 </span>
-<span id="L1468" class="LineNr">1468 </span><span class="subxTest">test-hex-0-to-9</span>:
+<span id="L1468" class="LineNr">1468 </span><span class="subxTest"><a href='hex.subx.html#L1468'>test-hex-0-to-9</a></span>:
 <span id="L1469" class="LineNr">1469 </span>    <span class="subxComment"># is-hex-lowercase-byte?(0x30)</span>
 <span id="L1470" class="LineNr">1470 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1471" class="LineNr">1471 </span>    68/push  0x30/imm32
 <span id="L1472" class="LineNr">1472 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1473" class="LineNr">1473 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L1473" class="LineNr">1473 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L1474" class="LineNr">1474 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1475" class="LineNr">1475 </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="L1476" class="LineNr">1476 </span>    <span class="subxComment"># check-ints-equal(EAX, 1, msg)</span>
@@ -1541,14 +1542,14 @@ if ('onhashchange' in window) {
 <span id="L1479" class="LineNr">1479 </span>    68/push  1/imm32/true
 <span id="L1480" class="LineNr">1480 </span>    50/push-EAX
 <span id="L1481" class="LineNr">1481 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1482" class="LineNr">1482 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1482" class="LineNr">1482 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1483" class="LineNr">1483 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1484" class="LineNr">1484 </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="L1485" class="LineNr">1485 </span>    <span class="subxComment"># is-hex-lowercase-byte?(0x39)</span>
 <span id="L1486" class="LineNr">1486 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1487" class="LineNr">1487 </span>    68/push  0x39/imm32
 <span id="L1488" class="LineNr">1488 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1489" class="LineNr">1489 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L1489" class="LineNr">1489 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L1490" class="LineNr">1490 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1491" class="LineNr">1491 </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="L1492" class="LineNr">1492 </span>    <span class="subxComment"># check-ints-equal(EAX, 1, msg)</span>
@@ -1557,17 +1558,17 @@ if ('onhashchange' in window) {
 <span id="L1495" class="LineNr">1495 </span>    68/push  1/imm32/true
 <span id="L1496" class="LineNr">1496 </span>    50/push-EAX
 <span id="L1497" class="LineNr">1497 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1498" class="LineNr">1498 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1498" class="LineNr">1498 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1499" class="LineNr">1499 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1500" class="LineNr">1500 </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="L1501" class="LineNr">1501 </span>    c3/return
 <span id="L1502" class="LineNr">1502 </span>
-<span id="L1503" class="LineNr">1503 </span><span class="subxTest">test-hex-above-9-to-a</span>:
+<span id="L1503" class="LineNr">1503 </span><span class="subxTest"><a href='hex.subx.html#L1503'>test-hex-above-9-to-a</a></span>:
 <span id="L1504" class="LineNr">1504 </span>    <span class="subxComment"># is-hex-lowercase-byte?(0x3a)</span>
 <span id="L1505" class="LineNr">1505 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1506" class="LineNr">1506 </span>    68/push  0x3a/imm32
 <span id="L1507" class="LineNr">1507 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1508" class="LineNr">1508 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L1508" class="LineNr">1508 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L1509" class="LineNr">1509 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1510" class="LineNr">1510 </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="L1511" class="LineNr">1511 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -1576,17 +1577,17 @@ if ('onhashchange' in window) {
 <span id="L1514" class="LineNr">1514 </span>    68/push  0/imm32/false
 <span id="L1515" class="LineNr">1515 </span>    50/push-EAX
 <span id="L1516" class="LineNr">1516 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1517" class="LineNr">1517 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1517" class="LineNr">1517 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1518" class="LineNr">1518 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1519" class="LineNr">1519 </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="L1520" class="LineNr">1520 </span>    c3/return
 <span id="L1521" class="LineNr">1521 </span>
-<span id="L1522" class="LineNr">1522 </span><span class="subxTest">test-hex-a-to-f</span>:
+<span id="L1522" class="LineNr">1522 </span><span class="subxTest"><a href='hex.subx.html#L1522'>test-hex-a-to-f</a></span>:
 <span id="L1523" class="LineNr">1523 </span>    <span class="subxComment"># is-hex-lowercase-byte?(0x61)</span>
 <span id="L1524" class="LineNr">1524 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1525" class="LineNr">1525 </span>    68/push  0x61/imm32
 <span id="L1526" class="LineNr">1526 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1527" class="LineNr">1527 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L1527" class="LineNr">1527 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L1528" class="LineNr">1528 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1529" class="LineNr">1529 </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="L1530" class="LineNr">1530 </span>    <span class="subxComment"># check-ints-equal(EAX, 1, msg)</span>
@@ -1595,14 +1596,14 @@ if ('onhashchange' in window) {
 <span id="L1533" class="LineNr">1533 </span>    68/push  1/imm32/true
 <span id="L1534" class="LineNr">1534 </span>    50/push-EAX
 <span id="L1535" class="LineNr">1535 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1536" class="LineNr">1536 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1536" class="LineNr">1536 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1537" class="LineNr">1537 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1538" class="LineNr">1538 </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="L1539" class="LineNr">1539 </span>    <span class="subxComment"># is-hex-lowercase-byte?(0x66)</span>
 <span id="L1540" class="LineNr">1540 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1541" class="LineNr">1541 </span>    68/push  0x66/imm32
 <span id="L1542" class="LineNr">1542 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1543" class="LineNr">1543 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L1543" class="LineNr">1543 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L1544" class="LineNr">1544 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1545" class="LineNr">1545 </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="L1546" class="LineNr">1546 </span>    <span class="subxComment"># check-ints-equal(EAX, 1, msg)</span>
@@ -1611,17 +1612,17 @@ if ('onhashchange' in window) {
 <span id="L1549" class="LineNr">1549 </span>    68/push  1/imm32/true
 <span id="L1550" class="LineNr">1550 </span>    50/push-EAX
 <span id="L1551" class="LineNr">1551 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1552" class="LineNr">1552 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1552" class="LineNr">1552 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1553" class="LineNr">1553 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1554" class="LineNr">1554 </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="L1555" class="LineNr">1555 </span>    c3/return
 <span id="L1556" class="LineNr">1556 </span>
-<span id="L1557" class="LineNr">1557 </span><span class="subxTest">test-hex-above-f</span>:
+<span id="L1557" class="LineNr">1557 </span><span class="subxTest"><a href='hex.subx.html#L1557'>test-hex-above-f</a></span>:
 <span id="L1558" class="LineNr">1558 </span>    <span class="subxComment"># is-hex-lowercase-byte?(0x67)</span>
 <span id="L1559" class="LineNr">1559 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1560" class="LineNr">1560 </span>    68/push  0x67/imm32
 <span id="L1561" class="LineNr">1561 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1562" class="LineNr">1562 </span>    e8/call  is-hex-lowercase-byte?/disp32
+<span id="L1562" class="LineNr">1562 </span>    e8/call  <a href='hex.subx.html#L1417'>is-hex-lowercase-byte?</a>/disp32
 <span id="L1563" class="LineNr">1563 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1564" class="LineNr">1564 </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="L1565" class="LineNr">1565 </span>    <span class="subxComment"># check-ints-equal(EAX, 0, msg)</span>
@@ -1630,12 +1631,12 @@ if ('onhashchange' in window) {
 <span id="L1568" class="LineNr">1568 </span>    68/push  0/imm32/false
 <span id="L1569" class="LineNr">1569 </span>    50/push-EAX
 <span id="L1570" class="LineNr">1570 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1571" class="LineNr">1571 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1571" class="LineNr">1571 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1572" class="LineNr">1572 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1573" class="LineNr">1573 </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="L1574" class="LineNr">1574 </span>    c3/return
 <span id="L1575" class="LineNr">1575 </span>
-<span id="L1576" class="LineNr">1576 </span><span class="subxFunction">parse-hex-digit</span>:  <span class="subxComment"># in/EAX : byte -&gt; out/EAX : num</span>
+<span id="L1576" class="LineNr">1576 </span><span class="subxFunction"><a href='hex.subx.html#L1576'>parse-hex-digit</a></span>:  <span class="subxComment"># in/EAX : byte -&gt; out/EAX : num</span>
 <span id="L1577" class="LineNr">1577 </span>    <span class="subxComment"># no error checking; accepts argument in EAX</span>
 <span id="L1578" class="LineNr">1578 </span>    <span class="subxComment"># if EAX &lt;= '9' return EAX - '0'</span>
 <span id="L1579" class="LineNr">1579 </span>    3d/compare-EAX  0x39/imm32/9
@@ -1647,7 +1648,7 @@ if ('onhashchange' in window) {
 <span id="L1585" class="LineNr">1585 </span>    2d/subtract-from-EAX  0x57/imm32/a-10
 <span id="L1586" class="LineNr">1586 </span>    c3/return
 <span id="L1587" class="LineNr">1587 </span>
-<span id="L1588" class="LineNr">1588 </span><span class="subxFunction">skip-until-newline</span>:  <span class="subxComment"># in : (address buffered-file) -&gt; &lt;void&gt;</span>
+<span id="L1588" class="LineNr">1588 </span><span class="subxFunction"><a href='hex.subx.html#L1588'>skip-until-newline</a></span>:  <span class="subxComment"># in : (address buffered-file) -&gt; &lt;void&gt;</span>
 <span id="L1589" class="LineNr">1589 </span>    <span class="subxComment"># pseudocode:</span>
 <span id="L1590" class="LineNr">1590 </span>    <span class="subxComment">#   push EAX</span>
 <span id="L1591" class="LineNr">1591 </span>    <span class="subxComment">#   repeatedly:</span>
@@ -1665,7 +1666,7 @@ if ('onhashchange' in window) {
 <span id="L1603" class="LineNr">1603 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1604" class="LineNr">1604 </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="L1605" class="LineNr">1605 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1606" class="LineNr">1606 </span>    e8/call  <a href='059read-byte.subx.html#L45'>read-byte</a>/disp32
+<span id="L1606" class="LineNr">1606 </span>    e8/call  <a href='../059read-byte.subx.html#L45'>read-byte</a>/disp32
 <span id="L1607" class="LineNr">1607 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1608" class="LineNr">1608 </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="L1609" class="LineNr">1609 </span>    <span class="subxS1Comment"># . if EAX == 0xffffffff break</span>
@@ -1682,65 +1683,65 @@ if ('onhashchange' in window) {
 <span id="L1620" class="LineNr">1620 </span>    5d/pop-to-EBP
 <span id="L1621" class="LineNr">1621 </span>    c3/return
 <span id="L1622" class="LineNr">1622 </span>
-<span id="L1623" class="LineNr">1623 </span><span class="subxTest">test-skip-until-newline</span>:
+<span id="L1623" class="LineNr">1623 </span><span class="subxTest"><a href='hex.subx.html#L1623'>test-skip-until-newline</a></span>:
 <span id="L1624" class="LineNr">1624 </span>    <span class="subxH1Comment"># - check that the read pointer points after the newline</span>
 <span id="L1625" class="LineNr">1625 </span>    <span class="subxComment"># setup</span>
 <span id="L1626" class="LineNr">1626 </span>    <span class="subxS1Comment"># . clear-stream(_test-stream)</span>
 <span id="L1627" class="LineNr">1627 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1628" class="LineNr">1628 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1628" class="LineNr">1628 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1629" class="LineNr">1629 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1630" class="LineNr">1630 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1630" class="LineNr">1630 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1631" class="LineNr">1631 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1632" class="LineNr">1632 </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="L1633" class="LineNr">1633 </span>    <span class="subxS1Comment"># . clear-stream(_test-buffered-file+4)</span>
 <span id="L1634" class="LineNr">1634 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1635" class="LineNr">1635 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1635" class="LineNr">1635 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1636" class="LineNr">1636 </span>    05/add-to-EAX  4/imm32
 <span id="L1637" class="LineNr">1637 </span>    50/push-EAX
 <span id="L1638" class="LineNr">1638 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1639" class="LineNr">1639 </span>    e8/call  <a href='056write.subx.html#L85'>clear-stream</a>/disp32
+<span id="L1639" class="LineNr">1639 </span>    e8/call  <a href='../056write.subx.html#L85'>clear-stream</a>/disp32
 <span id="L1640" class="LineNr">1640 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1641" class="LineNr">1641 </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="L1642" class="LineNr">1642 </span>    <span class="subxComment"># initialize '_test-stream' to &quot;abc\nde&quot;</span>
 <span id="L1643" class="LineNr">1643 </span>    <span class="subxS1Comment"># . write(_test-stream, &quot;abc&quot;)</span>
 <span id="L1644" class="LineNr">1644 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1645" class="LineNr">1645 </span>    68/push  <span class="Constant">&quot;abc&quot;</span>/imm32
-<span id="L1646" class="LineNr">1646 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1646" class="LineNr">1646 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1647" class="LineNr">1647 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1648" class="LineNr">1648 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1648" class="LineNr">1648 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1649" class="LineNr">1649 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1650" class="LineNr">1650 </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="L1651" class="LineNr">1651 </span>    <span class="subxS1Comment"># . write(_test-stream, Newline)</span>
 <span id="L1652" class="LineNr">1652 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1653" class="LineNr">1653 </span>    68/push  <span class="SpecialChar"><a href='051test.subx.html#L81'>Newline</a></span>/imm32
-<span id="L1654" class="LineNr">1654 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1653" class="LineNr">1653 </span>    68/push  <span class="SpecialChar"><a href='../051test.subx.html#L81'>Newline</a></span>/imm32
+<span id="L1654" class="LineNr">1654 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1655" class="LineNr">1655 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1656" class="LineNr">1656 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1656" class="LineNr">1656 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1657" class="LineNr">1657 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1658" class="LineNr">1658 </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="L1659" class="LineNr">1659 </span>    <span class="subxS1Comment"># . write(_test-stream, &quot;de&quot;)</span>
 <span id="L1660" class="LineNr">1660 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1661" class="LineNr">1661 </span>    68/push  <span class="Constant">&quot;de&quot;</span>/imm32
-<span id="L1662" class="LineNr">1662 </span>    68/push  <a href='056write.subx.html#L193'>_test-stream</a>/imm32
+<span id="L1662" class="LineNr">1662 </span>    68/push  <a href='../056write.subx.html#L193'>_test-stream</a>/imm32
 <span id="L1663" class="LineNr">1663 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1664" class="LineNr">1664 </span>    e8/call  <a href='056write.subx.html#L31'>write</a>/disp32
+<span id="L1664" class="LineNr">1664 </span>    e8/call  <a href='../056write.subx.html#L31'>write</a>/disp32
 <span id="L1665" class="LineNr">1665 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1666" class="LineNr">1666 </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="L1667" class="LineNr">1667 </span>    <span class="subxComment"># skip-until-newline(_test-buffered-file)</span>
 <span id="L1668" class="LineNr">1668 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L1669" class="LineNr">1669 </span>    68/push  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1669" class="LineNr">1669 </span>    68/push  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1670" class="LineNr">1670 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1671" class="LineNr">1671 </span>    e8/call  skip-until-newline/disp32
+<span id="L1671" class="LineNr">1671 </span>    e8/call  <a href='hex.subx.html#L1588'>skip-until-newline</a>/disp32
 <span id="L1672" class="LineNr">1672 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1673" class="LineNr">1673 </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="L1674" class="LineNr">1674 </span>    <span class="subxComment"># check-ints-equal(_test-buffered-file-&gt;read, 4, msg)</span>
 <span id="L1675" class="LineNr">1675 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1676" class="LineNr">1676 </span>    68/push  <span class="Constant">&quot;F - test-skip-until-newline&quot;</span>/imm32
 <span id="L1677" class="LineNr">1677 </span>    68/push  4/imm32
-<span id="L1678" class="LineNr">1678 </span>    b8/copy-to-EAX  <a href='059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
+<span id="L1678" class="LineNr">1678 </span>    b8/copy-to-EAX  <a href='../059read-byte.subx.html#L290'>_test-buffered-file</a>/imm32
 <span id="L1679" class="LineNr">1679 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <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 *(EAX+8)</span>
 <span id="L1680" class="LineNr">1680 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1681" class="LineNr">1681 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L1681" class="LineNr">1681 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L1682" class="LineNr">1682 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1683" class="LineNr">1683 </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="L1684" class="LineNr">1684 </span>    <span class="subxS1Comment"># . end</span>
@@ -1748,7 +1749,7 @@ if ('onhashchange' in window) {
 <span id="L1686" class="LineNr">1686 </span>
 <span id="L1687" class="LineNr">1687 </span>== data
 <span id="L1688" class="LineNr">1688 </span>
-<span id="L1689" class="LineNr">1689 </span><span class="subxMinorFunction">_test-error-stream</span>:
+<span id="L1689" class="LineNr">1689 </span><span class="subxMinorFunction"><a href='hex.subx.html#L1689'>_test-error-stream</a></span>:
 <span id="L1690" class="LineNr">1690 </span>    <span class="subxComment"># current write index</span>
 <span id="L1691" class="LineNr">1691 </span>    00 00 00 00
 <span id="L1692" class="LineNr">1692 </span>    <span class="subxComment"># current read index</span>
@@ -1759,9 +1760,9 @@ if ('onhashchange' in window) {
 <span id="L1697" class="LineNr">1697 </span>    00 00 00 00 00 00 00 00  <span class="subxComment"># 8 bytes</span>
 <span id="L1698" class="LineNr">1698 </span>
 <span id="L1699" class="LineNr">1699 </span><span class="subxComment"># a test buffered file for _test-stream</span>
-<span id="L1700" class="LineNr">1700 </span><span class="subxMinorFunction">_test-error-buffered-file</span>:
+<span id="L1700" class="LineNr">1700 </span><span class="subxMinorFunction"><a href='hex.subx.html#L1700'>_test-error-buffered-file</a></span>:
 <span id="L1701" class="LineNr">1701 </span>    <span class="subxComment"># file descriptor or (address stream)</span>
-<span id="L1702" class="LineNr">1702 </span>    _test-error-stream/imm32
+<span id="L1702" class="LineNr">1702 </span>    <a href='hex.subx.html#L1689'>_test-error-stream</a>/imm32
 <span id="L1703" class="LineNr">1703 </span>    <span class="subxComment"># current write index</span>
 <span id="L1704" class="LineNr">1704 </span>    00 00 00 00
 <span id="L1705" class="LineNr">1705 </span>    <span class="subxComment"># current read index</span>
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>