Last year, I did quite a bit of thinking on the maintenance of software stacks in a C128. You can use more than one page for your stack and still take advantage of hardware-assisted stack access if you use either a stack sniffer, or paranoid sanity-checking on every PUSH and POP operation (or, as a less time-consuming third alternative, on major routine entrances and exits), in order to adjust the S register and where the MMU thinks the stack is whenever S gets too close to 0 or to 255. Alternatively, you can do the whole thing in software; your stack would be as big as you please and PUSH and POP operations would be library routines instead of single machine instructions. Obviously, that would be a lot more flexible, but also probably an order of magnitude slower.
The world’s only gsteemso
Agitator-in-chief for the Seattle Retro-Computing Society