Konwersja numeru banku MEMAC B na PORTB i odwrotnie
From Atariki
Wersja z dnia 14:13, 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 [[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
.