
Předchozí model PMI-80M16 sice dobře slouží, ale rozhodl jsem se pro stavbu dalšího PMI-80M16. Důvody byly dva: 1) Jsem střídavě doma a v Praze. PMI-80 mám rád a nechci ho pořád převážet. Tak chci mít jedno tam a jedno tam. 2) Chci provést další rozšíření paměti. Nějak se mi nevyplácí svoje přístroje pořád vylepšovat. Většinou to má ten efekt, že je zařízení neustále rozdělané a málokdy se dá používat, protože "zrovna něco vylepšuju". Spíš je lepší stroj prohlásit za hotový tak jak je a místo dalšího vylepšování postavit další kus.
Kufřík použitý pro model č.1 se osvědčil. Zašel jsem do stejného obchodu, jako tenkrát a pořád je měli. Napájení jsem ale řešil jednodušeji - zůstávám u zdroje EA1605 a otvor pro konektor DIN jsem vyvrtal zboku kufříku.
Tak především chci více RAM, 1KB je fakt málo. Za druhé chci kvůli častým úpravám monitoru namísto EPROM použít EEPROM. Co se týká typu EEPROM, rozhodování bylo rychlé. "Slon" měl v nabídce 8KB čip 28C64 nebo 32KB čip 28C256. 32KB je zbytečně moc, dekódování adres by bylo komplikovanější a navíc za ten čip chtějí příliš mnoho peněz. Volba tedy padla na čip 28C64, byť ani ten není zrovna levný.
Co se týká RAM, zde mi jako optimální volba vyšla osmikilovka 6264 (6164). Šlo by použít i jen dvojkilovku, ale není důvod jít jen na 2KB, když se dá instalovat 8KB. Na 32KB by se zas nevystačilo jen s jedním dekodérem adres a vyžadovalo by to tedy rozsáhlejší úpravy. Jiné kapacity jako 4KB nebo 16KB jsou nestandard a nedají se běžně sehnat.
Při změně velikosti adresního bloku dekodéru pamětí na 2KB tak krásně vychází, že přesně zaplníme 16KB adresního prostoru, co dekodér oadresuje. Po úpravě bude PMI sám pro sebe zabírat 16KB pamětního prostoru na adresách 0000-3FFF, stejně jako před úpravou. Navíc ovšem zmizí zrcadla a celý tento prostor bude využit. Otázkou je rozdělení adresního prostoru 0000-3FFF mezi RAM a (EEP)ROM. Ono by bylo krásné spodních 8KB vyhradit pro EEPROM a horních 8KB pro RAM, jenže to by byl problém, v oblasti 1C00-1FFF musí být RAM, jinak bude PMI nekompatibilní s originálem. Alespoň jednu z pamětí tedy musíme adresně "roztrhnout". Po zvážení různých možností jsem se rozhodl pro následující schema: 0000-17FF bude obsazovat 6KB EEPROM, pak bude následovat na adresách 1800-37FF souvislá oblast 8KB RAM. Zbylý 2KB blok na adresách 3800-3FFF obsadí zbytek EEPROM. Oblast RAM je ovšem sice souvislá fyzicky, ale bude rozdělená logicky, neboť na stránce 1Fxx se standardně nachází buffer displeje, zásobník a proměnné monitoru. To může být určitá výhoda - pro tyto účely lze vyhradit celý 2KB blok 1800-1FFF a mezi 2000 a 37FF máme souvislou oblast 6KB pro programový kód. Při větším zaplnění zásobníku se pak nebude přepisovat program. Například špatně napsaný rekurzivní program může samozřejmě i tak udělat neplechu, teoreticky může ukazatel zásobníku podtéct pod adresu 0 a pak se dostat do RAM shora, nicméně špatně napsaný rekurzivní program je potenciální zdroj problémů vždy, když nad zásobníkem není kontrola. Původní programy využívající pouze RAM na adresách 1C00-1FFF lze samozřejmě dál používat.
Co bylo potřeba udělat:
Paměti 2114 je z desky PMI pochopitelně potřeba vyjmout. Udělal jsem to s radostí, neboť čipy Tesla MHB2114 nemám rád, zejména kvůli jejich nehorázně velké spotřebě. Vyjmutí pamětí 2114 má výhodu v případě dalšího rozšiřování i tu, že se sníží zátež systémové sběrnice.
Co se týká posuvu adresního dekodéru, uvědomil jsem se, že se adresní vodiče nemusí přepojovat všechny tři. Úplně stačí, když se od pinu č. 1 odpojí adresní vodič A10 a namísto něj se přivede A13. Adresní linky A11 a A12 klidně mohou zůstat zapojené tak, jak jsou. Sice "chipselecty" nepůjdou popořadě, to však absolutně ničemu nevadí.
Dostáváme takovouto adresní tabulku:
| Adresy | A13 | A12 | A11 | CS | Paměť |
|---|---|---|---|---|---|
| 0000-07FF | 0 | 0 | 0 | CS0 | ROM (systém) |
| 0800-0FFF | 0 | 0 | 1 | CS2 | ROM |
| 1000-17FF | 0 | 1 | 0 | CS4 | ROM |
| 1800-1FFF | 0 | 1 | 1 | CS6 | RAM (systém) |
| 2000-27FF | 1 | 0 | 0 | CS1 | RAM |
| 2800-2FFF | 1 | 0 | 1 | CS3 | RAM |
| 3000-37FF | 1 | 1 | 0 | CS5 | RAM |
| 3800-3FFF | 1 | 1 | 1 | CS7 | ROM |
Patice pro paměti se pak přepojí dle jejich významu:
| Pin DIP24 | Pin DIP28 | 2708 | 2716 | 2732 | 2764, 28C64 | 6264 | Poznámka |
|---|---|---|---|---|---|---|---|
| 18 | 20 | PGM | /CE | /CE | /CE | /CE1 | V PMI-80M16 uzeměn, doporučuji přepojit (vizte dále) |
| 19 | 21 | +12V | A10 | A10 | A10 | A10 | |
| 21 | 23 | -5V | Vpp | A11 | A11 | A11 | Vpp při čtení 2716 |
| 24 | 26 | Vcc | Vcc | Vcc | NC | CE2 |
| Pin DIP28 | 2764 | 28C64 | 6264 |
|---|---|---|---|
| 1 | Vpp | NC | NC |
| 2 | A12 | A12 | A12 |
| 27 | /PGM | /WE | /WE |
| 28 | Vcc | Vcc | Vcc |
Po uvedené rozvaze mi vyšlo toto schéma. Klikem ho získáte ve vyšším rozlišení. Čtenářům se omlouvám, že jde jen o oskenovaný náčrt tužkou, nicméně jako stavební podklad si myslím, že to stačí. Ve schématu je i vyznačeno, kde se mají přerušit původní spoje v PMI-80M16. Jumper JP12 je zrušen, pozice 1 a 2 jsou trvale propájeny. Jumpery JP10 a JP11 je možno volit, zda na pozici IO4 je E(E)PROM 2716, 2732 nebo 2764/28(C)64 podle tabulky zakreslené u schématu.
Nelze si nevšimnout, že paměti 28C64 a 6264 mají více vývodů než 2708 a 2716. Tak při zapajování patic stojíme před tím, že potřebujeme patici s 28 vývody zapájet tam, kde je jen 24 dírek. Je to jednoduché. Ty 4 přívody navíc jsem odštípl a připájel na ně kusy drátu a zapojil podle schématu. Při štípání pozor, nesmíme štípat moc vysoko, musí zbýt něco, na co se dá pájet.
Některé ostatní spoje bylo nutno přerušit. Krom obvyklého "přeškrábnutí" spoje jsem v některých případech vývod patice kousek nad deskou uštípnul a připojil na něj kus drátu, jako u PMI-80M16, kusu č.1.