MapRAM

mapramPrzestrzeń adresowa Atari to 64KB, dokładnie tyle podstawowej pamięci RAM instalowane było w serii XL/XE, 16KB „zasłaniają”: system operacyjny zapisany w 16KB ROM oraz rejestry sprzętowe zajmujące 2KB przestrzeni adresowej (czarny i czerwony pasek na rysunku obok). Dzięki MMU (wpisując odpowiednią wartość do rejestru PORTB) możemy wyłączyć ROM i „odsłonić” RAM znajdujący się „pod” ROM, nie możemy jednak odłączyć rejestrów sprzętowych, czyli 2KB pamięci ROM i RAM leżących „pod” rejestrami sprzętowymi nie jest dostępne. Ciekawą cechą MMU jest to, że odpowiednio zaprogramowany pozwala te 2KB ROM widzieć od adresu $5000 – wykorzystuje to system operacyjny – zapisany w ROM program zwany SELF TEST właśnie tam się znajduje. MMU nie pozwala jednak w obszar od $5000 włączyć RAM leżącego „pod” rejestrami sprzętowymi – odpowiednia kombinacja bitów w PORTB jest ignorowana (nie jest wykorzystana) przez MMU. Przez co Atari widzi tylko 62KB RAM. Simius przeprogramował MMU Atari (MapRAM) i teraz MMU pozwala włączyć te 2KB RAM „zasłonięte” przez rejestry sprzętowe i używać 64KB RAM w Atari.

$D000-$D7FF – Atari HW
$D000-$D7FF – SELF TEST ROM
$D000-$D7FF – niedostępny RAM

PORTB
bit 7: podstawowy RAM $5000-$57FF (1); SELF TEST $5000-$57FF (0)
bit 5: $4000-$7FFF ANTIC podstawowy RAM (1); rozszerzenie RAM (0)
bit 4: $4000-$7FFF CPU podstawowy RAM (1); rozszerzenie RAM (0)
bit 0: ROM $C000-$CFFF & $D800-$FFFF (1); RAM $C000-$CFFF & $D800-$FFFF (0)

Standardowo można ustawić:
0xxxxxx1 – ROM z adresów $D000-$D7FF (z SELF TEST) mapuj do $5000-$57FF
1xxxxxx0 – wyłącz ROM – czyli w adresach $C000-$CFFF i $D800-$FFFF mamy RAM
i dodatkowo MapRAM:
0x11xxx0 – włącz RAM w adresach $C000-$CFFF i $D800-$FFFF a RAM spod rejestrów sprzętowych $D000-$D7FF mapuj do $5000-$57FF.
Bity odpowiedzialne za dostęp CPU i ANTICa do pamięci muszą być ustawione co oznacza wykorzystywanie podstawowej pamięci RAM przy włączonym MapRAM i 100% zgodności z rozszerzeniami pamięci. MapRAM nie zmienia sposobu działania żadnych rozszerzeń pamięci i może być użyte łącznie z nimi, czyli można mieć dowolne rozszerzenie pamięci oraz MapRAM bez kolizji.

W serii XL/XE wszelkie przeróbki pamięci wymagają wymiany bądź przeprogramowania MMU więc jeśli instalujesz w Atari rozszerzenie pamięci może warto pomyśleć też o MapRAM? Jaka jest zaleta MapRAM: bez konieczności instalacji dodatkowej pamięci mamy w Atari ekstra 2KB nigdy wcześniej nie używanego RAM, która nie koliduje z rozszerzeniami pamięci, nie jest kasowana po RESET i co najważniejsze – żaden program ani gra nie włączy i nie nadpisze danych w tym obszarze. Dla tych, którzy nie mają Atari, nie są zainteresowani instalacją MapRAM lub rozszerzenia pamięci z MapRAM rozwiązaniem są emulatory Altirra lub Atari800, w których można włączyć to rozszerzenie.

Ciekawostki:
Rozszerzenie pamięci Antonia 4MB w wersji 6502c zawiera również modyfikację MapRAM.