1 Ostatnio edytowany przez axg (Wczoraj 23:16:30)

Cześć,

Znalazłem taki oto projekt carta na PCBway i zamówiłem sobie płytki : https://www.pcbway.com/project/sharepro … rCart.html

Polutowałem wszystko tak jak trzeba pod wersję 128K (27010) no i przyszedł czas na zrobienie wsadu.
Jako ze romy mialem w rozmiarze 8kB to na koncu każdego z nich z pomoca winhex'a wkleiłem 8192 zer i zrobiłem paczkę z 8x16K. Jako pamięć do carta użyłem eproma M27C1001, flash 29F001 też działa  .
Po wgraniu wsadu do pamięci i uruchomieniu na atarce mam do dyspozycji tylko ostatnią grę w Altirra tak samo. W jaki sposób przełączyć się na inny bank carta ?
Czy do wyboru innego banku z grą trzeba napisać jakieś menu z wyborem czy jednak robię coś nie tak ?
Jako że z programowania jestem zielony to z pomocą chatagpt próbowałem wygenerować jakieś menu i poźniej to skompilować ale bez powodzenia. W razie czego wklejam to co wygenerował czat i wsad .
Czy znajdzie się ktroś kto pomoże w uruchomieniu tego carta ?

Post's attachments

cart1.rom 128 kb, liczba pobrań: 2 (od 2025-11-21) 

menu4.asm 1.95 kb, liczba pobrań: 1 (od 2025-11-21) 

Tylko zalogowani mogą pobierać załączniki.
Atari 65/130XE + SDrive + SIO2SD +xc12 ; AMIGA 600 2Mb + CF IDE+HxC SD ; AMIGA 500 +512Kb; C64 + 1541 +mag; klon A2600

2 Ostatnio edytowany przez laborant (Wczoraj 21:03:19)

Na stronie pcbway w opisie tego carta:

The switching scheme is based on the XE cartridges produced by Atari. Any access within 8000-9FFF will read from the selected 8K bank, and any access within A000-BFFF will read from a fixed bank (the topmost 8K in the ROM). A write to the D5 page (D500-D5FF) sets the current bank.

Czyli po włożeniu w kompa odpala ostatnie 8kb z epromu, gdzie musiałoby być menu z tytułami przełączające banki po 8kb w obszar 8000-9fff i po przełączeniu właściwego wywołujące init tego carta z os romu, aby zastartował. Z tego rozumiem że może być na 128 kilobajtowym epromie 15 gier ośmiokilowych plus 1 bank "stały" - wpięty w obszar A000-BFFF - z menu carta...

3

Czy ten plik menu4.asm ma sens ? Po skompilowaniu i dodaniu na koncu zer tak aby calosc miala 8kb nastepnie wrzuceniu go jako ostatni do obrazu carta nie dziala.

Atari 65/130XE + SDrive + SIO2SD +xc12 ; AMIGA 600 2Mb + CF IDE+HxC SD ; AMIGA 500 +512Kb; C64 + 1541 +mag; klon A2600

4

Na moją głowę AI zrobiło kod, żeby działał z przedostatniego banku ze 128kilo eproma, czyli jako cart B w zakresie 8000-9FFF.  Myślę, że to nie zadziała, bo po ustawieniu banku z grą w ten sposób odłączy się też kod "menu" z pamięci i nie będzie w stanie się dalej wykonywać i zainicjować tego podłączonego właśnie carta.

Patrzę jednak w kod dalej i to ma jakiś sens powiedzmy "literacki" - na pierwszy rzut oka wydaje się, że o coś w tym chodzi na temat, patrząc na etykiety itd, ale nie piszę w Asmie, aby to dokładnie ocenić.

Robi pętlę do CIO, by czytać klawisz i robi SETVBLV czyli ustawia skok przerwania VBL (po narysowaniu całej ramki Antic je generuje). Czyli co ramkę czyta klawisz (chyba ;) Nie widzę natomiast, by ustawiał cokolwiek co wiąże się z inicjalizacją carta w obszarze B (8000-9FFF), żeby go odpalić.

To tylko moje amatorskie spekulacje, orientacyjne :) Może ktoś będzie wiedział coś więcej w kontekście inicjowania CARTa... jak i poprawi moje nieścisłości.

5

Dzięki za pomoc, będe próbował dalej. Zastanawiam się czy za pomocą The!Cart Studio da rade zrobic takiego carta pod tą płytkę.

Atari 65/130XE + SDrive + SIO2SD +xc12 ; AMIGA 600 2Mb + CF IDE+HxC SD ; AMIGA 500 +512Kb; C64 + 1541 +mag; klon A2600

6 Ostatnio edytowany przez laborant (Dzisiaj 11:35:28)

POST #3.

Patrzę jednak z uporem dalej i widzę, że AI chce zainicjować carta B poprzez cold start systemu po udanym odczycie klawisza i załączeniu stosownego banku. Może to i zadziała, jeśli załadujesz rzeczywiste obrazy 8kb cartów. Ale asemblacja tego listingu jest ustawiona na $8000 czyli on sam siebie odłączy z pamięci po wybraniu innego banku. Trzeba przestawić na obszar CART A ($A000) czyli ostatni bank 8kb epromu poprzez skorygowanie listingu. Linia 4 ma brzmieć: .org $A000

Jeszcze są kwestie tego, że wsad "menu" czyli CART A musi mieć odpowiednią strukturę. A więc odpowiednie informacje o skokach i adresie startu tego carta, w komórkach $BFFA i $BFFB powinno być zatem 00 i A0... itd... itp... - więc po skompilowaniu na pewno nie możesz dopełniać tego wsadu zerami do 8kb objętości.

Zatem na końcu wsadu trzeba by jeszcze dopisać pod adresy:
$BFF9 = $60 (init=rts)
$BFFA = $00 (jmp addr lsb)
$BFFB = $A0 (jmp addr msb)
$BFFC = $00 (cart present)
$BFFD = $04 (no sio boot, cart normal, start)
$BFFE = $F9 (init addr lsb)
$BFFF = $BF (init addr msb)

Mniej więcej. Ale możliwe że po reboocie znów odpali się CART A z menu, zamiast gry. Zależy to od konstrukcji tego 1mb-carta, jak przełącza obszary i jakie podaje sygnały dotyczące obecności Cartów do kompa... podpowiedzią jest, że robi to jak carty do XE.