Of course I couldn't resist the bait, and did some testing, too. After
posting my suspicions considering the bootsector, I tried on my system
(containing a 16 bit c: and 32 bit d: partition each on a separate hdd) the
effects of altF2 (with a reload of course). When the first attempt in real
mode dos 7.10 failed as described, I disabled the d: drive and tried again.
Still no success, so I was on the verge of posting a erratum on the
bootsector hypothesis. But I already suspected the compression on my c:
drive might have to do with it, and since I can't undo this compression
I'll have to take the experiment to the office (where I already installed
Arachne for demonstration purposes, so I guess I'll just do that. Only
there's no win95 there, just 98 but if it's the 32 bit fs, it should be the
same.)
Another inconsequence regarding the bootsector theory is that mine is in
fact lilo, just pointing the heads to another partition, and that there's
only one in the system, not one on each drive. So in fact this should be
the rootdir or the FAT, acting up.

"All credits to Sri Krishna" (George Harrison)

BRB

At 09:21 23-12-02 +0100, you wrote:
>Hi Glenn, Hi all,
>
>On Thu, 19 Dec 2002 13:07:58 -0400, Glenn McCorkle wrote:
>
>> Have a look at the part of the SRC code for wwwman.exe
>> which then reads the info from there.
>
>> ---- drvtypes.cpp attached ---
>
>The problem is with INT 25h called when checking for Stacker;
>Win95 set SI to 0, so the stack pointer gets corrupted (MOV SP, SI).
>Then anything may happen, because CPU just jumps to a random address.
>
>From Ralf Brown's Interrupt List:
>
>--------D-25----CXFFFF-----------------------
>INT 25 - DOS 3.31+ - ABSOLUTE DISK READ (32M-2047M hard-disk partition)
>       CX = FFFFh
>       AL = drive number (0=A, 1=B, etc)
>       DS:BX -> disk read packet (see #02548)
>Return: CF clear if successful
>       CF set on error
>           AH = status (see #02547)
>           AL = error code (same as passed to INT 24 in DI)
>           AX = 0207h for FAT32 drive -- use INT 21/AX=7305h
>       may destroy all other registers except segment registers; Win9X always
>         sets SI to 0000h due to an apparent coding bug
>Notes: partition is potentially >32M (and requires this form of the call) if
>         bit 1 of the device attribute word in the device driver is set
>       original flags are left on stack, and must be removed by caller
>       this call bypasses the DOS filesystem
>       for FAT32 drives (which may be up to 2TB in size), use INT 21/AX=7305h
>SeeAlso: INT 13/AH=02h,INT 25,INT 26/CX=FFFFh,INT 21/AX=7305h
>
>Format of disk read packet:
>Offset Size    Description     (Table 02548)
> 00h   DWORD   sector number
> 04h   WORD    number of sectors to read
> 06h   DWORD   transfer address
>SeeAlso: #02552
>---------------------------------------------
>
>
>The simplest workaround is to remove the Stacker check at all.
>Or to add some code to preserve registers while calling INT 25h.
>And don't use SI to remember SP, just pop the flags after INT 25h.
>
>Merry Christmas to all list members!
>
>Michal
>
>
>

Reply via email to