Jeżeli nCCTL=0 to podpinana jest strona $D5xx. Ale to jest adres 8-bit.
Jaki stan na złączu carta w tym czasie mają: A12, A11, A10, A9, A8 ?
Same ZERO
Same JEDEN
Czy kopia magistrali ATARI czyli 10101?
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Zmarł twórca języka BASIC Zmarł Thomas E. Kurtz twórca języka BASIC
Zmiana serwera atari.area Serwis przeszedł właśnie ważną aktualizację infrastruktury
4th Atari ASCII Compo - wyniki Dostępne są już wyniki tegorocznego ATASCII Compo.
thing neo 1.60 Olivier Landemarre wydał nową wersję desktopu Thing.
VIII. Basque Tournament of Atari 2600 Kolejna relacja, wśród otrzymywanych od naszego przyjaciela Egoitza z Kraju Basków.
atari.area forum » Sprzęt - 8bit » nCCTL i szyna na $D5xx
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Jeżeli nCCTL=0 to podpinana jest strona $D5xx. Ale to jest adres 8-bit.
Jaki stan na złączu carta w tym czasie mają: A12, A11, A10, A9, A8 ?
Same ZERO
Same JEDEN
Czy kopia magistrali ATARI czyli 10101?
CCTL aktywowany jest kiedy adresowana jest strona $D5. Nie musisz korzystać z górnych bitów magistrali adresowej bo będą wskazywać adres $15. 13 bitów adresu przydaje się kiedy aktywowany jest S4 lub S5 bo oznacza to czytanie/zapisywanie komórki z 8KB obszaru $8000-$9FFF (S4) lub $A000-$BFFF (S5).
Ale potrzebuje przetestować taki trik:
A000-BFFF normalnie pstrykane jak w maxflash8mbit, ale z jednym wyjątkiem banki przełączam tylko na ZAPIS do $D500
Natomiast na odczyt z $D5XX chcę podłączyć bank carta, bez względu na to, czy on jest ON czy OFF.
Taki trik spowoduje, że w zakresie $D500-$D5FF mam procedurę niezniszczalną (nie musze trzymać kopii w RAM), odporną na włączanie i wyłączanie carta oraz na wszelkie przełączania ROM/RAM i pamięci rozszerzone itd.
Tylko, który fragment bloku 8kB podepnie się pod te 256 bajtów.
Jeżeli wyższe adresy są nie ruszane. Tzn. że
D5 -> 11010101
To by znaczyło, że:
A15 - 1
A14 - 1
A13 - 0
Te idą na złącza carta:
A12 - 1
A11 - 0
A10 - 1
A9 - 0
A8 - 1
10101 to jest $15 czyli pod $D5XX podepnie mi się $1500 - $15FF obszaru carta.
Podsumowując miałbym pod D5 kopię kodu z banku od 5376 do 5631.
Takie okienko 256-bajtowe widziane ZAWSZE przez dziurkę $D5XX,
Nie znam się Ale logika podpowiada, że powinieneś wszystkie starsze bity zignorować i sobie je w takiej sytuacji ustalić tak jak potrzebujesz. Czyli jeśli ncctl jest 1 to bierzesz z szyny a jak 0 to ustalasz na jakąś wartość konkretną. W zasadzie to mógłbyś mieć do tego nawet osobny układ adresowany wyłącznie niskimi bitami adresu.
Ma to sens?
Nie za bardzo można zignorować bo coś w sobie mają.
Załóżmy, że cart ma 8kB pamięci. I można go włączać/wyłączać zapisem do D500. No to ten cart pojawiał się będzie w obszarze A000-BFFF. Tu jest wszystko jasne.
Ale skoro taki blok jest podłączony na wszystkich pinach A0-A12 do pamięci carta. I teraz pojawia się nCCTL, który również aktywuje CE pamięci (identycznie jak nS5), to jakiś blok z tego 8kB musi się pojawić.
Bo to by oznaczło, że wysyłam polecenie do D500, żeby cart się wyłączył. RD5 idzie w niski. Pojawia się RAM, ale nCCTL nadal może dobrać się do carta tylko poprzez stronę $D5. I normalnie kod wykonać.
Natomiast totalną masakrę mózgową robi zagadka, gdy mamy cart maxflash reagujący na odczyt i zapis z MOŻLIWOŚCIĄ czytania z $D500
i robimy JMP $D500.
I chcemy zaraz po tym od $D500 wywołać kod JMP $A000.
To w którym banku powinien być JMP, w którym $A0 a w którym $00?
:)
Ja obstawiam, że w tym, w którym chcesz - Cart po wykryciu zera na nCCTL powinien ustawić starsze bity adresu tak jak chcesz (czyli np. tak, żeby to było ostatnie 256 bajtów kości pamięci) i tyle. A JMP $A000 czytany z $D5xx przestawia nCCTL na 1, na co cart reaguje podstawiając ostatnio ustawiony blok 8KB. Po prostu w carcie musi być odpowiednio szybka i skomplikowana logika, żeby nadążyć. W szczególności ustawienie tych wysokich bitów musi się wyrobić w trakcie ustawiania niskich bitów. Tak to widzę.
No, chyba że psuje to jakiś pipeline'ing ;-)
Ale, jak wspomniałem, nie znam się :-D
Tak, logika musi być dość złożona, gdy chcę, żeby $D5xx było jakimś ostatnim bankiem pamięci flash. Wtedy trzeba błyskiem przestawić adresy. Podobny trik robi S-XEGS, gdy pojawia się nS5 to ma włączyć ostatni bank.
Natomiast jak przestrzeń może się pokrywać, to już jest banał.
Teraz carty zgodne z maxflashem mają:
nCE = nS5
Robię trik:
nCE = ( nS5 AND nCCTL )
i wtedy "chyba" A000-BFFF widzi cały bank a $D5XX widzi tylko $B500-$B5FF? Tego drugiego nie jestem pewien :/
Generalnie to próbuję wybrnąć z problemu konwersji ATR do CAR, gdzie muszę gdzieś dać kod obsługi carta. Niestety ale programy nie stosując żadnych zasad i latają po całej pamięci włącznie ze stosem. Jak to jest krótki kod na kilka bajtów to gdzieś wciśnie. Ale jakby był dłuższy (np. zapisy itp) to kłopot. A zakres $D500-$D5FF nie są w stanie zepsuć bo to jest już sprawa sprzętowa.
Natomiast bez sensu byłoby lutować ekstra pamięć na obsługę $D500-$D5FF. Więc kombinuje jakby tu jedną kostką pokryć dwa zakresy gdzie tylko jeden z nich jest wyłączany.
Hej,
Jeżeli nCCTL=0 to podpinana jest strona $D5xx. Ale to jest adres 8-bit.
Jaki stan na złączu carta w tym czasie mają: A12, A11, A10, A9, A8 ?
Same ZERO
Same JEDEN
Czy kopia magistrali ATARI czyli 10101?
To jest adres 16bit.
Pozdrawiam
tOri
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Sprzęt - 8bit » nCCTL i szyna na $D5xx
Wygenerowano w 0.015 sekund, wykonano 56 zapytań