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