Ezen az oldalon megtalálható az újságban megjelent cikk mind a három része.:

 

Egy saját készítésű winchester vezérlő ismertetése előtt köszönetet mondok azoknak, akik segítettek ennek a vezérlőnek az elkészítésében, többek között Farkas Jánosnak (CHEXUM), aki fáradhatatlanul többszöri módosítás után elkészített egy nagyon jól működő vezérlő programot (V39.52). Az első prototípus kb. 3 évvel ezelőtt készült el, azóta mind mérete, mind ára sokat csökkent. Munkáimról annyit, hogy már elég régóta van amigám, és leírások nélkül kezdtem el a hardware-ek fejlesztgetését, a külső floppy illesztővel kezdve a hangdigitalizálón és egy IBM-XT winchester illesztésen keresztül. Majd egy nem auto-boot-os harddisk vezérlő után megcsináltuk CHEXUM-mal a Commodore A590-es SCSI vezérlő programját átírva az első auto-bootos verziót. A saját program megírása után elkészült egy olyan változat, ami 8 Mbyte RAM bővítést képes kezelni.

Az itt ismertetésre kerülő vezérlő mellett léteznek más típusú AT-BUS illesztő megvalósítások is, de a lényegük ugyanaz. Sok - főleg a Magyarországon gyártottak közül - kísértetiesen hasonlít azokhoz a verziókhoz, amiket a fejlesztés során elkészítettünk, ilyen másolásokat is lehet pl. a Derko által gyártott termékek között találni, nem sokat törődve a vezérlők hosszú fejlesztési hónapjaival.

Annak ecsetelgetésére, hogy miért van szükség egy számítógéphez gyors, nagykapacitású háttértárolóra, most inkább nem térek ki, ez egy olyan szükség, amit tapasztalat által lehet megérteni, PC-s körökben ezt már sokan tudják.

Miután az Amigákat piacra dobták, megjelentek az első SCSI winchester vezérlők, amihez elég drágán lehetett jó harddisket kapni. Akkoriban még az ún. MFM winchesterek voltak elérhető áron. Az MFM rendszerű vezérlőkről annyit érdemes elmondani, hogy az elektronika két részre van osztva. Az egyik részén, amit a számítógépbe kell dugni vannak, a memóriák, a processzor, dekódolók stb, tehát egy pici külön számítógép, a winchester részén vannak azok a dolgok, amik a fizikai adatfelírást biztosítják pl.: erősítők, léptetés-vezérlők. Ezeknél az MFM vezérlőknél két nagy probléma van, az egyik az, hogy emiatt a kettős rendszer miatt több elektronikát igényel, ami arra hivatott, már mint hogy a kettős rendszer, hogy egy vezérlőkártyához különböző winchestereket lehessen kapcsolni anélkül, hogy a vezérlőkártyát cserélni kellene, viszont idővel az elektronikai részek ára annyira lecsökkent, hogy ennek különösebb jelentősége már nincs. A másik problémát az jelenti, hogy az egyik vezérlővel megformázott winchestert a másik vezérlő nem mindig tudja olvasni. Ennek megoldására és más tényezők miatt kitalálták az ún. IDE (Intel igent Drive Electronic) rendszert, ami egyesítette a vezérlőkártyát processzorostul, memóriástul a winchester nem digitális részével. Ez aztán hamar elterjedt a PC, majd később az Amiga világban is. így, ha valaki egy ilyen AT-BUS (IDE) winchestert kapcsol az Amigájához, egy PC winchester-vezérlőkártyát kapcsol hozzá. Ebből adódik az illesztési feladat. Ahhoz, hogy egy IBM-PC AT kompatibilis géphez hozzákapcsoljunk egy IDE winchestert, nem túl sok dolog kell. Szükség van egy nagyon olcsó floppy/winchester vezérlőkártyára, aminek a winchestert kiszolgáló része nem áll másból, mint egy dekódolóból és egy 16 bites vonal illesztőből. Egyes PC-kben még erre sincs szükség, mivel ezt az alaplapra szerelték rá. A winchestert vezérlő program, ami a winchester fizikai elérését és a boot-olást biztosítja, a BIOS ROM-ban van mindig fixen a gépben. Nagyon leegyszerűsítve tehát a dolgot, nem kell mást csinálni, mint egy PC-kártyát kell kiszolgálni az amiga oldalról. A PC-ben az olyan winchester vezérlőt, amik csak a gép ROM BIOS-ának software-jét használják, a következő PC I/O címeken lehet elérni:

1. táblázat

Ezek megkülönböztetésére elég két ún. chip-select vonal, és három címvezeték, amiket az IDE csatlakozójára is ki vezettek.

2. táblázat

Ebből a listából annak, aki ismeri a PC AT számítógépek kártya csatlakozójának kiosztását és a kivezetések elnevezéseit, láthatja, hogy miért hívják az ilyen winchestereket AT-BUS-osoknak. A kivezetések megismerése után térjünk rá a működés rövid áttekintésére.

Azt talán nem kell részletezni, hogy a HD-k kezelésé-hez, a winchesteren lévő adatok eléréséhez, író/olvasó-fejkiválasztás, szektorszám és cilinderszám kell, és két drive-os rendszernél a drive kiválasztásra is szükség van. Tehát írás vagy olvasás megkezdése előtt be kell állítani a kezdő cilindert, fejszámot és a szektorszámot, majd ezek után ki kell adni a parancs regiszterbe az írásra vagy olvasásra való utasítást. Miután a winchester megtalálta a kezdő pozícióját, az aktuális szektor(ok) tartalmát betölti a belső memóriájába, a státusz regiszter 3. bit-jét 1-re állítja, és a megszakítás vonalát magas szintre húzza. A számítógépnek az a feladata, hogy a 16 bites adatregiszteren keresztül áttöltse az adatokat a harddisk memóriájából a saját memóriájába. A block számláló regiszterben be lehet állítani, hogy hány logikailag egymást követő szektort, az az 512 byte-ot akarunk beolvas ni vagy kiírni. így, ha több mint egy szektorra volt szükségünk, anélkül, hogy újra be kellene állítani a fej/sektor/cilinder számokat, folyamatosan tölthetjük át az adatokat. Természetesen jó, ha olyan a winchester, hogy minél nagyobb ilyen szektor memóriát tartalmaz, mert így nagy sebességgel, felesleges várakozások nélkül, több szektornyi adatot tud írni-olvasni. Egy 256 kbyte-os pufferrel rendelkező winchester emiatt elég nagy adatátviteli sebességet tud produkálni.

Az Amiga oldaláról nézve szükség van az AT-BUS illesztésére, és ennek kezeléséhez szükséges programra, amit az Amiga operációs rendszerben "device" néven emlegetnek. Ennek a programnak a feladata, hogy a winchestert reset után beállítsa, ellássa paraméterekkel, illessze az op. rendszerhez mint háttértárolót. Ennek megfelelően lekezelje mindazokat a feladatokat, ami az íráshoz, olvasáshoz, pozicionáláshoz (seek), formázáshoz, paraméterlekérdezéshez kell. Egy ilyen device-t pl.: úgy is lehet a rendszerben használni, hogy mountdos paranccsal, a mountlist-ben lévő paraméterekkel definiálunk egy ilyen eszközt. Ezt természetesen csak azután lehet megcsinálni, miután a CLl vagy a Workbench bejelentkezett, vagyis a dos már elindult. Ez a módszer nem alkalmas arra, hogy ilyen eszközről indítsuk a rendszert, erről nem lehet bootolni, kivéve akkor, ha a KickStart támogatja, ilyen pl. a RAD:. Az 1.2 és az 1.3as Kick-Start-oknál az AT-BUS kezelése nincs támogatva, a 2.0 37.300-as verziója ugyan támogatja az AT-BUS kezelését, de ezt csak a fix gépbe épített hardware-re vonatkozik, ilyen az A600, A 1200, A4000-es gépek. A másik módszer szerint, mielott a dos elindulna, hozzá kell fűzni a meglévő eszközökhöz (DFO:, DF1:, RAD:) a mi AT-BUS winchesterünket kezelő device-t. Az expansion.library támogatja az ilyen módszert, ami jóval a dos, disk kezelő rendszere előtt elindul. Ennek neve egy kulcsszó: Auto-Config. Lényege az, hogy Zorroll-es hardware-eknél (A500, A500+, A600 vagyis, ahol 68000-es 24 bites címbuszú processzor van) reset után az $E80000 címen egy auto-config struktúrát keres, ami egy külső kártyáról ad leírást az expansion.library-nak. Ezen a kártyán lehet elhelyezni ROM-ban a device programot, amit prioritásfüggően a rendszerben található modulok listájába fűz, ilyen moduloknak tekinthetők a további device-ok, a library-k és a resource-ok. A megfelelő időben ezeket a modulokat a op. rendszer azonosítja és elindítja. Ekkor kerülhet sor a winchester paraméterezésre, a szükséges filesystem betöltésére, a kezelt eszköz boot prioritásának beállítására, ami meg fogja határozni a dos-nak, hogy melyik eszközről boot-oljon. A device program megírása, megértése sok rendszerismeretet igényei, de korántsem olyan bonyolult, mint pl. a PC-nél.

Az AT-BUS fizikai illesztése nem túl nehéz, mivel a jelek kezelése teljesen egyértelmű. A tizenhat bites AT adatbuszt némi illesztés után, amit két 74LS245-ös IC-vel meg lehet oldani, az Amiga adatbuszára lehet kötni. A CS1 és a CS3 jelek előállításához egyszerű dekóderek elegendőek. Az INTRa megszakítás vezeték negálás és kisebb engedélyező logika után az Amiga INT2-es megszakításkérő vonalához lehet kötni. Az laW/lOR vonalak előállíthatók a 68000-es R/W vonalából. DA2-0 címvezetékeket pedig az Amiga címvezetékeihez lehet kötni vonalillesztés után. Az egyszerű logikákat, mint pl. az interrupt vonal negálását, az lOR/laW elkülönítését, valamint a később részletezett auto-config logikát programozható logikai áramkörökön (PAL) keresztül valósítottam meg. Ezt abból a szempontból tettem, hogy egyszerű és olcsó, kicsi, viszont meg van az a hátránya, hogy programozó készülék kell hozzá. Akik szeretnék megépíteni ezt a vezérlőt, azoknak biztosítani tudom az alkatrészeket, a beégetett epromot és a programozott logikákat. A következő számban megjelenő kapcsolási rajzból megláthatjuk a fentieket.

2. rész

Az előző részben a PAL programnál hagytuk abba. A PAL programot a programozó készülékek leggyakrabban egy JEDEC szabvány szerinti formában fogadják, ez nem más, mint egy bittérkép, tele egyesekkel és nullákkal. Ez a bittérkép határozza meg azt. hogy melyik kimenethez melyik bemenet kapcsolódjon, és milyen logikai hálózatot alkossanak. A program ilyen módon való megírása hasonlít a gépi kódú programozáshoz (én még VIC20-ason alkalmaztam). A nehézkes programozást azért ki lehet kerülni, vannak erre programok. Ezekben általában a logikai algebra nyelvén kell leírni a függvényeket. A harddisk vezérlőben két PAL IC-t alkalmaztam. ezek programjai: (1. táblázat)

  

Mielőtt részletesen ismertetném a program sorainak jelentését, ismerkedjünk meg az Amiga gépeknél rendszeresített auto-config rendszerrel. Ez nagyon fontos lehet más hardware fejlesztésekhez is. Mint említettem, az $E80000 címen kell kezdődnie az auto-config struktúrának. Az adatbusznak csak a felső 4 bitje számít, viszont a struktúra elemei általában 8 bitesen értelmezendőek. Ezt úgy valósították meg, hogy az első 16 bites szóban a felső 4 bit, a következő szóban az alsó 4 bit van. Az auto-config úgy működik, hogy a struktúra első 8 bitje meghatározza, hogy a kártyának mekkora címterületre van szüksége, majd az expansion.library eldönti, hogy ezt a méretet, hová tudja elhelyezni, ahol nincs egyéb hardware. Utána kiküldi a struktúra $48/$4A címére a szabad terület kezdőcímét. A kártyának ezután le kell kapcsolnia magát az $E80000 címről, és elérhetőnek kell lennie a kapott címtől kezdődően.

(2. táblázat)

Az expansion auto-config folyamata nagyjából a következő: A kártya RESET után az $E80000 címre kihelyezi a saját auto-config struktúráját, ha a Configln bemeneti vezetéke alacsony. Az expansion.library beolvassa a struktúrát, ez alapján keres számára helyet a még szabad címterületeken. Kiírja a címterület kezdőcímét a $44-$4A címére. ezt a kártyának át kell vennie és kell kapcsolódnia az $E80000 címről. Ezután a ConfigOut vezetékét alacsonyra kell húznia, hogy az esetleges következő kártyta is konfigurálni tudja magát.

 

3. rész

Ezek ismeretében röviden térjünk rá a vezérlő működésére. RESET után az U6-os tároló kimenetei nincsenek engedélyezve, így az U7 2x8 bites összehasonlitó trükkös módon az R1-R8 ellenállások által meghatározott $E8 értékkel hasonlítja össze a címbusz A23-A16 vonalait. Az UP1 PAL programja az $E80000-$E88000 címeken az U1 jelzésű EPROM-ot engedélyezi a 14-es kivezetésével az UP2 3. lábán át a 12. láb segítségével, erre annak idején a tisztelt "utángyártók" munkájának megnehezítése miatt volt szükség. Ugyanis az UP2-es csak akkor engedi olvasni az EPROM-ot, amikor még a kártya az $1E80000 címen van. A $487$4A címet az UP2 PAL dekódolja és engedélyezi. ezzel az U6 tároló CLK bemenetét aktivizálja, így az U6-os IC az U4-esen keresztül kapott 8 bites címet eltárolja. A cím tárolása után, ha az AS vezeték magas állapotba kerül, az UP2-es a Conf vezetéket alacsonyra húzza. Ezzel engedélyezi a következő esetlegesen a rendszerhez kapcsolt kártyát, és az U6 IC kimeneteit is. Így ezután már nem az ellenállások határozzák meg a kezdőcímet, hanem az U6-os kimenetei. Az U7-es az új értékkel (rendszerint SE9) hasonlítja össze a címvezetekeket.

A PAL programban használt nevek jelentéseit a jobbra elhelyezkedő táblázat tartalmazza.

A rajzon a JP1 kapcsolót jelöl, ami zárt állásban kikapcsolja a vezérlőt. Az U5-ös 74HCT245 végzi az AT-BUS - Amiga címvezetékeinek, a kiválasztó jelek, az RW vonalak illesztését. A P4 és a P3 a wincheszterhez szükséges tápfeszültségek kivezetései. A vezérlő program listáját nem közlöm, mert több mint 4000 soros.

A megépítéshez szükséges alkatrészek megrendelhetőek egységcsomagban a CORNELIUS EC.-nél 4.900 Ft-ért vagy a vezérő készen 6.900Ft-ért. Az egységcsomag tartalmazza a NYAK-ot, a beprogramozott EPROM-ot és a PAL-okat, a csatlakozókat, az IC-ket és egy installáló lemezt.

Ebben a hónapban készült el az első sorozat hazai gyártmányú HD floppy drive. Nem olyan régen, mikor megjelentek a piacon a 2.0 verziószámú KickStart-tal szállított Amiga 500+-osok, hamar elterjedt a hír, hogy ez a rendszer már képes kezelni olyan drive-okat, amik High Desinty lemezzel kétszer több adatot tudnak tárolni. Azóta a megjelent frisebb kiadású Workbench-ek a CrossDos-nak nevezett rendszerrel együttműködve képesek közvetlenül kezelni a PC-s formátumú 3.5"-os lemezeket elég megbízhatóan. Az Amiga hardvere 250 kbit/s szabványos sebességgel kezeli a floppy drive-ot, ez az átviteli sebesség a lemezforgatás sebességét figyelembevéve 11 darab 512 byte-os szektort ad tárolási kapacitásnak track-enként. Ez 80 track és két fej esetén eredményezi a 880 kbyte kapacitást. A HD-s drive 22 darab 512 byte-os szektort ír fel, lassabb motor fordulat mellett. Az Amiga a lemezcsere után automatikussan ellenőrzi a bent levő lemezt, ez érvényes az IBM PC formátumú lemezekre is, ennek megfelelően állítja be a lemez forgási sebességét.

A HD drive paraméterei. 80 cylinder, 2 fej, kétsebességű motor, max: 22 sektor. A valóságosan tárolható adatmennyiség formázás után HD diskkel: Old file system: 1714832 byte, 3518 block, 488 byte sektoronként. Fast File System: 1799168 byte, 3518 block, 512 byte sektoronként.
Az adatátviteli sebesség olvasásánál Syslnfo V3.18-cal mérve DD és HD lemezeknél is kb. 22.000 byte/sec.

Nagyon jól használható archiválásra is, több back-up program is képes kezelni az 1.76 MB-os lemezeket, ilyen pl. a THIBackup. A drive-ot ellátták csatlakozóval, további floppy drive-ok rácsatlakoztatásához, így három külső egységet is lehet rádugni az Amigára. és mivel csak az 5V-os tápfeszültséget terheli, nem okoz gondot a tápfeszültségnek egy beépített 3.5"-os winchester sem.

Készül külső és belső kivitelben is, megvásárolható az ACOMP boltjaiban, valamint Cornéliusnál.

Regius Kornél