OK, the initial modifications to allow the transfer register scheme are done, and I've verified that things are working pretty well so far. Observe.
char test1(int a)
mov r1, FAKE_TR
movb FAKE_TR, r1
I've moved the transfer register to the head of the allocation list, so that should result in peephole-friendly output.
Unfortunately, 2k_chess.c crashes the compiler. Poop. This may be more involved than I thought.