在启用主中断但未启用中断 (0xFF0F = 0) 的情况下进入 HALT 模式?
Entering HALT mode with master interrupt enabled but no Interrupt Enable (0xFF0F = 0)?
HALT mode is canceled by the following events, which have the starting addresses indicated.
A LOW signal to the /RESET terminal Starting address: 0x0000
The interrupt-enable flag and its corresponding interrupt request flag are set
IME = 0 (Interrupt Master Enable flag disabled)
Starting address: address following that of the HALT instruction
IME = 1 (Interrupt Master Enable flag enabled)
Starting address: each interrupt starting address
假设程序进入 HALT
模式并启用中断主控启用标志 IME = 1
并禁用任何中断的中断启用 0xFF0F = 0
,会发生什么情况?实际 Gameboy 设备上的预期行为是什么?
我不确定我是否理解你的问题,但无论如何:
根据引用的手册,IE
(中断启用)寄存器,地址 FFFF
,确定启用 5 种中断类型中的哪一种。如果 IME
(中断主机启用)设置为 1
,则仅接受设置为 1
的设置。
IF
(中断标志)寄存器,地址 FF0F
,仅提供请求中断的信息。
因此,如果程序处于 HALT
状态且 IME
= 1
,则接受在 IE
中启用的任何中断。当然,必须有人生成中断,这将由 IF
寄存器中的(或更多)1 指示。
编辑:
也许这现在可以回答您的问题:
如果程序进入 HALT 模式,Interrupt Master Enable 被启用(IME = 1),但是所有特定的中断类型被禁用(IE = 0),不会接受任何中断,并且不会离开 HALT 模式。这是设备上的预期行为。
HALT mode is canceled by the following events, which have the starting addresses indicated.
A LOW signal to the /RESET terminal Starting address: 0x0000
The interrupt-enable flag and its corresponding interrupt request flag are set
IME = 0 (Interrupt Master Enable flag disabled) Starting address: address following that of the HALT instruction
IME = 1 (Interrupt Master Enable flag enabled) Starting address: each interrupt starting address
假设程序进入 HALT
模式并启用中断主控启用标志 IME = 1
并禁用任何中断的中断启用 0xFF0F = 0
,会发生什么情况?实际 Gameboy 设备上的预期行为是什么?
我不确定我是否理解你的问题,但无论如何:
根据引用的手册,IE
(中断启用)寄存器,地址 FFFF
,确定启用 5 种中断类型中的哪一种。如果 IME
(中断主机启用)设置为 1
,则仅接受设置为 1
的设置。
IF
(中断标志)寄存器,地址 FF0F
,仅提供请求中断的信息。
因此,如果程序处于 HALT
状态且 IME
= 1
,则接受在 IE
中启用的任何中断。当然,必须有人生成中断,这将由 IF
寄存器中的(或更多)1 指示。
编辑:
也许这现在可以回答您的问题:
如果程序进入 HALT 模式,Interrupt Master Enable 被启用(IME = 1),但是所有特定的中断类型被禁用(IE = 0),不会接受任何中断,并且不会离开 HALT 模式。这是设备上的预期行为。