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."