On 1/13/2013 5:16 PM, Richard wrote:
In article <50F33642.5070405 at gmail.com>,
Josh Dersch <derschjo at gmail.com> writes:
he standard RS232 port.
Cool. And I misspoke -- the QRGB-GRAPH does
support DMA, so it might be
fast enough for DOOM after all :).
See
<http://bitsavers.trailing-edge.com/pdf/aed/AED_1024/990024-01B_Model_1024_Color_Graphics_Terminal_User's_Manual.pdf>
However, DMA != memory-mapped.
Sure, never meant to imply that the two were equal, just that it had an
interface significantly faster than manually pushing each pixel.
Memory-mapped means the pixel changes as soon as I diddle the bits and
the next refresh cycle comes around. Memory-mapped means the CPU can
determine the contents of a pixel by reading a memory location.
DMA means a chunk of host memory can be transmitted to the device
while the CPU is doing some other task. The AED 512/617/1024 can
interface to a host machine by means of a parallel interface with DMA
capability. While this is certainly faster than using a serial
interface and an ASCII command stream, it is by no means as fast as a
memory-mapped display. There is no abaility for the AED to send data
back to the host over the DMA interface, it is unidirectional. The
above PDF says the bandwidth is 3 MB/s across the DMA interface.
At 800x600 256 color VGA mode, refreshed at 30 Hz, DOOM uses:
800*600*30/1024/1024 = 13 MB/sec
I believe DOOM actually goes at 60 Hz, not 30, so it's even worse.
However, 30 Hz is generally considered the minimum for interactive
real-time graphics.
I think the original DOOM was limited to 35fps no matter what.
Assuming using the maximum 3 MB/sec bandwidth of the AED and 4 bits/pixel
instead of 8, gives you enough bandwidth to do 512x384 (4:3 aspect ratio).
The AED actually stores 8bpp, so I'd have to dig further into the docs
to see if you could transmit 4bpp and have it locally expand that to
8; you probably can with some downloaded microcode (i.e. 6502 assembly
language). That's a calculation based purely on the DMA speed listed
in the document, you'd have to do an actual end-to-end analysis to see
how fast you could update the AEd from a Qbus PDP-11; the DMA transfer
rate may not be the limiting factor.
I'd expect any implementation to run in a postcard-sized area (much like
you'd do with Doom on a 386sx-16 back in the day). Pushing an 800x600
display wasn't something I'd even considered, and I don't think I'd ever
expect such a beast to run at anywhere near 30fps (much like the 386).
A 256x256 window at 8bpp at 15fps is ~1mb/sec. That's still a fair
amount of time just spent pushing pixels, though so it's probably still
not feasible.
- Josh