Wykrycie VBXE
From Atariki
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.