Wykrycie Sophii
From Atariki
(Różnice między wersjami)
												
			
			| Wersja z dnia 11:44, 16 sie 2023 Mono (Dyskusja | wkład) ← Previous diff  | 
				Wersja z dnia 11:45, 16 sie 2023 Mono (Dyskusja | wkład) Next diff →  | 
			||
| Linia 14: | Linia 14: | ||
| ;Z=1-urządzenie jest obecne w komputerze, Z=0-brak urządzenia lub Sophia 1 | ;Z=1-urządzenie jest obecne w komputerze, Z=0-brak urządzenia lub Sophia 1 | ||
| ;A-konfiguracja GRACTL | ;A-konfiguracja GRACTL | ||
| - | ;X-sygnatura 'S' | + | ;X-sygnatura urządzenia ('S'=$53) | 
| - | ;Y-rewizja urządzenia | + | ;Y-rewizja urządzenia (n.p. $03) | 
| detect_sophia2: | detect_sophia2: | ||
| Linia 40: | Linia 40: | ||
| sta GRACTL | sta GRACTL | ||
| - | cpx #'S' ;sprawdzamy sygnaturę Sophia 2 ($53) | + | cpx #'S' ;sprawdzamy sygnaturę Sophia 2 | 
| rts | rts | ||
| </pre> | </pre> | ||
Wersja z dnia 11:45, 16 sie 2023
Sophia 1
Detekcja urządzenia w tej wersji nie jest możliwa.
Sophia 2
Detekcja odbywa się za pomocą następującej procedury:
REV = $D015
GRACTL = $D01D
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
  
  pla
  pha
  ora #%10000000    ;uaktywniamy rejestry Sophii
  sta GRACTL        ;a przy okazji resetujemy ustawienia GRACTL w GTIA
  
  ldx SOPHIA        ;czytamy sygnaturę
  ldy REV           ;i rewizję
  
  lda GRACTL        ;deaktywujemy rejestry Sophii
  and #%01111110    ;zachowując ustawienia (bez zapisu do NVRAM)
  sta GRACTL
  pla
  and #%01111111    ;i finalnie resetujemy ustawienia GRACTL w GTIA
  sta GRACTL
  
  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.
