diff --git a/ArduChess.ino b/ArduChess.ino index 0d3a3b0..8caa5ab 100644 --- a/ArduChess.ino +++ b/ArduChess.ino @@ -44,9 +44,11 @@ void setup() { b.make({0x64, 0x54, P_EMPTY}); b.make({0x34, 0x44, P_EMPTY}); b.make({0x63, 0x43, P_EMPTY}); - //b.print(); + b.print(); b.make({0x44, 0x53, P_EMPTY}); - //b.print(); + b.print(); + b.unmake(); + b.print(); int elapsed = micros() - startTime; Serial.print(elapsed); diff --git a/Board.h b/Board.h index 30f5ff3..d8e03da 100644 --- a/Board.h +++ b/Board.h @@ -80,8 +80,11 @@ Board::Board() { } void Board::print() { + Serial.println(F("BOARD:")); for(char i = 7; i >= 0; i--) { for(byte j = 0; j < 16; j++) { + if(j == 8) + Serial.print("| "); Serial.print(field[i*16 + j], HEX); Serial.print(" "); } @@ -244,17 +247,20 @@ void Board::prev_unmove() { } void Board::store_unmove(Unmove u) { byte *ub = (byte*) &u; - for(size_t i = 0; i < sizeof(u); i++) { - next_unmove(); + for(byte i = 0; i < sizeof(u); i++) { field[PTR_UNMOVE] = ub[i]; + next_unmove(); } } Unmove Board::read_unmove() { Unmove u; byte* ptr = (byte*) &u; for(int i = sizeof(u) - 1; i >= 0; i--) { - ptr[i] = field[PTR_UNMOVE]; prev_unmove(); + ptr[i] = field[PTR_UNMOVE]; + #ifdef _ACF_CLEAR_UNMOVE + field[PTR_UNMOVE] = 0; + #endif } return u; }