home *** CD-ROM | disk | FTP | other *** search
-
- Disk Drives - what YOU are doing wrong!
-
- * Copyright 1988 Commodore-Amiga, Inc.
- * This information is provided "as is"; no warranties are made. All
- * use is at your own risk. No liability or responsibility is assumed.
- * Permission granted to reproduce, provided this notice remains.
-
-
- A distressing number of our third party hardware and software
- developers have been using the floppy disk drives in an incorrect
- manner. If you use the trackdisk.device you are safe. If you go
- directly to the hardware, or build hardware, then this article is
- for you.
-
-
- For Hardware types:
-
- 1> The disk drive light should not flash on and off during
- access. Our drive activity light reflects the state of the
- motor. Typically the LED signal is driven by IN_USE (pin 4).
-
- 2> For compatibility with future systems, we require that drives
- refuse to step past track zero. That is, if the head is already
- at zero, and an outward step is received, it should not move the
- head. The drive must still reset it's "DISKCHANGE" latch,
- however.
-
- 3> The critical specifications for our 90mm (3.5") drives are:
- 3ms track-to-track. 15ms settling time. >80% radial alignment
- using a Dysan Alignment disk. 500ms motor spinup. 800ms maximum
- power on delay.
-
-
- For Software types:
-
- This part is primarily directed at people who write custom
- boot-loaders for game software. Due to defective loaders, there
- are thousands of Amiga owners who can't load some games, and will
- NEVER BE ABLE TO BUY THEM.
-
- The ultimate source for information on drive timing comes from
- the manufacturer's specifications. This article simply
- highlights the most misused points.
-
-
- 1> Don't make bad assumptions. For example; if you depend on the
- motor being on, turn it on before use. Don't assume that your
- boot code will be entered with the disk drive or system in any
- reliable state.
-
-
- 2> **NEVER** use a loop like this for timing:
-
- move.w #$1000,D0
- busy_wait dbra d0,busy_wait
-
- This fails to produce accurate timing under a large number of
- circumstances. The speed of the above loop depends on what CPU
- is installed in the system, what video mode is selected, whattype of memory the program is in, in what relation to vertical
- blank the code executes in, what the blitter is doing, what
- interrupts are enabled and more other factors than you want to
- think about.
-
- The 8520 chip provides fast, easy timing. See the companion
- article entitled "How to waste time".
-
-
- 3> The STEP line must be used as a low-going pulse. The
- direction must be set up FIRST, with a separate write to the
- register. A typical use would be:
-
- or.b #%00000010,$bfd100 ;Set up direction
- and.b #%11111110,$bfd100 ;Pulse low
- nop ;Wait a bit
- nop ; " " "
- or.b #%00000001,$bfd100 ;Set it high again
- ;-- now wait 3 miliseconds for the head to
- ;-- get to the next track
-
- We specify that our drives must get to the next track within 3
- miliseconds. Some drives will step considerably faster, others
- will fail at or before 2.8 miliseconds. When the direction of
- step is changed, the settling time must also be added (a total
- minimum delay of 18 miliseconds).
-
- Note that the TRACK ZERO sensor will not be valid until the head
- actually reaches the track.
-
-
- 4> When turning on the motor, wait for the READY signal to go low
- before reading or writing (steps are ok before then). Note that
- READY is only valid when the motor signal is ON.
-
-
- 5> To determine if a disk is in the drive, look at the DISKCHANGE
- signal. If it is low, the disk has been removed (and possibly
- inserted again) since the last check. Step the head to reset the
- latch and examine the current state.
-
-
- 6> Some code uses an extra track or two for storage or copy
- protection. We will not guarantee that our drives will have more
- than the normal 80 tracks. We will say that using one extra
- track is rather safe, two tracks is probably ok, and three tracks
- is a very bad idea.
-
-
- 7> After a disk write DMA has finished, a delay of 1.2
- miliseconds is required before any other operations (drive
- select, step, head change, etc.). The type of disk drives we use
- have a gap between the erase head and the read-write head. The
- disk drive keeps the erase head enabled after the end of writegate to compensate for the gap. Failure wait out the delay may
- result in writing over innocent data on other tracks or sides.
-
- -Bryce Nesbitt
-