If there is no King with rights, the e-file is used to decide if a Rook
with rights is the K-side or Q-side Rook. This at least works with
corner Rooks, to avoid disappearence of Rook-rights on repetitive
editing of a position through intermediates with no King-rights.
kf = NoRights; err = 0;
for(f=BOARD_RGHT-1; f>=0; f--)
if(rightsBoard[0][f] == 2) { if(kf != NoRights) err=10; boards[0][CASTLING][2] = kf = f; }
+ if(kf == NoRights) kf = 4;
for(f=BOARD_RGHT-1; f>=0; f--)
if(rightsBoard[0][f] == 1) { err++; boards[0][CASTLING][f<kf] = f; }
kf = NoRights; err = 0;
for(f=BOARD_RGHT-1; f>=0; f--)
if(rightsBoard[BOARD_HEIGHT-1][f] == 2) { if(kf != NoRights) err=10; boards[0][CASTLING][5] = kf = f; }
+ if(kf == NoRights) kf = 4;
for(f=BOARD_RGHT-1; f>=0; f--)
if(rightsBoard[BOARD_HEIGHT-1][f] == 1) { err++; boards[0][CASTLING][3+(f<kf)] = f; }
if(err + 2 > nrCastlingRights) DisplayError("unclear castling rights", 0);