/******************************************** * 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();