XXIIVV

Drifblim is a Uxntal assembler, written in Uxntal.

The assembler is written in 400 lines of Uxntal, and is designed to help bootstrap the Uxn ecosystem. Drifblim exports a symbols file that can be used with debuggers.

The goal is for Driflim's source code to be released as a print-friendly document, along with its assembled hexadecimal data and the napkin definition of the virtual machine.

80 a b c M[PC+1] 08 a b?c             10 a b M[c8]      18 a b+c
01 a b c+1       09 a b!c             11 a {M[c8]=b}    19 a b-c
02 a b           0a a b>c             12 a b M[PC+c8]   1a a b*c
03 a c           0b a b<c             13 a {M[PC+c8]=b} 1b a b/c
04 a c b         0c a b {PC+=c}       14 a b M[c16]     1c a b&c
05 b c a         0d a {(b8)PC+=c}     15 a {M[c16]=b}   1d a b|c
06 a b c c       0e a b {rs.PC PC+=c} 16 a b D[c8]      1e a b^c
07 a b c b       0f a b {rs.c}        17 a {D[c8]=b}    1f a b>>c8l<<c8h

2x a16 b16+c16   4x a b c {rs.b+rs.c} 8x a b c b+c

Since this assembler is written in the language it is assembling, it creates a chicken-and-egg problem. You have two choices, download a pre-assembled drifblim.rom(1.7kb), or assemble it with uxnasm.c.

Drifblim styleguide

Drawing by Rekka Bellum

Drifblim is strong enough to lift Pokémon or people but has no control over its flight. This causes it to drift with the wind and end up anywhere.

drifblim.tal

drifblim.rom

This is the hexadecimal data of the drifblim assembler, I am keeping a copy of it here just in case.

a001 0d80 1037 a007 0660 04fa 0080 1216 8000 6005 4c20 0001 00a0 0126 8010 37a0 
0714 6004 e100 8012 1680 3060 0533 2000 3400 a00a 1817 a007 6960 04ca 6004 c780 
3a80 1817 a020 1817 6004 bba0 0738 6004 b5a0 0868 6004 af80 2e80 1817 a00a 1817 
a001 0f17 00a0 0a18 17a0 0000 a000 3060 0088 6004 4f60 03d2 a001 0e17 a001 0f17 
0080 a837 a000 0180 aa37 a001 a280 ac37 80a2 361d 2000 0a80 0812 8000 0820 0009 
6c80 0060 000c 40ff e180 a836 a007 7340 ff80 8020 8a03 2000 0a02 a008 4894 2000 
1222 6ca0 0848 2660 0463 a000 1f2b 2004 5102 6c26 6000 0340 0475 9480 2808 2000 
0f94 8029 0820 0008 8000 2000 0b40 003f 1480 2808 80f2 136c 226c 80b8 37a0 0001 
80ba 37a0 0100 6003 3ca0 072e a008 6860 0425 2660 ff6b a001 0060 0329 a007 2ea0 
0868 6004 1280 00a0 0382 1560 ff53 6c94 8008 13a0 0848 a008 1594 8000 0920 0004 
2321 342c a000 0338 aa20 ffed 2222 2660 0237 2000 8726 6002 4520 0087 6000 626c 
2160 0147 6000 9340 02db 2160 013d 4000 aa21 a008 6827 2460 03bd 4001 a521 6001 
f240 019e 8080 6000 eb21 6001 5a60 012b 0140 00e0 8080 6000 db21 6001 4a34 0340 
00d2 80a0 6000 cd21 6001 3c34 4000 c180 2060 00c0 2140 0077 8040 6000 b721 4000 
6e80 6060 00ae 4000 6621 2660 035f 0380 021f a0a0 8005 0c04 0260 0098 4000 6921 
4000 5a60 01c2 4000 8ba1 a008 a8af 6003 4660 035b 6f40 fe89 226c a003 7834 ab20 
0006 b960 0015 226c 27a0 0100 2b20 0009 a008 48a0 07ab 40fe 1922 6ca0 0000 a820 
000a 8000 6000 4d21 aa20 fff6 2222 6c60 00b5 34a0 0378 3421 2139 4000 3394 6000 
3321 9420 fff7 226c 2660 02e1 2760 005b 2403 0680 0208 2000 0f06 8004 0820 000e 
0222 a007 8440 fdca 0223 0340 0006 0223 0460 0000 8023 13a0 0100 a001 002b 2000 
1580 0120 0013 a000 0080 ec32 2b20 0006 a003 9a80 be37 4001 a780 0080 0008 2000 
0780 d432 a003 8735 4001 9526 6000 da20 0006 a007 8440 fd7a 4002 f8a0 0382 1420 
0021 b4a0 0378 3439 a000 0339 26a0 0080 3802 2000 0323 036c 22a0 0003 38a0 0795 
40fd 4f22 80ff 6ca0 0382 1480 0008 2000 0522 a004 186c 9480 2609 2000 0421 6000 
7260 0115 a11d 2000 0722 a007 8b40 fd22 a121 9401 0505 156c ffff 5b65 6d70 7479 
5d00 a003 8214 8000 0820 0045 2660 0059 2000 3226 6000 6720 002b 2660 00db 211d 
2000 28a0 0378 34a0 08d8 af35 6161 6126 ef60 01e3 6001 d66f 3821 80eb 33a0 0000 
2180 fa33 6ca0 079e 40fc c7a0 077a 40fc c122 6ca0 0868 a008 88af 6001 ba80 2fef 
6001 9fef 6001 ad6f 6c94 6002 1001 2000 0422 8000 6c21 9420 ffef 2280 016c 26a0 
0812 6001 e920 0032 2fa0 2000 8000 0780 031a a007 b238 ef60 01d4 2000 0a01 8a20 
ffea 2262 8000 6c03 0680 0008 8070 1f18 6fa0 0003 3860 0006 186c 2280 016c c000 
9480 2007 8032 0820 0024 0618 0780 7208 2000 1b06 1807 806b 0820 0012 0618 0780 
210b 2000 09a0 0848 a007 a640 fc24 030f 5d21 9420 ffca 224f 6c2f a008 d8a0 0003 
3826 ef60 014f 2000 1160 00eb 21a1 2121 1420 ffe9 2262 a0ff ff6c a000 0339 626c 
a003 7834 21a0 0378 356c a008 d8a1 2121 1406 8040 0a04 805b 0b1c 2000 18a1 2114 
2000 12a0 0752 6000 9da0 0003 3826 6000 95a0 0a18 1760 009f 21a1 2121 1420 ffcd 
22a0 0723 6000 7fa0 0000 6000 79a0 0733 6000 73a0 0030 6000 6da0 0738 6000 67a0 
0387 34a0 00ff 3960 011f a007 3e60 0056 a004 5e34 6001 12a0 074a 6000 49a0 0746 
6000 436c a000 3026 6000 4ca0 0764 2760 0065 2480 a837 a008 d8a0 0002 80aa 3726 
80ae 37a0 0003 3826 6000 4221 af80 aa37 2680 ae37 6f38 26a0 0003 3814 20ff da22 
8000 0505 156c 9420 0002 226c 9480 1817 2194 20ff f722 6c94 2000 016c 2194 20ff 
fb6c 60ff f2a1 8000 0505 1515 6c26 60ff e624 396c 60ff e027 1420 0003 2222 6c2f 
94ef 1561 2194 20ff f722 8000 6f15 6c94 2000 0222 6caf 8000 6f15 2194 20ff f622 
6c07 8021 0b20 0009 8000 0460 ffb4 8000 6c22 8001 6c2f 94d4 4f9c 8000 0820 000a 
8920 0006 2221 6140 ffec 2362 086c b425 b425 280f 2134 2421 3428 4f1c 6c80 3019 
0680 090a 0c6c 8027 1906 800f 0a0c 6c02 80ff 6ce0 0000 c040 7fc0 0094 60ff de0f 
7821 9420 fff0 226f 6c80 0080 2313 a027 1060 001a a003 e860 0014 a000 6460 000e 
a000 0a60 0008 0380 3018 8018 176c bb86 8000 0820 000c 0680 3018 8018 1780 ff80 
ef13 023a 396c 496e 7075 7428 2e74 616c 293a 2000 4f75 7470 7574 282e 726f 6d29 
3a20 0041 7373 656d 626c 6564 2000 494e 4954 0020 2d3e 2000 2c20 696e 2000 2062 
7974 6573 2800 292e 0a00 206c 6162 656c 7300 2d2d 2055 6e75 7365 6420 6c61 6265 
6c3a 2000 2e73 796d 0021 2120 4572 726f 7220 0053 6f75 7263 6500 4475 706c 6963 
6174 6500 4e75 6d62 6572 0052 6566 6572 656e 6365 0044 6973 7461 6e63 6500 496e 
7661 6c69 6400 4d6f 6465 0052 6577 696e 6400 4c49 5449 4e43 504f 504e 4950 5357 
5052 4f54 4455 504f 5652 4551 554e 4551 4754 484c 5448 4a4d 504a 434e 4a53 5253 
5448 4c44 5a53 545a 4c44 5253 5452 4c44 4153 5441 4445 4944 454f 4144 4453 5542 
4d55 4c44 4956 414e 444f 5241 454f 5253 4654 4252 4b7c 0260 2402 6a40 0271 2602 
7d2c 0284 5f02 892e 0294 2d02 993b 02a2 3d02 a73f 02af 2102 b85b 02f8 5d02 f823 
02c9 2202 df7e 02e9

Incoming: symbols uxn devlog oscean