Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Re: Floppy driver

Radek Suk SHARP MZ-800

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 (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (33 řádků)
>
>
> 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 (sharpemupandora.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
>
>
> ---
>
>

Zobrazit původní podobu