Wewnętrzne BASIC-i i gry (XEGS) mimo, że leżą w tym samym obszarze adresowym co cart ($A000..$BFFF) są obsługiwane bitami PORTB ($D301). Natomiast prawdziwy cart po włożeniu do slota sygnalizuje ten fakt w rejestrze TRIG3 ($D013) i ten właśnie rejestr sprawdza OS na przerwaniu VBLKD porównując go z GINTLK ($3FA) - jeśli się różnią następuje JMP * co powoduje zwis komputera.
Sparta obchodzi to blokując drugą fazę VBLK przez SEI, przełącza carta po czym aktualizuje zawartość GINTLK. Ot i cała sztuka. Więc rygor o którym pisze toriman1 da się obejść instalując sekwencję rozkazów LDA TRIG3; STA GINTLK na VBLKI, bo to jest ograniczenie OS-a a nie hardware.Nie jestem pewny czy carty które mają tylko rejestry na $D5 powodują ustawienie TRIG3. Edit: Jestem już pewny - wystawienie RD5 przez carta powoduje ustawienie TRIG3, a carty urządzeń zazwyczaj tego nie robią - tylko carty z pamięcią w $A000..$BFFF.
@toriman1: Pinokiu chodzi o mapowanie adresów pod którymi rejestry różnych cartów są widoczne na $D5. Wtedy carty mogłyby mieć bardzo prostą konstrukcję dekodera adresów, ale mapper pozwalałby lokować ich rejestry w prawie dowolnie wybranych obszarach I/O, co pozwoliłoby na włączenie naraz SONari, SIDari, YAMari, SlightSID-a, samplera od Mirage, SIDE i co tam jeszcze kto chce, ale z rejestrami każdego z tych cartów dostępnymi w innych obszarach $D5.
Wydaje mi się, że taki mapper można zrealizować jakąś szybką pamięcią na wejściu której podasz adres, R/W, S4/5 i CCTL a dostaniesz informację o nrze slotu do którego przełączyć adres, dane i informacje o bramkowaniu magistrali danych, sterującej i sygnałów zwrotnych od carta.
Edit: Literówki.
Edit 2: Przykład:
Slot 0: SIDari
Slot 1: SONari
Slot 2: coś co gra muzykę SID-em i AY-kiem.
Mapowanie adresów:
$D500..$D53F RW - aktywacja slotu 0, adres wystawiany dla carta to $D500..$D53F, RW, CCTL i dane przepuszczane
$D540..$D543 RW - aktywacja slotu 1, adres wystawiany dla carta to $D500..$D503, RW, CCTL i dane przepuszczane
$8000..$9FFF R - aktywacja slotu 2, adres bez zmian, RW, S4 i dane przepuszczane
$A000..$BFFF R - aktywacja slotu 2, adres bez zmian, RW, S5 i dane przepuszczane
Slot 0 i 1 jest uaktywniany przy odczycie lub zapisie, slot 2 tylko przy odczycie.
Tylko slot 2 powinien mieć przepuszczane na stałe sygnały RD4 i RD5 - w mapperze mógłby być dostępny rejestr do selekcji slotu, żeby można było przełączać aktywne obszary $8000..$9FFF i $A000..$BFFF z różnych cartów.
Poza tymi obszarami żaden slot nie jest uaktywniany.
niewiedza buduje, wiedza rujnuje