Das einfachste wäre wirklich die Schreibroutine zu verändern. Wenn man den Zugriff auf den Puffer entsprechend in eine Funktion oder ein Makro packt, sollte das kein größeres Problem sein. Beim Schreiben sollte es ja reichen die Daten einfachnur einmal abzuhohlen. Es reicht also eine Funktion um 1 Byte aus dem Ringpuffer zu entfernen.
Ist vielleicht der effektiveste Weg von der Rechenzeit, aber dafür übersichtlich.