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
