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