[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Apple II Disk Drive Question



Bryan Parkoff <none@nospam.net> wrote:

> David,
> 
>     Thank you very much for your answer.  It looks like that 6502 CPU must
> be involved for writing to disk, but Disk II card does not need to depend on
> 6502 CPU for reading because it is done through slate sequencer.  Right?

Both reading and writing are done through the state sequencer.  Write is
timing critical: a byte must be written exactly every 32 clock cycles.
You can actually write data at any multiple of 4 cycles, e.g. 6-bit
values could be written every 24 cycles if you so desired.  If you wait
longer than 32 cycles between writes, a zero bit will be written every 4
cycles (and you can't write more than two zero bits in a row if you want
to read it back reliably).

Read is less timing critical, as long as it can keep up: the code
normally polls the disk controller read buffer in a loop until it sees
bit 7 set.  This will occur when a complete disk byte has been read.
Once a complete byte is in the buffer, it must be read within 8
microseconds to ensure the byte is not cleared. (Reference:
Understanding the Apple IIe, pages 9-32 through 9-34.)  The normal
polling loop is 7 cycles (LDA $C08C,X then BPL).

I'm dubious about the range of drive rotation speeds you quoted earlier
in this thread. From reading this section of Understanding the Apple
IIe, it looks like the logic state sequencer will not be able to read
data reliably if the relative drive rotation speed of the reading and
writing disks differ by too much.

There is a bit on page 9-45 (with reference to the ProDOS driver) which
says that the maximum variation due to rotation speed and disk flutter
must be less than plus or minus 4.7%.  This translates to about 2.3%
either side of 300 rpm, or 294 to 306 rpm, possibly a little tighter to
allow for flutter.

DOS 3.3 may allow more variability in the drive speed.  Where did you
get the "280 to 310 rpm" range?

> I can't remember exactly when I read "Understanding the Apple //e" book
> chapter 9.  It is explained very well.
>     It is only a possibility to implement Disk II's speed like 280 to 310
> RPM.  It is almost impossible, but there are many ways to overcome 
> limitation which it is done through timing.  However, Disk II speed is
> independent from the timing because the rotation is at constant speed, but
> it can be done using variation resistor adjustment.  Correct?

The Disk ][ speed can be adjusted using a variable resistor, which will
affect the timing relative to other drives, or disks written with the
same drive prior to the adjustment.  It doesn't affect the timing of
subsequent writes using the same drive, but will affect the bit duration
and the number of bits which can be written on a complete track.

In extreme cases it might be possible to fit more data on a disk which
spins slower (using special formatting and read/write routines).
Whether this will be reliable depends on the magnetic properties of the
media and the disk read hardware.  I haven't done enough research to
know whether this is feasible.

Spinning the disk considerably faster doesn't seem to serve much useful
purpose.

-- 
David Empson
dempson@actrix.gen.nz