diff --git a/html/101screen.subx.html b/html/101screen.subx.html
index 4ce0397a..27e5514b 100644
--- a/html/101screen.subx.html
+++ b/html/101screen.subx.html
@@ -85,7 +85,7 @@ if ('onhashchange' in window) {
28 c1/shift 4/subop/left %eax 0xa/imm8
29 03/add-> *(ebp+8) 0/r32/eax
30
-31 03/add-> *Video-memory-addr 0/r32/eax
+31 03/add-> *Video-memory-addr 0/r32/eax
32
33 8b/-> *(ebp+0x10) 1/r32/ecx
34 88/byte<- *eax 1/r32/CL
diff --git a/html/103grapheme.subx.html b/html/103grapheme.subx.html
index fdbf0e99..42c4f598 100644
--- a/html/103grapheme.subx.html
+++ b/html/103grapheme.subx.html
@@ -84,7 +84,7 @@ if ('onhashchange' in window) {
27
28 8b/-> *(ebp+8) 6/r32/esi
29 c1 4/subop/shift-left %esi 4/imm8
- 30 81 0/subop/add %esi Font/imm32
+ 30 81 0/subop/add %esi Font/imm32
31
32 81 7/subop/compare %esi 0x9400/imm32
33 7d/jump-if->= $draw-grapheme-on-real-screen:end/disp8
diff --git a/html/108write.subx.html b/html/108write.subx.html
index 7f5a6178..763f35bf 100644
--- a/html/108write.subx.html
+++ b/html/108write.subx.html
@@ -96,7 +96,7 @@ if ('onhashchange' in window) {
36 8d/copy-address 1/mod/*+disp8 4/rm32/sib 1/base/ecx 2/index/edx . 3/r32/ebx 0xc/disp8 .
37 53/push-ebx
38
- 39 e8/call _append-3/disp32
+ 39 e8/call _append-3/disp32
40
41 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32
42
@@ -195,95 +195,181 @@ if ('onhashchange' in window) {
135
136 == code
137
-138
-139 _append-3:
-140
-141 55/push-ebp
-142 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
-143
-144 51/push-ecx
-145
-146
-147 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 0/r32/eax 0x10/disp8 .
-148 8b/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . .
-149 8d/copy-address 1/mod/*+disp8 4/rm32/sib 0/base/eax 1/index/ecx . 1/r32/ecx 4/disp8 .
-150 51/push-ecx
-151
-152 8d/copy-address 1/mod/*+disp8 0/rm32/eax . . . 1/r32/ecx 4/disp8 .
-153 51/push-ecx
-154
-155 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 .
-156
-157 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 .
-158
-159 e8/call _append-4/disp32
-160
-161 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32
-162 $_append-3:end:
-163
-164 59/pop-to-ecx
-165
-166 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
-167 5d/pop-to-ebp
-168 c3/return
-169
-170
-171 _append-4:
-172
-173 55/push-ebp
-174 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
-175
-176 51/push-ecx
-177 52/push-edx
-178 53/push-ebx
-179 56/push-esi
-180 57/push-edi
-181
-182 b8/copy-to-eax 0/imm32
-183
-184 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 7/r32/edi 8/disp8 .
-185
-186 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 2/r32/edx 0xc/disp8 .
-187
-188 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 0x10/disp8 .
-189
-190 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 1/r32/ecx 0x14/disp8 .
-191 $_append-4:loop:
-192
-193 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . .
-194 73/jump-if-addr>= $_append-4:end/disp8
-195
-196 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . .
-197 0f 83/jump-if-addr>= $_append-4:abort/disp32
-198
-199 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . .
-200 88/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . .
-201
-202 40/increment-eax
-203
-204 46/increment-esi
-205
-206 47/increment-edi
-207 eb/jump $_append-4:loop/disp8
-208 $_append-4:end:
-209
-210 5f/pop-to-edi
-211 5e/pop-to-esi
-212 5b/pop-to-ebx
-213 5a/pop-to-edx
-214 59/pop-to-ecx
-215
-216 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
-217 5d/pop-to-ebp
-218 c3/return
-219
-220 $_append-4:abort:
-221 (draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0 "_append-4: stream full at " 3 0)
-222 (draw-int32-hex-wrapping-right-then-down-from-cursor-over-full-screen 0 %eax 3 0)
-223 (abort "")
-224
-225
-226
+138 try-write:
+139
+140 55/push-ebp
+141 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
+142
+143 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 0/imm32
+144 74/jump-if-= $write:end/disp8
+145
+146 51/push-ecx
+147
+148
+149 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 8/disp8 .
+150 8b/copy 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 8/disp8 .
+151 2b/subtract 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . .
+152 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0xc/disp8 .
+153 2b/subtract 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . .
+154
+155 3d/compare-eax-and 0/imm32
+156 7c/jump-if-< $try-write:end/disp8
+157
+158
+159 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 .
+160 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 .
+161
+162 e8/call write/disp32
+163
+164 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32
+165
+166 59/pop-to-ecx
+167
+168 b8/copy-to-eax 0/imm32
+169 $try-write:end:
+170
+171 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
+172 5d/pop-to-ebp
+173 c3/return
+174
+175
+176 space-remaining-in-stream:
+177
+178 55/push-ebp
+179 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
+180
+181 51/push-ecx
+182
+183 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 8/disp8 .
+184 8b/copy 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 8/disp8 .
+185 2b/subtract 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . .
+186
+187 59/pop-to-ecx
+188 $space-remaining-in-stream:end:
+189
+190 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
+191 5d/pop-to-ebp
+192 c3/return
+193
+194 stream-size:
+195
+196 55/push-ebp
+197 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
+198
+199 51/push-ecx
+200
+201 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 8/disp8 .
+202 8b/copy 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . .
+203
+204 59/pop-to-ecx
+205 $space-remaining-in-stream:end:
+206
+207 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
+208 5d/pop-to-ebp
+209 c3/return
+210
+211
+212 _append-3:
+213
+214 55/push-ebp
+215 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
+216
+217 51/push-ecx
+218
+219
+220 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 0/r32/eax 0xc/disp8 .
+221 2b/subtract 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 8/disp8 .
+222 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x10/disp8 .
+223 2b/subtract 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . .
+224
+225 3d/compare-eax-and 0/imm32
+226 7c/jump-if-< $_append-3:abort/disp8
+227
+228
+229 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 0/r32/eax 0x10/disp8 .
+230 8b/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . .
+231 8d/copy-address 1/mod/*+disp8 4/rm32/sib 0/base/eax 1/index/ecx . 1/r32/ecx 4/disp8 .
+232 51/push-ecx
+233
+234 8d/copy-address 1/mod/*+disp8 0/rm32/eax . . . 1/r32/ecx 4/disp8 .
+235 51/push-ecx
+236
+237 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 .
+238
+239 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 .
+240
+241 e8/call _append-4/disp32
+242
+243 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32
+244 $_append-3:end:
+245
+246 59/pop-to-ecx
+247
+248 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
+249 5d/pop-to-ebp
+250 c3/return
+251
+252 $_append-3:abort:
+253 (abort "_append-3 about to overflow")
+254
+255
+256
+257 _append-4:
+258
+259 55/push-ebp
+260 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
+261
+262 51/push-ecx
+263 52/push-edx
+264 53/push-ebx
+265 56/push-esi
+266 57/push-edi
+267
+268 b8/copy-to-eax 0/imm32
+269
+270 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 7/r32/edi 8/disp8 .
+271
+272 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 2/r32/edx 0xc/disp8 .
+273
+274 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 0x10/disp8 .
+275
+276 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 1/r32/ecx 0x14/disp8 .
+277 $_append-4:loop:
+278
+279 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . .
+280 73/jump-if-addr>= $_append-4:end/disp8
+281
+282 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . .
+283 0f 83/jump-if-addr>= $_append-4:abort/disp32
+284
+285 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . .
+286 88/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . .
+287
+288 40/increment-eax
+289
+290 46/increment-esi
+291
+292 47/increment-edi
+293 eb/jump $_append-4:loop/disp8
+294 $_append-4:end:
+295
+296 5f/pop-to-edi
+297 5e/pop-to-esi
+298 5b/pop-to-ebx
+299 5a/pop-to-edx
+300 59/pop-to-ecx
+301
+302 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
+303 5d/pop-to-ebp
+304 c3/return
+305
+306 $_append-4:abort:
+307 (draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0 "_append-4: stream full at " 3 0)
+308 (draw-int32-hex-wrapping-right-then-down-from-cursor-over-full-screen 0 %eax 3 0)
+309 (abort "")
+310
+311
+312