[comp.sys.ibm.pc.misc] HELP! 386 paging anyone?

ephram@violet.berkeley.edu (Ephram Cohen) (05/02/91)

I have a Phoenix V10.10a BIOS, on a Micronix 386/25 32/64K cache
motherboard.  I am part of an effort to use the extended memory
of the 386 (we have 4 Meg) for audio information.  The board
we have uses DMA to transfer data to the DAC's.  It all works
fine with memory below 640K.  However, when I move data up into
extended memory funny things happen.  Sometimes it will produce
the desired sound, other times nothing (probably 0's as opposed
to not working).  I called Micronix and they said that the 386
is using the paging option to seperate linear and physical addresses.
Since the DMA takes a physical address the BIOS move memory routine
does not now let me specify where my data is going to go (it takes
a linear address).  

What I need to know, and need to controll, is this Where is my data
going? 

I understand that I can not access any of the mapping registers
involved from V86 mode (The mode the machine uses for DOS).  I must
switch into protected mode to do it.  I think that I can do all of 
what I need to do by getting the CR3 register.  This will give me the
linear address of the paging table so I can do the address calculation
myself.  Did I miss something here?

Is there an easy way to switch the processor to Protected mode to access
this register?  Can I easily switch back to whatever mode the 386 should
be in to resume execution of the program?

I have looked in the Phoenix BIOS book published by Addison Wessley but 
there is no information on this subject.  Phoenix has been a week in 
answering my call.  

I would greatly appreciate any working code to get at the 386 registers.

Thanks 


1) will the BIOS (I have Phoenix V10.10A) switch me into 286 mode
  or 386 mode?  (int 15 func 89)  ?

2) How do I switch back?  I do not know what privelege level I am
  going to be at when the switch is made.

3) will the registers be preserved when I switch back?  can I ROR EAX,10H
  and expect that after the switch back AX will have the high 16 bits of
the EAX register?

4) Does anyone have some tech doc on the BIOS mentioned above?  I have
  called Phoenix but they are slow getting back to me.

The reason for all this is simple.  I have a DMA capable board and I
want to know what physical address I am placing data at.  The DMA needs
the _Physical_ address and if the linear address is re-mapped I am
USCWOAP.  I suspect that the paginf feature of the 386 _is_ used by
this BIOS.  How can I turn it off (I promise never, never to use 
relocated BIOS features...)?  Any help would be appreciated.

-- 
We must prevent those commies from compromising the integrity of our 
precious bodily fluids.      -Gen. Jack D. Ripper
Ephram Cohen                              ephram@violet.berkeley.edu
466 44th St.  #1                          3210 Tolman Hall