Date: Fri, 11 Nov 1994 10:15:09 -0600 (CST) From: ALAN L HIGHTOWER Subject: Re: Interrupts and DMA access To: john hoeschele Cc: mailing list , ece431 group -- edward mazorowicz , jim wailing , john miller On Fri, 11 Nov 1994, john hoeschele wrote: > I am doing a school project converting MASM code to ANSI C code to be > compiled with GNU C. The code controls a line scan camera and boards, > which are interrupt driven and use DMA in certain modes. There is an > EMM used in the code to access more memory. I don't know if this has come up before or if it already exist, i.e. I didn't dig real deep in doing my homework, but.. ;) I was thinking, providing there was enough interest, developing a macro convertor from (T/M)ASM -> as and vise-versa using maybe flex? The biggest turn off for djgpp that I've found for most, is the fact they lerned using tasm... IMHO a true waist considering it's native only to x86, but try telling others that. This would slow down a programs development cycle, but would at least attract tasm users to our cause.. ;) could also be used for Linux, or even other systems. TASM code on a SPARC? > The questions that I have are: > 1. Is there a way to do DMA using _dpmi_ functions, if so how do I > go about it and if not is there some other way?? I wish... anyone? Programming the dma controller is a pain. > 2. I have read that there is a problem using int86x() in gcc. Is > there some other function to get the interrupt vector and is there > one to simulate the interrupt service routine??? Yes, all of the _dpmi... functions, setting vectors, chaining vectors, simulating ints, allocating rm iret wrappers, etc, etc, etc.. > 3. Are there any functions to do Extended Memory Management in any > of the libraries??? Do I actually need it at all since gcc is a > 32 bit compiler?? You don't need'em. Go32 does a pretty good job of going through either VCPI or DMPI services to allocate all of the available memory. And flat addressing makes it nice if you want a 8 meg hunk'o'ram and don't want to have to chain 64K ems pages, just do a malloc().... Alan