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