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).