Floppy controller questions
Allison
ajp166 at bellatlantic.net
Wed Aug 24 16:46:01 CDT 2005
>
>Subject: Re: Floppy controller questions
> From: "Dwight K. Elvey" <dwight.elvey at amd.com>
> Date: Wed, 24 Aug 2005 14:11:36 -0700 (PDT)
> To: cctalk at classiccmp.org
>
>>From: "Allison" <ajp166 at bellatlantic.net>
>---snip---
>>
>>ugly 8080 flavor for transfers up to 1KB:
>>
>> ; HL is memory pointer
>> ; A is temp
>> ; B is transfer length *4
>> ; Zero flag affected by DCR B
>> DMAIO: IN DMAport ; wait if DMA is not asserted
>> mov M,A
>> INX H ; HL<-HL+1
>> IN DMAport ; wait if DMA is not asserted
>> mov M,A
>> INX H ; HL<-HL+1
>> IN DMAport ; wait if DMA is not asserted
>> mov M,A
>> INX H ; HL<-HL+1
>> IN DMAport ; wait if DMA is not asserted
>> mov M,A
>> INX H ; HL<-HL+1
>> DCR B ; B is dmatransfer down counter
>> JNZ DMAIO ; loop if not Zero, more to go.
>> ...
>>
>
>Hi
> As I recall, you could move the DCR B before the last
>IN DMAport. As I recall, INX H didn't effect the zero
>flag ( or was that the carry flag ? ). In any case,
>This kept the last time shorter.
>Dwight
>
Makes no difference in action. From the last IN DMAport
you have average 16uS to do whatever and get to the next
IN DMAport. Delay too long and you have a data overrun.
The INX H does not affect the flags the flags on 8080/8085/z80.
The DCR B does affect the zero flag.
It takes 10cycles to do the jump, 7 to not jump.
Z80 DJNZ is faster by 6 cycles as it would eliminate the
DCR B and also does the jump in 8 cycles. The only difference
is C would be your data counter.
None of this really helps of the CPU is 8088 or 6502.
Allison
More information about the cctalk
mailing list