Подтвердить что ты не робот

Вход в режим HALT с включенным основным прерыванием, но без разрешения прерывания (0xFF0F = 0)?

Согласно Руководству по программированию Gameboy,

Режим HALT отменяется следующими событиями, на которых указаны начальные адреса.

  • Сигнал LOW к терминалу / RESET Начальный адрес: 0x0000

  • Флаг включения прерывания и соответствующий ему флаг запроса прерывания установлены

    • IME = 0 (флаг прерывания Master Enable отключен) Начальный адрес: адрес, следующий за инструкцией HALT

    • IME = 1 (флаг включения прерывания Master включен) Начальный адрес: каждый начальный адрес прерывания

Предположим, что программа переходит в режим HALT с включенным флагом прерывания Master IME = 1 и отключением прерывания для любого прерывания 0xFF0F = 0, что произойдет? Каково ожидаемое поведение на самом устройстве Gameboy?

4b9b3361

Ответ 1

Я не уверен, правильно ли понимаю ваш вопрос, но так или иначе:
Согласно приведенному руководству, регистр IE (прерывание прерывания), адрес FFFF, определяет, какой из 5 типов прерываний включен. Только те, которые установлены в 1, будут приняты, если IME (разрешение прерывания) установлено на 1. Регистр IF (флаги прерываний), адрес FF0F, предоставляет только информацию, которую запрашивают прерывания.
Итак, если программа находится в состоянии HALT с IME= 1, любое прерывание принимается, которое включено в IE. Конечно, кто-то должен был генерировать прерывание (прерывания), которое было бы указано (или больше) 1 в регистре IF.

ИЗМЕНИТЬ:

Возможно, это ответит на ваш вопрос сейчас:
Если программа переходит в режим HALT, включена функция прерывания Master Enable (IME = 1), но все типы прерываний отключены (IE = 0), прерывание не будет принято, а режим HALT не будет оставлен. Это ожидаемое поведение на устройстве.