Aucbvax.1462
fa.info-cpm
utzoo!duke!mhtsa!ucbvax!PLATTS@WHARTON-10
Sun May 31 14:25:38 1981
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




-----------------------------------------------------------------
gopher://quux.org/ conversion by John Goerzen <[email protected]>
of http://communication.ucsd.edu/A-News/


This Usenet Oldnews Archive
article may be copied and distributed freely, provided:

1. There is no money collected for the text(s) of the articles.

2. The following notice remains appended to each copy:

The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996
Bruce Jones, Henry Spencer, David Wiseman.