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

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Mono (dyskusja | edycje)
m dodana kategoria "rozszerzenia ram atari 8-bit"
 
(Nie pokazano 8 wersji utworzonych przez jednego użytkownika)
Linia 1: Linia 1:
== Informacje ogólne ==
== Informacje ogólne ==
Rozszerzenie typu [[Axlon]] przeznaczone jest zasadniczo dla komputerów serii [[400/800]]. Podobnie jak w [[130XE]] rozszerzona pamięć podzielona na banki po 16 KB znajduje się w obszarze $4000-$7FFF. Inaczej niż w 130XE nie ma możliwości oddzielnego adresowania dodatkowej pamięci przez [[6502C|CPU]] i [[ANTIC (układ)|ANTIC]].
Rozszerzenie typu [[Axlon]] przeznaczone jest zasadniczo dla komputerów serii [[400/800]]. Podobnie jak w [[130XE]] rozszerzona pamięć podzielona na banki po 16 KB znajduje się w obszarze $4000-$7FFF. Inaczej niż w 130XE nie ma możliwości oddzielnego adresowania dodatkowej pamięci przez [[6502C|CPU]] i [[ANTIC (układ)|ANTIC]].


Rejestr sterujący rozszerzeniem umieszczony jest pod adresem $CFFF. Rejestr ten jest tylko do zapisu.  
Rejestr sterujący rozszerzeniem umieszczony jest pod adresem $CFFF. Rejestr ten jest tylko do zapisu.


Trzeba mieć na względzie, że ze względu na niepełne dekodowanie, ten rejestr zajmuje obszar $CFC0-$CFFF oraz - co istotniejsze - $0FC0-$0FFF.
Trzeba mieć na uwadze, że ze względu na niepełne dekodowanie ten rejestr zajmuje obszar $CFC0-$CFFF oraz - co istotniejsze - $0FC0-$0FFF.


Obsługa jest bardzo prosta: wartość $00 wstawiona do rejestru $CFFF powoduje podłączenie pamięci podstawowej, każda inna - jednego z banków pamięci dodatkowej. To pozwala na instalację w komputerze do 4 MB pamięci dodatkowej (255 banków po 16k - 4080 KB).  
Obsługa jest bardzo prosta: wartość $00 wstawiona do rejestru $CFFF powoduje podłączenie pamięci podstawowej (tzw. home bank), każda inna - jednego z banków pamięci dodatkowej. To pozwala na instalację w komputerze do 4 MB pamięci dodatkowej (255 banków po 16k - 4080 KB).  


=== Axlon na XL/XE ===
=== Axlon na XL/XE ===
 
W 2012 roku [[Simius]] zbudował prototypowe rozszerzenie pamięci [[SIMMius 4 MB]] pozwalające na użycie trybu Axlon również na XL/XE. Rejestr przełączający znajduje się w obszarze pamięci ROM (tj. działa, gdy bit 0 rejestru [[Rejestry PIA#PORTB|PORTB]] jest ustawiony) wyłącznie pod adresem $CFFF i - jak na oryginale - jest tylko do zapisu.
W 2012 roku [[Simius]] zbudował prototypowe rozszerzenie pamięci [[SIMMius 4 MB]] pozwalające na użycie trybu Axlon również na XL/XE. Rejestr przełączający znajduje się w pamięci ROM (tj. działa, gdy bit 0 rejestru PORTB jest ustawiony) wyłącznie pod adresem $CFFF i - jak na oryginale - jest tylko do zapisu.


== Wykrycie rozszerzenia i obliczenie jego rozmiaru ==
== Wykrycie rozszerzenia i obliczenie jego rozmiaru ==
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:
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:


Linia 32: Linia 29:
       lda ext_b
       lda ext_b
       sta bsav,x
       sta bsav,x
       stx ext_b
       stx ext_b     ;oznaczenie bankow
       dex
       dex           ;koniecznie w kolejnosci malejacej
       cpx #$ff
       cpx #$ff
       bne _p0
       bne _p0
Linia 39: Linia 36:
       inx
       inx


_p1    inx
_p1    inx           ;sprawdzenie numerow bankow
       beq _x1
       beq _x1
       stx axlon
       stx axlon
       cpx ext_b
       cpx ext_b
       beq _p1
       beq _p1       ;pierwsza niezgodnosc przerywa petle


_x1    dex
_x1    dex           ;odliczamy bank podstawowy
       txa
       txa
       tay
       tay


       ldx #$00
       ldx #$00     ;przywrocenie wartosci
_p2    stx axlon
_p2    stx axlon
       lda bsav,x
       lda bsav,x
Linia 56: Linia 53:
       bne _p2
       bne _p2


      stx axlon    ;ustaw bank podstawowy
       rts
       rts


Linia 61: Linia 59:
bsav  .ds 256
bsav  .ds 256
</pre>
</pre>
=== Uwagi ===
* Rozszerzenie typu Axlon automatycznie wykrywa i obsługuje [[SpartaDOS X]]. Uniknięcie konfliktu z tym DOS-em (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].
* Powyższa procedura jest lekko zmodyfikowaną wersją procedury zawartej w kodzie startowym SpartaDOS X.


[[Kategoria:Programowanie Atari 8-bit]]
[[Kategoria:Programowanie Atari 8-bit]]
[[Kategoria:Rozszerzenia RAM Atari 8-bit]]

Aktualna wersja z 30 gru 2024, 12:28

Informacje ogólne

Rozszerzenie typu Axlon przeznaczone jest zasadniczo dla komputerów serii 400/800. Podobnie jak w 130XE rozszerzona pamięć podzielona na banki po 16 KB znajduje się w obszarze $4000-$7FFF. Inaczej niż w 130XE nie ma możliwości oddzielnego adresowania dodatkowej pamięci przez CPU i ANTIC.

Rejestr sterujący rozszerzeniem umieszczony jest pod adresem $CFFF. Rejestr ten jest tylko do zapisu.

Trzeba mieć na uwadze, że ze względu na niepełne dekodowanie ten rejestr zajmuje obszar $CFC0-$CFFF oraz - co istotniejsze - $0FC0-$0FFF.

Obsługa jest bardzo prosta: wartość $00 wstawiona do rejestru $CFFF powoduje podłączenie pamięci podstawowej (tzw. home bank), każda inna - jednego z banków pamięci dodatkowej. To pozwala na instalację w komputerze do 4 MB pamięci dodatkowej (255 banków po 16k - 4080 KB).

Axlon na XL/XE

W 2012 roku Simius zbudował prototypowe rozszerzenie pamięci SIMMius 4 MB pozwalające na użycie trybu Axlon również na XL/XE. Rejestr przełączający znajduje się w obszarze pamięci ROM (tj. działa, gdy bit 0 rejestru PORTB jest ustawiony) wyłącznie pod adresem $CFFF i - jak na oryginale - jest tylko do zapisu.

Wykrycie rozszerzenia i obliczenie jego rozmiaru

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 dodatkowe banki nie są dostępne)

Ze względu na prostotę obsługi rozszerzenia nie ma potrzeby generowania listy dostępnych banków, wystarczy obliczyć ich liczbę.

; etykiety
ext_b  = $4000       ;cokolwiek z zakresu $4000-$7FFF
axlon  = $cfff

; procedura
detect_axlon
       ldx #$ff      ;zapamiętanie bajtów ext
_p0    stx axlon
       lda ext_b
       sta bsav,x
       stx ext_b     ;oznaczenie bankow
       dex           ;koniecznie w kolejnosci malejacej
       cpx #$ff
       bne _p0

       inx

_p1    inx           ;sprawdzenie numerow bankow
       beq _x1
       stx axlon
       cpx ext_b
       beq _p1       ;pierwsza niezgodnosc przerywa petle

_x1    dex           ;odliczamy bank podstawowy
       txa
       tay

       ldx #$00      ;przywrocenie wartosci
_p2    stx axlon
       lda bsav,x
       sta ext_b
       inx
       bne _p2

       stx axlon     ;ustaw bank podstawowy
       rts

;zmienne
bsav   .ds 256

Uwagi

  • Rozszerzenie typu Axlon automatycznie wykrywa i obsługuje SpartaDOS X. Uniknięcie konfliktu z tym DOS-em (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 tutaj.
  • Powyższa procedura jest lekko zmodyfikowaną wersją procedury zawartej w kodzie startowym SpartaDOS X.