On Thu, Jul 29, 2021, 9:02 AM tom ehlert <t...@drivesnapshot.de> wrote:

> with the changes below the kernel no longer splits disk transfers
> on disks that report via int13/48  'DMA boundary errors are handled
> transparently'
>
> ...
>
>
> changes:
>
> *************************************************************************************
>
>
> device.h, 260
>
> #define DF_LBA        0x400
> #define DF_WRTVERIFY  0x800
>
> +#define DF_DMA_TRANSPARENT   0x1000 /* DMA boundary errors are handled
> transparently */
>
> /* typedef struct ddtstruct ddt;*/
>
>
>
> initdisk.c, 720
>
>   if (lba_bios_parameters.information & 8)
>     driveParam->descflags |= DF_WRTVERIFY;
>
> +  if (lba_bios_parameters.information & 1)
> +    {
> +    driveParam->descflags |= DF_DMA_TRANSPARENT;        /* DMA boundary
> errors are handled transparently */
> +    }
>
> StandardBios:                  /* old way to get parameters */
>
>
> dsk.c, 1035
>
>
>   for (; totaltodo != 0;)
>   {
>
> +    count = totaltodo;
> +    if ((pddt->ddt_descflags & DF_DMA_TRANSPARENT) == 0)
> +      {
> +                     /* avoid overflowing 64K DMA boundary
> +                        for drives that don't handle this transparently */
> +      count = DMA_max_transfer(buffer, totaltodo);
> +      }
>
> *************************************************************************************
>
>
> Tom
>

>

Thank you!
Jeremy
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to