1 // BIOS Data Area (and similar) definitions
5 #include "disk.h" // struct fdpt_s
6 #include "types.h" // u8
9 /****************************************************************
10 * Interrupt vector table
11 ****************************************************************/
14 struct segoff_s ivec[256];
18 /****************************************************************
19 * Bios Data Area (BDA)
20 ****************************************************************/
22 struct bios_data_area_s {
28 u16 equipment_list_flags;
40 u8 floppy_recalibration_status;
41 u8 floppy_motor_status;
43 u8 floppy_motor_counter;
44 u8 floppy_last_status;
45 u8 floppy_return_status[7];
72 u16 kbd_buf_start_offset;
73 u16 kbd_buf_end_offset;
80 u8 floppy_last_data_rate;
81 u8 disk_status_controller;
82 u8 disk_error_controller;
83 u8 disk_interrupt_flag;
84 u8 floppy_harddisk_info;
86 u8 floppy_media_state[4];
90 struct segoff_s user_wait_complete_flag;
91 u32 user_wait_timeout;
95 struct segoff_s video_savetable;
101 // BDA floppy_recalibration_status bitdefs
102 #define FRS_IRQ (1<<7)
104 // BDA rtc_wait_flag bitdefs
105 #define RWS_WAIT_PENDING (1<<0)
106 #define RWS_WAIT_ELAPSED (1<<7)
108 // BDA floppy_media_state bitdefs
109 #define FMS_DRIVE_STATE_MASK (0x07)
110 #define FMS_MEDIA_DRIVE_ESTABLISHED (1<<4)
111 #define FMS_DOUBLE_STEPPING (1<<5)
112 #define FMS_DATA_RATE_MASK (0xc0)
114 // Limit of BDA timer_counter field
115 #define TICKS_PER_DAY 1573040
118 /****************************************************************
119 * Extended Bios Data Area (EBDA)
120 ****************************************************************/
122 struct extended_bios_data_area_s {
125 struct segoff_s far_call_pointer;
133 struct fdpt_s fdpt[2];
138 // 0x121 - Begin custom storage.
142 /****************************************************************
144 ****************************************************************/
146 struct bios_config_table_s {
151 u8 feature1, feature2, feature3, feature4, feature5;