Date : Thu, 29 Sep 1994 09:56:50 -0600
From : barnett@... (David Barnett)
Subject: Re: CRTC and ULA emulation
Chris Lam asks about the video proceesor.
Conceptually, the video circuitry is like a second specialized CPU which
independently accesses the same memory as the 6502. It should probably be
emulated as such. The video side communicates its timing information via
VSYNC.
Of course you are trying to do the emulation on a single CPU and so must
compromise by "stealing" time from the cpu emulator to build a screen
image.
Chris's approach is in the right direction. What you need is a map between
BBC screen memories (including shadow RAM on the Master) and the screen
representation of the host computer. When there is no funny business
(simple Mode 1 for example) the map will be a simply BBC character rows to
real screen. For Elite etc. the program timing and switching will build a
more complex map.
Since full mode changes are rare, it is probably not outrageous to rebuild
the map on a mode change. I haven't thought out the full scheme, but if
one could form a list of places where mode changes, as set by the video
register changes, one could identify when parts of the map need to be
rebuilt. Once a set of mode changes is stable (in case of Elite etc. doing
the same thing on each frame), no further changes in the map would be
needed.
David Barnett