@pajero: Nie wiesz jak SDX jest skonfigurowana czyli czy jest w pamięci bazowej, pod ROM-em, czy w banku pamięci. Nie wiesz w którym banku pamięci. Nie wiesz też jaki jest nośnik na którym masz SDX i wiedzieć nie możesz, bo już aktualnie SDX jest:
1. W wersji wbudowanej do środka komputera (intSDX).
2. Na wielu różnych cartridgeach (z różnymi schematami bankowania i używającymi różnych rejestrów do przełączania).
3. Na różnych nowych urządzeniach (również pod różnymi adresami).
A kto wie co przyniesie przyszłość - czy SDX nie będzie ładowany z dyskietki i nie będzie siedział całkowicie w pamięci dodatkowej, albo w VBXE.
Nie ma więc jedynego słusznego adresu i jednej słusznej metody. Żeby odłączyć moduł musiałbyś:
1. Rozpoznać czy SDX jest włączony.
2. Wywołać funkcję JHWCTRL która nie jest publiczna.
Ale to i tak nie gwarantuje poprawnego załadowania Twojego programu, bo jest jeszcze ExtRAM.
A skoro ładujesz dane do banków ExtRAM, to wypadało by:
1. Dowiedzieć się gdzie SDX ma bank systemowy i czy przypadkiem nie jest on w ExtRAM.
2. Omijać go przy ładowaniu danych (bo tam raczej będzie siedzieć procedura obsługująca I/O).
A jak potrzebujesz 128KB dodatkowej pamięci a masz 130XE? To bank systemowy musi zostać zniszczony (jak Kartagina).
Proponuję się więc nie przejmować SDX, niczego nie odłączać, a zdać się na użytkownika który i tak grę raczej będzie ładował z loadera :) albo użyje X lub #.
Edit: Sprecyzowanie dlaczego należy omijać bank systemowy.
Edit: Skoro potrzebujesz CIO i urządzenia D: to pewnie zamiast loadera potrzebny będzie jakiś GameDOS. Czemu właściwie używasz CIO a nie wpakujesz wszystkiego do jednego .XEX-a, choćby i megabajtowego, i nie porozmieszczasz samodzielnie wszystkiego po pamięci jak Ci pasuje? Gra ładowałaby się nawet z najprostszego loadera a nikt nie zabrania wykonywania bloków init.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje