Mikeš a Radek Suk už poměrně dávno ulovili v Japonských vodách originální 640 kB RAM disky Sharp MZ-1R37 určené pro počítače Sharp MZ-2500 a MZ-2800. Mikeš si dal obrovskou práci a z desky zpětně zrekonstruoval schéma a ze schématu následně udělal repliku původní desky. I toto proběhlo už někdy koncem roku 2017, ale až teď se dostávám k tomu o replice RAM disku MZ-1R37 něco napsat.
V Japonsku bývá tento RAM disk označován jako EMM: a to přináší trochu zmatek do už tak ne každému úplně jasné situace okolo Sharp RAM disků. Jako EMM: bývá totiž označován také 320 kB RAM disk PIO-3034, který se připojoval k počítačům MZ-700/1500 a adresuje se přes porty 00 až 03, zatímco pro adresování RAM disku MZ-1R37 stačí jen dva porty 0xAC a 0xAD. V 640 kB prostoru má adresa celkem 3 byty (nejvyšší byte má významné pouze 4 bity). Horní dva byty adresy se nastavují zápisem na port 0xAC, přičemž vyšší byte portu je nejvyšší byte adresy a data jsou střední byte adresy. Data se pak čtou nebo zapisují na portu 0xAD, přičemž nejnižší adresní byte je ve vyšší adrese portu a data jsou čtená nebo zapisovaná data. Například zápis hodnoty 0x78 na adresu 0x012345 by mohl vypadat třeba takto:
ld c,0xAC ;high/mid address port
ld b,0x01 ;high address
ld a,0x23 ;mid address
out (c),a
ld c,0xAD ;data/low address port
ld b,0x45 ;low address
ld a,0x78 ;data
out (c),a
Instrukce v ukázce jsem úmyslně udělal jednoduše rozdělené, aby bylo na první pohled vidět, co se kam nastavuje a zapisuje. Z výše uvedeného kódu je zřejmé, že i když RAM disk neobsahuje čítače a nemá automatickou inkrementaci adresy, zápis a čtení jsou celkem rychlé, protože stačí nastavit 256-bytovou stránku zápisem na port 0xAD a pak už ke kterémukoli bytu v ní přistupovat jediným zápisem nebo čtením.
MZ-2500 BASIC podporuje RAM disk MZ-1R37 nativně jako zařízení EMM: a funguje bez problémů. Tedy po odstranění drobné chybičky s přizemněným vstupem 5 AND hradla 1CB. Na to, že neexistovalo schéma a Mikeš vše překresloval z originálu, super práce.
Na schématu už je chybka opravena, na desce je úprava jen drobná a dá se udělat poměrně nenápadně. Zespodu desky stačí udělat malý přeškrab a shora, ještě před připájeném IO nebo patice, přidat propojku na Vcc.
Na finálních deskách Mikeš chybku už opravil, ale je otázka, jestli se ještě nějaké budou dělat. Aktuální várka je rozebraná a majitelů MZ-2500 u nás bys napočítal na prstech jedné ruky. Alespoň, co vím.
První desku jsem pro jistotu osadil do patic a až po důkladném otestování jsem všechny IO včetně pamětí do druhé verze připájel bez patic. Kromě otestování souborového systému přímo v MZ-2500 jsem si napsal jednoduchý testovací program v BASICu pro MZ-800, ale když jsem zjistil, jak je pomalý, přepsal jsem zápis a čtení stránky RAM disku raději do strojáku. Pak už byla rychlost testování poměrně uspokojivá.
Test je celkem primitivní, ale i tak mi pomohl odhalit pár nefunkčních pamětí, takže jsem dobře udělal, že jsem si ho napsal. RAM disk funguje bez problémů, jen je škoda, že není zálohovaný a co hůře, tak i studený restart BASICu na MZ-2500 způsobí jeho reinicializaci. Tohle BASIC dělat nemusel, uživatel má pro inicializaci k dispozici příkaze INIT “EMM:”.