MP/M II na Z80 z pamięcią bankową

przez | 15 lutego 2023
Zestaw umożliwiający uruchomienie MP/M z procesorem Z80

Wcześniejszy wpis omawiał możliwość uruchomienia systemu operacyjnego MP/M na typowej dostępnej przestrzeni pamięci jaką obsługuje Z80, czyli 64kB RAM. Rozwiązanie to ograniczało możliwości tego systemu i uniemożliwiało jednoczesne uruchomienie wielu programów. System ten pełne swoje możliwości rozwija w środowisku z przełączaną (bankową) pamięcią. Do tego celu powstał przedstawiany już moduł Z80 CPU z MMU.

MMU (Memory Management Unit) to sprzętowe urządzenie obsługujące pamięć wirtualną lub stronicową które tłumaczy adresy logiczne na adresy fizyczne. Początkowo układy MMU umożliwiały na użycie pamięci większej niż jaka była obsługiwana przez daną architekturę procesora, a następnie wzbogacały się o mechanizmy ochrony pamięci, kontroli wykorzystania i uprawnień, obsługi pamięci podręcznej, przełączania kontekstów czyli elementów, bez których współczesne systemy operacyjne nie mogły by działać. Obecnie układ MMU jest obowiązkową i integralną częścią współczesnych procesorów. W najprostszej formie pojawiły się w procesorach Z180, bardziej zaawansowany układ MMU znajdziemy w Z280, który posiadał już znaczniki wykorzystania danej strony, zabezpieczenia przed zapisem i jej ochrony oraz przechowywania zawartości strony w pamięci podręcznej.

Uruchomienie komputera z układem MMU wymaga od startowego ROM inicjacji kontrolera pamięci przed pierwszą operacją zapisu do pamięci RAM. W przedstawionym przykładzie dostosowałem SCM v1.3 do jego obsługi, by przestrzeń adresowa była dostosowana do wymagań Z80 i następnie uruchomienie systemu CP/M v2.2. Ten system operacyjny nie wymaga modyfikacji, gdyż pracuje we wcześniej ustalonej przestrzeni pamięci, nic nie “wiedząc” o fakcie istnienia większego jej rozmiaru. Systemy CP/M 3 i MP/M zawierają obsługę większej ilości RAM w postaci do 8 logicznych banków pamięci, umożliwiających uruchomienie programów przekraczających pamięć użytkownika (TPA) w dostępnym obszarze 64kB lub przełączania kontekstów zadań w przypadku MP/M. Wdrożenie tych systemów wymaga napisania procedur tłumaczących systemowe logiczne banki pamięci na fizyczne adresy wykorzystując mechanizmy wbudowane w dany MMU.