Date : Fri, 04 Nov 2005 00:20:34 +0000
From : jgh@... (Jonathan Graham Harston)
Subject: Re: BBC using 3.5 high density format
Greg Cook <debounce@...> wrote:
> On 30 Oct 2005 09:39:36 +0000, Jonathan Graham Harston
[snip code]
> > Somebody earlier said that an HD FDC would spew bytes out every
> > 40us. At 1MHz there's not enough time to process 255 out of every
>
> The interval for SD is 1s/3125/5 = 16 /250 kHz = 64us. HD is a quarter
> that. Allowing for varying drive speeds and jitter an interval of 15us
> should be accepted, ideally 14.5us. See Tom Seddon's post for a 1 MHz
> solution.
>
> cycle would be stretched, the code itself will run according to the
> speed of page &D, which had better be 2 MHz.)
Yes, I calculated a 1MHz access to the FDC, and for some reason my
mind continued to calculate the rest of the NMI routine at 1MHz!
With the FDC accessed at 2MHz the NMI code would take 21us or
18us. So, SD with one byte every 64us leaves 43us between NMIs. DD
with one byte every 32us leaves 11us between NMIs, but HD with one
byte every 16us results in the NMI code being hit by the next NMI
call.
Getting rid of the checking of FDC_Status saves 6 cycles, dropping
the code to 17.5us, still not quite enough to collect a byte every
16us.
However, the BBC Master runs at 3MHz, so a 41-cycle NMI routine
will be executed in 13.6us - easily enough to collect a byte every
16us, and just enough allowing for jitter down to 14.5us.
As to what FDC to use, why not use whatever off-the-shelf
controller other computers use? Doesn't the A5000 use 82770 or
something? What does the RiscPC use?
--
J.G.Harston - jgh@... - mdfs.net/User/JGH
Our chief weapons are 'who', 'ps -aux', 'kill -9', and a fanatical devotion
to 'reboot -q'.