Nice effect.
I was able to reduce the size of the program from 917 to 882 bytes by using "epcompress -raw -m3" compression:
[ Guests cannot view attachments ]
This uses the following simplified loader (100h-167h), perhaps it could be useful in other demos:
[ Guests cannot view attachments ]
It can be made even shorter (-3 bytes) by testing only bit 4 of D at the beginning of readLength, since the start address is 1000h and the data size is less than 4K. 4 more bytes can be saved by removing the header from the compressed data (2 bytes at the beginning and 2 bytes at the end), it is not used here.
Edit: setting the stack pointer is not necessary either, that could be another 3 bytes saved.