Programowanie: Jak stwierdzić obecność SpartaDOS X oraz jego konfigurację pamięci
From Atariki
(Różnice między wersjami)
| Wersja z dnia 06:20, 29 wrz 2006 Sikor (Dyskusja | wkład) (SDU = brak artka (tylko listing, brak kategorii...) ← Previous diff |
Wersja z dnia 06:42, 29 wrz 2006 Daniel Koźmiński (Dyskusja | wkład) (dodałem kategorię, Sikor mogłeś zrobić to samo zamiast pisać SDU i jeszcze dodatkowo uzewnętrzniać się w komentarzach :P) Next diff → |
||
| Linia 1: | Linia 1: | ||
| - | {{SDU}} | ||
| - | |||
| <pre> | <pre> | ||
| ; sparta_detect.asm | ; sparta_detect.asm | ||
| Linia 34: | Linia 32: | ||
| bcs _nxt | bcs _nxt | ||
| dec p0+1 | dec p0+1 | ||
| - | _nxt dec p0+1 ; dirty hack, MSB of $150 is always 1 so we do a dec instead of sub | + | _nxt dec p0+1 ; dirty hack, MSB of $150 is always 1 |
| + | ; so we do a dec instead of sub | ||
| ; ok, hopefully we have established the address. | ; ok, hopefully we have established the address. | ||
| Linia 42: | Linia 41: | ||
| lda (p0),y | lda (p0),y | ||
| rts | rts | ||
| - | no_sparta lda #$ff | + | no_sparta lda #$ff |
| rts | rts | ||
| Linia 51: | Linia 50: | ||
| </pre> | </pre> | ||
| + | [[Kategoria:Niezbędnik kodera]] | ||
Wersja z dnia 06:42, 29 wrz 2006
; 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 equ $f0
sparta_detect equ *
; if peek($700) = 'S' and bit($701) sets V then we're SDX
lda $700
cmp #$53 ; 'S'
bne no_sparta
bit $701
bvc no_sparta
; we're running SDX, find (DOSVEC)-$150
lda $a
sta p0
lda $b
sta p0+1
sec
lda p0
sbc <$150
sta p0
bcs _nxt
dec p0+1
_nxt dec p0+1 ; dirty hack, MSB of $150 is always 1
; so we do a dec instead of sub
; ok, hopefully we have established the address.
; now peek at it. return the value.
ldy #0
lda (p0),y
rts
no_sparta lda #$ff
rts
; 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
