8

I'm trying to emulate an Amstrad CPC 464. I'm having trouble to understand how its Motorola MC6845 CRTC chip behaves on start-up. The boot ROM sets up the CRTC registers pretty early on, but if I assume all registers are 0 and just advance the internal counters as usual I get some strange behavior such as an immediate vertical sync.

So how does the actual CRTC behave when the system is started? I'm especially interested in the behaviour of hsync and vsync (though the data sheet says there is no hsync until register R2 is programmed).

One option that I can imagine, but have no way to confirm, is that the reset input RES of the CRTC is held active until all registers have been programmed. But that's just a wild guess.

1
  • What a great question! Good luck with the rest of your emulation. Commented Jun 29, 2021 at 9:07

1 Answer 1

9

The short answer is that the contents of the CRTC control registers are indeterminate after power-up, and that the CRTC will nevertheless operate according to their contents immediately after /RES is released. Only the counters are zeroed by /RES. Initialising the control registers to zero is reasonable for an emulator to do.

enter image description here

The important thing to consider is how the display reacts to a spurious sync signal followed by a normal one. A CRT would probably show a glitchy picture for the first few frames anyway, while the internal PLLs lock to the regular horizontal and vertical sync pulses. The presence of a brief spurious signal would not be very noticeable amongst that.

The CPC boot process must initialise the CRTC within the first few milliseconds for the purpose of DRAM refresh, which is comparable to one frame time.

1
  • 3
    Good Answer. The question made me realize I never really cared what an 6845 or alike does before initialization. It was simply undefined, the CRT had to cope with it anyway.
    – Raffzahn
    Commented Jun 27, 2021 at 19:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .