Wykrycie VBXE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 10:09, 11 kwi 2009
KMK (Dyskusja | wkład)

← Previous diff
Wersja z dnia 13:56, 22 kwi 2009
KMK (Dyskusja | wkład)
(++)
Next diff →
Linia 1: Linia 1:
-Procedura wykrycia [[VBXE]] na stronie $D6 lub $D7:+Procedura wykrycia rdzenia FX [[VBXE]] na stronie $D6 lub $D7.
 +== Kod ==
<pre> <pre>
; ;
Linia 33: Linia 34:
</pre> </pre>
-Wywołanie <code>JSR VBXE_DETECT</code> wraca z ustawionym znacznikiem C, gdy VBXE w komputerze nie ma, lub ze skasowanym znacznikiem C, gdy VBXE wykryto. W tej ostatniej sytuacji pod adresem _vbxe_write+2 (1 bajt) jest numer strony, na której zdekodowana jest karta.+== Sposób użycia ==
 +Wywołanie <code>JSR VBXE_DETECT</code> 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:
-Sposób działania: podprogram próbuje podłączyć bank 0 VRAM-u jako okno MEMAC A (pod $2000-$3FFF) i sprawdza, czy się coś zmieniło w odnośnym obszarze pamięci.+$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. Procedurę w powyższej postaci można wywołać tylko raz.
 +
 +== Działanie ==
 +Podprogram próbuje podłączyć bank 0 VRAM-u jako okno MEMAC A (pod $2000-$3FFF) i sprawdza, czy się coś zmieniło w odnośnym obszarze pamięci.
[[Kategoria:Niezbędnik kodera]] [[Kategoria:Niezbędnik kodera]]

Wersja z dnia 13:56, 22 kwi 2009

Procedura wykrycia rdzenia FX VBXE na stronie $D6 lub $D7.

Kod

;
; 2009 by KMK/DLT
;
vbxe_detect
        jsr ?try
        bcc ?clr

        inc _vbxe_write+2

?try    ldx $3fff
        ldy #$4c
        lda #$80
        jsr _vbxe_write
        cpx $3fff
        bne ?fnd
        jsr ?clr
        inx
        stx $3fff
        lda #$80
        jsr _vbxe_write
        cpx $3fff
        bne ?fnd
        sec
        .byte $24
?fnd    clc
?clr    lda #$00
_vbxe_write
        sta $d600,y
        rts

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 okno MEMAC A (pod $2000-$3FFF) i sprawdza, czy się coś zmieniło w odnośnym obszarze pamięci.

Personal tools