Okay peope, I started my FAT16 driver. It actually does nothing yet but
hey, looks nice! ;)

As I explained, the driver is installed in a own RAM segment, and is
executed via #F252 hook. Actions given then by the driver are the following:

- Read boot sector of the specified drive.
- Build a new DPB with the readed data (with own routine, not with disk ROm
routine #4016), and check the FAT type.
- If disk is FAT12, set a "function call not executed flag", and return
with unmodified registers. Then DOS will execute the function call.
- If disk is FAT16, set new DPB in the work area and execute new code for
the function call.
- Set a "function call executed flag" and return to the user program.

Of course I don't mentioned the slot+segment switching stuff! 8-) More
details with the driver itself, when I release it. If someone knows a
better procedure please say!!

The problem I have is the lack of information about DOS 2. This means
problems in the following points amongst others:

1) File handles

Problem: I don't know exactly the format of the information for a used FH
into the DOS data segment, and where to place this information for a new FH.

Solution: I'll use my own format and put this information in my own
segment. I'll use FH numbers starting at 64 for avoid conflicts with FH
used by DOS.

2) Sector buffers

Problem: I have information about where they are placed and about its
format, but incomplete. I don't know the exact procedure and methods for
using it.

Solution: I'll use my own sector buffers in my RAM segment.

3) Disk error handling

Hum very delicate question I think...

I know that there is a routine in page 3 that shows the error message and
the "abort, retry (ignore)" question in the screen, and waits for the user
key pressing. The address of this routine is given by double indirection in
#F323, and the parameters are:

Input: A = Drive number
        A�= Error code
        C = Flags:
        bit 0 = 1 if writing
        bit 1 = 1 if autoabort (just show error message, no questions to the user)
        bit 2 = 1 if don't show "ignore" option
        bit 3 = 1 if DE contains valid data
        DE = Sector number

Output: 0 = Ignore
         1 = Retry
         2 = Abort

Besides, function call #64 enables the user to define its own error
handling routine.

Then I suppose that it is enough to do the following when a disk error occurs:

- Check if user defined error handling routine is defined, and execute it.
- Else, execute routine defined by #F323.
- Act according to the output parameter.

And my question is: is this enough? No other routines must be called or
system variables must be modified??

By the way I send my partition listing and changing programs for MegaSCSI.
I need that someone having more than one MegaSCSI and more than one device
test it (I have only one MegaSCSI with a ZIP drive).

Hasta incluso!

parlist.com

parset.com


----------------------------------------------------------------------------=
-
        Konami Man - AKA Nestor Soriano (^ ^)v - Itsumo MSX user

        http://www.geocities.com/SiliconValley/Bay/9797/msx.htm
            [EMAIL PROTECTED]        ICQ#: 18281450

    "In Windows 98, 3.000 found failures of W95 have been corrected..."
Translation: 3.000.000 not found failures continue without being=
 corrected...
----------------------------------------------------------------------------
-

Reply via email to