DrawSplash [AC/Jim]
- Preserves registers
- Input: none
- Output: on-screen


DrawPlayerSelect [AC/Jim]
- Preserves registers
- Input: none
- Output: on-screen
- Note:
Draws the buttons to select players and start button at bottom.



SetPlayers [AC/Jim]
- Preserves registers
- Input: none
- Output: player array
- Note:
keyboard entry to toggle player attributes (human, which AI) through the buttons and then refreshes the screen.  Once the start button is hit, modify the player array accordingly.

DrawGameBoard [AC/Jim]
- Preserves registers
- Input: player array
- Output: on-screen
- Note:
Draws the background with player data, title, etc.  The first four pieces are on the board and the starting score (2 each) is set.  Initializes turn graphic to the black player and initializes the board array to BLACK, WHITE, EMPTY, and BOUND where necessary.



MarkLegalMoves [David]
-All registers preserved
-Input: board (10x10) array, turn
-Output: board array, shortlist, # of moves in CX
-Note:
Iterates through the board array and determines the legal moves.  Marks legal spots in the board array with a 'legal' marker and records the offsets of legal moves into the 64-byte shortlist buffer.  Appends a string-termination character to the end of the shortlist. Outputs the number of legal moves (length of short list) in CX.

GetMove [Scott]
-Input: 10x10 array, shortlist, CX
-Output: DI - offset in 10x10 array that expresses a legal move.  If there are no legal moves, set DI to 0
-Notes:
If there are no legal moves (CX==0) then we simply return and the player is forced to pass.  If the player is a computer player, we just choose one of the offsets in shortlist based on the AI.  If it's a human, we do an input loop which monitors arrow keys (modifies the cursor which represents an offset in the board array) and if the move is legal, we execute it upon confirmation.  We will use kbdin from the class library and a jump table indexed by player[turn].

CheckEndgame [Scott]
-Registers: all preserved
-Input: DI
-Output: LastPlayerMoved
-Note:
If DI is zero after getMove, then we check to see if last player moved.  If not, the game is over.

CheckFlips [David]
-Registers: Preserves all registers
-Input: DI - move from GetMove
-Output: shortlist
-Note:
stores all offsets of the board array that hold pieces to-be-flipped.

Flip [Scott]
-Registers: Preserves all registers
-Input: DI - move from GetMove, shortlist
-Output: Board (10x10) array
-Notes:
changes values in board array to the correct color and places the destination piece in the board array _BOARD[DI].

GraphicalTransition [AC/Jim]
-Registers: Preserves all
-Input: DI - move from GetMove, shortlist
-Output: on-screen
-Note:
Shows the new piece (offset in DI) entering the board and the flipped pieces (in the shortlist) flip graphically.

ScoreKeep [Scott]
-Registers: Preserves all
-Input: Board array
-Output: score[0-1]
-Notes:
Counts the pieces in the board and modifies the score array.

DisplayScore [AC/Jim]
-Registers: Preserves all
-Input: score[0-1]
-Output: on-screen
-Note:
takes the values from the score array and puts them on-screen

ChangeTurn [AC/Jim]
-Registers: Preserves all
-Input: turn
-Output: turn
-Note:
changes the turn, which is just an XOR.  Also graphically indicates the change of turn (moves token to other player).