# fdc.h File Reference

`#include <ubixos/types.h>`

Include dependency graph for fdc.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | DrvGeom

## Defines

#define | cmdRead (0xe6)
#define | cmdRecal (0x07)
#define | cmdSeek (0x0f)
#define | cmdSensei (0x08)
#define | cmdSpecify (0x03)
#define | cmdWrite (0xc5)
#define | dg144Gap3rw 0x1b
#define | dg144Heads 2
#define | dg144Spt 18
#define | dg144Tracks 80
#define | dg168Gap3rw 0x1c
#define | fdcCcr (0x3f7)
#define | fdcData (0x3f5)
#define | fdcDir (0x3f7)
#define | fdcDor (0x3f2)
#define | fdcDrs (0x3f4)
#define | fdcMsr (0x3f4)

## Typedefs

typedef DrvGeom | drvGeom

## Functions

void | block2Hts (int block, int *head, int *track, int *sector)
int | fdc_init ()
void | fdcRead (void *info, void *, uInt32 startSector, uInt32 sectorCount)
bool | fdcRw (int block, Int8 *blockBuffer, bool read, unsigned long numSectors)
void | fdcWrite (void *info, void *, uInt32 startSector, uInt32 sectorCount)
void | floppyIsr ()
void | floppyIsrhndlr ()
int | getByte ()
void | motorOff (void)
void | motorOn (void)
bool | readBlock (int block, Int8 *blockBuffer, unsigned long numSectors)
void | recalibrate (void)
void | reset (void)
bool | seek (int track)
void | sendByte (int Int8)
bool | waitFdc (bool sensei)
bool | writeBlock (int block, Int8 *blockBuffer, unsigned long numSectors)

## Define Documentation

#define cmdRead (0xe6)

Definition at line 50 of file fdc.h.

Referenced by fdcRw().

#define cmdRecal (0x07)

Definition at line 53 of file fdc.h.

Referenced by recalibrate().

#define cmdSeek (0x0f)

Definition at line 51 of file fdc.h.

Referenced by seek().

#define cmdSensei (0x08)

Definition at line 52 of file fdc.h.

Referenced by waitFdc().

#define cmdSpecify (0x03)

Definition at line 54 of file fdc.h.

Referenced by reset().

#define cmdWrite (0xc5)

Definition at line 49 of file fdc.h.

Referenced by fdcRw().

#define dg144Gap3rw 0x1b

Definition at line 59 of file fdc.h.

Referenced by fdcRw().

#define dg144Heads 2

Definition at line 56 of file fdc.h.

#define dg144Spt 18

Definition at line 58 of file fdc.h.

Referenced by fdcRw().

#define dg144Tracks 80

Definition at line 57 of file fdc.h.

#define dg168Gap3rw 0x1c

Definition at line 60 of file fdc.h.

Referenced by fdcRw().

#define fdcCcr (0x3f7)

Definition at line 45 of file fdc.h.

Referenced by fdcRw().

#define fdcData (0x3f5)

Definition at line 43 of file fdc.h.

Referenced by getByte(), and sendByte().

#define fdcDir (0x3f7)

Definition at line 44 of file fdc.h.

Referenced by fdcRw(), and waitFdc().

#define fdcDor (0x3f2)

Definition at line 46 of file fdc.h.

Referenced by motorOn(), and reset().

#define fdcDrs (0x3f4)

Definition at line 47 of file fdc.h.

#define fdcMsr (0x3f4)

Definition at line 42 of file fdc.h.

Referenced by getByte(), sendByte(), and waitFdc().

## Typedef Documentation

typedef struct DrvGeom drvGeom

## Function Documentation

void block2Hts | ( | int | block,
|  | int * | head,
|  | int * | track,
|  | int * | sector |
| ) |  |  |

Definition at line 201 of file fdc.c.

References geometry, DrvGeom::heads, and DrvGeom::spt.

Referenced by fdcRw().

int fdc_init | ( |  | ) |

Definition at line 63 of file fdc.c.

References devfs_makeNode(), device_add(), dInt, dPresent, fdcInit2(), fdcRead(), fdcWrite(), floppyIsr(), device_interface::init, irqEnable(), kmalloc(), device_interface::major, mVec, device_interface::read, reset(), device_interface::reset, setVector(), and device_interface::write.

Here is the call graph for this function:

void fdcRead | ( | void * | info,
|  | void * | ,
|  | uInt32 | startSector,
|  | uInt32 | sectorCount |
| ) |  |  |

Definition at line 303 of file fdc.c.

References fdcSpinLock, readBlock(), spinLock(), and spinUnlock().

Referenced by fdc_init().

Here is the call graph for this function:

bool fdcRw | ( | int | block,
|  | Int8 * | blockBuffer,
|  | bool | read,
|  | unsigned long | numSectors |
| ) |  |  |

Definition at line 129 of file fdc.c.

References block2Hts(), cmdRead, cmdWrite, dg144Gap3rw, dg144Spt, dg168Gap3rw, diskChange, dmaXfer(), FALSE, fdcCcr, fdcDir, fdcRw(), geometry, inportByte(), kprint(), kprintf(), motorOff(), motorOn(), outportByte(), recalibrate(), reset(), seek(), sendByte(), DrvGeom::spt, status, tbaddr, TRUE, and waitFdc().

Referenced by fdcRw(), readBlock(), and writeBlock().

Here is the call graph for this function:

void fdcWrite | ( | void * | info,
|  | void * | ,
|  | uInt32 | startSector,
|  | uInt32 | sectorCount |
| ) |  |  |

Definition at line 309 of file fdc.c.

References writeBlock().

Referenced by fdc_init().

Here is the call graph for this function:

void floppyIsr | ( |  | ) |

Referenced by fdc_init().

void floppyIsrhndlr | ( |  | ) |

Definition at line 98 of file fdc.c.

References done, outportByte(), TRUE, and x20.

Here is the call graph for this function:

int getByte | ( |  | ) |

Definition at line 116 of file fdc.c.

References fdcData, fdcMsr, and inportByte().

Referenced by waitFdc().

Here is the call graph for this function:

void motorOff | ( | void |  | ) |

Definition at line 214 of file fdc.c.

References FALSE, motor, and TRUE.

Referenced by fdcRw(), and recalibrate().

void motorOn | ( | void |  | ) |

Definition at line 207 of file fdc.c.

References FALSE, fdcDor, motor, outportByte(), and TRUE.

Referenced by fdcRw(), and recalibrate().

Here is the call graph for this function:

bool readBlock | ( | int | block,
|  | Int8 * | blockBuffer,
|  | unsigned long | numSectors |
| ) |  |  |

Definition at line 241 of file fdc.c.

References fdcRw(), and TRUE.

Referenced by fdcRead().

Here is the call graph for this function:

void recalibrate | ( | void |  | ) |

Definition at line 280 of file fdc.c.

References cmdRecal, motorOff(), motorOn(), sendByte(), TRUE, and waitFdc().

Referenced by fdcRw(), and reset().

Here is the call graph for this function:

void reset | ( | void |  | ) |

Definition at line 288 of file fdc.c.

References cmdSpecify, diskChange, done, FALSE, fdcDor, motor, outportByte(), recalibrate(), seek(), sendByte(), TRUE, and waitFdc().

Referenced by fdc_init(), and fdcRw().

Here is the call graph for this function:

bool seek | ( | int | track | ) |

Definition at line 222 of file fdc.c.

References cmdSeek, FALSE, fdcTrack, kprintf(), sendByte(), sr0, TRUE, waitFdc(), and x20.

Referenced by fdcRw(), and reset().

Here is the call graph for this function:

void sendByte | ( | int | Int8 | ) |

Definition at line 103 of file fdc.c.

References fdcData, fdcMsr, inportByte(), and outportByte().

Referenced by fdcRw(), recalibrate(), reset(), seek(), and waitFdc().

Here is the call graph for this function:

bool waitFdc | ( | bool | sensei | ) |

Definition at line 256 of file fdc.c.

References cmdSensei, diskChange, done, FALSE, fdcDir, fdcMsr, fdcTrack, getByte(), inportByte(), sendByte(), sr0, statSize, status, timeOut, and TRUE.

Referenced by fdcRw(), recalibrate(), reset(), and seek().

Here is the call graph for this function:

bool writeBlock | ( | int | block,
|  | Int8 * | blockBuffer,
|  | unsigned long | numSectors |
| ) |  |  |

Definition at line 252 of file fdc.c.

References FALSE, and fdcRw().

Referenced by fdcWrite().

Here is the call graph for this function: