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

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


Nabizi se tu jeste jedno elegantni (ikdyz technicky i programatorsky zrejmne narocne reseni) pro rychly prenos mezi HDD a Sharpem, a to pouziti obvodu Z80-DMA ktery by po spravnem naprogramovani mel dokazat data bez zateze CPU primo transformovat do pameti Sharpa na urcene misto. Vyuziti by to jiste melo pro multimedia jako napr. prehravani samplovaneho zvuku, pripadne videosekvenci :-)
 
Zdenek
----- Original Message -----
From: smihla tu byla ta zakroucena vec ceit.sk (sharpemu tu byla ta zakroucena vec pandora.cz)
To: Konference Počítač SHARP MZ-800 a emulátory
Sent: Tuesday, May 27, 2003 1:10 PM
Subject: Re: 2. service packec pro MZ-IDE 16bit

To riešene s 8255 sa mi zdá ešte pomalšie (až 3 inštrukcie OUT na zápis dvoch bajtov!) To radšej zostaňme u pôvodného Petrovho návrhu (tiež je možné využiť až 4 zaridenia, napr. sekundárny kanál na adresách 67h..6Fh - pri použití EPROM ako dekodéru by to nemal byť žiadny problém).
 
Trochu som počítal strojové cykly:
 
1. najrýchlejší výstup dvoch bajtov:
 
OUTI
OUTI
 
16+16=32T
 
versus
 
LD A,(HL)
INC HL
LD B,(HL)
INC HL
OUT (C),A
 
7+6+7+6+12=38T, čo neni až tak zlé. Dokonca rýchlejšie než OTIR (21+21=42T)!
 
2. najrýchlejší vstup dvoch bajtov:
 
INI
INI
 
16+16=32T
 
versus
 
IN A,(78H)
LD (HL),A
INC HL
IN A,(77H)
LD (HL),A
INC HL
 
11+7+6+11+7+6=48T, čo je už horšie, ale iba o 50%.
 
Tento mierny pokles rýchlosti je na druhú stranu vyvážený jednoduchosťou zapojenia, takže zvažujme...
 
Marek.
----- Original Message -----
From: rdolejsi tu byla ta zakroucena vec eurotel.cz (sharpemu tu byla ta zakroucena vec pandora.cz)
To: Konference Počítač SHARP MZ-800 a emulátory
Sent: Tuesday, May 27, 2003 7:53 AM
Subject: 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á,


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)]