<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Sun, 31 May 1981 (Sund:00ay) 1709-EDT
From   : PLATTS@WHARTON-10 (Steve Platt)
Subject: DMA address finding

 ... yes, I know the "default" DMA area is at 80h.  However, my situation
is roughly like this:  I have implemented the full IOBYTE (mostly with
the aid of a TDL SMB card), I have room for 2K worth of misc. routines
well above CPM.  My user printer device is (to be) a disk-spooler; it
has its own buffer -- it must keep this buffer separate from the transient's
IO buffers (remember, we are never sure what the transient will be
or what/how many DMA areas it may be switching among).  So when it comes
time for the spooler to write a buffer-full, it must save the old
DMA address, set DMA addr to the new buffer (its own), write, and then
reset the old DMA address.  If I could guarantee that all transients
obey the sequence "set dma(addr); write" whenever they went to write, there'd
be no problem.  But I cannot.
  It looks as if I'll stick with that which Ron Fowler suggested,
 
0005 jmp bdos
<bdos>  jmp wherever   ->   <bdos>  jmp mypat (above f800 somewhere)
<mypat> if code=setdma then mysavearea=newaddress
        jmp wherever
 
... aggh, patches and patches on patches...
 
Thanks to all who responded,
   -Steve
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>