4 /* Definitions for the Amiga floppy driver */
8 #define FD_MAX_UNITS 4 /* Max. Number of drives */
9 #define FLOPPY_MAX_SECTORS 22 /* Max. Number of sectors per track */
14 char *name
; /* description of data type */
15 int sects
; /* sectors per track */
18 void (*write_fkt
)(int);
20 int (*read_fkt
)(); /* read whole track */
21 void (*write_fkt
)(); /* write whole track */
26 ** Floppy type descriptions
29 struct fd_drive_type
{
30 unsigned long code
; /* code returned from drive */
31 char *name
; /* description of drive */
32 unsigned int tracks
; /* number of tracks */
33 unsigned int heads
; /* number of heads */
34 unsigned int read_size
; /* raw read size for one track */
35 unsigned int write_size
; /* raw write size for one track */
36 unsigned int sect_mult
; /* sectors and gap multiplier (HD = 2) */
37 unsigned int precomp1
; /* start track for precomp 1 */
38 unsigned int precomp2
; /* start track for precomp 2 */
39 unsigned int step_delay
; /* time (in ms) for delay after step */
40 unsigned int settle_time
; /* time to settle after dir change */
41 unsigned int side_time
; /* time needed to change sides */
44 struct amiga_floppy_struct
{
45 struct fd_drive_type
*type
; /* type of floppy for this unit */
46 struct fd_data_type
*dtype
; /* type of floppy for this unit */
47 int track
; /* current track (-1 == unknown) */
48 unsigned char *trackbuf
; /* current track (kmaloc()'d */
50 int blocks
; /* total # blocks on disk */
52 int changed
; /* true when not known */
53 int disk
; /* disk in drive (-1 == unknown) */
54 int motor
; /* true when motor is at speed */
55 int busy
; /* true when drive is active */
56 int dirty
; /* true when trackbuf is not on disk */
57 int status
; /* current error code for unit */