How to port GNU Othello to a new hardware platform So you want to port GNU Othello to a new display? Well, in that case more power to you! This file describes the details of the interface between the game itself and the display functions and should be enough to help you through most difficulties. There are three categories of functions in the IO specification: - initialization functions - output functions - input functions We will describe these functions and their arguments in the style of ANSI C. INITIALIZATION FUNCTIONS void init_io(int *argc, char *argv[]) Initialize the entire module. The things done here might for instance include creating and opening window. Note that argc is a pointer to the number of arguments, not the number itself. This is because the X Windows Toolkit wants it that way and we might as well standardize it. void init_io_for_one_game() Initialize the IO package for one game. The dumbterm package does nothing in either of these functions, but the sunview package does plenty. If you want to write some text prior to each game, this is the place to do it. OUTPUT FUNCTIONS void print_my_move(int movenumber, Square sq) void print_your_move(int movenumber, Square sq) Display the computers and the humans move resp. MOVENUMBER is the number of the move. All moves, passes also, are counted. void print_board(Board board) Display the board on the screen. This function is called when the board has changed in some way. void print_state(State *state) Display the board and the current score. void print_message(char *msg) Print a message string on the screen. void print_statistics(State *state) This function is called after the game has ended. Its task is to print the outcome of the game. The outcome is in STATE. void show_status(int status) Print the current status of the program. The status can be one on 3 #defined values: MYMOVE - It is the computers turn to move YOURMOVE - It is the humans turn to move. NOGAME - No game is in progress. INPUT FUNCTIONS Square get_users_move(); Get the users move someway and return it. Possible return values are a legal square on the board or one of the #defined values PASS, UNDO and RESIGN. You must only return legal moves. void start_game(); Just wait for the user to start the game. bool another_game(); Ask the user whether he wants to play another time. If so, return TRUE otherwise return FALSE