Programowanie: Jak stwierdzić obecność SpartaDOS X oraz jego konfigurację pamięci
From Atariki
Należy wywołać poniższą procedurę. Wynik w akumulatorze, znaczenie poszczególnych wartości podane w komentarzach na końcu.
; sparta_detect.asm
; (c) idea by KMK, code: mikey
;
; $Id: sparta_detect.asm,v 1.2 2006/09/27 22:59:27 mikey Exp $
; 
p0      = $f0
fsymbol = $07EB
                   
sparta_detect
; if peek($700) = 'S' and bit($701) sets V then we're SDX
                lda $0700
                cmp #$53         ; 'S'
                bne no_sparta
                lda $0701
                cmp #$40
                bcc no_sparta
                cmp #$44
                bcc _oldsdx
; we're running 4.4 - the old method is INVALID as of 4.42
                lda #<sym_t
                ldx #>sym_t
                jsr fsymbol
                sta p0
                stx p0+1
                ldy #$06
                bne _fv
; we're running SDX, find (DOSVEC)-$150 
_oldsdx         lda $a
                sec
                sbc #<$150
                sta p0
                lda $b
                sbc #>$150
                sta p0+1
; ok, hopefully we have established the address. 
; now peek at it. return the value. 
                ldy #0
_fv             lda (p0),y
                rts
no_sparta       lda #$ff 
                rts
sym_t           .byte "T_      "
; if A=$FF -> No SDX :(
; if A=$FE -> SDX is in OSROM mode
; if A=$00 -> SDX doesn't use any XMS banks
; if A=anything else -> BANKED mode, and A is the bank number 
[Edytuj]
