diff --git a/testmodule.tal b/testmodule.tal new file mode 100644 index 0000000..2d30286 --- /dev/null +++ b/testmodule.tal @@ -0,0 +1,584 @@ +( test module ) +8f 03 02 ( file header - speed f, loop on, 3 patterns, 2 instruments ) +000c ( size ) +00 02 ff ff +ff 02 ff ff ( song table, 2 rows ) +01 02 ff ff +@DEBUG-patterns +( pattern 00 ) +54 02 00 ( C-3 I00 ) +52 06 00 +54 00 00 +4f 00 00 +4b 00 00 +4f 00 00 +48 00 00 +ff 06 0f +54 00 00 +52 00 00 +54 00 00 +4f 00 00 +4b 00 00 +4f 00 00 +48 00 00 +ff 00 00 +( pattern 01 ) +54 06 04 +56 00 00 +57 00 00 +56 00 00 +57 00 00 +54 00 00 +56 00 00 +54 00 00 +56 00 00 +52 06 00 +54 00 00 +52 00 00 +54 00 00 +50 00 00 +54 05 0f +ff 00 00 +( pattern 02 ) +3c 02 01 +00 00 00 +3f 08 01 +00 00 00 +3c 00 00 +00 00 00 +3f 08 00 +00 00 00 +3c 00 00 +00 00 00 +3f 08 01 +00 08 00 +3c 00 00 +00 00 00 +3c 00 00 +00 00 00 +@DEBUG-instruments +( instrument 00 ) +0002 ( sample length ) +88 ( volume ) +80 ( flags - loop sample ) +0100 ( ADSR ) +ff 00 ( square wave sample data ) +( instrument 01 ) +2000 ( sample length ) +ff ( volume ) +00 ( flags - no loop ) +0100 ( ADSR ) +( kck1.pcm sample ) +8181 8182 8382 8182 8181 8081 8181 807f +7f80 8082 8280 7d7c 8081 7f80 8286 888c +8e8d 887e 756e 6a69 6864 5a55 5046 3934 +3a42 3d3a 4a6d 8173 5341 4247 443e 3b41 +4542 3d42 4e52 4a46 5d81 917a 5442 494f +4a43 454a 4a45 4749 4b48 494a 4c4c 4f51 +525a 6c84 9491 847e 89a4 c2d8 dbc9 a889 +7b7a 776d 6468 7b92 a9c3 dce7 e5e1 e4e6 +e5e1 e1e2 e1dd dede dddc dadc dad8 d7d8 +d7d5 d5d5 d5d3 d2d2 d2d1 d0d0 d0ce cdcd +cdcb cacb cac9 c9c8 c8c7 c6c5 c5c5 c5c4 +c4c2 c2c1 c1c1 bfc0 bfbf bfbd bdbd bcbb +bcbb bab9 b9b9 b9b6 b4b4 b4ae a196 9498 +9386 7c7e 8891 928c 7f6a 5033 201a 212d +3534 2b24 1f1e 1f20 2122 2223 2424 2526 +2828 2929 2a2b 2b2c 2d2e 2e2e 2f30 3031 +3232 3334 3335 3535 3737 3838 393a 3a3b +3c3b 3b3d 3d3e 3d40 403f 4041 4142 4343 +4445 4446 4546 4747 4748 4948 494b 4b4b +4b4b 4c4c 4d4d 4e4f 4f4f 5050 5051 5252 +5352 5254 5354 5455 5556 5657 5657 595b +5b5e 6877 827e 7272 89a8 bfc6 c4be bdc1 +cddc e8ec ebe5 e2e1 e5ed efed e8e8 e9ea +e6e5 e6e5 e4e2 e2e1 e0df dfdf dddd dddc +dbda d9d8 d8d7 d6d6 d5d4 d4d4 d2d2 d1d1 +d0cf cfce cdcd cccc cacb cac9 c9c8 c7c7 +c7c6 c5c5 c4c3 c3c2 c2c1 c1c0 c0bf bfbf +bdbc bebc bbbb bbba bab9 bab9 b9b7 b7b7 +b6b5 b6b5 b4b3 b3b3 b2b1 b2b2 afac abab +a08c 776b 6c74 808d 938f 857a 7571 6c63 +5c5a 5957 5654 5150 504f 4c4c 4c4a 4644 +4545 4242 4345 4440 3d38 332c 2928 2522 +2020 2223 2324 2626 2728 292a 292a 2b2d +2c2d 2e2f 2f30 3030 3133 3334 3434 3536 +3637 3838 3839 3a3a 3b3c 3c3e 3d3e 3f3f +4040 4041 4242 4343 4444 4545 4647 4647 +4748 4849 494a 4b4c 4b4c 4d4d 4c4d 4e4e +4f4e 4f50 5051 5052 5152 5353 5455 5556 +595f 656a 6d72 7980 878d 95a0 a9af b4b8 +bec9 d5dd e0de dee3 e9eb ebe9 e9ea e8e6 +e6e5 e5e3 e3e2 e1e1 e0e0 dede dddc dcda +dad9 d8d7 d7d6 d6d4 d4d3 d3d2 d2d1 d0d0 +d0ce cecd cdcc cccb cbca cac9 c8c7 c6c7 +c5c5 c5c4 c4c4 c3c2 c1c0 c0bf bfbe bfbd +bebd bcbb bbbb bbba b9b9 b8b8 b8b7 b6b5 +b5b6 b4b4 b3b3 b3b2 b3b1 b1b1 b0af b0af +aeae aeae aead acad acab aaab aaa9 a9a7 +a7a4 a19d 9c9a 9996 938e 8885 8380 7d7b +7977 7672 706f 6f6e 6c6b 6967 6461 5f5d +5d5a 5754 514f 504f 4c49 4848 4542 3f3f +3f3f 3d3c 3b39 3836 3332 3232 3330 302f +2f2e 2d2b 2928 2522 2120 2121 2122 2324 +2425 2626 2728 2929 2a2b 2c2c 2d2e 2e2e +2f30 3031 3133 3334 3435 3637 3737 3739 +3939 3b3a 3b3c 3d3d 3e3e 3f40 4040 4041 +4242 4344 4445 4545 4646 4748 4848 4849 +4a49 4a4a 4c4c 4c4d 4e4e 4f4f 4f50 5050 +5151 5153 5453 5355 5556 575a 5d60 6568 +6d6f 6f70 6f70 7070 7071 7272 7474 7677 +797b 7d7e 8081 8284 8587 888b 8c8c 8d8c +8c8d 8e90 9396 999b 9c9d 9e9e 9ea0 9fa0 +a0a0 a2a4 a6a9 abab abac acad adae b0b1 +b4b6 b8b9 b9bb bcbc bcbd bdbe c0c0 bfc0 +bfbf bfbf c2c2 c2c4 c4c6 c8ca cccd cfd0 +d0d0 d1d0 d2d3 d4d5 d7d6 d7d7 d8d8 d8d8 +d7d6 d6d5 d4d3 d2d2 d1d0 cfcf cfcf cdcd +cccc cbca cac9 c8c9 c7c7 c7c6 c5c5 c4c4 +c3c3 c2c1 c1c0 bfbf bfbe bebd bdbd bcbb +bbbb bab9 b9b9 b8b7 b7b7 b6b6 b4b3 b1b0 +afae acab a9a8 a8a6 a5a4 a2a0 9e9e 9c9a +9998 9694 9392 908f 8c8a 8685 8381 7e7e +7b79 7876 7575 7675 7575 7575 7473 7371 +7170 7171 7072 7272 7271 6f6c 6b69 6a6b +6b6a 6a6a 6969 6868 6566 6563 6361 605f +5f5e 5c5b 5c5c 5d5e 5d5c 5c5b 5a59 5756 +5554 5354 5253 5153 5251 5150 4e4e 4d4c +4b4b 4a4a 4949 4948 4847 4746 4545 4545 +4345 4444 4545 4544 4645 4546 4645 4444 +4241 4140 3f3f 3d3c 3c3b 3b3a 3938 3838 +3937 3838 3939 3839 3a3b 3b3c 3c3c 3d3e +3e3f 3f3f 4140 4243 4443 4344 4546 4647 +4747 494a 4b4c 4d4f 504f 4f52 5354 5557 +585b 5b5e 5f61 6364 6667 696b 6d6e 7073 +7478 797b 7c7f 8284 8688 8a8b 8c8e 8f90 +8f8f 8e90 9295 999c 9d9e a1a4 a7aa aeb1 +b4b7 b9bb bdbf c1c3 c5c5 c6c7 c7c7 c7c7 +c9c9 caca caca caca c9ca c9c9 c9c9 c9ca +c9ca caca cbc9 cbca cbca caca c9c9 c8c6 +c6c5 c5c4 c2c1 bfbe bdbc bab8 b6b4 b2b1 +afae acac acaa a9a8 a6a4 a4a3 a2a1 9f9d +9d9a 9998 9797 9796 9492 9392 9090 8f8e +8e8e 8c8c 8b8b 8a88 8787 8684 8482 8282 +8080 7f80 7e7f 7e7d 7d7a 7978 7978 7776 +7676 7474 7373 7271 7071 7070 6f6f 6f6e +6e6d 6d6b 6b6a 696a 6868 6867 6767 6767 +6767 6666 6665 6465 6564 6466 6565 6463 +6362 6262 6262 6161 6161 6161 6061 6061 +6060 5f5e 5d5c 5b5a 5a59 5757 5656 5555 +5655 5454 5354 5454 5455 5553 5150 4f4e +4d4b 4a49 4949 4846 4646 4542 4242 4243 +4444 4445 4545 4747 4748 4948 494a 4b4b +4c4b 4c4d 4d4d 4e4e 4f4f 5050 5151 5252 +5253 5354 5454 5555 5556 5656 5658 5859 +5959 595a 5a5b 5a5b 5b5c 5b5c 5c5d 5e5d +5e5e 5e5f 5f60 5f60 6061 6261 6162 6363 +6363 6465 6466 6668 6a6d 6f72 7475 797b +7e7f 8284 8689 8a8b 8e8f 9193 9496 999b +9d9f a0a3 a5a6 a7a9 abac adaf b1b2 b3b6 +b8b9 babb bdbf c0c1 c2c4 c6c8 c9cb ccce +cfd0 d2d3 d4d4 d6d6 d7d8 d9db dbdc dedf +e0e1 e3e4 e5e6 e6e8 e8e7 e6e5 e5e3 e2e3 +e1e1 dfdf dedd dddc dcdb dad9 d9d8 d7d7 +d6d5 d4d4 d4d2 d3d1 d0d0 cfcf cdcd cecc +cccb cbcb c9c8 c8c8 c6c6 c6c5 c5c4 c3c4 +c2c2 c1c1 c1c0 bfbf bfbd bebc bcbc bbbb +baba b9ba b9b8 b7b7 b7b6 b5b5 b5b4 b4b3 +b3b3 b2b2 b1b0 b0b0 b0af afae aead adad +acac abac aba9 aaaa a9a8 a8a8 a8a7 a7a6 +a6a6 a6a5 a4a4 a3a2 9e9c 9a98 9593 928f +8d8b 8987 8583 8180 7d7b 7876 7473 7271 +706d 6c6b 6a68 6765 6361 605f 5e5c 5a58 +5756 5452 5150 4e4d 4b4b 4a49 4847 4745 +4443 4341 413f 3f3d 3d3c 3c3c 3b3a 3a39 +3837 3635 3433 3131 3030 302f 302f 2e2e +2d2f 2e2e 2e2e 2e2c 2c2c 2c2c 2a2a 2a2b +2b2b 2b2a 2b2c 2d2c 2e2e 2e2f 3031 3032 +3233 3434 3535 3636 3737 3839 393a 3a3a +3c3c 3d3d 3d3e 3f3f 3f40 4141 4142 4344 +4545 4545 4646 4748 4849 4a49 4a4b 4a4b +4b4c 4c4d 4d4e 4e4f 4f4f 5150 5151 5152 +5253 5354 5454 5555 5656 5657 5758 5858 +5859 5959 5a5b 5b5b 5c5b 5d5d 5e5e 5e5f +5f61 6262 6565 6766 6868 6a6c 6c6f 6f71 +7272 7374 7577 7677 797a 7a7c 7d7e 8081 +8284 8587 8788 8889 8a8c 8c8c 8d8e 8f8f +9091 9293 9495 9596 9898 9899 9a9c 9c9d +9d9e 9fa0 a0a1 a0a1 a1a1 a2a3 a3a3 a4a4 +a4a6 a5a6 a6a6 a7a7 a7a7 a7a6 a7a6 a6a7 +a6a6 a7a7 a8a8 a9a9 a9a9 a9a9 aaa9 a9aa +a9a9 a9a9 a9a9 a9aa a9aa aaaa a8a9 a8a8 +a8a9 a9a9 aaa9 a9a9 aaaa aaa9 a8a9 a8a7 +a9a8 a8a8 a8a7 a9a8 a8a9 a9a9 a8a7 a7a6 +a5a5 a5a5 a5a6 a5a4 a5a4 a5a4 a5a5 a6a5 +a5a6 a6a6 a5a6 a6a6 a6a6 a5a4 a4a4 a5a6 +a6a6 a6a6 a6a6 a5a5 a6a6 a4a4 a3a3 a4a5 +a5a5 a4a4 a4a4 a4a4 a3a4 a4a5 a5a4 a4a5 +a5a5 a4a3 a4a3 a2a2 a1a0 a1a1 a1a2 a1a1 +a2a2 a1a2 a2a2 a1a2 a2a1 a2a2 a2a2 a2a3 +a3a2 a2a1 a1a1 a1a0 9f9f a09f 9f9f 9f9f +a09f 9f9f 9f9e 9e9e 9e9e 9e9d 9e9e 9e9e +9d9e 9e9d 9c9c 9d9d 9d9c 9b9c 9c9b 9c9a +9999 9999 9998 9897 9898 9898 9898 9796 +9696 9695 9595 9494 9393 9393 9291 9190 +9191 9191 908e 8e8e 8d8d 8d8c 8b8b 8a89 +8888 8888 8787 8786 8586 8585 8484 8283 +8281 8080 807f 7f7e 7e7d 7e7e 7d7d 7d7d +7d7c 7c7b 7a79 7979 7877 7777 7777 7776 +7676 7674 7475 7474 7474 7473 7271 7271 +7172 7272 7270 706f 6f6f 6e6f 6e6e 6e6e +6e6e 6e6e 706f 6f6e 6e6d 6c6c 6c6d 6c6c +6c6c 6b6c 6b6b 6c6b 6c6c 6b6b 6c6b 6c6c +6b6b 6b6a 6b6c 6a6b 6a6a 6a6b 6b6b 6c6b +6b6b 6b6b 6b6b 6c6c 6b6c 6b6c 6b6b 6b6c +6b6c 6c6c 6c6d 6c6d 6d6e 6f6f 706f 6f6e +6e6e 6e6f 6f6f 7070 7171 7271 7272 7274 +7474 7475 7473 7474 7474 7475 7675 7676 +7676 7778 7878 7878 7878 7879 797a 797b +7a7b 7b7b 7c7d 7d7e 7d7e 7e7f 7e7f 7f80 +7f7f 7f80 8080 8182 8182 8281 8382 8284 +8585 8483 8484 8484 8484 8483 8383 8283 +8484 8586 8586 8585 8685 8686 8686 8787 +8687 8788 8788 8786 8786 8786 8585 8585 +8587 8687 8685 8685 8687 8686 8585 8485 +8484 8383 8382 8282 8282 8282 8284 8484 +8381 8281 8281 8180 7f80 7f7f 7f7f 7f7e +7d7f 7e7e 7e7d 7c7c 7d7c 7c7c 7b7b 7b7a +7a7a 7877 7777 7777 7777 7777 7777 7776 +7675 7475 7474 7472 7272 7272 7373 7472 +7272 7271 7171 6f70 6f70 706f 7070 7170 +7070 7070 706f 6f6f 6f6e 6e6d 6d6d 6e6e +6d6d 6d6c 6d6b 6c6b 6c6b 6c6c 6c6c 6a6a +6c6c 6a6b 6c6c 6c6b 6b6c 6b6a 6a6b 6a6b +6a69 6a6a 6a69 6969 6969 6967 696a 6a6b +6b6a 6b6c 6b6a 6a6a 6969 6969 696a 6868 +6869 6969 6a6a 6b6a 6b6a 6a6a 6a6b 6a6c +6b6b 6c6b 6a6a 6b6c 6c6c 6c6c 6d6d 6e6e +6e6e 6e6e 6e6e 6d6e 6e6e 6f70 706f 7070 +7070 7072 7171 7272 7171 7273 7373 7373 +7373 7474 7575 7675 7575 7675 7676 7677 +7677 7677 7778 7979 7979 7979 7978 797a +7a7b 7b7b 7c7c 7d7e 7e7f 7e7e 7e7f 8080 +807f 7e7e 7e7e 7e7f 7f80 8182 8283 8483 +8383 8282 8382 8282 8282 8282 8383 8383 +8485 8484 8586 8687 8787 8989 8a8a 8988 +8888 8988 898a 8a8c 8c8b 8c8c 8b8d 8d8d +8d8e 8e8f 8f90 8f91 9190 9090 9191 9191 +9192 9292 9394 9393 9494 9595 9595 9595 +9595 9596 9596 9696 9696 9897 9797 9999 +999a 9a9a 9a9a 9a9c 9b9b 9c9c 9c9b 9b9c +9b9b 9b9c 9b9b 9c9c 9d9e 9d9d 9e9d 9e9e +9e9e 9f9f 9f9f 9f9e 9f9f 9e9f 9f9e 9f9f +9d9d 9e9e 9d9e 9d9e 9c9d 9d9d 9e9e 9f9f +9e9d 9d9d 9d9c 9c9d 9c9c 9b9c 9b9b 9b9a +9b9a 9b9b 9b9a 9a9a 9a9a 9998 9897 9796 +9495 9595 9495 9594 9494 9594 9595 9594 +9493 9393 9292 9191 9192 9191 8f8f 8f8f +8f8f 8f8f 8e8d 8c8c 8c8c 8c8b 8989 8988 +8786 8586 8586 8584 8584 8484 8584 8483 +8383 8382 8382 8180 8080 8180 7d7d 7d7c +7b7b 7b7a 7a79 797a 7978 7979 7979 7a79 +7a7a 7979 7978 7779 7878 7777 7676 7573 +7373 7273 7273 7273 7473 7273 7273 7373 +7272 7373 7373 7372 7272 7272 7373 7271 +7272 7272 7271 7272 7274 7472 7273 7273 +7374 7374 7373 7372 7372 7271 7170 7070 +7070 7172 7373 7373 7473 7574 7574 7575 +7474 7574 7574 7373 7373 7372 7373 7374 +7576 7675 7777 7878 7879 7879 7879 7a7a +7a7a 7b7b 7b7a 7b7a 7b7b 7b7c 7c7c 7c7d +7e7e 7f7f 807f 7f80 7f80 8081 8183 8384 +8586 8584 8584 8585 8685 8586 8687 8788 +8888 8888 8989 898a 8a8b 8c8b 8c8c 8c8c +8d8c 8e8e 8d8d 8d8e 8e8e 8e8f 8f8f 8f90 +9090 9290 9090 9091 9191 9191 9292 9291 +9191 9192 9192 9291 9191 9192 9191 9292 +9192 9192 9190 9090 9092 9191 9191 9290 +9190 908e 8e8d 8e8d 8d8d 8c8c 8b8c 8c8c +8c8b 8b8b 8b8c 8b8b 8b8b 8b8c 8b8b 8989 +8889 8787 8685 8485 8483 8383 8383 8483 +8383 8484 8383 8382 8282 8180 7f7f 7e7d +7e7d 7d7c 7c7b 7b7a 7a79 7979 7979 7979 +7878 7879 7878 7776 7676 7575 7574 7474 +7372 7272 7172 7372 7372 7172 7171 7172 +7170 7070 7070 716f 6f70 6f6f 6f6f 6f6f +706f 6e6e 6d6c 6c6d 6d6d 6d6c 6d6d 6d6e +6e6d 6d6e 6e6d 6d6d 6d6d 6c6c 6c6c 6c6b +6b6b 6a6a 6a6b 6b6b 6c6c 6c6b 6b6c 6b6b +6c6b 6b6b 6b6b 6b6a 6b6b 6b6a 6b6b 6a6a +6a6a 696a 6968 696a 6a69 6868 6968 6969 +6867 6867 6767 6869 6969 696a 6a69 6968 +6869 6969 6968 6868 6768 6868 6768 6868 +6867 6868 6869 6868 6867 6868 6768 6868 +6869 6768 6768 6867 6867 6766 6667 6768 +6869 6868 6868 6868 6a69 6a6a 696a 6a6a +6a6a 6a69 6a69 6a6b 6b6a 6c6b 6c6b 6b6b +6d6d 6c6d 6d6e 6e6d 6e6f 6f70 7070 7070 +7070 7170 7272 7272 7272 7273 7374 7476 +7575 7676 7776 7676 7677 7777 7877 7879 +7979 7a79 7979 7a7a 7b7c 7c7c 7d7d 7e7d +7d7f 7f7f 7f80 7f80 807f 7f7f 8181 8282 +8283 8283 8383 8382 8383 8483 8483 8485 +8686 8787 8787 8788 8889 888a 8989 8a89 +898b 8b8a 8b8a 8b8a 8b8b 8b8c 8c8c 8d8d +8e8e 8d8e 9090 908f 8f8e 8e8e 908f 9090 +9191 9191 9192 9292 9393 9293 9393 9394 +9494 9494 9393 9395 9596 9796 9596 9696 +9697 9797 9898 9899 989a 9999 9898 9898 +9898 9999 9a99 9999 9a99 999a 9b9b 9b9c +9c9c 9c9c 9d9c 9c9c 9c9b 9c9c 9d9e 9d9d +9c9e 9d9e 9e9e 9e9e 9e9e 9e9e 9d9d 9e9f +9e9f 9f9f 9f9f 9f9f 9f9f a0a0 a0a0 a09e +9e9f 9f9f 9f9f 9e9f 9e9e 9e9e 9f9f 9e9e +9e9f 9e9f 9f9e 9e9f 9f9e 9e9e 9e9e 9e9e +9e9f 9f9e 9e9e 9e9e 9d9d 9e9e 9e9e 9d9d +9d9e 9d9d 9d9d 9c9c 9b9b 9b9a 9a9b 9a99 +9a99 9999 9999 9999 9898 9898 9898 9898 +9797 9696 9697 9796 9796 9595 9595 9596 +9696 9594 9494 9494 9494 9393 9393 9392 +9292 9392 9292 9292 9293 9293 9391 9191 +9291 9190 9090 9090 9190 908f 9090 9091 +9092 9292 9191 9191 908f 8f8e 8f8f 8f8f +8f8e 8f8f 8f8f 9090 908f 8f91 9090 9090 +9091 9090 908f 908e 8f8e 8e8e 8e8e 8e8f +8e8f 8f8e 8e8e 8f90 8f90 908f 8f8f 8f90 +8f8f 8f8e 8f8f 8f8f 8f8f 9090 9090 908f +8e8d 8d8e 8e8d 8d8d 8e8d 8d8d 8e8d 8d8d +8d8d 8c8d 8d8e 8e8d 8c8d 8d8c 8c8c 8c8b +8a8a 8989 8a8a 898a 8a89 898a 8989 8887 +8787 8787 8687 8787 8685 8585 8484 8483 +8283 8182 8281 8080 8081 8080 7f7f 7e7e +7f7e 7d7c 7c7b 7d7b 7a79 7a79 7878 7877 +7776 7675 7575 7474 7474 7374 7372 7271 +7170 706f 6f6f 6e6e 6e6e 6d6c 6c6b 6b6b +6a6a 6969 6969 6867 6766 6767 6666 6566 +6565 6464 6565 6464 6262 6161 6160 615f +5f60 5f5f 5e5e 5e5e 5e5e 5f5f 5f5e 5e5e +5d5d 5e5d 5d5c 5c5b 5c5c 5c5c 5d5d 5c5c +5a5b 5b5a 5a5b 5a59 5a5a 595a 5a5b 5b5b +5b5b 5b5b 5b5b 5b5b 5b5c 5b5b 5a5b 5a5a +5b5a 5b5c 5b5d 5c5c 5c5c 5c5e 5e5d 5f5e +5e5e 5e5e 5e5f 5f5e 5f5f 5f5e 5f5f 5f5f +5f5f 605f 6061 6161 6161 6062 6162 6262 +6362 6363 6363 6362 6364 6463 6464 6463 +6464 6565 6666 6667 6667 6666 6767 6767 +6766 6667 6767 6867 6767 6868 6969 6969 +6969 696a 6a69 6969 6969 6a6a 6a6b 6a6b +6b6c 6c6c 6c6c 6d6c 6d6e 6e6d 6e6e 6d6d +6d6d 6e6e 6d6f 6e6f 6f6f 6f70 7070 7170 +7071 7171 7272 7272 7172 7172 7172 7271 +7171 7172 7272 7373 7272 7273 7373 7474 +7575 7576 7676 7677 7776 7675 7575 7575 +7677 7777 7778 7879 7a79 7979 797a 7a7a +7b7b 7b7b 7b7b 7b7b 7c7b 7c7b 7b7b 7c7c +7d7d 7e7d 7e7e 7f7e 7e7f 7e80 7f80 8080 +8182 8182 8484 8484 8383 8484 8485 8685 +8685 8586 8787 8788 8888 8889 8889 8a8a +8a8b 8b8c 8c8b 8c8b 8c8c 8c8c 8c8c 8c8c +8d8e 8e8f 8f90 9090 9091 9291 9292 9292 +9293 9392 9393 9393 9394 9494 9495 9495 +9595 9697 9798 9797 9897 9898 9797 9998 +9899 9999 9999 9a99 9b9b 9a9b 9b9b 9a9b +9b9b 9c9c 9d9c 9b9c 9c9d 9d9d 9d9e 9d9e +9f9e 9e9e 9f9f 9fa0 9fa0 9fa1 a0a0 a0a0 +a0a0 9f9f a0a0 a1a1 a1a1 a2a1 a2a2 a2a2 +a3a1 a2a2 a2a2 a2a2 a2a3 a3a3 a3a3 a2a3 +a5a5 a5a5 a4a4 a5a4 a5a4 a5a5 a5a4 a4a4 +a4a4 a4a4 a5a5 a5a5 a5a6 a6a6 a6a6 a5a5 +a6a5 a5a5 a5a5 a6a5 a5a4 a4a3 a3a3 a2a4 +a3a3 a3a3 a2a3 a4a3 a3a3 a3a2 a2a2 a3a2 +a2a1 a0a1 a1a1 a1a1 a1a0 a0a1 a0a0 9f9f +9fa0 9f9e 9e9d 9d9c 9c9c 9c9b 9b9b 9c9b +9b9a 9a9a 9999 9999 9898 9798 9897 9696 +9696 9594 9594 9493 9393 9292 9291 9190 +9090 908f 8f8e 8e8e 8d8d 8d8d 8d8c 8c8c +8c8b 8b8b 8a8b 8b8b 8b89 8a8a 8988 8889 +8787 8685 8685 8485 8584 8484 8383 8483 +8484 8382 8281 8181 8181 8281 8081 8080 +8180 8080 7f7f 7f7f 7e7f 7f7e 7e7e 7e7d +7d7d 7d7e 7f7e 7e7e 7e7e 7e7f 7e7e 7e7d +7e7c 7d7e 7d7d 7c7b 7c7c 7c7c 7c7c 7c7c +7d7d 7e7d 7d7d 7e7d 7d7d 7d7d 7d7d 7d7d +7e7d 7d7d 7c7d 7d7d 7d7d 7d7d 7d7e 7e7e +7e7e 7e7e 7e7e 7f7e 7e7e 7d7d 7d7d 7e7e +7e7e 7f7e 7e7e 7e7e 7d7e 7e7f 7e7e 7e7e +7e7e 7f7f 7f7f 8080 8080 8080 8080 807f +807f 7f7f 7e7e 7f7e 7f7f 7f7f 7f7e 8080 +7f7f 7f80 8080 807f 807f 7f7e 7e7e 7e7e +7e7f 7e7e 7e7e 7e7e 7e7e 7e7e 7e7e 7f7d +7e7e 7e7e 7e7d 7d7e 7e7f 7e7e 7d7e 7d7d +7e7e 7e7f 7e7d 7d7c 7d7c 7e7d 7d7d 7c7b +7b7b 7b7b 7b7c 7c7c 7b7c 7b7c 7b7b 7b7b +7b7a 7a7a 7a79 7a7a 7a79 7979 7979 7979 +7879 7878 7878 7878 7879 7878 7876 7777 +7778 7776 7776 7676 7676 7576 7675 7676 +7676 7776 7576 7475 7374 7474 7474 7474 +7373 7374 7373 7373 7372 7373 7373 7373 +7171 7171 7171 7270 7171 7071 7171 7170 +6f6f 6f6e 6e6e 6d6e 6e6e 6c6d 6d6c 6d6c +6c6d 6c6c 6c6c 6c6c 6b6a 6b6b 6969 6969 +6968 6867 6867 6767 6667 6766 6665 6565 +6564 6464 6362 6262 6362 6362 6262 6261 +6160 6060 6060 605f 605f 605f 5f5f 5f5d +5d5d 5d5d 5d5e 5d5d 5c5c 5d5c 5c5c 5c5b +5b5b 5b5b 5b5a 5c5c 5b5b 5a5a 5b5a 5b5a +5a59 595a 5a5a 5a5a 5b5a 5a59 5a5a 5a5a +5a5a 595a 5959 5a5a 5a59 5b5a 5a5a 595a +5a5a 5a5c 5b5b 5b5b 5b5b 5b5b 5b5b 5c5b +5c5b 5c5c 5c5c 5c5d 5c5d 5e5e 5e5d 5e5d +5d5e 5d5f 5e5f 5f5f 6061 6161 6061 6161 +6261 6162 6363 6464 6565 6464 6465 6566 +6766 6666 6666 6867 6868 6a69 6a69 6a69 +696a 6a6b 6b6c 6d6c 6c6d 6e6e 6e6f 6f6f +7070 7070 7171 7171 7273 7372 7375 7475 +7576 7677 7677 7778 7979 7979 7a79 7a79 +7a7b 7b7b 7c7d 7e7e 7f7f 7f80 8182 8182 +8383 8383 8384 8384 8586 8687 8888 8989 +8a8b 8b8c 8c8c 8d8d 8e8e 8f8f 8f90 9190 +9192 9294 9494 9697 9698 9798 999a 9a9b +9c9b 9b9c 9d9c 9d9d 9ea0 a1a1 a2a2 a3a3 +a3a5 a4a6 a6a7 a7a7 a7a8 a9a9 a9aa a9ab +abac acac aeae aeaf afaf afb0 b1b1 b3b2 +b2b2 b3b2 b3b3 b3b5 b4b5 b5b5 b6b6 b7b7 +b7b7 b7b8 b8b8 b8b9 b9b9 b9b8 bab9 bab9 +baba babb bbbb bbbb bcbb bbbb bbba bbbb +babc babb bbbb baba baba bbbb babb bbba +babb babb baba baba bab9 b9b8 b8b9 b8b8 +b7b7 b7b7 b7b7 b7b6 b5b5 b4b4 b4b4 b4b3 +b3b3 b3b2 b2b2 b2b1 b2b1 b0af afb0 aeaf +aeae adad adac acac abab aaa9 a9a7 a7a6 +a7a6 a5a5 a4a5 a5a4 a4a4 a3a2 a2a1 a0a0 +a09f 9f9f 9e9d 9d9c 9c9b 9b9b 9a9a 9a99 +9998 9897 9796 9795 9594 9394 9392 9291 +908f 8f90 8f8f 8f8e 8e8d 8d8e 8d8c 8b8b +8a8a 8a89 898a 8888 8887 8687 8785 8585 +8485 8483 8383 8282 8282 8282 8281 8081 +7f7f 7f7f 7f7f 7f7f 7e7d 7d7d 7d7d 7d7d +7c7d 7c7c 7b7b 7a7a 797a 7a7a 7b79 7979 +7979 7978 7979 7a79 7878 7878 7778 7878 +7777 7777 7676 7777 7776 7777 7877 7677 +7776 7776 7676 7676 7676 7676 7575 7676 +7676 7676 7676 7675 7574 7475 7576 7575 +7475 7476 7575 7575 7574 7473 7474 7474 +7575 7474 7474 7474 7474 7473 7474 7375 +7474 7474 7474 7473 7373 7473 7272 7273 +7272 7271 7172 7272 7272 7271 7272 7171 +7271 7171 7171 7170 7170 6f70 6f70 706f +7070 6f70 706f 7071 7170 706f 7070 7070 +6f6e 6e6f 6e6e 6e6d 6e6f 6e6d 6e6e 6e6e +6e6e 6e6e 6e6e 6c6c 6c6c 6d6c 6d6d 6c6c +6d6d 6d6d 6d6e 6d6c 6d6c 6d6d 6c6d 6d6d +6d6e 6d6d 6c6d 6d6d 6d6d 6d6d 6d6d 6d6d +6d6c 6d6d 6d6c 6e6c 6c6c 6d6c 6d6c 6c6d +6d6d 6d6d 6e6d 6e6d 6e6e 6e6e 6d6d 6d6d +6e6d 6d6d 6d6d 6d6d 6d6e 6e6f 6e6e 6e6e +6f6f 6f6f 6f6e 6f6f 6e6f 6f6e 6f6f 6f6f +6f6e 6f70 6f70 6f6f 6f6f 6e6f 6f6f 706f +6f6f 6f6f 6e6e 6e6f 6f6f 706f 6e6e 6f6f +6d6e 6e6e 6e6f 6e6f 6f6f 6e6e 6f6e 6f6e +6e6e 6f6f 6f6e 6e6e 6d6d 6d6d 6d6c 6e6d +6e6d 6d6e 6d6d 6d6d 6f6d 6e6e 6d6d 6d6d +6d6d 6d6d 6d6d 6c6c 6c6c 6c6c 6c6d 6d6c +6c6c 6d6c 6c6c 6d6c 6d6c 6c6c 6b6b 6b6a +6b6b 6b6b 6b6b 6a6b 6b6b 6a6b 6a6a 6a6a +6969 6a69 6968 6868 6868 6968 6968 6868 +6868 6869 6868 6968 6767 6767 6768 6767 +6867 6867 6867 6767 6768 6869 6969 6868 +6868 6868 6868 6868 6868 6869 6969 696a +696a 6a6a 6b6c 6a6c 6b6c 6b6b 6c6d 6d6c +6c6d 6d6d 6e6f 6e6e 6f6f 6f70 7070 7071 +7272 7172 7372 7273 7273 7374 7576 7576 +7677 7778 7878 7879 797a 7a7a 7a7a 7a7b +7c7d 7e7e 7e7f 7f80 8080 8281 8282 8283 +8384 8485 8586 8687 8887 8888 8889 8b8b +8c8c 8d8d 8e8e 8e8f 8f8f 9091 9192 9294 +9394 9595 9696 9797 9897 989a 9999 999a +9a9c 9b9c 9c9e 9e9e 9ea0 a0a1 a1a1 a2a3 +a3a3 a4a4 a5a4 a4a5 a6a5 a6a6 a7a7 a8a9 +a9aa abab abaa abab aaac abac adac acad +adae afaf b0b0 afaf b0b0 b0b0 b1b1 b0b1 +b1b1 b2b1 b3b2 b4b3 b3b3 b4b4 b4b3 b4b4 +b4b4 b3b4 b3b4 b4b3 b4b4 b4b4 b3b4 b4b5 +b5b5 b4b5 b5b5 b5b4 b5b5 b4b3 b3b4 b4b3 +b3b3 b3b3 b2b3 b1b2 b2b1 b2b1 b1b2 b0b0 +b0b0 b0b1 b0af afb0 afae aeae aead aead +acac adac acac abac aaaa aaa9 a8a9 a8a8 +a8a7 a7a7 a7a7 a7a6 a6a6 a5a5 a5a4 a4a2 +a3a3 a2a3 a2a1 a2a0 a09f 9fa0 9f9e 9e9d +9d9d 9d9d 9c9c 9b9c 9a9b 9a9b 9a99 9999 +9898 9798 9897 9797 9696 9595 9595 9493 +9493 9493 9392 9192 9191 9091 9190 9090 +8f8f 908f 8f8e 8e8e 8d8e 8d8d 8c8c 8c8c +8b8b 8c8c 8b8b 8b8a 8b89 8988 8a89 8988 +8888 8787 8786 8786 8685 8685 8585 8484 +8484 8384 8383 8382 8382 8282 8281 8382 +8281 8180 7f80 807e 7f7f 7e7e 7e7e 7d7e +7d7d 7d7c 7c7d 7c7b 7b7b 7b7c 7c7b 7a7a +797a 7979 7979 7878 7878 7778 7777 7777 +7576 7574 7475 7574 7473 7472 7272 7272 +7172 7271 7170 7070 6f6f 6f6e 6e6e 6e6f +6e6d 6d6c 6d6c 6b6b 6b6a 6b6a 6a6a 6a6a +6969 6868 6768 6767 6766 6565 6566 6565 +6565 6564 6463 6464 6363 6162 6161 6060 +6161 6060 6060 6060 605f 5f5e 5d5f 5f5e +5e5e 5d5d 5d5d 5d5c 5c5c 5c5c 5c5c 5b5c +5b5b 5a5a 5b5b 5b5a 5a59 5959 5a5a 595a +5959 5959 595a 5959 5a59 5a59 5858 5759 +5959 5859 5959 5858 5959 5959 5858 5859 +5858 5758 5859 5959 5959 595a 5a5a 5a5a +5a5a 5a5a 5a5b 5a5a 5a5a 5a59 5a5a 5a5a +5b5a 5b5b 5b5b 5b5c 5c5c 5c5d 5c5c 5d5c +5c5d 5c5c 5d5d 5d5e 5d5e 5d5d 5e5e 5e5e +5e5e 5f60 6060 5f60 605f 6060 6161 6160 +6161 6262 6161 6262 6261 6363 6362 6364 +6364 6463 6364 6464 6565 6465 6465 6667 +6667 6766 6767 6767 6768 6768 6868 6868 +6869 6a6b 6a6a 6b6a 6b6c 6d6c 6d6d 6c6d +6c6d 6d6e 6e6e 6e6d 6e6e 6e70 6f6f 6f70 +7072 7172 7272 7172 7272 7272 7274 7474 +7374 7475 7575 7576 7677 7677 7778 7878 +7978 7979 7a7a 7a7a 7b7a 7b7b 7b7c 7c7c +7c7d 7d7d 7e7e 7f7f 7f80 8080 8181 8181 +8182 8382 8383 8483 8484 8585 8585 8686 +8787 8687 8887 8888 8989 898a 8a8a 8b8b +8c8c 8c8d 8e8e 8f8f 8f90 8f8f 8f91 9091 +9091 9292 9294 9493 9495 9696 9696 9697 +9797 9897 9899 9999 9a9a 9a9b 9b9c 9b9c +9c9c 9c9e 9e9f 9e9f 9f9f 9fa0 a0a0 a1a1 +a2a2 a3a2 a2a3 a3a3 a4a4 a4a4 a5a4 a6a5 +a6a6 a7a7 a8a7 a8a8 a9a9 a8a9 a9a9 aaaa +aaaa acab acac acac adac acad adae adae +aeae b0af afb0 afaf afb0 b0b0 b1b0 b1b1 +b1b1 b1b1 b2b1 b1b2 b2b2 b3b2 b2b2 b3b3 +b4b4 b4b4 b4b4 b4b3 b3b3 b3b3 b4b3 b3b3 +b3b3 b3b3 b3b4 b4b4 b5b4 b4b4 b4b3 b4b3 +b3b3 b3b3 b3b3 b3b2 b3b2 b2b2 b2b1 b1b1 +b2b1 b1b1 b0b0 aeaf afae afae afae aeae +adae adad adad acaa abab aba9 a9aa aaaa +a9a8 a8a8 a7a7 a6a6 a6a6 a5a5 a4a5 a5a4 +a3a3 a2a3 a2a2 a1a1 a19f 9f9f a09f 9e9e +9d9d 9d9d 9c9b 9b9b 9a9a 9998 9897 9797 +9797 9595 9595 9393 9393 9292 9191 9090 +9090 8f8f 8e8d 8d8d 8d8b 8b8b 8a8a 8a89 +8989 8887 8787 8686 8585 8584 8383 8382 +8182 8180 8080 7f7f 7f7e 7e7d 7d7d 7d7c +7c7c 7c7b 7b7a 7a79 7978 7777 7777 7675 +7675 7575 7474 7474 7473 7373 7371 7171 +7070 7070 6f70 6f70 6e6e 6e6e 6d6c 6d6c +6c6d 6c6b 6b6b 6a6a 6a69 6969 6a69 6968 +6868 6868 6767 6667 6567 6665 6565 6465 +6464 6464 6464 6464 6363 6263 6263 6362 +6362 6161 6161 6060 6061 6061 5f60 605f +605f 5f5e 5f5e 5f5e 5e5e 5f5e 5e5e 5e5e +5d5d 5d5e 5d5d 5e5d 5d5d 5c5c 5c5c 5d5d +5d5c 5c5c 5d5c 5b5c 5c5c 5c5c 5c5c 5c5b +5c5c 5b5c 5c5c 5c5b 5c5b 5b5b 5b5b 5c5b +5b5b 5b5b 5c5b 5c5b 5b5b 5b5b 5c5b 5b5c +5c5b 5c5d 5c5c 5c5c 5c5c 5c5d 5d5d 5c5d +5d5c 5d5c 5d5e 5d5e 5d5e 5e5e 5d5e 5e5e +5e5f 5f5f 5f5f 5f5e 5f60 6061 6061 6061 +6161 6061 6262 6263 6363 6463 6363 6364 +6464 6565 6565 6666 6666 6666 6667 6767 +6767 6868 6869 6868 6a69 696a 6a69 6a6b + diff --git a/tracker.tal b/tracker.tal new file mode 100644 index 0000000..d019e74 --- /dev/null +++ b/tracker.tal @@ -0,0 +1,194 @@ +( a blank file ) + +%+ { ADD } %- { SUB } %* { MUL } %/ { DIV } +%< { LTH } %> { GTH } %= { EQU } %! { NEQ } +%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } +%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 } + +%2* { #10 SFT } %2/ { #01 SFT } %2** { #10 SFT2 } %2// { #01 SFT2 } +%4* { #20 SFT } %4/ { #02 SFT } %4** { #20 SFT2 } %4// { #02 SFT2 } +%8* { #30 SFT } %8/ { #03 SFT } %8** { #30 SFT2 } %8// { #03 SFT2 } +%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 } +%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 } + +%2MOD { #01 AND } %2MOD2 { #0001 AND2 } +%4MOD { #03 AND } %4MOD2 { #0003 AND2 } +%8MOD { #07 AND } %8MOD2 { #0007 AND2 } +%10MOD { #0f AND } %10MOD2 { #000f AND2 } + +%DEBUG { ;print-hex/byte JSR2 #0a18 DEO } +%DEBUG2 { ;print-hex JSR2 #0a18 DEO } +%RTN { JMP2r } + +( devices ) + +|00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1 +|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 +|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 +|30 @Audio0 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 +|40 @Audio1 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 +|50 @Audio2 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 +|60 @Audio3 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1 +|80 @Controller &vector $2 &button $1 &key $1 &func $1 +|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2 +|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 +|b0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 + +( variables ) + +|0000 + +@kalama + &module $2 ( pointer to start of module file ) + &loopflags $1 ( if different channels are set to loop ) + &instruments $2 ( address that instruments start at ) + &tick $1 + &line $1 + &speed $1 + &songloop $1 ( if song loops or not ) + &songpos $2 ( position in song table ) + +( program ) + +|0100 ( -> ) + + ( theme ) + #0fe5 .System/r DEO2 + #0fc5 .System/g DEO2 + #0f25 .System/b DEO2 + + ;module ;k-init-module/run JSR2 + + ;screen-vector .Screen/vector DEO2 +( #01 ;draw-pattern JSR2 ) +BRK + +@screen-vector ( -> ) + #0000 .Screen/x DEO2 + #0008 .Screen/y DEO2 + ;draw-song JSR2 +BRK + +@draw-song + .Screen/x DEI2 ,&pos STR2 + #00 ,&count STR + #01 .Screen/auto DEO + .kalama/module LDZ2 #0003 ADD2 DUP2 + LDA2 ( lengthbitaddr* length* ) + ADD2 #0002 ADD2 + STH2 + .kalama/module LDZ2 #0005 ADD2 ( song start address ) + &loop + ,&count LDR #01 ADD DUP ,&count STR ( increase counter for lines ) + #05 NEQ ,&draw JCN + #0008 .Screen/y DEI2 ADD2 .Screen/y DEO2 + ,&pos LDR2 .Screen/x DEO2 + #01 ,&count STR + &draw + DUP2 + LDA #01 ;draw-hex JSR2 + #0001 ADD2 DUP2 + #00 .Screen/sprite DEO + STHrk2 NEQ2 ,&loop JCN ( if not at the end of song, go again ) + POP2r POP2 +RTN + &count $1 + &pos $2 + +@draw-pattern ( p ) + ;k-get-pattern JSR2 + DEBUG2 +RTN +@draw-hex ( n color -- ) + #01 .Screen/auto DEO + STH ( stash color ) + DUP + #f0 AND #04 SFT ,&get-char JSR #0008 MUL2 ;font ADD2 .Screen/addr DEO2 + STHrk .Screen/sprite DEO + #0f AND ,&get-char JSR #0008 MUL2 ;font ADD2 .Screen/addr DEO2 + STHr .Screen/sprite DEO + RTN + + &get-char ( d -- c* ) + DUP #09 GTH ,&hex JCN + #10 ADD #00 SWP + RTN + &hex + #37 ADD #00 SWP + RTN + +@print-hex ( value* -- ) + + SWP ,&byte JSR + &byte ( byte -- ) + STHk #04 SFT ,&parse JSR #18 DEO + STHr #0f AND ,&parse JSR #18 DEO + RTN + &parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 + RTN + &above #57 + RTN + +RTN + +@print-str ( string* -- ) + + #0001 -- + &while + INC2 LDAk DUP #18 DEO ,&while JCN + POP2 + +RTN + +~engine.tal + +@font ( bbcmicro ) + 0000 0000 0000 0000 1818 1818 1800 1800 + 6c6c 6c00 0000 0000 3636 7f36 7f36 3600 + 0c3f 683e 0b7e 1800 6066 0c18 3066 0600 + 386c 6c38 6d66 3b00 0c18 3000 0000 0000 + 0c18 3030 3018 0c00 3018 0c0c 0c18 3000 + 0018 7e3c 7e18 0000 0018 187e 1818 0000 + 0000 0000 0018 1830 0000 007e 0000 0000 + 0000 0000 0018 1800 0006 0c18 3060 0000 + 3c66 6e7e 7666 3c00 1838 1818 1818 7e00 + 3c66 060c 1830 7e00 3c66 061c 0666 3c00 + 0c1c 3c6c 7e0c 0c00 7e60 7c06 0666 3c00 + 1c30 607c 6666 3c00 7e06 0c18 3030 3000 + 3c66 663c 6666 3c00 3c66 663e 060c 3800 + 0000 1818 0018 1800 0000 1818 0018 1830 + 0c18 3060 3018 0c00 0000 7e00 7e00 0000 + 3018 0c06 0c18 3000 3c66 0c18 1800 1800 + 3c66 6e6a 6e60 3c00 3c66 667e 6666 6600 + 7c66 667c 6666 7c00 3c66 6060 6066 3c00 + 786c 6666 666c 7800 7e60 607c 6060 7e00 + 7e60 607c 6060 6000 3c66 606e 6666 3c00 + 6666 667e 6666 6600 7e18 1818 1818 7e00 + 3e0c 0c0c 0c6c 3800 666c 7870 786c 6600 + 6060 6060 6060 7e00 6377 7f6b 6b63 6300 + 6666 767e 6e66 6600 3c66 6666 6666 3c00 + 7c66 667c 6060 6000 3c66 6666 6a6c 3600 + 7c66 667c 6c66 6600 3c66 603c 0666 3c00 + 7e18 1818 1818 1800 6666 6666 6666 3c00 + 6666 6666 663c 1800 6363 6b6b 7f77 6300 + 6666 3c18 3c66 6600 6666 663c 1818 1800 + 7e06 0c18 3060 7e00 7c60 6060 6060 7c00 + 0060 3018 0c06 0000 3e06 0606 0606 3e00 + 183c 6642 0000 0000 0000 0000 0000 00ff + 1c36 307c 3030 7e00 0000 3c06 3e66 3e00 + 6060 7c66 6666 7c00 0000 3c66 6066 3c00 + 0606 3e66 6666 3e00 0000 3c66 7e60 3c00 + 1c30 307c 3030 3000 0000 3e66 663e 063c + 6060 7c66 6666 6600 1800 3818 1818 3c00 + 1800 3818 1818 1870 6060 666c 786c 6600 + 3818 1818 1818 3c00 0000 367f 6b6b 6300 + 0000 7c66 6666 6600 0000 3c66 6666 3c00 + 0000 7c66 667c 6060 0000 3e66 663e 0607 + 0000 6c76 6060 6000 0000 3e60 3c06 7c00 + 3030 7c30 3030 1c00 0000 6666 6666 3e00 + 0000 6666 663c 1800 0000 636b 6b7f 3600 + 0000 663c 183c 6600 0000 6666 663e 063c + 0000 7e0c 1830 7e00 0c18 1870 1818 0c00 + 1818 1800 1818 1800 3018 180e 1818 3000 + 316b 4600 0000 0000 ffff ffff ffff ffff + +@module +~testmodule.tal