Első Kisszámítógép


(Nagy projekt)

Bár már 8-adikos koromban tudtam programozni, mégse tudtam összekötni hogy végső soron mi történik a programommal az elektronikában, miért működik a számítógép? Egyetemen találkoztam először közelről processzorral, ott tanultam meg először hogyan működik a számítógép hardvere. A többieknek ez nem volt nagy szám hiszen ők nagyrészt szakközépből jöttek, én meg gimnáziumból ahol nem tanultunk ilyesmit (bár sok olyat ami nem érdekelt).

Egyből beleszerettem a digitális áramkörökbe, ez olyan els látásra szerelem volt. Akkor leszögeztem hogy a processzor is meg az összes digitális kűtyű mind analóg áramkör, ugyanazokból az alkatrészekből áll mint pl. egy rádió vagy TV. Csak mi emberek gondlunk rá úgy hogy digitális, avagy bizonyos feszűltségtartományok a logikai nullát vagy logikai egyest jelenti. Ez pedig nem így van. Ez csak az emberi gondolkodás kényszerűsége miatt alakult ki.

Mivel nem volt számítógépem, csak az egyetemen gépezhettem, gondoltam építek egyet. Meg is álmodtam milyen lesz. Tisztán emlékszek tényleg egy éjszaka végig felderengett a homályból. Mire elkészltem már persze összeguberáltam egy öreg 486-os gépet, de ez nem állított meg, folytattam a munkát. Akinek mutattam mind elszörnyűlködtek eme eszement drót gubancon. Kérdezgették hogy átlátom-e még az áramkört, meg hogy biztosan nem ér-e össze valami benne?

Az az igazság, hogy egy darabig tényleg átláttam meg működött , nem ért össze elektromosan semmiféle drót aminek nem kellett volna, de egy idő után elvesztettem felette az uralmat. Ekkor félredobtam az egészet és belekezdtem egy másik, ennél komolyabb számítógép építésébe.

I8085-ös processzor 2kilobájt memóriával , pont úgy ahogy tanultuk órán. A progamozásához nem kell semmi egyéb, szabadkézzel lehet belepötyögni a biteket. A memóriát kézzel végig lehet címezni és belétáplálni a gépi kódot bitenként, hogy utána egy gombot megnyomva elinduljon a program és lefusson. Később bővítettem egy interfésszel aminek segítségével 486-os számítógépemről fel lehetett tölteni a programot a gépre. Itt már használhattam hozzá való assemblert ami nagyban megkönnyítette a fejlesztést.

Két fő perifériája van. Egy négygombos nyomógombokkal ellátott beviteli tasztatúrája meg egy videó jel generátor amivel buherált tévére lehet kűldeni a videjóelet.

Így néz ki a beviteli egység ahol kézzel lehet felprogramozni a kűtyűt. Végrehajtás közben azaz amikor a program fut a processzorban akkor végig látható a processzor által kiadott cím és adat, azaz a felső zöld ledsor a 16bites címbuszra van kötve, az alsó 8 piros LED meg az adatbuszt jeleníti meg. Persze ha a processzor szabadon fut a maga 1MHz-es órajelén akkor csak folyamatosan világítónak látszanak ezeke a LED-ek a gyors kapcsoltagtás következtében. Bár némi érdekesség így is kiolvasható. A sárga LED-ek a processzor állapotbiteit jeleníti meg. Az egész LED-es kijelzés két esetben hasznos. Egyrészt ha lépésenként hajtatom végre a processzorral gépi kódról gépi kódra az utasításokat, amit egy nyomógomb nyomkodásával érhető el. Ez a „debug” gomb Minden egyes gomblenyomásra egy gépi kódot hajt erre végre a processzor, utána megáll. Ilyenkor gyönyörűen látszik a buszon a végrehajtott utasítás eredménye, a LED sorról leolvasható és gyönyörködhetűnk benne, hogy a processzor valóban működik. A másik célja a LED sornak amikor kézzel pötyögjűk be a gépi kódot a memóriába. Ilyenkor a lenti érintkező soron az egyik fémlemezhez hozzá kell érinteni a ceruza szerű érintkezőt kezűnkkel és ezzel lehet logikai 1-esbe kapcsolni az adott LED-et. Alapból mindegyik nulla állásból indul. A memória címét meg egy másik nyomógomb nyomkodásával lehet elre léptetni a 16 bites címbuszon, vagy törölni nulla állásba

Az a 40 lábú IC a 8085-ös processzor , mellette meg a kisegítő áramkörei. A bal alsó sarokban a processzor RESET kapcsolója van , tőle jobbra lent alig látszó „debug” léptető kapcsoló. Ennek nyomkodásával egyenként utasítható a processzor a soron következő utasítások végrehajtására.

Ez itt a videó jel generátor rész, felűl annak pixelfrekvenciáját előállító kvarcoszcillátora látható a fehér kvarcjával. Felette lévő trimmer kondenzátorral lehet elhúzni és ezzel finomhangolni a kvarcoszcillátort. Maga a videó jel generálás igen primitív, egyetlen shift-regiszterből áll amit a folyamatosan futó kvarcoszcillátor ki-shiftel. Amikor a processzor ír a regiszterbe, akkor az oszcillátor kap egy lökést az írójelből amire szinkronizálódni kénytelen. Ezért nem csúsznak el a sorok a képernyőn. A regiszterbe írt bitek meg ki-be kapcsolják a képcső elektronnyalábját , létrehozva kb 16X10-es pixeles felbontást. Én erre kezdetleges tetrisz szerű játékokat írtam , erre tökéletesen megfelelt.

A processzor közelről. Mellette a reset gombbal.

A memóriát címező számláló sor.

2K RAM. Szimplán. Minek több ide? Mire telepötyögi kézzel bizgerálva az egészet, rámegy a fél élete. Kézzel maximum 200 bájtnyi kódot írtam bele pötyögve. Amikor már megcsináltam hozzá a PC-ről való feltöltő interfészt, akkor is assembler segítségével maximum 1kilobájt programot írtam bele. Ez is igen megterhelő volt már . Tehát ez a 2K RAM sose volt kihasználva.

Rövidebb próbálkozások után hamar keserű búcsút intettem ennek a projektek, részben az igényeim megnőttek egy több lehetségekkel bíró gépre. Bár ezt a kis masinát is lehetne a végtelenségig bővítgetni hardverekkel. Csak annak sose lesz vége. Nem is ez volt vele a gond, hanem már az elején felvetett kérdés. Valahol valami tönkrement benne. Mindig azért fohászkodtam nehogy valami elromoljon benne. Egyszerűen az ilyen áramkör javíthatatlan. Az IC-k egymás hátán kis helyen összesűrítve. Nem lehet beférni a forrasztópákával sehová, úgy körbeépítettem a blokkokat. És hogy még találjam meg benne a hibát? Dehogy. Soha.

Megépítése sziszifuszi munka révén néha már már kezdett elmenni vas tűrelmem, de a szent célt magam előtt látva serényen toltam neki a forrasztópákát. Roppant monoton munka. Észrevettem magamon hogy ennyire hosszas monoton munkavégzés közben ami még rosszabb mint a trafótekerés, úgy belejövök hogy automatikusan csak csinálom, csinálom mint egy gép, közben képzeletemben klönféle tájakon repűlök érzés fog el.

Rövid pályafutása után elbúcsúztam tőle, hogy jöjjön egy másik rendezettebb nagyobb projekt.

Dokumentációk, kapcsolási rajzok:

Főmodul processzorral és memóriával

Perifériatervezet a processzoros főmodulhoz

Videó rész ("videókártya")

ISA kártya terv 486-os számítógépbe

Printer (LPT) portos programozó

ISA kártya tervek

Videó meghajtó program folyamatábrája

ISA kártya további tervei

Tervezett karaktergrafikus kijelző rajza

Központi modul blokkvázlata

Tervezett megszakítás menedzser áramkör





By Bognár András (2015)