[SeaBIOS] [PATCH 1/2] floppy: Minor cleanup - reduce some cut-and-paste code.
Kevin O'Connor
kevin at koconnor.net
Mon Nov 26 17:21:27 CET 2012
The diskette_param_table is a copy of diskette_param_table2 - just
memcpy it at runtime instead of duplicating the configuration in the
code.
Also, setup the floppy interrupt vector in the floppy.c code instead
of the post.c code.
Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
---
src/floppy.c | 22 ++++++----------------
src/post.c | 2 --
2 files changed, 6 insertions(+), 18 deletions(-)
diff --git a/src/floppy.c b/src/floppy.c
index ce54d0c..3c8ae5a 100644
--- a/src/floppy.c
+++ b/src/floppy.c
@@ -47,22 +47,7 @@ struct floppy_ext_dbt_s diskette_param_table2 VAR16VISIBLE = {
.drive_type = 4, // drive type in cmos
};
-// Since no provisions are made for multiple drive types, most
-// values in this table are ignored. I set parameters for 1.44M
-// floppy here
-struct floppy_dbt_s diskette_param_table VAR16FIXED(0xefc7) = {
- .specify1 = 0xAF,
- .specify2 = 0x02,
- .shutoff_ticks = FLOPPY_MOTOR_TICKS,
- .bps_code = FLOPPY_SIZE_CODE,
- .sectors = 18,
- .interblock_len = FLOPPY_GAPLEN,
- .data_len = FLOPPY_DATALEN,
- .gap_len = FLOPPY_FORMAT_GAPLEN,
- .fill_byte = FLOPPY_FILLBYTE,
- .settle_time = 0x0F,
- .startup_time = 0x08,
-};
+struct floppy_dbt_s diskette_param_table VAR16FIXED(0xefc7);
struct floppyinfo_s {
struct chs_s chs;
@@ -131,6 +116,11 @@ addFloppy(int floppyid, int ftype)
void
floppy_setup(void)
{
+ memcpy(&diskette_param_table, &diskette_param_table2
+ , sizeof(diskette_param_table));
+ SET_IVT(0x1E, SEGOFF(SEG_BIOS
+ , (u32)&diskette_param_table2 - BUILD_BIOS_ADDR));
+
if (! CONFIG_FLOPPY)
return;
dprintf(3, "init floppy drives\n");
diff --git a/src/post.c b/src/post.c
index 0133f75..9a6dd3f 100644
--- a/src/post.c
+++ b/src/post.c
@@ -73,8 +73,6 @@ init_ivt(void)
// set vector 0x79 to zero
// this is used by 'gardian angel' protection system
SET_IVT(0x79, SEGOFF(0, 0));
-
- SET_IVT(0x1E, SEGOFF(SEG_BIOS, (u32)&diskette_param_table2 - BUILD_BIOS_ADDR));
}
static void
--
1.7.11.7
More information about the SeaBIOS
mailing list