04 — Superimpose / CKSW bit

Popis

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.

Zápis (port 07CFH, bit 7)

Dekódování adresy

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.

Uložení do flip-flopu

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
);

Signálové cesty CKSW bitu

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)

Kombinace s NTPL (PAL/NTSC)

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).

4-bit čítač xF961_61_7

Čí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.

Výstup CKMS (pin 97)

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).

Čtení zpet (Status Register)

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.

Shrnutí

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.