Path: utzoo!mnetor!uunet!husc6!mailrus!nrl-cmf!ames!pioneer!pstevens From: pstevens@pioneer.arpa (Paul Stevens RCE Sterling) Newsgroups: comp.os.vms Subject: Re: Need help with VAX/VMS DMA data transfers Message-ID: <6252@ames.arpa> Date: 21 Mar 88 15:39:42 GMT References: <713@moogvax.UUCP> Sender: usenet@ames.arpa Reply-To: pstevens@pioneer.UUCP (Paul Stevens RCE Sterling) Distribution: na Organization: NASA Ames Research Center, Moffett Field, Calif. Lines: 26 Keywords: DMA, data acquisition, device driver Yes it is possible to do DMA without using a full fledged VMS device driver. However, it is far from easy and not really recommended. I know of one group here who successfully accomplished this using a DR11-W on a UNIBUS, unfortunately I do not have their source code. You are going to have to wade through the Writing a Device Driver under VMS manaual and come to terms with mapping registers etc. You might want to read the XADRIVER listing to get an idea of how a vanilla DMA driver works. The other indespensible resource will be the VMS fiche or source if your lucky enough to have it. Without this, and in the absence of some person on site who knows this stuff, it will be extremely difficult to do. Your code will have to: 1) Allocate mapping registers sufficient to transfer your largest block, or allocate them as you need to (refer to the IOC$ALOUBAMAP executive routine to see how VMS does this) 2) Load the mapping registers with the proper addresses for each DMA (the corresponding executive routine here is IOC$LOADUBAMAP) 3) Calculate the starting address to place into your device's address register (see XADRIVER for an example of how to do this on microVAX II machines) If you have some specific questions try me at PSTEVENS%EAR@io.arc.nasa.gov OR PSTEVENS%EAR@ames-io.ARPA