Konwersja numeru banku MEMAC B na PORTB i odwrotnie
From Atariki
←Older revision | Newer revision→
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
.