Difference between revisions of "84PCE:Ports:003A"
From WikiTI
(Created page with "003A - Stack Protector Stack Protector == Synopsis == '''Port Number:''' 003A-003C '''Function:''' Stack...") |
|||
(3 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
'''Function:''' Stack Protector Ports | '''Function:''' Stack Protector Ports | ||
− | This range of ports holds the location of the bottom of the stack. When the | + | This range of ports holds the location of the bottom of the stack (LSB in 3A, MSB in 3C). When the byte at this address (the OS sets it to D19881 by default) is written to, the write affects memory and a non-maskable interrupt is generated (regardless of whether the code is privileged) which resets the calculator, clearing all of RAM. This could potentially have uses such as a hardware write breakpoint in z80 mode. |
==Example== | ==Example== |
Latest revision as of 20:35, 26 August 2016
Synopsis
Port Number: 003A-003C
Function: Stack Protector Ports
This range of ports holds the location of the bottom of the stack (LSB in 3A, MSB in 3C). When the byte at this address (the OS sets it to D19881 by default) is written to, the write affects memory and a non-maskable interrupt is generated (regardless of whether the code is privileged) which resets the calculator, clearing all of RAM. This could potentially have uses such as a hardware write breakpoint in z80 mode.
Example
Since the stack protector is extremely simple, this equally simple program will cause a crash.
ld (0D19881h),a ret