3. KAPCSOLAT A KULVILAGGAL

 

 

3.1. USER PORT ÉS RS232-ES

A USER PORT nevd háts6 csatlakoz6ra (1. 20. ábra) kivezetett jelek els5sorban a gép funkci6inak a felhaszná16 általi b5vítésére szolgálnak (user=haszná16). Itt kaptak helyet egy 8-vonalas párhuzamos port áramkör kivezetései, valamint az RS232-es kapcsolatra alkalmas ACIA megfele15 vonalai.

Itt találhatjuk még meg:

.a gép ATN jelét (a processzor beépített port jának 2. bitje)

.a külső egységek alaphelyzetbe állítására szolgál6 jelet (BRESET)

.a tápegységből érkező 9 V-os vált6feszültség két kivezetési pontját;

.a gép tápfeszültségének (+5 V) és a róldpontnak a kivezetését.

 

3.1.1. A párhuzamos port

A PLUS/4-es gép és egy külső egység közötti párhuzamos adatforgalmat a gép beépített 8-bites portján keresztül val6síthatjuk meg. A kapcsolási rajzon U5-ös pozíci6számmal ellátott 6529B típusú port áramkör 8-bites, bemenetei az adat buszra, -kimenő vonalai pedig a USER PORT csatlakozóra kapcsol6dnak. Az adatforgalom irányát az l-es lábra érkező R/W jel határozza meg. Az áramkör működését a 19-es lábra érkező chip select jel engedélyezi, amelyet az FPLA állít elő az $FDI0/64784- $FDIF(64799) címek megsz6lítása esetén. A 6529B belső tárol6val is rendelkezik, tehát a címére írt adat mindaddig jelen van a kimenetén, amíg azt meg nem változtatjuk. A port olvasásakor a PO-P7-es kivezetések állapota kerül az adatbuszra.

Meg kell még említenünk a P2-es vonalat, a PLUS/4-es ezt a kazettás magn6t6l jövő CST SENSE

(magnóbillentyl1-megnyomás) vonal beolvasására használja. Ez a jel átköthető a processzor port jának 7. bit jére a J9-es jumper megszakításával és a J8-as érintkezőinek összekötésével.

3.1.2. Az RS232-es

Az RS232-es elnevezést ma már sokan és sokféleképpen használják, éppen ezért meg kell ismerkednünk az alapfogalmaival. Felhívjuk a figyelmet, hogy e fejezet megértéséhez elengedhetetlen az ACIA leírásának (1.4.) áttanulmányozása.

Az RS232C egy olyan amer~kai szabvány (eur6pai megfelelője a CCITT V.24), amely egy számít6gép

és egy adatátviteli rendszer közötti soros illesztésre vonatkozik. Ez ut6bbi általában egy MODEM

 

(Modulator-Demodulator) egység, amely a digitális jeleket ana16ggá alakítja át, s így az informáci6t nagyobb távolságra is átviheti. Ott a jeleket egy másik MODEM fogadja, majd visszaalakítja digitálissá az ott lév6 másik számít6gépnek, terminálnak (1. 21. ábra).

 

Ez a kapcsolat természetesen kétirányú lehet, a MODEM-ek közti átviteli vonal pedig a legtöbb esetben telefonvonal. A MODEM áramkörök integrált kivitelben is léteznek, ilyen pl. a Motorola MC6860-as chip-je.

 

A gyakorlatban az RS232C által meghatározott adatátvitelt szokták pl. két mikroszámít6gép között is alkalmazni.

Az RS232C szabvány rögzíti az adatátvitel sebességének lehetséges értékeit, amelyet bit/s mértékegység- gel jellemeznek (ez a baud-rate, 1. 7. ábra), az illesztéshez használt csatlakoz6 típusát (Canon DB25) és annak kiosztását, a soros átviteli jelformátumot, a használt jelek funkcióit és azok feszültségszintjeit (+12 V).

Mindazonáltal az RS232C lényegében egy ajánlás, amelyet az ilyen illesztőegységgel (interface) ren- delkező gépeket gyárt6 cégek legtöbbször csak rész ben vesznek figyelembe, pl. nem a szabvány szerinti csatlakozót használják, vagy pl. +5 V-os TTL-szintekkel dolgoznak a +12 helyett.

Most vissza is tértünk a PLUS/4-eshez, ez ut6bbi két megállapítás ui. rá is vonatkozik. Ebből következik tehát, hogy amennyiben a PLUS/4-est szabványos RS232C illesztőegységgel szerelt készülékhez - pl. MODEM-hez - akarjuk csatlakoztatni, mindenekelőtt a jeleit kell +12 V-osra átalakítanunk, és szabványos csatlakoz6t is be kell szereznünk.

A következő táblázat az RS232C és V.24 szabványok legfontosabb jeleit szemlélteti. Az első oszl.opban a szabvány szerinti csatlakoz6 számai, a másodikban a V.24-beli elnevezések, a harmadikban az RS232C eredeti jelnevei, a negyedikben a leginkább használatos jelelnevezések, s végül a PLUS/4-es USER PORT-jának megfelelő kivezetéseit tüntettük fel.

RS232     V.24        RS232     Funkci6                                 USER PORT
csatI.      név         név                                                        csatI.

2              103          BA          Transmitted Data (TxD)                     M
3              104          BB          Recieved Data (RxD)                          C
4              105          CA          Request to Send (IifS)                        D
5              106          CB          Clear to Send (aTS)                           
-
6              107          CC          Data Set Ready (DSR)                        1
7              102          AB          Signal Ground
                     1, 12, A, N ,
8              109          CF           Data Carrier Detect (DCD)                 H
17            115          DD          Receiver Clock (RxC)                          B
20            108/2      CD          Data Terminal Ready (D"TR)            E

Ezekután térjünk át az átviteli jelformátum és a legfontosabb adatátviteli mdveletek lezajlásának ismertetésére, amelyeknek programb61 történő irányítását, ellenőrzését az ACIA közremdködésével végezhetjük (részletesen az 1.4. alfejezetben találhat6). Meg kell jegyeznünk, hogy ebben a részben - értelemszerden - az RS232-esnek a PLUS/4-ben megval6sított változatát ismertetjük (pl. +5 V-os jelszintet tételezünk fel +12 V helyett, és O V-ot a -12 V helyett), ezenkívül az egyszerűség kedvéért feltételezzük, hogya PLUS/4-es ACIA á,ramköre egy MODEM-hez kapcsolódik. Tudnunk kell azt is, hogyastopbit, ill. az adat byte hosszúsága (tehát az átvitelkor létrejövő jelszélesség) is programozhat6.

Az RS232-es átvitel általános adatformátuma a 22. ábrán láthat6.

 

A soros adatvonal alapállapota l-es szintd (+5 V), ilyenkor nincs adatforgalom. Az adatátvitel kezdetét egy O-s szintd startbit jelzi. Ezután következnek az informáci6hordoz6 adatbitek, majd egy paritásbit. Ez ut6bbi csak akkor, ha a rendszerben paritásellenőrzést állítottunk be. Paritásellenőrzésre csak 5-, 6- vagy 7-bites adat by te esetén van m6d (1. ACIA parancsregisztere).

Ennek az ellenőrzési m6dnak az a lényege, hogy az ad6 ellenőrzi, hogy az adott byte-ban lévő l-es állapotú bitek száma páros-e vagy páratlan, ennek megfelelően állítja be a paritásbitet, s az ezekután átvitt byte-ot a vevő is ellenőrzi, vagyis megnézi, hogy a beérkezett byte a paritásbitnek megfelelő-e. Ha nem, akkor jelzi, hogy az átvitelben hiba történt.

Az adatátviteli vonalon az egy byte átvitelének végét a stopbit(ek) jelzi(k). Az adatbitek száma, a paritásbit és a stopbit(ek) beállítása az ACIA vezérlő- és parancsregisztereinek programozásával érhető el (1. ott).

 

Normál adás üzemm6dban a processzor akkor kap megszakításkérés jelet, ha az ACIA kész a következő átvitelre szánt adat by te fogadására. Ez a jel (IRQ) a start bit tel egyid5ben jelenik meg. Amikor a processzor kiolvassa a státuszregisztert, a megszakításjel megszl1nik (IRQ l-be áll). Ezután a CPU-nak- érzékelve, hogy az ad6oldali regiszter kész az újratöltésre - be kell töltenie abba a következő adatbyte-ot. A betöltésnek- feltétlen meg kell történnie a stopbit vége előtt, máskülönben az adatvonalon folyamatos

MARK jel kerül kivitelre (TxD l-es szinten marad). Ezután akkor indul el az adatátvitel - és jelenik

meg a megszakításkérés jel - újra, ha a processzor betöltött egy új adatot.

Folyamatos adatvétel

Normál vételi üzemm6dban akkor keletkezik megszakítás a processzor felé, ha az ACIA egy teljes adat byte-ot vett az RxD vonalon. A megszakításjel kb. a stop bit felénél jelenik meg. Ezután a CPU- nak ki kell olvasnia a státuszregisztert (erre törl5dik a megszakításkérés) , majd ki kell olvasnia a vevőoldali adatregisztert a következő megszakításjel előtt, máskülönben ún. túlfut ás hiba keletkezik (Overrun). Ebben az esetben a következő adat byte nem kerül át a vevőoldali sift-regiszterből a vevóoldali adatregiszterbe, hanem ehelyett a státuszregiszter "Overrun" bit je l-be állit6dik. Ekkor a vevóoldali adatregiszter a legutols6 érvényes adat byte-ot tartalmazza, az ezután következ5 adatok elvesznek.

 

Kerethiba eI6fordulása

A kerethibát (Framing Error) a stopbit(ek) hiánya okozhatja vétel esetén. Ilyenkor az ACIA a megszakításkéréssel egyidőben l-be állítja a státuszregiszter "Framing Error" bit jét. Az egyes bejövő adtbyte-okat külön-külön vizsgálja meg, tehát ez a státuszbit mindig az utoljára vett adat állapotának megfelelően áll be.

 

Az ACIA külön sajátossága a tlisszhang üzemmód (Echo Mode) beállításának lehetősége. Ilyenkor azt az adatot, amit az RxD vonalon vett, 1/2 bit jelszélességnek megfelelő késleltetéssei folyamatosan visszaküldi a TxD vonalon. Ez az üzemmód kiválóan alkalmas az átviteli vonalak épségének és az egész átviteli folyamat lezajlásának ellenőrzésére.

Az RS,232-es átvitel során természetesen más állapotváltozások is lehetségesek a fentieken kívül, de azok részletes leírása nem e könyv feladata. Az adatátvitel alapszinten való kezelését az eddigiek alapján már .meg tudjuk oldani. Ezekután a folyamatos kapcsolattartás programból való megoldására ajánlott műveletsorozatot szeretnénk ismertetni, amelyet egy-egy megszakításkor (annak kiszolgáló rutinjában) érdemes elvégezni a státuszregiszter beállása alapján.

1. A státuszregiszter kiolv8sás8

Ez a művelet automatikusan törli a 7. bitet (IRQ). A DSR és DCD vonalak közbeni szintváltozása másik megszakítást fog eredményezni. .

,

2. Az IRQ bit ellen6rzése

Ha nincs l-es állapotban, akkor az időközbeni megszakítást nem az ACIA okozta.

3. A DSR és DCD bitek ellen6rzése

Ezeket össze kell hasonlítani megelőző értékükkel, amelyet a CPU korábban eltároIt. Amennyiben értékük nulla (a MODEM on-line állapotban van, azaz "él" a kapcsolat), és nem változtak meg, csak akkor kell ellenőrizni a többi bitet is.

4. A 3. bit ellen6rzése I

Ellenőrizni kell, hogyavevőoldali adatregiszter tele van-e (3.bit=I).1

 

5,: Ha a vev50ldali adatregiszter tele van, csak akkor kell ellen5rizni ezeket a biteket, amelyek jelzik, hogy nem történt-e paritás-, túlfutás- vagy kerethiba.

Végezetül ismertetjük az ACIA program-reset jének hatását, amelyet a státuszregiszter címére tört'Ji6 írási művelet vált ki.

1. Az ACIA bels5 regiszterei beállnak az 1.4.2. pontban ismertetett módon. ~ 2. A DTR vonal azonnal1-be áll.

3. A vevooldali és ad60ldali megszakításkérések azonnal letiltódnak. Amennyiben az IRQ vonal

alacsony szint11 a program-~ eI5for~akor, O-ban is marad a megszakítás kiszolgálásának I

befejeztéig, kivéve ha azt a DSR vagy DCD vonalak állapotváltozása okozta. ~ 4. A DSR és DCD vonalak megszakításai letiltódnak. Ha IRQ O szint11 és azt ezek a vonalak '

okozták, akkor az IRQ 1-be megy, ezekután pedig a DSR és DCD státuszbitek be állnak a vonalak állapotának megfelel5en, nem okozva ezúttal megszakítást. 1

5. Ha az "Overrun" státusz bit értéke 1 volt, törl5dik.

'"

3.2. A SOROS BUSZ

~ A PLUS/4-es gép rendelkezik egy olyan soros kommunikációs csatornával, amelynek a legfontosabb feladata a VC 1541-es lemezegységgel vagy Commodore printerrel való kapcsolattartás, ez az ún. "soros busz" vagy más néven" soros IEC busz". Az ehhez tartozó csatlakozót a gép hátulján a "SERIAL- ~; (soros) felirattal látták el. ;"

A gép ezen kommunikációs rendszerét - amely egyezik a C 64-es gépéveI - azonban tévedés lenne I

egyszer11en csak IEC busz nak nevezni, ui. ez a soros busz csak igen távolról hasonlít arra. '

Az IEC busz eredetileg egy olyan szabványos átviteli busz, amely párhuzamos adat vonalai (DIO1...DIO8) " mellett rendelkezik még a kommunikációs folyamatot irányító vezérl5- és handshake vonalakkal is (hand- shake=kézfogás). Ez utóbbiak biztosítják az aszinkron átviteli folyamat id5zítését, és az adatáramlás megfelel5 összehangolását. Az említett szabvány az IEC (International Electrotechnical Comission) sz- , abványa, amelyet IEC 625 néven jelentetett meg, és amely gyakorlatilag megegyezik az IEEE-488, HP-IB, GPIB nev11 el5írásokkal~ I

'. Az igazi IEC busz és a Commodore soros busza között lényeges eltérések vannak. Az eredeti busz párhuzamos adatvonalakból és vezérl5vonalakból áll (16 vezeték), míg a Commodore buszon az adatok az egyetlen DATA vonalon sorosan áramlanak, a vezérl5-id5zít5 és ellen5rz5 funkciókat pedig lényegében az ATN, a DATA és a CLOCK vonalak látják el. Ebb51 adódik a két rendszer sebessége közti különbség: az IEC busz elvileg ,lehetséges maximális átviteli sebessége 1 Mbyte/s, míg a soros IEC busz másodpercenként átvitt adatmennyisége 1 kbyte alatt van. Ezeken kívül minden lehetséges dologban eltérések adódnak, lényegében csak a készülékek közti kapcsolattartás alapelve hasonló, ill. bizonyos elnevezések azonosak. Fentiek alapján nyugodtan elhagy hat juk a megtisztel5 IEC nevet, a továbbiakban I csak "soros busz"-ként nevezzük a PLUS/4-es SERIAL feliratú csatlakozóján megjelen5 jeleket, ezenfelül

a működést is ez utóbbi alapján tárgyaljuk, ámbár a logikai rendszer alapötlete és elnevezései az eredeti :c IEC szabványból származnak.

A soros buszra egyid5ben több készülék is kapcsolódhat (pl. a PLUS/4-es, egy 1541-es lemezegység és egy nyomtató). Az egyes eszközök háromféle funkciót tölthetnek bej vezérl5, beszél5 vagy hallgató funkciót.

A vezlrl6 (Controller) olyan készülék, amely kiosztja a beszll6 vagy hallgat6 szerepeket, az adatforgalmat' irányítja és beszél5, ill. hallgató funkciót is betölthet. Ez általában csak számítógép lehet (esetünkben t,:) a PLUS/4-es, a m11ködés leírásánál is ezt feltételezzük).

A beszélő (Talker) olyan egység, amely képes adatokat kitenni a buszra, egyidőben értelemszerűen csak egy aktív beszélő lehet a rendszerben.

A hallgat6 (Listener) az a készülék, amely képes a buszon érkező adatok fogadására.

Minden készüléknek saját címe (egységszáma) van, a nyomtat6é 4-es vagy 5-ös, a lemezegységé 8-as vagy

9-es. Ezenfelül megadhatunk ún. másodlagos címet is, amely pl. több lemezegység, printer használata esetén azok megkülönböztetésére val6. Az elsődleges és másodlagos címek is külön-külön O-t61 15-ig terjedhetnek, ezek megadására a BASIC parancsok közül az OPEN használhat6.

Mielőtt a tényleges adatforgalom megindulna, a vezérlőnek meg kell címeznie az egységeket. A vezérlő

tehát először az egységszámot küldi ki a buszon, ez a byte azonban még egy fontos informáci6t hordoz: meghatározza, hogyamegcímzett egység beszélő vagy hallgat6 legyen-e. Ezt a vezérlő egyszerűen végzi el: ha hallgat6nak akarja az adott egységet felcímezni, akkor az egységszámához hozzáad 32-t (LISTEN funkci6), ha beszélőnek, akkor 64-et (TALK funkci6). Ha tehát a lemezegységbe akar adatokat átküldeni, első lépésként $28(40)-et (8+32) küld ki a buszon. A hallgat6 vagy beszélő funkci6k megszüntetésére a vezérlő az ún. lecímzéskor a $3F(63) (UNLISTEN) vagy a $5F(95) értékll byte-ot külqi ki, amely egységesen minden aktív hallgat6ra vagy beszélőre vonatkozik.

A soros busz csatlakoz6ján lévő kivezetések a 27. ábrán mutatjuk be.

 

1: SRQIN

Eredeti funkci6ja szerint a Service Request - kiszolgáláskérés jelek fogadására szánt bemenet, a PLUS/4-esben azonban nincs bekötve (a C 64-es sem figyeli ezt a vonalat).

2:GND

A föld pont kivezetése.

3: ATN IN/OUT

Az ATN (Attention - figyelem) vonalon jelzi a vezérlő, hogy parancsm6dban vagy adatm6dban

van-e, előbbi a fel. és lecímzésekre értendő (ATN=O), ut6bbi pedig a tényleges adatátvitelre

(ATN=l).

4.: CLK IN faUT

A CLK (CLOCK) vonalon érkezik a hallgat6 számára az a jelsorozat, amelynek egy-egy impulzusa a DATA vonalon érkező adat byte bitjeinek egyenkénti érvényesítésére val6, tulajdonképpen az adatbitek szinkronizálásaként is felfoghat6.

5: DATA IN/OUT

Az adat byte-ok bitenkénti továbbítását végző vezeték, amely azonban bizonyos események jelzésére is szolgál, amint azt majd a későbbiekben látni fogjuk.

6: RESET

Ez a kivezetés való a külső egységek alapállapotba hozására, gyakorlatilag megegyezik a CPU

RESET-jével. '

Most pedig megtárgyaljuk a soros busz alapvető működési fázisait, ebben a 28. ábra lesz a segítségünkre. Az ábra a busz vonalain megjelenő jelalakokat szemlélteti parancs-, ill. adatmód esetén. A jelalakokat, vagyis a vonalak megfelő állapot változásait a ROM-ban található rutinok hozzák létre és ellenőrzik vissza, lényegében tehát ezek működését követjük most nyomon.

 

Mint említettük, a kommunikáci6s folyamat egy adott egység megcímzésévei kezdődik. A vezérlő az ATN és a CLOCK vonal O-ba vitelével kezdi a folyamatot, ez az általános figyelemfelhívás, amelyre minden egységnek válaszolnia kell, aki a buszon van. Válaszként minden egyes készüléknek nullába kell vinnie a saját DATA kimenetét, amelyet a vezérl6 csak abban az esetben érez meg, ha már valóban minden egység O-ba állította (az egyes egységek Open Collector-os kimenettel rendelkeznek). Az ATN levitele után 1 ms-mal a vezérlő megvizsgálja a DATA vonal állapotát, és amennyiben azt 1 szintű nek találja, "DEVICE NOT PRESENT" hibaüzenettel megszakítja a folyamatot. Ha a DATA vonal alacsony szintű, akkor a vezérlő a CLOCK-ot 1-be állítja, majd addig vár, amíg a készülékek 1-be nem állítják a DATA vonalat, és csak ezután kezdődik az egységszám-byte kivitele.

A byte egy bit jének kivitelét a CPU a következ6 módon végzi, miután a bitszámlálóba 8-at töltött és a GLOCK-ot O-ba vitte:

1. Ismételten ellenőrzi a DATA vonalat, hogy 1-ben van-e még, ha nincs, hibával leáll. Következő lépésként a kiviend6 byte-ot ROR mtlvelettel jobbra forgatva a Carry-be érkező bit 1 vagy O értékétől függően állítja be a DATA vonal szintjét. Ezután késleltet, majd a CLK vonal 1-be állításával jelzi, hogy az adat érvényes (külső egység ilyenkor olvassa be a DATA vonal állapotát). Ismét késleltetés következik, majd a CLOCK vonalat O-ba, a DATA vonalat pedig 1-be állítja. A következőkben a CPU dekrementálja a bitszámlálót, s ha van még kiviendő bit, ez az egész ciklus kezdődik elölről.

2. Ha az egységszám minden bit jének kivitele megtörtént, ismét időzítés következik, miközben a processzor figyeli a DATA vonalat, ui. az egységek annak O-ba vitelével jelzik, hogy vették az adatot. Amennyiben az időzítés letelik, és a DATA vonal még mindig nem alacsony szinttl, hibajelzés következik.

3. Amennyiben a fent leírt folyamat rendben lezajlott, ugyanilyen módon megtörténik a másodlagos cím kivitele is. Az ezután következő adat byte-okat - amelyek átvitele ATN=1 mellett történik - már csak a címzett egység veszi, a többi egység figyelmen kívül hagyja mindaddig, amíg az ATN vonal ismét O nem lesz. Az adatforgalom irányát az egységszámmal kivitt LISTEN vagy TALK kód határozza meg.

Ha a PLUS/4-es továbbít adatokat külső egységnek, elc5zőleg az ATN vonalat l-be állítja, s az adatbyte- okat a fentiekhez hason16an továbbítja. A megcímzett egység, amely az adatokat veszi (a hallgató), egyadatbyte után a DATA O-ba állításával jelzi, hogy elfogadta azt. Azután, hogya PLUS/4-es l-be állította a CLÜCK-ot, jelezvén, hogy a következő adatot kívánja adni, a hallgat6 l-be állítja aDATA-t, ezzel jelezve, hogy készen áll az adatok fogadására. Ezen ut6bbi esemény késleltetéséveI tudja a hallgat6 várakoztatni a PLUS/4-est, az addig vár a következő adatbyte küldésével, amíg a DATA l-be nem áll.

Az adatátvitel végét az jelzi a hallgat6 számára, hogy a beszélő (a PLUS/4-es), az utols6 byte után a CLÜCK l-be állítása után azt l-ben is hagyja, több mint 0,2 ms-ig. A hallgat6 válaszként a DATA vonalat O-ba viszi, ezzel nyugtázva az adatátvitel végét.