Programowanie: Jak stwierdzić obecność SpartaDOS X oraz jego konfigurację pamięci
From Atariki
(Różnice między wersjami)
Wersja z dnia 11:03, 22 lip 2008 KMK (Dyskusja | wkład) (stara metoda w następnej wersji przestanie działać) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) |
||
Linia 61: | Linia 61: | ||
; if A=anything else -> BANKED mode, and A is the bank number | ; if A=anything else -> BANKED mode, and A is the bank number | ||
</pre> | </pre> | ||
+ | |||
+ | == Zobacz też == | ||
+ | |||
+ | * [http://www.atari.org.pl/forum/viewtopic.php?id=11884 Poświęcony tej procedurze wątek] na [[Atari Area]] | ||
[[Kategoria:Niezbędnik kodera]] | [[Kategoria:Niezbędnik kodera]] |
Aktualna wersja
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]