【问题标题】:Entering HALT mode with master interrupt enabled but no Interrupt Enable (0xFF0F = 0)?在启用主中断但未启用中断 (0xFF0F = 0) 的情况下进入 HALT 模式?
【发布时间】:2015-05-27 16:05:23
【问题描述】:

根据Gameboy Programming Manual

HALT 模式被以下事件取消,这些事件指示了起始地址。

  1. 到 /RESET 终端的低电平信号起始地址:0x0000

  2. 设置中断使能标志及其对应的中断请求标志

    • IME = 0(已禁用中断主机启用标志) 起始地址:HALT指令后面的地址

    • IME = 1(启用中断主机启用标志) 起始地址:每个中断起始地址

假设程序进入HALT 模式并启用中断主使能标志IME = 1 并禁用任何中断0xFF0F = 0 的中断启用,会发生什么?实际 Gameboy 设备上的预期行为是什么?

【问题讨论】:

  • 顺便说一句,如果你喜欢仿真并且你认为像这样的问题更适合单独的堆栈交换站点,请查看 51 区 Emulation 和 @ 的两个建议987654323@.
  • current answer 是否满足您的需求?
  • @pokechu22 不,它没有。
  • CPU 将永远停止,正如答案所述,就是这样。如果这不是答案,请编辑您的问题以更好地反映您真正想知道的内容。

标签: interrupt emulation device-emulation halt gameboy


【解决方案1】:

我不确定我是否理解您的问题,但无论如何:
根据引用的手册,IE(中断启用)寄存器,地址FFFF,确定启用 5 种中断类型中的哪一种。如果IME(中断主机启用)设置为1,则仅接受设置为1 的那些。 IF(中断标志)寄存器,地址FF0F,仅提供请求中断的信息。
因此,如果程序处于HALT 状态且IME = 1,则接受IE 中启用的任何中断。当然,必须有人生成由IF 寄存器中的(或更多)1 指示的中断。

编辑:

也许这现在可以回答您的问题:
如果程序进入 HALT 模式,使能中断主机使能(IME = 1),但禁止所有特定的中断类型(IE = 0),不接受任何中断,也不会离开 HALT 模式。这是设备上的预期行为。

【讨论】:

  • 感谢您抽出宝贵时间回答,但这不是我的问题的答案。
  • 你能告诉我,为什么不?
  • 对不起@Reinhard Männer 我没有看到你的编辑。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-09-19
  • 2015-06-01
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多