Konwersja numeru banku MEMAC B na PORTB i odwrotnie

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:14, 22 kwi 2009
KMK (Dyskusja | wkład)

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

Linia 1: Linia 1:
-Rdzeń FX [[VBXE]] może emulować wewnętrzne rozszerzenie pamięci [[Rambo XL]]. W takiej sytuacji część (wyższe 256 KB) pamięci VRAM jest widziana przez komputer jako 16 banków rozszerzenia pamięci RAM, którym steruje rejestr [[Rejestry PIA 6520#PORTB|PORTB]].+Rdzeń FX [[VBXE]] może emulować wewnętrzne rozszerzenie pamięci [[Rambo XL]]. W takiej sytuacji część (wyższe 256 KB) pamięci VRAM jest widziana przez komputer jako 16 banków rozszerzenia pamięci RAM, którym steruje rejestr [[Rejestry PIA#PORTB|PORTB]].
Kolejne banki pamięci Rambo XL odpowiadają bankom MEMAC B o numerach od 16 do 31, w następujący sposób: Kolejne banki pamięci Rambo XL odpowiadają bankom MEMAC B o numerach od 16 do 31, w następujący sposób:
Linia 5: Linia 5:
<pre> <pre>
MEMAC B $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A $1B $1C $1D $1E $1F MEMAC B $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A $1B $1C $1D $1E $1F
-PORTB $83 $87 $8B $8F $A3 $A7 $AB $AF $C3 $C7 $Cb $CF $E3 $E7 $EB $EF+PORTB $83 $87 $8B $8F $A3 $A7 $AB $AF $C3 $C7 $CB $CF $E3 $E7 $EB $EF
</pre> </pre>
-W celu konwersji można skorzystać z tabelki jak powyżej albo, jeśli ważny jest raczej rozmiar programu niż czas jego wykonywania się, z poniższych procedur.+Powyższa tabela dotyczy '''rdzeni FX starszych niż wersja 1.20'''. W rdzeniu 1.20 odwrócono kolejność banków tak, że bank o kodzie PORTB $83 jest ostatnim, a nie pierwszym z listy banków MEMAC B współdzielonych z rozszerzeniem Rambo XL:
 + 
 +<pre>
 +MEMAC B $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A $1B $1C $1D $1E $1F
 +PORTB $EF $EB $E7 $E3 $CF $CB $C7 $C3 $AF $AB $A7 $A3 $8F $8B $87 $83
 +</pre>
 + 
 +Zmianę tę wprowadzono ze względu na sposób alokacji pamięci dodatkowej przez [[SpartaDOS X]]. Ten DOS zajmuje banki rozszerzenia "od końca", a więc 64 KB dostępne jako banki PORTB o kodach $83-$8F zostaną zajęte jako pierwsze. W poprzednich rdzeniach ten obszar wypadał na środku pamięci VBXE, teraz jest to jej koniec.
 + 
 +W celu konwersji można skorzystać z tabelki jak powyżej albo, jeśli ważny jest raczej rozmiar programu niż czas jego wykonywania się, z jednej z poniższych procedur.
== Konwersja MEMAC B na PORTB == == Konwersja MEMAC B na PORTB ==
Linia 30: Linia 39:
rol rol
</pre> </pre>
 +
 +Dla rdzenia FX 1.20 i późniejszych na końcu procedurki należy dodać jeszcze <code>eor #$6c</code>.
== Konwersja PORTB na MEMAC B == == Konwersja PORTB na MEMAC B ==
Linia 38: Linia 49:
; wy: nr banku MEMAC B w akumulatorze ; wy: nr banku MEMAC B w akumulatorze
- and #%01111111+ ora #%10000000
lsr lsr
lsr lsr
Linia 51: Linia 62:
rol rol
</pre> </pre>
 +
 +Dla rdzenia FX 1.20 i późniejszych na początku procedurki należy dodać jeszcze <code>eor #$6c</code>.
[[Kategoria:Niezbędnik kodera]] [[Kategoria:Niezbędnik kodera]]

Aktualna wersja

Rdzeń FX VBXE może emulować wewnętrzne rozszerzenie pamięci Rambo XL. W takiej sytuacji część (wyższe 256 KB) pamięci VRAM jest widziana przez komputer jako 16 banków rozszerzenia pamięci RAM, którym steruje rejestr PORTB.

Kolejne banki pamięci Rambo XL odpowiadają bankom MEMAC B o numerach od 16 do 31, w następujący sposób:

MEMAC B $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A $1B $1C $1D $1E $1F
PORTB   $83 $87 $8B $8F $A3 $A7 $AB $AF $C3 $C7 $CB $CF $E3 $E7 $EB $EF

Powyższa tabela dotyczy rdzeni FX starszych niż wersja 1.20. W rdzeniu 1.20 odwrócono kolejność banków tak, że bank o kodzie PORTB $83 jest ostatnim, a nie pierwszym z listy banków MEMAC B współdzielonych z rozszerzeniem Rambo XL:

MEMAC B $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A $1B $1C $1D $1E $1F
PORTB   $EF $EB $E7 $E3 $CF $CB $C7 $C3 $AF $AB $A7 $A3 $8F $8B $87 $83

Zmianę tę wprowadzono ze względu na sposób alokacji pamięci dodatkowej przez SpartaDOS X. Ten DOS zajmuje banki rozszerzenia "od końca", a więc 64 KB dostępne jako banki PORTB o kodach $83-$8F zostaną zajęte jako pierwsze. W poprzednich rdzeniach ten obszar wypadał na środku pamięci VBXE, teraz jest to jej koniec.

W celu konwersji można skorzystać z tabelki jak powyżej albo, jeśli ważny jest raczej rozmiar programu niż czas jego wykonywania się, z jednej z poniższych procedur.

Konwersja MEMAC B na PORTB

; MEMAC B -> PORTB
; we: nr banku MEMAC B w akumulatorze
; wy: kod PORTB w akumulatorze

   ora #%11110000
   lsr 
   php
   lsr
   php
   asl
   plp
   rol
   plp
   rol
   rol
   rol

Dla rdzenia FX 1.20 i późniejszych na końcu procedurki należy dodać jeszcze eor #$6c.

Konwersja PORTB na MEMAC B

; PORTB -> MEMAC B
; we: kod PORTB w akumulatorze
; wy: nr banku MEMAC B w akumulatorze

   ora #%10000000
   lsr
   lsr
   lsr
   php
   lsr
   php
   lsr
   plp
   rol
   plp
   rol

Dla rdzenia FX 1.20 i późniejszych na początku procedurki należy dodać jeszcze eor #$6c.

Personal tools