Programowanie: Odczyt sygnatury rozkazu BRK lub COP na 65C816
From Atariki
(Różnice między wersjami)
Wersja z dnia 15:17, 7 wrz 2017 KMK (Dyskusja | wkład) (tak to jest z copy/paste) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) |
||
Linia 11: | Linia 11: | ||
pha ;odłóż na stos | pha ;odłóż na stos | ||
plb ;pobierz tę wartość do DBR | plb ;pobierz tę wartość do DBR | ||
- | ldy #$ffff ;adresowanie z przekroczeniem granicy segmentu 64k | + | ldy #$ffff ;adresowanie z przekroczeniem granicy segmentu 64k |
lda (3,s),y ;pobierz sygnaturę do akumulatora | lda (3,s),y ;pobierz sygnaturę do akumulatora | ||
plb ;przywróć DBR | plb ;przywróć DBR |
Aktualna wersja
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 #$ffff ;adresowanie z przekroczeniem granicy segmentu 64k lda (3,s),y ;pobierz sygnaturę do akumulatora plb ;przywróć DBR ... ;tu dalsza część kodu