2015-05-27 11 views
10

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

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

  1. НИЗКИЙ сигнал на/RESET терминала Начальный адрес: 0x0000

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

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

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

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

+0

Кстати, если вам нравится эмуляция, и вы думаете, что такие вопросы, как этот, более подходят для отдельного сайта обмена стеками, пожалуйста, взгляните на два предложения по Area 51 [Emulation] (http: // area51. stackexchange.com/proposals/79736/emulation) и [Retrocomputing] (http://area51.stackexchange.com/proposals/74814/retrocomputing). – GabrielOshiro

+0

Соответствует ли ваш [текущий ответ] (http://stackoverflow.com/a/30717825/3991344) вашим потребностям? – Pokechu22

+0

@ pokechu22 нет, нет. – GabrielOshiro

ответ

3

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

EDIT:

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

+0

Спасибо, что нашли время ответить, однако это не ответ на мой вопрос. – GabrielOshiro

+0

Не могли бы вы рассказать мне, почему бы и нет? –