Computing > Vintage Computing

RGB monitor signal generation questions (e.g. Commodore 1084)


Hello there.

I have a Commodore 1084 monitor now, a 1991 one but it still has RGBi also (for C128 / CGA), not as an extra jack, but switcheable.

Next to using it with retro hardware, I'd also like to tinker around with it (look at my name!).
As in, generate a signal.

I guess I will try the digital RGB one, as it seems simple. But I'd also like to try to generate analog RGB.
I'll list a few things I'm not sure about. (partially pertaining to both, digital and analog RGB)
And perhaps someone cares to point out mistakes or/and answer questions.

* Levels - RGBI:
So in the manual it says for RGBI it's TTL levels, I assume that means 0 vs. 5V. I guess 3V3 aren't enough?

* Levels - RGB:
It also says, for RGB analog, it is "0.7V P-P, 75 Ohm". Does that mean it expects +/- 0.35V, or 0...0.7V?
And since it's one jack and an easily wrongly selected switch between RGB(I) modes - can I safely assume that the RGB mode will not make the inputs die when I apply 5V instead of 0.7V?

* DAC - RGB:
I thought of making a R2R or weighted divider DAC with 4 GPIO lines per color channel, and since I don't have fast op-amps (~ 10 MHz ?) and don't want to exaggerate this tinker session & buy some expensive ones (and search for one actually in stock these days...):
Would it make sense to use an emitter follower with one NPN with a 75 Ohm emitter resistor, as a buffer, or similar?
It seems to *basically* work in LTspice (see attachment), although the switching looks glitchy, no idea how bad this really is.

* SYNC issues:
So my plan was to use a MCU to generate this whole thing, my go to thing, some STM32. (I don't plan to keep a whole frame stored, in case you wondered about memory)
Not an FPGA guy. As you may well have noticed I'm also not an EE but a software guy dabbling in them electrons.
Using the DMA, hammering into a 16bit GPIO register at 7.2 MHz for 600x200 @ 60Hz, I guess I should be able to get the speeds.
But how much time does, after one line, the HSYNC signal have to be down for the monitor to recognize it?
Similar for VSYNC, how long does it need to be?

* Interlacing:
The manual says, this monitor can do either 600x200, or 600x400 interlaced.
How does the monitor know that it should do interlacing, and where do I know from whether I should be outputting odd or even lines right now?

Ok, it feels like I forgot some things, but I'll add them latest after I stumbled upon them during attempted implementation ;)

Be aware that there are several slightly different models of the 1084, and the manual usually came with the schematics.

1) 3.3V should work (there are some 74LS at the input)
2) The video IC has a single rail supply and coupling caps at the inputs. So it should be 0 - 0.7V. For the maximum input voltage see the datasheet of the video IC.
3)I don't think the impedance is that important.
4) no idea
5) sync IC's datasheet?

2: DC level is unimportant, 0.7 Vpp is the specification for RGB
3: It's important, otherwise you risk blurred graphics.
4: HSync pulse length is 4.7 us. VSync is 5 lines.
5: Interlace vs. non-interlace is determined by your VSync. If you keep a constant VSync timing it's non-interlaced. If you shift the VSync pulse back-and-forth by half a line you'll get interlace.

Note that all sync timing is referred to the falling edges of the sync pulses (50% point). The length is not too important.


[0] Message Index

There was an error while thanking
Go to full version