Myślę, że w większości klonów zastosowano uproszczenie, że z CPLD/ULA sygnał zegarowy będzie wprost podawany na wejście zegarowe Z80, a zegar na złączu krawędziowym będzie przez inwerte np. 74xx04. Ma to pewien sens, aby nie uszkodzić CPLD przez zewnętrzny interfejs, co przy układach SMD ma znaczenie. Niestety takie podejście skutkuje tym, że nie każda wersja Z80 działa poprawnie w samym klonie. Z80 (wszystkie wersje) są dość wymagające pod względem poziomów napięć oraz czasów narostu i opadania sygnału zegarowego. Dokumentacja Z80 (najlepiej f-my MOSTEK dla MK3880) dokładnie opisuje w jaki sposób powinien być formowany sygnał zegarowy. W samym ZX Spectrum (ZX81 i toastracku też) ULA podaje sygnał wprost na złącze krawędziowe, a zegar dla CPU przechodzi przez układ formujący na szybkim tranzystorze przełączającym (ZTX313). Oficjalne klony ZX Spectrum (czyt. Timexy) miały wyjścia zegarowe rozwiązane trochę inaczej, bliżej współczesnym klonom.
Tak na marginesie, sygnał zegarowy generowany przez ULA'e w toastracku jest kiepski, stąd jego "polepszacze" w różnych interfejsach.
Chcesz poprawić wyjście zegarowe z CPLD, to wylutuj pull-up do linii CPU_CLK, a zamiast niego zamontuj szeregowo połączony rezystor 220R i potencjometr precyzyjny 2k2. Metodą empiryczną dobierz taką wartość pull-upa, która będzie działała dla każdego typu procesora. Niestety takie rozwiązanie będzie półśrodkiem, ponieważ w zależności od typu zastosowanego procesora (NMOS/CMOS) zmienia się pojemność wejścia zegarowego (35pF dla NMOS i 15pF dla CMOS). Jeśli klon ma tryby turbo (x2, x4) sytuacja komplikuje się jeszcze bardziej, ponieważ czasy narostu i opadania sygnału zegarowego stają się jeszcze bardziej wyśrubowane wraz ze wzrostem prędkości zegara.