Obsługa rozszerzenia pamięci RAM: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
 
Nie podano opisu zmian
 
(Nie pokazano 10 pośrednich wersji utworzonych przez tego samego użytkownika)
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 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''
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).
<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
      rol
      sta portb
      rts
; zmienne
banks  .ds 64
bsav  .ds 128
</pre>
[[Kategoria:Programowanie Atari 8-bit]]
[[Kategoria:Niezbędnik kodera]]
[[Kategoria:Niezbędnik kodera]]
[[Kategoria:Rozszerzenia RAM Atari 8-bit]]

Aktualna wersja z 12 cze 2016, 12:14