The independence of these two problems strongly suggests that any
emulation should layer the display rendering into a "system-dependent"
part and a "display-dependent" part, so that users could select the
emulated display that they would like to "attach" to the system
emulator, and so that new "displays" could be easily emulated.
I agree 100%. The approach I'm taking is to generate everything in the
form of a monochrome 560x192 bit pattern. From there it can be copied
to the screen as-is for monochrome, or via some form of translation
(simple 4-bit rgb conversion, ntsc approximation, etc) The ntsc part
will wait, but I think I have a handle on the "convert to a 560x192 bit
pattern" part.