/********************************************
 * stack - Software Stack Functions for C02 *
 ********************************************/

/* Add to Stack Pointer Address     *
 *   Internal Utility Function      *
 * Args: b - Number of Bytes to Add */
void stkadd();

/* Set Stack Start Address     *
 * Args: &addr - Start Address */
void stkbgn();

/* Decrement Stack Pointer Address *
 *   Internal Utility Function     */
void stkdec();

/* Drop Top Entry from Stack             * 
 * Returns: A=Number of bytes dropped    *
 *            0 if none                  */
char stkdrp();

/* Set Destination to Stack Pointer  *
 * Returns: Y,X=Pointer Address      */
void stkdst();

/* Set Stack End Address     *
 * Args: &addr - End Address */
void stkend();

/* Increment Stack Pointer Address *
 *   Internal Utility Function     */
void stkinc();

/* Pop Top Stack Entry into Array        * 
 * Args: n  - Number of bytes to write   *
 *       &m - Array to pop contents into *
 * Returns: A=Number of bytes retrieved  *
 *            0 if none                  */
char stkpop();

/* Push Array Contents onto Stack             * 
 * Args: n  - Number of bytes to write        *
 *       &m - Array containing bytes to push  *
 * Returns: A=$FF if bytes were written       *
 *            $00 if block was overflowed     */
char stkpsh();

/* Get Stack Pointer Address    *
 * Returns: Y,X=Pointer Address */
void stkptr();

/* Restore Stack Pointer Address *
 *   Internal Utility Function   */
void stkrsp();

/* Reset Stack Pointer to Stack Start *
 * Returns: Y,X=Pointer Address       */
void stkrst();

/* Set Stack Pointer Address     *
 *   Internal Utility Function   *
 * Args: &addr - Pointer Address */
void stkset();

/* Save Stack Pointer Address  *
 *   Internal Utility Function */
void stkssp();

/* Get Stack Size                        *
 * Returns: A=$FF if size greater than 0 *
 *            $00 if stack is empty      *
 *        Y,X=Stack size in bytes        */
void stksiz();

/* Subtract from Stack Pointer Address   *
 *   Internal Utility Function           *
 * Args: b - Number of Bytes to Subtract */
void stksub();
