1
0
mirror of https://github.com/RevCurtisP/C02.git synced 2024-11-25 06:31:25 +00:00
C02/include/stack.h02
2018-09-23 18:39:27 -04:00

80 lines
2.1 KiB
Plaintext

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