NewNonCapture (int x, int y, int promoFlags)\r
{\r
if(board[y] != EMPTY) return 1; // edge, capture or own piece\r
-//if(flag) printf("# add %c%d%c%d, pf=%d\n", x%BW+'a',x/BW,y%BW+'a',y/BW, promoFlags);\r
- if( (entryProm ? promoBoard[y] & ~promoBoard[x] & CAN_PROMOTE\r
+//if(flag) \r
+printf("# add %c%d%c%d, pf=%x %x %x\n", x%BW+'a',x/BW+1,y%BW+'a',y/BW+1, promoFlags, promoBoard[x], promoBoard[y]);\r
+ if( (entryProm ? promoBoard[y] & (~promoBoard[x] & CAN_PROMOTE | LAST_RANK)\r
: promoBoard[y] | promoBoard[x] ) & promoFlags ){ // piece can promote with this move\r
moveStack[msp++] = moveStack[nonCapts]; // create space for promotion\r
moveStack[nonCapts++] = x<<SQLEN | y | PROMOTE; // push promotion\r