26

Jak wyżej - wydawało mi się, że gdzieś czytałem (w C&A może? bo to było najczęściej czytywana przez mnie rzecz o C-64), że w C-64 przerwania NMI nie są używane.

KMK
? HEX$(6670358)

27

drac030 napisał/a:

W C-64 nie ma NMI, z tego co mi wiadomo.

drac030 napisał/a:

Jak wyżej - wydawało mi się, że gdzieś czytałem (w C&A może? bo to było najczęściej czytywana przez mnie rzecz o C-64), że w C-64 przerwania NMI nie są używane.

oj draco, miedzy 'nie ma' a 'nie sa uzywane' jest roznica. poza tym jedno i drugie jest nieprawdziwe.
w c64 klawisz restore byl podpiety wprost w linie nmi. czyli przerwanie jako takie istnieje i jest uzywane.
dodatkowo nmi mogl wyzwalac cia2. po drobnej przerobce procedury przerwania nawet i cyklicznie (jak irq).
o ile mnie pamiec nie myli freezer w kartridzach finall i action replay dzialal w oparciu o nmi.
...
tak sie zastanawiam kiedy dely utnie ten watek. toz to w koncu atari-area... :-)
...

drac030: znam dwa dema na komodora. jedno jest fajne a drugie ma fajna muzyke.

28

Dzięki za objaśnienie. Myślę, że po prostu źle zapamiętałem informację, której sedno było gdzie indziej - że przerwania generowane przez układ wizji to IRQ.

Że "nie ma" to był z mojej strony skrót myślowy - bo wiadomo, że nawet jeśli byłyby nieużywane kompletnie, to obiektywnie "są", bo procesor w dalszym ciągu ma stosowną nóżkę i wektor pod $FFFA.

KMK
? HEX$(6670358)

29

piotrv napisał/a:
Sc0rpi0 napisał/a:

Nie wiem jak w C64, ale w Atarce to BASIC wykorzystuje tryb DCB non stop praktycznie.

Jesli chodzi o SED, to jest w Atari Basic słownie "raz".
W systemie (Atari OS) występuje tylko w pakiecie matematycznym - jak to już wspomniał drac030.

Wniosek: jeśli w BASICu cokolwiek liczysz (dzielenie, konwersje int-float), to masz spore szanse na korzystanie z "DCB".

Co do SED to się może i zgadza, że jest raz w obszarze BASICA, nie sprawdzałem
nawet tego nigdy, bo w matematycznej jest :). Wystarczy popatrzeć ile tam się
wywołuje skoków pod adresy z zakresu D800-DFFF. W BASICu niestety
praktycznie wszystko jest zamieszane w BCD, żadnych konwersji nie trza,
ani nic liczyć nawet. Wystarczy choćby głupie USR wywołać co niby nie powinno
DCB w ogóle ruszać, a raczej być związane tylko z maszynowym... a jednak.
Wystarczy się przyjrzeć jak jest zwracany wynik z USR i już mamy flage D=1 :).
A teraz przerwanko w trakcie i jak ni ma na poczatku CLD to się robi w przerwanku
kiszka ;). Na szczeście w Atarce jest to CLD w systemie na początku obsługi
przerwania, bo strach pomyśleć jakby zapomnieli. Ktoś tam pisał, że nie potrzeba
przy robieniu własnych wektorów przerwan CLD. Niby i racja we własnym programie,
bo wielozadaniowości nie ma niby, ale i tak... teoretyczna sytuacja: program
który korzysta z handlera urządzenia powiedzmy Z: . Niby twój program, ale handler
może być czyjś i np. w środku korzysta z SED (wiem że mało prawdopodobne, ale możliwe)
i coś tam sobie liczy. I teraz podczas obsługi urządzenia przyłazi przerwanie i idzie
przez ten zmieniony wektor spod FFFX bez CLD - i sru. No i się przydała jednak ta
jedna instrukcja ;), a marnotrawstwo cykli i pamięci raczej nieduże ;). Po co ten
1 bajt oszczędzić, a potem cuś się bedzie paskudzić.

---==<<Sc0rpi0>>==---

30

Czy nie było nic podobnego (transmisja Atari<>C64) w TA? Posłużyli się tymi samymi schematami wejść JOY, czy cóś...

31

do komunikacji z łamigą na pewno cos bylo, ale do c64 nie przypominam sobie...
benji: sprawdz w archiwum: http://tajemnice.atari.org

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep