Programowanie: Jak stwierdzić obecność SpartaDOS X oraz jego konfigurację pamięci
From Atariki
Revision as of 14:04, 12 sty 2014; view current revision
←Older revision | Newer revision→
←Older revision | Newer revision→
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]
