Mail Archives: djgpp/2017/08/18/08:00:09

X-Authentication-Warning: mail set sender to djgpp-bounces using -f
From: Rod Pemberton <NeedNotReplyHere AT xrsevnneqk DOT cem>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Can I use transferbuffer temporarly a for short DMA transfer?
Date: Fri, 18 Aug 2017 07:48:58 -0400
Organization: NNTP Server
Lines: 60
Message-ID: <on6k51$1a8k$>
References: <db10bd5c-9132-4be5-a496-757e648bf99a AT googlegroups DOT com>
NNTP-Posting-Host: ZTD62cW/
Mime-Version: 1.0
X-Complaints-To: abuse AT aioe DOT org
X-Notice: Filtered by postfilter v. 0.8.2
Bytes: 3045
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

On Fri, 18 Aug 2017 03:50:50 -0700 (PDT)
RayeR <glaux AT centrum DOT cz> wrote:

> I need to do one IDE busmaster DMA tranfer. For this purpose I need a
> 512+8B buffer in physical memory - I have to fill bussmaster PDRT IO
> register with physical address of buffer where I put PDR entry and
> data. So it seems to me the easiest way is to use __tb, where I can
> copy my structures and data via dosmemput and then start DMA transfer
> by writting to IO registers. 

You should be able to use dosmemput to write to any low memory buffer.

> But I don't know how long my data in
> transferbuffer? Is it shared for some DJGPP functions like if I do a
> printf or anything calling a DOS it may get overwritten? Or should I
> rather allocate dos memory block separately?


> The DMA buffer must fulfil 2 conditions: 
> 1) phys. address must be word aligned - probably OK, AFAIK dosmem is
> allocated in paragraphs 2) buffer cannot cross over 64kB boudary,
> e.g. FFF0h + size 512B is wrong, FE00h + size 512B is OK. Should I
> care about 2nd condition myself?


Some FAQ excerpts:

"[For DMA,] You can allocate a buffer in conventional memory using the
library function __dpmi_allocate_dos_memory."

"[The transfer] buffer is used for all DOS/BIOS services supported by
DJGPP, it resides in conventional memory, and is allocated by the
startup code."

"... the size of transfer buffer used by DJGPP (at least 2KB, 16KB by
default), ..."

"The size of the transfer buffer is customizable up to a maximum of 64
KB ..."

"If the size of the transfer buffer isn't enough, you will have to
allocate your own buffer in conventional memory with a call to the
__dpmi_allocate_dos_memory library function."

Rod Pemberton
Isn't anti-hate just hate by another name?  Isn't
anti-protesting just protesting by another name?
Peace is a choice that both sides rejected.

- Raw text -

  webmaster     delorie software   privacy  
  Copyright 2019   by DJ Delorie     Updated Jul 2019