From 392d2aacb6065319be3d31fdb37fef393e0149a9 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 15 Sep 2013 00:14:28 -0400 Subject: Move standard bda type info from biosvar.h to std/bda.h. Signed-off-by: Kevin O'Connor --- src/biosvar.h | 161 ++-------------------------------------------------------- 1 file changed, 4 insertions(+), 157 deletions(-) (limited to 'src/biosvar.h') diff --git a/src/biosvar.h b/src/biosvar.h index e49a10ac..051cd1e0 100644 --- a/src/biosvar.h +++ b/src/biosvar.h @@ -1,24 +1,20 @@ -// Variable layouts of bios. +// Memory access to BIOS variables. // -// Copyright (C) 2008-2010 Kevin O'Connor +// Copyright (C) 2008-2013 Kevin O'Connor // // This file may be distributed under the terms of the GNU LGPLv3 license. #ifndef __BIOSVAR_H #define __BIOSVAR_H -#include "types.h" // u8 -#include "farptr.h" // GET_FARVAR #include "config.h" // SEG_BDA +#include "farptr.h" // GET_FARVAR +#include "std/bda.h" // struct bios_data_area_s /**************************************************************** * Interupt vector table ****************************************************************/ -struct rmode_IVT { - struct segoff_s ivec[256]; -}; - #define GET_IVT(vector) \ GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector]) #define SET_IVT(vector, segoff) \ @@ -35,106 +31,6 @@ struct rmode_IVT { * Bios Data Area (BDA) ****************************************************************/ -struct bios_data_area_s { - // 40:00 - u16 port_com[4]; - u16 port_lpt[3]; - u16 ebda_seg; - // 40:10 - u16 equipment_list_flags; - u8 pad1; - u16 mem_size_kb; - u8 pad2; - u8 ps2_ctrl_flag; - u8 kbd_flag0; - u8 kbd_flag1; - u8 alt_keypad; - u16 kbd_buf_head; - u16 kbd_buf_tail; - // 40:1e - u8 kbd_buf[32]; - u8 floppy_recalibration_status; - u8 floppy_motor_status; - // 40:40 - u8 floppy_motor_counter; - u8 floppy_last_status; - u8 floppy_return_status[7]; - u8 video_mode; - u16 video_cols; - u16 video_pagesize; - u16 video_pagestart; - // 40:50 - u16 cursor_pos[8]; - // 40:60 - u16 cursor_type; - u8 video_page; - u16 crtc_address; - u8 video_msr; - u8 video_pal; - struct segoff_s jump; - u8 other_6b; - u32 timer_counter; - // 40:70 - u8 timer_rollover; - u8 break_flag; - u16 soft_reset_flag; - u8 disk_last_status; - u8 hdcount; - u8 disk_control_byte; - u8 port_disk; - u8 lpt_timeout[4]; - u8 com_timeout[4]; - // 40:80 - u16 kbd_buf_start_offset; - u16 kbd_buf_end_offset; - u8 video_rows; - u16 char_height; - u8 video_ctl; - u8 video_switches; - u8 modeset_ctl; - u8 dcc_index; - u8 floppy_last_data_rate; - u8 disk_status_controller; - u8 disk_error_controller; - u8 disk_interrupt_flag; - u8 floppy_harddisk_info; - // 40:90 - u8 floppy_media_state[4]; - u8 floppy_track[2]; - u8 kbd_flag2; - u8 kbd_led; - struct segoff_s user_wait_complete_flag; - u32 user_wait_timeout; - // 40:A0 - u8 rtc_wait_flag; - u8 other_a1[7]; - struct segoff_s video_savetable; - u8 other_ac[4]; - // 40:B0 - u8 other_b0[9]; - u8 vbe_flag; - u16 vbe_mode; - u8 other_bc[4]; - // 40:C0 - u8 other_c0[4*16]; -} PACKED; - -// BDA floppy_recalibration_status bitdefs -#define FRS_IRQ (1<<7) - -// BDA rtc_wait_flag bitdefs -#define RWS_WAIT_PENDING (1<<0) -#define RWS_WAIT_ELAPSED (1<<7) - -// BDA floppy_media_state bitdefs -#define FMS_DRIVE_STATE_MASK (0x07) -#define FMS_MEDIA_DRIVE_ESTABLISHED (1<<4) -#define FMS_DOUBLE_STEPPING (1<<5) -#define FMS_DATA_RATE_MASK (0xc0) - -// Limit of BDA timer_counter field -#define TICKS_PER_DAY 1573040 - // Accessor functions #define GET_BDA(var) \ GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var) @@ -152,40 +48,6 @@ static inline void set_equipment_flags(u16 clear, u16 set) { * Extended Bios Data Area (EBDA) ****************************************************************/ -struct fdpt_s { - u16 cylinders; - u8 heads; - u8 a0h_signature; - u8 phys_sectors; - u16 precompensation; - u8 reserved; - u8 drive_control_byte; - u16 phys_cylinders; - u8 phys_heads; - u16 landing_zone; - u8 sectors; - u8 checksum; -} PACKED; - -struct extended_bios_data_area_s { - u8 size; - u8 reserved1[0x21]; - struct segoff_s far_call_pointer; - u8 mouse_flag1; - u8 mouse_flag2; - u8 mouse_data[0x08]; - // 0x30 - u8 other1[0x0d]; - - // 0x3d - struct fdpt_s fdpt[2]; - - // 0x5d - u8 other2[0xC4]; - - // 0x121 - Begin custom storage. -} PACKED; - // The initial size and location of EBDA #define EBDA_SIZE_START \ DIV_ROUND_UP(sizeof(struct extended_bios_data_area_s), 1024) @@ -269,19 +131,4 @@ extern u8 _zonelow_seg, zonelow_base[]; #define GET_LOWFLAT(var) GET_LOW(*LOWFLAT2LOW(&(var))) #define SET_LOWFLAT(var, val) SET_LOW(*LOWFLAT2LOW(&(var)), (val)) - -/**************************************************************** - * Bios Config Table - ****************************************************************/ - -struct bios_config_table_s { - u16 size; - u8 model; - u8 submodel; - u8 biosrev; - u8 feature1, feature2, feature3, feature4, feature5; -} PACKED; - -extern struct bios_config_table_s BIOS_CONFIG_TABLE __aligned(1); - #endif // __BIOSVAR_H -- cgit