8257 use in Intel MDS IOC
fulivi at tiscali.it
Mon May 4 03:18:10 CDT 2015
I've been doing some reverse engineering, too. Of the same exact version
of firmware you mention. I had to do it in order to build an accurate
model of IOC hw in MESS emulator.
Anyway, what I understood is that the firmware automatically adapts to
either 8237 or 8257. During initialization (@ address 0084) the IOC CPU
reads from register 0xfd. This register reads as 00 in case a 8237 is
installed (because it's a temporary register that gets reset to 00 at
initialization) or ff in case of 8257 (I understand the 8257 leaves the
bus floating for registers > 0xf8).
The two DMA chips mostly behave the same, apart from different
arrangement of registers. Where they do differ a lot is in the
"autoload" feature that is only available in 8257. Basically the DMA
channel 2 is loaded with data from channel 3 once channel 2 reaches
terminal count. In the IOC this feature is used to implement hw
scrolling of video because the framebuffer is split in two parts. The
second part is actually displayed first whereas the first part is
displayed just after the second. Scrolling of video is achieved by
simply moving down one row the starting point of second part. The trick
is to load channel 2 at raster interrupt with data for second part of
framebuffer and channel 3 with data for first part. The DMA hardware
automatically switches to supplying data for the first part once the
second one ends because of the autoload feature of 8257.
See page 4-5 of hardware reference manual (9800556-02).
But 8237 has no such feature. My understanding is that an hw
modification is needed to IOC board if 8237 is installed (see for
example the wiring around the DMA in this picture:
). This rewiring (for which I found no documentation) apparently allows
the 8237 to "emulate" the autoload feature of 8257.
More information about the cctalk