2015-05-27 32 views
10

Nach Gameboy Programming Manual,Aufruf des HALT-Modus mit aktiviertem Master-Interrupt, aber keine Interrupt-Freigabe (0xFF0F = 0)?

HALT-Modus wird durch die folgenden Ereignisse abgebrochen, die die Ausgangsadressen angegeben haben.

  1. A LOW Signal an den/RESET-Anschluß Startadresse: 0x0000

  2. Der Unterbrechungsfreigabe-Flag und die entsprechende Flagge Unterbrechungsanforderung wird

      gesetzt
    • IME = 0 (Interrupt-Master Enable-Flag deaktiviert) Anfangsadresse: Adresse, die der HALT-Anweisung folgt

    • IME = 1 (Interrupt-Master-Entsperrung Flag aktiviert) Startadresse: Jede Unterbrechungsadresse beginnend

Angenommen, ein Programm HALT Modus mit Interrupt-Master tritt Aktivieren Flag aktiviert IME = 1 und Interrupt deaktiviert Freigabe für jeden 0xFF0F = 0 unterbrechen, was würde passieren? Was ist das erwartete Verhalten auf dem Gameboy Gerät?

+0

By the way, wenn Sie Emulation mögen und Sie denken, dass Fragen wie diese für einen separaten Stapelaustausch Standort besser geeignet wäre, nehmen Sie bitte einen Blick auf zwei Vorschläge auf Area 51 [Emulation] (http: // area51. stackexchange.com/proposals/79736/emulation) und [Retrocomputing] (http://area51.stackexchange.com/proposals/74814/retrocomputing). – GabrielOshiro

+0

Ist die [aktuelle Antwort] (http://stackoverflow.com/a/30717825/3991344) Ihre Bedürfnisse? – Pokechu22

+0

@ Pokechu22 Nein, tut es nicht. – GabrielOshiro

Antwort

3

Ich bin nicht sicher, ob ich Ihre Frage richtig verstanden, aber trotzdem:
Nach dem zitierten Handbuch, das IE (Interrupt aktiviert) registrieren, Adresse FFFF, bestimmt, welche eine der 5 Interrupt-Typen aktiviert ist. Nur akzeptiert diejenigen auf 1 werden, wenn IME (Interrupt-Master aktivieren) auf 1 gesetzt Ist. Der IF (Interrupt-Flags) registrieren, Adresse FF0F liefert lediglich Informationen, die Interrupts angefordert werden.
Wenn also ein Programm im HALT-Status mit IME = 1 ist, wird jeder Interrupt akzeptiert, der in IE aktiviert ist. Natürlich musste jemand die Unterbrechung (en) erzeugen, die durch eine (oder mehr) 1 im IF Register angezeigt werden würde.

EDIT:

Vielleicht beantwortet Ihre Frage ist nun:
Wenn das Programm HALT-Modus eintritt, aktivieren Interrupt-Master aktiviert ist (IME = 1), aber alle spezifischen Interrupt-Typen sind deaktiviert (IE = 0), Kein Interrupt wird akzeptiert, und der HALT-Modus wird nicht verlassen. Dies ist das erwartete Verhalten auf dem Gerät.

+0

Vielen Dank, dass Sie sich Zeit genommen haben zu antworten, aber dies ist keine Antwort auf meine Frage. – GabrielOshiro

+0

Können Sie mir bitte sagen, warum nicht? –