Zenon!
Wg Twojego pomysłu mamy 2 obszary 8kB każdy. Jeśli jeden widziany jest przez 6502 w Atari to drugi przez uC na cartridgu. Po wydaniu polecenia przez 6502 następuje zamiana widocznych obszarów.
A dałoby się zrobić łatwo taką modyfikację dzielonego wahadłowo 8kB obszaru pamięci jak opisuję niżej?
Mamy 4 fizyczne obszary, każdy po 8kB (czyli w sumie pamięć 32kB).
Nazwijmy je: A, B, C, D.
Zamiana następuje dokładnie tak jak opisałeś z jednym ALE:
Jeśli Atari widzi i czyta obszar A to próba zapisu do tego obszaru spowoduje zapis fizyczny do obszaru B.
W tym samym czasie uC na carcie może czytać obszar C a zapisywać tylko do obszaru D.
A po zamianie banków:
Atari czyta obszar D a zapisuje do C.
uC na carcie czyta obszar B i zapisuje do A.
Wydaje mi się, że sprzętowo powinno to być dość proste: odpowiednie 2 nogi adresowe pamięci dzielonej musiałaby być sterowana przez sygnały R/W z 6502 i uC.
Tak, to nie pomyłka. W tym trybie pracy, żaden uC nie czytałby tego co przed chwilą zapisał, a jednocześnie po zamianie banków każdy z nich odczytywałby to co w poprzednim "cyklu" zapisał drugi procesor.
Co to daje?
Ano wyobraźcie sobie, że implementujemy na uC Weroniki obsługe duchów - opisałem to w poprzednim poście.
Pamięć ekranu zajmuje całe 8kB pamięci dzielonej.
Przy takim trybie pracy pamięci jaki teraz opisuję Atari i Antic zawsze czytają pamięć obrazu przygotowaną w poprzedniej klatce przez Weronikę. A jednocześnie procesor Atari może zapisywać do 8kB obszaru informacje dla uC, które odczyta on po przełączeniu obszarów (po 1/50 sekudny).
Te informacje, to może być np tło obrazu dla gry:
Procesor Atari definiuje tło dla kolejnej klatki zapisując je do pamięci obrazu. Może to robić w dowolnym momencie, nie bojąc się, że popsuje właśnie wyświetlany obraz.
Po przełączeniu obszarów (w czasie przerwania ramki), uC na to tło nałoży duchy i zapisze wynik tej operacji do tego samego adresowo miejsca pamięci dzielonej (ale fizycznie do innego banku!).
Innymi słowy w takim trybie pracy pamięci, 6502 zawsze czyta tło+nałożone na niego duchy a zapisuje samo tło.
uC w Weronice odwrotnie: czyta tło (nigdy go nie modyfikuje) a zapisuje do tego samego obszaru tło+nałożone duchy. Obszar adresowy ten sam, ale pamięć fizycznie inna.
Wiem, ze opisałem to ciut chaotycznie, ale ciężko mi to ubrać tak na gorąco w słowa ;)