使用主中断使能但没有中断使能的情况下进入HALT模式(0xFF0F = 0)?

10
根据Gameboy编程手册,HALT模式可被以下事件取消,这些事件具有指定的起始地址:
1. /RESET引脚为低电平信号。起始地址:0x0000 2. 中断使能标志及其相应中断请求标志被设置。
- IME = 0 (禁用中断主控制开关)。起始地址:紧随HALT指令之后的地址。 - IME = 1 (启用中断主控制开关)。每个中断的起始地址。
假设程序以启用任何中断的中断使能为0xFF0F=0的情况进入HALT模式,而中断主控制开关为IME=1,那么会发生什么?在实际Gameboy设备上会出现什么预期行为?

顺便说一下,如果您喜欢模拟,并且认为像这样的问题更适合单独的堆栈交换站点,请查看Area 51上的两个提案EmulationRetrocomputing - GabrielOshiro
这个当前答案是否符合您的需求? - Pokechu22
@pokechu22 不,它没有。 - GabrielOshiro
CPU会永久停止,正如答案所述。如果这不是您想要知道的答案,请编辑您的问题以更好地反映您实际想要了解的内容。 - creker
1个回答

2
根据引用的手册,地址为FFFF的“IE”(中断使能)寄存器确定启用了5种中断类型中的哪一种。仅在“IME”(中断主使能)设置为“1”的情况下,被设置为“1”的中断才会被接受。地址为FF0F的“IF”(中断标志)寄存器仅提供哪些中断被请求的信息。
因此,如果程序处于“HALT”状态且“IME” = “1”,则将接受启用在“IE”中的任何中断。当然,某人必须生成中断,这将由“IF”寄存器中的1(或多个1)指示。
编辑:
也许现在这回答您的问题:如果程序进入“HALT”模式,则中断主使能被启用(IME = 1),但所有特定的中断类型都被禁用(IE = 0),则不会接受任何中断,且不会离开“HALT”模式。这是设备的预期行为。

感谢您抽出时间回答,但是这并不是我问题的答案。 - GabrielOshiro
请问您能告诉我,为什么不行吗? - Reinhard Männer
抱歉@Reinhard Männer,我没有看到你的编辑。谢谢! - GabrielOshiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接