You are a genius...

This floppy change problem has been around for some time because it is 
hard to reproduce. The steps 1 to 5 in problem 2 are all done from a 
single running program? If so it may be related to a problem I 
encontered a few times.

Thanks, very much
Alain


Koike Toshio escreveu:
> Hello FreeDOS developers.
> 
> We are using FreeDOS 1.0 in our embedded systems. FreeDOS is a good 
> replacement of ROM-DOS we previouslly used. Thank you for all the great work 
> on FreeDOS.
> 
> I found two small problems related to Floppy disk(FD) and fixed it by 
> modifying FreeDOS kernel sources(2036 cvs). I send patches to fix these 
> problems. My patches are applicable to kernel 2036 cvs.
> If you consider the patches and incorporate to your kernel tree, it should be 
> great for me.
> 
> The patches are uploaded here. 
> http://us.f13.yahoofs.com/bc/48b6f314_185bc/bc/freedos/patch080818.zip?bfh__vIBxIiwN9fQ
> 
> Two problems are:
> 
> Problem 1: Maxell new FD has No 55-aa magic number in boot sector.
> Problem 2: Floppy disk change recognition problem.
> 
> -------------------------------------------------------------------------------
> Problem 1: Maxell new FD has No 55-aa magic number in boot sector.
> 
> When we used Maxell FD, we encountered strange phenomena. We wrote files to 
> FD. 
> Write process was looking good. But there is no file in checking the FD on 
> Windows.
> After precise investigation, I found a lack of 55-aa magic number in the last 
> two bytes of the boot sector of Maxell FD. FreeDOS getbpb() function is 
> checking 55-aa magic number. If no 55-aa magic number, FreeDOS assumes the FD 
> as a 720KB(not 1440KB) FD.
> ---- Maxell FD boot sector dump (No 55-aa at 01feh) ----
> 00000000  eb 34 90 4d 41 58 45 4c  4c 20 20 00 02 01 01 00  |.4.MAXELL  .....|
> 00000010  02 e0 00 40 0b f0 09 00  12 00 02 00 00 00 00 00  |[EMAIL 
> PROTECTED]|
> 00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
> *
> 000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
> ---- TDK FD boot sector dump (There's 55-aa at 01feh) ----
> 00000000  eb 34 90 49 42 4d 20 20  33 2e 33 00 02 01 01 00  |.4.IBM  3.3.....|
> 00000010  02 e0 00 40 0b f0 09 00  12 00 02 00 00 00 00 00  |[EMAIL 
> PROTECTED]|
> 00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 12  |................|
> 00000030  00 00 00 00 01 00 fa 33  c0 8e d0 bc 00 7c 16 07  |.......3.....|..|
>    :
> 000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
> --------------------------------------------------
> ROM-DOS, PC-DOS and Windows has no problem with the Maxell FD. So I think 
> FreeDOS is too strict in checking boot sector format. Original FreeDOS 
> checks 55-aa magic number and sector size (=512). My patch disables checking 
> of 55-aa magic number and only checks sector size.
> 
> fdos-maxell-fd-patch-080818.diff modifies kernel/dsk.c.
> 
> -------------------------------------------------------------------------------
> Problem 2: Floppy disk change recognition problem.
> 
> When we write two FD on our application, the first FD's directory entries was 
> copied onto the second FD. This problem was not occurred on ROM-DOS and 
> PC-DOS.
> After precise investigation, I found that our application is calling BIOS 
> int-13h AH=02h(Sector read) before the second FD write.
> Test program DISKCHG.C demonstrates this problem through steps as follows.
>   1. insert disk-1
>   2. write A:FILE1 calling DOS
>   3. change FD to disk-2
>   4. read FD boot sector calling BIOS int-13h AH=02h
>   5. write A:FILE2 calling DOS
> Disk-2 directory entry contains two files FILE1 and FILE2.
> 
> Normally disk change is notified on calling BIOS int-13h AH=00h-05h,08h,
> 15h-18h. But disk change notification from BIOS is the ONLY ONCE. So on the 
> subsequent call of BIOS int-13h AH=16h(Detect disk change) from FreeDOS 
> kernel, no disk change will be notified and FD cache in kernel will NOT be 
> flushed. Then the first FD's directory data will be written into the second 
> FD.
> 
> My patch introduced int-13h hooking. Disk change status on calling int-13h 
> AH=00h-05h,08h,15h-18h is memorized and reported on the call of 
> fl_diskchanged().
> Perfect disk change recognition will be accomplished by the patch. Though I 
> have not examined other DOSs(PC-DOS, ROM-DOS), the same hooking may be used.
> 
> fdos-fd-change-patch-080818.diff modifies kernel/main.c and 
> drivers/floppy.asm.
> 
> -------------------------------------------------------------------------------
> 
> Please consider my patches.
> 
> Thanks for your reading. :-)
> 
> Toshio Koike
> 
> 
> ------------------------------------------------------------------------
> $B=)K\HV!*O"5Y$?$/$5$s$N$3$N=)!"$_$s$J$N%*%9%9%a=5KvN99T$r%A%'%C%/$7$h$&(B 
> $B!|[EMAIL PROTECTED]|K\A49q$I$3$X$G$b!d!d!d(B 
> <http://clk.atdmt.com/GBL/go/112813570/direct/01/>
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Freedos-kernel mailing list
> Freedos-kernel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freedos-kernel

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to