CDL Modules
Data Structures | Namespaces | Enumerations | Variables
fdc8271.cdl File Reference

CDL implementation of 8271 FDC. More...

Detailed Description

CDL implementation of 8271 FDC.

This is an implementaion of the Intel 8271 FDC - although that was a microcoded beast, and this is hard-coded state machines. Also, this maps 8271 commands to bbc_floppy op/responses, which can then be mapped to SRAM read/writes, rather than analog FM/MFM data.

Data Structures

struct  fdc8271::t_drive_outputs
 
struct  fdc8271::t_drive_timing
 
struct  fdc8271::t_drive_timing_state
 
struct  fdc8271::t_drive_operation
 
struct  fdc8271::t_drive_operation_state
 
struct  fdc8271::t_drive_execution_result
 
struct  fdc8271::t_drive_execution
 
struct  fdc8271::t_drive_execution_state
 
struct  fdc8271::t_set_outputs
 
struct  fdc8271::t_command
 
struct  fdc8271::t_command_state
 
struct  fdc8271::t_control_scan
 
struct  fdc8271::t_control_drive
 
struct  fdc8271::t_control
 
struct  fdc8271::t_command_register
 
struct  fdc8271::t_parameter_register
 
struct  fdc8271::t_result_register
 
struct  fdc8271::t_status_register
 

Namespaces

 fdc8271
 

Enumerations

enum  fdc8271::t_dos_fsm {
  fdc8271::dos_fsm_idle,
  fdc8271::dos_fsm_complete_okay,
  fdc8271::dos_fsm_complete_track_0_not_found,
  fdc8271::dos_fsm_seek_zero_start,
  fdc8271::dos_fsm_seek_zero_step,
  fdc8271::dos_fsm_seek_zero_wait_until_settled,
  fdc8271::dos_fsm_seek_nonzero_check_bad_track_1,
  fdc8271::dos_fsm_seek_nonzero_check_bad_track_2,
  fdc8271::dos_fsm_seek_nonzero_calculate_steps,
  fdc8271::dos_fsm_seek_nonzero_set_direction,
  fdc8271::dos_fsm_seek_nonzero_step,
  fdc8271::dos_fsm_seek_sector_id,
  fdc8271::dos_fsm_seek_sector_id_check,
  fdc8271::dos_fsm_load_head,
  fdc8271::dos_fsm_read_id,
  fdc8271::dos_fsm_read_id_copy_data,
  fdc8271::dos_fsm_read_data,
  fdc8271::dos_fsm_read_data_wait,
  fdc8271::dos_fsm_read_data_present_data,
  fdc8271::dos_fsm_present_data,
  fdc8271::dos_fsm_find_index,
  fdc8271::dos_fsm_find_index_wait
}
 
enum  fdc8271::t_drive_execution_operation {
  fdc8271::deo_none,
  fdc8271::deo_find_index,
  fdc8271::deo_seek_track,
  fdc8271::deo_seek_sector_id,
  fdc8271::deo_load_head,
  fdc8271::deo_read_id,
  fdc8271::deo_read_data
}
 
enum  fdc8271::t_des_fsm {
  fdc8271::des_fsm_idle,
  fdc8271::des_fsm_find_index,
  fdc8271::des_fsm_finding_index,
  fdc8271::des_fsm_seek_load,
  fdc8271::des_fsm_seek_load_wait_for_load,
  fdc8271::des_fsm_seek,
  fdc8271::des_fsm_seek_in_progress,
  fdc8271::des_fsm_seek_sector_id,
  fdc8271::des_fsm_seek_sector_id_in_progress,
  fdc8271::des_fsm_read_id,
  fdc8271::des_fsm_read_id_in_progress,
  fdc8271::des_fsm_read_data,
  fdc8271::des_fsm_read_data_in_progress
}
 
enum  fdc8271::t_drive_execution_command {
  fdc8271::dec_none,
  fdc8271::dec_find_index,
  fdc8271::dec_seek,
  fdc8271::dec_seek_load,
  fdc8271::dec_read_id,
  fdc8271::dec_seek_sector,
  fdc8271::dec_read_data
}
 
enum  fdc8271::t_cs_fsm {
  fdc8271::cs_fsm_idle,
  fdc8271::cs_fsm_specify_0,
  fdc8271::cs_fsm_specify_init_step_rate,
  fdc8271::cs_fsm_specify_init_head_settling_time,
  fdc8271::cs_fsm_specify_init_load_time,
  fdc8271::cs_fsm_specify_load_bad_track_1,
  fdc8271::cs_fsm_specify_load_bad_track_2,
  fdc8271::cs_fsm_specify_load_current_track,
  fdc8271::cs_fsm_write_special_reg,
  fdc8271::cs_fsm_write_special_data,
  fdc8271::cs_fsm_read_special_reg,
  fdc8271::cs_fsm_seek_get_track,
  fdc8271::cs_fsm_seek_start,
  fdc8271::cs_fsm_seek_wait_for_result,
  fdc8271::cs_fsm_read_write_multi_sector,
  fdc8271::cs_fsm_read_write_multi_sector_get_sector,
  fdc8271::cs_fsm_read_write_multi_sector_get_length,
  fdc8271::cs_fsm_read_write_multi_sector_find_sector,
  fdc8271::cs_fsm_read_write_multi_sector_seek_load,
  fdc8271::cs_fsm_read_write_multi_sector_wait_for_find,
  fdc8271::cs_fsm_read_write_multi_sector_read_data,
  fdc8271::cs_fsm_read_write_multi_sector_reading_data,
  fdc8271::cs_fsm_read_multi_id,
  fdc8271::cs_fsm_read_multi_id_zero_param,
  fdc8271::cs_fsm_read_multi_id_num_ids,
  fdc8271::cs_fsm_read_multi_id_seek_load,
  fdc8271::cs_fsm_read_multi_id_find_index,
  fdc8271::cs_fsm_read_multi_id_start,
  fdc8271::cs_fsm_read_multi_id_wait_for_result,
  fdc8271::cs_fsm_read_write_sector,
  fdc8271::cs_fsm_read_write_sector_get_sector,
  fdc8271::cs_fsm_read_write_sector_find_sector,
  fdc8271::cs_fsm_read_write_sector_seek_load,
  fdc8271::cs_fsm_read_write_sector_wait_for_find,
  fdc8271::cs_fsm_read_write_sector_read_data,
  fdc8271::cs_fsm_read_write_sector_reading_data,
  fdc8271::cs_fsm_command_format_track,
  fdc8271::cs_fsm_result_none,
  fdc8271::cs_fsm_result_ready,
  fdc8271::cs_fsm_result_capture,
  fdc8271::cs_fsm_command_status_0,
  fdc8271::cs_fsm_drive_status
}
 
enum  fdc8271::t_read_action {
  fdc8271::read_action_none,
  fdc8271::read_action_status,
  fdc8271::read_action_result,
  fdc8271::read_action_data
}
 
enum  fdc8271::t_write_action {
  fdc8271::write_action_none,
  fdc8271::write_action_command,
  fdc8271::write_action_parameter,
  fdc8271::write_action_data,
  fdc8271::write_action_reset
}
 

Variables

constant integer fdc8271::timer_data_counter_value =128
 
constant integer fdc8271::timer_10us_counter_value =2
 
constant integer fdc8271::timer_1ms_counter_value =8