A Primo PIO-t abból a meggondolásból építettem, hogy különböző áramköröket amik 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.

Végül ú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 tettem, és kifejtettem rá a portokat. Így már a Primo-PC kapcsolat 50% -a adott volt.

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

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 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 (primo_rom.txt).

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, 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 állapotban 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ő. Ez utóbbi két módozattal én már nem foglalkoztam.
 

Romány József, Eger