atarionline.pl RAMCART - programowanie - 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: CommentAuthorxxl
    • CommentTime7 May 2013 zmieniony
     
    RAMCART moze byc w trybie RW (zapisu) i RO (odczytu). w trybie odczytu zachowuje sie jak zwykly kart

    rejestr sterujacy: $D500

    76543210

    -------x ;bit 0 wlacza modul w obszarze $a000 - $bfff.
    w trybie RO: 0 wlaczony; 1 wylaczony
    w trybie RW: 1 wlaczony; 0 wylaczony

    ------x- ;bit 1 wlacza modul w obszarze $8000 - $9fff.
    1 wlaczony; 0 wylaczony

    -----x-- ;bit 2 gdy ustawiony blokuje rejestr do momentu wylaczenia komputera

    ---xx--- ;bity 3, 4 przelaczaja banki pamieci modulu 64K; 00,01,10,11

    --x----- ;bit 5 dodatkowy bit przelaczajacy banki pamieci w module 128K.

    RAMCARTa mozna formatowac pod DOS, kopiowac/kasowac pojedyncze pliki, ustawic w tryb RO i uzywac jak zwyklego karta.

    pytanie: czy ktorys z emulatorow pozwala uzywac RAMCARTa?
    • 2: CommentAuthormono
    • CommentTime7 May 2013
     
    Można prosić o aktualizację atariki?
    • 3: CommentAuthorxxl
    • CommentTime7 May 2013
     
    done. a mozna prosic o update Atari800 o ramcarta?

    :D
    • 4:
       
      CommentAuthorCOR/ira4
    • CommentTime8 May 2013
     
    Jakiego programu użyć by cuś wgrać na ram-carta?
    Nosty gdzie jesteś HELP !
    • 5: CommentAuthorxxl
    • CommentTime8 May 2013
     
    mozna uzyc np. DOSa do kopiowania programow na karta. oprogramowanie i opis widze tez tu: ->link<-
    • 6: CommentAuthormono
    • CommentTime8 May 2013
     
    @xxl: Prosić można :) Zobaczę co się da zrobić.
    • 7:
       
      CommentAuthorjhusak
    • CommentTime9 May 2013 zmieniony
     
    @xxl - obsługę SIC! dodałem np. ja :)

    Z ramcartem będzie o tyle trudniej, że w kodzie A800 nie było na ten czas opcji kartridża z możliwością zapisu.
    • 8: CommentAuthorxxl
    • CommentTime10 May 2013
     
    przydalo by sie, ulatwi to zycie :-)

    no wlasnie. jest jakis program do zrzucania zawartosci ramcarta na dysk?
    • 9: CommentAuthorxxl
    • CommentTime10 May 2013
     
    xbios dla ramcarta: ->link<-
    • 10:
       
      CommentAuthorjhusak
    • CommentTime10 May 2013
     
    Brawo!
    • 11: CommentAuthorxxl
    • CommentTime10 May 2013
     
    proponuje zajrzec do oryginalnego sterownika ramcarta :-) interesujaca lektura.

    wiadomo kto to pisal?
    • 12: CommentAuthormono
    • CommentTime29 Apr 2023
     
    Majowy weekend przyniósł obsługę RAMCART-ów i SiDiCar-a w emulatorze Atari800.
    Póki co nie ma go w głównej gałęzi, bo wysłałem dopiero im pull-requesta, ale można sobie ściągnąć mojego forka (z brancha ramcart) ->link<- i skompilować samemu.

    Informacje o RAMCART-ach i narzędziach:
    - ->link<-
    - ->link<- (2/4M)
    - ->link<- (1/2M)
    - ->link<- (DRC)
    - ->link<- (64/128/DRC/1M)
    - ->link<- (UM znowu nadaje)

    Seriousy #8, #9, #10, #11: ->link<-

    DOS II+/D z obsługą RAMCART jako D7 and D8: ->link<- plus opis ->link<-

    SiDiCAR:
    - ->link<-
    - ->link<-
    - ->link<-

    @jhusak: Jest już zapis obsługiwany - zobacz na MEMORY_CopyFromCart i MEMORY_CopyToCart no i na cartridge.c
    • 13:
       
      CommentAuthorKaz
    • CommentTime29 Apr 2023
     
    Brawo Mono, świetna robota! Oby chłopaki jak najszybciej dodali to do oficjalnej dystrybucji.
    • 14:
       
      CommentAuthorgienekp
    • CommentTime30 Apr 2023 zmieniony
     
    @mono
    SUPER!

    RAMCART to w zasadzie jedyne urządzenie co mnie sponiewierało i pokornie ustawiło. Cztery razy podchodziłem i już miałem tip-top i klapa.

    A właśnie dlatego, że nie było emulatora. A bez emulacji sprawa jest dużo bardziej czasochłonna. Dopiero bez emulacji człowiek nabiera szacunku dla dzieł z przeszłości gdzie nie było takiej wygody.

    No ale już jest i jest impuls do dokończenia roboty ;)

    P.S. Czy coś możemy zrobić, żeby to poszło do oficjalnej wersji?
    • 15: CommentAuthormono
    • CommentTime30 Apr 2023
     
    Można lobbować u opiekunów projektu :)
    • 16:
       
      CommentAuthorgienekp
    • CommentTime30 Apr 2023 zmieniony
     
    No ja będę wysyłał "kopniaki", bo zanim mi się na MACOS pojawi w homebrew to musi oficjalny się upgradować.

    Widzę w kodach jak się wpiąłeś w krwiobieg ATARI800.

    Zamiast:

    MEMORY_CopyROM

    jest:

    MEMORY_CopyFromCart i MEMORY_CopyToCart

    To daje potencjał na przyszłościowe zrobienie zapisu w innych cartach :)
    • 17:
       
      CommentAuthorjhusak
    • CommentTime30 Apr 2023 zmieniony
     
    @mono, ja się zastanawiałem, czy zapis do carta realizować "na twardo", czyli do pliku carta, czy też "na miękko", do pliku będącego "patchem". A tak naprawdę to pewnie oba rozwiązania ze switchem przy montowaniu carta.

    Dobrze, że zebrałeś te informacje publicznie - może je dodać do atariki? Bo nie szystkie tam są.
    • 18: CommentAuthoremka
    • CommentTime30 Apr 2023 zmieniony
     
    @mono
    Jeżeli interesuje Cię opinia zwykłego użyszkodnika to taka emulacja to fajna rzecz do potrenowania przed zakupem prawdziwego ramcarta. Testowałem wersję 1MB i 256MB. W emulacji najbardziej podoba mi się to że po resecie emulatora, ramcart przechodzi automatycznie w tryb RO co zabezpiecza go przed wyczyszczeniem pamięci przez system operacyjny.(Ciekawy czy prawdziwy ramcart też tak potrafi) Trochę gorzej jest z ustawieniami jumperów i switchy które wracają do ustawień 2x128MB dla wersji 256MB i w wersji 1MB zmieniają jumpery ABC na switche. Aby pokazać o co mi chodzi załączam obraz 1MB.car z LiteDos od MR.ATARI. Obraz uruchomi się ale żeby zobaczyć katalog należy w configu ramcarta przełączyć switche na jumpery. I tak będzie po każdym zimnym starcie emulatora.
    Uważam że ustawienie jumperów i switchy powinna być zapisane gdzieś w configu obrazu ramcarta, ale to tylko moja opinia.
    PS
    LiteDos od MR.ATARI obsługuje dyski do 16MB, ma trochę niestandardową uproszczoną obsługę, ale można się jej nauczyć.
    Pozdrowienia dla wszystkich
    • 19: CommentAuthormono
    • CommentTime30 Apr 2023 zmieniony
     
    @emka: Pewnie, że interesuje! Dzięki za testy, przyjrzę się temu.

    Tryb RO po RESET: prawdziwy raczej nie potrafi, bo nie wie kiedy wykonano procedurę RESET (choćby programowo). Może warto by dodać w menu opcję czy ma przechodzić w RO po RESET bo to rzeczywiście przydatna funkcja?

    Switche: Błąd, błąd. To nie powinno się zmieniać po RESEcie. Musiało się coś przy mergowaniu pokiełbasić.

    Dzięki!
    • 20: CommentAuthormono
    • CommentTime30 Apr 2023
     
    @jhusak:
    1. Zapis do carta - Ja realizuję to tak, że na bieżąco aktualizuję dane w pamięci, a zapis do pliku następuje dopiero przy odłączeniu carta. Obawiałem się, że zapis na bieżąco do pliku spowolni emulację.
    2. Atariki - masz na myśli te wszystkie carty i oprogramowanie? W Atariki ->link<- chyba wszystko to już jest.
    • 21: CommentAuthormono
    • CommentTime30 Apr 2023
     
    @emka: Już wiem w czym jest problem.

    1. Zmiana switchy po RESEcie.

    W emulatorze Atari800 mamy dwa rodzaje RESET opisane w menu następująco:
    - Warm Start - to jest zwykłe wciśnięcie klawisza RESET podczas normalnej pracy komputera - czyli wystawienie na nogę RST CPU
    - Cold Start - to powoduje zupełnie inne działanie, bo to jest sytuacja odpowiadająca włączeniu zasilania komputera (emulatory NES-a opisują to jako Power Cycle)
    stąd po Warm Start nic się nie zmienia. Nie zmienia się też po G E477 z DOS-a, bo choć w ten sposób robiony jest zimny start, to dzieje się to programowo i nikt nie ingeruje w ustawienia.
    Ale po Cold Start z menu emulatora już stan przycisków się zmienia, bo stan urządzenia inicjalizowany jest na wartości domyślne. A rzeczywiście kiedy mamy fizyczne switche, to ich stan się nie powinien zmieniać. Zmienia się tylko stan elektroniki. To jest do poprawy.

    Brakuje w emulatorze zimnego resetu komputera (który się czasem instaluje w komputerze jako rozszerzenie) który nie dotykałby konfiguracji sprzętu.

    2. Zapis jumperów do obrazu cartridge'a. To jest moim zdaniem świetny pomysł i nawet było by na to miejsce w formacie CART (całe 32 bity), ale trzeba by to przedyskutować z chłopakami od Atari800. Tak jak i dodanie "przycisku reset".
    • 22:
       
      CommentAuthorgienekp
    • CommentTime30 Apr 2023 zmieniony
     
    W zasadzie to ile mamy typów resetów?

    Mi wychodzi jakby było 4+1:
    1. Programowy skok do $C2C8 - zimny start
    2. Programowy skok do $C290 - gorący start
    3. Wyłączenie komputera i włączenie
    4. Naciśnięcie przycisku RESET np. gdy jest BASIC
    5. ? Dolutowany zimny start ?

    I one inaczej się zachowują, bo jak zrobimy kopię ROM do RAM to programowe skoki możemy przechwycić, ale już te sprzętowe to bez szans.
    • 23: CommentAuthormono
    • CommentTime30 Apr 2023
     
    Programowymi się nie zajmujmy. Istotne są te sprzętowe - a tych jest trzy:
    - Power Cycle - włączenie komputera
    - Warm Start - naciśnięcie klawisza RESET na klawiaturze
    - Cold Start - naciśnięcie dolutowanego reseta (jak ktoś sobie zainstalował) powodującego zimny start
    A może ten dodatkowy reset nie różni się niczym od włączenia komputera (bo np odcina zasilanie na jakiś czas) tyle tylko że nie trzeba operować wyłącznikiem?

    Ja i tak muszę zostawić fizyczne switche RAMCART-a w spokoju a reinicjalizować tylko rejestry.
    • 24: CommentAuthoremka
    • CommentTime1 May 2023
     
    Mam pytania
    1. Czy istniały wersje ramcarta mające jednocześnie jumpery i switche?
    2. Jeżeli nie to czy wersja z jumperami nie powinna mieć własny indeks w nagłówku?
    3. Czy wersja 2MB i 4MB były tylko ze switchami 1/2 i 2/4 ?
    4. Czy istniał ramcart typu 8MB ze zmniejszoną pamięcią do 2MB lub 4MB?
    Część bitów w $D501 byłaby wtedy niewykorzystana.
    5. Czy ramkart typu 8MB z tylko 1MB pamięci zachowywałby się jak stary 1MB z jumperami?

    PS
    Jeżeli ramcarty mają być włączone do głównego nurtu atari800 to Ktoś powinien to usystematyzować.
    • 25: CommentAuthorZenon
    • CommentTime1 May 2023 zmieniony
     
    To jest usystematyzowane.
    Każdy RAMCART jest kompatybilny w dół. Np, ten o pojemności 1MB z powodzeniem używany może być jak 128k.
    Przełączniki, jumpery, zostały dodane tylko po to by używać pojemniejszego RAMCARTA na istniejącym oprogramowaniu dla wersji 128k, bo póki co nie ma oprogramowania które ogarnia za jednym zamachem np cart 4MB.
    Jager stworzył programy do obsługi max 256k, tzw. DOUBLE RAMCART, jest też oprogramowanie dla 1MB, ale i tak trzeba do niego dobierać się po kawałku, znaczy się 4x256k.
    RAMCART 8MB jest jednocześnie dowolnie mniejszym RAMCARTEM np o pojemności 1MB, 4MB.... pozostałej pamięci po prostu nie używasz. Tym samym dla mniejszej pojemności nie używasz rejestru $D501.
    Rejestr ten używany jest dla wczesnej wersji 1MB, by można było używać całej pojemności modułu, bo oprogramowanie które istniało nie pozwalało rejestrem $D500 adresować wszystkich banków, stąd wymyśliłem taki myk, że rejestr $D501 symuluje przełączniki.
    Ogólnie, wszystko co trzeba opisane jest w magazynach SERIOUS już jakieś 23 lata temu + oryginalna instrukcja.
    Jeżeli powstanie oprogramowanie dla dużych pojemności, o przełącznikach, jumperach można zapomnieć, ale.... twórca oprogramowania o tym zadecyduje. Moduł jest na to przygotowany.
    Powtórzę, każdy następny, pojemniejszy model jest kompatybilny w dół, bez przeróbek, a nadmiar pamięci, banków, po prostu się nie używa, czytaj, nie adresuje. Ot, tyle
    • 26:
       
      CommentAuthorgienekp
    • CommentTime2 May 2023
     
    Ja mam 8Mbajtowy i mam takie pytanie.
    1. Te większe są w nowej koncepcji bez przyciskowo-jumperowej, czy są jakieś tajne "guziki" np. na PCB?
    2. Jak wykryć jaki jest pojemny RAMCART?
    3. Co się stanie jak zaadresuje powyżej 8MB? Poleci w maliny, czy się przekręci i nadpiszę?
    • 27: CommentAuthorZenon
    • CommentTime2 May 2023 zmieniony
     
    1. Najpewniej Galtron na płytce zrobił pola lutownicze które na stałe trzeba zlutować, sądzę jednak że zrezygnował z tego by wygospodarować miejsce na ekektronikę.

    2. Wpisać do poszczególnych banków, wystarczy kilka bajtów, i zobaczyć od jakiego numeru, bank zostaje nadpisany.
    Np bank0, wpisujesz pod adresy $8000... 10, 10, 10
    Bank1 ... pod adresy $8000... 11, 11...
    Etc.... i odczytujesz czy wpisane wartości są zgodne.
    I, jeżeli przy kolejnym wpisie do banku X, np. wartości 100, 100, odczytasz że w banku0 jest 100, to został nadpisany. Odczyt banku0 powinie dać 10....
    Słowem, do sprawdzenia wykorzystuje się fakt "zawijania adresów"
    To trzeba robić z głową bo pomyłka wyboru banku przy odczycie da poprawny wynik, choć rzeczywisty bank prawidłowo wybrany wykaże że nastąpiło nadpisanie.

    3. Nadpisze się, czytaj punkt2.
    • 28: CommentAuthormono
    • CommentTime2 May 2023
     
    • 29:
       
      CommentAuthorgienekp
    • CommentTime2 May 2023
     
    Jak to się ładnie zawija a tych kartów nie ma znowu nieskończenie wiele to może takie algo:
    Wpisuje FF do pierwszego banku z puli 32MB. Sprawdzam czy FF jest w pierwszym banku dla 16MB. Jeżeli jest to cart NIE JEST 32MB.
    Sprawdzam w pierwszym banku 8MB. Jeżeli jest to cart NIE JEST 8MB. itd. Aż pojawi się NIE FF, czyli wiadomo, że dane się już nie rolują.
    • 30:
       
      CommentAuthorjhusak
    • CommentTime2 May 2023 zmieniony
     
    Zadziała, jeśli nie będzie kartów np. z 3 pamięciami :) Sam tak chciałem wykrywać ilość banków w JatariCart, a właściwie ilość chipów. Przy czym myślałem, żeby sprawdzać ostatni bank. Ale szkoda cykli zapisu flash, więc zrezygnowałem, zwłaszcza, że to w zasadzie niepotrzebne, bo potrzebne było przy formatowaniu, a to da się weryfikacją ogarnąć.
    • 31: CommentAuthorZenon
    • CommentTime2 May 2023 zmieniony
     
    Tylko nie sprawdzaj na FF, tylko inne wartości, i do kilku komórek wpisz coś.
    Dlaczego... bo zazwyczaj wykasowana pamięć zawiera FF i to cię zmyli, albo jest już czymś zapisana i przypadkowo trafisz na to co nie trzeba. Zapis trzech do pięciu komórek i sprawdzenie powinno skutkować dobrym rozpoznaniem co za model.
    Albo inaczej, przed zapisem dokonaj odczytu, dopiero potem zapisz ją inną wartością i sprawdzaj co dalej się dzieje
    • 32:
       
      CommentAuthorjhusak
    • CommentTime2 May 2023
     
    Ale wykasowana sram też? Na pewno trzeba zrobić test zapisu kilku wartości, minimum ff, 55, aa, i 00.
    • 33:
       
      CommentAuthorgienekp
    • CommentTime2 May 2023 zmieniony
     
    OS ATARI zdaje się, że robi NORa raz i dwa. W sumie można zrobić NORa FF, posprawdzać i potem drugi NOR wróci wartości. Jak się bity negują w odpowiednich bankach to wszystko gra.
    I to się robi raz przy formatowaniu. Potem pojemność można zapisać w jakiejś komórce.
    • 34: CommentAuthorZenon
    • CommentTime2 May 2023
     
    No tak, ale ty chcesz sprawdzać ile masz pamięci a nie czy jest to pamięć zapisywalna, więc NORy niepotrzebne. Musisz sprawdzić tylko czy komórka się nadpisuje. Owszem, NORy mogą być pomocne gdy nie chcesz utracić pierwotnej zawartości komórki
    • 35:
       
      CommentAuthorgienekp
    • CommentTime2 May 2023
     
    A da się jakoś wykryć czy RAMCART (wersja 8MB) jest w trybie zapisu lub odczytu? Bo tam bit 0 neguje swoje znaczenie.

    Drugie pytanie techniczne, czy jak np. pierwszy bank (numer 0) NIGDY nie będę odcinał ale zostawiał normalnie dla ATARI to będzie to działać normalnie? Odłączenie carta powoduje sprzętową reakcję i trzeba się ratować "lda TRIG3, sta GINTLK". Jeżeli RAM od RAMCARTa działałby normalnie to łatwiej byłoby zrobić obsługę, że nigdy nie jest odłączany, tylko na wyjściu zostawia mu się np. bank 0. Strata 16kB ale dużo łatwiej to oprogramować.

    Próbuje zrobić konwerter ATRów do RAMCARTa bo dla innych cartów udało się to bez problemu. Tutaj jest niemały kłopot. Jeżeli weźmiemy największego 32MBajtowego to jeżeli z każdego banku 16kB wezmę 1kB na procedury (niestety muszą być skopiowane w każdym dużym banku) to samych sektorów 256 wychodzi 122880. I albo przy każdym dostępie do sektora trzeba liczyć dzielenie z resztą przez 60, albo szybka tablica robi się na 0.5MB. Dużo łatwiej by było jakby jeden z banków nie był przełączany jak w S-XEGS.
    • 36: CommentAuthorZenon
    • CommentTime2 May 2023
     
    Tak, da się wykryć tryb zapisu, odczytu. Jest taka procedurka SW.COM, dołączana do oprogramowania i ona to robi.

    Bank0 możesz zostawić włączony, ale nic to nie da. Musiałby komputer stale być pod zasilaniem. Bo jak go ponownie włączysz i jest tryb Zapis, też to nic nie da, bo rejestr sterujący $D500 jest sprzętowo zerowany, sygnały RD4, RD5=00 i komputer nie rozpoznaje modułu. Można teraz bity D0, D1 rejestru ustawić, ale komp się zawiesi. Bezkarnie możesz ustawić tylko bit D0. Jak to zrobisz ekran się skaszani, bo przełączyła się pamięć, ale zniknęła DL. Naciśniesz reset w Atari, obraz się pojawi bo DL system ulokował pod właściwymi adresami ale w pamięci RAMCARTa i system "widzi" 8kB pamięci RAMCARTA, jako swoją pamięć. Przełączysz na inny bank (pamiętaj o ustawieniu bitu D0), znowu to samo, reset w Atari i wszystko wraca do normy. Jak ponownie wybierzesz poprzedni bank, wszystko będzie już ok, ale zauważ co jest na ekranie.... dlaczego, bo system, Basic, traktował ten bank jako pamięć ekranu.
    Jeżeli ustawisz bit D1, odłączy się Basic, coś tam, coś tam się wykona i całość wisi, bo system poszukuje nagłówka cartridża a go nie ma.
    Dlatego wszelkich przełączeń zapis/odczyt należy dokonywać pod kontrolą procedurki SW.COM, tak zaprojektował to twórca modułu, lata temu.
    I teraz, jeżeli w banku0 jest nagłówek to po włączeniu atari, gdy moduł jest w trybie odczyt, uruchomi się RAMCART i jego program w/g wskazań nagłówka.
    Bank0 jest wyróżnionym bankiem ZAWSZE, ZAWSZE tylko z niego można odpalić moduł gdy włącza się zasilanie.
    • 37:
       
      CommentAuthorgienekp
    • CommentTime2 May 2023
     
    D1 odłączy BASIC?
    Na atariki jest, że "bit 0: włącza górne 8KB". Więc bezpieczne jest chyba D1?

    Rozumiem, że pod emulatorem wstaje CAR w konfiguracji RO $D500=$00 i $D501=$00?
    • 38: CommentAuthormono
    • CommentTime2 May 2023 zmieniony
     
    Tak. Rejestry wewnętrzne carta są zerowane przy "Cold Start" (przypominam, że w emulatorze Atari800 to jest równoważne włączeniu zasilania).

    Edit: BASIC znajduje się w obszarze $A000-$BFFF, czyli tam gdzie jest górna część banku cartridge'a sterowana bitem 0.
    • 39: CommentAuthorPawex (RTG)
    • CommentTime2 May 2023 zmieniony
     

    gienekp:

    Próbuje zrobić konwerter ATRów do RAMCARTa

    o tak, to by było coś!

    Oczywiście cały czas liczymy też na to, że powstanie nowy soft do (pełnej) obsługi ram-cartów powyżej 256K.
    • 40: CommentAuthorZenon
    • CommentTime2 May 2023
     
    No tak, pomyliłem bity.
    D0 steruje linią RD5, D1 linią RD4. :(
    • 41:
       
      CommentAuthorgienekp
    • CommentTime2 May 2023 zmieniony
     
    Mam ostatnią prostą. Mam plik CAR, wszystko tip-top złożone.
    Zaczynaja ładować mi się sektory ale mam takie cudo.
    LDA #$0A
    STA $D500
    jak złapie na breakpoincie to na polecenie CART pokazuje mi
    Main cartridge
    Type: 081 (Ram-Cart 4 MB cartridge)
    Image: base.car (CART)
    Memory: $8000-$9FFF: On $A000-$BFFF: On
    Access: Read Only
    Bank: $01 128K Module: $00 (_____)


    Dlaczego Bank 1?
    Przecież $0A to 00001010
    6 starszych bitów to 000010 a to jest 2
    Myślałem, że jakaś numeracja przesunięta ale faktycznie czyta mi nie z tego banku.
    Bit 3 jest jakiś nieużywany?
    • 42: CommentAuthormono
    • CommentTime3 May 2023
     
    Ponieważ bit 2 jest odpowiednikiem przycisku A wybierającym moduły po 128K. Czyli banków 16K w ramach modułu 128K mamy 8, na co potrzeba 3 bitów. Są to bity (od najmłodszego) 3,4,5. Pozostałe bity wybierają moduł 128K (czyli de-facto są dalszymi bitami wybierającymi numer banku) i są to kolejno 2,6,7, i dalej z rejestru MODSEL ($D501) 0,1,2,3,4.
    Oczywiście kiedy nie obchodzi Cię kolejność zapisywanych banków, wtedy nie musisz się przejmować kolejnością bitów w BANKCTL ($D500), ale jeśli chciałbyś mieć w obrazie carta wszystko po kolei, to wtedy kolejność bitów wyznaczających numer banku ma znaczenie.
    • 43:
       
      CommentAuthorgienekp
    • CommentTime3 May 2023
     
    Ło matko, kto to wymyślił? :/
    No u mnie ma znaczenie bo konwertuje ATR do CAR. Już się kapnąłem, że bit 3 jest najwcześniejszy. DOS się ładnie wczytał, daje DIR a tu sieczka. :)
    Ale sprawa nie jest jeszcze przegrana. Bo mam 3 wyjścia:
    - przeliczać przeplatankę na bierząco
    - mam tablicę sektorów, więc ją zrobić przeplataną
    - poukładać sektory ATR w danej kolejności

    Jak w emulatorze przejść na zapis?
    • 44: CommentAuthorZenon
    • CommentTime3 May 2023
     
    Sterowanie bitem D2 to pozostałość po oryginalnym RAMCARCIE. Jako rejestr użyty był układ 74174, mający tylko 6 przerzutników. D0, D1 - włącz/wyłącz.
    D3, D4, D5, wybór banku, D6, D7 nieużywane. Bit D2=1 blokował dostęp do RAMCARTA. Kiedy Jager zapytał czy da się go rozbudować do większej pojemności... hmmmm.... brak bitów do sterowania. Więc wymyśliłem. Po co komu potrzebna blokada dostępu. I tak bit D2 użyty został do wyboru dodatkowych 128kB i powstał DOUBLE RAMCART 128/256. Powstało oprogramowanie i tak zostało. Ale ten podział jest tylko w naszej głowie i w oprogramowaniu, co oczywiste.
    I teraz.... Jeżeli ktoś tworzy sobie swoje oprogramowanie to wymyśleć może to inaczej. Np. D5 dokonuje wyboru 2x128kB, a bity D4, D3, D2 wybierają banki. Zrozumiałe że wtedy stosowanie przełączników nie ma sensu. A jak są w module, to moduł pracować będzie błędnie, bo przełącznik steruje D2 a nie program. Ale jak przełączników nie ma.... to hulaj dusza.
    Podział pojemniejszego modelu na moduły po 128k to dlatego, by działało używając istniejącego oprogramowania. A to obsługuje tylko 128kB, lub 256kB dla DOUBLE RAMCARTA.
    Jak model nie ma przełączników to bity D2 i pozostałe wzwyż traktować można jako bity wyboru banku. To programista zdecyduje co z tym zrobić i jak przypisać znaczenie bitów. Musi mieć jednak świadomość że inne przypisanie skutkować będzie błędną pracą RAMCARTA na starszym oprogramowaniu.
    • 45:
       
      CommentAuthorgienekp
    • CommentTime3 May 2023
     
    Ok, tylko na razie jestem pod emulatorem i musze jakąś zgodność trzymać. Więc mam kolejność jak w pliku CAR. Ale dalej mi się nie zgadza.
    Według opisu dla trybu RO jaką wpisać liczbę do $D500, żeby wybrać:
    Bank 2
    Bank 3
    ?
    • 46:
       
      CommentAuthorgienekp
    • CommentTime3 May 2023 zmieniony
     
    Coś się gdzieś nie zgadza. Albo ja czegoś nie kumam, albo opis jest zły albo coś nie tak w emulcu.
    lda #$06
    sta $D500

    W 4MB włącza bank 0 a w 8MB bank 8. A nie powinno być różnicy.

    Przeszedłem na CAR 8MB i zadziałało, a 4MB sieczka na wyższych sektorach.
    Kolejność bitów też robię inaczej i doszedłem metodą testów:
    764325 10

    Obawiam się, że te DOSy to one nie dadzą rady z takimi wielkimi dyskietkami.

    P.S. Działający obraz 8MB jest skompresowany bo chłopcy nie przewidzieli, że będą śmigać CARy dla RAMCARtów ;)
    • 47: CommentAuthorZenon
    • CommentTime3 May 2023 zmieniony
     
    Tryb zapis, bank2 wpisujesz 00010011, bank3 00011011
    Tryb odczyt, bank2 wpisujesz 00010010, bank3 00011010

    Problemy z 4MB i 8MB
    Wymagają by rejestr $D501 był odpowiednio ustawiony. Do wyboru banku używa się dwu rejestrów. Np. $D501=00000000, $D500=00010011 i rejestrem $D500 zaadresujesz banki z przestrzeni 1MB,tu jest to bank2.
    Ale $D501=00000001, $D500=00010011 jest to bank2 z kolejnej przestrzeni 1MB, więc nie jest tym samym bankiem2 co poprzednio. I tu rejestr $D500 adresuje banki z kolejnej przestrzeni 1MB
    • 48: CommentAuthormono
    • CommentTime3 May 2023 zmieniony
     
    Kartridże 8M wzwyż nie mają już przycisków i wszystko prócz R/W jest kontrolowane rejestrem, więc bit 2 przełącza moduł 128K - czyli bank 8.
    Cart 4M ma przyciski ABC więc jeśli nie włączyłeś opcji "Ram-Cart ABC jumpers" jako "installed" to bity 2,6,7 są nieaktywne w rejestrze, a więc liczą się tylko 3,4,5 - a te masz wyzerowane. Stąd bank 0.
    • 49:
       
      CommentAuthorgienekp
    • CommentTime3 May 2023 zmieniony
     
    Tak, $D501 obsługuję cały czas.
    Zgadza mi się z tym co Zenon napisał, RO: bank 2 to $12 a bank 3 to $1A. A to oznacza, że bit-5 spada na pozycje 2 przesuwając w górę 2/3/4.
    Na razie oleje 4MB bo plik CAR robi się niejednoznaczny.

    Teraz konwerter co zamieni CAR na XEX do wgrywania na real ATARI i sprawdzamy czy zadziała już na docelowym pudełeczku.

    Emulacja tych CAR w ATARI800 niesamowicie ułatwia robotę. Toż to dwa światy, pisanie z emu i bez.

    Da się w emulatorze w czasie działania przejść na RW?
    • 50: CommentAuthormono
    • CommentTime3 May 2023
     
    Alt+C i tam opcja R/W :)