Obsługa rozszerzenia pamięci RAM

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 22:06, 9 lis 2011
KMK (Dyskusja | wkład)

← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)

Linia 1: Linia 1:
-== Wykrycie rozszerzenia i obliczenie jego rozmiaru ==+* [[Obsługa standardowego rozszerzenia pamięci RAM]]
 +* [[Obsługa rozszerzenia pamięci RAM typu Axlon]]
 +* [[Obsługa pamięci liniowej 65C816]]
-Poniższa procedura przeprowadza test rozmiaru rozszerzenia pamięci RAM nie niszcząc zawartości tejże pamięci. Procedura musi być ulokowana w całości poza obszarem $4000-$7FFF. Dane wyjściowe: 
- 
-* liczba dodatkowych banków 16k w rejestrze Y (lub 0, gdy komputer ma tylko 64k RAM) 
-* wartości PORTB w tablicy ''banks'' 
- 
-<pre> 
-; etykiety 
-ext_b = $4000 
-portb = $d301 
- 
-; procedura 
-detect_ext 
- lda portb 
- pha 
- 
- ldx #$7f ;zapamietanie bajtow ext 
-_p0 jsr setpb 
- lda ext_b 
- sta bsav,x 
- dex 
- bpl _p0 
- 
- ldx #$7f ;wyzerowanie ich (w oddzielnej petli, bo nie wiadomo 
-_p1 jsr setpb ;ktore kombinacje bitow PORTB wybieraja te same banki) 
- lda #$00 
- sta ext_b 
- dex 
- bpl _p1 
- 
- stx portb ;eliminacja pamieci podstawowej 
- stx ext_b 
- stx $00 ;niezbedne dla niektorych rozszerzen do 256k 
- 
- ldy #$00 ;petla zliczajaca banki 
- ldx #$7f 
-_p2 jsr setpb 
- lda ext_b 
- bne _n2 
- dec ext_b 
- lda portb 
- sta banks,y 
- iny 
-_n2 dex 
- bpl _p2 
- 
- ldx #$7f ;przywrocenie zawartosci ext 
-_p3 jsr setpb 
- lda bsav,x 
- sta ext_b 
- dex 
- bpl _p3 
- 
- pla 
- sta portb 
- rts 
- 
-; podprogramy 
-setpb txa 
- sec ;wartosc licznika mnozymy przez 2 i dodajemy 1 
- rol ;w celu przesuniecia wszystkich bitow w lewo i ustawienia bitu sterujacego OS ROM 
- sta portb 
- rts 
- 
-; zmienne 
-banks .ds 64 
-bsav .ds 128 
-</pre> 
- 
-Zawartość tablicy ''banks'' jest uszeregowana tak, żeby przy zajmowaniu banków w kolejności od jej początku zmniejszyć prawdopodobieństwo konfliktu ze [[SpartaDOS X]] (który to DOS przydziela sobie pamięć rozszerzenia w generalnie odwrotnej kolejności). Wadą procedury jest to, że prawdopodobieństwo tego konfliktu jest różne dla różnych typów rozszerzeń (większe, gdy bit 1 PORTB steruje pamięcią RAM, jak w przypadku rozszerzeń do 576k i 1 MB). Całkowite uniknięcie konfliktu (w tym z ramdyskami itp.) wymaga użycia procedur zarządzania pamięcią SpartaDOS X, co zostało opisane w "Przewodniku programisty SpartaDOS X", dostępnym [http://sdx.atari8.info/index.php?show=en_docs tutaj]. 
- 
-[[Kategoria:Programowanie Atari 8-bit]] 
[[Kategoria:Niezbędnik kodera]] [[Kategoria:Niezbędnik kodera]]
 +[[Kategoria:Rozszerzenia RAM Atari 8-bit]]

Aktualna wersja

Personal tools