Поздравляю! Это уже красиво.

Маленькое замечание — delay() для ожидания изменения бита не имеет смысла, потому что внутри его такой же цикл.

ToBUFF() умеренно безопасен, пока получается поддерживать разрыв между указателями.