Strona 1 z 1

przerwania

: 15 mar 2012, 15:55
autor: at0mic
Witam,

zauważyłem że są różne sposoby na korzystanie z przerwań IRQ (nie biorę pod uwagę źródła VIC czy CIA czy cokolwiek innego tylko procedurę)


1. wpisywanie wektora pod $03414 $0315 i skok JMP$EA31

2 wpisywanie wektora pod $03414 $0315 i PLA TAY PLA TAX PLA +RTI

3 wpisywanie wektora pod $FFFE $FFFF wyłaczanie romu przez $0001

na początku procedury (spod adresu z wektora IRQ) PLA TXA PLA TYA PLA (potem program wykonywany przerwaniem) i PLA TAY PLA TAX PLA +RTI

rozumiem że trzecim sposobem mam więcej pamięci na program albo grafikę a do czego i dlaczego są stosowane 1. i 2. ?

Czy są jeszcze inne sposoby na przerwania ?

domyślam się że stos jest używany do tego aby nie stracić wątku (wartości rejestrów) w programie z którego procesor będzie wyrwany sygnałem przerwania do obsługi programu przypisanego do wektora przerwerwań ale czy ma to jakieś znaczenie kiedy po CLI następuje zapętlenie JMP i tu wartość rejestrów nie jest modyfikowana ?

: 15 mar 2012, 16:09
autor: skull
polecam artykuł z c&a fan 7 (swojego autorstwa)

Re: przerwania

: 16 mar 2012, 16:15
autor: brush
at0mic pisze:Witam,
1. wpisywanie wektora pod $03414 $0315 i skok JMP$EA31

2 wpisywanie wektora pod $03414 $0315 i PLA TAY PLA TAX PLA +RTI

3 wpisywanie wektora pod $FFFE $FFFF wyłaczanie romu przez $0001

Czy są jeszcze inne sposoby na przerwania ?
To wszystko jedno i to samo. Po prostu przerwania zawsze wywołują wektor zapisany pod $fffe/ff. Tylko jak masz włączony ROM to tam jest adres procedury obsługi IRQ z ROMu, która z kolei wywołuje procedurę uzytkownika której wektore jest $0314/15.

Co do opcji 1/2 to to takze jest to samo zrób sobie disasemblacje co masz w romie pod adresem $EA31. Bodajże tylko ea31 zawiera jeszcze obsługę odczytu klawiatury, więc jak nie potrzebujesz bufora klawiature etc. to wersja z RTI jest szybsza.

Do co zapisywania na stosie i pobierania potem rejestrów to faktycznie w wypadku gdy tylko w głownym programie się w kółko petlisz to to nie ma znaczenia.
W każdym innym już ma :)

: 16 mar 2012, 18:04
autor: at0mic
dzięki za pomoc!


ten artykuł który napisał Skull - (masz łeb jak sklep), ja wymiękam, już kiedyś go czytałem ale pamięć mi trochę przyprószyło mgłą zapomnienia więc dzisiaj siedziałem na tym jakieś 3 godziny. Wszystko rozumiem do miejsca gdzie są NMI razem z IRQ mieszane - teoria niby też zrozumiała ale w kodzie się gubię i po 10 razy sprawdzać muszę co jaki bit w której komórce CIA ma robić a i tak chyba za trudne jest dla mnie dodawanie i odejmowanie jak dochodzi samo-modyfikujący się kod ze skokami warunkowymi.

Jeszcze ze 20 razy to przeczytam + trochę eksperymentów i może załapię.

: 15 kwie 2012, 21:03
autor: wegi
Do tych eksperymentów polecam Ci monitor/debugger z hoxs'a - pokazuje w której linii rastra wykonuje się kod, w którym cyklu linii jest on wykonywany, możliwość krokowej pracy, cyklowej, widoczny stan rejestrów, znaczników, wywołanie debuggera w momencie wzbudzenia IRQ/NMI