A Documenting of my Roman Numerals CHIP-8 Program 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 mora VF ← delay 2D0-2D1 0720-0721  ▀▀▀▀▀▀ 3F00 16128  Skip next if VF = 000 2D2-2D3 0722-0723 ▄▄ ▀▄▄█ 12CE 04814  Jump to mora 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: V0 Memory movement. V1 Memory movement and horizontal sprite coordinates. V2 Memory movement and vertical sprite coordinates. V3 Memory movement and an index. V4 Memory movement. V5 Memory movement. V6 Memory movement. V7 Memory movement and serve as scratch. V8 Serve as scratch. V9 Serve as scratch. VA Serve as scratch. VB Hold a counter. VC Hold a counter. VD Hold a constant length. VE Hold a delay. 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 mora VF ← delay 2D0-2D1 0720-0721  ▀▀▀▀▀▀ 3F00 16128  Skip next if VF = 000 2D2-2D3 0722-0723 ▄▄ ▀▄▄█ 12CE 04814  Jump to mora 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. .