Wykrycie VBXE
From Atariki
| Wersja z dnia 13:56, 22 kwi 2009 KMK (Dyskusja | wkład) (++) ← Previous diff |
Wersja z dnia 12:09, 23 kwi 2009 KMK (Dyskusja | wkład) (→Sposób użycia) Next diff → |
||
| Linia 37: | Linia 37: | ||
| 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: | 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: | ||
| - | $xx40 - "magiczna" wartość $10, oznaczająca rdzeń FX, wersja 1. | + | * $xx40 - "magiczna" wartość $10, oznaczająca rdzeń FX, wersja 1. |
| - | $xx41 - numer rewizji rdzenia (np. $08 = rewizja 08) lub $FF (rewizja 07 lub starsza) | + | * $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. | 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. | ||
Wersja z dnia 12:09, 23 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.
