Je suis en train de passer le flux normal du programme tandis qu'un rendement d'interruption:modifié 6502 Interrompre retour
START
SEI
LDX #<IRQ
LDY #>IRQ
STX $FFFE
STY $FFFF
CLI
LOOP1
INC $D020
JMP LOOP1
LOOP2
INC $D021
JMP LOOP2
IRQ
STA SAVEA+1
STX SAVEX+1
STY SAVEY+1
// Some Routines
LDA #$00
PHA
LDA #<LOOP2
PHA
LDA #>LOOP2
PHA
SAVEA
LDA #$00
SAVEX
LDX #$00
SAVEY
LDY #$00
RTI
J'ai écrit ce code, mené selon cette source: http://6502.org/tutorials/interrupts.html#1.3
Mais la cause de PHA crash, comment passer le flux normal LOOP1 à LOOP2 dans une interruption?
@DavidHoelzer vous avez mal compris le code, cette partie est mise juste les interruptions et les deux boucles sont les deux processus qu'il veut programmer. Cela dit, désactiver d'autres interruptions dans le gestionnaire semble être une bonne idée. En outre, les éléments sauvegardés déjà sur la pile doivent être supprimés, sinon vous aurez un débordement de pile si vous continuez simplement à pousser les choses. L'ordre semble également faux, vous devez utiliser le même que sur le diagramme. – Jester
Oh oui, vous avez raison. J'ai négligé le < and > pour le code IRQ. Cela fait longtemps. :) –
Il n'est pas clair si vous essayez de manipuler le contenu de la pile ou d'écrire du code auto-modifiable. Vous avez activé une nouvelle adresse de retour, mais la précédente est toujours présente. Vous allez rapidement manquer de pile. Je suggère "PHA; TXA; PHA; TSX' puis en modifiant l'adresse de retour empilée en indexant 'X', avant de restaurer les registres et de faire un' RTI'. –