Programowanie: Jak stwierdzić obecność SpartaDOS X oraz jego konfigurację pamięci

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:30, 29 wrz 2006
Mikey (Dyskusja | wkład)
(Opis dla niekoderów. Requiested by sikor. Silwuple.)
← Previous diff
Wersja z dnia 14:32, 29 wrz 2006
Epi (Dyskusja | wkład)
(i po co dirtyhaki)
Next diff →
Linia 1: Linia 1:
-Procedura sprawdza obecnosc SpartaDOSX oraz jego konfigurację pamięci.+Procedura sprawdza obecność SpartaDOS X oraz jego konfigurację pamięci.
Wynik w akumulatorze, znaczenie poszczególnych wartości podane w komentarzach na końcu. Wynik w akumulatorze, znaczenie poszczególnych wartości podane w komentarzach na końcu.
-Wersja polska niedostepna. +Wersja polska niedostępna.
<pre> <pre>
Linia 10: Linia 10:
; ;
-p0 equ $f0+p0 equ $f0
sparta_detect equ * sparta_detect equ *
Linia 26: Linia 26:
lda $a lda $a
 + sec
 + sbc <$150
sta p0 sta p0
lda $b lda $b
 + sbc >$150
sta p0+1 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. ; ok, hopefully we have established the address.
Linia 44: Linia 39:
lda (p0),y lda (p0),y
rts rts
-no_sparta lda #$ff +no_sparta lda #$ff
rts rts

Wersja z dnia 14:32, 29 wrz 2006

Procedura sprawdza obecność SpartaDOS X oraz jego konfigurację pamięci. Wynik w akumulatorze, znaczenie poszczególnych wartości podane w komentarzach na końcu. Wersja polska niedostępna.

; 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
                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
                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 

Personal tools