We will first discuss the context data structure that must be created prior to any calls to a BlockSolve routine. We will then describe the data structures that contain the user's sparse matrix. These data structures must exist on every process that will be calling BlockSolve. Finally, we will discuss the various BlockSolve subroutines that can be called to manipulate and solve sparse linear systems. All subroutine and data structure names in BlockSolve are prefixed by either ``BS'' or ``BM.'' Included with the BlockSolve software are examples that demonstrate the use of BlockSolve.