Konference: Počítač SHARP MZ-800 a emulátory

Od: Anonym
Datum: 27.5.2003 07:53
Předmět: Re: 2. service packec pro MZ-IDE 16bit


Jen pro úplnost:

  - zdaleka nejrozšířenější 16-bit IDE interface na ZX využívá obvodu
 8255.
Je připojen tak, že porty A a B jsou Low/High datové sběrnice
a port C obsahuje A0-A2, IORD/IOWR signály, CS0 first IDE, CS0 second IDE.
Interface umožňuje připojit až 4 IDE zařízení (dva kabely)
a podporuje 16-bit porty pro všechny adresy, což však vzhledem k ATA
designu samozřejmě není potřeba. Ovládání pak vypadá nějak takto:

Zápis:
OUT Ctrl, 0x80          ; přepnutí 8255 do output módu
OUT A, data_low
OUT B, data_high
OUT C, IOWR+CS0+address

Čtení je obdobné..

  Osobně jsem ale spíše za zachování jednoduchosti a snadnosti ovládání 
z
ASM a tak hlasuji za již dříve Markem popsané řešení (překlápění
lo/hi pro
datový port).

R.



|---------+--------------------------->
|         |           "rdolejsi tu byla ta zakroucena vec eurote|
|         |           l.cz (sharpemu  |
|         |           27.05.2003 07:38|
|         |           Odpovězte prosím|
|         |           uživateli       |
|         |           "Konference     |
|         |           "Počítač SHARP  |
|         |           MZ-800 a        |
|         |           emulátory""     |
|         |                           |
|---------+--------------------------->
 
>-------------------------------------------------------------------------------
------------------------------------------------|
  |                                                                             
|
  |        Komu:    "Konference "Počítač SHARP MZ-800 a emulátory""
<sharpemu tu byla ta zakroucena vec pandora.cz>                                         |
  |        Kopie:                                                               
|
  |        Předmět: Re: 2. service packec pro MZ-IDE 16bit                    
|
  |                                                                             
|
  |                                                                             
|
 
>-------------------------------------------------------------------------------
------------------------------------------------|





Ahoj,

  taky jsem pro takovéto řešení. Na ZX to implementovali přesně tímto
způsobem (trio DTP; (P)VL byl na NP) a nemají s tím sebemenší problém.
Čtení/zápis provádějí přes INI(R)/OTI(R) a nic jim neschází ;-) Jen
si
nejsem jistý, jestli jim vychází časování tak, aby sektor přečetli
párem
INIR instrukcí, ale myslím, že ano.

R.

P.S.: Navíc MCE už tento způsob čtení IDE podporuje, tak si ho, Marku,
můžeš otestovat ;-) .. (port-type=16bit-lohi)



|---------+--------------------------->
|         |           "smihla tu byla ta zakroucena vec ceit.sk |
|         |           (sharpemu       |
|         |           26.05.2003 17:38|
|         |           Odpovězte prosím|
|         |           uživateli       |
|         |           "Konference     |
|         |           "Počítač SHARP  |
|         |           MZ-800 a        |
|         |           emulátory""     |
|         |                           |
|---------+--------------------------->
  >
--------------------------------------------------------------------------------
-----------------------------------------------|

  |
|
  |        Komu:    "Konference "Počítač SHARP MZ-800 a emulátory""
<sharpemu tu byla ta zakroucena vec pandora.cz>                                         |
  |        Kopie:
|
  |        Předmět: Re: 2. service packec pro MZ-IDE 16bit
|
  |
|
  |
|
  >
--------------------------------------------------------------------------------
-----------------------------------------------|




Ahoj,



Mal som na mysli nasledovné:

Prvý OUT 78h: zápis D0..D7 do záchytného registra.
Druhý OUT 78h: obsah záchytného registra do HDD (D0..D7) plus D0..D7 do HDD
(D8..D15).

A tak dalej striedavo... Podobne pri vstupe:

Prvý IN 78h: D0..D7 z HDD do D0..D7 na MZ, D8..D15 z HDD do záchytného
registra.
Druhý IN 78h: čítanie D0..D7 zo záchytného registra.

Iný sled resp. náväznosť bajtov neprichádza do úvahy (kvôli rýchlosti
a
kompatibilite s PC).

V podstate ide o pridanie deličky jedna ku dvom na dekodér adresy 78h,
ktorá by striedavo prepínala medzi HDD a záchytným registrom. To nemôže
byť
predsa až tak zložité, v žiadnom prípade netreba GAL či dokonca 8052!

Marek.

P.S. pokiaľ ide o filesystém FAT, už sa na ňom pracuje... ;-)
 ----- Original Message -----
 From: Petr Žydek (sharpemu tu byla ta zakroucena vec pandora.cz)
 To: Konference Počítač SHARP MZ-800 a emulátory
 Sent: Monday, May 26, 2003 10:33 AM
 Subject: 2. service packec pro MZ-IDE 16bit




 Tak tu máme service packec č. 2.
 K aktivitě mě inspirovala reakce Marka
 Šmihly na zveřejněný návrh 16bitového
 rozhraní HDD pro Sharpa. Sice jsem se
 nepokoušel počítat, jak se liší doba
 přenosu jednoho 512ti bajtového sektoru
 přes běžné I/O instrukce se současnou
 manipulací se všemi potřebnými registry
 A, BC, HL oproti použití repetičních
 instrukcí INIR, OTIR, ale přesto jsem zkusil
 podumat nad jinou alternativou...



 Co je třeba dodržet, docílit:
 -potřebujeme 16ti bitový přenos dat, aby
  byla využita celá kapacita HDD
 -možnost přenosu dat z/na porty
  repetičními I/O instrukcemi
 -možnost použít funkci autodetekce
  parametrů disku
 -zařízení by mělo být kompatibilní
  s původní 8bitovou verzí
 -obvodové řešení musí být co možná
  nejjednodušší, malý počet IC snižuje cenu,
  šetří místo v případě vývoje kombo desek
 -v případě manipulace se signálem disku
  /sels se nabízí možnost obsluhy dvou
  HDD, tedy princip master/slave jako u PC
 -pokud by byla akceptována možnost provozu
  dvou HDD, pak se jasně nabízí možnost
  využití souborových systémů FAT(32), tím
  nemyslím přímé začlenění do CP/M, slave
  disk by sloužil jako přenosný element
  Sharp <-> PC. Konverzi souborových
  systémů a vlastních dat může provádět
  aplikační program pod CP/M typu
  file-manažer; stejně tak CP/Movsky
  nahraný disk by byl čitelný pro
  aplikační program v PC, ten by ho
  přečetl celý raz dva


 Jak to tedy vyřešit:


 Tahhle nějak vypadá zápis 512ti bajtového
 sektoru na MZ-IDE 8bit (odhaduju):


 xxx             ; nastav příslušné hodnoty
 xxx             ; do registru stopy,
 xxx             ; sektoru atd.
 LD HL, "odkud"  ; adresa dat v paměti
 LD B,00h        ; 256 bajtů dat
 LD C,78h        ; adresa datového portu HDD
 OTIR***         ; přenese B bajtů na port
                 ; 78h od adresy v HL
 OTIR            ; ještě jednou totéž


 Doufám, že jsem se nespletl, už jsem si
 dlouho v asm Z80 nehrál, je-li pravda, že
 po instrukci *** B=00h, HL="odkud"+256 a C
 se nemění, pak se vykoná přenos jako dvě
 256tice I/O cyklů po sobě pomocí instrukcí
 OTIR (???)


 U PC bych si představil něco podobného, jen
 registry jsou víceslovné (to je výraz!) a
 datová sběrnice je 16ti bitová, takže se
 přenese jedním "OTIRem" (dejme tomu) jediná
 256tice najednou, protože je široká 16 bitů
 a ne 8.


 Pokud by měl na tomto místě fungovat nějaký
 obvodový supervizor, který by datový tok
 na port 78h střídavě přepínal tak, abychom
 docílili připravenosti 16ti bitů dat každé
 dva I/O zápisy a pak by se provedl jeden
 vybavovací zápis do HDD, připomíná mi to
 křižovatku se semafory kde se po každém
 projetém autě mění volný směr jízdy.


 Můj návrh zní: využít toho, že se v každém
 případě přenáší 256 bajtů 2x po sobě, navíc
 obsah registru B sám inkrementuje a posílá
 se na A8-A15 adresové sběrnice Sharpa!!!
 Obvodové řešení by vycházelo z mého
 původního návrhu 16ti bitového rozhraní tj.:
    1x 74LS245
    1x 27xxx
    1-2 další 74LS241, 245 (podle výsledku)
    1x SRAM 6116 2kB


 Příklad zápisu:
 LD HL,"odkud"  ; adresa dat v paměti
 LD B,00h       ; 256 bajtů dat
 LD C,77h       ; adresa pomocného bufferu
 OTIR           ; naplní se pomocný 256ti
                ; bajtový buffer (Statická RAM)
 LD C,78h       ; adresa datového portu HDD
 OTIR           ; přenos 256ti bajtů na
                ; D0-D7 HDD, synchronně a
                ; "skrytě" se také přenáší
                ; obsah bufferu na D8-D15 HDD


 -čtení by probíhalo obdobným způsobem
 -rutina s příkladem přenosu je o jedinou
  instrukci delší
 -je třeba vyřešit správnou návaznost a
  kontinuitu dat (záležitost OS), neboť
  u PC je při 16ti bitovém přenosu sled dat
  následující (pokud se pletu, tak prosím
  nenadávat):

 0. bajt na D0-D7 ; 1. 16ti bitový zápis
 1. bajt na D8-D15


 2. bajt na D0-D7 ; 2. 16ti bitový zápis
 3. bajt na D8-D15


   .
   .
   .
   .
 511. bajt na D0-D7 ; 256. 16ti bitový zápis
 512. bajt na D8=D15


  a tady se posílá jedna 256ka dat, fik ho,
  druhá 256ka, hotovo
 -je-li toto velký problém, pak zůstává ve
  hře původní verze 16ti bitového rozhraní,
  jednodušší Hw řešení nedovedu vymyslet



 V průběhu týdne možná opravím výkres a
 upřesním význam portů a počet IC.


 Petr de Zviqov 26.5. 2003 0:55hod


 --
 Máte problémy s mobilem? Zkuste poradnu na Mobil.cz!


--
Máte problémy s mobilem? Zkuste poradnu na Mobil.cz!









--
Mate problemy s mobilem? Zkuste poradnu ->
http://mobil.cz/ad_campaign.html?client=poradna






Ostatní příspěvky vlákna:

 
[2003/1 (22)] [2003/2 (25)] [2003/3 (14)] [2003/4 (20)] [2003/5 (73)] [2003/6 (108)] [2003/7 (88)] [2003/8 (81)] [2003/9 (146)] [2003/10 (60)] [2003/11 (12)] [2003/12 (5)]


[1999 (1)] [2000 (168)] [2001 (733)] [2002 (459)] [2003 (654)] [2004 (224)] [2005 (105)] [2006 (182)] [2007 (201)] [2008 (294)] [2009 (363)] [2010 (782)] [2011 (522)] [2012 (642)] [2013 (442)]