On 5 Nov 2007 at 6:08, Steve Stutman wrote:
Nothing "(low)ly" about a Z80.
Please, you miss my point, which is that it's not the comm interface
on a PC that's the problem; it's the display--and that there are ways
to handle it so that it's not a problem.
Many PC display controllers have a 6845 sort of video controller with
shared access to local memory--and a register in the controller that
indicates where within video memory that display is to begin. When
the controller reaches the end of video RAM, it simply wraps around
to the beginning.
Most PC display software doesn't fool with the start address,
preferring to scroll by shifting all but one line's worth of bytes in
the display by one line. This is a very time-consuming job and
usually results in data loss if a steady stream of data with plenty
of linefeeds is encountered.
Instead of shifting the data, simply change the starting address in
the controller register. The only downside is that you must be aware
of the starting address--a location on the screen does not have a
static mapping to memory. But in the case of terminal software, this
is a small price to pay.
If a Z80-based terminal has to scroll by using LDIR's to shift lines
of characters and screen attributes, it will fall behind too--
regardless of the quality of its silicon implementation.
It's more of a problem on chipsets such as the Intel 8275 CRTC, where
refresh is accomplished by DMA requests through something like an
8257 DMA controller with common RAM shared by the processor. Unless
the designer has included "wraparound" addressing, scrolling becomes
a problem. It can be ameliorated somewhat by allocating a large
display buffer (2x-3x screen size) and moving the starting DMA
address to scroll. When the end of the buffer is about to be
reached, one can copy a screen's worth back to the start of the
display buffer. This can be spread over the time it takes to fill
the final end-of-buffer screen, but, but it's a lot more difficult to
manage well.
But then, I'd rather perform do-it-yourself root canals than use an
8275 CRC. What a piece of work.
Cheers,
Chuck