Mikropočítač PMI - 85



Že jste o PMI-85 nikdy neslyšeli? Není divu. Donedávna neexistoval. A co že to je zač? PMI-85 je replika notoricky známého mikropočítače PMI-80, který snad není třeba důvěrně představovat. Vzhledem k tomu, že původní PMI-80 se stává velmi ceněnou sběratelskou raritou, je velmi obtížné jej dnes sehnat. A když už na nějaký narazíte, nebude levný. Takže když si autor těchto stránek chtěl s PMIčkem trochu pohrát, bylo jasné, že bude jednodušší a levnější postavit si repliku. Schéma zapojení i výpis obslužného monitoru jsou již léta k dispozici, klíčové součástky jsou stále dostupné, a tak to není žádný problém. Jenže jak to bývá, v okamžiku kdy bylo vše připraveno, se originální PMI podařilo sehnat...

Co teď? Stavbě repliky sice vlastnictví originálu nijak nebránilo, ale co odešlo byla motivace. Ovšem provedené přípravy bylo škoda, a protože v "depozitu" se válely dvě desky s procesory 8085, tak se zrodil ďábelský plán: PMI-85. Mimochodem, desky kromě originálních procesorů Intel 8085 obsahují i vzácný programovatelný řadič klávesnice a displeje typu 8279, ale o tom třeba zase někdy jindy (je v počítačích SDK-85 a 86, viz. slavné jednodesky ). Radost ovšem kazí to, že tyto obvody nejsou v paticích, ale jsou zaletované...

Šrotová deska s CPU Intel 8085

Šrotová deska s CPU Intel 8085

Procesor Intel 8085 v autorovi vzbuzoval jistou magickou přitažlivost již od doby, kdy v příloze AR v roce 1984 vyšel popis amatérského jednodeskového mikropočítače BOB-85, právě tímto procesorem osazeným. Článek ve více jak čtvrt století starém časopise se kromě popisu stavby počítače poměrně obšírně věnuje i vlastnímu procesoru a byl velmi nápomocný i při návrhu PMI-85. Dodnes je (byla, dnes je tu ještě PMI-85:-)) BOB-85 snad jediná, u nás publikovaná, konstrukce s tímto CPU.

Mikroprocesor 8085

Mikroprocesor 8085 vznikl v roce 1976 jako logický nástupce populárního procesoru 8080(A). Hlavním cílem bylo zachovat 100% kompatibilitu s 8080, ale odstanit hlavní nevýhody 8080-ky: potřebu složitých podpůrných obvodů (8224 a 8228, které jsou v 8085 již přímo integrovány), potřebu tří hladin napájecího napětí (+5V, -5V a +12V) u kterých bylo zároveň nutné hlídat vzájemné výpadky, eventuálně pořadí zapínání a vypínání. Mikroprocesor 8085 vystačil s jediným napájecím napětím +5V. Nepotřeboval zvláštní obvod na generování hodin (8224) ani systémový řadič a dekodér stavových signálů (8228 nebo 8238). Vše již bylo integrováno na čipu. Navíc došlo ke značnému rozšíření možností přerušovacího systému a dále přibyla možnost sériové komunikace (1x vstup SID a 1x výstup SOD). To vše při zachování stejného pouzdra (DIP 40) a 100% softwarové kompatibility se svým předchůdcem 8080(A). Instrukční soubor byl zcela shodný s 8080, navíc přibyly instrukce RIM a SIM pro ovládání nových přerušovacích vstupů a dále pro ovládání sériového vstupu a výstupu. To není překlep. Instrukcí RIM (Read Interrupt Mask) je možné jednak číst tzv. masku přerušovacích vstupů ale také číst sériový vstup. Instrukce SIM (Set Interrupt Mask) zase slouží k nastavení masky přerušovacích vstupů a také k zápisu na sériový výstup. Dalším vylepšením byla rychlost, která byla u špičkových modelů 8085AH s 5 MHz více než dvojnásobná oproti 8080A (2 Mhz).

Přestože Intel na podporu vývoje zařízení s CPU 8085 uvedl na trh stavebnici jednodeskáče SDK-85, kde již neopakoval tragické chyby při uvedení SDK-80 (absence displeje a klávesničky), tak se CPU 8085 nakonec příliš neprosadil a na celé čáře prohrál se Zilogem Z-80. Z-80 uvedený ve stejném roce jako 8085 šel ve vylepšení původní a oblíbené 8080 ještě dále (podstatně rozšířený instrukční soubor se 100% zpětnou kompatibilitou, indexové adresování, zdvojené registry, vestavěný refresh dynamických pamětí DRAM, vylepšená podpora DMA, další vylepšení přerušovacího systému a opět nárůst rychlosti až na 6 MHz u Z-80B) a i díky nižší ceně nakonec u konstruktérů počítačů drtivě vyhrál. Ale vraťme se k 8085. O PMI Z-80 zase někdy jindy :-)

Definitivně bylo o stavbě PMI-85 rozhodnuto v době, kdy se náhodou podařilo sehnat nový nepájený CPU. Sice to není originál Intel a je to licenční Toshiba 8085AP, ale to nevadí. Pořád lepší než dva Intely zapájené v deskách...

CPU Toshiba 8085

CPU Toshiba 8085AP použitý v PMI-85

A tak začala příprava a shánění literatury. Již záhy bylo jasné, že to s těmi podpůrnými obvody bude trochu jinak. Jasně, sice není potřeba 8224 ani 8228, ale pořebujete nějaký latch na oddělení adres od dat, protože datová sběrnice je u 8085 multiplexována s nižší osmicí adres. Jinak by 40 pinů nestačilo (tedy vlastně stačilo, viz Z-80). Ideální latch je 74373, resp. 573. Budete-li ke stavbě počítače používat další běžné obvody z řady MCS-80 (a co taky jiného), potřebujete nějak dekódovat signály M/IO, RD a WR na MEMRD, MEMWR, IORD a IOWR. A k tomu pořebujete 4x OR (7432) a jeden invertor (7404). Takže to už máme celkem tři další integráče. Ale pravdou je, že dohromady se pájí pořád skoro stejně nožiček, jako v případě 8080 + 8224 + 8228:-) A pokud chcete využít i jedinou úroveň přerušení RST7, kterou nabízí řadič 8228 (připojení INTA přes odpor 1K na +12V), potřebujete ještě jeden latch, který vám na datovou sběrnici tu instrukci RST7 dodá. Ovšem to už je pro opravdové blázny, kteří požadují zpětnou kompatibilitu na 110%. Jednodušší je využít některého z nových vstupů RST X.5 a modifikovat monitor. Jenže moje PMI-85 má používat původní monitor z PMI-80 bez úprav, takže dodatečný latch se tam objeví. Suma sumárum PMI-85 má "díky" použití lepšího CPU na desce více čipů jak PMI-80:-)

Pokud se podpůrným obvodům chcete zcela vyhnout, musíte použít Intelem doporučované 8155(6) (RAM + timer + porty), 8355/8755 (ROM/EPROM + porty), 8185 (SRAM 1KB) případně další obvody obsahující vlastní latch. Pak vám stačí tři čipy a máte hotový počítač. Jenže jeho možnosti budou (mírně řečeno) omezené s PMI-80 to nebude mít nic společného. V podstatě získáte tříčipový "jednočip" a o nějaké rozšiřitelnosti na větší systém nemůže být řeč. Kromě toho sehnat 8155 je docela oříšek a o 8755 raději vůbec nemluvit. S těmito obvody je postaven i výše zmíněný kit SDK-85.



PMI-85

A nyní se již definitivně vraťme ke stavbě PMI-85. Celý počítač je, stejně jako starší NOSTALCOMP 8080, postaven na dvou vrtaných univerzálních deskách typu CU-TA 034 a CU-TA 035 z GME. Jedna deska obsahuje CPU, RAM, EPROM a "podpůrné obvody", na druhé desce je 8255 a kompletní terminál z PMI-80 (klávesnice a displej). Obě desky jsou spojovány pomocí kolíkové a dutinkové lišty se zlacenými kontakty. Aby bylo spojení dokonalé, je nutné zajistit stejnou výšku desek. To vyřešily nožičky z kovových distančních sloupků délky 10 mm. Veškeré spoje na deskách jsou provedeny barevnými drátky získanými z ethernetového UTP kabelu (je to otročina rozmotávat ty kroucené páry).

PMI-85

Deska cpu obsahuje vlastní procesor 8085AP, taktovaný krystalem 2 MHz. Uvnitř procesoru dochází k dělení kmitočtu dvěma, takže procesor běží na frekvenci 1 MHz. PMI-85 je tedy o chloupek pomalejší než originální PMI-80 běžící na 10/9=1,1111 MHz. Jako RAM je, stejně jako u PMI-80, využito dvou pouzder 2114 dohromady dávajících 1 KB. Pevnou paměť zde zastupuje EEPROM 28C64 (menší paralelní EEPROM se již sehnat nepodařilo). Jelikož má tato paměť kapacitu 8 KB a do adresového prostoru PMI-80 se to souvisle nevejde, jsou využity jen 4 KB s tím, že jumperem na A12 lze přepínat druhou banku 4 KB (pochopitelně při vypnutém PMI). Lze tak mít třeba dva různé monitory.

Zachycení adres na A0-A7 klasicky zajišťuje latch 74573. Stejný typ obvodu dodává instrukci RST 7 při požadavku na přerušení signálem /INTA (vstupy latche jsou odpory trvale nastaveny na log. 1). Dekodér adres 3205 je zapojen stejně jako u PMI. Sloučení signálů /CS0 až /CS3 pro výběr 4 KB EEPROM zajišťuje 4-vstupové hradlo AND (7421). K dekódování signálů M/IO, /RD a /WR na /MEMRD, /MEMWR, /IORD a /IOWR stačí jeden invertor a 4 hradla OR (7432). Jenže když je někdo zbrklej a ovlivněn BOBem-85 zapájí do desky čtveřici NANDů 7438, musí pak najít ještě místečko pro další IO, protože mu chybí dva invertory, že... Posledním pouzdrem na desce je 7400 jehož hradla slouží jako invertor pro klávesu INT, invertor pro zmíněný signál M/IO, uvolňovací hradlo pro 3205 (viz. PMI-80) a zesilovač pro LEDku pověšenou na SOD (světýlka já rád :-)) Všechny obvody řady 74XX jsou nízkopříkonové TTL LS, nebo HCT. Obvod 3205 lze bez úprav nahradit moderním obvodem 74LS138, resp 74HCT138.

Terminál je zapojen naprosto shodně jako u originálního PMI-80. Je to i díky tomu, že se podařilo sehnat originální dekodér MH 1082. Dokonce i displej je, jako v originálním PMI-80 (VQD30). Tranzistory pochopitelně nejsou identické jako u originálu, ale jsou použity BC... Volný port B obvodu 8255A není nikam vyveden a je nevyužitý. Ale lze jej vyvést třeba na nějaký konektor. Rozhraní pro magnetofon není osazeno vůbec. Kdo by se dnes taky patlal s magneťákem. Klávesnice je tvořena mikrospínači s barevnými hmatníky a popis je lihovým fixem.

PMI-85 je díky svému zapojení plně kompatibilní s PMI-80. Paměť EEPROM se nachází na adresách 0000h - 0FFFh a je aktivována signály /CS0, /CS1, /CS2 a /CS3. Paměť RAM je na 1C00h - 1FFFh a je aktivována signálem /CS7. Signály /CS4-/CS6 nejsou využity. Z rozsáhlého přerušovacího systému (oproti 8080) CPU 8085 je využito jen INT 7, stejně jako u PMI-80. Procesor 8085 má navíc i sériový vstup a výstup (piny SID a SOD). Vstup není použit vůbec (je připojen na log.0). Výstup je přes oddělovací invertor připojen na LED. Lze tak ovládat tuto ledku instrukcí SIM. Chtěl jsem mít na procesorové desce nějaký nezávislý indikátor pro testování samotné desky, než dokončím a oživím terminál. Nakonec to nebylo nutné, protože terminál jsem dokončil a díky připojení k originálnímu PMI-80 i oživil dříve než desku CPU.

mikropočítač PMI-85
stavba začíná...
mikropočítač PMI-85
oživování terminálu pomocí PMI-80
 
mikropočítač PMI-85
terminál funguje :-)
mikropočítač PMI-85
bastl aneb někdy je lepší nevědět...
 
mikropočítač PMI-85
hotová procesorová deska PMI-85
mikropočítač PMI-85
deska CPU, strana spojů
 
mikropočítač PMI-85
hotový terminál
mikropočítač PMI-85
terminál, strana spojů
 
mikropočítač PMI-85
PMI-85: deska CPU a terminál
mikropočítač PMI-85
sestavené PMI-85
 
mikropočítač PMI-85
SN 80 napájí PMI-85
mikropočítač PMI-85
PMI-85 vás zdraví :-)
 
mikropočítač PMI-85 mikropočítač PMI-85
fragmenty zapojení PMI-85 (hlavní odlišnosti od PMI-80)


Monitor PMI-85

Obslužný monitor je do EEPROM 2864 překopírován přímo z ROM funkčního PMI-80 s jednou malou změnou. Schválně jestli uhádnete jakou:-) Na adrese 01EEh je namísto hodnoty 00h, zapsána hodnota 05h. Počítač se tak hlásí jako PMI-85. Změna byla provedena kopírovacím programem přímo při přepisu paměti PROM do EEPROM. Za tímto účelem byl pro originální PMI-80, rozšířené o druhý obvod 8255A, napsán jednoduchý program a postaven primitivní "programátor" EEPROM, viz stránka o úpravách PMI-80. Za monitorem je dále zapsán program pro otestování celého 1KB rozsahu RAM. Je to z důvodu testování obvodů 2114, kterých mám hafo a neznám jejich stav. Dále jsem do EEPROM umístil jednoduchý blikač pro LEDku na SOD a z něj je možné libovolně používat časovací rutinu (zpoždění cca 0,5 sec) v jiných programech (rutina ukládá a obnovuje používané registry). Kompatibilita přerušení je zajištěna hardwarově a žádné úpravy monitoru tedy nejsou nutné.

Otestovat správnou funkci přerušení lze tímto jednoduchým programem:

1C00: FB (EI)
1C01: 76 (HALT)

a od adresy 1FE6h ručně pomocí příkazu M umístit kód skoku na 0000h:

1FE6: C3 (JP 0000)
1FE7: 00
1FE8: 00

Po spuštění (EX 1C00) se PMI zastaví a po stisku INT se zresetuje.

Možnosti zjednodušení PMI-85

PMI-85 by pochopitelně bylo možné i výrazně zjednodušit (při zachování softwarové kompatibility s PMI-80). Nastíním dále jak by se to dalo provést pro ty, kteří by si PMI-85 rádi postavili, ale odrazuje je množství pouzder IO. V první řadě stačí neudělat stejnou chybu, jako v mém případě a použít skutečně obvod 7432 pro dekódování signálů M/IO, /RD a /WR. Ušetříte dva invertory a tím i jeden celý IO (pro zbylé invertory jsem již neměl využití). Další obvod, který není nutný je latch 74573, který generuje RST7. Stačí jako přerušovací vstup CPU použít vstup RST6.5 nebo RST7.5, což si ale vyžádá změnu v monitoru, protože tato přerušení používají jiné adresy. Ovšem změna je jednoduchá a díky nevyužitému místu v monitoru i snadno proveditelná. Další možností je nevyužívat přerušení vůbec a nemusíte to řešit. Pak ale raději neosazujte tlačítko INT. To máme dva ušetřené integráče. Třetí pouzdro ušetříme, když adresový dekodér umístíme na adresy A12, A13 a A14. Tak nám bude adresový prostor rozdělovat nikoliv po 1 KB, jako u PMI-80, ale po 4 KB. Nyní již nebude potřeba 4-vstupový AND na sloučení čipselektů. Více o této možnosti bude v popisu PMI Z-80, což je také replika PMI-80, ale tentokrát na bázi procesoru Z-80. Dvě pouzdra pro RAM (2114) lze nahradit nějakou statickou pamětí v jediném pouzdře, třeba 6264 (8 KB). Zjednodušování svádí i k vypuštění obvodu 7400. Uvolňování adresového dekodéru lze zajistit přímo signálem M/IO. Ledku na SOD buď nedáme vůbec, nebo ji naopak dáme napřímo. Inverzi signálu od tlačítka INT zajistí jeden tranzistor, jako u originálního PMI-80. Bohužel ale potřebujeme jeden invertor pro to dekódování M/IO, /RD a /WR. Leda bychom ho taky nahradili tranzistorem... Suma sumárum při vhodném zapojení lze ušetřit až pět integráčů a pořád to bude kompatibilní s PMI-80. To vše se týká jen procesorové desky. Na terminálu prakticky nic zjednodušit nejde. Možná jen namísto 7 tranzistorů s odpory by bylo možné použít nějaké tranzistorové pole typu ULNxxxx přímo určené pro 7-segmentovky.

*** Aktualizace: ***

Nově došlo k úpravě společného terminálu. Terminál je nyní doplněn o konektor pro připojení kabelu PC Loaderu - kabelu pro nahrávání dat z PC. Všechny tři repliky PMI již mají v pevné paměti kromě monitoru a programu pro testování RAM i příslušný program pro nahrávání z PC.

terminál replik PMI-80 terminál replik PMI-80
Společný terminál replik PMI s programovacím kabelem


*** Nedokumentované instrukce 8085 ***

Slyšeli jste o tzv. nedokumentovaných instrukcích (a jednom Flagu) procesoru 8085? Sice jsem o nich kdysi slyšel, ale nikdy jsem se o ně nezajímal. Až teď a zjistil jsem, že jsou docela zajímavé, viz tabulka a popis v přiloženém pdf níže. Také jsem se dočetl, že důvodem k jejich "utajení" bylo údajně to, že instrukce nebyly kompatibilní s tehdy již připravovaným CPU 8086.


    8085: nedokumentované instrukce



RET



Odladěno na MS IE 8.0 a Firefoxu při rozlišení min. 1024 x 768 pixelů
www.NOSTALCOMP.cz    2010  -  2017