Welcome, Guest. Please login or register.


Author Topic: IDE kártya (Read 184969 times)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
IDE kártya
« on: 2007.June.05. 22:24:07 »
Lássuk mit is csinál ez az általam elkövetett szörnyüség :-)
[ Guests cannot view attachments ]

A kártya 4 portot hoz létre, alapállapotban ECH-EFH címeken, jumperrel máshova is állítható, a program a teljes E0H-EFH tartományban keresi, így elméletileg akár 4 kártya is lehetne egy géphez csatolva :-) (Amikor készült akkor még a PC-kbõl kidobott 20-40 megás vinyókra gondoltam, mint EPsek számára elérhetõ vinyó, ezekbõl jó sok kéne :-) )

A kártya 0. portja az alsó 8 bit adatportja, az 1. a felsõ 8 bit portja, mivel az IDE busz számunkra sajnálatos módon 16 bites.
A maradék két port 1-1 parancsport a kártya 2 csatlakozója számára. A parancsport alsó három bitje az IDE címbitek, a következõ a CS0/CS1 címbit, következõ kettõ pedig az irás/olvasási jelek az IDE buszra. Maradék kettõ kifelé nincs bekötve, befelé az IDE busz INT és PDIAG jele olvasható.
Az alsó 6 bit ki és bemenet össze van kötve, vagyis a parancsportokon visszaolvasható a legutóbb kiírt érték alsó 6 bitje.
A szoftver ennek segítségével keresi meg a kártyát, az alsó 4 bitet (a maradék kettõt azért nem, hogy ne piszkálja az IDE buszt) végig teszteli 0-15 értékekkel, hogy visszaolvasható-e.

Írás az IDE buszra úgy történik, hogy a két 8 bites adatportra bekészítjük a 16 bites érték két darabját, a cím pedig a parancsportra megy, ahol az írás bit segítségével az egész egyszerre kikerül az IDE buszra.
Olvasás fordítva, a cím bitek és olvasás bit segítségével a parancsporton keresztül megtörténik az olvasási mûvelet az IDE buszon, a 16 bites érték eltárolodik a kártyán, és a két 8 bites adatporton kiolvasható.

Maga a vinyók programozása megtalálható az ATA szabványban.
Jelenleg ebbõl számunkra az IDENTIFY DEVICE, INITIALIZE DEVICE PARAMETERS, READ SECTORS, READ MULTIPLE, WRITE SECTORS, WRITE MULTIPLE, SET MULTIPLE parancsok érdekesek.
A címzés elsõsorban LBA módban történik, mivel maga a program is 32 bites LBA címzést használ belsõleg.
Végszükség esetén, ha a vinyó nem támogatja (vagyis legalább vagy 10-12 éves :-) ), akkor kerül átszámolásra CHS-re a cím.


« Last Edit: 2007.June.08. 13:19:27 by Zozosoft »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #1 on: 2007.June.05. 22:37:19 »
Így néz ki a kártyák detektálása:
Code: ZiLOG Z80 Assembler
  1.                 LD IX,VEGE                ;FELHASZNALT MEMORIA CIME
  2.                 LD C,0EFH                 ;KARTYAK KERESESE EF PORTTOL
  3. PDET
  4.                 CALL PDETECT
  5.                 EI
  6.                 CALL Z,PORT               ;HA TALALT, AKKOR LETAROLJUK
  7.                 DEC C
  8.                 BIT 1,C
  9.                 JR NZ,NEMZ                ;KET PARANCS PORT UTAN
  10.                 DEC C                     ;A KET ADAT PORTOT
  11.                 DEC C                     ;KIHAGYJUK
  12. NEMZ            BIT 4,C
  13.                 JR Z,PDET                 ;DF-NEL VEGE
  14.  
  15.                 LD (IX),0                 ;PORT LISTA LEZARASA
  16.                 LD (IX+1),55H
  17.  
Code: ZiLOG Z80 Assembler
  1. PDETECT:        LD B,11110000B
  2.                 DI
  3. PDETC           OUT (C),B
  4.                 IN A,(C)
  5.                 OR 11110000B
  6.  
  7.                 XOR B
  8.                 RET NZ
  9.                 INC B
  10.                 JR NZ,PDETC
  11.  
  12.                 RET
  13.  
« Last Edit: 2007.June.05. 23:12:46 by MrPrise, Reason: Van Z80 syntax highlight ;-) »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #2 on: 2007.June.06. 16:56:01 »
Folytassuk az IDE regiszterekkel. Ehhez itt egy régebbi ATA szabvány, egyrészt ebben benne van még a CHS címzés is, másrészt van benne értelmes összefoglaló tábla a regisztercímekrõl :-) (14. oldal)

Sajnos a NYÁK tervezése során történt egy kis baki, és az A1,A0 címvezeték fel lett cserélve :-(
Mondjuk nagy gondot nem okoz, csak ennek megfelelõen kellett definiálnom a konstansokat a programban.
Istvánnak okoz majd egy kis plusz munkát ez, ha bele teszi az ep128 emuba :-)

Eredetileg az IDE-n 3 címbit van, és két Chip Select jel (ezek ha jól sejtem valami õsi MFM vezérlõs idõkbõl erednek...). Mivel a két CS jel közül úgyis csak az egyik van használva egyszerre, ezért ezt én egy újabb címbittel helyetesítettem.
Ezek figyelembe vételével ezek a regisztercímek EP-n:
0000: Data
0010: Error / Features
0001: Sector Count
0011: Sector Number / LBA(7:0)
0100: Cylinder Low / LBA(15:8 )
0110: Cylinder High / LBA(23:16)
0101: Device/Head / LBA(27:24)
0111: Status / Command
1101: Alternate Status / Device Control
1111: Drive Address (ez csak az ATA-1 szabványban szerepel, többiben mint elavult említik)
« Last Edit: 2007.June.06. 17:01:11 by Zozosoft »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #3 on: 2007.June.08. 12:51:26 »
A hatalmas érdeklõdés ellenére folytatom...

Nézzük meg, hogyan néz ki egy IDE regiszter irás/olvasás EP-n.
Az egyszerûség kedvéért van definiálva egy rakás konstans:
Code: ZiLOG Z80 Assembler
  1. RD              equ 32  ;OLVASAS
  2. WR              equ 16  ;IRAS
  3. DATA            equ 0   ;DATA
  4. ERROR           equ 2   ;ERROR
  5. PREC            equ 2   ;PRECOMPENSATION
  6. FEAT            equ 2   ;FEATURES
  7. SC              equ 1   ;SECTOR COUNT
  8. SN              equ 3   ;SECTOR NUMBER
  9. CLO             equ 4   ;CYLINDER LOW
  10. CHI             equ 6   ;CYLINDER HIGH
  11. DRH             equ 5   ;DRIVE/HEAD SELECT
  12. STAT            equ 7   ;STATUS
  13. COM             equ 7   ;COMMAND
  14. ASTAT           equ 13  ;ALTERNATE STATUS
  15. DCON            equ 13  ;DEVICE CONTROL
  16. DADR            equ 15  ;DRIVE ADDRESS
Ezek nagyrésze a korábban említett IDE regiszterek címei.
Az RD konstans pedig a parancsport 4. bitjét nulláza, a WR pedig az 5. bitet. Ezzel tudjuk kiváltani az IDE buszon a megfelelõ I/O mûveletet. Használat után mindkettõt vissza kell állítani 1-re.

Ezekután egy konkrét példa: legyen a kártya az ECH-EFH címeken, és az EFH parancsporthoz tartozó vinyó adatportjára írjuk ki HL értékét.
Code: ZiLOG Z80 Assembler
  1.                   LD C,0ECH   ;adatport alsó 8 bit
  2.                   OUT (C),L
  3.                   INC C         ; adatport felsõ 8 bit
  4.                   OUT (C),H
  5.                   LD A,WR+DATA   ;írás mûvelet+a regiszter cime
  6.                   LD C,0EFH   ;parancsport
  7.                   OUT (C),A
  8.                   OR  WR+RD  ;irás+olvasás bitek visszaállítása 1-re
  9.                   OUT (C),A
  10.  
Csak az DATA regiszter 16 bites, a többi esetén az adatport felsõ 8 bitjét nem kell kiküldeni.
Olvasás hasonlóképpen:
Code: ZiLOG Z80 Assembler
  1.                   LD A,RD+DATA   ;olvasás mûvelet+a regiszter cime
  2.                   LD C,0EFH   ;parancsport
  3.                   OUT (C),A
  4.                   OR  WR+RD  ;irás+olvasás bitek visszaállítása 1-re
  5.                   OUT (C),A
  6.                   LD C,0ECH   ;adatport alsó 8 bit
  7.                   IN L,(C)
  8.                   INC C         ; adatport felsõ 8 bit
  9.                   IN H,(C)
  10.  
Szintén csak a DATA regiszternél kell a felsõ 8 bitet is kiolvasni.
« Last Edit: 2007.June.08. 14:08:11 by Zozosoft »

Offline szalai56

  • EP user
  • *
  • Posts: 291
Re: IDE kártya
« Reply #4 on: 2007.June.08. 13:49:31 »
Igenis érdekel bennünket, igaz nem sokat értek belõle.

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: IDE kártya
« Reply #5 on: 2007.June.08. 22:48:25 »
A kódok alapján sikerült végre megértenem.:)
Az adat tárolási helye is az adatportokon keresztül történik, a megfelelő értékek parancsportra küldése után?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #6 on: 2007.June.08. 22:56:49 »
Az adat tárolási helye is az adatportokon keresztül történik, a megfelelõ értékek parancsportra küldése után?
Ez nem egészen értem...

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: IDE kártya
« Reply #7 on: 2007.June.08. 23:33:16 »
A head/cylinder/sector megadása, az adat írásához/olvasásához.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #8 on: 2007.June.09. 05:08:14 »
A head/cylinder/sector megadása, az adat írásához/olvasásához.
Igen, ez esetben ezen a regiszterek címét kell a parancsportra ki küldeni, elötte pedig a beírandó értéket az adatportra, de mivel ezek csak 8 bitesek, elég csak az alsó 8 bitet feltölteni.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #9 on: 2008.February.11. 14:43:25 »
Leadtam a rendelést 10 db IDE kártya NYÁK-ra, 5000 ft lesz darabja. (ehhez jönnek majd még az alkatrészek)
Kit érdekel a dolog?

Két hét múlvára készülnek el.


Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: IDE kártya
« Reply #10 on: 2008.February.11. 15:01:14 »

Jol ertem, hogy itt meg savok, szektorok sincsenek, csak effektive egy hardver illesztes, amin keresztul direkt kommunikalhatunk a winyoval, miutan az ember megirt egy device driver programot es/vagy fat16/32 kezelest ? Vagy ennel valamivel egyszerubb modon tarolnad a winyon az adatokat, valami raw formaban ? Egyfajta sajat EP- s formatumban, ami nem lenne kompatibilis egyetlen Pc- s szabvannyal sem ? Vagy hogy gondoltad a tenyleges hasznalatot ? Vagy igazabol ez meg csak amolyan kiserleti stadium, nem annyira a hasznalatert, mint inkabb a technikailag hozzaertok szamara, es nem feltetlen akar eljutni a vegso formaig ?

Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #11 on: 2008.February.11. 15:38:01 »
Akkor egy kis összefoglaló a késöbb érkezetteknek :-)

Röviden: FAT12 particiók kezelhetõk, abból összesen lehet 21 db(F-Z:), egyenként max 32MB méretben. EZ kb 3x annyi mint a világ összes EP programja :-)

Bõvebben:
A kártya 4 IDE vinyó csatlakoztatását teszi lehetõvé (amikor készült, azt hittük, hogy majd pc-bõl levetett 40 megás vinyókat fogunk használni halomszámra :-) sõt akár két kártya is lehet a géphez kötve :-) )
A szoftver detektálja a kártyákat, aztán a kártyákra kötött valamennyi vinyót. Jelenleg max 128GB-osok támogatva, kis programváltoztatással a következõ verzióban 2 TB lesz a max :-)
Ezután összegyûjti az összes vinyóról a FAT particiókat egy saját táblázatba. (Elsõdleges, kiterjesztett particiók egyaránt támogatva).
Ezekbõl a jelenlegi EXDOS korlátjai miatt (hiszen 85-ben nem is létezett még FAT16!), csak a FAT12-esek használhatóak, ezeket egy megfelelõ EXDOS bõvítés segítségével be is láncolja a rendszerbe. Innentõl F:, G:, stb meghajtókon szabadon lehet garázdálkodni :-) ahogy azt számos klubnapon néztétek sóvárgó szemekkel :-)

Offline Ep128

  • EP addict
  • *
  • Posts: 1849
  • Country: hu
    • Honlapom
Re: IDE kártya
« Reply #12 on: 2008.February.11. 18:46:16 »
(... most már "csak" egy olyan BUS kártya kellene, ami hajlandó 7.12 Mhz -en is szóba állni az Ep -vel. :-P  Mert a turbós gépen így "nincs hová dugni". :-( )

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: IDE kártya
« Reply #13 on: 2008.February.11. 19:06:33 »
(A te gépednek mindig is különálló lelkivilága volt, nekem pl ment 7.12-n a busz...)

Lehet Microteam (klón) kártyára is felhekkelni egy csatlakozót!
Busz, na az nem lesz :-( hacsak nincs Mészárosnak még pár elfekvõ darabja...

Ha valakinek csak alapgépe van, akkor elképzelhetõ olyan variáció, hogy közvetlen gépre menõ IDE kártya, és a cartridge-ba kell tenni egy módosított EXDOS ROM-ot az IDE ROM-mal.

Ha valakinek nem Microteam EXDOS-a van, akkor valami kreatív összedrótozást kell kitalálni a két kártyára...

Sajnos Tigrian nagyon-nagyon eltünt köreinkbõl, így az AIO projekt nem fog megvalósulni...  :smt088
...ezért gondoltam, hogy legyen már valami kézzel fogható, legalább pár embernek.

Amúgy elképzeltem, hogy lehetne csinálni egy új EXDOS-t ami az IDE kártyára kerülne emeletként (tehát nem felfele állva mint a buszban, hanem egymáson feküdve, mint a hollandok cuccainál), EXDOS+ROM+RAM esetleg óra.
[ Guests cannot view attachments ]
« Last Edit: 2008.February.11. 19:10:36 by Zozosoft »

Offline Ep128

  • EP addict
  • *
  • Posts: 1849
  • Country: hu
    • Honlapom
Re: IDE kártya
« Reply #14 on: 2008.February.11. 19:18:18 »
Most elõbb ez a project valósuljon meg, óriási lenne! :-)
(De utána nagyon is támogatnám azt az apró betûs másik project -et!)