Last modified on 22 April 2024, at 14:48

6 MHz CPC

The 6 MHz CPC is a DIY hardware modification which allows to run the CPC6128 with a CPU speed of 6 MHz instead of the usual 4 MHz.


Technic

The 16 MHz crystal of the CPC is replaced by a 24 MHz crystal. Both crystals should kept on the main board, but a switch (a DPDT type, switching both lines to both crystals is recommended) selects between them. Keep the wiring tidy and very short. You have to select the CPU and bus speed before you switch on the CPC. Switching the speed while the system is switched on is not advised. If you attempt this modification, it is at your own risk. None of the authors of this article can or will be held responsible for any damage to your CPC as a result of your DIY work.

Advantages

  • The whole computer runs 50% faster. Z80, Bus, RAM, CRTC run with 6 MHz, GateArray with 24MHz, Soundchip with 1.5MHz
  • FDC is 50% faster, Disc formats with 50% more sectors can be used after adjusting the DOS paramaters
  • Sound that is programmed specifically for a 6MHz CPC can sound better than on a 4MHz CPC
  • Games can run more fluid
  • Graphics are better, pixel are about 1/3 smaller in X
  • By adjusting the CRTC an higher frame rate can be used (75 Hz)

Disadvantages

  • Floppy disc controller also runs at 150% and can no longer read or write standard disc formats any longer
    • It is not possible to exchange discs with a 4MHz CPC.
    • a DOS must be used that allows to adjust disc parameters. Parados or CP/M are said to work. Unfortunately the parameters have never been documented or shared, so the values need to be figured out by anyone who tries the mod.
  • Not every hardware expansion is able to work with the 6 MHz bus speed. So also other options to load data and programs on a 6MHz CPC can become difficult.
  • Not all GateArrays will work with a 24MHz crystal
  • RAM should to be at least 160ns fast. Many CPCs only have 200ns RAM built-in. Replacing RAM requires to desolder the old RAM ICs.
  • Z80 might need being replaced by a 6MHz capable version. Pay attention to get a NMOS version of the Z80 as the CMOS version has different behavior for some undocumented but (rarely) used opcodes
  • Sound must be reprogrammed / patched. No patches are publicly available.
  • The horizontal timing of the CRTC is affected. In order to get a stable image, you need to program register 0 at 95 (96 characters line) and Register 2 at 61 (centering for 40 characters default)
  • Pixels are no longer square. Their pitch is 66.7% of their original pitch. Theses pictures show this fact (320×200 mode 1 pixels with black border)

Software

  • A lot of games run well with 6 MHz. For example: Nebulus, StarFox, Starstrike and others.
  • There is a 6 MHz version of FutureOS

Testing

  • Your CPC may work with the higher speed crystal if the rest of the system hardware is able to operate at this speed. You are more likely to be successful if the DRAM chips fitted to your machine are the higher speed versions (lower access time). Please refer to the relevant DRAM data sheet for details of the access time and on the type numbers and markings on the DRAM chips.
  • If any part of the hardware system is unable to properly function at the higher speed, likely symptoms of the hardware not being happy are failure to properly initialise to the start up screen. Or symptoms similar to a RAM fault.
  • This modification has been successful on some CPCs (manufactured with fast DRAMs) and verified with at least one CPC6128 produced in 1987.

Measurement of speed

  • The CPU will operate at an increased speed proportional to the increased frequency of the crystal.
  • With a 24 MHz crystal, the 4 MHz clock (CPU speed) should be 6 MHz. This is a 50% speed increase.
  • If your machine starts up okay, you can test the modification with this simple program :
10 i = 0
20 after 500 gosub 100
25 cls
30 i = i +1
40 ? i
50 goto 30
100 end

Score is 258 on normal CPC versus 301 when using a CPC fitted with a 24 MHz crystal.

(Theses results can be subject to discussion as we are not sure how interrupt timing is affected).