C64Power Forum
Ogólne => Forum Ogólnodyskusyjne => Wątek zaczęty przez: Tomaaz w 06 Lipca 2009, 17:56
-
Czy ktoś mógłby mi pokrótce przypomnieć najważniejsze informacje dotyczące obsługi wszystkich typów przerwań? Z góry dziękuję!
-
zacznij od irq w vic-ii,najprostsze. uruchamiasz w d01a,linie na poczatku ktorej ma wystartowac wybierasz w d012 (i najwyzszym bicie d011 bo mamy wiecej niz $ff linii),potwierdzasz wykonanie w d019. sei/cli uzywasz do maskowania przerwan na przyklad na czas ustawiania parametrow przerwania. w punkcie 3.12 artykulu o vic-ii jest wiecej informacji: http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt
-
No to żeś mi jasno, klarownie i konkretnie przypomniał. :) W każdym razie - dzięki za linka! A może ktoś jeszcze coś dorzuci?
-
tutaj: http://www.codebase64.org/doku.php?id=base:introduction_to_raster_irqs
-
To co moim zdaniem jest zbyt często pomijane to źródła przerwań oraz rola układów CIA. Samo IRQ może mieć kilka źródeł np. rozkaz BRK - polecam deasemblację Kernela.
Jest jeszcze przerwanie NMI które pomimo swojej nazwy może zostać zablokowane.
-
stawiam, że klawisza restore zablokować się nie da
http://c64scene.pl/viewtopic.php?t=159
-
Zależy co rozumiesz przez \'zablokować\'. Samego klawisza faktycznie nie zablokujesz, ale przerwanie NMI można zablokować i robi się to bardzo prosto (chociaż nie tak jak w przypadku IRQ tylko rozkazem SEI).
Blokowanie NMI polega na użyciu timera CIA aby wyzwolić NMI a następnie go nie potwierdzić (ACK). Prawdą jest że 6502 i jego różne wersje nie mają potwierdzenia przerwań, ale Komodorek nie składa się tylko z procesora. W tym przypadku za potwierdzenie odpowiada układ CIA. Dodam jeszcze że są 2 wersje tego układu (6526 i 6526A) które mają jedną istotną różnicę: NMI jest wywoływane jeden cykl później lub wcześniej w zależności od wersji.
Sensowność blokowania NMI także jest niepodważalna ;) Po pierwsze w przypadku operacji krytycznych czasowo pozwala to chronić przed nieprzewidzianym przerwaniem. Po drugie trick ten jest stosowany w niektórych zabezpieczeniach przed kopiowaniem (a raczej opcją typu freeze) chociaż AR i jego klony oraz nowsze wersje (RR i MMC Replay) działają bez problemu nawet bez przerwań IRQ i NMI (BRK nie liczę bo rozkaz ten zawsze kończy się wywołaniem IRQ). Także Expert sobie poradzi bo zostanie uaktywniony (jeśli jest włączony). Jeśli nie to lampka ESM sygnalizuje że trzeba potwierdzić przerwanie przyciskiem ESM.
Generalnie to jedna z pozaciekawszy IMHO funkcji układów CIA wokół której narosło wiele legend i nieporozumień.
-
tyle napisałeś i nic z tego nie wynika. NMI,jak sama nazwa wskazuje, nie da się zblokować. Reszta zdań jest bełkotem, wystarczy wcisnąć reset w actione i potem restore aby się przekonać jak on działa.
-
W obrażaniu jesteś super :)
Żeby nie było że znów coś napisałem nie tak dla innych wielkich znawców C64 to podaję źródła ogólnie dostępne:
http://codebase64.org/doku.php?id=base:nmi_lock
http://codebase64.org/doku.php?id=base:detecting_6526_vs_6526a_cia_chips
Życzę sukcesów w dalszym byciu miłym. To bardzo przyciąga kolejnych ludzi do forum.
-
oj hardware guru urażony? NMI nie da się zablokować poza fizycznym usunięciem połączenia na płycie. Kiedyś zwalił mi się scalak od obsługi restore i musiałem tak to zrobić. Bełkotanie o budowie actiona nie mogę inaczej nazwać bo niestety jako jedyny na tym forum go sklonowałem (AFIK)
-
Umówmy się tak:
Można zablokować jedno źródło generowania NMI, natomiast klawisz restore za każdym razem gdy go wdusisz geneuje NMI i nie ma sposobu softwarowego aby to zablokowac.
-
nie no idea jest taka sama jak uszkodzenie mechaniczne płytki j.w., ustawiamy na zero NMI i nie ma możliwości wywołania przerwania.
-
aha :)
-
Właśnie wymyśliłem sposób na zablokowanie NMI :)
O ile mnie pamięć nie myli przerwanie wyzwalane jest opadającym zboczem tak więc ustawienie linii NMI w stanie niskim uniemożliwia nawet sprzętowe wywołanie NMI.
Linię NMI wprowadzamy w stan niski wciskając klawisz restore. Tylko... potem... nie można go już puścić hehe
-
moja teoria updła - w realu nie działa - odszczekuję - na c64scene Nitro podał sposób na zablokowanie nmi - sprawdzę i może drugi raz odszczekam :)
-
Sprawdziłem sposób podany przez Nitro - klawisz restore nie wywołuje NMI
Nie zgłasza się frezerka z actina (w 1541u) menu 1541u też nie zawsze się zgłasza
Ni mniej ni więcej oznacza to, że nasz oczytany kolega 2sam MIAŁ RACJĘ
-
znaczy się ustawienie na zero nmi daje radę.. qrwa nie możliwe hahahaha dobrze że wiedziałem to ponad 10 lat temu bo inaczej nigdy bym nie dokończył c64+
-
przeciez to co nitro podal na tamtym forum to jest to samo co 2sam wkleil pare postow wyzej w linku http://codebase64.org/doku.php?id=base:nmi_lock
czasem warto troche poczytac
-
no zagapiłem się przepraszam