diff --git a/html/subx/052kernel_string_equal.subx.html b/html/subx/052kernel_string_equal.subx.html
index 36a63e6b..6543192f 100644
--- a/html/subx/052kernel_string_equal.subx.html
+++ b/html/subx/052kernel_string_equal.subx.html
@@ -265,7 +265,7 @@ if ('onhashchange' in window) {
200 e8/call kernel-string-equal/disp32
201
202 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-203
+203
204
205 68/push "F - test-compare-kernel-string-with-equal-array"/imm32
206 68/push 0/imm32/false
@@ -285,7 +285,7 @@ if ('onhashchange' in window) {
220 e8/call kernel-string-equal/disp32
221
222 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-223
+223
224
225 68/push "F - test-compare-kernel-string-with-shorter-array"/imm32
226 68/push 0/imm32/false
@@ -305,7 +305,7 @@ if ('onhashchange' in window) {
240 e8/call kernel-string-equal/disp32
241
242 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-243
+243
244
245 68/push "F - test-compare-kernel-string-with-longer-array"/imm32
246 68/push 0/imm32/false
diff --git a/html/subx/056write.subx.html b/html/subx/056write.subx.html
index 7d08441f..7ada1e78 100644
--- a/html/subx/056write.subx.html
+++ b/html/subx/056write.subx.html
@@ -201,7 +201,7 @@ if ('onhashchange' in window) {
136 e8/call write/disp32
137
138 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-139
+139
140
141 68/push "F - test-read-single: return EAX"/imm32
142 68/push 2/imm32
diff --git a/html/subx/058read.subx.html b/html/subx/058read.subx.html
index 7f41b843..5be566bb 100644
--- a/html/subx/058read.subx.html
+++ b/html/subx/058read.subx.html
@@ -276,7 +276,7 @@ if ('onhashchange' in window) {
210 e8/call read/disp32
211
212 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-213
+213
214
215 68/push "F - test-read-single: return EAX"/imm32
216 68/push 2/imm32
@@ -404,7 +404,7 @@ if ('onhashchange' in window) {
338 e8/call read/disp32
339
340 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-341
+341
342
343 68/push "F - test-read-returns-0-on-end-of-file"/imm32
344 68/push 0/imm32
diff --git a/html/subx/059read-byte.subx.html b/html/subx/059read-byte.subx.html
index 6a057c34..c84c5d25 100644
--- a/html/subx/059read-byte.subx.html
+++ b/html/subx/059read-byte.subx.html
@@ -198,7 +198,7 @@ if ('onhashchange' in window) {
132 e8/call read-byte/disp32
133
134 81 0/subop/add 3/mod/direct 4/rm32/ESP 4/imm32
-135
+135
136
137 68/push "F - test-read-byte-single"/imm32
138 68/push 0x41/imm32
@@ -251,7 +251,7 @@ if ('onhashchange' in window) {
185 e8/call read-byte/disp32
186
187 81 0/subop/add 3/mod/direct 4/rm32/ESP 4/imm32
-188
+188
189
190 68/push "F - test-read-byte-multiple"/imm32
191 68/push 0x62/imm32
@@ -289,7 +289,7 @@ if ('onhashchange' in window) {
223 e8/call read-byte/disp32
224
225 81 0/subop/add 3/mod/direct 4/rm32/ESP 4/imm32
-226
+226
227
228 68/push "F - test-read-byte-end-of-file"/imm32
229 68/push -1/imm32
diff --git a/html/subx/apps/crenshaw2-1.subx.html b/html/subx/apps/crenshaw2-1.subx.html
index 5fd8df12..a3e61523 100644
--- a/html/subx/apps/crenshaw2-1.subx.html
+++ b/html/subx/apps/crenshaw2-1.subx.html
@@ -441,7 +441,7 @@ if ('onhashchange' in window) {
375
376
377 81 0/subop/add 3/mod/direct 4/rm32/ESP 0x10/imm32
-378
+378
379
380 68/push "F - test-get-num-reads-single-digit"/imm32
381 68/push 0x33/imm32
diff --git a/html/subx/apps/crenshaw2-1b.subx.html b/html/subx/apps/crenshaw2-1b.subx.html
index dbbfd526..19773a56 100644
--- a/html/subx/apps/crenshaw2-1b.subx.html
+++ b/html/subx/apps/crenshaw2-1b.subx.html
@@ -458,7 +458,7 @@ if ('onhashchange' in window) {
392
393
394 81 0/subop/add 3/mod/direct 4/rm32/ESP 0x10/imm32
-395
+395
396
397 68/push "F - test-get-num-reads-single-digit"/imm32
398 68/push 0x33/imm32
@@ -634,7 +634,7 @@ if ('onhashchange' in window) {
568
569
570 81 0/subop/add 3/mod/direct 4/rm32/ESP 0x10/imm32
-571
+571
572
573 68/push "F - test-get-num-reads-multiple-digits"/imm32
574 68/push 0x36353433/imm32
@@ -725,7 +725,7 @@ if ('onhashchange' in window) {
659
660
661 81 0/subop/add 3/mod/direct 4/rm32/ESP 0x10/imm32
-662
+662
663
664 68/push "F - test-get-num-reads-multiple-digits-followed-by-nondigit"/imm32
665 68/push 0x36353433/imm32
diff --git a/html/subx/apps/factorial.subx.html b/html/subx/apps/factorial.subx.html
index 7cee2ff1..9f25d28c 100644
--- a/html/subx/apps/factorial.subx.html
+++ b/html/subx/apps/factorial.subx.html
@@ -158,7 +158,7 @@ if ('onhashchange' in window) {
93 e8/call factorial/disp32
94
95 81 0/subop/add 3/mod/direct 4/rm32/ESP 4/imm32
- 96
+ 96
97
98 68/push "F - test-factorial"/imm32
99 68/push 0x78/imm32/expected-120
diff --git a/html/subx/examples/ex11.subx.html b/html/subx/examples/ex11.subx.html
index 58ba0f11..cb2150db 100644
--- a/html/subx/examples/ex11.subx.html
+++ b/html/subx/examples/ex11.subx.html
@@ -264,7 +264,7 @@ if ('onhashchange' in window) {
199 e8/call kernel-string-equal/disp32
200
201 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-202
+202
203
204 68/push "F - test-compare-kernel-string-with-equal-array"/imm32
205 68/push 0/imm32/false
@@ -284,7 +284,7 @@ if ('onhashchange' in window) {
219 e8/call kernel-string-equal/disp32
220
221 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-222
+222
223
224 68/push "F - test-compare-kernel-string-with-shorter-array"/imm32
225 68/push 0/imm32/false
@@ -304,7 +304,7 @@ if ('onhashchange' in window) {
239 e8/call kernel-string-equal/disp32
240
241 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
-242
+242
243
244 68/push "F - test-compare-kernel-string-with-longer-array"/imm32
245 68/push 0/imm32/false
diff --git a/subx/052kernel_string_equal.subx b/subx/052kernel_string_equal.subx
index 3ed0fd5d..2834b047 100644
--- a/subx/052kernel_string_equal.subx
+++ b/subx/052kernel_string_equal.subx
@@ -200,7 +200,7 @@ test-compare-kernel-string-with-empty-array:
e8/call kernel-string-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 0)
+ # check-ints-equal(EAX, 0, msg)
# . . push args
68/push "F - test-compare-kernel-string-with-equal-array"/imm32
68/push 0/imm32/false
@@ -220,7 +220,7 @@ test-compare-kernel-string-with-shorter-array:
e8/call kernel-string-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 0)
+ # check-ints-equal(EAX, 0, msg)
# . . push args
68/push "F - test-compare-kernel-string-with-shorter-array"/imm32
68/push 0/imm32/false
@@ -240,7 +240,7 @@ test-compare-kernel-string-with-longer-array:
e8/call kernel-string-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 0)
+ # check-ints-equal(EAX, 0, msg)
# . . push args
68/push "F - test-compare-kernel-string-with-longer-array"/imm32
68/push 0/imm32/false
diff --git a/subx/056write.subx b/subx/056write.subx
index a76dd12e..3496d980 100644
--- a/subx/056write.subx
+++ b/subx/056write.subx
@@ -136,7 +136,7 @@ test-write-single:
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 2)
+ # check-ints-equal(EAX, 2, msg)
# . . push args
68/push "F - test-read-single: return EAX"/imm32
68/push 2/imm32
diff --git a/subx/058read.subx b/subx/058read.subx
index 291df30b..90425a74 100644
--- a/subx/058read.subx
+++ b/subx/058read.subx
@@ -210,7 +210,7 @@ test-read-single:
e8/call read/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 2)
+ # check-ints-equal(EAX, 2, msg)
# . . push args
68/push "F - test-read-single: return EAX"/imm32
68/push 2/imm32
@@ -338,7 +338,7 @@ test-read-returns-0-on-end-of-file:
e8/call read/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 0)
+ # check-ints-equal(EAX, 0, msg)
# . . push args
68/push "F - test-read-returns-0-on-end-of-file"/imm32
68/push 0/imm32
diff --git a/subx/059read-byte.subx b/subx/059read-byte.subx
index b00d482c..7dd9658e 100644
--- a/subx/059read-byte.subx
+++ b/subx/059read-byte.subx
@@ -132,7 +132,7 @@ test-read-byte-single:
e8/call read-byte/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP
- # check-ints-equal(EAX, 'A')
+ # check-ints-equal(EAX, 'A', msg)
# . . push args
68/push "F - test-read-byte-single"/imm32
68/push 0x41/imm32
@@ -185,7 +185,7 @@ test-read-byte-multiple:
e8/call read-byte/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP
- # check-ints-equal(EAX, 'b')
+ # check-ints-equal(EAX, 'b', msg)
# . . push args
68/push "F - test-read-byte-multiple"/imm32
68/push 0x62/imm32
@@ -223,7 +223,7 @@ test-read-byte-end-of-file:
e8/call read-byte/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP
- # check-ints-equal(EAX, -1)
+ # check-ints-equal(EAX, -1, msg)
# . . push args
68/push "F - test-read-byte-end-of-file"/imm32
68/push -1/imm32
diff --git a/subx/apps/crenshaw2-1.subx b/subx/apps/crenshaw2-1.subx
index 3688ef34..a246a594 100644
--- a/subx/apps/crenshaw2-1.subx
+++ b/subx/apps/crenshaw2-1.subx
@@ -375,7 +375,7 @@ test-get-num-reads-single-digit:
# registers except ESP may be clobbered at this point
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32 # add to ESP
- # check-ints-equal(*_test-output-stream->data, '3')
+ # check-ints-equal(*_test-output-stream->data, '3', msg)
# . . push args
68/push "F - test-get-num-reads-single-digit"/imm32
68/push 0x33/imm32
diff --git a/subx/apps/crenshaw2-1b.subx b/subx/apps/crenshaw2-1b.subx
index d6fc6dee..08786b90 100644
--- a/subx/apps/crenshaw2-1b.subx
+++ b/subx/apps/crenshaw2-1b.subx
@@ -392,7 +392,7 @@ test-get-num-reads-single-digit:
# registers except ESP may be clobbered at this point
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32 # add to ESP
- # check-ints-equal(*_test-output-stream->data, '3')
+ # check-ints-equal(*_test-output-stream->data, '3', msg)
# . . push args
68/push "F - test-get-num-reads-single-digit"/imm32
68/push 0x33/imm32
@@ -568,7 +568,7 @@ test-get-num-reads-multiple-digits:
# registers except ESP may be clobbered at this point
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32 # add to ESP
- # check-ints-equal(*_test-output-stream->data, '3456')
+ # check-ints-equal(*_test-output-stream->data, '3456', msg)
# . . push args
68/push "F - test-get-num-reads-multiple-digits"/imm32
68/push 0x36353433/imm32
@@ -659,7 +659,7 @@ test-get-num-reads-multiple-digits-followed-by-nondigit:
# registers except ESP may be clobbered at this point
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32 # add to ESP
- # check-ints-equal(*_test-output-stream->data, '3456')
+ # check-ints-equal(*_test-output-stream->data, '3456', msg)
# . . push args
68/push "F - test-get-num-reads-multiple-digits-followed-by-nondigit"/imm32
68/push 0x36353433/imm32
diff --git a/subx/apps/factorial.subx b/subx/apps/factorial.subx
index bf2dd75e..73735fab 100644
--- a/subx/apps/factorial.subx
+++ b/subx/apps/factorial.subx
@@ -93,7 +93,7 @@ test-factorial:
e8/call factorial/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP
- # check-ints-equal(EAX, 120, failure message)
+ # check-ints-equal(EAX, 120, msg)
# . . push args
68/push "F - test-factorial"/imm32
68/push 0x78/imm32/expected-120
diff --git a/subx/examples/ex11.subx b/subx/examples/ex11.subx
index 245452fb..2a92b172 100644
--- a/subx/examples/ex11.subx
+++ b/subx/examples/ex11.subx
@@ -199,7 +199,7 @@ test-compare-kernel-string-with-empty-array:
e8/call kernel-string-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 0)
+ # check-ints-equal(EAX, 0, msg)
# . . push args
68/push "F - test-compare-kernel-string-with-equal-array"/imm32
68/push 0/imm32/false
@@ -219,7 +219,7 @@ test-compare-kernel-string-with-shorter-array:
e8/call kernel-string-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 0)
+ # check-ints-equal(EAX, 0, msg)
# . . push args
68/push "F - test-compare-kernel-string-with-shorter-array"/imm32
68/push 0/imm32/false
@@ -239,7 +239,7 @@ test-compare-kernel-string-with-longer-array:
e8/call kernel-string-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP
- # check-ints-equal(EAX, 0)
+ # check-ints-equal(EAX, 0, msg)
# . . push args
68/push "F - test-compare-kernel-string-with-longer-array"/imm32
68/push 0/imm32/false