Emulátor MCS 8048

Počas štúdií na vysokej škole som neustále nejakým spôsobom prichádzal do styku s mikropočítačmi a tiež s mikroradičmi. Čím ďalej tým viac sa mi páčilo ako jednoducho je možné týmito súčiastkami realizovať inak veľmi zložité obvody. Stále to však narážalo na problematický vývoj software. Preto som si zadal diplomovú prácu vytvoriť vývojový systém pre mikropočítače. Katedra automatizácie, kde som študoval, to uvítala a poskytla k tomu 8bitový mikropočítač MVS. Vývojový systém mal byť koncipovaný ako integrované prostredie pre vývoj programu pozostávajúce z editora, prekladača, simulátora, emulátora, programátora. Kedže to bolo roboty vyše hlavy programátor nakoniec realizoval spolužiak ako kvázi samostatné zariadenie so samostatným ovládacím programom. Integrované prostredia práve prichádzali do módy. Akurát sa začal používať TURBO PASCAL v 2.00 od nejakej neznámej firmy BORLAND. Na ZX Spectrum zase behalo vynikajúce MRS (memory rezident systém)

MVS

V prvom rade by som chcel priblížiť počítač MVS, mocný to výrobok ZVT Zvolen. Bol to 8 bitový "mikropočítač" ktorý sa podobal na SMEPácky terminál. Mal procesor 8080 fy TESLA Piešťany a 64 kiBy operačnú pamäť a strašne hučiace ventilátory. Pracoval s operačným systémov CP/M. K tomu účelu bol vybavený bulharskou 8 palcovou floppy mechanikou s dvoma "drajvami" s úžasnou kapacitou 90 kiBy na jednu stranu. Mechaniky boli síce jednostranné ale ked sa dobre vyrezali otvory pre čítanie synchronizačnej značky dalo sa zapisovať na obe strany diskety, teda úžasných 180 kiBy. Ako programovací jazyk som si vybral assembler, pretože v inom jazyku by sa to asi ťažko podarilo napratať všetko do 64 kiBy pamäte (len operačný systém zožral až 20 kiBy). Ale hlavne to bol jazyk ktorý som slušne ovládal. K dispozícii bol macro assembler takže sa dalo prekladať jedna radosť.

Narazil som ale na problém ako program slušne odladovať. Naštastie som sa stal majitelom niečoho na tú dobu nevídaného. Bol ním PC - XT s 640kiBy operačnou pamäťou, 40MB pevným diskom, a farebným grafickým adaptérom CGA. Zohnať na to TUBRO ASSEMBLER a TURBO DEBUGER nebol problém. Vlastne bol, ale študenti majú široké možnosti, hlavne keď sa na katedre objavili dva PC AT z JZD Slušovice. Program sa preto písal na internáte v assembleri pre 8086, ale tak, že som používal iba inštrukcie ktoré mal 8080. Ladenie prebiehalo v turbo debugeri, do MVS sa prepisoval už odladený program a ten už zvyčajne fungoval. MVS som simuloval totiž pomerne detailne, vrátane monochróm displeja 25x64 znakov a tiež diskových služieb CP/M.

Ako prvé som pracoval na simulátore. Najpr sa nasimulovala v pamäti MVS vnútorná štruktúra registrov MCS 8048 a potom som urobil vypisovanie stavu registrov na obrazovku. Nasledovalo simulovanie jednotlivých inštrukcií. Kedže 8048 ich má pomerne veľa chvíľu to trvalo ale bolo to pomerne jednoduché. Zároveň sa vyrobili príkazy STEP, TRACE a RUN aby sa vobec dalo simulovať. Celý simulátor bol ovládaný zvláštnym riadkovým menu, pretože roletové sa na hlúpom a pomalom sériovom termináli dosť zle robí. Simulátor vedel čítať a ukladať formát INTEL HEX a tak sa už dal naozaj používať pre ladenie programov pre "jednočipák". I keď prekladalo sa ešte bežným riadkovým assemblerom.

Začala práca na editore. Kedže vybavenie velilo šetriť každým bytom, editor bol urobený tak, že zdrojový text bol v pamäti a aj do súboru ukladaný v medzikóde. Poriadne to šetrilo pamäť a aj zrýchľovalo preklad, pretože inštrukcie už boli v podstate preložené. Editor bol na tie doby mocný celoobrazovkový a mal dokonca ovládanie pomocou menu. Keď editor ako tak dokázal vytvoriť zdrojové súbory a aj si ich po sebe spätne prečítať a vygenerovať do pôvodnej podoby nasledoval prekladač. Prekladač to bol maximalne jednoduchý. Poznal iba direktívy na zapnutie a vypnutie listingu. Z pseudoinštrukcí poznal iba DB DW EQU a END. Kedže bol integrovaný spolu s editorom, prekladal zdrojový text uložený v operačnej pamäti a to už predpreložený, takže preklad 1kiBy kódu netrval ani sekundu. Teraz to bol ten pravý nástroj na vývoj - kompletné vývojové prostredie. Editorom sa zmenil text programu, okamžitý preklad a hneď mohla začať simulácia. Po najdení nejakej tej chyby, šup jedným tlačítkom späť do editora a zase dokola. Postupom času sa vychytali chybičky a ďalší dvaja spolužiaci si na ňom ladili diplomovky.

Poslednou fázou bol emulátor. Naozaj elegantné to bude až si programátor bude môcť preložený program nahrať do pamäte emulátora a odštartovať a sledovať jeho činnosť. Vhodné by bolo aby si mohol nastaviť aj nejaké BREAK-POINT pri prechode ktorými mu program zastaví a zobrazí stav vnútorných registrov mikropočítača. Vymyslieť základnú myšlienku emulácie, totiž pamäť RWM ktorá by sa dala naplnit z MVS a potom prepnúť k emulačnému mikropočítaču ktorý potom vykonával program z tejto pamäte nebol problém. Obsahovalo to síce veľké množstvo registrov a všelijakých TTL obvodov lenže ako to teraz postaviť, overiť, naprogramovať? V tom čase nejaká organizácia 602 Zvazarmu začala vyrábať a predávať kontaktné polia. Stáli smiešnu sumu 33Kčs a ľutujem že som si ich nekúpil viac. Na týchto kontaktných poliach som zadrátoval postupne celé zapojenie. Vyzeralo to úchvatne, drôtov krížom krážom, veď tam bola 8 bitová datová a 12 bitová adresná zbernica a spústu obvodov. Oživovanie sa konalo iba vlastnoručne vyrobenou logickou sondou s počítaním impulzov do 16. A v prípade že to už inak nešlo nasadil sa taký dobrý dvojkanálový osciloskop TESLA BM566 s dvoma časovými základňami. Ten musel nahradiť nedostupný logický analyzátor.

Schému emulátora som kreslil opäť na PC v programe OrCAD. Ten sme sa museli samozrejme naučiť sami, pretože to vedelo robiť pár ľudí na škole. Na katedre merania nám dosť pomohol asistent. Takže žiadne kreslenie výkresov, ale pekne konštruovanie na PC. Urobiť zmenu zapojenia zaležitosť pár minút. Neustále mať k dispozícii aktuálnu plachtu zapojenia všetkých obvodov to boli neoceniteľné služby pri zapojovaní a oživovaní. Nastal okamih kedy zapojenie fungovalo a už chýbala len taká drobnosť. Postaviť ho. Zase pomohol počítač. Schéma z OrCAD sa previedla cez netlist do programu REDAC a tam sa navrhovala doska. Opäť metódou poskus, omyl. Výsledný návrh bol poriadne veľký ale to nehralo rolu, hlavne že bol. Tri týždne pred odovzdaním diplomovky sa odovzdali podklady do laboratórii školy kde boli schopný urobiť podľa nich obojstranný plošný spoj.

Teraz zostal čas na písanie nejakej textovej, časti. No jasne program T602 je na to ideálna vec. Lenže vytlačiť diplomovku na nejakej chabej ihličkovej tlačiarni, tak to teda nie. Na katedre bola taká pekná riadková tlačiareň ROBOTRON, ktorá písala nádherne pretože mala typové kolečko a nie ihličky. Malý detail - pripojená bola k SMEPe nejakým čudným rozhraním. Takže ako na to? Z PC pretiahnuť data na SMEPu cez sériovú linku. Ešte predtým napísať program na prekódovanie znakov z kódu kamenických na neviem aký kód čo pozná ROBOTRON a je to. Môže sa tlačiť diplomovka. Môže lenže sa akosi na typovom kolečku lámu mäkčene. No zničili sme všetky kolečká v blízkom okruhu. Príčina sa ukázala až dodatočne - silu úderu niekto nastavil na maximum. Normálne písmenká to vydržali pretože majú veľkú plochu. Akurát mäkčeň, potvora (ten nikto zatiaľ nepoužíval) sa po jednom dvoch vytlačených exemplároch odlomil. Takže doma mám diplomovku ktorá nemá mäkčene. Ešte sa do práce doplnili schémy z OrCAD a plošný spoj z REDAC a je hotovo.

Nie tak celkom. V deň odovzdania textovej časti som si bol vyzdvihnúť plošný spoj. Bol pekný, profesionálne urobený obojstranný a prekovenými dierami. Postupne som prespájkoval obvody z zdrôtovaného kontaktného poľa na plošný spoj. Všetko fungovalo tak ako v zadrôtovanej podobe. CAD programy odviedli svoju robotu. Žiadny spoj nebol zabudnutý, ani nesprávne zapojený. Nič nebolo treba preškrabávať, alebo hladať skraty či chybné prekovy. Už len všetko tresknúť do krabice a hotovka.

Spolužiak urobil do tej istej krabice programátor aj zdroj takže to bolo všetko pohromade a v kope. Vyzerá to že by sa to dalo aj obhajiť. Ešte nejaké štátnice a je to v suchu. Bolo, ešte rok potom som si chodil na katedru programovať jednočipy na programátore. Jediná chyba bola že celý systém pracoval s 8 bitovým MVS. Programové vybavenie síce bežalo na PC ale dôsledne emulovalo obrazovku MVS (monochrom 25x64 znakov).

Po skončení školy nasledovala ZVS v Mariánských Lázniach. Je to síce ďaleko, ale nebolo tam čo robiť. Bol rok 1990, rok po prevrate. Tak som si tam dotrepal PC, vojakom som písal a tlačil tie ich dokumenty a zvyšok času som upravoval vývojový systém pre PC vrátane emulátora. Dosku emulátora som zmenšil na polovicu, vyriešil pripojenie cez paralelný port PC a vyrobil som si dva kusy emulátorov pre vlastnú potrebu.

Emulátor 8048, verzia pre PC

 

A takto to vyzerá v krabici

Rovnako ako samotny program doznal zmenu i ovladaci program. Stále je písaný v assembleri a beží pod DOSom v textovom režime. Editor síce veľmi nepokročil. Okrem roletového meny nedoznal žiadne vylepšenia. A stále obsahuje mnohé grafické nedostatky, ale má aj niektoré muchy, ktoré vedú k zamrznutiu celého počítača. Stačilo však nepoužívať kritické funkcie a dalo sa v tom pomerne spoľahlivo programovať. Posledné úpravy v zdrojových súboroch sú z roku 1996. Odvtedy je prostredie odstavené a sem tam si s ním preložím program pre 8048.

Vývojové prostredie, okno editora

Prostredie simulátora bolo kompletne prepracované tak, aby využilo maximálne textovú obrazovku. Ovládanie je možné pomocou klavesnice, menu a myšou. Simulácia je pohodlná.

Vývojové prostredie, okno simulátora

Na záver pre zaujímavosť kompletné prostredie (editor, assembler, disassembler, simulator, emulator) zaberá 75424 byte.

Hlavná stránka