I started playing around with it some more. Your code as sent didn't work for MSB=0 but did for MSB=1. If I changed 4ff2 to 0x5150 then MSB=0 would work but MSB=1 wouldn't. I realized where the problem was then...
5144 beq.w 0x514c -> 514c bra.w 0x500e
should be:
5144 beq.w 0x5150 -> 5150 andi.w 0x7f, d0 ; NRPN MSB == 0