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ć.
Steem SSE v4.1.2 R17 Nowa wersja popularnego emulatora Atari ST.
Street Fighter 2 na Atari 8-bit To wczesna wersja gry, ale już teraz wiadomo, że projekt zapowiada się bardzo ambitnie.
SwSprEd 1.0.0 Nowy edytor programowych duszków.
Atari 8-bit Rom Image File Explorer Nowa wersja przynosi szereg istotnych ulepszeń i nowych funkcji.
Atari Font Maker V1.6.16.0 Nowa wersja narzędzia do tworzenia fontów i map.
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.016 sekund, wykonano 58 zapytań