Bit CKSW (Clock Switch) je bit 7 portů 07CFH. Přepíná vertikální frekvenci mezi 50 Hz a 60 Hz. V Service Manual MZ-800 strucne zminen jako "Superimpose" — v kontextu TV techniky to znamená prekryti pocitacoveho obrazu s externim video signálem.
Na MZ-800 se tato funkce běžně nepouzivala.
Port CF je dekodovan NAND branou na řádku 6174:
bus_CS_0nCF(7) <= NOT ( net_F102_9_4_out AND net_F101_6_9_out2
AND net_F304_8_10_in3 AND net_F101_9_9_out2 );
Adresové bity:
- net_F101_6_9_out2 = buffer i_AD(10) (řádek 6461)
- net_F304_8_10_in3 = buffer i_AD(9) (řádek 6318)
- net_F101_9_9_out2 = buffer i_AD(8) (řádek 6454)
Dekóduje AD[10:8] = 111 → port 07CFH.
Flip-flop xF615_17_16 (řádek 5229–5235):
xF615_17_16: F615_D_Type_Flip_Flop_Inv_Reset PORT MAP (
I => bus_DT(7),
CLK => bus_CS_0nCF(7),
nRES => net_F302_39_3_in1,
O => net_F961_61_7_in2,
nO => open
);
bus_DT(7) → xF615_17_16 (F615, radek 5229)
|
v
net_F961_61_7_in2 (CKSW bit)
|
├──► xF961_61_7 vstup I2 (radek 6604)
| 4-bit citac → bus_COLUMN(3:0)
| ↓
| bus_COLUMN(0) → xF612_131_7 (radek 6631)
| ↓
| o_CKMS (pin 97, radek 6620)
|
├──► XOR logika s i_NTPL (radky 6545–6548)
| → xF961_61_7 vstup I3
|
└──► bus_Status(2) = NOT(CKSW) (radek 6140)
CKSW se kombinuje s pinem NTPL přes XOR-like logiku:
-- radek 6548:
net_F100_88_7_in <= i_NTPL NAND net_F961_61_7_in2;
-- radek 6545:
net_F431_89_8_out <= NOT ( ( i_NTPL OR net_F961_61_7_in2 )
AND net_F100_88_7_in );
Rozklad: NOT((A OR B) AND NOT(A AND B)) = NOT(A XOR B) = XNOR
| NTPL | CKSW | net_F431_89_8_out (I3) | Význam |
|---|---|---|---|
| 0 (PAL) | 0 | 1 | PAL 50 Hz (výchozí) |
| 0 (PAL) | 1 | 0 | PAL 60 Hz |
| 1 (NTSC) | 0 | 0 | NTSC 50 Hz |
| 1 (NTSC) | 1 | 1 | NTSC 60 Hz (výchozí) |
Vstup I3 čítače dostane '1' když NTPL a CKSW jsou shodné (tj. "nativni" frekvence pro dany TV systém).
Čítač (řádek 6596–6610) generuje bus_COLUMN(3:0):
xF961_61_7: F961_4_bit_counter PORT MAP (
CLK0 => net_nCLK0_F2,
I0 => net_F961_61_7_in0,
I1 => net_F961_61_7_in1,
I2 => net_F961_61_7_in2, -- CKSW bit
I3 => net_F431_89_8_out, -- XNOR(NTPL, CKSW)
O0 => bus_COLUMN(0),
O1 => bus_COLUMN(1),
O2 => bus_COLUMN(2),
O3 => bus_COLUMN(3),
...
);
CKSW na vstupu I2 mění předvolbu čítače, což posouvá horizontální timing — pozorovatelny efekt je posunuti obrazu ~2 cm doleva.
CKMS (Character Clock) je odvozen z bus_COLUMN(0):
-- radek 6631–6637:
xF612_131_7: F612_D_Type_Flip_Flop_Reset PORT MAP (
I => bus_COLUMN(0),
CLK => net_nCLK0_F4,
RES => net_F612_131_7_rst,
O => open,
nO => net_F100_145_7_in
);
-- radek 6620:
o_CKMS <= NOT net_F100_145_7_in;
CKMS = bus_COLUMN(0) zpozden o pul CLK0 periody a invertovan. Frekvence CKMS = CLK0/16 = 1.108 MHz (při CKSW=0, PAL).
CKSW je citeny inverzne na bitu 2 status registru (port CEH):
-- radek 6140:
bus_Status(2) <= NOT net_F961_61_7_in2;
| CKSW | bus_Status(2) | Význam |
|---|---|---|
| 0 | 1 | 50 Hz (výchozí PAL) |
| 1 | 0 | 60 Hz |
Pozn.: Toto je inverzni logika — status bit 2 = 1 znamená 50 Hz.
CKSW bit ma tri efekty: 1. Horizontální timing — mění předvolbu COLUMN čítače, posouvá obraz 2. CKMS frekvence — ovlivňuje character clock na pinu 97 3. Vertikální frekvence — přepíná 50/60 Hz (v kombinací s NTPL)
V normalnim provozu MZ-800 (NTPL='0', CKSW='0'): PAL 50 Hz, CKMS = 1.108 MHz, standardní horizontální pozice.