Surová data tak, jak byla v roce 2013 stažena z Pandory (HTML zdroj bez úprav, osobní e-mailové adresy jsou maskované).
<!-------------------------------------------------------------->
<!-------------------------------------------------------------->
<table width="100%"><tr><td align="left" valign="middle"></td><td align=right valign="middle"></td></tr></table><BR> <div><font>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).</font></div> <div><font></font> </div> <div><font>Trochu som počítal strojové cykly:</font></div> <div><font></font> </div> <div><font>1. najrýchlejší výstup dvoch bajtov:</font></div> <div><font></font> </div> <div><font>OUTI</font></div> <div><font>OUTI</font></div> <div><font></font> </div> <div><font>16+16=32T</font></div> <div><font></font> </div> <div><font>versus</font></div> <div><font></font> </div> <div><font>LD A,(HL)</font></div> <div><font>INC HL</font></div> <div><font>LD B,(HL)</font></div> <div><font>INC HL</font></div> <div><font>OUT (C),A</font></div> <div><font></font> </div> <div><font>7+6+7+6+12=38T, čo neni až tak zlé. Dokonca rýchlejšie než OTIR (21+21=42T)!</font></div> <div><font></font> </div> <div><font>2. najrýchlejší vstup dvoch bajtov:</font></div> <div><font></font> </div> <div><font>INI</font></div> <div><font>INI</font></div> <div> <div><font></font> </div> <div><font>16+16=32T</font></div> <div><font></font> </div> <div><font>versus</font></div> <div><font></font> </div> <div><font>IN A,(78H)</font></div> <div><font>LD (HL),A</font></div> <div><font>INC HL</font></div> <div><font>IN A,(77H)</font></div> <div><font>LD (HL),A</font></div> <div><font>INC HL</font></div> <div><font></font> </div> <div><font>11+7+6+11+7+6=48T, čo je už horšie, ale iba o 50%.</font></div> <div><font></font> </div> <div><font>Tento mierny pokles rýchlosti je na druhú stranu vyvážený jednoduchosťou zapojenia, takže zvažujme...</font></div> <div><font></font> </div> <div><font>Marek.</font></div></div> <div>----- Original Message ----- </div> <div><b>From:</b> <a href="mailto:rdolejsi@[doména skryta] (sharpemu@pandora.cz)">rdolejsi@[doména skryta] (sharpemu@pandora.cz)</a> </div> <div><b>To:</b> <a href="mailto:sharpemu@pandora.cz">Konference Počítač SHARP MZ-800 a emulátory</a> </div> <div><b>Sent:</b> Tuesday, May 27, 2003 7:53 AM</div> <div><b>Subject:</b> Re: 2. service packec pro MZ-IDE 16bit</div> <div><br/></div><br/><br/>Jen pro úplnost:<br/><br/> - zdaleka nejrozšířenější 16-bit IDE interface na ZX využívá obvodu 8255.<br/>Je připojen tak, že porty A a B jsou Low/High datové sběrnice<br/>a port C obsahuje A0-A2, IORD/IOWR signály, CS0 first IDE, CS0 second IDE.<br/>Interface umožňuje připojit až 4 IDE zařízení (dva kabely)<br/>a podporuje 16-bit porty pro všechny adresy, což však vzhledem k ATA<br/>designu samozřejmě není potřeba. Ovládání pak vypadá nějak takto:<br/><br/>Zápis:<br/>OUT Ctrl, 0x80 ; přepnutí 8255 do output módu<br/>OUT A, data_low<br/>OUT B, data_high<br/>OUT C, IOWR+CS0+address<br/><br/>Čtení je obdobné..<br/><br/> Osobně jsem ale spíše za zachování jednoduchosti a snadnosti ovládání z<br/>ASM a tak hlasuji za již dříve Markem popsané řešení (překlápění lo/hi pro<br/>datový port).<br/><br/>R.<br/><br/><br/><br/>|---------+---------------------------><br/>| | "<a href="mailto:rdolejsi@eurote">rdolejsi@eurote</a>|<br/>| | l.cz (sharpemu |<br/>| | 27.05.2003 07:38|<br/>| | Odpovězte prosím|<br/>| | uživateli |<br/>| | "Konference |<br/>| | "Počítač SHARP |<br/>| | MZ-800 a |<br/>| | emulátory"" |<br/>| | |<br/>|---------+---------------------------><br/> >--------------------------------------------------------------------------------------------------------------------------------|<br/> | |<br/> | Komu: "Konference "Počítač SHARP MZ-800 a emulátory"" <<a href="mailto:sharpemu@pandora.cz">sharpemu@pandora.cz</a>> |<br/> | Kopie: |<br/> | Předmět: Re: 2. service packec pro MZ-IDE 16bit |<br/> | |<br/> | |<br/> >--------------------------------------------------------------------------------------------------------------------------------|<br/><br/><br/><br/><br/><br/>Ahoj,<br/><br/> taky jsem pro takovéto řešení. Na ZX to implementovali přesně tímto<br/>způsobem (trio DTP; (P)VL byl na NP) a nemají s tím sebemenší problém.<br/>Čtení/zápis provádějí přes INI(R)/OTI(R) a nic jim neschází ;-) Jen si<br/>nejsem jistý, jestli jim vychází časování tak, aby sektor přečetli párem<br/>INIR instrukcí, ale myslím, že ano.<br/><br/>R.<br/><br/>P.S.: Navíc MCE už tento způsob čtení IDE podporuje, tak si ho, Marku,<br/>můžeš otestovat ;-) .. (port-type=16bit-lohi)<br/><br/><br/><br/>|---------+---------------------------><br/>| | "<a href="mailto:smihla@[doména skryta]">smihla@[doména skryta]</a> |<br/>| | (sharpemu |<br/>| | 26.05.2003 17:38|<br/>| | Odpovězte prosím|<br/>| | uživateli |<br/>| | "Konference |<br/>| | "Počítač SHARP |<br/>| | MZ-800 a |<br/>| | emulátory"" |<br/>| | |<br/>|---------+---------------------------><br/> ><br/>--------------------------------------------------------------------------------------------------------------------------------|<br/><br/> |<br/>|<br/> | Komu: "Konference "Počítač SHARP MZ-800 a emulátory""<br/><<a href="mailto:sharpemu@pandora.cz">sharpemu@pandora.cz</a>> |<br/> | Kopie:<br/>|<br/> | Předmět: Re: 2. service packec pro MZ-IDE 16bit<br/>|<br/> |<br/>|<br/> |<br/>|<br/> ><br/>--------------------------------------------------------------------------------------------------------------------------------|<br/><br/><br/><br/><br/>Ahoj,<br/><br/><br/><br/>Mal som na mysli nasledovné:<br/><br/>Prvý OUT 78h: zápis D0..D7 do záchytného registra.<br/>Druhý OUT 78h: obsah záchytného registra do HDD (D0..D7) plus D0..D7 do HDD<br/>(D8..D15).<br/><br/>A tak dalej striedavo... Podobne pri vstupe:<br/><br/>Prvý IN 78h: D0..D7 z HDD do D0..D7 na MZ, D8..D15 z HDD do záchytného<br/>registra.<br/>Druhý IN 78h: čítanie D0..D7 zo záchytného registra.<br/><br/>Iný sled resp. náväznosť bajtov neprichádza do úvahy (kvôli rýchlosti a<br/>kompatibilite s PC).<br/><br/>V podstate ide o pridanie deličky jedna ku dvom na dekodér adresy 78h,<br/>ktorá by striedavo prepínala medzi HDD a záchytným registrom. To nemôže byť<br/>predsa až tak zložité, v žiadnom prípade netreba GAL či dokonca 8052!<br/><br/>Marek.<br/><br/>P.S. pokiaľ ide o filesystém FAT, už sa na ňom pracuje... ;-)<br/> ----- Original Message -----<br/> From: Petr Žydek (<a href="mailto:sharpemu@pandora.cz">sharpemu@pandora.cz</a>)<br/> To: Konference Počítač SHARP MZ-800 a emulátory<br/> Sent: Monday, May 26, 2003 10:33 AM<br/> Subject: 2. service packec pro MZ-IDE 16bit<br/><br/><br/><br/><br/> Tak tu máme service packec č. 2.<br/> K aktivitě mě inspirovala reakce Marka<br/> Šmihly na zveřejněný návrh 16bitového<br/> rozhraní HDD pro Sharpa. Sice jsem se<br/> nepokoušel počítat, jak se liší doba<br/> přenosu jednoho 512ti bajtového sektoru<br/> přes běžné I/O instrukce se současnou<br/> manipulací se všemi potřebnými registry<br/> A, BC, HL oproti použití repetičních<br/> instrukcí INIR, OTIR, ale přesto jsem zkusil<br/> podumat nad jinou alternativou...<br/><br/><br/><br/> Co je třeba dodržet, docílit:<br/> -potřebujeme 16ti bitový přenos dat, aby<br/> byla využita celá kapacita HDD<br/> -možnost přenosu dat z/na porty<br/> repetičními I/O instrukcemi<br/> -možnost použít funkci autodetekce<br/> parametrů disku<br/> -zařízení by mělo být kompatibilní<br/> s původní 8bitovou verzí<br/> -obvodové řešení musí být co možná<br/> nejjednodušší, malý počet IC snižuje cenu,<br/> šetří místo v případě vývoje kombo desek<br/> -v případě manipulace se signálem disku<br/> /sels se nabízí možnost obsluhy dvou<br/> HDD, tedy princip master/slave jako u PC<br/> -pokud by byla akceptována možnost provozu<br/> dvou HDD, pak se jasně nabízí možnost<br/> využití souborových systémů FAT(32), tím<br/> nemyslím přímé začlenění do CP/M, slave<br/> disk by sloužil jako přenosný element<br/> Sharp <-> PC. Konverzi souborových<br/> systémů a vlastních dat může provádět<br/> aplikační program pod CP/M typu<br/> file-manažer; stejně tak CP/Movsky<br/> nahraný disk by byl čitelný pro<br/> aplikační program v PC, ten by ho<br/> přečetl celý raz dva<br/><br/><br/> Jak to tedy vyřešit:<br/><br/><br/> Tahhle nějak vypadá zápis 512ti bajtového<br/> sektoru na MZ-IDE 8bit (odhaduju):<br/><br/><br/> xxx ; nastav příslušné hodnoty<br/> xxx ; do registru stopy,<br/> xxx ; sektoru atd.<br/> LD HL, "odkud" ; adresa dat v paměti<br/> LD B,00h ; 256 bajtů dat<br/> LD C,78h ; adresa datového portu HDD<br/> OTIR*** ; přenese B bajtů na port<br/> ; 78h od adresy v HL<br/> OTIR ; ještě jednou totéž<br/><br/><br/> Doufám, že jsem se nespletl, už jsem si<br/> dlouho v asm Z80 nehrál, je-li pravda, že<br/> po instrukci *** B=00h, HL="odkud"+256 a C<br/> se nemění, pak se vykoná přenos jako dvě<br/> 256tice I/O cyklů po sobě pomocí instrukcí<br/> OTIR (???)<br/><br/><br/> U PC bych si představil něco podobného, jen<br/> registry jsou víceslovné (to je výraz!) a<br/> datová sběrnice je 16ti bitová, takže se<br/> přenese jedním "OTIRem" (dejme tomu) jediná<br/> 256tice najednou, protože je široká 16 bitů<br/> a ne 8.<br/><br/><br/> Pokud by měl na tomto místě fungovat nějaký<br/> obvodový supervizor, který by datový tok<br/> na port 78h střídavě přepínal tak, abychom<br/> docílili připravenosti 16ti bitů dat každé<br/> dva I/O zápisy a pak by se provedl jeden<br/> vybavovací zápis do HDD, připomíná mi to<br/> křižovatku se semafory kde se po každém<br/> projetém autě mění volný směr jízdy.<br/><br/><br/> Můj návrh zní: využít toho, že se v každém<br/> případě přenáší 256 bajtů 2x po sobě, navíc<br/> obsah registru B sám inkrementuje a posílá<br/> se na A8-A15 adresové sběrnice Sharpa!!!<br/> Obvodové řešení by vycházelo z mého<br/> původního návrhu 16ti bitového rozhraní tj.:<br/> 1x 74LS245<br/> 1x 27xxx<br/> 1-2 další 74LS241, 245 (podle výsledku)<br/> 1x SRAM 6116 2kB<br/><br/><br/> Příklad zápisu:<br/> LD HL,"odkud" ; adresa dat v paměti<br/> LD B,00h ; 256 bajtů dat<br/> LD C,77h ; adresa pomocného bufferu<br/> OTIR ; naplní se pomocný 256ti<br/> ; bajtový buffer (Statická RAM)<br/> LD C,78h ; adresa datového portu HDD<br/> OTIR ; přenos 256ti bajtů