Index  Comments

Both roman numerals.chip8 and roman numerals.mmc are available under the CC0 Public Domain Dedication.

This is an implementation of my Roman numerals program in machine code, for the ninth Octojam event. It's a very simple program, and trivially proven to be correct; perhaps even most of its logic could be recycled for a similar such program, even. I used the simpler tables of that tabular programming approach for this, as it was easier to comprehend at this low level. I may have decomposed my first example of this style into too many tables, truly just to demonstrate it better, but it matters not.

Follows is a view of the complete program, when loaded into the MMC:

200-201 0512-0513 █▄█ ▄ █▄ A2EB 41707                 I ← illinc
202-203 0514-0515 ▀██▀▀█▀▄ FE65 65125                 Load V0→VE; I ← I + 15
204-205 0516-0517 ▀▀▀█▀█▀▄ FE15 65045          primus delay ← VE
206-207 0518-0519 █▄█  █   A4E4 42212                 I ← finis
208-209 0520-0521 ▀█▀█▀█▀▄ FE55 65109                 Save V0→VE; I ← I + 15
20A-20B 0522-0523 █ ▀▄▄█▄  A49E 42142                 I ← praeter
20C-20D 0524-0525 ▀██▀ ▄ ▄ F065 61541        secundus Load V0→V0; I ← I + 01
20E-20F 0526-0527  ▀       4000 16384                 Skip next if V0 <> 000
210-211 0528-0529   ▄▀▄▄▀  122C 04652                 Jump to regula
212-213 0530-0531 ▀██▀ ▄ █ F165 61797                 Load V0→V1; I ← I + 02
214-215 0532-0533 ▄▀▄█     50B0 20656                 Skip next if V0 = VB
216-217 0534-0535   ▄▀▄ ▀  1228 04648                 Jump to iterum
218-219 0536-0537 ▄█ ▀   ▀ 51C0 20928                 Skip next if V1 = VC
21A-21B 0538-0539   ▄▀▄ ▀  1228 04648                 Jump to iterum
21C-21D 0540-0541 ▀██▀▀█▀▄ FE65 65125                 Load V0→VE; I ← I + 15
21E-21F 0542-0543 █▄▀▄ █ ▄ A4D5 42197                 I ← huc
220-221 0544-0545 ▀█▀█▀█▀▄ FE55 65109                 Save V0→VE; I ← I + 15
222-223 0546-0547 █▄█  █   A4E4 42212                 I ← finis
224-225 0548-0549 ▀██▀▀█▀▄ FE65 65125                 Load V0→VE; I ← I + 15
226-227 0550-0551 ▄  █▄ █  129A 04762                 Jump to ostendo
228-229 0552-0553 ▀▀▀███▄▀ FD1E 64798          iterum I ← I + VD
22A-22B 0554-0555    ▀▄▄▀  120C 04620                 Jump to secundus
22C-22D 0556-0557 ▀ █   █▀ A322 41762          regula I ← centesima
22E-22F 0558-0559 ▀▀▀██▄█▀ FB1E 64286                 I ← I + VB
230-231 0560-0561 ▀▀▀██▄█▀ FB1E 64286                 I ← I + VB
232-233 0562-0563 ▀██▀ ▄ █ F165 61797                 Load V0→V1; I ← I + 02
234-235 0564-0565 ▀   ▀  ▀ 8900 35072                 V9 ← V0
236-237 0566-0567 ▀  ▄▀    8810 34832                 V8 ← V1
238-239 0568-0569 ▄▄█  ▄█  22E6 08934                 Call duo digiti
23A-23B 0570-0571 █ ▄      80A0 32928                 V0 ← VA
23C-23D 0572-0573 ▄▄█  ▄█  22E6 08934                 Call duo digiti
23E-23F 0574-0575 █ ▄    ▀ 81A0 33184                 V1 ← VA
240-241 0576-0577 ▄▄█  ▄█  22E6 08934                 Call duo digiti
242-243 0578-0579 █ ▄   ▀  82A0 33440                 V2 ← VA
244-245 0580-0581 ▄▄█  ▄█  22E6 08934                 Call duo digiti
246-247 0582-0583 █ ▄   ▀▀ 83A0 33696                 V3 ← VA
248-249 0584-0585 █   ▀  ▀ 8980 35200                 V9 ← V8
24A-24B 0586-0587 ▄▄█  ▄█  22E6 08934                 Call duo digiti
24C-24D 0588-0589 █ ▄  ▀   84A0 33952                 V4 ← VA
24E-24F 0590-0591 ▄▄█  ▄█  22E6 08934                 Call duo digiti
250-251 0592-0593 █ ▄  ▀ ▀ 85A0 34208                 V5 ← VA
252-253 0594-0595 ▄▄█  ▄█  22E6 08934                 Call duo digiti
254-255 0596-0597 █ ▄  ▀▀  86A0 34464                 V6 ← VA
256-257 0598-0599 █▄▀▄ █ ▄ A4D5 42197                 I ← huc
258-259 0600-0601 ▀█▀█ █▀▄ F655 63061                 Save V0→V6; I ← I + 07
25A-25B 0602-0603 ▀▄█▄  █▀ A372 41842                 I ← de centum
25C-25D 0604-0605 ▀▀▀███▄  FC1E 64542                 I ← I + VC
25E-25F 0606-0607 ▀▀▀███▄  FC1E 64542                 I ← I + VC
260-261 0608-0609 ▀▀▀███▄  FC1E 64542                 I ← I + VC
262-263 0610-0611 ▀██▀ ▄▀▄ F265 62053                 Load V0→V2; I ← I + 03
264-265 0612-0613 ▀   ▀  ▀ 8900 35072                 V9 ← V0
266-267 0614-0615 ▀  ▄ ▀▀▀ 8710 34576                 V7 ← V1
268-269 0616-0617 ▀ ▄ ▀    8820 34848                 V8 ← V2
26A-26B 0618-0619 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
26C-26D 0620-0621 █ ▄      80A0 32928                 V0 ← VA
26E-26F 0622-0623 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
270-271 0624-0625 █ ▄    ▀ 81A0 33184                 V1 ← VA
272-273 0626-0627 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
274-275 0628-0629 █ ▄ ▀▄█  8AA6 35494                 VA ← VA ÷ 2; VF ← LSB
276-277 0630-0631 ▀▄▄▄▀  ▀ 8970 35184                 V9 ← V7
278-279 0632-0633 ▄▄▀▄▄▄▀  22DC 08924                 Call semel
27A-27B 0634-0635 █ ▄   ▀  82A0 33440                 V2 ← VA
27C-27D 0636-0637 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
27E-27F 0638-0639 █ ▄   ▀▀ 83A0 33696                 V3 ← VA
280-281 0640-0641 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
282-283 0642-0643 █ ▄  ▀   84A0 33952                 V4 ← VA
284-285 0644-0645  ▀▀ ▀ ▀  6A00 27136                 VA ← 000
286-287 0646-0647 ▄▄▀▄▄▄▀  22DC 08924                 Call semel
288-289 0648-0649 █   ▀  ▀ 8980 35200                 V9 ← V8
28A-28B 0650-0651 ▄▄▀▄▄ █  22DA 08922                 Call bis
28C-28D 0652-0653 █ ▄  ▀ ▀ 85A0 34208                 V5 ← VA
28E-28F 0654-0655 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
290-291 0656-0657 █ ▄  ▀▀  86A0 34464                 V6 ← VA
292-293 0658-0659 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
294-295 0660-0661 █ ▄  ▀▀▀ 87A0 34720                 V7 ← VA
296-297 0662-0663 █▄▀▄▄█   A4DC 42204                 I ← illuc
298-299 0664-0665 ▀█▀█ █▀█ F755 63317                 Save V0→V7; I ← I + 08
29A-29B 0666-0667  ▀▀   ▄▀ 6102 24834         ostendo V1 ← 002
29C-29D 0668-0669  ▀▀   █  6202 25090                 V2 ← 002
29E-29F 0670-0671  ▀▀   ▀▀ 6300 25344                 V3 ← 000
2A0-2A1 0672-0673 █▄▀▄ █ ▄ A4D5 42197          rursus I ← huc
2A2-2A3 0674-0675 ▀▀▀█▄▄█▀ F31E 62238                 I ← I + V3
2A4-2A5 0676-0677 ▀██▀ ▄ ▄ F065 61541                 Load V0→V0; I ← I + 01
2A6-2A7 0678-0679 █▄█▄ ▄▀▄ A2F5 41717                 I ← litterae
2A8-2A9 0680-0681 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2AA-2AB 0682-0683 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2AC-2AD 0684-0685 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2AE-2AF 0686-0687 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2B0-2B1 0688-0689 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2B2-2B3 0690-0691   ▀▀     3000 12288                 Skip next if V0 = 000
2B4-2B5 0692-0693 ▀▀▄▀ ▄ █ D125 53541                 Draw 08×05 at V1,V2; VF ← XOR
2B6-2B7 0694-0695   ▀▀     3000 12288                 Skip next if V0 = 000
2B8-2B9 0696-0697  ▀▀▀ ▄ ▀ 7104 28932                 V1 ← V1 + 004
2BA-2BB 0698-0699  ▀▀▀  ▀█ 7301 29441                 V3 ← V3 + 001
2BC-2BD 0700-0701   ▀▀▄▄██ 330F 13071                 Skip next if V3 = 015
2BE-2BF 0702-0703 ▄ ▄▀  ▀  12A0 04768                 Jump to rursus
2C0-2C1 0704-0705  ▀▀▀▀▀ ▄ 7C01 31745                 VC ← VC + 001
2C2-2C3 0706-0707  █▄ ▀█   4C64 19556                 Skip next if VC <> 100
2C4-2C5 0708-0709  ▀▀ ▀▀   6C00 27648                 VC ← 000
2C6-2C7 0710-0711  ▀  ▀▀   4C00 19456                 Skip next if VC <> 000
2C8-2C9 0712-0713  ▀▀▀▀ ▀█ 7B01 31489                 VB ← VB + 001
2CA-2CB 0714-0715  ▀▄ █ ▀▀ 4B28 19240                 Skip next if VB <> 040
2CC-2CD 0716-0717 ▄▄ ▀▄▄▀  12CC 04812              se Jump to se
2CE-2CF 0718-0719 ▀▀▀▀▀███ FF07 65287          tempus VF ← delay
2D0-2D1 0720-0721   ▀▀▀▀▀▀ 3F00 16128                 Skip next if VF = 000
2D2-2D3 0722-0723 ▄▄ ▀▄▄█  12CE 04814                 Jump to tempus
2D4-2D5 0724-0725 ▄▄▄      00E0 00224                 Clear the screen
2D6-2D7 0726-0727    ▀ ▄▀  1204 04612                 Jump to primus
2D8-2D9 0728-0729 ▄▄▀▄▄▄▀  22DC 08924             ter Call semel
2DA-2DB 0730-0731 ▄▄▀▄▄▄▀  22DC 08924             bis Call semel
2DC-2DD 0732-0733 █ ▄ █▄█  8AAE 35502           semel VA ← VA × 2; VF ← MSB
2DE-2DF 0734-0735 █  ▄█▄▄▀ 899E 35230                 V9 ← V9 × 2; VF ← MSB
2E0-2E1 0736-0737   ▀▀▀▀▀▀ 3F00 16128                 Skip next if VF = 000
2E2-2E3 0738-0739  ▀▀▀▀ ▀▄ 7A01 31233                 VA ← VA + 001
2E4-2E5 0740-0741 ▄▄▄ ▄▄▄  00EE 00238                 Return
2E6-2E7 0742-0743  ▀▀ ▀ ▀  6A00 27136      duo digiti VA ← 000
2E8-2E9 0744-0745 ▄▄▀▄▄ █  22DA 08922                 Call bis
2EA-2EB 0746-0747   ▀▀▀ ▀  3A00 14848!         illinc Skip next if VA = 000
2EC-2ED 0748-0749  ▀▀▀▀▄▀  7A04 31236                 VA ← VA + 004
2EE-2EF 0750-0751 ▄▄▄ ▄▄▄  00EE 00238                 Return
2F0-2F1 0752-0753  ▀▀ ▀ ▀  6A00 27136     tres digiti VA ← 000
2F2-2F3 0754-0755 ▄▄▀▄▄ ▀  22D8 08920                 Call ter
2F4-2F5 0756-0757 ▄▄▄ ▄▄▄  00EE 00238!       litterae Return
2F6     0758                 00   000                 
2F7     0759                 00   000                 
2F8     0760          ████   0F   015                 
2F9     0761         ████    1E   030                 
2FA     0762      ███        E0   224               I 
2FB     0763       █         40   064                 
2FC     0764       █         40   064                 
2FD     0765       █         40   064                 
2FE     0766      ███        E0   224                 
2FF     0767      █ █        A0   160               V 
300     0768      █ █        A0   160                 
301     0769      █ █        A0   160                 
302     0770      █ █        A0   160                 
303     0771       █         40   064                 
304     0772      █ █        A0   160               X 
305     0773      █ █        A0   160                 
306     0774       █         40   064                 
307     0775      █ █        A0   160                 
308     0776      █ █        A0   160                 
309     0777      █          80   128               L 
30A     0778      █          80   128                 
30B     0779      █          80   128                 
30C     0780      █          80   128                 
30D     0781      ███        E0   224                 
30E     0782      ███        E0   224               C 
30F     0783      █          80   128                 
310     0784      █          80   128                 
311     0785      █          80   128                 
312     0786      ███        E0   224                 
313     0787      ██         C0   192               D 
314     0788      █ █        A0   160                 
315     0789      █ █        A0   160                 
316     0790      █ █        A0   160                 
317     0791      ██         C0   192                 
318     0792      █ █        A0   160               M 
319     0793      ███        E0   224                 
31A     0794      ███        E0   224                 
31B     0795      ███        E0   224                 
31C     0796      █ █        A0   160                 
31D     0797      █  █       90   144               N 
31E     0798      ██ █       D0   208                 
31F     0799      ████       F0   240                 
320     0800      █ ██       B0   176                 
321     0801      █  █       90   144                 
322     0802                 00   000       centesima 
323     0803                 00   000                 
324     0804       █         40   064                 
325     0805                 00   000                 
326     0806       █ █       50   080                 
327     0807                 00   000                 
328     0808       █ █ █     54   084                 
329     0809                 00   000                 
32A     0810       ██        60   096                 
32B     0811                 00   000                 
32C     0812      █          80   128                 
32D     0813                 00   000                 
32E     0814      █  █       90   144                 
32F     0815                 00   000                 
330     0816      █  █ █     94   148                 
331     0817                 00   000                 
332     0818      █  █ █ █   95   149                 
333     0819                 00   000                 
334     0820       ███       70   112                 
335     0821                 00   000                 
336     0822      ██         C0   192                 
337     0823                 00   000                 
338     0824      ██ █       D0   208                 
339     0825                 00   000                 
33A     0826      ██ █ █     D4   212                 
33B     0827                 00   000                 
33C     0828      ██ █ █ █   D5   213                 
33D     0829                 00   000                 
33E     0830      ██ ██      D8   216                 
33F     0831                 00   000                 
340     0832      ███        E0   224                 
341     0833                 00   000                 
342     0834      ███  █     E4   228                 
343     0835                 00   000                 
344     0836      ███  █ █   E5   229                 
345     0837                 00   000                 
346     0838      ███  █ █   E5   229                 
347     0839       █         40   064                 
348     0840      ██ ███     DC   220                 
349     0841                 00   000                 
34A     0842      ████       F0   240                 
34B     0843                 00   000                 
34C     0844      ████ █     F4   244                 
34D     0845                 00   000                 
34E     0846      ████ █ █   F5   245                 
34F     0847                 00   000                 
350     0848      ████ █ █   F5   245                 
351     0849       █         40   064                 
352     0850      ████ ██    F6   246                 
353     0851                 00   000                 
354     0852      █████      F8   248                 
355     0853                 00   000                 
356     0854      █████  █   F9   249                 
357     0855                 00   000                 
358     0856      █████  █   F9   249                 
359     0857       █         40   064                 
35A     0858      █████  █   F9   249                 
35B     0859       █ █       50   080                 
35C     0860      ████ ███   F7   247                 
35D     0861                 00   000                 
35E     0862      ██████     FC   252                 
35F     0863                 00   000                 
360     0864      ██████ █   FD   253                 
361     0865                 00   000                 
362     0866      ██████ █   FD   253                 
363     0867       █         40   064                 
364     0868      ██████ █   FD   253                 
365     0869       █ █       50   080                 
366     0870      ██████ █   FD   253                 
367     0871      █          80   128                 
368     0872      ███████    FE   254                 
369     0873                 00   000                 
36A     0874      ███████    FE   254                 
36B     0875       █         40   064                 
36C     0876      ███████    FE   254                 
36D     0877       █ █       50   080                 
36E     0878      ███████    FE   254                 
36F     0879       █ █ █     54   084                 
370     0880      ██████ █   FD   253                 
371     0881      ██         C0   192                 
372     0882                 00   000       de centum 
373     0883                 00   000                 
374     0884                 00   000                 
375     0885        █        20   032                 
376     0886                 00   000                 
377     0887                 00   000                 
378     0888        █  █     24   036                 
379     0889                 00   000                 
37A     0890                 00   000                 
37B     0891        █  █     24   036                 
37C     0892      █          80   128                 
37D     0893                 00   000                 
37E     0894        █ █      28   040                 
37F     0895                 00   000                 
380     0896                 00   000                 
381     0897       █         40   064                 
382     0898                 00   000                 
383     0899                 00   000                 
384     0900       █   █     44   068                 
385     0901                 00   000                 
386     0902                 00   000                 
387     0903       █   █     44   068                 
388     0904      █          80   128                 
389     0905                 00   000                 
38A     0906       █   █     44   068                 
38B     0907      █  █       90   144                 
38C     0908                 00   000                 
38D     0909        █ ██     2C   044                 
38E     0910                 00   000                 
38F     0911                 00   000                 
390     0912       ██        60   096                 
391     0913                 00   000                 
392     0914                 00   000                 
393     0915       ██  █     64   100                 
394     0916                 00   000                 
395     0917                 00   000                 
396     0918       ██  █     64   100                 
397     0919      █          80   128                 
398     0920                 00   000                 
399     0921       ██  █     64   100                 
39A     0922      █  █       90   144                 
39B     0923                 00   000                 
39C     0924       ██  █ █   65   101                 
39D     0925                 00   000                 
39E     0926                 00   000                 
39F     0927       ██ █      68   104                 
3A0     0928                 00   000                 
3A1     0929                 00   000                 
3A2     0930       ██ █      68   104                 
3A3     0931      █          80   128                 
3A4     0932                 00   000                 
3A5     0933       ██ █      68   104                 
3A6     0934      █  █       90   144                 
3A7     0935                 00   000                 
3A8     0936       ██ █      68   104                 
3A9     0937      █  █  █    92   146                 
3AA     0938                 00   000                 
3AB     0939       ██  █ █   65   101                 
3AC     0940      █          80   128                 
3AD     0941                 00   000                 
3AE     0942       ██ ██     6C   108                 
3AF     0943                 00   000                 
3B0     0944                 00   000                 
3B1     0945       ██ ██     6C   108                 
3B2     0946      █          80   128                 
3B3     0947                 00   000                 
3B4     0948       ██ ██     6C   108                 
3B5     0949      █  █       90   144                 
3B6     0950                 00   000                 
3B7     0951       ██ ██     6C   108                 
3B8     0952      █  █  █    92   146                 
3B9     0953                 00   000                 
3BA     0954       ██ ██     6C   108                 
3BB     0955      █ █        A0   160                 
3BC     0956                 00   000                 
3BD     0957       ██ ██ █   6D   109                 
3BE     0958                 00   000                 
3BF     0959                 00   000                 
3C0     0960       ██ ██ █   6D   109                 
3C1     0961         █       10   016                 
3C2     0962                 00   000                 
3C3     0963       ██ ██ █   6D   109                 
3C4     0964         █  █    12   018                 
3C5     0965                 00   000                 
3C6     0966       ██ ██ █   6D   109                 
3C7     0967         █  █    12   018                 
3C8     0968       █         40   064                 
3C9     0969       ██ ██     6C   108                 
3CA     0970      █ ██       B0   176                 
3CB     0971                 00   000                 
3CC     0972       ██ ██ █   6D   109                 
3CD     0973      █          80   128                 
3CE     0974                 00   000                 
3CF     0975       ██ ██ █   6D   109                 
3D0     0976      █  █       90   144                 
3D1     0977                 00   000                 
3D2     0978       ██ ██ █   6D   109                 
3D3     0979      █  █  █    92   146                 
3D4     0980                 00   000                 
3D5     0981       ██ ██ █   6D   109                 
3D6     0982      █  █  █    92   146                 
3D7     0983       █         40   064                 
3D8     0984       ██ ██ █   6D   109                 
3D9     0985      █  █ █     94   148                 
3DA     0986                 00   000                 
3DB     0987       ██ ██ █   6D   109                 
3DC     0988      █ █        A0   160                 
3DD     0989                 00   000                 
3DE     0990       ██ ██ █   6D   109                 
3DF     0991      █ █   █    A2   162                 
3E0     0992                 00   000                 
3E1     0993       ██ ██ █   6D   109                 
3E2     0994      █ █   █    A2   162                 
3E3     0995       █         40   064                 
3E4     0996       ██ ██ █   6D   109                 
3E5     0997      █ █   █    A2   162                 
3E6     0998       █  █      48   072                 
3E7     0999       ██ ██ █   6D   109                 
3E8     1000      █  █ ██    96   150                 
3E9     1001                 00   000                 
3EA     1002       ███       70   112                 
3EB     1003                 00   000                 
3EC     1004                 00   000                 
3ED     1005       ███       70   112                 
3EE     1006      █          80   128                 
3EF     1007                 00   000                 
3F0     1008       ███       70   112                 
3F1     1009      █  █       90   144                 
3F2     1010                 00   000                 
3F3     1011       ███       70   112                 
3F4     1012      █  █  █    92   146                 
3F5     1013                 00   000                 
3F6     1014       ███       70   112                 
3F7     1015      █ █        A0   160                 
3F8     1016                 00   000                 
3F9     1017       ███   █   71   113                 
3FA     1018                 00   000                 
3FB     1019                 00   000                 
3FC     1020       ███   █   71   113                 
3FD     1021         █       10   016                 
3FE     1022                 00   000                 
3FF     1023       ███   █   71   113                 
400     1024         █  █    12   018                 
401     1025                 00   000                 
402     1026       ███   █   71   113                 
403     1027         █  █    12   018                 
404     1028       █         40   064                 
405     1029       ███       70   112                 
406     1030      █ ██       B0   176                 
407     1031                 00   000                 
408     1032      █          80   128                 
409     1033                 00   000                 
40A     1034                 00   000                 
40B     1035      █    █     84   132                 
40C     1036                 00   000                 
40D     1037                 00   000                 
40E     1038      █    █     84   132                 
40F     1039      █          80   128                 
410     1040                 00   000                 
411     1041      █    █     84   132                 
412     1042      █  █       90   144                 
413     1043                 00   000                 
414     1044      █    █ █   85   133                 
415     1045                 00   000                 
416     1046                 00   000                 
417     1047      █   █      88   136                 
418     1048                 00   000                 
419     1049                 00   000                 
41A     1050      █   █      88   136                 
41B     1051      █          80   128                 
41C     1052                 00   000                 
41D     1053      █   █      88   136                 
41E     1054      █  █       90   144                 
41F     1055                 00   000                 
420     1056      █   █      88   136                 
421     1057      █  █  █    92   146                 
422     1058                 00   000                 
423     1059      █    █ █   85   133                 
424     1060      █          80   128                 
425     1061                 00   000                 
426     1062      █   ██     8C   140                 
427     1063                 00   000                 
428     1064                 00   000                 
429     1065      █   ██     8C   140                 
42A     1066      █          80   128                 
42B     1067                 00   000                 
42C     1068      █   ██     8C   140                 
42D     1069      █  █       90   144                 
42E     1070                 00   000                 
42F     1071      █   ██     8C   140                 
430     1072      █  █  █    92   146                 
431     1073                 00   000                 
432     1074      █   ██     8C   140                 
433     1075      █ █        A0   160                 
434     1076                 00   000                 
435     1077      █   ██ █   8D   141                 
436     1078                 00   000                 
437     1079                 00   000                 
438     1080      █   ██ █   8D   141                 
439     1081         █       10   016                 
43A     1082                 00   000                 
43B     1083      █   ██ █   8D   141                 
43C     1084         █  █    12   018                 
43D     1085                 00   000                 
43E     1086      █   ██ █   8D   141                 
43F     1087         █  █    12   018                 
440     1088       █         40   064                 
441     1089      █   ██     8C   140                 
442     1090      █ ██       B0   176                 
443     1091                 00   000                 
444     1092      █   ██ █   8D   141                 
445     1093      █          80   128                 
446     1094                 00   000                 
447     1095      █   ██ █   8D   141                 
448     1096      █  █       90   144                 
449     1097                 00   000                 
44A     1098      █   ██ █   8D   141                 
44B     1099      █  █  █    92   146                 
44C     1100                 00   000                 
44D     1101      █   ██ █   8D   141                 
44E     1102      █  █  █    92   146                 
44F     1103       █         40   064                 
450     1104      █   ██ █   8D   141                 
451     1105      █  █ █     94   148                 
452     1106                 00   000                 
453     1107      █   ██ █   8D   141                 
454     1108      █ █        A0   160                 
455     1109                 00   000                 
456     1110      █   ██ █   8D   141                 
457     1111      █ █   █    A2   162                 
458     1112                 00   000                 
459     1113      █   ██ █   8D   141                 
45A     1114      █ █   █    A2   162                 
45B     1115       █         40   064                 
45C     1116      █   ██ █   8D   141                 
45D     1117      █ █   █    A2   162                 
45E     1118       █  █      48   072                 
45F     1119      █   ██ █   8D   141                 
460     1120      █  █ ██    96   150                 
461     1121                 00   000                 
462     1122      █   ██ █   8D   141                 
463     1123      █ ██       B0   176                 
464     1124                 00   000                 
465     1125      █   ██ █   8D   141                 
466     1126      █ ██  █    B2   178                 
467     1127                 00   000                 
468     1128      █   ██ █   8D   141                 
469     1129      █ ██  █    B2   178                 
46A     1130       █         40   064                 
46B     1131      █   ██ █   8D   141                 
46C     1132      █ ██  █    B2   178                 
46D     1133       █  █      48   072                 
46E     1134      █   ██ █   8D   141                 
46F     1135      █ ██  █    B2   178                 
470     1136      █          80   128                 
471     1137      █   ██ █   8D   141                 
472     1138      █ ██ █     B4   180                 
473     1139                 00   000                 
474     1140      █   ██ █   8D   141                 
475     1141      █ ██ █     B4   180                 
476     1142       █         40   064                 
477     1143      █   ██ █   8D   141                 
478     1144      █ ██ █     B4   180                 
479     1145       █  █      48   072                 
47A     1146      █   ██ █   8D   141                 
47B     1147      █ ██ █     B4   180                 
47C     1148       █  █  █   49   073                 
47D     1149      █   ██ █   8D   141                 
47E     1150      █ ██  █    B2   178                 
47F     1151      ██         C0   192                 
480     1152       ███ █     74   116                 
481     1153                 00   000                 
482     1154                 00   000                 
483     1155       ███ █     74   116                 
484     1156      █          80   128                 
485     1157                 00   000                 
486     1158       ███ █     74   116                 
487     1159      █  █       90   144                 
488     1160                 00   000                 
489     1161       ███ █     74   116                 
48A     1162      █  █  █    92   146                 
48B     1163                 00   000                 
48C     1164       ███ █     74   116                 
48D     1165      █ █        A0   160                 
48E     1166                 00   000                 
48F     1167       ███ █ █   75   117                 
490     1168                 00   000                 
491     1169                 00   000                 
492     1170       ███ █ █   75   117                 
493     1171         █       10   016                 
494     1172                 00   000                 
495     1173       ███ █ █   75   117                 
496     1174         █  █    12   018                 
497     1175                 00   000                 
498     1176       ███ █ █   75   117                 
499     1177         █  █    12   018                 
49A     1178       █         40   064                 
49B     1179       ███ █     74   116                 
49C     1180      █ ██       B0   176                 
49D     1181                 00   000                 
49E     1182             █   01   001         praeter 
49F     1183                 00   000                 
4A0     1184                 00   000                 
4A1     1185          █      08   008                 
4A2     1186                 00   000                 
4A3     1187                 00   000                 
4A4     1188                 00   000                 
4A5     1189                 00   000                 
4A6     1190                 00   000                 
4A7     1191                 00   000                 
4A8     1192                 00   000                 
4A9     1193                 00   000                 
4AA     1194                 00   000                 
4AB     1195                 00   000                 
4AC     1196                 00   000                 
4AD     1197                 00   000                 
4AE     1198                 00   000                 
4AF     1199                 00   000                 
4B0     1200            █    02   002                 
4B1     1201                 00   000                 
4B2     1202         █  █    12   018                 
4B3     1203            ██   03   003                 
4B4     1204             █   01   001                 
4B5     1205             █   01   001                 
4B6     1206            ██   03   003                 
4B7     1207                 00   000                 
4B8     1208                 00   000                 
4B9     1209                 00   000                 
4BA     1210                 00   000                 
4BB     1211                 00   000                 
4BC     1212                 00   000                 
4BD     1213                 00   000                 
4BE     1214                 00   000                 
4BF     1215                 00   000                 
4C0     1216                 00   000                 
4C1     1217                 00   000                 
4C2     1218            ██   03   003                 
4C3     1219                 00   000                 
4C4     1220         █ ██    16   022                 
4C5     1221             █   01   001                 
4C6     1222             █   01   001                 
4C7     1223            ██   03   003                 
4C8     1224            ██   03   003                 
4C9     1225                 00   000                 
4CA-4CB 1226-1227          0000 00000                 
4CC-4CD 1228-1229          0000 00000                 
4CE-4CF 1230-1231          0000 00000                 
4D0-4D1 1232-1233          0000 00000                 
4D2-4D3 1234-1235          0000 00000                 
4D4-4D5 1236-1237          0000 00000!            huc 
4D6-4D7 1238-1239          0000 00000                 
4D8-4D9 1240-1241          0000 00000                 
4DA-4DB 1242-1243          0000 00000                 
4DC-4DD 1244-1245          0000 00000           illuc 
4DE-4DF 1246-1247          0000 00000                 
4E0-4E1 1248-1249          0000 00000                 
4E2-4E3 1250-1251          0000 00000                 
4E4-4E5 1252-1253          0000 00000           finis 

The register usage is as follows:

  1. V0 Memory movement.
  2. V1 Memory movement and horizontal sprite coordinates.
  3. V2 Memory movement and vertical sprite coordinates.
  4. V3 Memory movement and an index.
  5. V4 Memory movement.
  6. V5 Memory movement.
  7. V6 Memory movement.
  8. V7 Memory movement and serve as scratch.
  9. V8 Serve as scratch.
  10. V9 Serve as scratch.
  11. VA Serve as scratch.
  12. VB Hold a counter.
  13. VC Hold a counter.
  14. VD Hold a constant length.
  15. VE Hold a delay.
  16. VF Manipulate the delay register hold special results.

This program initializes registers, sets a delay, and saves its registers to the end of the program:

200-201 0512-0513 █▄█ ▄ █▄ A2EB 41707                 I ← illinc
202-203 0514-0515 ▀██▀▀█▀▄ FE65 65125                 Load V0→VE; I ← I + 15
204-205 0516-0517 ▀▀▀█▀█▀▄ FE15 65045          primus delay ← VE
206-207 0518-0519 █▄█  █   A4E4 42212                 I ← finis
208-209 0520-0521 ▀█▀█▀█▀▄ FE55 65109                 Save V0→VE; I ← I + 15

The reason for saving the registers is this secondary loop which scans the list of exceptions during each iteration. If the first octet be zero, then scanning is finished; otherwise, the following two octets are taken to compare against registers eleven and twelve; if both match, the exception holds, and the following fifteen octets will be shown, with the registers being restored beforehand; in all other cases, the following fifteen octets will be skipped and the scanning of the list continues on:

20A-20B 0522-0523 █ ▀▄▄█▄  A49E 42142                 I ← praeter
20C-20D 0524-0525 ▀██▀ ▄ ▄ F065 61541        secundus Load V0→V0; I ← I + 01
20E-20F 0526-0527  ▀       4000 16384                 Skip next if V0 <> 000
210-211 0528-0529   ▄▀▄▄▀  122C 04652                 Jump to regula
212-213 0530-0531 ▀██▀ ▄ █ F165 61797                 Load V0→V1; I ← I + 02
214-215 0532-0533 ▄▀▄█     50B0 20656                 Skip next if V0 = VB
216-217 0534-0535   ▄▀▄ ▀  1228 04648                 Jump to iterum
218-219 0536-0537 ▄█ ▀   ▀ 51C0 20928                 Skip next if V1 = VC
21A-21B 0538-0539   ▄▀▄ ▀  1228 04648                 Jump to iterum
21C-21D 0540-0541 ▀██▀▀█▀▄ FE65 65125                 Load V0→VE; I ← I + 15
21E-21F 0542-0543 █▄▀▄ █ ▄ A4D5 42197                 I ← huc
220-221 0544-0545 ▀█▀█▀█▀▄ FE55 65109                 Save V0→VE; I ← I + 15
222-223 0546-0547 █▄█  █   A4E4 42212                 I ← finis
224-225 0548-0549 ▀██▀▀█▀▄ FE65 65125                 Load V0→VE; I ← I + 15
226-227 0550-0551 ▄  █▄ █  129A 04762                 Jump to ostendo
228-229 0552-0553 ▀▀▀███▄▀ FD1E 64798          iterum I ← I + VD
22A-22B 0554-0555    ▀▄▄▀  120C 04620                 Jump to secundus

Regular iteration shows the result of concatenating two indexed tables; the first table, of hextets, stores fourteen pairs of bits in each entry, taken successively by routine and stored in those first seven registers; swapping the registers used, after the fourth call, produces no crease and is easy:

22C-22D 0556-0557 ▀ █   █▀ A322 41762          regula I ← centesima
22E-22F 0558-0559 ▀▀▀██▄█▀ FB1E 64286                 I ← I + VB
230-231 0560-0561 ▀▀▀██▄█▀ FB1E 64286                 I ← I + VB
232-233 0562-0563 ▀██▀ ▄ █ F165 61797                 Load V0→V1; I ← I + 02
234-235 0564-0565 ▀   ▀  ▀ 8900 35072                 V9 ← V0
236-237 0566-0567 ▀  ▄▀    8810 34832                 V8 ← V1
238-239 0568-0569 ▄▄█  ▄█  22E6 08934                 Call duo digiti
23A-23B 0570-0571 █ ▄      80A0 32928                 V0 ← VA
23C-23D 0572-0573 ▄▄█  ▄█  22E6 08934                 Call duo digiti
23E-23F 0574-0575 █ ▄    ▀ 81A0 33184                 V1 ← VA
240-241 0576-0577 ▄▄█  ▄█  22E6 08934                 Call duo digiti
242-243 0578-0579 █ ▄   ▀  82A0 33440                 V2 ← VA
244-245 0580-0581 ▄▄█  ▄█  22E6 08934                 Call duo digiti
246-247 0582-0583 █ ▄   ▀▀ 83A0 33696                 V3 ← VA
248-249 0584-0585 █   ▀  ▀ 8980 35200                 V9 ← V8
24A-24B 0586-0587 ▄▄█  ▄█  22E6 08934                 Call duo digiti
24C-24D 0588-0589 █ ▄  ▀   84A0 33952                 V4 ← VA
24E-24F 0590-0591 ▄▄█  ▄█  22E6 08934                 Call duo digiti
250-251 0592-0593 █ ▄  ▀ ▀ 85A0 34208                 V5 ← VA
252-253 0594-0595 ▄▄█  ▄█  22E6 08934                 Call duo digiti
254-255 0596-0597 █ ▄  ▀▀  86A0 34464                 V6 ← VA
256-257 0598-0599 █▄▀▄ █ ▄ A4D5 42197                 I ← huc
258-259 0600-0601 ▀█▀█ █▀▄ F655 63061                 Save V0→V6; I ← I + 07

The second table, of octet triplets, stores eight triplets of bits in each entry, taken successively by routine and stored in those first eight registers; swapping the registers used, after that second call, produces a slight crease corrected by undoing a shift before swapping in the next and resuming with a call of a more primitive routine. The next crease, after another two calls, is not as easily corrected; it's easier to abandon the routine and call the primitive routine again, before calling a second primitive routine, and only then resuming normally. Finally, the eight octets are deposited:

25A-25B 0602-0603 ▀▄█▄  █▀ A372 41842                 I ← de centum
25C-25D 0604-0605 ▀▀▀███▄  FC1E 64542                 I ← I + VC
25E-25F 0606-0607 ▀▀▀███▄  FC1E 64542                 I ← I + VC
260-261 0608-0609 ▀▀▀███▄  FC1E 64542                 I ← I + VC
262-263 0610-0611 ▀██▀ ▄▀▄ F265 62053                 Load V0→V2; I ← I + 03
264-265 0612-0613 ▀   ▀  ▀ 8900 35072                 V9 ← V0
266-267 0614-0615 ▀  ▄ ▀▀▀ 8710 34576                 V7 ← V1
268-269 0616-0617 ▀ ▄ ▀    8820 34848                 V8 ← V2
26A-26B 0618-0619 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
26C-26D 0620-0621 █ ▄      80A0 32928                 V0 ← VA
26E-26F 0622-0623 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
270-271 0624-0625 █ ▄    ▀ 81A0 33184                 V1 ← VA
272-273 0626-0627 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
274-275 0628-0629 █ ▄ ▀▄█  8AA6 35494                 VA ← VA ÷ 2; VF ← LSB
276-277 0630-0631 ▀▄▄▄▀  ▀ 8970 35184                 V9 ← V7
278-279 0632-0633 ▄▄▀▄▄▄▀  22DC 08924                 Call semel
27A-27B 0634-0635 █ ▄   ▀  82A0 33440                 V2 ← VA
27C-27D 0636-0637 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
27E-27F 0638-0639 █ ▄   ▀▀ 83A0 33696                 V3 ← VA
280-281 0640-0641 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
282-283 0642-0643 █ ▄  ▀   84A0 33952                 V4 ← VA
284-285 0644-0645  ▀▀ ▀ ▀  6A00 27136                 VA ← 000
286-287 0646-0647 ▄▄▀▄▄▄▀  22DC 08924                 Call semel
288-289 0648-0649 █   ▀  ▀ 8980 35200                 V9 ← V8
28A-28B 0650-0651 ▄▄▀▄▄ █  22DA 08922                 Call bis
28C-28D 0652-0653 █ ▄  ▀ ▀ 85A0 34208                 V5 ← VA
28E-28F 0654-0655 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
290-291 0656-0657 █ ▄  ▀▀  86A0 34464                 V6 ← VA
292-293 0658-0659 ▄▄█▄  ▀  22F0 08944                 Call tres digiti
294-295 0660-0661 █ ▄  ▀▀▀ 87A0 34720                 V7 ← VA
296-297 0662-0663 █▄▀▄▄█   A4DC 42204                 I ← illuc
298-299 0664-0665 ▀█▀█ █▀█ F755 63317                 Save V0→V7; I ← I + 08

The ranges of both tables have blank values, and concatenation is achieved in the showing routine by skipping such blanks. Firstly, the coordinates and index are initialized, and each letter is shown, by indexing into a table of values five octets long; blanks are ignored only after indexing, causing no coordinate changes. Once all fifteen possible letters have been shown or not, does the loop end:

29A-29B 0666-0667  ▀▀   ▄▀ 6102 24834         ostendo V1 ← 002
29C-29D 0668-0669  ▀▀   █  6202 25090                 V2 ← 002
29E-29F 0670-0671  ▀▀   ▀▀ 6300 25344                 V3 ← 000
2A0-2A1 0672-0673 █▄▀▄ █ ▄ A4D5 42197          rursus I ← huc
2A2-2A3 0674-0675 ▀▀▀█▄▄█▀ F31E 62238                 I ← I + V3
2A4-2A5 0676-0677 ▀██▀ ▄ ▄ F065 61541                 Load V0→V0; I ← I + 01
2A6-2A7 0678-0679 █▄█▄ ▄▀▄ A2F5 41717                 I ← litterae
2A8-2A9 0680-0681 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2AA-2AB 0682-0683 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2AC-2AD 0684-0685 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2AE-2AF 0686-0687 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2B0-2B1 0688-0689 ▀▀▀█▄▄▄  F01E 61470                 I ← I + V0
2B2-2B3 0690-0691   ▀▀     3000 12288                 Skip next if V0 = 000
2B4-2B5 0692-0693 ▀▀▄▀ ▄ █ D125 53541                 Draw 08×05 at V1,V2; VF ← XOR
2B6-2B7 0694-0695   ▀▀     3000 12288                 Skip next if V0 = 000
2B8-2B9 0696-0697  ▀▀▀ ▄ ▀ 7104 28932                 V1 ← V1 + 004
2BA-2BB 0698-0699  ▀▀▀  ▀█ 7301 29441                 V3 ← V3 + 001
2BC-2BD 0700-0701   ▀▀▄▄██ 330F 13071                 Skip next if V3 = 015
2BE-2BF 0702-0703 ▄ ▄▀  ▀  12A0 04768                 Jump to rursus

The integer to show is incremented and the registers holding it are kept within their domains: below one hundred and below forty, respectively. The program ends when the integer becomes four thousand:

2C0-2C1 0704-0705  ▀▀▀▀▀ ▄ 7C01 31745                 VC ← VC + 001
2C2-2C3 0706-0707  █▄ ▀█   4C64 19556                 Skip next if VC <> 100
2C4-2C5 0708-0709  ▀▀ ▀▀   6C00 27648                 VC ← 000
2C6-2C7 0710-0711  ▀  ▀▀   4C00 19456                 Skip next if VC <> 000
2C8-2C9 0712-0713  ▀▀▀▀ ▀█ 7B01 31489                 VB ← VB + 001
2CA-2CB 0714-0715  ▀▄ █ ▀▀ 4B28 19240                 Skip next if VB <> 040
2CC-2CD 0716-0717 ▄▄ ▀▄▄▀  12CC 04812              se Jump to se

Here the delay is exhausted before clearing the screen and restarting the prime loop of the program:

2CE-2CF 0718-0719 ▀▀▀▀▀███ FF07 65287          tempus VF ← delay
2D0-2D1 0720-0721   ▀▀▀▀▀▀ 3F00 16128                 Skip next if VF = 000
2D2-2D3 0722-0723 ▄▄ ▀▄▄█  12CE 04814                 Jump to tempus
2D4-2D5 0724-0725 ▄▄▄      00E0 00224                 Clear the screen
2D6-2D7 0726-0727    ▀ ▄▀  1204 04612                 Jump to primus

These three routines take the first three, two, or single bits from the ninth to the tenth register:

2D8-2D9 0728-0729 ▄▄▀▄▄▄▀  22DC 08924             ter Call semel
2DA-2DB 0730-0731 ▄▄▀▄▄▄▀  22DC 08924             bis Call semel
2DC-2DD 0732-0733 █ ▄ █▄█  8AAE 35502           semel VA ← VA × 2; VF ← MSB
2DE-2DF 0734-0735 █  ▄█▄▄▀ 899E 35230                 V9 ← V9 × 2; VF ← MSB
2E0-2E1 0736-0737   ▀▀▀▀▀▀ 3F00 16128                 Skip next if VF = 000
2E2-2E3 0738-0739  ▀▀▀▀ ▀▄ 7A01 31233                 VA ← VA + 001
2E4-2E5 0740-0741 ▄▄▄ ▄▄▄  00EE 00238                 Return

These two routines blank the tenth register before calling the others, and the former normalizes the result for the table of letters; I later saw I could've confused the table to save two instructions. Following the code are the starting values for the eleventh through fourteenth registers. Following those are the table of letters, with the zeroeth letter unused, and the last being for an exception; the letters are four-by-five, as this is the biggest width that fits fifteen on the screen in a row; notice how I cheated for that last letter, which is largest, so that I could have a decent letter N:

2E6-2E7 0742-0743  ▀▀ ▀ ▀  6A00 27136      duo digiti VA ← 000
2E8-2E9 0744-0745 ▄▄▀▄▄ █  22DA 08922                 Call bis
2EA-2EB 0746-0747   ▀▀▀ ▀  3A00 14848!         illinc Skip next if VA = 000
2EC-2ED 0748-0749  ▀▀▀▀▄▀  7A04 31236                 VA ← VA + 004
2EE-2EF 0750-0751 ▄▄▄ ▄▄▄  00EE 00238                 Return
2F0-2F1 0752-0753  ▀▀ ▀ ▀  6A00 27136     tres digiti VA ← 000
2F2-2F3 0754-0755 ▄▄▀▄▄ ▀  22D8 08920                 Call ter
2F4-2F5 0756-0757 ▄▄▄ ▄▄▄  00EE 00238!       litterae Return
2F6     0758                 00   000                 
2F7     0759                 00   000                 
2F8     0760          ████   0F   015                 
2F9     0761         ████    1E   030                 
2FA     0762      ███        E0   224               I 
2FB     0763       █         40   064                 
2FC     0764       █         40   064                 
2FD     0765       █         40   064                 
2FE     0766      ███        E0   224                 
2FF     0767      █ █        A0   160               V 
300     0768      █ █        A0   160                 
301     0769      █ █        A0   160                 
302     0770      █ █        A0   160                 
303     0771       █         40   064                 
304     0772      █ █        A0   160               X 
305     0773      █ █        A0   160                 
306     0774       █         40   064                 
307     0775      █ █        A0   160                 
308     0776      █ █        A0   160                 
309     0777      █          80   128               L 
30A     0778      █          80   128                 
30B     0779      █          80   128                 
30C     0780      █          80   128                 
30D     0781      ███        E0   224                 
30E     0782      ███        E0   224               C 
30F     0783      █          80   128                 
310     0784      █          80   128                 
311     0785      █          80   128                 
312     0786      ███        E0   224                 
313     0787      ██         C0   192               D 
314     0788      █ █        A0   160                 
315     0789      █ █        A0   160                 
316     0790      █ █        A0   160                 
317     0791      ██         C0   192                 
318     0792      █ █        A0   160               M 
319     0793      ███        E0   224                 
31A     0794      ███        E0   224                 
31B     0795      ███        E0   224                 
31C     0796      █ █        A0   160                 
31D     0797      █  █       90   144               N 
31E     0798      ██ █       D0   208                 
31F     0799      ████       F0   240                 
320     0800      █ ██       B0   176                 
321     0801      █  █       90   144                 

This table encodes a blank followed by every hundredth integer, from C to MMMCM. Its domain is from zero to thirty-nine. Each value is two bits in length, with the seventh pair always ignored. These values are encoded in the following order: blank, C, D, then M. I rather like it, and it's optimal:

322     0802                 00   000       centesima 
323     0803                 00   000                 
324     0804       █         40   064                 
325     0805                 00   000                 
326     0806       █ █       50   080                 
327     0807                 00   000                 
328     0808       █ █ █     54   084                 
329     0809                 00   000                 
32A     0810       ██        60   096                 
32B     0811                 00   000                 
32C     0812      █          80   128                 
32D     0813                 00   000                 
32E     0814      █  █       90   144                 
32F     0815                 00   000                 
330     0816      █  █ █     94   148                 
331     0817                 00   000                 
332     0818      █  █ █ █   95   149                 
333     0819                 00   000                 
334     0820       ███       70   112                 
335     0821                 00   000                 
336     0822      ██         C0   192                 
337     0823                 00   000                 
338     0824      ██ █       D0   208                 
339     0825                 00   000                 
33A     0826      ██ █ █     D4   212                 
33B     0827                 00   000                 
33C     0828      ██ █ █ █   D5   213                 
33D     0829                 00   000                 
33E     0830      ██ ██      D8   216                 
33F     0831                 00   000                 
340     0832      ███        E0   224                 
341     0833                 00   000                 
342     0834      ███  █     E4   228                 
343     0835                 00   000                 
344     0836      ███  █ █   E5   229                 
345     0837                 00   000                 
346     0838      ███  █ █   E5   229                 
347     0839       █         40   064                 
348     0840      ██ ███     DC   220                 
349     0841                 00   000                 
34A     0842      ████       F0   240                 
34B     0843                 00   000                 
34C     0844      ████ █     F4   244                 
34D     0845                 00   000                 
34E     0846      ████ █ █   F5   245                 
34F     0847                 00   000                 
350     0848      ████ █ █   F5   245                 
351     0849       █         40   064                 
352     0850      ████ ██    F6   246                 
353     0851                 00   000                 
354     0852      █████      F8   248                 
355     0853                 00   000                 
356     0854      █████  █   F9   249                 
357     0855                 00   000                 
358     0856      █████  █   F9   249                 
359     0857       █         40   064                 
35A     0858      █████  █   F9   249                 
35B     0859       █ █       50   080                 
35C     0860      ████ ███   F7   247                 
35D     0861                 00   000                 
35E     0862      ██████     FC   252                 
35F     0863                 00   000                 
360     0864      ██████ █   FD   253                 
361     0865                 00   000                 
362     0866      ██████ █   FD   253                 
363     0867       █         40   064                 
364     0868      ██████ █   FD   253                 
365     0869       █ █       50   080                 
366     0870      ██████ █   FD   253                 
367     0871      █          80   128                 
368     0872      ███████    FE   254                 
369     0873                 00   000                 
36A     0874      ███████    FE   254                 
36B     0875       █         40   064                 
36C     0876      ███████    FE   254                 
36D     0877       █ █       50   080                 
36E     0878      ███████    FE   254                 
36F     0879       █ █ █     54   084                 
370     0880      ██████ █   FD   253                 
371     0881      ██         C0   192                 

This table encodes a blank, then integers below one hundred, from I to XCIX; its domain is from zero to ninety-nine. Each value is of three bits, encoded in this order: blank, I, V, X, L, C, D, and M.

372     0882                 00   000       de centum 
373     0883                 00   000                 
374     0884                 00   000                 
375     0885        █        20   032                 
376     0886                 00   000                 
377     0887                 00   000                 
378     0888        █  █     24   036                 
379     0889                 00   000                 
37A     0890                 00   000                 
37B     0891        █  █     24   036                 
37C     0892      █          80   128                 
37D     0893                 00   000                 
37E     0894        █ █      28   040                 
37F     0895                 00   000                 
380     0896                 00   000                 
381     0897       █         40   064                 
382     0898                 00   000                 
383     0899                 00   000                 
384     0900       █   █     44   068                 
385     0901                 00   000                 
386     0902                 00   000                 
387     0903       █   █     44   068                 
388     0904      █          80   128                 
389     0905                 00   000                 
38A     0906       █   █     44   068                 
38B     0907      █  █       90   144                 
38C     0908                 00   000                 
38D     0909        █ ██     2C   044                 
38E     0910                 00   000                 
38F     0911                 00   000                 
390     0912       ██        60   096                 
391     0913                 00   000                 
392     0914                 00   000                 
393     0915       ██  █     64   100                 
394     0916                 00   000                 
395     0917                 00   000                 
396     0918       ██  █     64   100                 
397     0919      █          80   128                 
398     0920                 00   000                 
399     0921       ██  █     64   100                 
39A     0922      █  █       90   144                 
39B     0923                 00   000                 
39C     0924       ██  █ █   65   101                 
39D     0925                 00   000                 
39E     0926                 00   000                 
39F     0927       ██ █      68   104                 
3A0     0928                 00   000                 
3A1     0929                 00   000                 
3A2     0930       ██ █      68   104                 
3A3     0931      █          80   128                 
3A4     0932                 00   000                 
3A5     0933       ██ █      68   104                 
3A6     0934      █  █       90   144                 
3A7     0935                 00   000                 
3A8     0936       ██ █      68   104                 
3A9     0937      █  █  █    92   146                 
3AA     0938                 00   000                 
3AB     0939       ██  █ █   65   101                 
3AC     0940      █          80   128                 
3AD     0941                 00   000                 
3AE     0942       ██ ██     6C   108                 
3AF     0943                 00   000                 
3B0     0944                 00   000                 
3B1     0945       ██ ██     6C   108                 
3B2     0946      █          80   128                 
3B3     0947                 00   000                 
3B4     0948       ██ ██     6C   108                 
3B5     0949      █  █       90   144                 
3B6     0950                 00   000                 
3B7     0951       ██ ██     6C   108                 
3B8     0952      █  █  █    92   146                 
3B9     0953                 00   000                 
3BA     0954       ██ ██     6C   108                 
3BB     0955      █ █        A0   160                 
3BC     0956                 00   000                 
3BD     0957       ██ ██ █   6D   109                 
3BE     0958                 00   000                 
3BF     0959                 00   000                 
3C0     0960       ██ ██ █   6D   109                 
3C1     0961         █       10   016                 
3C2     0962                 00   000                 
3C3     0963       ██ ██ █   6D   109                 
3C4     0964         █  █    12   018                 
3C5     0965                 00   000                 
3C6     0966       ██ ██ █   6D   109                 
3C7     0967         █  █    12   018                 
3C8     0968       █         40   064                 
3C9     0969       ██ ██     6C   108                 
3CA     0970      █ ██       B0   176                 
3CB     0971                 00   000                 
3CC     0972       ██ ██ █   6D   109                 
3CD     0973      █          80   128                 
3CE     0974                 00   000                 
3CF     0975       ██ ██ █   6D   109                 
3D0     0976      █  █       90   144                 
3D1     0977                 00   000                 
3D2     0978       ██ ██ █   6D   109                 
3D3     0979      █  █  █    92   146                 
3D4     0980                 00   000                 
3D5     0981       ██ ██ █   6D   109                 
3D6     0982      █  █  █    92   146                 
3D7     0983       █         40   064                 
3D8     0984       ██ ██ █   6D   109                 
3D9     0985      █  █ █     94   148                 
3DA     0986                 00   000                 
3DB     0987       ██ ██ █   6D   109                 
3DC     0988      █ █        A0   160                 
3DD     0989                 00   000                 
3DE     0990       ██ ██ █   6D   109                 
3DF     0991      █ █   █    A2   162                 
3E0     0992                 00   000                 
3E1     0993       ██ ██ █   6D   109                 
3E2     0994      █ █   █    A2   162                 
3E3     0995       █         40   064                 
3E4     0996       ██ ██ █   6D   109                 
3E5     0997      █ █   █    A2   162                 
3E6     0998       █  █      48   072                 
3E7     0999       ██ ██ █   6D   109                 
3E8     1000      █  █ ██    96   150                 
3E9     1001                 00   000                 
3EA     1002       ███       70   112                 
3EB     1003                 00   000                 
3EC     1004                 00   000                 
3ED     1005       ███       70   112                 
3EE     1006      █          80   128                 
3EF     1007                 00   000                 
3F0     1008       ███       70   112                 
3F1     1009      █  █       90   144                 
3F2     1010                 00   000                 
3F3     1011       ███       70   112                 
3F4     1012      █  █  █    92   146                 
3F5     1013                 00   000                 
3F6     1014       ███       70   112                 
3F7     1015      █ █        A0   160                 
3F8     1016                 00   000                 
3F9     1017       ███   █   71   113                 
3FA     1018                 00   000                 
3FB     1019                 00   000                 
3FC     1020       ███   █   71   113                 
3FD     1021         █       10   016                 
3FE     1022                 00   000                 
3FF     1023       ███   █   71   113                 
400     1024         █  █    12   018                 
401     1025                 00   000                 
402     1026       ███   █   71   113                 
403     1027         █  █    12   018                 
404     1028       █         40   064                 
405     1029       ███       70   112                 
406     1030      █ ██       B0   176                 
407     1031                 00   000                 
408     1032      █          80   128                 
409     1033                 00   000                 
40A     1034                 00   000                 
40B     1035      █    █     84   132                 
40C     1036                 00   000                 
40D     1037                 00   000                 
40E     1038      █    █     84   132                 
40F     1039      █          80   128                 
410     1040                 00   000                 
411     1041      █    █     84   132                 
412     1042      █  █       90   144                 
413     1043                 00   000                 
414     1044      █    █ █   85   133                 
415     1045                 00   000                 
416     1046                 00   000                 
417     1047      █   █      88   136                 
418     1048                 00   000                 
419     1049                 00   000                 
41A     1050      █   █      88   136                 
41B     1051      █          80   128                 
41C     1052                 00   000                 
41D     1053      █   █      88   136                 
41E     1054      █  █       90   144                 
41F     1055                 00   000                 
420     1056      █   █      88   136                 
421     1057      █  █  █    92   146                 
422     1058                 00   000                 
423     1059      █    █ █   85   133                 
424     1060      █          80   128                 
425     1061                 00   000                 
426     1062      █   ██     8C   140                 
427     1063                 00   000                 
428     1064                 00   000                 
429     1065      █   ██     8C   140                 
42A     1066      █          80   128                 
42B     1067                 00   000                 
42C     1068      █   ██     8C   140                 
42D     1069      █  █       90   144                 
42E     1070                 00   000                 
42F     1071      █   ██     8C   140                 
430     1072      █  █  █    92   146                 
431     1073                 00   000                 
432     1074      █   ██     8C   140                 
433     1075      █ █        A0   160                 
434     1076                 00   000                 
435     1077      █   ██ █   8D   141                 
436     1078                 00   000                 
437     1079                 00   000                 
438     1080      █   ██ █   8D   141                 
439     1081         █       10   016                 
43A     1082                 00   000                 
43B     1083      █   ██ █   8D   141                 
43C     1084         █  █    12   018                 
43D     1085                 00   000                 
43E     1086      █   ██ █   8D   141                 
43F     1087         █  █    12   018                 
440     1088       █         40   064                 
441     1089      █   ██     8C   140                 
442     1090      █ ██       B0   176                 
443     1091                 00   000                 
444     1092      █   ██ █   8D   141                 
445     1093      █          80   128                 
446     1094                 00   000                 
447     1095      █   ██ █   8D   141                 
448     1096      █  █       90   144                 
449     1097                 00   000                 
44A     1098      █   ██ █   8D   141                 
44B     1099      █  █  █    92   146                 
44C     1100                 00   000                 
44D     1101      █   ██ █   8D   141                 
44E     1102      █  █  █    92   146                 
44F     1103       █         40   064                 
450     1104      █   ██ █   8D   141                 
451     1105      █  █ █     94   148                 
452     1106                 00   000                 
453     1107      █   ██ █   8D   141                 
454     1108      █ █        A0   160                 
455     1109                 00   000                 
456     1110      █   ██ █   8D   141                 
457     1111      █ █   █    A2   162                 
458     1112                 00   000                 
459     1113      █   ██ █   8D   141                 
45A     1114      █ █   █    A2   162                 
45B     1115       █         40   064                 
45C     1116      █   ██ █   8D   141                 
45D     1117      █ █   █    A2   162                 
45E     1118       █  █      48   072                 
45F     1119      █   ██ █   8D   141                 
460     1120      █  █ ██    96   150                 
461     1121                 00   000                 
462     1122      █   ██ █   8D   141                 
463     1123      █ ██       B0   176                 
464     1124                 00   000                 
465     1125      █   ██ █   8D   141                 
466     1126      █ ██  █    B2   178                 
467     1127                 00   000                 
468     1128      █   ██ █   8D   141                 
469     1129      █ ██  █    B2   178                 
46A     1130       █         40   064                 
46B     1131      █   ██ █   8D   141                 
46C     1132      █ ██  █    B2   178                 
46D     1133       █  █      48   072                 
46E     1134      █   ██ █   8D   141                 
46F     1135      █ ██  █    B2   178                 
470     1136      █          80   128                 
471     1137      █   ██ █   8D   141                 
472     1138      █ ██ █     B4   180                 
473     1139                 00   000                 
474     1140      █   ██ █   8D   141                 
475     1141      █ ██ █     B4   180                 
476     1142       █         40   064                 
477     1143      █   ██ █   8D   141                 
478     1144      █ ██ █     B4   180                 
479     1145       █  █      48   072                 
47A     1146      █   ██ █   8D   141                 
47B     1147      █ ██ █     B4   180                 
47C     1148       █  █  █   49   073                 
47D     1149      █   ██ █   8D   141                 
47E     1150      █ ██  █    B2   178                 
47F     1151      ██         C0   192                 
480     1152       ███ █     74   116                 
481     1153                 00   000                 
482     1154                 00   000                 
483     1155       ███ █     74   116                 
484     1156      █          80   128                 
485     1157                 00   000                 
486     1158       ███ █     74   116                 
487     1159      █  █       90   144                 
488     1160                 00   000                 
489     1161       ███ █     74   116                 
48A     1162      █  █  █    92   146                 
48B     1163                 00   000                 
48C     1164       ███ █     74   116                 
48D     1165      █ █        A0   160                 
48E     1166                 00   000                 
48F     1167       ███ █ █   75   117                 
490     1168                 00   000                 
491     1169                 00   000                 
492     1170       ███ █ █   75   117                 
493     1171         █       10   016                 
494     1172                 00   000                 
495     1173       ███ █ █   75   117                 
496     1174         █  █    12   018                 
497     1175                 00   000                 
498     1176       ███ █ █   75   117                 
499     1177         █  █    12   018                 
49A     1178       █         40   064                 
49B     1179       ███ █     74   116                 
49C     1180      █ ██       B0   176                 
49D     1181                 00   000                 

Lastly is the list of exceptions. No effort was wasted to make this particularly efficient in size. Each entry of this list is an octet followed by another two corresponding to the values of registers eleven and twelve, followed by another fifteen which directly encode the letters to be used for such an exception, including custom letters. The list is ended by a zero, and I decided to number these:

49E     1182             █   01   001         praeter 
49F     1183                 00   000                 
4A0     1184                 00   000                 
4A1     1185          █      08   008                 
4A2     1186                 00   000                 
4A3     1187                 00   000                 
4A4     1188                 00   000                 
4A5     1189                 00   000                 
4A6     1190                 00   000                 
4A7     1191                 00   000                 
4A8     1192                 00   000                 
4A9     1193                 00   000                 
4AA     1194                 00   000                 
4AB     1195                 00   000                 
4AC     1196                 00   000                 
4AD     1197                 00   000                 
4AE     1198                 00   000                 
4AF     1199                 00   000                 
4B0     1200            █    02   002                 
4B1     1201                 00   000                 
4B2     1202         █  █    12   018                 
4B3     1203            ██   03   003                 
4B4     1204             █   01   001                 
4B5     1205             █   01   001                 
4B6     1206            ██   03   003                 
4B7     1207                 00   000                 
4B8     1208                 00   000                 
4B9     1209                 00   000                 
4BA     1210                 00   000                 
4BB     1211                 00   000                 
4BC     1212                 00   000                 
4BD     1213                 00   000                 
4BE     1214                 00   000                 
4BF     1215                 00   000                 
4C0     1216                 00   000                 
4C1     1217                 00   000                 
4C2     1218            ██   03   003                 
4C3     1219                 00   000                 
4C4     1220         █ ██    16   022                 
4C5     1221             █   01   001                 
4C6     1222             █   01   001                 
4C7     1223            ██   03   003                 
4C8     1224            ██   03   003                 
4C9     1225                 00   000                 
4CA-4CB 1226-1227          0000 00000                 
4CC-4CD 1228-1229          0000 00000                 
4CE-4CF 1230-1231          0000 00000                 
4D0-4D1 1232-1233          0000 00000                 
4D2-4D3 1234-1235          0000 00000                 
4D4-4D5 1236-1237          0000 00000!            huc 
4D6-4D7 1238-1239          0000 00000                 
4D8-4D9 1240-1241          0000 00000                 
4DA-4DB 1242-1243          0000 00000                 
4DC-4DD 1244-1245          0000 00000           illuc 
4DE-4DF 1246-1247          0000 00000                 
4E0-4E1 1248-1249          0000 00000                 
4E2-4E3 1250-1251          0000 00000                 
4E4-4E5 1252-1253          0000 00000           finis 

Notice but one contiguous memory space is ever written, making proving this program correct simpler.