Wykrycie VBXE

From Atariki

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

← Previous diff
Wersja z dnia 09:34, 11 kwi 2009
KMK (Dyskusja | wkład)

Next diff →
Linia 40: Linia 40:
[[Kategoria:Niezbędnik kodera]] [[Kategoria:Niezbędnik kodera]]
 +[[Kategoria:Peryferia 8-bit|VBXE, wykrywanie]]
 +[[Kategoria:Programowanie Atari 8-bit|VBXE, wykrywanie]]

Wersja z dnia 09:34, 11 kwi 2009

Procedura wykrycia VBXE na stronie $D6 lub $D7:

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

        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

Wywołanie JSR VBXE_DETECT wraca z ustawionym znacznikiem C, gdy VBXE w komputerze nie ma, lub ze skasowanym znacznikiem C, gdy VBXE wykryto. W tej sytuacji pod adresem _vbxe_write+2 (1 bajt) jest numer strony, na której zdekodowana jest karta. Gdy VBXE nie ma, procedura wraca z ustawionym znacznikiem C.

Sposób działania: podprogram próbuje podłączyć bank 0 VRAM-u jako okno MEMAC A (w obszarze $2000-$3FFF) i sprawdza, czy się coś zmieniło w tym obszarze pamięci.

Procedurę w powyższej postaci można wywołać tylko raz.

Personal tools