tebe: wątpię, czy Ci się to opłaci, ze względu na konieczność odświeżania POKEYa na każdym przerwaniu, co kosztuje dużo czasu w stosunku do czasu trwania jednej linii. Mnie się udała wersja minimalna (wystarczy jedno DEC ^2E), ale działa tylko w szczególnych warunkach. W sumie 14 cykli na start i powrót z przerwania, 6 cykli na DEC, 5 na przechowanie i odtworzenie akumulatora, to już 25 cykli, więc w pustej linii poza obrazem zostaje ci 80, oczywiście pod warunkiem, że przerwanie jest uruchamiane przez wektor sprzętowy ($FFFE)!
Jeśli chodzi o inicjalizację, to poniższy fragment powinien działać, jeśli oczywiście niczego nie pominąłem przy kopiowaniu, bo było dość porozrzucane:
sei
lda #0
sta ^21
sta ^29
sta ^2e
mva #%01000000 ^28
mva #period ^20
mwa #IRQ $fffe
mva #1 ^2e
cli
Zegar POKEYa jest tu przestawiany na częstotliwość ZTCW tę samą, co CPU, więc jeżeli właściwy okres licznika to wartość "period"+1, powinno być 113, żeby szło co linię. Nie testowałem, więc mówię - nie bić, jeśli się mylę.
No i oczywiście brakuje tutaj stworzenia pewnych specyficznych warunków, o których była mowa powyżej, ale tu muszę się przyznać, że nie wiem dokładnie w jaki sposób należy tego dokonać. :P Skutecznie natomiast robi to SIO, próbując dostać się do urządzenia, które nie odpowiada. ;)
Proponuję jeszcze przenieść ten wątek do fabryki, programowania, gier... W każdym razie robi się tu zbyt poważnie, jak na bałagan. ;)