Wykrycie VBXE
From Atariki
Procedura wykrycia rdzenia FX VBXE na stronie $D6 lub $D7.
Spis treści |
Kod dla rdzeni 1.09 i starszych
; ; 2009 by KMK/DLT ; MEMAC_B_CTL = $4c vbxe_detect jsr ?try bcc ?clr inc _vbxe_write+2 ?try ldx $4000 ldy #MEMAC_B_CTL lda #$80 jsr _vbxe_write cpx $4000 bne ?fnd jsr ?clr inx stx $4000 lda #$80 jsr _vbxe_write cpx $4000 bne ?fnd sec .byte $24 ?fnd clc ?clr lda #$00 _vbxe_write sta $d600,y rts
Kod dla rdzenia 1.20
Dla rdzenia 1.20 kod jest identyczny z tym wyjątkiem, że należy przyjąć $5d jako wartość MEMAC_B_CTL
.
Sposób użycia
Wywołanie JSR VBXE_DETECT
wraca z ustawionym znacznikiem C, gdy VBXE nie wykryto lub ze skasowanym znacznikiem C, gdy wykryto. W tej ostatniej sytuacji pod adresem _vbxe_write+2
(1 bajt) jest numer strony, na której zdekodowana jest karta, a pod adresem $xx40 i $xx41 (gdzie "xx" to odpowiedni nr strony, tj. D6 lub D7) znajduje się kolejno:
- $xx40 - "magiczna" wartość $10, oznaczająca rdzeń FX, wersja 1.
- $xx41 - numer rewizji rdzenia (np. $08 = rewizja 08) lub $FF (rewizja 07 lub starsza)
Przyjmuje się, że twórcy rdzeni niezgodnych z FX v.1.0 zadbają o dobranie innej i unikalnej wartości magicznej, co pozwoli na łatwą identyfikację rdzeni i uniknięcie problemów z kompatybilnością oprogramowania.
Procedurę w powyższej postaci można wywołać tylko raz.
Działanie
Podprogram próbuje podłączyć bank 0 VRAM-u jako (charakterystyczne dla rdzenia FX) okno MEMAC B (pod $4000-$7FFF) i sprawdza, czy się coś zmieniło w odnośnym obszarze pamięci.