We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
RETI (SPC700): Difference between revisions
From SnesLab
(moved tables up) |
(linkify interrupt handler) |
||
(18 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{| class="wikitable" style="float:right;clear:right;width: | {| class="wikitable" style="float:right;clear:right;width:40%" | ||
!colspan="8"|Basic Info | !colspan="8"|Basic Info | ||
|+ | |+ | ||
Line 7: | Line 7: | ||
|'''Speed''' | |'''Speed''' | ||
|+ | |+ | ||
| | |[[Stack Addressing | Stack]] | ||
|7F | |7F | ||
|1 byte | |1 byte | ||
Line 14: | Line 14: | ||
{| class="wikitable" style="float:right;clear:right;width:30%" | {| class="wikitable" style="float:right;clear:right;width:30%" | ||
!colspan="8"|Flags | !colspan="8"|Flags Affected | ||
|+ | |||
|[[Negative Flag|N]] | |||
|[[Overflow Flag|V]] | |||
|[[Direct Page Flag|P]] | |||
|[[Break Flag|B]] | |||
|[[Half-Carry Flag|H]] | |||
|[[Interrupt Enable Flag|I]] | |||
|[[Zero Flag|Z]] | |||
|[[Carry Flag|C]] | |||
|+ | |+ | ||
|N | |N | ||
Line 24: | Line 33: | ||
|Z | |Z | ||
|C | |C | ||
|} | |} | ||
'''RETI''' (RETurn from Interrupt) is an [[SPC700]] instruction that returns from an interrupt. All | '''RETI''' (RETurn from Interrupt) is an [[SPC700]] instruction that returns from an [[interrupt handler]]. All [[program status word]] flags are popped off the [[stack]] and restored. The [[program counter]] is also popped from the stack. | ||
As the S-SMP has no hardware interrupt sources, this generally means returning from a [[BRK (SPC700)|BRK]]. | |||
==== Syntax ==== | |||
<pre> | |||
RETI | |||
</pre> | |||
=== See Also === | === See Also === | ||
* [[EI]] | |||
* [[DI]] | |||
* [[RET]] | * [[RET]] | ||
* [[RTI]] | |||
* [[RTS]] | * [[RTS]] | ||
* [[RTL]] | |||
=== References === | === References === | ||
* [https://archive.org/details/SNESDevManual/book1/page/n234 Appendix C-9 of Book I] of the official Super Nintendo development manual | * Table C-16 in [https://archive.org/details/SNESDevManual/book1/page/n234 Appendix C-9 of Book I] of the official Super Nintendo development manual | ||
* anomie: https://github.com/yupferris/TasmShiz/blob/master/spc700.txt#L547 | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:SPC700]] | [[Category:SPC700]] | ||
[[Category:Subroutine Call Return Commands]] | |||
[[Category:One-byte Instructions]] |
Latest revision as of 19:25, 4 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Stack | 7F | 1 byte | 6 cycles |
Flags Affected | |||||||
---|---|---|---|---|---|---|---|
N | V | P | B | H | I | Z | C |
N | V | P | B | H | I | Z | C |
RETI (RETurn from Interrupt) is an SPC700 instruction that returns from an interrupt handler. All program status word flags are popped off the stack and restored. The program counter is also popped from the stack.
As the S-SMP has no hardware interrupt sources, this generally means returning from a BRK.
Syntax
RETI
See Also
References
- Table C-16 in Appendix C-9 of Book I of the official Super Nintendo development manual
- anomie: https://github.com/yupferris/TasmShiz/blob/master/spc700.txt#L547