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

Od: Radek Suk
Datum: 1.1.2012 05:45
Předmět: Re: Floppy driver


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


/*
  * FDC_waitForData - radic je ve stavu, kdy zapisujeme/cteme data
  *		     budeme na ne cekat, dokud bude vystaven priznak BUSY
  *
  * Vstup:
  *	dma_addr - adresa dat
  *	drq_call - rutina, ktera se vykona pri DRQ
  *
  * Vystup:
  *	pocet prectenych bajtu
  *
*/
unsigned int FDC_waitForData ( void* p, void *drq_call ) __naked {

     (void) p;
     (void) drq_call;
     __asm

     push ix
     ld ix,#0
     add ix,sp

     // Prepiseme adresu volani pro DRQ.
     //
     // Pri FDC_SUPPORT_HDD zapiseme na 0x0038 instrukci JP <drq_call>
     // U normalniho radice prepiseme CALL intrukci pro volani pri DRQ.
     ld e,6 (ix)
     ld d,7 (ix)

#ifdef FDC_SUPPORT_HDD
     ld hl,#0x0038
     ld a,#0xc3
     ld (hl),a
     inc hl
#else
     ld hl,#3$+1
#endif
     ld (hl),e
     inc hl
     ld (hl),d

     // DMA do HL
     ld l,4 (ix)
     ld h,5 (ix)

     ld c,#_FDC_DATA

#ifdef FDC_SUPPORT_HDD
     ei
#endif
     // cekame na DRQ, nebo az zmizi BUSY
     1$:
     in a,(#_FDC_STS)
     rrc a
     jr c, 2$				// zmizel BUSY - koncime

#ifndef FDC_SUPPORT_HDD
     rrc a

     3$:
     call nc, __FDC_readByteCpl		// prisel DRQ - jdeme pro dalsi bajt
#endif

     jr 1$

     2$:
#ifdef FDC_SUPPORT_HDD
     di
#endif
     // zacatek DMA do DE
     ld e,4 (ix)
     ld d,5 (ix)
     ccf
     sbc hl,de				// do HL pocet prenesenych bajtu
     pop ix
     ret

     __endasm;
}

Dne 31.12.2011 16:21, Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>
>
> Ahoj Radku,
>
> takhle je to super! Diky! Myslim, ze je docela jedno ktery chip tam je
> fyzicky - kazdopadne jak je videt, tak to co snesou emulatory, to
> mohuzel neunese fyzicky HW, takze budu muset nakouknout do ROMky a do
> svych starych zdrojaku jestli tam neni potreba pridat jeste nejake
> prodlevy :( ERR = 253 znamena, ze prikaz READ_ADDR skoncil s nejakym
> nenulovym statusem ...
>
> Michal
>
> Dne 31.12.2011 16:07, Radek Suk (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
>>
>> Ahoj Michale
>>
>> Chci se optat zda by to nestacilo otestovat na wd2797 s eprom
>> simulujici 93?
>>
>> Jestli ano, tak vysledek jsem nafotil.
>> http://www.radeksuk.cz/sharp/smazat/test%20michal.zip
>>
>> Jestli to potrebujes presne na 2793 a to jak napis a ja to rozeberu a
>> dam tam presne tento. Mam i upraveny radic a tak i na tomto to muzu
>> pripadne otestovat.
>>
>> 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)]