Poczytałem ostatnio o interfejsie PBI (albo CART z ECI) i dopiero dowiedziałem się jak to ogólnie działa (wcześniej to była czarna magia). Mam w związku z tym potencjalnie głupie pytanie, więc bardzo nie krzyczcie i zważcie, że jestem programistą, a lutownicą się parzę ;)

Z tego co przeczytałem, to do PBI na linie adresowe (A0-A15) leci adres aktualnie czytanej/zapisywanej przez CPU komórki. Jeżeli w odpowienim momencie da się "low" na linię EXTSEL\, to zamiast z/do RAMu do/z CPU poleci/przyleci wartość z/do lini danych (D0-D7). Czyli teoretycznie przy odpowienio sprytnym urządzeniu można robić z CPU co się chce. A pytanie dotyczy ANTICA. Czy można wykryć, że aktualny cykl odczytu z pamięci jest przez niego kradziony (ANTIC używa linii RDY\, na PBI też ona jest, ale w docach jest napisane, że tylko do zapisu)?
A drugie pytanie: w momencie odczytu pamięci przez ANTICA co jest na liniach A0-A15 i D0-D7 PBI, bo to chyba byłoby zbyt pięknie, gdyby dało się też podkładać jakieś dane ANTICowi :)

2

Dla mnie to ciągle jest czarna magia, ale wydaje mi się, że nie jest tak, że możesz odciąć dowolny obszar pamięci bez ingerencji w Atarkę. Jest sygnał odcinający $D800-$DFFF - np. Karin Maxi podpina tam ROM z kodem sterownika nowego urządzenia SIO. Obszary $A000-$BFFF i $8000-$9FFF to wiadomo. Poza tym strona $D5 jest do dyspozycji cartridge-a, $D1 do dyspozycji PBI, a pod $D6 i $D7 można zdaje się łatwo podpiąć od środka Atarki. ANTIC może oczywiście przeczytać te obszary, ale co w tym pięknego?

https://www.youtube.com/watch?v=jofNR_WkoCE

3

Póki nie wypowie się ktoś, kto wie co się tam w środku dzieje, to możemy tylko fantazjować.
PBI ma dwie linie odcinające. MPD\ odcina ROM spod $D800 - $DFFF (Math Pach Disable), ale to nie wystarcza, bo wtedy pojawia się tam RAM i do podcięcia RAMu jest EXTSEL\ (EXTernal SELect) (This input is used to disable the CPU decoder for the duration of the current bus cycle.). Dodatkowe linie są w gdzieździe Cartridge'a (S4 do obszaru $8000 - $9FFF i S5 do $A000 - $BFFF), a w ECI linia D1xx do strony $D1. Ale nie wiem, czy one są niezbędne, czy dla ułatwienia (żeby mniej hardwaru dekodującego dany obszar pakować do urządzeń). Zadałem sobie tylko pytanie: Jeżeli urządzenie nie ma dostępu do całego obszaru adresowego, to po co mu wszystkie 16 linii adresowych? Jak ma się wszystkie linie, to można zareagować na dostęp do dowolnego obszaru i jeżeli EXTSEL\ może odciąć dowolny obszar to w dowolnym miejscu można oszukać CPU. W tym miejscu wyobraziłem sobie np. sprzętowy debuger do atarki, który w dowolnym momencie może podłożyć CPU kod zrzucającu zawartość RAMu, albo w extremalnym przypadku zastępować cały RAM odpowienim obrazem, a w przypadku ANTICa - tylko wyobraźnia by nas ograniczała co można mu podłożyć (ot może karte telewizyjną podkładającą mu obraz w TIPie :P)

4

to byc moze moglo sluzyc jako "monitor" ulatwiajacy sprawdzanie "co sie dzieje" w wygodny sposob.
wyprowadzenie calej szyny adresowej dodatkowo powoduje to ze mozesz sobie nasluchiwac urzadzeniem na dowolnym adresie ktory moze byc wykozystywany rowniez przez komorke ram/rom. tak wiec mozna tworzyc takie urzadzenia ktore beda mialy "relokowalny" adres nasluchiwania komend, przy czym przekazywac dane do procka nadal moga wylacznie za posrednictwem "odcietych" adresow z szyn RAM/ROM...

gdzie to mozna wykozystac? jakis prosty sterownik "linijki diodowej" nasluchujacy np. na 6tej stronie pamieci ;) ktory dodatkowo ma "buforowana" ostatnio wpisana wartosc w komorce ram ;) - w takim wypadku masz pewnosc ze twoj sterownik nie gryzie sie z zadnym rozszerzeniem pamieci, z zadnym hardsidem/covoxem/harddrivem/łoteva...

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

5

Gdzie można przeczytać, że tak jest naprawdę, czyli, że EXTSEL\ odłącza wewnętrzny dekoder, ale tylko dla określonych adresów ("odcietych" adresow z szyn RAM/ROM)? Czy to nie jest bardziej skomplikowane, niż brak takiego ograniczenia? I czy ktoś to sprawdzał?

Ja znalazłem tylko trzy sensowne źródła: mapping..., myatari i confidential specification ;)

6

Hej!

Laoo pokrótce opisałeś działanie freezera, tyle że on aby przejąc totalną kontrolę nad CPU wstawia dodatkowy fałszywy cylk odświeżania pamięci + generuje NMI, wiec wszystko odpina się od szyny i freezer może sam robić co chce, do dziś nie wiem co się stanie gdy antic w tym momęcie odświeza ta pamięć naprawdę :) może następuje zwiecha freezera :) co wystepuje w moim freezerze raz na jakis czas :)

Seban

7 Ostatnio edytowany przez Simius (2007-01-15 15:32:39)

Sygnał EXTSEL odcina tylko i wyłącznie RAM, zarówno dla CPU, jak i ANTIC-a. Jest aktywny wszędzie tam i tylko tam, gdzie następuje jakiekolwiek odwołanie do RAM - także w obszarze odłączonego przez PORTB OS lub Basic i w obszarze pakietu zmiennoprzecinkowego odłączonego sygnałem MPD. W tym ostatnim przypadku należy zwrócić uwagę na konflikt z modułami rozszerzeń wykorzystującymi procedury NEWDEV (Karin Maxi, KMK/JZ itp.).

Ceterum censeo Germaniam esse delendam.

8

Brzmi optymistycznie :)
To i tak tylko teoretyczne rozważania, ale racja, że sprzęt podkładający obraz ANTICowi nie lubiłby innych urządzeń, bo trzeba byłoby liczyć się ze znikaniem obrazu podczas obsługi innego urządzenia, jeśli chcielibyśmy być kompatybilni, a w innym przypadku potencjalne urządzenie nie cieszyłoby się popularnością (NP w takim dracowym 1090 już by nie zadziałało :))

9 Ostatnio edytowany przez toriman (2007-01-15 16:51:59)

Cze!

Simius ma 99% racji - bo EXTSEL~ jest dokładnie klonem CAS Inhibit (w przypadku 800XL na bramce AND) - a ten służy do sterowania dynamicznymi RAM w Atarynce (Output Enable) - taki myk sprzętowy. Zastosowanie statycznych RAM znacznie ułatwiłoby sprawę w kazdym przypadku ale rozwiązania z DRAM kiedys wybierano ze względu na koszty. Obecnie nawet 1 MB SRAM nie stanowi wiekszego problemu :)

99% racji z tego względu, że jest to sygnał z zewnątrz Atari (na PBI) więc w czasie normalnej pracy ma na stałe poziom H
i tylko CAS Inhibit ma wpływ na dostęp do DRAM.  Pisałem też o możliwości dołączenia zewnętrznego MMU do wytwarzania
"dziwadeł" w przestrzeni adresowej komputerka ;)

Napisałem również o bardzo ciekawej możliwości użycia pamięci dwuportowych do sprzęgnięcia różnych systemów
ale że nie mam praktyki z nimi - nie będę za bardzo rozwijał tematu ;-) Chyba, że gdzieś pogrzebię i się zastanowię jak to
możnaby pożenić...

Pozdrawiam

tOri

P.S. CAS Inhibit z MMU jest w stanie niskim zawsze gdy istnieje konieczność odłączenia RAM od szyny danych.
       Nie mam analizatora żeby sprawdzić czy jest to prawdą zarówno dla odczytu z różnych obszarów (I/O, pamięć, ROM)
       jak i zapisu do nich...

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

10

Co Ci po zastosowaniu statyków, skoro na czas odświeżania i tak Antic haltuje CPU ;)

11 Ostatnio edytowany przez toriman (2007-01-15 17:14:16)

Cze!

Statyczne RAM są prostsze w zastosowaniach. Ale i tak wymiana RAM w Atari wiąże się z dużą ingerencją w sprzęt.
Dualport ma tę możliwość, że dane mogą byc pisane i czytane w tym samym miejscu pamięci przez dwa różne systemy.
Może to być chociażby pamięć Video w nowej karcie graficznej PBI. Ażeby w jakieś miejsce włączyc obszar dualport - wtedy
trzeba by skorzystać z możliwości odcięcia oryginalnej RAM sygnałem EXTSEL~ Albo wogóle wywalić cały RAM atarynki,
wstawic w to miejsce dualport 64Kx8 i jazda :D

Ale myslę że lepiej się skupić na razie na rozmyślaniach nad pomysłem draco.

pozdrawiam

tOri

P.S. Nogę Antica można spokojnie odciąć przy statykach a na MMU podać na stałe H na nóżce REF~ ;)
       i problem wstrzymywania jest załatwiony...

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

12

toriman napisał/a:

P.S. Nogę Antica można spokojnie odciąć przy statykach a na MMU podać na stałe H na nóżce REF~ ;)
       i problem wstrzymywania jest załatwiony...

Ale problem konfliktu adresów na magistrali pozostaje, bo ANTIC nic nie wie o tym, że ma przestać odświeżać pamięć i w cyklach odświeżania nadal będzie wysyłał adres.

Ceterum censeo Germaniam esse delendam.

13

Cze!

Myślę, że wysyłanie adresów przez Antica tez dałoby się ominąć. Chociażby stosując dodatkowy bufor szyny sterowany
cyklem odświeżania - ale myślę, że jak na razie to bardzo daleko idące zmiany i przeróbki :) Dało by się i owszem ale
czy to jeszcze byłoby Atari ?? Generalnie i tak najlepszym pomysłem byłoby "wbicie" całej Atarki w FPGA (jak C-one)
i byłby spokój ;-). Myślę, że na początek lepiej się zająć extenderem PBI a takie historie zostawić na daleką przyszłość...

Pozdrawiam

tOri

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

14

ta... planów i pomysłów zawsze jest całe mnóstwo... tylko jak przyjdzie co do czego to każdy zasłania się brakiem chęci/czasu/umiejętności/funduszy, albo ściemnia, że przyszedł tu tylko po to, żeby popilnować roweru :P

15 Ostatnio edytowany przez toriman (2007-01-15 23:18:52)

Cze!

Qrczę...jakbyś w myślach czytał i na odległość widział :-D
Wracam po 18 z pracy i czasami nie mam chęci nawet leżeć.
Ale akurat extender ECI ma spore szanse na realizację, więc
możnaby cos zakombinować. Drac030 rzucił początek,
ja troche gdybam - może zacznę więcej. Jeszcze kilku zapaleńców
no i może w końcu cos się z tego "wykluje". W sumie miło by było.

A qrde mać...  już od kilku miesięcy nie mogę siąść do ostatniej
wersji atariSID (na TTL-ach - bez procka) Mam nadzieje, że tej
się uda poprawnie pracować.

Najgorzej, że nie mam konkretnego sprzętu do analizy cyfrowej
i trzeba przebiegi sygnałów w głowie składać :)

Oki - konczę - spać kiedys trzeba

Pozdrawiam

tOri

P.S. Ale powiało optymizmem ;-)

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

16

To ja dodam swoje 3 grosze :)
Pamięć statyczną w swoim komputerku mam od około dekady. Zasilana jest bateryjką litową o wyglądzie monety 5 zł :) Przeróbka ogranicza się do wywalenia Freddiego i pamięci dynamicznych oraz zastosowania dzielnika zegara i kilku bramek do uzyskania sygnałów sterujących. Pozwoliło mi to zrobić rozszerzenie bez zabawy w "kanapki" z kostek.
W kwestii odzyskania czasu zabieranego podczas odświeżania pamięci dynamicznych to opracowałem schemacik takiego urządzonka i nazwałem Antic Buffer. Według założeń na podstawie sygnałów z Antica urządzonko miało wykrywać kiedy jest odświeżanie i na ten czas filtrować HALT idący do CPU oraz odpinać Antica od magistrali adresowej i danych. Mój niepokój wzbudził jednak fakt, że Antic raz na kilka odświeżeń czyta dane obrazu i takiego cyklu pozbawiać go nie można. Niestety z powodu braku oscyloskopu cyfrowego projektu nie udało mi się zrealizować :( ale gdyby ktoś miał taki oscyloskop i czas, to może mu sie uda coś takiego zrobić :)

17

Cze!

Alex - po co podtrzymanie na s-ram ??? Tak pytam bo to ciekawostka :)
Jeśli mógłbyś sie podzielić sposobem na FREDA to byłoby miło... Miałem sam siąść do takiej przeróbki ale jakoś
nie mogę się zebrac w sobie :-/

Co do Antica - myslę, że jest na to sposób ale bez analizatora przynajmniej 8-kanałowego nie da się tego
jednoznacznie znaleźć chyba, że w jakimś opisie Antica są zamieszczone dane cyklów procka...

(niestety - tez nie mam analizatora a nie stac mnie na kupno takiego, który by mógł pomóc. Taki na LPT grzyba
niestety raczej będzie za wolny. Zawsze można jednak spróbować... Tak na początek)

Dzięki za 3 grosze ;)

Pozdrawiam

tOri

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

18 Ostatnio edytowany przez alex (2007-01-16 21:45:57)

toriman: Z bardzo prostej przyczyny :) Wszystko zaczęło się od ramdysku. DOS II/+ ma zaszyty sterownik do ramdysku ale niestety po wyłączeniu zasilania ramdysk również znika :( Najlepiej więc podtrzymać pamięć (bateryjka starcza na rok albo i dłużej), a skoro cała pamięć jest statyczna, to dlaczegoby nie pokusić się o podtrzymanie wszystkiego? W efekcie  działa to tak, że po wyłączeniu komputera, kiedy włączam go po jakimś czasie wszystko jest tak, jakbym wcisnął klawisz reset :) Jak sobie piszesz demko albo coś innego i masz już do pamięci wszystko załadowane to jest to niesamowite rozwiązanie. Proste, a cieszy :)
Z FRED-em to jest banał. Dostaje 14 MHz z oscylatora, są dwa przerzutniki 7474 połączone kaskadowo i wychodzi 3,5 MHz, które leci do GTIA i Antica. Z sygnałów CAS, RAS i PHI2 robi się sygnał CI o ile pamiętam. Do sterowania pamięcią statyczną wystarczy CI i magistrale. Żeby zachować kompatybilność z rozszerzeniami trzeba pamiętać by CI uwzględniało zwalnianie pamięci dla stron D1, D4, D5. Kilka bramek na krzyż. Jak odkopię notes ze schematem to tutaj zamieszczę :)

19 Ostatnio edytowany przez toriman (2007-01-16 22:58:45)

Czee!

alex napisał/a:

toriman: Z bardzo prostej przyczyny :) Wszystko zaczęło się od ramdysku. DOS II/+ ma zaszyty sterownik do ramdysku ale niestety po wyłączeniu zasilania ramdysk również znika :( Najlepiej więc podtrzymać pamięć (bateryjka starcza na rok albo i dłużej), a skoro cała pamięć jest statyczna, to dlaczegoby nie pokusić się o podtrzymanie wszystkiego? W efekcie  działa to tak, że po wyłączeniu komputera, kiedy włączam go po jakimś czasie wszystko jest tak, jakbym wcisnął klawisz reset :)Jak sobie piszesz demko albo coś innego i masz już do pamięci wszystko załadowane to jest to niesamowite rozwiązanie. Proste, a cieszy :)

:D LOL - no to jest faktycznie niezłe. Szkoda, że atarynka nie da rady się całkowicie zahibernować bez freezera. Muszę to zobaczyć
i przećwiczyć u siebie... ROTFL!! No i mam jeszcze ze 3 płyty ze spalonymi FREDAMI więc mam na czym zaszaleć.

alex napisał/a:

Z FRED-em to jest banał. Dostaje 14 MHz z oscylatora, są dwa przerzutniki 7474 połączone kaskadowo i wychodzi 3,5 MHz, które leci do GTIA i Antica. Z sygnałów CAS, RAS i PHI2 robi się sygnał CI o ile pamiętam. Do sterowania pamięcią statyczną wystarczy CI i magistrale. Żeby zachować kompatybilność z rozszerzeniami trzeba pamiętać by CI uwzględniało zwalnianie pamięci dla stron D1, D4, D5. Kilka bramek na krzyż. Jak odkopię notes ze schematem to tutaj zamieszczę :)

Dokładnie tak sobie i myślałem tylko się za to nie zabrałem. Zawsze wypada coś "ważniejszego". W końcu to nie jest takie strasznie złożone.

Jeśli znajdziesz schemacik - zamieść. A jak nie znajdziesz no to i tak się w końcu go "zrobi" - szkoda trochę czasu na ponowne "odkrywanie"
Ameryki ;-). Mam sporo 128 KB Kości samsunga więc miałbym do czego je wykorzystać :) ... Ciekawi mnie ta aplikacja ;)

Dzięki i pozdrawiam

tOri

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

20

ej. tez czekam na opis - nie wazne przez kogo przygotowany ;)

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

21

to kiedy ten opis ujrzy światło ALEX ?

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C