On Thu, 13 May 2004, tom ehlert wrote:
> when testing USB support for DOS
> with USBASPI.SYS and DI1000DD.SYS, the kernel simply crashed.
>
> the patch below helps.
>
> for unknown reasons, the temp_buff is required; using
> deblock_buff instead of temp_buff doesn't work.
that's very strange. I think using an extra 512 bytes of conv memory
unconditionally is quite a heavy price to pay so we really should see
about alternatives.
> + if (command == C_BLDBPB)
> + {
> + static char temp_buff[512];
> + MediaReqHdr._r_x._r_bpb._r_fat = (boot FAR *)&temp_buff;
> + }
Maybe there is a small possibility that you also used an & sign
for the deblock buf? Here that doesn't hurt but it's not necessary. For
deblock_buf it's wrong.
if (command == C_BLDBPB)
MediaReqHdr.r_bpfat = deblock_buf;
(note that macro -- it's simply there because C doesn't support anonymous
unions).
if that fails try to save/restore it, and if even that fails try to (say)
subtract 0x100 from the segment adding 0x1000 to the offset (you never
know with these drivers...), and else one can still (dirtiest
solution) steal DiskTransferBuffer from dsk.c...
Bart
-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel