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

Od: Petr Žydek
Datum: 18.8.2003 15:28
Předmět: definitivní verze IDE16 (varianta E)

definitivní verze IDE16 (varianta E):

Obecný programátorský popis IDE16 chystám
v HTML, s obrázky a komentářem. U datového
portu 78H se využívá skutečnosti, že u
instrukcí s nepřímou adresou
(IN A,(C); OUT (C),A; INI; INIR; OUTI; OTIR)
se posílá obsah B registru na AD8-AD15.
Tento při např. OUTI automaticky dekrementuje
a je oním rozhodovacím elementem při směrování
dat na IDE. Vždycky je třeba přenést SUDÝ počet
bajtů např. při odesílání čtyř bajtů se tyto
přenesou jako dva "dvoubajty":

ld bc,0478H   ; počet bajtů, adresa datového portu
ld hl,"odkud" ; adresa bloku dat
outi   ; B bylo 04 tj. sudé ... data se zachytí
          v registru pro DD0-DD7 IDE
outi   ; B bylo 03 tj. liché ... data projdou
           registrem pro DD8-DD15 HDD na IDE piny
           DD8-DD15, data zachycená v registru pro
           DD0-DD7 se ukáží na IDE pinech DD0-DD7
           aktivuje se /IOW signál, HDD přijme data-
           dva bajty najednou, aniž by tušil, že
           první z nich byl připraven předem
outi   ; B bylo 02 tj. sudé ... stejné jako B=04h
outi   ; B bylo 01 tj. liché ... stejné jako při B=03H
přenos je ukončen

V praxi je blok dat vždy dlouhý 512 bajtů, takže má
smysl transakci zahajovat s nulou v B:

ld hl,"odkud"
ld bc,0078H
vyber aktivní IDE jednotku
iniciuj příslušné registry stopy, sektoru atd.
in 7fH,a   ; čti IDE status (event. čekej)
ld a,31H  ; příkaz zapsání sektoru
out (7fH),a  ; odešli
in (7fH),a  ; čti IDE status (event. čekej)
              ; čeká se na 58H (device ready, data request)
OTIR   ; odešle 256 bajtů dat počínaje adresou "odkud"
OTIR   ; odešle zbylých 256 bajtů dat, B se před touto
         ; instrukcí přetočilo znovu k nule a HL je
         ; o 256 bajtů vyšší (není třeba přenastavovat)
přenos je ukončen
in 7fH,a   ; čti status (měl by být 50H=device ready, bez chyb)

Ono se to bez těch obrázků těžko vysvětluje, ale všechno vyplývá
ze schemat a pravdivostních tabulek...

Petr de Zviqov


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