Programowanie: Odczyt sygnatury rozkazu BRK lub COP na 65C816

From Atariki

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