1 Ostatnio edytowany przez x_angel (Dzisiaj 19:58:21)

Nie wiem do jakiego działu powinien trafić ten post, więc wrzucam po prostu do Sprzęt 8-bit.
Jakiś czas temu walczyłem z cartem DiamondGOS 3 - uparłem się, żeby odpalić go na fizycznym carcie zbliżonym do tego z epoki. Wszystkie opisy w necie twierdzą, że praktycznie nie różni się on od carta SpartaDOS X za wyjątkiem zmienionego adresu. No ale pomimo wielu walk DiamondGOS nie śmigał na carcie od Sparty. I tu z pomocą przyszedł Claude i rozwiązał zagadkę:

"Zrobiłem teraz dokładniejsze przeszukanie całego pliku DiamondGOS v3.rom pod kątem wszystkich trybów adresowania (nie tylko prostego LDA/STA, ale też indeksowanego ,X i ,Y) pod adresami $D5D0-$D5D7. Wynik jest jednoznaczny:

LDA $D5D5          (x8 - w końcówce KAŻDEGO banku, wektor startowy)
LDA $D5D1
LDA $D5D0           (x2)
LDA $D5D0,Y         (x3, różne miejsca w banku 2, 6, 7)
LDA $D5D0,X         (x4, różne miejsca w banku 2, 6)

Czyli w kodzie jest wielokrotnie użyty idiom LDA $D5D0,X - gdzie X trzyma numer żądanego banku (0-7) - to jest ewidentnie ogólny, celowo zaprojektowany sposób "przełącz na bank X" używany w wielu miejscach programu, nie jednorazowy przypadek. W całym 64 KB pliku nie ma ani jednego zapisu (STA/STX/STY) pod $D5D0-$D5D7 - jedyny zapis to STA $D5DC, czyli do zakresu disable (D8−DF).

To rozstrzyga sprawę: DiamondGOS naprawdę różni się od Sparty nie tylko adresem, ale też mechanizmem - select banku robi przez odczyt, a nie zapis (disable owszem, przez zapis - w tym akurat Sparta i Diamond są zgodne). Informacja krążąca w sieci, że różnica to "tylko adres", jest najwyraźniej uproszczeniem/błędem - pewnie ktoś porównał tylko zakresy adresowe z posta na AtariAge, bez sprawdzania polaryzacji R/W na prawdziwym sprzęcie."

https://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=13759

Post's attachments

Diamond_poprawka.png 67.73 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.