2015-05-27 24 views
10

Secondo Gameboy Programming Manual,Immissione della modalità HALT con interrupt principale abilitato ma senza interrupt Enable (0xFF0F = 0)?

modalità HALT viene annullato dai seguenti eventi, che hanno indirizzi iniziali indicati. 0x0000

  • Il flag di interrupt-enable e il suo corrispondente bandiera richiesta di interrupt vengono impostati

    • IME = 0 (Interrupt Master:

      1. un segnale basso al terminale/RESET indirizzo di partenza Abilita flag disattivato) Indirizzo iniziale: indirizzo successivo a quello dell'istruzione HALT

      2. IME = 1 (Interrupt master Enable bandiera abilitata) Indirizzo iniziale: ciascun interrupt indirizzo di partenza

  • assuma un programma entra in modalità HALT con interrupt Maestro Abilita bandiera abilitato IME = 1 e loro abilitazione disattivata per qualsiasi interrupt 0xFF0F = 0, cosa accadrebbe? Qual è il comportamento previsto sul dispositivo Gameboy attuale?

    +0

    A proposito, se ti piace l'emulazione e pensi che domande come questa sarebbero più adatte per un sito di scambio di stack separato, ti preghiamo di dare un'occhiata a due proposte su Area 51 [Emulazione] (http: // area51. stackexchange.com/proposals/79736/emulation) e [Retrocomputing] (http://area51.stackexchange.com/proposals/74814/retrocomputing). – GabrielOshiro

    +0

    La [risposta corrente] (http://stackoverflow.com/a/30717825/3991344) soddisfa le tue esigenze? – Pokechu22

    +0

    @ pokechu22 no, non è così. – GabrielOshiro

    risposta

    3

    Non sono sicuro se ho capito la tua domanda giusta, ma in ogni caso:
    Secondo il manuale citato, il IE (Abilita interrupt) registrarsi, indirizzo FFFF, determina che uno dei tipi di interrupt 5 sono abilitati. Saranno accettati solo quelli impostati su 1 se IME (abilitazione interrupt master) è impostato su 1. Il registro IF (interrupt flag), indirizzo FF0F, fornisce solo informazioni su quali interrupt sono richiesti.
    Quindi, se un programma è nello stato HALT con IME = 1, viene accettato qualsiasi interrupt abilitato in IE. Naturalmente, qualcuno doveva generare le interruzioni che sarebbero state indicate da (o più) 1 nel registro IF.

    EDIT:

    Forse questo risponde alla tua domanda ora:
    Se il programma entra in modalità HALT, Interruzione Maestro Attiva è abilitato (IME = 1), ma tutti i tipi di interrupt specifici sono disabilitati (IE = 0), nessun interrupt sarà accettato e la modalità HALT non verrà lasciata. Questo è il comportamento previsto sul dispositivo.

    +0

    Grazie per averti dato il tempo di rispondere, tuttavia questa non è una risposta alla mia domanda. – GabrielOshiro

    +0

    Potresti dirmi, perché no? –