<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Sat, 19 Oct 1985 15:51:43 CDT
From   : Paul Milazzo <milazzo@RICE.ARPA>
Subject: Re: Where's the DMA Address?

       "Now, sooner or later my interrupt routine is going to want
        to read a sector from the RAM-disk when an application
        program has set the DMA address to somewhere other than the
        default area."  - Peter Kendell <pete@stc.UUCP>

Worse yet, it might try to do so during the execution of another system
call.  In the case of CP/M 2.2 you can probably guard against this
eventuality simply by checking for saved PC >= base of BDOS.  For CP/M+
one would also have to test for BANK not equal to 1 (as well as assure
the interrupt service routine resides in common memory!).  Is there a
better way, anyone?

As for finding the DMA address, in CP/M+ it's kept in SCB+3C, but for
2.2 I'm not sure.  It is passed to BIOS function 12 (SETDMA), so if you
have BIOS source you can figure out where your BIOS saves it.  If not,
you might have to resort to disassembling BDOS function 26 (sigh...).

                               Paul G. Milazzo
                               Dept. of Computer Science
                               Rice University, Houston, TX

Domain:        milazzo@rice.EDU
ARPA:  milazzo@rice.ARPA
BITNET:        milazzo@rice-net, milazzo@ricecsvm
UUCP:  {cbosgd,convex,cornell,hp-pcd,shell,sun,ut-sally,waltz}!rice!milazzo
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>