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.