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 /html/subx/apps/hex.subx.html | |
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.
Diffstat (limited to 'html/subx/apps/hex.subx.html')
-rw-r--r-- | html/subx/apps/hex.subx.html | 543 |
1 files changed, 272 insertions, 271 deletions
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> |