Processor state is saved on the stack when changes in program flow occur. The 68HC05 has a 64-byte hardware-controlled stack. Reset initializes the stack pointer to $00FF; the RSP instruction does the same. No other instructions allow direct user manipulation of the stack.
When a byte is 'pushed' onto the stack, it is written to the location pointed to by the stack pointer, and then the stack pointer is decremented by one. When a byte is 'pulled' from the stack, the stack pointer is incremented by one, and the location pointed to by the stack pointer is then read.
When the stack pointer is at $00C0, the next push will store a byte at $00C0 and roll the stack pointer to $00FF. This is stack pointer overflow. Subsequent pushes will overwrite information stored on the stack from $00FF on down. Similarly, underflow occurs when the stack pointer is at $00FF and the next pull rolls the stack pointer to $00C0 and reads the byte there.
Subroutines called with the BSR and JSR instructions save a two byte return address on the stack. Interrupts save a two byte return address, the index register, the accumulator, and the condition code register.
The examples above show how subroutine calls and interrupts and their respective return instructions affect the stack.