diff options
author | Kartik Agaram <vc@akkartik.com> | 2018-12-30 00:02:42 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2018-12-30 00:02:42 -0800 |
commit | 08a0eed699b8ea07d37163aba610c8e04feee003 (patch) | |
tree | aab05fd9b23ca4f5cfc6492ade82896f3ba5e4bb | |
parent | ac07e589b3e912c704c2011d543f18b16712ff15 (diff) | |
download | mu-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.
185 files changed, 568 insertions, 345 deletions
diff --git a/html/000organization.cc.html b/html/000organization.cc.html index 02cfda19..bcbae00b 100644 --- a/html/000organization.cc.html +++ b/html/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/001help.cc.html b/html/001help.cc.html index b9e8ee63..799813a9 100644 --- a/html/001help.cc.html +++ b/html/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/002test.cc.html b/html/002test.cc.html index 7f8480b5..d896e09d 100644 --- a/html/002test.cc.html +++ b/html/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/003trace.cc.html b/html/003trace.cc.html index 65e52bd8..9117df6d 100644 --- a/html/003trace.cc.html +++ b/html/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/003trace.test.cc.html b/html/003trace.test.cc.html index 94edfd69..a097728f 100644 --- a/html/003trace.test.cc.html +++ b/html/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/010vm.cc.html b/html/010vm.cc.html index 3e397ee9..9fccf887 100644 --- a/html/010vm.cc.html +++ b/html/010vm.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/011load.cc.html b/html/011load.cc.html index d5b220a1..15b930ca 100644 --- a/html/011load.cc.html +++ b/html/011load.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/012transform.cc.html b/html/012transform.cc.html index 5ecc5f53..976b04b1 100644 --- a/html/012transform.cc.html +++ b/html/012transform.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/013update_operation.cc.html b/html/013update_operation.cc.html index 05dfdde2..0cef4097 100644 --- a/html/013update_operation.cc.html +++ b/html/013update_operation.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/014literal_string.cc.html b/html/014literal_string.cc.html index cda5b517..4ec3bbaa 100644 --- a/html/014literal_string.cc.html +++ b/html/014literal_string.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/015literal_noninteger.cc.html b/html/015literal_noninteger.cc.html index b9b162c5..57488dd4 100644 --- a/html/015literal_noninteger.cc.html +++ b/html/015literal_noninteger.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/016dilated_reagent.cc.html b/html/016dilated_reagent.cc.html index f7f3b4f4..87616b5d 100644 --- a/html/016dilated_reagent.cc.html +++ b/html/016dilated_reagent.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; } .LineNr { } diff --git a/html/017parse_tree.cc.html b/html/017parse_tree.cc.html index 3975a9d8..6b648ab6 100644 --- a/html/017parse_tree.cc.html +++ b/html/017parse_tree.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 { } .muData { color: #ffff00; } diff --git a/html/018constant.cc.html b/html/018constant.cc.html index 101e87b3..1f922757 100644 --- a/html/018constant.cc.html +++ b/html/018constant.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/019type_abbreviations.cc.html b/html/019type_abbreviations.cc.html index d7c2b939..58200f13 100644 --- a/html/019type_abbreviations.cc.html +++ b/html/019type_abbreviations.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/020run.cc.html b/html/020run.cc.html index db5a30e4..7f8472d0 100644 --- a/html/020run.cc.html +++ b/html/020run.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/021check_instruction.cc.html b/html/021check_instruction.cc.html index 2f9d971a..a3054d2a 100644 --- a/html/021check_instruction.cc.html +++ b/html/021check_instruction.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/022arithmetic.cc.html b/html/022arithmetic.cc.html index da4d5670..0cfa2181 100644 --- a/html/022arithmetic.cc.html +++ b/html/022arithmetic.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/023boolean.cc.html b/html/023boolean.cc.html index 9d2b6fc9..f0287397 100644 --- a/html/023boolean.cc.html +++ b/html/023boolean.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/024jump.cc.html b/html/024jump.cc.html index 23e42a33..262ab353 100644 --- a/html/024jump.cc.html +++ b/html/024jump.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; } .LineNr { } diff --git a/html/025compare.cc.html b/html/025compare.cc.html index 725f3be4..1619c354 100644 --- a/html/025compare.cc.html +++ b/html/025compare.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/026call.cc.html b/html/026call.cc.html index 797160be..7eb90d2c 100644 --- a/html/026call.cc.html +++ b/html/026call.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; } .Identifier { color: #af5f00; } diff --git a/html/027call_ingredient.cc.html b/html/027call_ingredient.cc.html index 66c4a058..aaf0a2fc 100644 --- a/html/027call_ingredient.cc.html +++ b/html/027call_ingredient.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/028call_return.cc.html b/html/028call_return.cc.html index 2497678f..7333fd9b 100644 --- a/html/028call_return.cc.html +++ b/html/028call_return.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/029tools.cc.html b/html/029tools.cc.html index 8ff38973..d3ca0677 100644 --- a/html/029tools.cc.html +++ b/html/029tools.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; } .CommentedCode { color: #8a8a8a; } diff --git a/html/030container.cc.html b/html/030container.cc.html index 8c7943e2..fcd6159a 100644 --- a/html/030container.cc.html +++ b/html/030container.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/031merge.cc.html b/html/031merge.cc.html index 8fad431a..46b6e0f3 100644 --- a/html/031merge.cc.html +++ b/html/031merge.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/032array.cc.html b/html/032array.cc.html index 988ce1a5..d2b01194 100644 --- a/html/032array.cc.html +++ b/html/032array.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/033exclusive_container.cc.html b/html/033exclusive_container.cc.html index 2b3da1f6..142c7a8b 100644 --- a/html/033exclusive_container.cc.html +++ b/html/033exclusive_container.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/034address.cc.html b/html/034address.cc.html index db6243cb..dba88694 100644 --- a/html/034address.cc.html +++ b/html/034address.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/035lookup.cc.html b/html/035lookup.cc.html index 2490a9e9..7869c447 100644 --- a/html/035lookup.cc.html +++ b/html/035lookup.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; } .SalientComment { color: #0000af; } diff --git a/html/036abandon.cc.html b/html/036abandon.cc.html index 310690f5..30761031 100644 --- a/html/036abandon.cc.html +++ b/html/036abandon.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/038new_text.cc.html b/html/038new_text.cc.html index 5cbcf789..b91d990c 100644 --- a/html/038new_text.cc.html +++ b/html/038new_text.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; } .cSpecial { color: #008000; } diff --git a/html/040brace.cc.html b/html/040brace.cc.html index 20962583..3b1a714d 100644 --- a/html/040brace.cc.html +++ b/html/040brace.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/041jump_target.cc.html b/html/041jump_target.cc.html index 9f4feb6d..f6811717 100644 --- a/html/041jump_target.cc.html +++ b/html/041jump_target.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/042name.cc.html b/html/042name.cc.html index 28042893..ebea1c91 100644 --- a/html/042name.cc.html +++ b/html/042name.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 { } .traceAbsent { color: #c00000; } diff --git a/html/043space.cc.html b/html/043space.cc.html index 1183c78b..2e424870 100644 --- a/html/043space.cc.html +++ b/html/043space.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; } .SalientComment { color: #0000af; } .LineNr { } diff --git a/html/044space_surround.cc.html b/html/044space_surround.cc.html index a2881be4..ed17a93c 100644 --- a/html/044space_surround.cc.html +++ b/html/044space_surround.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/045closure_name.cc.html b/html/045closure_name.cc.html index a1fe4a61..a592e2ef 100644 --- a/html/045closure_name.cc.html +++ b/html/045closure_name.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/046check_type_by_name.cc.html b/html/046check_type_by_name.cc.html index 6bda9467..b314cfda 100644 --- a/html/046check_type_by_name.cc.html +++ b/html/046check_type_by_name.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 { } .traceAbsent { color: #c00000; } diff --git a/html/050scenario.cc.html b/html/050scenario.cc.html index 8cd0ec7a..a577efba 100644 --- a/html/050scenario.cc.html +++ b/html/050scenario.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/051scenario_test.mu.html b/html/051scenario_test.mu.html index 07587ae3..2472ac31 100644 --- a/html/051scenario_test.mu.html +++ b/html/051scenario_test.mu.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; } .muScenario { color: #00af00; } .LineNr { } diff --git a/html/052tangle.cc.html b/html/052tangle.cc.html index 14f2e9f4..e811aa46 100644 --- a/html/052tangle.cc.html +++ b/html/052tangle.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/053recipe_header.cc.html b/html/053recipe_header.cc.html index 7750a88e..d63ad5f9 100644 --- a/html/053recipe_header.cc.html +++ b/html/053recipe_header.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/054static_dispatch.cc.html b/html/054static_dispatch.cc.html index 20d8c037..aa3a26cd 100644 --- a/html/054static_dispatch.cc.html +++ b/html/054static_dispatch.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/055shape_shifting_container.cc.html b/html/055shape_shifting_container.cc.html index ee541eef..357bbe48 100644 --- a/html/055shape_shifting_container.cc.html +++ b/html/055shape_shifting_container.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/056shape_shifting_recipe.cc.html b/html/056shape_shifting_recipe.cc.html index c1a392c8..d47a65d4 100644 --- a/html/056shape_shifting_recipe.cc.html +++ b/html/056shape_shifting_recipe.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/057immutable.cc.html b/html/057immutable.cc.html index 4d75b349..649eaa05 100644 --- a/html/057immutable.cc.html +++ b/html/057immutable.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 { } .muData { color: #ffff00; } diff --git a/html/058to_text.cc.html b/html/058to_text.cc.html index 89be8a5c..0c78a612 100644 --- a/html/058to_text.cc.html +++ b/html/058to_text.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/059to_text.mu.html b/html/059to_text.mu.html index 8503c6b9..c8dd18b5 100644 --- a/html/059to_text.mu.html +++ b/html/059to_text.mu.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; } .muRecipe { color: #ff8700; } .muScenario { color: #00af00; } diff --git a/html/060rewrite_literal_string.cc.html b/html/060rewrite_literal_string.cc.html index b6f23b84..02408554 100644 --- a/html/060rewrite_literal_string.cc.html +++ b/html/060rewrite_literal_string.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/061text.mu.html b/html/061text.mu.html index eafea092..4fdad40f 100644 --- a/html/061text.mu.html +++ b/html/061text.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/062convert_ingredients_to_text.cc.html b/html/062convert_ingredients_to_text.cc.html index 27f9f045..70ea38ee 100644 --- a/html/062convert_ingredients_to_text.cc.html +++ b/html/062convert_ingredients_to_text.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 { } .muData { color: #ffff00; } diff --git a/html/063array.mu.html b/html/063array.mu.html index 5596a253..0a604f12 100644 --- a/html/063array.mu.html +++ b/html/063array.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/064list.mu.html b/html/064list.mu.html index fea2663e..b5da017d 100644 --- a/html/064list.mu.html +++ b/html/064list.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/065duplex_list.mu.html b/html/065duplex_list.mu.html index bb92bed3..e327cb10 100644 --- a/html/065duplex_list.mu.html +++ b/html/065duplex_list.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/066stream.mu.html b/html/066stream.mu.html index 8f5bf3cb..a52f2008 100644 --- a/html/066stream.mu.html +++ b/html/066stream.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/067random.cc.html b/html/067random.cc.html index 112063c3..4e90f5f7 100644 --- a/html/067random.cc.html +++ b/html/067random.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/068random.mu.html b/html/068random.mu.html index 880d746d..31bcd912 100644 --- a/html/068random.mu.html +++ b/html/068random.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/069hash.cc.html b/html/069hash.cc.html index d042abde..6ea8199d 100644 --- a/html/069hash.cc.html +++ b/html/069hash.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; } .muRecipe { color: #ff8700; } diff --git a/html/070table.mu.html b/html/070table.mu.html index 8db1f3ba..1173e371 100644 --- a/html/070table.mu.html +++ b/html/070table.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/072recipe.cc.html b/html/072recipe.cc.html index 22ac5831..71b12b5a 100644 --- a/html/072recipe.cc.html +++ b/html/072recipe.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/073scheduler.cc.html b/html/073scheduler.cc.html index 4bf23ad2..7f1cc1f5 100644 --- a/html/073scheduler.cc.html +++ b/html/073scheduler.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; } .cSpecial { color: #008000; } diff --git a/html/074wait.cc.html b/html/074wait.cc.html index 5a5ad451..aba6220c 100644 --- a/html/074wait.cc.html +++ b/html/074wait.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/075channel.mu.html b/html/075channel.mu.html index 3822b511..a3f8e5ed 100644 --- a/html/075channel.mu.html +++ b/html/075channel.mu.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; } .muControl { color: #804000; } diff --git a/html/076continuation.cc.html b/html/076continuation.cc.html index 31822cbe..9a1ce2b5 100644 --- a/html/076continuation.cc.html +++ b/html/076continuation.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; } .LineNr { } diff --git a/html/080display.cc.html b/html/080display.cc.html index fa5fcbe2..23819cf6 100644 --- a/html/080display.cc.html +++ b/html/080display.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/081print.mu.html b/html/081print.mu.html index 92912c7c..22c6cff0 100644 --- a/html/081print.mu.html +++ b/html/081print.mu.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; } .muControl { color: #804000; } diff --git a/html/082scenario_screen.cc.html b/html/082scenario_screen.cc.html index 9a6e261d..a0124d46 100644 --- a/html/082scenario_screen.cc.html +++ b/html/082scenario_screen.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/083scenario_screen_test.mu.html b/html/083scenario_screen_test.mu.html index 9a9e8911..cf661b80 100644 --- a/html/083scenario_screen_test.mu.html +++ b/html/083scenario_screen_test.mu.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; } .muScenario { color: #00af00; } .LineNr { } diff --git a/html/084console.mu.html b/html/084console.mu.html index fb63f968..50f63922 100644 --- a/html/084console.mu.html +++ b/html/084console.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/085scenario_console.cc.html b/html/085scenario_console.cc.html index c33bbf85..dd6b88ac 100644 --- a/html/085scenario_console.cc.html +++ b/html/085scenario_console.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/086scenario_console_test.mu.html b/html/086scenario_console_test.mu.html index f6454548..940f1a5d 100644 --- a/html/086scenario_console_test.mu.html +++ b/html/086scenario_console_test.mu.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; } .muScenario { color: #00af00; } .LineNr { } diff --git a/html/087file.cc.html b/html/087file.cc.html index 9d18c556..c07814e2 100644 --- a/html/087file.cc.html +++ b/html/087file.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/088file.mu.html b/html/088file.mu.html index f7b1cd4c..a617d884 100644 --- a/html/088file.mu.html +++ b/html/088file.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/089scenario_filesystem.cc.html b/html/089scenario_filesystem.cc.html index 816b58c7..6ece1e92 100644 --- a/html/089scenario_filesystem.cc.html +++ b/html/089scenario_filesystem.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; } .Constant { color: #008787; } .LineNr { } diff --git a/html/090scenario_filesystem_test.mu.html b/html/090scenario_filesystem_test.mu.html index a10a92c0..aa11e6b9 100644 --- a/html/090scenario_filesystem_test.mu.html +++ b/html/090scenario_filesystem_test.mu.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; } .muScenario { color: #00af00; } .LineNr { } diff --git a/html/091socket.cc.html b/html/091socket.cc.html index 75502060..805c5dd0 100644 --- a/html/091socket.cc.html +++ b/html/091socket.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/092socket.mu.html b/html/092socket.mu.html index db9af578..7294b1b4 100644 --- a/html/092socket.mu.html +++ b/html/092socket.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/099hardware_checks.cc.html b/html/099hardware_checks.cc.html index 42ab5ccc..2bb5208d 100644 --- a/html/099hardware_checks.cc.html +++ b/html/099hardware_checks.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/100trace_browser.cc.html b/html/100trace_browser.cc.html index 2393221c..8a6d7b22 100644 --- a/html/100trace_browser.cc.html +++ b/html/100trace_browser.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/101run_sandboxed.cc.html b/html/101run_sandboxed.cc.html index ad597659..25a98507 100644 --- a/html/101run_sandboxed.cc.html +++ b/html/101run_sandboxed.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/998check_type_pointers.cc.html b/html/998check_type_pointers.cc.html index a62241b7..e407c4d0 100644 --- a/html/998check_type_pointers.cc.html +++ b/html/998check_type_pointers.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/999spaces.cc.html b/html/999spaces.cc.html index f18d4faa..586e6460 100644 --- a/html/999spaces.cc.html +++ b/html/999spaces.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/channel.mu.html b/html/channel.mu.html index 68531966..f6931b4a 100644 --- a/html/channel.mu.html +++ b/html/channel.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/chessboard.mu.html b/html/chessboard.mu.html index 5e3f2ee0..176e268f 100644 --- a/html/chessboard.mu.html +++ b/html/chessboard.mu.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; } .muControl { color: #804000; } diff --git a/html/console.mu.html b/html/console.mu.html index 75c96012..d472ee92 100644 --- a/html/console.mu.html +++ b/html/console.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/continuation1.mu.html b/html/continuation1.mu.html index 8cfb80b0..97461de5 100644 --- a/html/continuation1.mu.html +++ b/html/continuation1.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/continuation2.mu.html b/html/continuation2.mu.html index f1ac293c..28b3dd8e 100644 --- a/html/continuation2.mu.html +++ b/html/continuation2.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/continuation3.mu.html b/html/continuation3.mu.html index f75c9b14..47b59801 100644 --- a/html/continuation3.mu.html +++ b/html/continuation3.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/continuation4.mu.html b/html/continuation4.mu.html index c6ccee25..a0650fe1 100644 --- a/html/continuation4.mu.html +++ b/html/continuation4.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/continuation5.mu.html b/html/continuation5.mu.html index 6cc2f1c7..80b38fd9 100644 --- a/html/continuation5.mu.html +++ b/html/continuation5.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/counters.mu.html b/html/counters.mu.html index 3582b0f0..730d2a01 100644 --- a/html/counters.mu.html +++ b/html/counters.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/display.mu.html b/html/display.mu.html index 184e8b5c..f6a42475 100644 --- a/html/display.mu.html +++ b/html/display.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/edit/001-editor.mu.html b/html/edit/001-editor.mu.html index 55d657c3..bafdade1 100644 --- a/html/edit/001-editor.mu.html +++ b/html/edit/001-editor.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/002-typing.mu.html b/html/edit/002-typing.mu.html index b1d91e07..39422b93 100644 --- a/html/edit/002-typing.mu.html +++ b/html/edit/002-typing.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/003-shortcuts.mu.html b/html/edit/003-shortcuts.mu.html index 4381f107..ec4096b6 100644 --- a/html/edit/003-shortcuts.mu.html +++ b/html/edit/003-shortcuts.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/004-programming-environment.mu.html b/html/edit/004-programming-environment.mu.html index c46650db..4d0ff1c3 100644 --- a/html/edit/004-programming-environment.mu.html +++ b/html/edit/004-programming-environment.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/005-sandbox.mu.html b/html/edit/005-sandbox.mu.html index 7e484efe..f082c7b1 100644 --- a/html/edit/005-sandbox.mu.html +++ b/html/edit/005-sandbox.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/006-sandbox-copy.mu.html b/html/edit/006-sandbox-copy.mu.html index 0feafeef..9fc7e6f4 100644 --- a/html/edit/006-sandbox-copy.mu.html +++ b/html/edit/006-sandbox-copy.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/007-sandbox-delete.mu.html b/html/edit/007-sandbox-delete.mu.html index 588c2b8e..26f46332 100644 --- a/html/edit/007-sandbox-delete.mu.html +++ b/html/edit/007-sandbox-delete.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/008-sandbox-edit.mu.html b/html/edit/008-sandbox-edit.mu.html index d20780a9..ab672c78 100644 --- a/html/edit/008-sandbox-edit.mu.html +++ b/html/edit/008-sandbox-edit.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/009-sandbox-test.mu.html b/html/edit/009-sandbox-test.mu.html index cd853990..199d554f 100644 --- a/html/edit/009-sandbox-test.mu.html +++ b/html/edit/009-sandbox-test.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/010-sandbox-trace.mu.html b/html/edit/010-sandbox-trace.mu.html index 45fa21e9..62144117 100644 --- a/html/edit/010-sandbox-trace.mu.html +++ b/html/edit/010-sandbox-trace.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/011-errors.mu.html b/html/edit/011-errors.mu.html index 7a265f32..d840f7f9 100644 --- a/html/edit/011-errors.mu.html +++ b/html/edit/011-errors.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/edit/012-editor-undo.mu.html b/html/edit/012-editor-undo.mu.html index fc29d146..3b663e19 100644 --- a/html/edit/012-editor-undo.mu.html +++ b/html/edit/012-editor-undo.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/example1.mu.html b/html/example1.mu.html index a4895842..d69cfa7f 100644 --- a/html/example1.mu.html +++ b/html/example1.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/exception1.mu.html b/html/exception1.mu.html index 6d399d03..59b9d71e 100644 --- a/html/exception1.mu.html +++ b/html/exception1.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/exception2.mu.html b/html/exception2.mu.html index 10e17b82..ffec315b 100644 --- a/html/exception2.mu.html +++ b/html/exception2.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/factorial.mu.html b/html/factorial.mu.html index f5c3b470..e6dcac67 100644 --- a/html/factorial.mu.html +++ b/html/factorial.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/filesystem.mu.html b/html/filesystem.mu.html index d9be42a2..254b0be3 100644 --- a/html/filesystem.mu.html +++ b/html/filesystem.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/fork.mu.html b/html/fork.mu.html index 275f1266..49e6582f 100644 --- a/html/fork.mu.html +++ b/html/fork.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/http-client.mu.html b/html/http-client.mu.html index e2b16c30..67538363 100644 --- a/html/http-client.mu.html +++ b/html/http-client.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/http-server.mu.html b/html/http-server.mu.html index 4fb36aef..fc74ee9c 100644 --- a/html/http-server.mu.html +++ b/html/http-server.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/immutable-error.mu.html b/html/immutable-error.mu.html index ee9a99e0..17d2e8fd 100644 --- a/html/immutable-error.mu.html +++ b/html/immutable-error.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/lambda-to-mu.mu.html b/html/lambda-to-mu.mu.html index 06e32048..9e2f3443 100644 --- a/html/lambda-to-mu.mu.html +++ b/html/lambda-to-mu.mu.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; } .muControl { color: #804000; } diff --git a/html/mutable.mu.html b/html/mutable.mu.html index 9afdabbf..a7ebff32 100644 --- a/html/mutable.mu.html +++ b/html/mutable.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/nqueens.mu.html b/html/nqueens.mu.html index a0138e66..4c4d3761 100644 --- a/html/nqueens.mu.html +++ b/html/nqueens.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/real-files.mu.html b/html/real-files.mu.html index d52ce3d2..fab7777b 100644 --- a/html/real-files.mu.html +++ b/html/real-files.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/same-fringe.mu.html b/html/same-fringe.mu.html index 58095bee..2a3a0102 100644 --- a/html/same-fringe.mu.html +++ b/html/same-fringe.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/screen.mu.html b/html/screen.mu.html index 3f79bc5d..5246a0fc 100644 --- a/html/screen.mu.html +++ b/html/screen.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/html/static-dispatch.mu.html b/html/static-dispatch.mu.html index 24a85327..bf4a339c 100644 --- a/html/static-dispatch.mu.html +++ b/html/static-dispatch.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } 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">"test"</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) -> <void></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) -> <void></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) -> 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) -> 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, "partial byte found.")</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 << 4) | EAX</span> <span id="L192" class="LineNr"> 192 </span> <span class="subxS1Comment"># . ECX <<= 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 "abc"</span> <span id="L243" class="LineNr"> 243 </span> <span class="subxS1Comment"># . write(_test-stream, "abc")</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">"abc"</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->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">"F - test-convert-next-octet: unexpected abort"</span>/imm32 +<span id="L279" class="LineNr"> 279 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L204'>test-convert-next-octet</a>: unexpected abort"</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->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->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">"F - test-convert-next-octet: unexpected abort"</span>/imm32 +<span id="L373" class="LineNr"> 373 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L204'>test-convert-next-octet</a>: unexpected abort"</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->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 "a"</span> <span id="L439" class="LineNr"> 439 </span> <span class="subxS1Comment"># . write(_test-stream, "a")</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">"a"</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->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">"F - test-convert-next-octet-aborts-on-single-hex-byte: unexpected abort"</span>/imm32 +<span id="L475" class="LineNr"> 475 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L400'>test-convert-next-octet-aborts-on-single-hex-byte</a>: unexpected abort"</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->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) -> 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) -> 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 "abc"</span> <span id="L612" class="LineNr"> 612 </span> <span class="subxS1Comment"># . write(_test-stream, "abc")</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">"abc"</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->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">"F - test-scan-next-byte: unexpected abort"</span>/imm32 +<span id="L648" class="LineNr"> 648 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L573'>test-scan-next-byte</a>: unexpected abort"</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->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">" abc"</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->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">"F - test-scan-next-byte-skips-whitespace: unexpected abort"</span>/imm32 +<span id="L750" class="LineNr"> 750 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L675'>test-scan-next-byte-skips-whitespace</a>: unexpected abort"</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->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">"#x"</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">"ab"</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->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">"F - test-scan-next-byte-skips-comment: unexpected abort"</span>/imm32 +<span id="L868" class="LineNr"> 868 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L777'>test-scan-next-byte-skips-comment</a>: unexpected abort"</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->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">"#x"</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">" ab"</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->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">"F - test-scan-next-byte-skips-comment-and-whitespace: unexpected abort"</span>/imm32 +<span id="L986" class="LineNr"> 986 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L895'>test-scan-next-byte-skips-comment-and-whitespace</a>: unexpected abort"</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->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">" #x"</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">"ab"</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->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">"F - test-scan-next-byte-skips-whitespace-and-comment: unexpected abort"</span>/imm32 +<span id="L1104" class="LineNr">1104 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L1013'>test-scan-next-byte-skips-whitespace-and-comment</a>: unexpected abort"</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->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">"a"</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->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">"F - test-scan-next-byte-reads-final-byte: unexpected abort"</span>/imm32 +<span id="L1206" class="LineNr">1206 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L1131'>test-scan-next-byte-reads-final-byte</a>: unexpected abort"</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->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->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">"F - test-scan-next-byte-handles-eof: unexpected abort"</span>/imm32 +<span id="L1300" class="LineNr">1300 </span> 68/push <span class="Constant">"F - <a href='hex.subx.html#L1233'>test-scan-next-byte-handles-eof</a>: unexpected abort"</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->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 "x"</span> <span id="L1366" class="LineNr">1366 </span> <span class="subxS1Comment"># . write(_test-stream, "x")</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">"x"</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->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 -> 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 -> 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 -> 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 -> 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 <= '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) -> <void></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) -> <void></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 "abc\nde"</span> <span id="L1643" class="LineNr">1643 </span> <span class="subxS1Comment"># . write(_test-stream, "abc")</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">"abc"</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, "de")</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">"de"</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->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">"F - test-skip-until-newline"</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 -> 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 -> 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 -> 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 -> 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, "")</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">""</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, "Abc")</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">"Abc"</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, "Abc")</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">"Abc"</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, "Adc")</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">"Adc"</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, "")</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">""</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, "Ab")</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">"Ab"</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, "Abcd")</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">"Abcd"</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 "."</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)) -> 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)) -> 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">"."</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) -> <void></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) -> <void></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: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: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, "a", 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: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) -> 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) -> 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> diff --git a/html/tangle.mu.html b/html/tangle.mu.html index 53e9f824..bf090c66 100644 --- a/html/tangle.mu.html +++ b/html/tangle.mu.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; } .muControl { color: #804000; } .muRecipe { color: #ff8700; } diff --git a/html/x.mu.html b/html/x.mu.html index 560739ec..5cf8760d 100644 --- a/html/x.mu.html +++ b/html/x.mu.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; } .muRecipe { color: #ff8700; } .LineNr { } diff --git a/linkify/linkify.cc b/linkify/linkify.cc index 58f37840..bb6eb772 100644 --- a/linkify/linkify.cc +++ b/linkify/linkify.cc @@ -7,6 +7,7 @@ // Still plenty of holes: // - unnecessarily linking definition location to itself +// - except SubX definitions, which start at start of line // - can't detect strings in spite of attempt to support them below, because // Vim's generated html turns quotes into html entities // - distinguishing function and variable names @@ -63,6 +64,13 @@ bool starts_with(const string& s, const string& pat) { return b == pat.end(); } +bool ends_with(const string& s, const string& pat) { + string::const_reverse_iterator a=s.rbegin(), b=pat.rbegin(); + for (/*nada*/; a!=s.rend() && b!=pat.rend(); ++a, ++b) + if (*a != *b) return false; + return b == pat.rend(); +} + void encode_some_html_entities(string& s) { std::string::size_type pos = 0; while (true) { @@ -123,11 +131,13 @@ void replace_tags_in_file(const string& filename, const map<string, syminfo>& in out << line.substr(0, skip_first_span); istringstream in2(line.substr(skip_first_span)); in2 >> std::noskipws; + bool at_start_of_line = ends_with(filename, ".subx"); while (has_data(in2)) { if (isspace(in2.peek())) { //? cerr << "space\n"; char c; in2 >> c; out << c; + at_start_of_line = false; } // within a line, send straight through all characters inside '<..>' else if (in2.peek() == '<') { @@ -138,6 +148,7 @@ void replace_tags_in_file(const string& filename, const map<string, syminfo>& in out << c; if (c == '>') break; } + // don't include initial tag when computing 'at_start_of_line' //? cerr << "end tag\n"; } else { @@ -155,6 +166,7 @@ void replace_tags_in_file(const string& filename, const map<string, syminfo>& in break; } } + at_start_of_line = false; } else if (c == '\'') { //? cerr << "character\n"; @@ -168,23 +180,27 @@ void replace_tags_in_file(const string& filename, const map<string, syminfo>& in break; } } + at_start_of_line = false; } - // send straight through any characters after '//' (comments) + // send straight through any characters after '#' (comments) else if (c == '#') { //? cerr << "comment\n"; out << c; while (in2 >> c) out << c; + at_start_of_line = false; } // send straight through any characters after '//' (comments) else if (c == '/' && in2.peek() == '/') { //? cerr << "comment\n"; out << c; while (in2 >> c) out << c; + at_start_of_line = false; } else { //? cerr << "rest\n"; if (c == ',' || c == ':') { out << c; + at_start_of_line = false; continue; } ostringstream out2; @@ -212,8 +228,14 @@ void replace_tags_in_file(const string& filename, const map<string, syminfo>& in out << symbol; } else { -//? cerr << " link\n"; - out << "<a href='" << s.filename << ".html#L" << s.line_num << "'>" << symbol << "</a>"; + if (at_start_of_line) { +//? cerr << " at start of line\n"; + out << symbol; + } + else { +//? cerr << " link\n"; + out << "<a href='" << s.filename << ".html#L" << s.line_num << "'>" << symbol << "</a>"; + } } } } // end rest diff --git a/update_html b/update_html index 95f96428..98ef1ee3 100755 --- a/update_html +++ b/update_html @@ -26,6 +26,8 @@ convert_html() { sed -i 's/^\* { \(.*\) }/* { font-size:12pt; \1 }/g' $1.html sed -i 's/^body { \(.*\) }/body { font-size:12pt; \1 }/g' $1.html + sed -i '/^body {/a a { color:inherit; }' $1.html + # switch unicode characters around in the rendered html # the ones we have in the source files render double-wide in html # the ones we want in the html cause iTerm2 to slow down in alt-tabbing for some reason @@ -69,11 +71,27 @@ do process $f done +for f in subx/examples/*.subx +do + ( cd subx/examples + ctags -x `basename $f` > /tmp/tags + ) + process $f +done + ( cd subx ctags -x *.subx > /tmp/tags ) -for f in subx/*.subx subx/examples/*.subx subx/apps/*.subx +for f in subx/*.subx +do + process $f +done + +for f in subx/apps/hex.subx do + ( cd subx/apps + ctags -x ../*.subx `basename $f` > /tmp/tags + ) process $f done |