atarionline.pl 8MB RAM do Atari XL/XE - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorAcidMaker
      • CommentTime23 Oct 2025 02:06 (1 godzinę temu)
       
      Witam,

      Projektuję nowe rozszerzenie pamięci do XL/XE. Generalnie wyszło to tak trochę przez przypadek. Postanowiliśmy z Lotharkiem przetestować PSRAM'y QSPI jako pamięć do Atari zamiast klasycznych układów SRAM. No i tak jakoś wyszło, że mamy na PCB układ 8MB PSRAM i warto go wykorzystać w całości, bo czemu nie.

      8MB daje łącznie 512 bloków po 16k. 4 bloki oczywiście idą na "pamięć podstawową". Zostaje zatem 508 bloków do dyspozycji. Najpierw do tego dodałem klasyczne 16 bloków w standardzie Rambo - zasadniczo sterowanie bitami 2,3,5,6 portu B PIA ($D301) przy zgaszonym bicie 4.

      Potem do tego doszedł Axlon - 255 bloków przełączanych zapisem do ROM.

      Po tych zabiegach zostało prawie 4MB RAM niewykorzystane, więc na razie "na szybko" dodałem 3 bity z wirtualnego drugiego PIA (adres $D305) i w ten sposób razem z 4 bitami z $D301 mamy dodatkowe 2MB - razem z Axlonem i pamięcią podstawową daje to trochę ponad 6MB.

      No i męczy mnie to, że nadal mam bloki RAM, które można jakoś przełączać i dzięki temu uzyskać dostęp do pełnych 8MB.

      Do tego mam dostęp do sygnału HALT, więc teoretycznie mógłbym sterować oddzielnie blokami dla CPU i oddzielnie dla ANTIC'a - ale to już chyba nie ma większego sensu.

      Piszę tutaj, bo może macie jakieś pomysły na to. Na razie mogę dodać bez problemów więcej bitów z $D305 i w ten sposób przełączać w zasadzie wszystkie bloki - oczywiście w takim układzie jakieś kombinacje będą niepoprawne. A może zamiast $D305 jakoś inaczej to przełączać? Ogólnie jak od 512 odejmiemy 4 bloki podstawowej i 255 Axlona to zostają 253 bloki do dyspozycji.

      Zostaje też ewentualnie kwestia magicznych 2kB z obszaru $D000-$D7FF, które też mógłbym w jakiś sposób gdzieś udostępnić po podaniu jakiejś kombinacji.

      Na razie mój pomysł jest taki:

      $D301 - bit 4 - jak zapalony to albo pamięć podstawowa, albo 1..255 z Axlon'a
      Jak bit 4 w $D301 zgaszony to:
      bierzemy biity 6,5,3,2 z $D301 oraz 6,5,3,2 z $D305. Mamy 8 bitów. Kombinacje 0..252 przełączają odpowiedni bank. Kombinacja 253,254 i 255 - sam nie wiem - bank podstawowy? Chyba najsensowniej.
      $D305 - bit 4 - przełączanie tego bloku $D000-$D7FF - pytanie pod jakie adresy go pakować?

      Dodam, że układ jest w całości pod CPU, więc nie łączymy niczego do fizycznego PIA. Port D301 i D305 są w zasadzie portami wirtualnymi w FPGA. PIA nadal standardowo będzie wystawiać sobie te bity niezależnie, czy zapis pójdzie do D301, czy D305 - stąd nie mogę używać bitów 0,1 i 7 - te standardowo idą do MMU i będą przełączały OS,BASIC i SELF-TEST.

      Wszelkie sugestie mile widziane.
      • 2: CommentAuthormono
      • CommentTime23 Oct 2025 03:44 (7 minut temu)
       
      RAM podstawowy (i też ten w $D000-$D7FF) chyba najlepiej jako MapRAM ->link<- , albo jak Newell Industries ->link<- .