On Fri, Dec 06, 2013 at 11:01:25AM +0100, Gelip wrote:
Still Disk I/O error: 07.178: Booting from Floppy... 07.198: enter handle_13: 07.198: a=00000201 b=00000000 c=00000001 d=00000000 ds=0000 es=07c0 ss=dd80 07.198: si=00000000 di=00000000 bp=00000000 sp=0000fae8 cs=f000 ip=c9a1 f=0202 07.198: disk_op d=0x000f4530 lba=0 buf=0x00007c00 count=1 cmd=2 07.198: check_recal_drive 0 07.198: floppy_drive_recal 0 07.198: handle_0e 07.198: floppy_pio 07.198: floppy_pio 07.198: handle_0e 07.198: floppy_pio 07.198: floppy_media_sense 0 ftype=4 07.198: floppy_drive_readid 0 rate=0 head=0 07.198: floppy_pio 07.513: handle_0e 07.513: floppy_media_sense finish 0 data_rate=0 fms=17 stype=4 07.514: floppy_pio 07.685: handle_0e 07.685: Booting from 0000:7c00 07.685: enter handle_13: 07.685: a=00000201 b=00000700 c=00000002 d=00000100 ds=0000 es=0000 ss=dd80 07.685: si=00007bd2 di=00000700 bp=00007c00 sp=0000fae8 cs=0000 ip=7d6e f=0002 07.684: disk_op d=0x000f4530 lba=19 buf=0x00000700 count=1 cmd=2 07.684: floppy_pio 07.850: handle_0e 07.850: enter handle_13: 07.850: a=00000201 b=00000700 c=00000010 d=00000100 ds=0000 es=0000 ss=dd80 07.850: si=00007bd2 di=00000002 bp=00007c00 sp=0000fae8 cs=0000 ip=7d6e f=0002 07.852: disk_op d=0x000f4530 lba=33 buf=0x00000700 count=1 cmd=2 07.852: floppy_pio 07.965: handle_0e 07.965: enter handle_13: 07.965: a=00000201 b=00000900 c=00000011 d=00000100 ds=0000 es=0000 ss=dd80 07.965: si=00007bd2 di=00000002 bp=00007c00 sp=0000fae8 cs=0000 ip=7d6e f=0006 07.965: disk_op d=0x000f4530 lba=34 buf=0x00000900 count=1 cmd=2 07.971: floppy_pio 08.133: handle_0e 08.133: enter handle_13: 08.133: a=00000201 b=00000b00 c=00000012 d=00000100 ds=0000 es=0000 ss=dd80 08.134: si=00007bd2 di=00000002 bp=00007c00 sp=0000fae8 cs=0000 ip=7d6e f=0006 08.136: disk_op d=0x000f4530 lba=35 buf=0x00000b00 count=1 cmd=2 08.136: floppy_pio 08.507: handle_0e 08.507: floppy error: 40 04 10 01 00 00 02 08.507: invalid basic_access:96: 08.507: a=00000200 b=00000b00 c=00000012 d=00000100 ds=0000 es=0000 ss=dd80 08.510: si=00007bd2 di=00000002 bp=00007c00 sp=0000fae8 cs=0000 ip=7d6e f=0006
Well, the good news is that the above indicates you've succesfully read 4 sectors from the floppy drive. The bad news is that it failed when it tried to read the fifth sector, and I don't know why it fails.
Have you verified that the floppy is not corrupt? If you boot the same machine to Linux can the same floppy be fully read from within Linux?
The floppy specs seem to indicate we should be sending a "specify" floppy command. You could give that a shot (see incremental patch below), but I think it's unlikely to resolve your issue.
-Kevin
--- seabios/src/hw/floppy.c-prev 2013-12-06 18:09:57.667850286 -0500 +++ seabios/src/hw/floppy.c 2013-12-06 18:10:07.215574848 -0500 @@ -322,8 +322,19 @@ if (ret) return ret;
- // send Recalibrate command (2 bytes) to controller + // send a Specify command to controller struct floppy_pio_s pio; + pio.cmdlen = 3; + pio.resplen = 0; + pio.waitirq = 0; + pio.data[0] = 0x03; + pio.data[1] = GET_GLOBAL(diskette_param_table2.dbt.specify1); + pio.data[2] = GET_GLOBAL(diskette_param_table2.dbt.specify2); + ret = floppy_pio(&pio); + if (ret) + return ret; + + // send Recalibrate command (2 bytes) to controller pio.cmdlen = 2; pio.resplen = 0; pio.waitirq = 1;