Definitely a challenge, but I've managed to get the code working at 110 baud and the bugs removed. Program has been updated, same link as earlier. Wire it up and use it as a loop-back for characters sent from a Terminal program to test. Implemented on an 08 but should work on an 08M. Corruption will occur if you type too quickly because it won't be ready for the next character when it's sent.
Converting to 100 baud should be possible by extrapolating from the values for the delays I used for 110 baud ...
FIRST_BIT_DELAY is 1068 (10680uS) and the time from start bit to mid first bit is 13.636mS (1.5*1s/110), thus the software overhead is 13636us minus 10680uS = 2956uS. The time from start bit to mid first bit at 100 baud should be 15mS. So the delay has to be 15000uS minus 2956uS = 12044uS, in intervals of 10uS that gives a FIRST_BIT_DELAY value of about 1204.
Likewise INTER_BIT_DELAY ( ~9mS bit time at 110 baud, 10mS at 100 baud ) becomes about 476.
You'd best verify my maths, and you may still need to do some tweaking to the values. Use the same technique to adjust the values for 8MHz 08M operation.
Have fun !