Programowanie: Odczyt sygnatury rozkazu BRK lub COP na 65C816
From Atariki
(Różnice między wersjami)
Wersja z dnia 20:18, 6 wrz 2017 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 22:50, 6 wrz 2017 KMK (Dyskusja | wkład) (zapomniane dyrektywy) Next diff → |
||
Linia 4: | Linia 4: | ||
rep #$10 ;X/Y 16-bit | rep #$10 ;X/Y 16-bit | ||
sep #$20 ;A 8-bit | sep #$20 ;A 8-bit | ||
+ | .iw | ||
+ | .ab | ||
phb ;zachowaj bieżący DBR | phb ;zachowaj bieżący DBR | ||
lda 5,s ;pobierz najstarszy bajt 24-bitowego PC ze stosu | lda 5,s ;pobierz najstarszy bajt 24-bitowego PC ze stosu |
Wersja z dnia 22:50, 6 wrz 2017
Procedura obsługi przerwania BRK lub COP odczytuje tzw. sygnaturę rozkazu - czyli drugi bajt kodu operacyjnego, stanowiący parametr rozkazu. Rozwiązanie dla trybu natywnego 65C816 zaproponował Andy Werner.
rep #$10 ;X/Y 16-bit sep #$20 ;A 8-bit .iw .ab phb ;zachowaj bieżący DBR lda 5,s ;pobierz najstarszy bajt 24-bitowego PC ze stosu dec ;zmniejsz o 1 pha ;odłóż na stos plb ;pobierz tę wartość do DBR ldy #0xffff ;adresowanie z przekroczeniem granicy segmentu 64k lda (3,s),y ;pobierz sygnaturę do akumulatora plb ;przywróć DBR ... ;tu dalsza część kodu