Mikroprocesor 1802 a Cosmac ELF




Již při stavbě Junior Computeru s procesorem 6502 jsem si definitivně uvědomil, že mne vůbec nezajímají počítače. Mě zajímají procesory a mikroprocesory. Jejich vlastnosti, architektura a myšlenka s jakou vznikaly. Pochopitelně mám na mysli procesory staré, ze 70. a 80. let. Ty současné snad už nezajímají nikoho... Počítač je pak vlastně jen takový balast, který se musí obestavět kolem procesoru, abyste procesor mohli rozeběhnout. A tak jsem se po dokončení Juniora rozhodl, že se podívám blíže i na další slavný mikroprocesor osmibitové éry: RCA 1802 "Cosmac". Sehnat ho v naší malé kotlině jsem se ani nepokoušel, ale naštěstí existuje Ebay a tam za mořem jich mají hafo. Jeden tedy přiletěl za mnou až z júesej a co je podstatné: i s dopravou byl levnější než ten poslední 6502AP z GM...

Mikroprocesor CDP1802ACE

mikroprocesor CDP1802ACE (max. 3,2 MHz)

Na obrázku výše je standardní procesor CDP1802 vyrobený firmou RCA. A nejjednodušší balast, který se kolem toho dá postavit je legendární "Low-Cost Experimenter's Microcomputer" Cosmac Elf:

schéma Cosmac Elf

Schéma zapojení mikropočítače Cosmac Elf

Pochopitelně se chystám provést nějaké změny. Jelikož trpím nějakým vrozeným odporem k řadě CMOS 4000, budu používat zřejmě obvody 74HCxx, nebo to přinejmenším budu kombinovat. Tam, kde budou navazovat obvody TTL se objeví i 74HCTxx. Procesor 1802 není kompatibilní s úrovněmi TTL, ale CMOS! Programovací část trochu přepracuji. To ošetření zákmitů pomocí přemostěných hradel se mi prostě nelíbí. Po vzoru Elf2K použiji zřejmě R-S klopné obvody, ale funkčnost bude na 100% shodná s originálem. Vstupy /EF1 až /EF4 asi vyvedu na přepínače, jako u toho simulátoru níže, aby je bylo možné využívat v programech.

Namísto RAM 2101 jsem původně uvažoval 2114, ale možná použiju 6264 (přeci jen je to jedno pouzdro místo dvou) a k ní i EPROM 2764 (s "operačním systémem" ETOPS). Ale rozhodně bude možnost přepnout Elfa do klasického režimu bez pevné paměti. Použití větší paměti si vyžádá instalaci adresového latche (74573). Rád bych přidal i zobrazení adresy, což byla častá (a jednoduchá) úprava originálního Elfa.

Asi největším oříškem jsou znakovky. Originál používá HP 5082-7340, známé též jako TIL 311 (od Texas Instruments). Ne, že by se nedaly sehnat, ale jsou pekelně drahé. Jejich náhrada není snadná, neboť každá znakovka obsahuje vlastní latch a dekodér, který umí zobrazovat hexaznaky. Náhrada pochopitelně spočívá v klasické 7-segmentovce s předřazeným dekodérem a tomu všemu bude předcházet latch. Průšvih je v tom, že klasické dekodéry bin/7-segment (7446/47/48 a jejich odvozeniny) neumí hexaznaky a místo A-F zobrazují jen nějaké hieroglyfy. Nikdy nepochopím proč. Jsou sice vyjímky (třeba MC14495, nebo MHB4311) ale téměř nesehnatelné. Uvažoval jsem tedy o dekodéru naprogramovaném v PAL/GAL nebo malé PROM 74188. Naštěstí jsem byl upozorněn na dekodéry D345D a D346D, což byly východoněmecké klony 7446, ale které (světe div se) hexaznaky umí! A hlavně se dají za pár kaček pořád koupit! Takže každou dvojici originálních znakovek Elfa nahradím jedním osmibitovým latchem 74573, dvěma D346D a dvojicí segmisegmentovek (spol. anoda nutná). Bohužel roste složitost (5 čipů místo 2), ale nedá se nic dělat. Ty originální znakovky jsou fakt drahý a sehnatelný nejspíše jen za velkou louží.

Stejně, jako v případě procesoru 6502, se i zde nejprve seznamuji s novou látkou prostřednictvím softwarového emulátoru. Jen to není emulátor procesoru, ale rovnou celého počítače Cosmac Elf:-) Procesor 1802 má totiž několik zvláštností. Asi největší z nich je to, že neobsahuje pevně daný programový čítač PC. Naproti tomu obsahuje 16 univerzálních 16-bitových registrů R0-RF (vlastně jsou to 8-bitové registrové páry), z nichž každý lze nakonfigurovat jako PC (po resetu je to R0). Který Rx registr to bude určuje hodnota ve speciálním 4-bitovém registru P. Dále zde máme 4-bitové registry N a X, které určují jaký Rx registr bude použit jako ukazatel na data při práci s pamětí, ALU a periferiemi. Akumulátor tady není A ale D. Mikroprocesor disponuje také univerzálním jednobitovým výstupem Q, který lze programově ovládat a čtyřmi univerzálními vstupy /EF1 až /EF4, které lze programově testovat. Je toho ale více a procesor 1802 se klasické Intel architektuře opravdu hodně vymyká...

emulátor Cosmac Elf

X-Elf: emulátor mikropočítače Cosmac Elf


*** Aktualizace ***

Po krátkém intermezzu s Juťákem (nemohl jsem odolat), jsem opět obnovil práce na "Kosmáčkovi Elfíkovi". A základem je dobrý základ:-)

replika mikropočítače Cosmac Elf
Cosmacova platforma
replika mikropočítače Cosmac Elf
Cosmacova platforma

Jak je vidět, opět používám své oblíbené vrtané univerzálky. Jinak je základna vyrobená z novodurových desek tl. 6 mm (bočnice) a 3 mm (panel). Díky rozměru univerzálek (160x100mm) bude můj kosmáček větší, než byl originál. Ale je to dáno i tím, že toho v sobě má více. Ať už díky náhradám "inteligentních" znakovek, či vestavěné náhradě CRT videodispleje PIXIE. Ale těch náhrad je tam víc...

Abych nechodil kolem horké kaše: Ve své podstatě tam z integráčů bude s originálem shodný jen procesor:-) Jednak jsem, díky výše avizovanému odporu k řadě 4000, používal obvody 74xx, které navíc vesele míchám v provedení LS, ALS, HCT a HC (pochopitelně s respektováním požadavků na jejich vzájemné propojování s ohledem na rozdílné úrovně). Vlastně tam jedna čtyřtisícovka je: 4044 (4x RS klopák). Ovšem ta v originále taky nebyla... To jsem jen byl línej si vytvořit dva RS klopáky třeba z 7400 a tak jsem použil 4 hotové v 4044 a u nevyužitých dvou klopáků pracně nastavil úrovně L...

A hlavně je tam GAL. Za tohle mě nostalgici sežerou. Jenže řešit všechny ty mixovaný čipselekty pro periferie a paměti (s přepínáním verze RAM ONLY a RAM + EPROM) klasickými hradly, tak se uhradluju. Ta GALoše 16V8 mi šetří několik pouzder IO. Pochopitelně je i jiná RAM (6264 8KB) a navíc zde figuruje i EPROM (2764 8KB). A ta zmiňovaná náhrada PIXIE? Jeden 74HCT165, jeden 4040 a dva GAL22V10... Přesto je to pořád ELF. Na funkci (rostlináře:-)) nemají tyto náhrady vliv.

Procesorová deska je hotová, na desce zobrazovačů a PIXIEho se pracuje. Procesorová deska je i oživená a šlape. Protože na desce zbylo hluchý místo (díky tomu GALu:-)), dodělal jsem tam jeden výstupní port s LEDkama. Světýlka já rád:-) V paměti (zde EEPROM 28C64) je zatím jednoduchý program pro otestování RAM se signalizací na Q výstupu CPU. Funguje to. Ale teda psát pro 1802 programy, to je síla. Jestliže jsem byl tumpachovej z assembleru pro 6502, tak z 1802 jsem fakt na větvi:-)

replika mikropočítače Cosmac Elf
procesorová deska
replika mikropočítače Cosmac Elf
deska zobrazení

Díky tomu, že libovolný z šestnácti 16-bitových registrů R0-RF může pracovat jako program counter (po resetu je to vždy R0), se dá skákat i tak, že prostě ukážete na nějaký registr a řeknete: "teď čítáš ty". Většinou skočíte kam jste neměli a pak zapomenete co jste chtěli:-) Navíc si musíte dávat bacha, že R1 je VŽDY program counter pro obsluhu přerušení a R2 je VŽDY stack pointer, takže na to bacha! Zas tak univerzální ty registry nejsou.

Řada instrukcí z instrukčního souboru 1802 je sdružených a provádí několik (skoro bych řekl, že nesouvisejících) operací. Vy pochopitelně potřebujete udělat jen tu jednu hlavní operaci a pak vám nezbyde, než zase jinou instrukcí opravit čurbes, co napáchala ta sdružená. Nebo se ty následné operace hodí, jenže jako na potvoru jsou úplně opačné, než potřebujete. Typicky STXD. Instrukce zkopíruje obsah střadače zde (D) do vnější RAM adresované registrem Rx. Následně Rx dekrementuje. Nevím proč, ale já bych potřeboval inkrementaci (a nebo raději nic). Analogicky LDXA. Tato instrukce zkopíruje obsah vnější RAM adresované Rx do D a následně Rx inkrementuje. A já jako na potvoru pořebuju obvykle dekrementovat. Takže buď přestavím hlavu, nebo po každém STXD dám 2x INC a po LDXA zase 2x DEC a program bude jak "u blbejch na dvorečku"... A co se týká instrukcí INP a OUT pro komunikaci s periferiemi tak vězte, že někdy je prostě lepší nevědět:-)

Ovšem instrukčnímu souboru kraluje instrukce SEX n. V programu pro test RAM ji mám na prvním místě (to tak vyšlo) a nepamatuji se, že bych u nějakého procesoru začínal program instrukcí SEX. U procesoru 1802 instrukce SEX znamená SET X a do indexregistru X uloží hodnotu n. Záměrně píšu, že to platí u 1802, protože jeden nostalgik mi tvrdí, že když vyzkouší instrukci SEX na manželku, dělá mu to to samé co NOP. Tak nevím, asi záleží na typu procesoru, ale assembler A18, který používám, lze přepnout i na typ 1805...

Ovšem ani tato úskalí mi nezabránila úspěšně na emulátoru odladit originální program Space Ship a dokonce ho upravit do té míry, že je relokovatelný a relokovatelná je i videoram:

replika mikropočítače Cosmac Elf
originál Space Ship na emulátoru
replika mikropočítače Cosmac Elf
Nostalcomp Space Ship na emulátoru

Ještě poznámka k té mlhovině nad kosmickým korábem originální verze: mlhovina je právě ten program zajišťující zobrazování. Originál ELF má jen 256 bajtů RAM a přesně tolik je i potřebná kapacita pro videoram. Čili zobrazuje se i programový kód. V upravené NOSTALCOMP verzi je videoram v jiné stránce RAM. Snad se podaří dostat stejné obrázky i z reálného HW:-)

Zbývá ještě upravit a odladit "operační systém" ETOPS, aby bylo možné Elfíka jednoduše programovat a spouštět programy uložené v EPROM. Originál ETOPS pracuje jen s verzí s 256 Bajtů RAM a bude nutné jej rozšířit.


*** Hotovo! ***

Je duben 2011 a jeden, kdysi malý, školák si plní další sen. Před dlouhými lety hltavě pročítal seriál článků Amatérské a osobní mikropočítače vycházející v roce 1980 v Amatérském Radiu. Do oka mu padla na TV monitoru hrubou grafikou zobrazená vesmírná loď Enterprise. Tohle chtěl mít. Uplynulo opravdu mnoho let, ale je to tady. Takže si vypůjčím slogan moderátora, který kdysi uváděl na pódium legendární kapelu brouků. So, Ladies and Gentlemen: The Cosmac ELF!

původní mikropočítač Cosmac Elf
původní ELF (1976)
replika mikropočítače Cosmac Elf
... a replika (2011)

Musím přiznat, že z původně jednoduchého "balastu", který se měl obestavět kolem procesoru RCA 1802, se vyklubal zatím nejsložitější počítač, který jsem stavěl:-) Důvod je jednoduchý. Obvodová složitost narostla zejména díky náhradám "inteligentních znakovek" TIL 311 s vestavěným záchytným registrem a hexadekodérem (popsáno již výše). Umocňuje to fakt, že jsem aplikoval i zobrazení adresy (další 4 znakovky + pom. obvody). Dále je novinkou paměť EPROM (která si vynutila i dekodér adres) a výstupní port s LED. Světýlka já rád:-) Posledním důvodem nárůstu počtu pouzder je náhrada nesehnatelného grafického obvodu CDP1861 "Pixie" ekvivalentním obvodem složeným ze 4 integráčů. Na druhou stranu jsem zase něco málo ušetřil díky použití GALu na místě zmíněného adresového dekodéru. GAL totiž řeší i tvorbu některých signálů (zejména strobovací pulsy pro porty), které by si jinak vyžádaly spustu diskrétních hradel různých typů.

replika mikropočítače Cosmac Elf
hotový ELF
replika mikropočítače Cosmac Elf
hotový ELF

Také oživení mě stálo několik nocí a pár nových šedin. Deska CPU sice šlapala napoprvé, ale jen v režimu s EPROM+RAM. V režimu jen RAM a HW "loudováním" programu to nechodilo. Důvod? Překombinované rovnice ve zmíněném GAL. Dle hesla "dej blbci funkci a vymyslí lejstro" jsem vymyslel tak složité rovnice, že se ve finále chovaly některé výstupy GALu jako zdroje konstantní log. 1 bez ohledu na stavy vstupů (přestože se s těmi vstupy uvnitř čile počítalo) :-)

Ale skutečnou noční můrou byla ta náhrada Pixieho. Zde mi osud namíchal ďábelský koktejl, který jsem vypil až do dna. Chyba v programu, kterou emulátor ignoroval a zobrazoval korektně (viz výše), kdežto reálný Elf zobrazoval nesmysly. Tedy pokud zobrazoval, protože většinou nezobrazoval nic. Ale když se na něj šáhlo.... tak něco přece jen zobrazoval a viděl jsem tam prosvítat nápis COSMAC. Ale když se na něj šáhlo jindy zobrazoval jen rozjeté pruhy... No prostě zlej sen. Pak přestal zobrazovat úplně. Vyzkoušel jsem všechno možné i nemožné a pak... při X-té kontrole zapojení jsem zjistil, že nefunguje jeden propoj mezi GAL 22V10 a CD4040 v Pixiem. Důvod? Prasklý pin zaletované precizní patice!!! Jak se na to šikovně šáhlo, deska propružila, pin se spojil a jelo to:-) Takže opravit (vyměnit) pin, namísto pevných odporů, které slučují video a synchronizaci dát nejprve trimry, do paměti nahrát opravený program a zbývalo jediné - naladit perfektní stabilní obraz. A když se obraz objevil, s otevřenou pusou jsem na to zíral snad hodinu... :-)

replika mikropočítače Cosmac Elf
original Space Ship
replika mikropočítače Cosmac Elf
Nostalcomp Space Ship

Ovšem dost možná pomohlo i to, že jsem všechny výstupy GAL v Pixiem, které jdou na vstupy CMOS obvodů pullupnul přes 10K na +5V. GAL jsem použil originál Lattice 22V10D (v původním zapojení jsou Atmel GALy) a v datasheetu je uváděna hodnota výstupního napětí Uoh min 2,4V. Kdežto obvody CMOS (zde CD4040 a 74HC165) potřebují na vstupech napětí Uih min 3,5V. Je to málo pravděpodobné, ale k problémům mohlo dojít i zde. Již při stavbě jsem pochopitelně stejný princip aplikoval i u ostatních spojení TTL-CMOS, ale u toho GAL mě to původně nenapadlo. Až čiré zoufalství mě přimělo podívat se do datasheetu.

Již jsem vyzkoušel všechny programy uveřejněné v původním stavebním návodu (kromě závěrečné animace) a musím říci, že programování pomocí těch páček je fakt bomba! Teď se chystám i na tu animaci a také nějakou hru (Mouse Trap). Pak to vše obalím monitorem na bázi ETOPSu a vyšlehnu do Epromky:-) Uvažuji též o hře Space Invaders, ale to bych musel připojit ještě hexaklávesničku (popis také vyšel v časopise). No, uvidíme:-)


******

Tak už mám odladěn i ten "Animation Program", hru "Mouse Trap" a operační systém "ETOPS2". Také jsem napsal jednoduchý program pro otestování celého Elfa. Screenshoty později přidám a možná bude i video, aby BFU viděli páčky v akci:-)


******

Elfík nově dostal efektní plexisklový kryt jakožto ochranu dráteničiny:

replika mikropočítače Cosmac Elf
hotový ELF s plexikrytem
replika mikropočítače Cosmac Elf
hotový ELF s plexikrytem

Přikládám také slíbené screenshoty a další obrázky z provozu Elfíka:

replika mikropočítače Cosmac Elf
originál 256 Bytes Spaceship
replika mikropočítače Cosmac Elf
animace (rotující nápis)

replika mikropočítače Cosmac Elf
Mouse Trap - start game
replika mikropočítače Cosmac Elf
Mouse Trap - game over

replika mikropočítače Cosmac Elf
ELF v akci
replika mikropočítače Cosmac Elf
ELF v noci:-)


RET



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