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

时间:2015-05-27 16:05:24

标签: interrupt emulation device-emulation halt gameboy

根据Gameboy Programming Manual

  

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

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

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

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

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

    •   
  4.   

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

1 个答案:

答案 0 :(得分:3)

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

编辑:

现在也许这会回答你的问题:
如果程序进入HALT模式,则允许中断主控使能(IME = 1),但禁止所有特定的中断类型(IE = 0),不接受中断,也不保留HALT模式。这是设备上的预期行为。