Mikropočítač NCB 85



Užuž to vypadalo, že dlouho žádný jednodeskáč stavět nebudu, když jsem jednoho dne dostal mail ze Slovenska. Jistý Roman mi v něm pochválil stránky (óóó díky:-)) a sdělil mi, že se chystá na stavbu jednodeskáče, nejspíše klonu PMI-80, ale s procesorem 8085. Po té, co jsem mu záměr pochválil a vyjádřil podporu, se ozval znovu, že si to rozmyslel, a že si postaví vlastní počítač komunikující s PC terminálem po sériové lince a trochu se rozepsal o tom, co by měl dále obsahovat. Následně poslal i schéma s prosbou, abych se na to podíval, a že prý nechá udělat i desky. Takových prohlášení už jsem dostal dost a tak jsem si myslel své. Schéma jsem Romanovi zkritizoval a on to upravil, nechal udělat desky a za odměnu mi jednu poslal... :-) Přidal také hotový převodník RS232 na TTL UART (díky) a tak se stalo, že jsem se po nějaké době nečinnosti zjara 2011 opět pustil do pájení a postavil NCB85, jak Roman svou konstrukci nazval:

deska NCB 85
mikropočítač NCB 85
deska NCB 85
mikropočítač NCB 85

Nutno podotknout, že desky udělané v Hong Kongu jsou perfektní. Dvoustranné, prokovy, maska, potisk, zkrátka nic nechybí a vše je kvalitní. Ale zpět k vlastnímu počítači. Srdcem je již zmíněný 8085 taktovaný krystalem 6.144 MHz. RAM je typu 628128 (581000) s kapacitou 128KB, ale využitých je max 62KB (zřejmě proto, že jich bylo k dispozici hodně:-)) Jako pevná paměť slouží EEPROM 28C64 (8KB), ale může být osazena i klasická EPROM 2764, či 27128 (využít lze ale jen max. 8KB). Adresový dekodér je tvořen čtveřicí hradel OR (7432) a jumpery lze nastavit velikost pevné paměti od 2KB do 8KB (vždy od 0000h) . Zbytek vždy tvoří RAM až do FFFFh.

Pro komunikaci s okolím slouží obvod RIOT 8155 obsahující 3 paralelní porty, timer a 256 bajtů RAM, která ale není v NCB85 využita. Všechny porty jsou vyvedeny na konektory a lze k nim připojovat další obvody. Vstupní kmitočet timeru je 307.7 KHz. Výstup timeru je připojen na RST6.5 vstup procesoru. Zde se však vloudila chybička! Jak Roman, tak já při kontrole schématu, jsme přehlédli to, že výstup timeru TO je nutné invertovat! Jeho aktivní úroveň je L, kdežto aktivní úroveň přerušovacího vstupu RST6.5 u CPU 8085 je H. Naštěstí jsou v zapojení dvě nevyužitá hradla z obvodu 7400, a tak nebyl problém jeden invertor do cesty signálu TO vložit. Holt se musel přeškrábnout plošňák a dodělat dvě drátové propojky.

deska NCB 85
můj NCB 85
deska NCB 85
Romanův NCB 85

Dalším obvodem pro styk s okolím je 8251A, který realizuje sériové rozhraní. Pomocí děličky 7490, jumperu a nastavení vnitřní děličky v 8251A lze volit přenosové rychlosti 4800, 9600, nebo 19200 Baudů. Na desce není integrován převodník TTL UART na úrovně RS232 (MAX232) a je nutné ho připojit externě. Sériové rozhraní integrované v 8085 není využito, ale je k dispozici na konektoru, stejně jako nepoužité přerušovací vstupy. Více k zapojení není co dodat, vše je zřejmé ze schématu (jedinou chybou ve schématu je chybějící invertor na výstupu TO, viz. výše).


    NCB85 - schéma zapojení


Osadil jsem to tak, jak Roman předepsal (skoro):-)) Akorát namísto odporů 560R (neměl jsem je) jsem dal 680R. Blokovací kondy k integráčům jsem dával 100nF a 220nF (podle složitosti integráče) a do jedné ze tří pozic pro napájecí konektor jsem osadil elyt 100uF. U Resetu jsem dal elyt 2u2 (miniaturní 1uF jsem neměl). Propojku z Timer_Out jsem přerušil pod procesorem (takovej krátkej šikmej kousek ze strany spojů) a do prostupů desky zapájel dráty vedoucí k invertoru v 7400 (vývody 11,12,13).

Je zde i druhá alternativa. Můžete totiž osadit i krystal 9.8304 MHz a namísto 7490A dát 7493A Je ale nutné použít 5 MHz verzi 8085 a 8155 (poběží na 4.9152 MHz). Roman však úspěšně přetaktoval i 3 MHz verzi:-)


8251 versus 8251A

Během naší emailové komunikace jsem se Romana ptal, zdali bude v NCB85 fungovat i "bezáčkový" 8251. Dotaz ignoroval. Tak jsem to vyzkoušel a fungoval bez problému, dokonce i na rychlosti 19,2 Kb, ačkoliv teoreticky by měl jet jen do 9,6 Kb. Ale fakt to šlape. Připravil jsem si testovací datový soubor o velikosti 50 KB a přenosy probíhaly bez jediné chybičky.

Napsal jsem tedy Romanovi, že je to výborné a jak to má skvěle navržené, protože bezáčková varianta 8251, kterých jsou plné výprodeje, šlape v pohodě. Odepsal, že vůbec nevěděl, že nějaká bezáčková varianta existuje, a že myslel, že existuje jen jeden obvod a sice 8251A... V této souvislosti mě napadají dvě krásná česká přísloví: někdy je lepší nevědět a nejblbější sedlák má vždycky největší brambory. Romane, nic ve zlém to je žert:-)

Následným studiem jsem zjistil, že klíč k použití bezáčkové verze 8251 je v tom, že zkrátka ojebat se to musí. Totiž problémy s fungováním 8251 bez A mají ti, kdož poctiví jsou a pracují i s řídícími signály DSR, DTR, CTS, RTS, které 8251 nemá double bufferred. Ti, kdož využívají jen TX/RX bez řízení toku, jsou v poho a 8251 jim šlape stejně dobře jako 8251A:-)


software pro NCB85

Počítač bez software je k ničemu. Proto je k NCB85 k dispozici následující výbava, která zajišťuje hlavně spojení s terminálem a natahování a ladění uživatelských programů. Všechny programy jsem zkoušel se standardním Hyperterminálem Windows. Nastavení terminálu je pro všechny programy stejné: 8 datových bitů, bez parity, 1 stop bit, žádné řízení toku. Přenosovou rychlost používám 19200Bd.


jednoduchý Bootloader

Prvním softem pro NCB85, který Roman připravil (a já si ho pak poladil:-)) je jednoduchý Bootloader. Jak název napovídá, po spuštění (po resetu) se ohlásí na terminál, otestuje RAM a sdělí její použitelný rozsah (dle nastavení jumperů na desce) a očekává data z terminálu. Odesílá se HEX file (jako textový soubor). Nahrávaný program se ukládá přímo na adresy obsažené v HEX file. Během nahrávání se kontroluje kontrolní součet každého řádku. Po ukončení nahrávání se nahraný program spustí od první načtené adresy. Nic víc, nic míň. Program není úplně dokonalý, ale funguje. Více v komentářové hlavičce zdrojáku. A takto to vypadá v reálu s Windows Hyperterminálem:

bootloader NCB 85
bootloader NCB 85 - ready
bootloader NCB 85
loaded and running...
bootloader NCB 85
error address
bootloader NCB 85
error loading


    NCB85: Bootloader


jednoduchý Shell

Dalším programem, který Roman připravil je Shell, který už toho umí podstatně více. Po resetu je v bootloader módu a čeká na příjem Intel Hex. Potud je to kompatibilní s výše popsaným bootloaderem. Stiskem CTRL-C, CTRL-Z nebo CTRL-Q se zobrazí prompt a dají sa zadávat príkazy:

DUMP AAAA - kde AAAA je adresa

JUMP AAAA

SET AAAA BB [BB [BB] ..] - kde BB jsou byty, první sa zapíše na adresu AA, další na AAAA+1, a tak dále

LOAD - po jeho zadání sa zase skočí na příjem Intel Hex, ale po úspešném nahrání do paměti se tento nahraný program nespustí. Zase se zobrazí prompt. Spustit se může pomocí JUMP.

Shell navíc inicializuje timer v 8155 a rozbliká LED, jakožto indikaci chodu počítače. Test RAM je nedestruktivní (nemění hodnoty v RAM), takže po resetu zůstává obsah RAM nezměněn, na rozdíl od předchozího Bootloaderu.


    NCB85: Shell


Monitor MON85

No a nakonec to dospělo k implementaci skvělého monitoru MON-85 od Dave Dunfielda. Má skoro 4kB a je tedy nutné příslušně nastavit jumpery pamětí. Oproti Shellu toho umí o dost více. Download Intel Hex a Motorola Hex formátů. Výpis paměti v disassemblovaném formátu, výpis v hexadecimálním formátu (jako DUMP v shellu), prohlížení obsahu registrů, vkládání breakpointů, in/out operece atd... Prostě pecka:


    NCB85: MON-85


Programování NCB85 v Céčku

Kromě toho si Roman také hrál s C compilerem pro 8080 a vyzkoušel třeba připojení LCD displeje. A zde je jeho názor na to Céčko: je to proste paráda takto programovať starú dobrú 8080 :-) V hlavnom cykle refreshujem display a v prerušení RST6.5 od timera si inkrementujem UP-Time

deska NCB 85
NCB 85 s LCD displejem
deska NCB 85
NCB 85 s LCD displejem


plošný spoj pro NCB85

Roman nechával dělat desek více a pár jich ještě má pro další zájemce. V případě zájmu pište na roman.fulek -zavinac- gmail.com. NCB85 je výborný jako výukový 8085 systém a díky portům obvodu 8155 i jako vestavný modul pro různé další aplikace. Dovedu si představit různé programátory a simulátory pamětí a podobně. Pochopitelně nic nebrání připojit displej segmenťáček, klavku hexadecimálku a nabušit příslušný monitórek a udělat z toho našeho oblíbeného školního jednodeskového klasika:-)


*** Aktualizace ***

Po přečtení této stránky věnované NCB 85 se na něj vrhnul také Martin. Mimo jiné poslal hezké fotky, z nichž jedna detailně ukazuje možnost, jak napravit výše zmiňovanou chybu zapojení výstupu z timeru 8155:

deska NCB 85
Martinovo NCB 85
deska NCB 85
detail úpravy


*** Nedokumentované instrukce 8085 ***

V souvislosti s NCB85 se také otevřela otázka tzv. nedokumentovaných instrukcí a jednoho 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. NCB85 je ideální platforma na vyzkoušení těchto instrukcí.


    8085: nedokumentované instrukce



*** Upravený monitor od Romana Bórika ***

Počítač NCB-85 si postavil také Roman Bórik, známý zejména jako expert na PMD-85. Ovšem nejen postavil. Roman upravil výše zmiňovaný monitor MON-85 od Dave Dunfielda tak, aby podporoval i nedokumentované instrukce procesoru 8085 (viz. výše)! S upraveným monitorem tam můžete s NCBečkem proniknout do tajemných zákoutí utajovaných instrukcí:-) Více o upraveném monitoru se dočtete na Romanově blogu RM-TEAM, kde si monitor také můžete stáhnout. Paráda!


*** CP/M na NCB-85! ***

Stejný autor, jako v odstavci výše, má na svědomí také implementaci legendárního "osmibitového" operačního systému CP/M ve verzi 2.2! Pokud si chcete CP/M vyzkoušet, je jeho aplikace v NCB-85 jedno z nejjednodušších řešení. Namísto floppy disku Roman k NCB připojil svůj legendární PMD 32-SD. Prostě paráda! Více naleznete opět na blogu RM-TEAMU


RET



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