atarionline.pl Pomoc w zrozumieniu DCART - 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: CommentAuthorascrnet
      • CommentTime22 Dec 2024 02:12 zmieniony
       
      Chodzi o to, aby zrozumieć, jak ten format kartridża działa elektronicznie, aby sprawdzić, czy można go dodać do Ultimate Cart. Moja elektronika jest podstawowa i dodałem dziwny uchwyt na kartridż.

      Mam nadzieję, że twórca pomoże mi zrozumieć proces odczytu tego formatu. :)
      • 2:
         
        CommentAuthorgienekp
      • CommentTime22 Dec 2024 10:12 zmieniony
       
      Sprawa jest dość prosta. W zasadzie jest to Maxflash8MBit z wlutowaną jedną pamięcią 512kB. Czyli bazujemy na "Atarimax 1 MB Flash cartridge (new)", który ma kod w emulatorze 75 ($4B). Czyli trzeba to wziąć i lekko przerobić.

      Co jest identyczne:

      a) bank 8kB w zakresie $A000-$BFFF
      Chyba nie trzeba tłumaczyć.

      b) startuje z banku 0
      Czyli jest to ten Maxflash-NEW, bo te wcześniejsze maxflashe startowały z ostatniego banku i oznaczyli je kodem 42.

      c) przełączamy adresem na stronie $D500
      Jak "byleco" zapiszę do $D500 to włączę bank 0, jak byleco do $D53F to włączę ostatni bank 63-ci.

      d) bank odpina się na adresy od $D580
      Czyli najstarszy bit adresu odpina $A000-$BFFF

      Czym się różni:

      1) ma 512kB (zawsze)
      W zasadzie maxflash też może mieć wlutowaną jedną pamięć, nazywają go MaxFlash4MBit (ale nie ma swojego kodu w emulatorze). Wybranie banku 64-czwartego czyli zapis do $D540 w DCart wybierze bank 0. W maxflashu z wlutowaną jedną pamięcią to nawet nie wiem. Czyli wybór banku w DCart podlega równaniu "nrbanku = ( bajt AND 3F )". Maxflash CHYBA ma "nrbanku = ( bajt AND 7F )"

      2) przełączanie banku tylko na zapis
      Maxflash ma bardzo uproszczoną logikę (za co mu chwała). I nie ważne, czy odczytasz $D500 czy coś zapiszesz do $D500 to włączy się bank 0. Czyli "LDA $D500" lub "STA $D500" wbije bank 0. W DCart przełączy bank tylko zapis czyli STA $D500. LDA system wyboru banków zignoruje.

      3) NAJTRUDNIEJSZY - do strony $D5XX na stałe podłączony jest fragment banku
      Ponieważ strona $D5xx nie reaguje na zapis to można z niej czytać. Mamy tylko 256 bajtów i czytamy fragment danych z ostatnio zatrzaśniętego banku. Bez względu na to czy on jest podłączony pod $A000-$BFFF czy nie.
      Wykorzystujemy bardzo prosty trik w ATARI. Cała magistrala normalnie pracuje. "LDA $D500" dla magistrali carta (A12-A0) to jest offset na banku [ D500 AND 1FFF ]. Jeżeli bank jest podpięty pod $A000-$BFFF to "LDA $D500" zobaczy dokładnie to samo co "LDA $B500" ( $B500 = $1500 + $A000).
      Cały fikołek pojawia się, gdy bank jest wyłączony. Bo wyłączając bank poprzez wpisywanie coś powyżej $D580 tak naprawdę "pobocznie" jakiś bank w zatrzasku wybieramy. Jak wpiszę $D583 to bank odepnie się od $A000-$BFFF, ale w zatrzasku będzie zapamiętane "nrbanku = ( bajt AND 3F )". czyli numer "3". A to oznacza, że zaglądając przez okienko strony $D5xx zobaczę dane z banku 3.

      Od strony hardware to różnica jest:

      I) wybór banku
      maxflash: [ trig = CCTL ] <-widać, że zbocze CCTL (zapis/odczyt $D5xx zmieni nam bank)
      DCart: [ trig = ( CCTL AND nRW ) ] <- widać, że zmieni bank tylko gdy zapiszemy do $D5xx

      II) dostęp do danych (podpięcie pamięci flash)
      maxflash: [ nCE = nS5 ] <- widać, że pamięć flash podłączy się gdy jest S5 (czyli odczyt z $A000-$BFFF)
      DCart: [ nCE = ( nS5 AND ( nCCTL OR nRW ) ) ] <- no tutaj pamięć podłączy się gdy zaglądniemy do banku lub na stronę $D5xx

      Zebrałem to w abcd/1234/I II, żeby łatwiej się było odwołać. Generalnie w 90% przypadków nie będziemy wykorzystywać strony D500 i wtedy to jest zwykły maxflash.

      Są jednak przypadki, że programista produkcją wykorzystał 100% RAM. I np. chcemy automatem zamienić plik ATR (czyli dysk) na CAR (czyli cartridge). No i nie ma gdzie wsadzić procedury odczytu danych z carta. wtedy okienko $D5xx jest jak znalazł. A że okienko przełącza się jak z bankami to mamy w sumie 64 takie okienka. 64 x 256 oznacza, że możemy przekabacić 16kB do ATARI nie zabierając ani jednego bajtu z RAM.

      Teraz siedzę nad zrobieniem DOS dla DCarta. Słabo mi to idzie bo nie znam dosów. Ale MEMLO=$0700 jest bardzo kuszące :)

      Poniżej przykład genialnej gry zrobionej przez Pajero i skonwertowanej automatem atr2dcart, która nigdy nie wyszła na cartridge, gdzie procedury odczytu lecą przez $D5xx.

      Pozostałe info o DCart: ->link<-
      • 3:
         
        CommentAuthorKaz
      • CommentTime22 Dec 2024 14:12
       

      GienekP:

      Teraz siedzę nad zrobieniem DOS dla DCarta. Słabo mi to idzie bo nie znam dosów. Ale MEMLO=$0700 jest bardzo kuszące :)


      Przypomina mi się, że o robieniu własnego DOS-a pisał Fox w dodatku w "Mapa pamięci Atari XL/XE: Dyskowe systemy operacyjne". Może coś Ci to pomoże.
      • 4:
         
        CommentAuthorgienekp
      • CommentTime22 Dec 2024 16:12
       
      No z DOSem to będzie długa przygoda.

      Na razie poprawiłem kompatybilność ATR2DCart z XBIOSem.

      F16 Falcon Strike już w wersji CAR :)
      • 5:
         
        CommentAuthorKaz
      • CommentTime22 Dec 2024 16:12
       
      Dzięki, wszystkie pliki wrzucam do archiwum gier :)
      • 6:
         
        CommentAuthorjhusak
      • CommentTime22 Dec 2024 17:12
       
      @gienekp, ja mam przyczynek zrobiony. Przerobiony F0xDos na taki, co działa na kartridżu. Można go poprawić, bo ten mój działa na plikach dwóch rodzajów i listę nazw ma zaszytą w kodzie. Taki mi był potrzebny. No i zapis plików też tam jest, ale też ograniczony.
      • 7:
         
        CommentAuthorgienekp
      • CommentTime22 Dec 2024 18:12 zmieniony
       
      @jhusak

      Każda pomoc się przyda! Masz to gdzies na GitHubie?
      Mam zrobiony handler "D:". Ale jak widzę do DOSa to jeszcze daleka droga. No musze się zapotarzyć w te wznowione "Mapy Pamięci"...

      W międzyczasie dla sportu. Gra "Klątwa", w wersji maxflash i dcart (bez skoków na D5). Tak, dla testów, żeby sprawdzić czy narzędzia, emulatory i multikarty dobrze wykrywają nagłówki CAR.

      Swoją drogą tę grę kiedyś z kasety wczytywało się dłuuuugo. Z CAR to błysk ciupagi.
      • 8:
         
        CommentAuthorMq
      • CommentTime22 Dec 2024 21:12 zmieniony
       
      @gienekp to wszystko wygląda bardzo ciekawie i obiecująco.

      Czy dał byś radę zrobić AD2044, Klątwę i Władców Ciemności w wersji Maxflash, ale zmieścić je w Maxflash 1MBit(128k)? To by pozwoliło odpalić takie pliki z A8PicoCart, który jest najtańszym multikartridżem i którego nie ukrywam że bardzo polubiłem:-)

      Oczywiście jak rozumiem, te gry robią tylko odczyt, a więc możemy grać, możemy przechodzić całą grę, ale zapisu nie zrobimy, tak? A czy jeśli będzie podłączona stacja dyskietek, to taka gra odpalona z kartridża zrobi zapis na stację dyskietek, czy w tym momencie emulacja stacji w kartridżu przykrywa rzeczywistą stację?
      • 9: CommentAuthorascrnet
      • CommentTime22 Dec 2024 22:12
       
      @gienekp Dzięki za obszerne wyjaśnienie, w Ultimate Cart mam starego Atarimaxa (42) i nowego (75) działającego bez problemów. Próbowałem użyć ich jako bazy, ale to nie zadziałało.

      Po zapoznaniu się ze schematem na Twojej stronie zrozumiałem, że do wyboru należy użyć S5, ale tutaj oparłem się na innych kartridżach, takich jak MEGACART 512K i XEGS 512K. oczywiście to nie zadziałało.

      Teraz, zgodnie z Twoim wyjaśnieniem, muszę go używać, gdy S5 jest włączony, a wcześniej używałem go w odwrotny sposób. :P


      when CART_TYPE_DCART =>
      if (cart_s5_reg = '0') then
      sram_address_in <= "0111111" & cart_addr_reg;
      end if;
      • 10:
         
        CommentAuthorgienekp
      • CommentTime22 Dec 2024 22:12
       
      @Mq

      "Klątwę" ściągłem z bazy AOL i ma 130kB, nie wiem czy to w ogóle wejdzie na 128kB. Z tym zapisem to nie wiadomo jak zrobić, bo można przekierować zapis na stację dysków, ale odczyt i tak poleci z CAR. Wtedy przy odczycie trzeba sprawdzać czy plik ma kopię na dyskietce. Trochę to zakręcone. Sprawę komplikuje też fakt, że emuluję odczyt sektora. Przy odczycie sektora nawet nie wiadomo czy on do jakiegoś pliku należy.

      @ascrnet
      W jakim języku opisujesz zależności hardwarowe? Daj kod z maxflasha (new) to go przekabacimy na DCarta. :)
      • 11: CommentAuthorascrnet
      • CommentTime23 Dec 2024 00:12
       
      @gienekp jest wykonany w FPGA, udostępniam ci mój git fork, w którym dodałem wsparcie, jeśli chcesz to sprawdzić.
      ->link<-
      • 12:
         
        CommentAuthorgienekp
      • CommentTime23 Dec 2024 00:12 zmieniony
       
      @ascrnet

      a VHDL spoko.

      @Mq
      Jest ok?
      A.D. ma dwie dyskietki MD. Da się to jakoś zlepić do jednej?
      • 13:
         
        CommentAuthorMq
      • CommentTime25 Dec 2024 00:12 zmieniony
       
      @gienekp, przecudownie! Obie gry działają z A8PicoCarta. Odpaliłem tylko i pograłem dosłownie po trzy minuty, ale wygląda na to że jest wszystko ok. Normalnie zrobiłeś mi prezent w tę wigilię jakiego nie mógł bym sobie wymarzyć:-)

      A jeszcze pytanie: czy to ma tak być, że przy starcie gry latają najpierw przez chwilę pasy po ekranie i zrywa się synchronizacja na monitorze, a dopiero pojawia się gra? Pod Altirrą synchro nie zrywa, tylko coś tam lata w trybie 0 w tym czasie.

      Czy to się łatwo przerabia tak na kartridże z dyskietek? Te Twoje repozytoria programów do konwertowania to są takie gotowce, że po prostu dajesz atr i dostajesz car?
      • 14:
         
        CommentAuthorgienekp
      • CommentTime25 Dec 2024 16:12 zmieniony
       
      @Mq
      Cieszę się, że spasowało :)

      Cały czas pracuję nad narzędziami do konwersji ATR na CARy. To miganie to dlatego, że w tej wersji wybrałem kopiowanie bez czekania na przerwanie pionowe. Idzie dużo szybciej, ale czasem w niektórych grach ANTIC siedzi na zakresie $A000-$BFFF. Jak się mu podetnie RAM pakując bank to leci to na manowce i miga dopóki gra nie ustawi jeszcze raz obrazu.

      Narzędzie to pochodna atr2dcart czyli atr2max128 (jeszcze w testach więc nie ma na GitHubie). Jak znajdę dlaczego oba nie są kompatybilne z XBIOSem (i jego sztuczkami) to wtedy dam poprawkę i oba polecą z upgradem na githuba.

      W atr2dcart sprawa jest prostsza bo dcart ma procedury na $D5xx i z reguły nic się nie gryzie. Jak nie mamy strony $D5 to trzeba się gdzieś w RAM schować. Robię tak, że puszczam grę w emu, robię zrzut ram i patrzę gdzie może być luka. Potem breakpointy na zakres, jeżeli nic nie zapisuje i RAM jest bezpieczny to w zasadzie:
      atr2max128 Klątwa.atr Klątwa.car $0700


      W tych dwóch grach było jakieś zabezpieczenie i ktoś je złamał (dziwnie). Po wczytaniu pierwszej cześci robi się "Ciepły Reset" i ma ładować dalej. No ale RESET wywala procedury, więc ręcznie podmieniłem kod i żeby nie robiło takich cudów i poszło.

      AD2044 też poszło, ale za diabła nie wiem jak dospawać drugi dysk. No a gra też się prosi, żeby na carcie była.
      • 15: CommentAuthorwoj76
      • CommentTime25 Dec 2024 21:12
       
      @ascrnet Jak już coś próbujesz dodać czy naprawić w UltimateCart to sprawdź na githubie błąd, który zgłosiłem w prawie błędu w obsłudze cartów SIC!
      • 16:
         
        CommentAuthorgienekp
      • CommentTime25 Dec 2024 21:12
       
      @ascrnet

      Pod jakiego FPGAa kompilujesz? Udało Ci się coś? Może coś wymyślimy. Wczoraj AVG dostał betę z DCartem.
      • 17: CommentAuthorascrnet
      • CommentTime26 Dec 2024 01:12 zmieniony
       
      @woj76 Tak, czytałem to, wiem tylko, że SIC! obsługiwany w ultimate cart był pierwszym. czy masz jakiś testowy kartridż, aby sprawdzić, czy mogę spróbować go jakoś załatać? ponieważ wątpię, czy autor robi to dla rzeczy życia nie jest w jego priorytetach. Ale wspierałem małe rzeczy, które rozumiem.

      @gienekp Używam Altera Quartus Lite 15.1.0.185, próbowałem wielu rzeczy, ale nadal nie mogę go uruchomić.
      • 18:
         
        CommentAuthorgienekp
      • CommentTime26 Dec 2024 11:12 zmieniony
       
      Znam Quartusa (od wersji 6) ;). Z tego co widzę to cart siedzi na Max10 czyli jest dobrze.

      Masz jakiś bazowy projekt? To bym go wrzucił do Quartusa (akurat ja robię w 18-tce) i dodał to co uważam, że powinno być dla DCarta.

      Sprawdzimy na raty, najpierw zrobimy to co ma DCart w zgodności z maxflashem a potem w drugim kroku dodamy obsługę D5.

      Edit.
      Bazujesz na projekcie: ->link<- ?
      Nawet nie wiedziałem, że to jest Open. :)
      Tam jest jeszcze cześć softwarowa do poprawki...
      • 19: CommentAuthorascrnet
      • CommentTime26 Dec 2024 13:12
       
      @gienekp Jest to oryginalny projekt i podoba mi się to, ponieważ możesz dodać wsparcie dla kartridża po swojej stronie, gdy kartridż nie jest zbyt popularny na przykład w USA. Przesyłam moje zmiany do mojego FORK, a następnie robię MR do oryginalnego projektu „tutaj możesz spędzić miesiące lub lata czekając na zatwierdzenie przez twórcę”.

      Co do Altera Quartus Lite to używam tej wersji bo wiem, że dobrze działa z Ultimate CART, nie wiem czy będzie działać z wyższą wersją. Dlatego dzielę się z wami moim FORK, ponieważ mam wsparcie dla kartridża Atarimax (75), które zostało wysłane miesiące temu do głównego projektu, ale wciąż czeka na zatwierdzenie.

      Z tego, co widzę, D5 jest obsługiwany, w przeciwnym razie wiele kartridży nie działałoby.
      • 20:
         
        CommentAuthorgienekp
      • CommentTime26 Dec 2024 13:12
       
      Ok, widzę Twojego forka.

      Skompilowałem też oryginał. Wygląda na to, że mój Quartus 18 Lite ogarnia.

      Rozumiem, że do zmiany jest VHDL oraz ultimate.c i pff.c dla NIOS II ?
      • 21: CommentAuthorascrnet
      • CommentTime26 Dec 2024 15:12
       
      @gienekp idealnie i działa w Ultimate Cart w nowej skompilowanej wersji 18?

      Jeśli w VHDL jest logika bankowania kartridży, w ultimate.c jest logika odczytu sd i walidacji dozwolonych formatów kartridży, to pff.c jest biblioteką czytnika kart sd. „Aktualizowałem to kiedyś, ale nie zauważyłem dużych zmian, dlatego zostawiłem oryginalny projekt”.
      • 22:
         
        CommentAuthorgienekp
      • CommentTime26 Dec 2024 16:12 zmieniony
       
      Najpierw "ultimate.c"

      Dodajmy DCart razem z J(ATARI)Cart, będzie łatwiej testować.
      #define CART_TYPE_JACART_8.     40	// 8k
      #define CART_TYPE_JACART_16. 41 // 16k
      #define CART_TYPE_JACART_32. 42 // 32k
      #define CART_TYPE_JACART_64. 43 // 64k
      #define CART_TYPE_JACART_128. 44 // 128k
      #define CART_TYPE_JACART_256. 45 // 256k
      #define CART_TYPE_JACART_512. 46 // 512k
      #define CART_TYPE_JACART_1024. 47 // 1024k
      #define CART_TYPE_DCART. 48 // 512k


      else if (car_type == 104) cart_type = CART_TYPE_JACART_8;
      else if (car_type == 105) cart_type = CART_TYPE_JACART_16;
      else if (car_type == 106) cart_type = CART_TYPE_JACART_32;
      else if (car_type == 107) cart_type = CART_TYPE_JACART_64;
      else if (car_type == 108) cart_type = CART_TYPE_JACART_128;
      else if (car_type == 109) cart_type = CART_TYPE_JACART_256;
      else if (car_type == 110) cart_type = CART_TYPE_JACART_512;
      else if (car_type == 111) cart_type = CART_TYPE_JACART_1024;
      else if (car_type == 112) cart_type = CART_TYPE_DCART;
      • 23:
         
        CommentAuthorgienekp
      • CommentTime26 Dec 2024 16:12 zmieniony
       
      W "atari_rom.vhd" bedzie więcej poprawek

      constant CART_TYPE_JACART_8 : integer := 40;
      constant CART_TYPE_JACART_16 : integer := 41;
      constant CART_TYPE_JACART_32 : integer := 42;
      constant CART_TYPE_JACART_64 : integer := 43;
      constant CART_TYPE_JACART_128 : integer := 44;
      constant CART_TYPE_JACART_256 : integer := 45;
      constant CART_TYPE_JACART_512 : integer := 46;
      constant CART_TYPE_JACART_1024 : integer := 47;
      constant CART_TYPE_DCART : integer := 48;


      -- atarimax 8mbit bankswitching
      when CART_TYPE_ATARIMAX_8MBIT | CART_TYPE_ATARIMAX_8MBIT_NEW | CART_TYPE_JACART_1024=>
      high_bank_enabled <= not cart_addr_reg(7);
      bank_out <= cart_addr_reg(6 downto 0);

      -- jataricart
      when CART_TYPE_JACART_8 => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "0000000";
      when CART_TYPE_JACART_16 => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "000000" & cart_addr_reg(0);
      when CART_TYPE_JACART_32 => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "00000" & cart_addr_reg(1 downto 0);
      when CART_TYPE_JACART_64 => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "0000" & cart_addr_reg(2 downto 0);
      when CART_TYPE_JACART_128 => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "000" & cart_addr_reg(3 downto 0);
      when CART_TYPE_JACART_256 => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "00" & cart_addr_reg(4 downto 0);
      when CART_TYPE_JACART_512 => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "0" & cart_addr_reg(5 downto 0);

      -- dcart
      when CART_TYPE_DCART => high_bank_enabled <= not cart_addr_reg(7); bank_out <= "0" & cart_addr_reg(5 downto 0);



      Nie wiem czemu jest:
      elsif (new_cart_type = CART_TYPE_ATARIMAX_8MBIT_NEW) then
      bank_out <= "0000000";


      bo tam domyślnie jest start z banku 0. Wiec dla nowo dodanej grupy nie potrzeba nic dodawać w tym miejscu.
      • 24: CommentAuthorascrnet
      • CommentTime26 Dec 2024 16:12
       
      Masz całkowitą rację, kilka dni temu zdałem sobie sprawę, że elsif to za dużo. Nie miałem zamiaru ponownie modyfikować tego projektu, ale usunę go w następnej aktualizacji. :)
      • 25:
         
        CommentAuthorgienekp
      • CommentTime26 Dec 2024 16:12 zmieniony
       
      Po tej pierwszej paczce zmian powinny ruszyć:
      • 26: CommentAuthorascrnet
      • CommentTime26 Dec 2024 18:12
       
      Zrobiłem test z JACART 8Kb do 1024Kb działa idealnie.
      DCART odczytuje go, ale ekran pozostaje czarny, to samo, co mi się przydarzyło.

      Twoje przykłady działają idealnie.
      • 27:
         
        CommentAuthorgienekp
      • CommentTime26 Dec 2024 23:12 zmieniony
       
      Sprawdź czy nagłówek DCart dobrze czyta. Czyli czy to zadziała.

      Edit:
      I co pokazuje testswitch
      • 28: CommentAuthorascrnet
      • CommentTime26 Dec 2024 23:12 zmieniony
       
      Oba przykłady działają bez problemu, załączam zdjęcie przełącznika testowego. :)

      Więc w tym teście wygląda to bardziej jak SIC! niż Atarimax?
      • 29:
         
        CommentAuthorgienekp
      • CommentTime27 Dec 2024 00:12 zmieniony
       
      Na razie jest dobrze :)

      To teraz skupimy się na tej stronie D5.

      Tester poniżej:
      niebieski - zwykły cart 8kB, nie umie wyłączyć banku
      fiolet - zapis do $D501 nie włączył banku 1
      żółty - odczyt z $D501 przełączył bank <- na ten moment tu się chyba zatrzyma
      czerwony - odczyt z $D500 nie odczytał z :$1500 (bank on)
      błękit - odczyt z $D500 nie odczytał z :$1500 (bank off)
      zielony - wszystko gra

      Będziemy teraz zmieniać VHDL aż dojdziemy do zielonego.
      • 30: CommentAuthorascrnet
      • CommentTime27 Dec 2024 01:12 zmieniony
       
      Widzę to na niebiesko.
      • 31:
         
        CommentAuthorgienekp
      • CommentTime27 Dec 2024 08:12 zmieniony
       
      ... a dobra, bo nam się w międzyczasie BASIC włączył (w emulcu mam automat na Option).

      Teraz puść.
      • 32: CommentAuthorwoj76
      • CommentTime27 Dec 2024 10:12
       
      Co do błędu w obsłudze SIC!, mam tylko swojego Popeye-a, który wymaga VBXE, wyślę Ci pliki przez AtariAge z wyjaśnieniem.

      Inne pytanie - skąd się bierze takie piękne obudowy do UlitmateCarta? Na prawdę potrzebuję takie, co najmniej dwie :)
      • 33: CommentAuthorascrnet
      • CommentTime27 Dec 2024 16:12 zmieniony
       
      @gienekp dcart_tester.car jest wyświetlany na żółto, dcart_tester.bin lub dcart_tester.rom nie ładuje się, ponieważ nie ma nagłówka wymaganego dla danego typu banera.

      @woj76 Być może jest to problem z kompatybilnością VBXE, nie mogę ci pomóc, nie mam VBXE, ale nadal zgłaszam to w wątku wsparcia Ultimate Cart na ATARIAGE.

      Ta wersja została stworzona i sprzedana przez użytkownika ATARIAGE, wykorzystuje specjalną płytkę drukowaną i obudowę ATARIMAX. jeśli chcesz zobaczyć zdjęcie, sprawdź ->link<-
      • 34:
         
        CommentAuthorjhusak
      • CommentTime27 Dec 2024 16:12
       
      @gienekp - dyski 130kB można upychać w 120 k poprzez tłumaczenie numeru sektora. Jeśli jest tłumaczony na 0, to jest pusty :) trzeba mieć tylko nieco ponad 2 kB na tę translację. No i można wykorzystać miejsce w banku zerowym na część sektorów.

      Nie mam FoxDosa na githubie :/ wyślę Ci go mailem.
      • 35:
         
        CommentAuthorgienekp
      • CommentTime27 Dec 2024 17:12
       
      @jhusak
      tak, jeśli chodzi o 1 dysk 130kB to tak ogarnąłem, automat sprawdza czy sektor pusty i specjalnie go markuje. Mam tablicę itd.
      Ale jak upchnąć 2 dyski? Jeżeli gra prosi o podmianę? To chyba bez jej modyfikacji to się nie da. No bo gra musi jakoś poinformować, że chcę podmiankę.
      • 36: CommentAuthortebe
      • CommentTime27 Dec 2024 17:12
       
      foxdos jest w przykładach do mads-a, więc jest na githubie

      ->link<-
      • 37:
         
        CommentAuthorgienekp
      • CommentTime27 Dec 2024 17:12 zmieniony
       
      @tebe

      super sprawa!

      edit:
      co to za fikołek ?
      lda:pha:pha
      • 38: CommentAuthormono
      • CommentTime27 Dec 2024 17:12
       
      No jak to co? lda z argumentem, pha z argumentem i pha z argumentem.
      • 39:
         
        CommentAuthorgienekp
      • CommentTime27 Dec 2024 17:12
       
      yyy, że jak? :)
      • 40: CommentAuthormono
      • CommentTime27 Dec 2024 19:12 zmieniony
       
      Aaa, no to: lda bez argumentu, pha bez argumentu i pha bez argumentu. To jest zapis intuicyjny. Tak samo jak lda dupa:tablica,x.
      • 41:
         
        CommentAuthorjhusak
      • CommentTime28 Dec 2024 00:12 zmieniony
       
      @tebe - chodzi o foxDos przerobiony na obsługę kartridża. Jednak tutaj wychodzi, że chyba powinien być taki zwykły - dyskowy z mapowaniem na odpowiednie miejsca w kartridżu, co robi przecież obsługa odczytu sektorów w romie. Chyba, że ją umieścić w pamięci wraz z FoxDosem, wtedy uruchamiamy tegoż FoxDosa i czytamy pliki niby z dyskietki, nie trzeba nic mapować w romie.
      • 42:
         
        CommentAuthorgienekp
      • CommentTime28 Dec 2024 09:12
       
      @jhusak - zwykły z mapowaniem, z małą modyfikacją do procedur z banku 0, żeby MEMLO trzymać nisko.
      • 43:
         
        CommentAuthorjhusak
      • CommentTime28 Dec 2024 10:12 zmieniony
       
      To chyba sobie ogarniesz, bo masz to wszystko zrobione, tylko skok pod prockę odczytu sektora podkładasz. Ja tam pozmieniałem zbyt dużo, żeby to odkręcać - a wszystko dlatego, żeby Kolony się zmieścił w 256 kB flasha, a dokładnie dane RO w 128 kb, a savestates w 120 kB (po 8kB na plik, 15 slotów/plików RW, po 5 na każdy język). Zmieściło się co do bajta, a kompresowane sektory miały po 3kB (każdy kompresowany oddzielnie).

      Tego handlera w ram do procedur w carcie nie mam zrobionego, bo nie musiałem.
      • 44:
         
        CommentAuthorgienekp
      • CommentTime28 Dec 2024 11:12
       
      Tak, spokojnie ogarnę. Fajny ten FOXDOS. Handler mam zrobiony bo swego czasu popełniłem BAS2CAR. Nie miałem tylko loadera XEXów. Tu jest wszystko. :)

      No i teraz widzę co w zasadzie jest minimalnie wymagane dla DOS. Na końcu "jmp dskinv" czyli dokładnie w tym miejscu wchodzi orkiestra z ATR2CAR.

      Jeszcze trzeba dopisać ładne wejście z OSa i procedury boot systemu, żeby porządek był.
      • 45:
         
        CommentAuthorgienekp
      • CommentTime28 Dec 2024 12:12 zmieniony
       
      @ascrnet

      Ulepsz kod VHDL na:
      -- dcart			
      when CART_TYPE_DCART =>
      if (cart_rw_reg = '0') then
      high_bank_enabled <= not cart_addr_reg(7);
      bank_out <= "0" & cart_addr_reg(5 downto 0);
      end if;


      Wyjaśnienie:
      Rodzina maxflashy przełącza bank zarówno na zapis do strony $d5xx jak i odczyt. DCart powinien zareagować tylko na zapis.

      Jeżeli powyższy kod zrobi nam to co chcemy, to na testerze powinien pojawić się kolor CZERWONY :)
      • 46: CommentAuthorascrnet
      • CommentTime28 Dec 2024 16:12
       
      @gienekp jeśli pozostanie na czerwono, umieść go tam, gdzie inne wkłady, które proszą o cart_rw_reg, aby zachować kolejność VHDL. :)
      • 47:
         
        CommentAuthorgienekp
      • CommentTime28 Dec 2024 17:12
       
      Na razie ulepiamy tester :)

      Kolejność to potem i tylko dla czytelności, vhdl generalnie opisuje programowanie współbieżne. To co na górze nie wykonuje się wcześniej niż to co na dole. Nie lubię vhdla wolę Veriloga...

      Bardzo jestem ciekawe czy logika odetnie READ od bankowania.

      Jeżeli tak, to zostanie ostatnia "linijka".
      • 48: CommentAuthorascrnet
      • CommentTime28 Dec 2024 18:12
       
      @gienekp następnie czekać na ....

      w międzyczasie aktualizuję moje repozytorium przykładów formatów kartridży.
      ->link<-

      a także sprawdzam, czy mogę dodać kilka innych, które nie są dla mnie tak skomplikowane. :)
      • 49: CommentAuthorascrnet
      • CommentTime29 Dec 2024 02:12
       
      zaliczka 2025.... bez dalszych ceregieli wycofuję się w milczeniu... xD
      • 50:
         
        CommentAuthorgienekp
      • CommentTime29 Dec 2024 16:12
       
      W dzisiejszy niedzielny wieczór stwierdzam... że FoxDOS jest arcydziełem!

      c.d.n