The way I do on-screen timers (in compo-tunes, for instance) is that I read the seconds register from the TOD clock, then the minutes register, and then I verify that the seconds register still contains the old value. If not, I branch back and do it all over again.
@lft: just wondering why you started with two different macros "nim" and "nab"; if I get it right, a "nim" would fully suffice to circumvent the potentially trashed bytes (at the fragile memory positions as you called them).
lda #1 sta addr