MP/M II na Z80 z MMU 16kB

przez | 4 stycznia 2024

Wcześniej prezentowane tu implementacje systemu MP/M wymagały zarządcy pamięci MMU obsługującego 4kB strony, co znacząco ograniczało liczbę dostępnych rozwiązań sprzętowych na których można było uruchomić ten system. W przypadku Z180, Z280 takie rozwiązanie jest wbudowane w jednostkę centralną, a Z80 wymagał nietypowych lub trudno dostępnych rozwiązań np. modułu Z80 z MMU na 74HCT612.

Dotychczasowe wymogi korzystania z MMU o mniejszym podziale wynikały z niewielkiego dostępnego obszaru pamięci wspólnej (~3kB) jaki pozostawili twórcy tego systemu operacyjnego dla XIOS zawierającej obsługę sprzętu oraz stosowanego przeze mnie podstawowego schematu budowy tego modułu. W przypadku obsługi FDD lub pojedynczych dysków jest to możliwe do zrealizowania. Nie chciałem jednak ograniczać liczby dostępnych dysków, bo w dzisiejszych czasach pamięć masowa o pojemności 128MB nie jest żadną ekstrawagancją, dostępną dla niewielu jaką była 40 lat temu, a i obecnie ta wielkość jest już śmiesznie mała. Przyjęte założenie powodowało, że bufory dyskowe zajmowały ponad 4kB co wymuszało przesunięcie granicy pamięci wspólnej w podziale 44/20kB i MMU z 4kB blokami. Na szczęście twórcy MP/M umożliwili przesunięcie niektórych procedur XIOS poza obszar wspólnej pamięci, wykonywanych obszarze systemowym, gdzie również przeniesione zostały bufory dyskowe, co zastosowałem w najnowszej wersji XIOS. Zmiana ta umożliwiła zastosowanie podziału pamięci 48/16kB i stosowanie popularnych modułów pamięci 512kB ROM/512kB RAM [1],[2],[3] z podziałem na 16kB bloki.

Obecnie przeprowadzam testy i jeśli nie napotkam jakiś błędów udoskonalona wersja zostanie udostępniona. Odświeżony został również MP/M dla procesorów Z180 i został wzbogacony o obsługę DMA dla operacji dyskowych powodując ich ponad 36% przyśpieszenie. Ten również otrzyma omawianą poprawkę dającą większe TPA dla programów użytkownika.