We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS

WAI: Difference between revisions

From SnesLab
Jump to: navigation, search
(bus is freed up)
 
(12 intermediate revisions by the same user not shown)
Line 16: Line 16:
!colspan="9"|Flags Affected
!colspan="9"|Flags Affected
|+
|+
|N
|[[Negative Flag|N]]
|V
|[[Overflow Flag|V]]
|M
|[[M Flag|M]]
|X
|[[X Flag|X]]
|D
|[[Decimal Flag|D]]
|I
|[[I Flag|I]]
|Z
|[[Zero Flag|Z]]
|C
|[[Carry Flag|C]]
|+
|+
|.
|.
Line 35: Line 35:
|}
|}


'''WAI''' (WAit for Interrupt) is a 65x instruction that waits until an interrupt is received.  The processor consumes less power while waiting.  The [[RDY pin]] is pulled low.
'''WAI''' (WAit for Interrupt) is a 65x instruction that waits until an interrupt is received.  The processor consumes less power while waiting.  The [[RDY pin]] is pulled low during the third cycle and the bus is freed up.  The interrupt is serviced immediately.
 
If the [[interrupt disable flag]] is set, then the way servicing occurs is for control to simply fall through to the instruction following WAI.
 
If that flag clear, control instead goes into the [[interrupt handler]].


=== See Also ===
=== See Also ===
* [[IRQ]]
* [[RTI]]
* [[RTI]]
* [[STP]]
* [[STP]]
* [[NOP]]
* [[NOP]]
* [[SLEEP]]
* [[SLEEP]]
* [[BE]]
* [[Interrupt Disable Flag]]
* [[SEI]]
* [[CLI]]


=== External Links ===
=== External Links ===
* [[Eyes & Lichty]] page 522, on WAI: https://archive.org/details/0893037893ProgrammingThe65816/page/n548
* [[Eyes & Lichty]] page 522, on WAI: https://archive.org/details/0893037893ProgrammingThe65816/page/n548
* [[Labiak]] page on WAI: https://archive.org/details/Programming_the_65816/page/n213
* [[Labiak]] page 203 on WAI: https://archive.org/details/Programming_the_65816/page/n213
* snes9x implementation of WAI: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L3313
* snes9x implementation of WAI: https://github.com/snes9xgit/snes9x/blob/master/cpuops.cpp#L3313
* undisbeliever on WAI: https://undisbeliever.net/snesdev/65816-opcodes.html#wai-wait-for-interrupt
* undisbeliever on WAI: https://undisbeliever.net/snesdev/65816-opcodes.html#wai-wait-for-interrupt
Line 51: Line 60:
[[Category:ASM]]
[[Category:ASM]]
[[Category:65c02 additions]]
[[Category:65c02 additions]]
[[Category:One-byte Instructions]]
[[Category:Control Instructions]]
[[Category:Implied Instructions]]
[[Category:Three-cycle Instructions]]

Latest revision as of 14:03, 14 December 2023

Basic Info
Addressing Mode Opcode Length Speed
Implied (type 3) CB 1 byte 3 cycles
Flags Affected
N V M X D I Z C
. . . . . . . .

WAI (WAit for Interrupt) is a 65x instruction that waits until an interrupt is received. The processor consumes less power while waiting. The RDY pin is pulled low during the third cycle and the bus is freed up. The interrupt is serviced immediately.

If the interrupt disable flag is set, then the way servicing occurs is for control to simply fall through to the instruction following WAI.

If that flag clear, control instead goes into the interrupt handler.

See Also

External Links