Konference: Počítač SHARP MZ-800 a emulátory
Od: | Michal Hučík |
Datum: | 11.1.2012 16:41 |
Předmět: | Re: Floppy driver |
Ahoj, na web jsem uploadnul prozatim asi posledni verzi fdc driveru http://ordoz.com/sharp/fddrv/ Stav je nasledujici: - rutiny pro neupraveny radic jsem odzkousel u sebe na FDC Horava - rutiny pro HD upraveny radic jsou prozatim zrejme funkcni jen v emulatoru, abych mel alespon jistotu, ze je funkcni princip, tak jsem si nakompiloval hybridni kod, ktery pouzival stejnou DRQ rutinu, ale bez interruptu a odzkousel taktez na neupravenem FDC. Vice asi bez skutecneho radice nesvedu. Jako soucast zdrojoveho kodu jsem pribalil i adresar s predkompilovanymi testy: fddrv.mzf fddrv_write.mzf fddrv_int.mzf fddrv_int_write.mzf Testy vyzaduji naformatovanou 720kB disketu, ktera ma na 1. stope Sharp format (256 B sector size). Precte se 1. sektor a ulozi na adresu 0x6000, nasledne 2. sektor, ktery se ulozi na adresu 0x7000. Pri write variante testu se jeste navic upraveny obsah 1. sektoru zapise na disketu do pozice 2.sektoru. Po uspesnem ukonceni testu se vypise Done a zastavi se motor. Zdrojaky kompiluju v Linuxu. Pro kompilaci je potreba mit zhruba stejne nastroje jako uvadi Fuzzy pro kompilaci mzixu: - sdcc>=3.1 (http://sdcc.sourceforge.net) - asxxxx 5.x (http://shop-pdp.kent.edu/ashtml/asxxxx.htm) - mzftools>=0.2.2 (http://mzftools.sourceforge.net/wiki/index.php/MZFTools) Pouziva se linker z asxxxx, takze pred slinkovanim je potreba v Makefile nastavit jeste cestu ke knihovnam z SDCC (promenna SDCC_LIB_PATH) a nasledne pomoci "make z80libs" vytvorit potrebny seznam knihoven tak, aby jej pochroustala nova verze linkeru. Pak uz jen make a v pripade, ze mate pripojenou unikartu, tak make upl - pokud je v systemu k dispozici utilita USARTshell. Pokud s tim budete mit problem, tak se klidne ozvete treba pres skype "ordoz_nb" - pouzivam jej radeji, nez icq. Radku, diky za zaslane rutiny - ono to na prvni pohled vypada dost podobne jako to co je v driveru. Ja jsem pri psani kritickych casti driveru pouzil v podstate zjednoduseny opis funkci z cp/m 1.4 a z HD cp/m 4.1 a predpokladam. Pokud tedy ty testovaci programky selhaly, tak jsem zrejme neco blbe opsal. (Predpokladam, ze tvuj radic prokazatelne pracuje s cp/m 4.1 a testovaci disketa odpovida vyse uvedenym pozadavkum). Pak se obavam, ze bez toho aniz bych mel na stole funkcni radic ve kterem si muzu nazivo porovnat rozdily pri praci s cp/m 4.1 a s mym fdc driverem, tak jsem vicemene s dalsim vyvojem skoncil. Pokud by jsi s tim chtel zaexperimentovat sam, nebo pokud byl jsi byl tak hodny a zapujcil mi FDC, tak bych to udelal podle neho. (Navic pokud mas po ruce funkcni upraveny FDC Horava, tak bych jej docela rad pouzil i jako referencni radic pro HD upravu toho meho radice :) Michal Dne 10.1.2012 13:18, Radek Suk (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a): > > Jeste pred usnutim jsem si rikal ze je tam stejne jina chyba, protoze > to co pisi bude problem az u HD disket ale u DD se to neprojevi - zde > je dvojnasobny cas. Jinak i posledni verze nefunguje. > > Idelani je dat zdrojaky na http://ordoz.com/sharp/fddrv/ a napsat co > presne pouzivas pro preklad - logicky to delas v Linuxu alespon podle > souboru. Take bych to cisloval tak napr fddrv7.mzf - ja stejne to > prejmenovavam na 8 znaku nez to dam do Sharpa a to uz proto abych to > nepopletl. > > > Michale posilam klicovou cast z MZ DOSu at vidis jak to resim ja. > Mozna ti to pomuze nebo to muze nekoho inspirovat. > > Radek > > > makej: ld de,(z_bufer) ; de-kam davat data > makej0: push de ; cy-0 input cy-1 output a-kod > ; > ld (makej3+1),a ; > ld a,3h > out (0fch),a ; znemozni preruseni PIO-a > di > in a,(0d8h) ; nulovani INTRQ vystupu radice > ld de,freemem > ld hl,10h > ld bc,3 > ldir ; oblast 10h uloz > ld l,20h > ld c,7 > ldir ; oblast 20h uloz > ex de,hl > ld hl,kondopameti-1 > jr c,makej1 > ld hl,kondoradice-1 > makej1: dec de > ld c,7 > lddr ; rutinka pro data z/do radice (oblast > 10h a 20h) > ld a,0c3h > ld (10h),a > ld hl,makej5 > ld (11h),hl > im 0 > ld a,(fyztyp) > bit 3,a > ld a,1h ; clock - 1 Mhz DD-typ > jr z,makej2 > ld a,7h ; clock - 2 Mhz HD-typ > makej2: out (0dfh),a > pop de > push de > ld a,(de) ; pro pripad ze je zapis do radice je nutno > cpl ; mit uz v acc pripraven bajt > ld hl,makej4 ; adresa skoku > ld c,0d8h > makej3: ld b,0 > ei > out (c),b ; vysli instrukci > makej4: jp (hl) ; nekonecna smycka > > makej5: pop hl ; vyrovnani zasobniku > in a,(0d8h) ; prevezmi status > di > push de > xor a > out (0dfh),a ; clock - 1 Mhz > ld hl,freemem > ld de,10h > ld bc,3 > ldir ; oblast 10h obnov > ld e,20h > ld c,7 > ldir ; oblast 20h obnov > im 2 > ld a,83h > out (0fch),a ; povol preruseni od PIO-a > pop de ; kolik bajtu jsem precetl > pop bc ; kde zacina bufer > ld hl,(delsek) ; pocet bajtu ktere se maji prenest > add hl,bc > and a ; preneslo se spravny pocet bajtu ? > sbc hl,de ; 0 - ano > ret > > zacdoradice: ; doda 1 bajt do radice > out (0dbh),a > inc de > ld a,(de) ; delka rutinky je 7 bajtu ! > cpl > ei > ret > kondoradice: > > zacdopameti: ; prevezme 1 bajt z radice > in a,(0dbh) > cpl > ld (de),a ; delka rutinky je 7 bajtu ! > inc de > ei > ret > kondopameti: > > freemem: ds 10 ; sem ulozim co je pri spusteni od adresy 20h a 10h > > > Dne 10.1.2012 8:58, Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a): >> >> >> >> Dne 10.1.2012 3:01, Radek Suk (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a): >>> >>> >>> Proto asi bude stacit zmenit to RETI na RET. Proc vlastne chces delat >>> RETI, vzdyt je to uplne k nicemu - preci neovladas zadny Z80 periferni >>> obvod timto prerusenim? >>> >> >> Ahoj Radku, mas pravdu ... divam se do zdrojaku HD cp/m a vidim tam RET >> a ne RETI ... ja jsem ho tam dal asi proste ze slusnosti ;) >> Posilam verzi ve ktere je pouze EI a RET, tak jsem zvedavy. >> >> Michal >> >> >> --- > > > ---
[2012/1 (125)] [2012/2 (34)] [2012/3 (57)] [2012/4 (46)] [2012/5 (40)] [2012/6 (44)] [2012/7 (64)] [2012/8 (57)] [2012/9 (32)] [2012/10 (55)] [2012/11 (25)] [2012/12 (63)]
[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)]