nckernel  0.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations | Functions
fdc.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  configuration_control_register
 
struct  datarate_select_register
 
struct  digital_input_register
 
struct  digital_output_register
 
struct  fdc_context
 
struct  main_status_register
 
struct  status_register
 
struct  status_register_b
 
struct  tape_drive_register
 

Macros

#define DIR_OF_DATA(reg)   (MSR(reg)->RQM ? (MSR(reg)->DIO ? READ_REQUIRED : WRITE_REQUIRED) : UNDEFINED)
 
#define DOR_ENABLE(single, drv, dma)
 
#define DOR_RESET(single)
 
#define DSR_RESET(reg)
 
#define IN_RESULT_PHASE(reg)   (MSR(reg)->cmd_busy)
 
#define IN_SEEK_PORTION(reg)   (MSR(reg)->drive_busy)
 
#define LBA_TO_CHS(lba, h, t, s)
 Converting the Logical Block Address to CHS. CHS: Cylinder, Head, Sector. More...
 
#define MSR(reg)   ((MSR_t*)(reg))
 
#define REG_CCR(base)   ((base) + 0x07)
 
#define REG_DIR(base)   ((base) + 0x07)
 
#define REG_DOR(base)   ((base) + 0x02)
 
#define REG_DSR(base)   ((base) + 0x04)
 
#define REG_FIFO(base)   ((base) + 0x05)
 
#define REG_MSR(base)   ((base) + 0x04)
 
#define REG_SRA(base)   (base)
 
#define REG_SRB(base)   ((base) + 0x01)
 
#define REG_TDR(base)   ((base) + 0x03)
 
#define SELECT_DRATE(reg, rate)
 
#define SET_DRATE(reg, drate)   (((CCR_t*)(reg))->drate_sel = (drate))
 
#define SRA(reg)   ((SRA_t*)(ret))
 
#define SRB(reg)   ((SRB_t*)(reg))
 
#define VALIDATE_RESULT(ctx)
 

Typedefs

typedef struct
configuration_control_register 
CCR_t
 
typedef struct
digital_input_register 
DIR_t
 
typedef struct
digital_output_register 
DOR_t
 
typedef struct
datarate_select_register 
DSR_t
 
typedef struct main_status_register MSR_t
 
typedef struct status_register SRA_t
 
typedef struct status_register_b SRB_t
 
typedef struct tape_drive_register TDR_t
 

Enumerations

enum  { FD_SECTOR_PER_TRACK = 18, FD_HEAD = 2, FD_BLKSZ = 512 }
 트랙, 헤드, 블럭크기를 정의한다. More...
 
enum  base_address { FDC_PRIMARY = 0x3F0, FDC_SECONDARY = 0x370, FDC_BASE_MAX = 0xFFFF }
 플로피 디스크 드라이버 Primary,Secondary 포트 주소 정의 More...
 
enum  bytes_per_sector { SECTOR_128 = 0, SECTOR_256 = 1, SECTOR_512 = 2, SECTOR_1024 = 3 }
 섹터당 바이트 수를 정의한다 More...
 
enum  command_set {
  CMD_READ_TRACK = 0x02, CMD_SPECIFY = 0x03, CMD_SEND_DRIVE_STATUS = 0x04, CMD_WRITE_DATA = 0x05,
  CMD_READ_DATA = 0x06, CMD_RECALIBRATE = 0x07, CMD_SENSE_INTERRUPT = 0x08, CMD_WRITE_DELETED_DATA = 0x09,
  CMD_READ_ID = 0x0A, CMD_READ_DELETED_DATA = 0x0C, CMD_FORMAT_TRACK = 0x0D, CMD_DUMPREG = 0x0E,
  CMD_SEEK = 0x0F, CMD_VERSION = 0x10, CMD_SCAN_EQUAL = 0x11, CMD_PERPENDICULAR_MODE = 0x12,
  CMD_CONFIGURE = 0x13, CMD_LOCK = 0x14, CMD_VERIFY = 0x16, CMD_SCAN_LOW_OR_EQUAL = 0x19,
  CMD_SCAN_HIGH_OR_EQUAL = 0x1D, CMD_RELATIVE_SEEK = 0x8F, CMD_EXT_SKIP = 0x20, CMD_EXT_DENSITY = 0x40,
  CMD_EXT_MULTITRACK = 0x80
}
 
enum  data_rates { DRATE_1Mbps = 0x03, DRATE_500Kbps = 0x00, DRATE_300Kbps = 0x01, DRATE_250Kbps = 0x02 }
 
enum  dir_of_data { UNDEFINED = 0x00, READ_REQUIRED = 0x01, WRITE_REQUIRED = 0x02, MAX_DIR_OF_DATA = 0xFF }
 
enum  dma_state { DMA = 0x01, NONDMA = 0x00 }
 
enum  drive_activation_values { DRIVE0 = 0x1C, DRIVE1 = 0x2D, DRIVE2 = 0x4E, DRIVE3 = 0x8F }
 
enum  drive_letter {
  DRIVE_A = 0x00, DRIVE_B = 0x01, DRIVE_C = 0x02, DRIVE_D = 0x03,
  DRIVE_MAX = 0xFF
}
 
enum  fdc_dma_dir_t { FDC_DMA_READ = 1, FDC_DMA_WRITE = 2 }
 
enum  precompensation_delays {
  DELAY_DISABLED = 0x07, DELAY_41_67ns = 0x01, DELAY_83_34ns = 0x02, DELAY_125ns = 0x03,
  DELAY_166_67ns = 0x04, DELAY_208_33ns = 0x05, DELAY_250ns = 0x06, DELAY_DEFAULT = 0x0
}
 
enum  symbol { EIS = 0x06, EFIFO = 0x05, POLL = 0x04 }
 

Functions

int fdc_init (void)