📄 fdc.h
字号:
UCHAR data_length;
} c_readdeleteddata;
struct c_readid
{
UCHAR opcode;
UCHAR cbyte1;
} c_readid;
struct c_readtrack
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR track_number;
UCHAR drive_head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
UCHAR end_of_track_sector_number;
UCHAR intersector_gap_length;
UCHAR data_length;
} c_readtrack;
struct c_recalibrate
{
UCHAR opcode;
UCHAR cbyte1;
} c_recalibrate;
struct c_relativeseek
{
UCHAR opcode;
UCHAR cbyte1;
} c_relativeseek;
struct c_scanequal
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR track_number;
UCHAR drive_head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
UCHAR end_of_track_sector_number;
UCHAR intersector_gap_length;
UCHAR sector_step_size;
} c_scanequal;
struct c_scanhighorequal
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR track_number;
UCHAR drive_head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
UCHAR end_of_track_sector_number;
UCHAR intersector_gap_length;
UCHAR sector_step_size;
} c_scanhighorequal;
struct c_scanloworequal
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR track_number;
UCHAR drive_head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
UCHAR end_of_track_sector_number;
UCHAR intersector_gap_length;
UCHAR sector_step_size;
} c_scanloworequal;
struct c_seek
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR cbyte2;
UCHAR cbyte3;
} c_seek;
struct c_sensedrivestatus
{
UCHAR opcode;
UCHAR cbyte1;
} c_sensedrivestatus;
struct c_senseinterrupt
{
UCHAR opcode;
} c_senseinterrupt;
struct c_settrack
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR cbyte2;
} c_settrack;
struct c_specify
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR cbyte2;
} c_specify;
struct c_verify
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR track_number;
UCHAR drive_head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
UCHAR end_of_track_sector_number;
UCHAR intersector_gap_length;
UCHAR data_length_sector_count;
} c_verify;
struct c_version
{
UCHAR opcode;
} c_version;
struct c_writedata
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR track_number;
UCHAR drive_head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
UCHAR end_of_track_sector_number;
UCHAR intersector_gap_length;
UCHAR data_length;
} c_writedata;
struct c_writedeleteddata
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR track_number;
UCHAR drive_head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
UCHAR end_of_track_sector_number;
UCHAR intersector_gap_length;
UCHAR data_length;
} c_writedeledteddata;
} FDC_COMMAND;
/* result (result phase) structure definitions */
typedef union fdc_result
{
struct r_justdata
{
UCHAR databytes[32];
} r_justdata;
struct r_dumpreg
{
UCHAR registers[10];
} r_dumpreg;
struct r_formattrack
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_formattrack;
struct r_lock
{
UCHAR sbyte1;
} r_lock;
struct r_nsc
{
UCHAR sbyte1;
} r_nsc;
struct r_readdata
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_readdata;
struct r_readdeleteddata
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_readdeleteddata;
struct r_readid
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_readid;
struct r_readtrack
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_readtrack;
struct r_scanequal
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_scanequal;
struct r_scanhighorequal
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_scanhighorequal;
struct r_scanloworequal
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_scanloworequal;
struct r_seek
{
UCHAR opcode;
UCHAR cbyte1;
UCHAR cbyte2;
UCHAR cbyte3;
} r_seek;
struct r_sensedrivestatus
{
UCHAR status_register_3;
} r_sensedrivestatus;
struct r_senseinterrupt
{
UCHAR status_register_0;
UCHAR present_track_number;
UCHAR msnofptr;
} r_senseinterrupt;
struct r_settrack
{
UCHAR value;
} r_settrack;
struct r_verify
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_verify;
struct r_version
{
UCHAR sbyte1;
} r_version;
struct r_writedata
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_writedata;
struct r_writedeleteddata
{
UCHAR status_register_0;
UCHAR status_register_1;
UCHAR status_register_2;
UCHAR track_number;
UCHAR head_number;
UCHAR sector_number;
UCHAR bytes_per_sector;
} r_writedeledteddata;
} FDC_RESULT;
/* register map structure template definition */
typedef struct fdc
{
UCHAR sra; /* status register A */
UCHAR srb; /* status register B */
UCHAR dor; /* digital output register */
UCHAR tdr; /* tape drive register */
UCHAR msr_dsr; /* main-status/data-rate-select register */
UCHAR fifo; /* data register (FIFO) */
UCHAR none; /* none (bus tristate) */
UCHAR dir_ccr; /* digital-input/configuration-control register */
} FDC;
#ifdef __cplusplus
}
#endif
#endif /* INCfdch */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -