Ja p*.*, faktycznie ciężko z Tobą gadać xxl: w pewnym sensie stanąłem po Twojej stronie, broniąc Twojego stanowiska przed Pinem, bo w tej konkretnej sprawie myślałem, że można liczyć na Twoją wiedzę, a wiem jaki jesteś wrażliwy na bezkolizyjność rozwiązań, o czym nieraz już wspominałeś przy okazji gadek na temat u1mb. Powiem więcej, to Twoje przewrażliwienie akurat w wypadku przełącznika, o którym mowa w wątku, było by wręcz pożadane, bo taki przełącznik właśnie tak powinien działać, żeby nie kolidował z żadnym sprzętem. W rezultacie dostałem gówno zamiast odpowiedzi... Cóż, dzięki za podbijanie chociaż wątku, może dzięki temu zajrzy tu ktoś jeszcze.
@Mono: bardzo dziękuję za szerokie opisy i odpowiedź zawierająca kompendium wiedzy w temacie. Ciężko jednak coś w tym wszystkim jednoznacznie wybrać, jakieś miejsce w pamięci gdzie by się można zahaczyć, bo zawsze z czymś to będzie kolidowało, lub może kolidować.
Ewentualnie tak sobie myślę, że można by zrobić pełen dekoder adresowy i pozwolić temu kto sobie montuje takie przełączniki po prostu wybrać adres jaki mu pasuje?
Mam też zupełnie odmienną propozycję podejścia inaczej do tematu. Słuchajcie, a gdyby tak pójść inną drogą.
Wtrąciłem się w ten wątek, bo jakiś czas temu sam myślałem poważnie o zrobieniu takiego urządzenia, więc wymyśliłem kilka metod jak to zrobić już po tym jak dostałem bólu głowy, o którym pisze Mono. Jedna z tych alternatywnych metod najbardziej mi się w głowie układała jako "bezkolizyjna".
Myślałem, żeby zamiast podpinania się pod magistrale, zrobić to prościej i podłączyć się z mikrokontrolerem pod port A. Konkretnie rzecz biorąc myślałem o wykorzystaniu którychś pinów joysticka do szeregowej komunikacji między mikrokontrolerem i Atari.
Koncepcja była by taka, że w celu nawiązania transmisji musiał by wystąpić na danym pinie określony sygnał - czyli tak jak pisze Pin program na Atari wysyła jakieś magiczne bajty.
Zasada była by taka: mikrokontroler ma w swej pamięci ustawione przełączniki - kilka, powiedzmy dla przykładu z osiem. Po włączeniu zasilania od razu wystawia na ośmiu nogach tych osiem stanów i to są stany naszych przełączników do rozszerzeń. Stany zapisane są w EEPROM-ie mikrokontrolera.
Jeden z pinów mikrokontrolera połączony jest z którymś z pinów portu A. Na tym pinie mikrokontroler nasłuchuje i czeka na wystąpienie magicznej sekwencji - dzięki temu sygnały pochodzące z joysticka nie są w stanie uruchomić tej sekwencji, a więc ona nie wystąpi. Program na Atari chcąc wysłać coś do mikrokontrolera poprzedza to zawsze magiczną sekwencją, a mikrokontroler odbiera tylko informacje występujące po magicznej sekwencji.
Transmisja może być bardzo wolna, żeby uniknąć standardowych problemów z transmisją - założymy sobie jakąś stałą częstotliwość tej transmisji po stronie mikrokontrolera, którą da się bez problemu uzyskać i wyliczać pętlami nawet w Basicu. Jak piszę może to być bardzo wolne, bo przesyłać będziemy tylko kilka bajtów, więc prędkość nie ma znaczenia.
Trzeba by ustalić kształt ramki, np. kilka bitów "magic", następnie kilka bitów oznaczających typ rozkazu (zapis, odczyt tego czy tamtego), następnie kilka bitów danych (np. stany przełączników do ustawienia, lub nazwy przełączników do zapisania). Przy rozkazie odczytu na drugiej linii wysyłane by były w odpowiedzi dane w taki sam sposób, czyli "magic", typ, dane. To tak z grubsza, oczywiście trzeba by to dopracować, chodzi o zasadę ogólną.
Cała konfiguracja była by zawsze zapisana w EEPROM-ie, więc program do obsługi był jeden i ten sam dla każdych konfiguracji komputerów. Jakoś jeszcze można by konfigurować ile jest aktywnych przełączników, żeby na ekranie mieć ich tylko tyle ile jest używanych - to można zrobić sprzętowo, lub też zapisywać w EEPROM-ie który przełącznik jest aktywny, a który nieaktywny.