/******************************************** * stack - Software Stack Functions for C02 * ********************************************/ /* Drop Top Entry from Stack * * Returns: A=Number of bytes dropped * * 0 if none */ char stkdrp(); /* Duplicate Top Stack Entry * * Returns: A=Number of bytes retrieved * * 0 if none or overflow */ char stkdup(); /* Duplicate Entry Under Top of Stack * * Returns: A=Number of bytes retrieved * * 0 if none or overflow */ char stkovr(); /* 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(); /* Reset Stack Pointer to Stack Start * * Returns: Y,X=Pointer Address */ void stkrst(); /* Get Stack Size * * Returns: A=$FF if size greater than 0 * * $00 if stack is empty * * Y,X=Stack size in bytes */ void stksiz(); /* Push String onto Stack * * Args: &m - String to push * * Returns: A=$FF if bytes were written * * $00 if block was overflowed */ char stkstr(); /* Swap Top and Second Stack Entries * * Returns: A=Number of bytes in new top * * 0 if none or overflow */ char stkswp(); /* Copy 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 stktop();