fix undo after dc bug

backup() calls frame->decode to check to see if the last line of
is an actual grs command, this works most of the time but some
defensive positions are legit grs codes (e.g. 2b)

solution: test length of cmd, fail early when its 1 char which
is telltale sign of being in the middle of dr/dc .cmd pattern

also used some better variable names and added DEBUG_UNDO blocks
more casting compiler warnings