package main EmptyBit :: proc(bitboard: u64, square: int) -> u64 { shifted_bitboard := SQUARE_BBS[square]; return bitboard & ~shifted_bitboard; } SetBit :: proc(bitboard: u64, square: int) -> u64 { return bitboard | SQUARE_BBS[square]; } MoveBit :: proc(bitboard: u64, starting_square: int, target_square: int) -> u64 { copy_bitboard :u64= EmptyBit(bitboard, starting_square); return SetBit(copy_bitboard, target_square); }