Yes, get rid of the MODEDEFS...
Other tips that might help out...
Use DEBUG instead of SEROUT
Instead of inline code, grab the bits in a loop.
Not sure if it'll save anything, you've got pauseus and pause. Maybe just use a big pauseus rather than both commands.
Treat your Y variable as a word initially, then when you changing it up, treat it as 2 bytes, y.high and y.low. Might have to declare a couple of smaller bit variables (maybe scavenge a bit from a register from a module you're not using, like maybe a timer that's not running) while doing the bit swapping.
This might be one of those 'codius minimus' projects...DT? Anyone else?