	  How to port IW Othello to a new hardware platform

Note: This is getting out of date.

So you want to port IW 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
