Programowanie: Odczyt sygnatury rozkazu BRK lub COP na 65C816

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
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
Personal tools