diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2012-11-26 11:14:00 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2012-11-26 11:14:00 -0500 |
commit | ef71989a37a54a04dc2b83651c8dc78df2004fdc (patch) | |
tree | da289d628fdab97cf39b8dab75a09a015c356f79 /src | |
parent | b1c35f2b28cc0c94ebed8176ff61ac0e0b377798 (diff) | |
download | seabios-hppa-ef71989a37a54a04dc2b83651c8dc78df2004fdc.zip seabios-hppa-ef71989a37a54a04dc2b83651c8dc78df2004fdc.tar.gz seabios-hppa-ef71989a37a54a04dc2b83651c8dc78df2004fdc.tar.bz2 |
floppy: Minor cleanup - reduce some cut-and-paste code.
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@koconnor.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/floppy.c | 22 | ||||
-rw-r--r-- | 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"); @@ -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 |