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

Od: Radek Suk
Datum: 1.1.2012 13:33
Předmět: Re: Floppy driver


Ahoj Milane

Tak jsem ti to vyfotil http://www.radeksuk.cz/sharp/smazat/IMG_1301.JPG
a vraci to EF,0,0 - toto ale dostanu tak z 20% pokusu. Podle toho 
statusu to nenajde ten sektor.

Vetsinou (asi z 80%) to nenacte ani ten Read Address a to vraci 
FB,05,00. Zde jako kdyz vyskocis jeste nez prectes posledni bajt.

Vzdy to vraci stejne hodnoty.

Radek


Dne 1.1.2012 11:57, Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>
>
>
> Ahoj Radku,
>
> myslim si, ze dokud ma radic nejaka data, tak bude BUSY - divam se na
> komentovany vypis ROM a vidim, ze je tam cteni z FD realizovano velice
> podobnym zpusobem:
>
> 0998 ;
> 0999 ; Cte data z Floppy disku
> 1000 ;
> 1001  tu byla ta zakroucena vec FDREAD:
> 1002 E5A7 CD96E6 CALL  tu byla ta zakroucena vec FDTR? ; spocti stopu a sektor
> 1003 E5AA CDFBE5 CALL  tu byla ta zakroucena vec FDPREP ; priprav disk a registry (CALL  tu byla ta zakroucena vec FDSEL -
> zapne motor a vybere disk)
> 1004 E5AD CD1BE6 JE5AD: CALL  tu byla ta zakroucena vec FDTR ; nastav stopu (ulozi stopu do
> datoveho registru FDC a nastavi stranu)
> 1005 E5B0 CD28E5 CALL  tu byla ta zakroucena vec FDSEEK ; fyzicky ji hledej
> 1006 E5B3 C290E6 JP NZ,FDERR2 ; nezadarilo se
> 1007 E5B6 CD2BE6 CALL  tu byla ta zakroucena vec FDSEC ; nastav sektor
> 1008 E5B9 F3 DI ; prerusovat se nesmi, proto
> 1009 E5BA 3E94 LD A,94H ; povolit preruseni
> 1010 E5BC CD4EE6 CALL FDSTRT ; zahajit cteni sektoru
> 1011 E5BF 0600 JE5BF: LD B,0 ; 256 bytu
> 1012 E5C1 DBD8 JE5C1: IN A,(<FDCTR) ; status
> 1013 E5C3 0F RRCA
> 1014 E5C4 381A JR C,JE5E0 ; chyba
> 1015 E5C6 0F RRCA
> 1016 E5C7 38F8 JR C,JE5C1 ; not ready
> 1017 E5C9 EDA2 INI ; precist byte
> 1018 E5CB 20F4 JR NZ,JE5C1 ; jeste se cte dalsi
>
>
>
> Asi nam to v tuto chvili moc nerekne, ale upravil jsem cteci rutinu tak,
> aby se jeste pred tim return ( -3 ) ulozil FDC_STATUS a pocet
> prenesenych bajtu na adresu 0x5000:
>
> dbg_sts = FDC_STS;
> * (unsigned char *) 0x5000 = dbg_sts;
> * (unsigned int *) 0x5001 = read_size;
> if ( dbg_sts != 0xff ) {
> retval = -3; // vsechny status bity ted musi byt nulove!
> break;
> };
>
>
> Takze bych chtel opet poprosit, jestli by Radek, nebo nekdo, kdo je po
> silvestru ready :) mohl vyzkouset tuto verzi a jestli READ_ADDR skonci
> zase s ERR = 253, tak potom RESET + M a zjistit obsah 3 bajtu na adrese
> 0x5000. Dekuju.
>
> Michal
>
> Dne 1.1.2012 6:45, Radek Suk (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>>
>>
>> Ahoj Michale
>>
>> Pripada mi to, ze v teto rutine vyskocis kdyz je dokoncen prikaz a
>> Busy jde na nulu. Ale protoze neprevezmes posledni bajt tak DRQ je
>> jeste nahore. Zkus zkontrolovat zda mas read_size=6 ci jen 5.
>>
>> Radek
>
>
> ---

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