Primo A32 mikrogép port bővítő és összekapcsolás PC -vel



       No ez egy igen régi történet. A 80 -as években kezdődött, amikoris még gyakorlatilag nem voltak PC -k, talán az IBM XT -t használták már az anyagilag jobban menő vállalkozások. Otthoni felhasználásra a mikrogépek terjedtek el, ZX-81, C-64, ZX-Spectrum és a ... Primo. Ez utóbbi egy nagyszerű magyar fejlesztés volt, ha többet szeretnél róla tudni ezen a linken biztosan minden megtalálsz. A Primo gépek története sajnos elég dicstelen véget ért, egy szomorú napon végkiárusították az összeset. Ekkor viszonylag kedvező áron hozzá lehetett jutni, ígyhát csóró főiskolásként én is beálltam a kígyózó sorba Budapesten a Jászai téren, és pár óra ácsorgás után boldogon hoztam haza életem első számítógépét.

       Mindig is jobban érdekelt a hardver mint a szoftver, ezért hamar kitanulmányoztam a gép hardverdokumentációját, és elhatároztam, hogy készítek hozzá egy párhuzamos csatoló felületet, hogy különböző áramköröket - amik részben már megvoltak ill. később szándékoztam építeni -, tudjam a Primo-ról vezérelni. Először gondolkodtam, hogy z80 PIO-val oldjam-e meg, de mivel a főiskolán (Kandó) annak idején a 8255-öt igen alaposan megtanították és egyszerűbbnek is tűnt a kezelése, ezért amellett döntöttem. A Primo-hoz szerencsére ritka alapos hardver leírást mellékeltek, így tulajdonképpen nem okozott nagy problémát az áramkör megtervezése.



       A periféria csatlakozón minden szükséges kivezetés megtalálható, csak annyi probléma volt, hogy a RESET jel nem volt megfelelő szintű. Ezt megjárattam egy szabad LS04 kapun, és rátettem a B23-as pozícióra, ami egyébként üres volt. Mint általában minden épített áramkörnél, itt sem a panel elkészítése jelentette a fő problémát, hanem a dobozolás, a portkivezetések kialakítása, hogy "további felhasználásra" a lehető legalkalmasabb legyen.



       Mielőtt valaki nagyon elborzadna gyorsan megjegyzem, hogy mindez a 90 -es évek elején készült, a ma rendelkezésre álló anyagokkal, szerszámokkal ( és tudásommal :-) már nyilván sokmindent másként csinálnék. ( Ha egyáltlalán csinálnék, és nem rendelném meg az eBay -ről fillérekért ... de ez egy másik történet. ) Végül a kivezetéseket úgy oldottam meg, hogy a dobozka előlapján a 8255 kivezetései közvetlenül hozzáférhetők legyenek, azokra már közvetlenül vezetékeket forraszthassak:



       A 8255 A portját egy meghajtó IC-n keresztül vezettem ki, hogy adott esetben nagyobb terhelhetőségű kivezetés is rendelkezésemre álljon. Ennek hátránya, hogy a PIO programozásakor ennek a portnak az irányát mindig kimenetként kell inicializálni. Az A0 bitre egy LED-et is tettem, ami olykor jó szolgálatot tett, ha valami "nem akart stimmelni" a dobozkával. Mikor felmerült bennem a PC -vel való összekötés gondolata, a doboz oldalára egy 25 pólusú Canon aljzatot implikáltam, és kifejtettem rá a portokat. Így a Primo-PC kapcsolat 50% -a már adott volt.




       A PC oldali interfésznek logikusan adódott volna a PC LPT portja, de mégsem azt választottam. Helyette egy olyan áramkör került a gépbe, aminek a rajza eredetileg egy magyar számítástechnikai folyóiratban jelent meg ( szintén valamikor 90-es évek elején ). Remélem nem jogdíjas :-)



       Azért ez, mert munkahelyemen akkoriban éppen szükség volt egy (ill. több) ilyen PC-s interfészre, ezért több példányban is meg lett építve, melyből egy az otthoni PC-mben folytatta pályafutását. Az interfész kártya 3 darab 8255 IC-t tartalmazott, és ISA slotba lehetett dugni. Az én céljaimnak természetesen elegendő volt egy darab 8255 is a kártyán. Elkészítve a PC és a Primo interfészei közötti szalagkábelt, a hardver készen állt a két gép kommunikációjára.



       Azt hiszem logikusan adódott az első megvalósítandó feladat: kiváltani a Primo háttértárát. Bár jó minőségű magnót használva nem jelentett túl nagy problémát a kazetta használata, de a programok PC-n tárolása mégis nagy előrelépést jelent. Rövid mérlegelés után az látszott a legszerencsésebbnek, ha a Primo RAM memória tartalmát teljes egészében mozgatom, így nem kell a programok elhelyezkedésével törődni. A PC adattároló kapacitását tekintve pedig az a néhány kbyte redundancia már akkoriban (1994) is jelentéktelen volt. Kérdéses volt, hogy a Primo-ban maga az adatmozgatásokat végző segédprogram hova kerüljön. A RAM -ba tenni nem szerencsés, hiszen egyrészt átfedés lehet a felhasználói programokkal, másrészt oda is be kell tölteni valahonnan, kizárásos alapon a kazettáról. Plusz memória beiktatása bonyolult, ígyhát a gép EPROM -jában kerestem helyet. Összefüggő szabad területet a 3. EPROM -ban találtam, ahova beégettem a saját rutinjaimat. A két program viszonylag egyszerű felépítésű, így csak kevés helyet foglal. Az egyik a Primo -> PC adatátvitelt, a másik a PC -> Primo adatátvitelt végzi (az assembly programok innen letölthetők).

       Az adatok átvitele a Primo PIO A portján történik, de a B és C port is fel van használva státusz jelzési célokra, így gyakorlatilag egy hand-shake átvitel van megvalósítva. Az átvitel során egy egyszerű cheksum is képződik, mely az átvitel utolsó fázisaként kerül továbbításra ill. ellenőrzésre. A PC-s "ellenprogramokat" C-ben írtam ( pc_to_primo.c és primo_to_pc.c).

       Adódik a kérdés, hogy a Primo-n hogyan lehet elindítani a programokat. A PC->Primo rutinnál egyszerű a helyzet, mivel a Primo ilyenkor a bekapcsolás utáni beviteli módban van, így egy Basic utasítással meghívhatjuk a rutint. Sajnos nem ilyen egyszerű a másik rutin hívása, amikor ugye arról van szó, hogy egy már a memóriában levő programot szeretnénk a PC-re vinni. Amennyiben ez a felhasználói program olyan, amiből lehetőség van vezérlésátadó utasítást kiadni a rutinunk kezdetére, akkor minden rendben, ellenkező esetben sajnos a funkció nem használható.

       Ez utóbbi esetben is vannak megoldási lehetőségek. Megoldható pl. egy megszakítást kiváltó gomb beiktatása, mely a megfelelő rutinra adja a vezérlést. Ugyancsak lehetséges az ilyen programok PC -re továbbítása közvetlenül a kazettáról egy olyan segédprogrammal, ami a szalagon levő adatokat értelmezi és továbbítja a PC -nek. Ha a PC -n előállt a program másolata, onnan már a PC -> Primo monitorprogrammal az a Primo-ba tölthető. De mivel időközben a mikrogépeken végleg túllépett az idő, ezek megvalósításával már nem foglalkoztam.

JozsBiker, 2015