Wykrycie Sophii
From Atariki
Revision as of 12:36, 16 sie 2023; view current revision
←Older revision | Newer revision→
←Older revision | Newer revision→
[Edytuj]
Sophia 1
Detekcja urządzenia w tej wersji nie jest możliwa.
[Edytuj]
Sophia 2
Detekcja odbywa się za pomocą następującej procedury:
REV = $D015 GRACTL = $D01D ;PMCNTL SOPHIA = $D01E ;IN: ;A-konfiguracja GRACTL ;OUT: ;Z=1-urządzenie jest obecne w komputerze, Z=0-brak urządzenia lub Sophia 1 ;A-konfiguracja GRACTL ;X-sygnatura urządzenia ('S'=$53) ;Y-rewizja urządzenia (n.p. $03) detect_sophia2: pha lda GRACTL ;zachowane zostaną aktualne ustawienia and #%01111110 ;(ale bez zapisu do pamięci nieulotnej) sta GRACTL ;w przypadku gdyby bank rejestrów Sophii był aktywny lda #%10000000 ;uaktywniamy rejestry Sophii sta GRACTL ldx SOPHIA ;czytamy sygnaturę ldy REV ;i rewizję lda GRACTL ;deaktywujemy rejestry Sophii and #%01111110 ;zachowując ustawienia sta GRACTL ;(bez zapisu do pamięci nieulotnej) pla sta GRACTL ;i resetujemy ustawienia GRACTL w GTIA cpx #'S' ;sprawdzamy sygnaturę Sophia 2 rts
Włączenie banku rejestrów Sophii odbywa się kiedy SPCEN=1 (bit 7 GRACTL). Jednakże to, gdzie trafią pozostałe bity zależy od tego czy przed zapisem aktywne były rejestry GTIA czy rejestry Sophii.
W trakcie detekcji może ulec zniszczeniu konfiguracja GRACTL, dlatego użytkownik powinien ją przekazać w akumulatorze.