Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
/// plait_noparse
#include "GateBoyLib/Sch_Channel1.h"
#if 0
//-----------------------------------------------------------------------------
// This file should contain the schematics as directly translated to C,
// no modifications or simplifications.
void Channel1_tick(const Pins& pins,
const Gameboy& a,
const Gameboy& b,
const ClkSignals& dff20,
Gameboy& next) {
//----------
// FF10 NR10
{
/*_p09.AGUR*/ wire RESETn = not1(b.apu.APU_RESET1);
/*_p10.DUPO*/ wire ADDR_0000an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x0xx, b.apu.ADDR_xx0x, b.apu.ADDR_xxx0);
/*_p10.DYVA*/ wire ADDR_FF10 = nor4(b.apu.ADDR_FF1Xn, ADDR_0000an);
/*_p11.BUZE*/ wire ADDR_FF10n = not1(ADDR_FF10);
/*_p10.BAFU*/ wire CPU_WRn = not1(b.ctl.TAPU_CPUWR);
/*_p10.BOGY*/ wire APU_WR = not1(CPU_WRn);
/*_p11.CENU*/ next.ch1.NR10_CLK = and2(APU_WR, ADDR_FF10);
/*_p11.BANY*/ next.ch1.NR10_SHIFT0 = tock_pos(a.ch1.NR10_CLK, b.ch1.NR10_CLK, RESETn, b.ch1.NR10_SHIFT0, b.bus.TS_D0());
/*_p11.ARAX*/ next.ch1.NR10_SHIFT1 = tock_pos(a.ch1.NR10_CLK, b.ch1.NR10_CLK, RESETn, b.ch1.NR10_SHIFT1, b.bus.TS_D1());
/*_p11.ANAZ*/ next.ch1.NR10_SHIFT2 = tock_pos(a.ch1.NR10_CLK, b.ch1.NR10_CLK, RESETn, b.ch1.NR10_SHIFT2, b.bus.TS_D2());
/*_p11.AVAF*/ next.ch1.NR10_SWEEP_DIR = tock_pos(a.ch1.NR10_CLK, b.ch1.NR10_CLK, RESETn, b.ch1.NR10_SWEEP_DIR, b.bus.TS_D3());
/*_p11.ADEK*/ next.ch1.NR10_DELAY0 = tock_pos(a.ch1.NR10_CLK, b.ch1.NR10_CLK, RESETn, b.ch1.NR10_DELAY0, b.bus.TS_D4());
/*_p11.BANA*/ next.ch1.NR10_DELAY1 = tock_pos(a.ch1.NR10_CLK, b.ch1.NR10_CLK, RESETn, b.ch1.NR10_DELAY1, b.bus.TS_D5());
/*_p11.BOTU*/ next.ch1.NR10_DELAY2 = tock_pos(a.ch1.NR10_CLK, b.ch1.NR10_CLK, RESETn, b.ch1.NR10_DELAY2, b.bus.TS_D6());
/*_p09.AGUZ*/ wire CPU_RDn = not1(b.ctl.TEDO_CPURD);
/*_p11.ATYN*/ wire NR10_RDn = nor4(CPU_RDn, ADDR_FF10n);
/*_p11.ASOP*/ wire NR10_RD = not1(NR10_RDn);
if (NR10_RD) next.bus.set_data(
/*_p11.AMYD*/ b.ch1.NR10_SHIFT0,
/*_p11.ATAX*/ b.ch1.NR10_SHIFT1,
/*_p11.AZYP*/ b.ch1.NR10_SHIFT2,
/*_p11.AFOX*/ b.ch1.NR10_SWEEP_DIR,
/*_p11.AVEK*/ b.ch1.NR10_DELAY0,
/*_p11.AKUX*/ b.ch1.NR10_DELAY1,
/*_p11.AWOS*/ b.ch1.NR10_DELAY2
);
}
//----------
// FF11 NR11
{
/*_p11.CEPO*/ wire RESET1n = not1(b.apu.APU_RESET1);
/*_p10.DUNO*/ wire ADDR_0001an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x0xx, b.apu.ADDR_xx0x, b.apu.ADDR_xxx1);
/*_p10.CAXE*/ wire ADDR_FF11 = nor4(b.apu.ADDR_FF1Xn, ADDR_0001an);
/*_p10.BAFU*/ wire CPU_WRn = not1(b.ctl.TAPU_CPUWR);
/*_p10.BOGY*/ wire APU_WR = not1(CPU_WRn);
/*_p09.AGUZ*/ wire CPU_RDn = not1(b.ctl.TEDO_CPURD);
/*_p11.BUWA*/ wire CPU_RDa = not1(CPU_RDn);
/*_p11.BEXU*/ wire NR11_RD = nor4(ADDR_FF11, CPU_RDa); // polarity?
/*_p11.COVU*/ wire NR11_WR = and2(ADDR_FF11, APU_WR);
/*_p11.DAFO*/ next.ch1.NR11_CLK = not1(NR11_WR);
/*_p11.CENA*/ next.ch1.NR11_DUTY_0 = tock_pos(a.ch1.NR11_CLK, b.ch1.NR11_CLK, RESET1n, b.ch1.NR11_DUTY_0, b.bus.TS_D0());
/*_p11.DYCA*/ next.ch1.NR11_DUTY_1 = tock_pos(a.ch1.NR11_CLK, b.ch1.NR11_CLK, RESET1n, b.ch1.NR11_DUTY_1, b.bus.TS_D1());
if (NR11_RD) next.bus.set_data(
/*_p11.BOWO*/ b.ch1.NR11_DUTY_0,
/*_p11.CUDA*/ b.ch1.NR11_DUTY_1
);
}
//----------
// FF12 NR12
{
/*_p10.DAMY*/ wire ADDR_0010an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x0xx, b.apu.ADDR_xx1x, b.apu.ADDR_xxx0);
/*_p10.EDAF*/ wire ADDR_FF12 = nor4(b.apu.ADDR_FF1Xn, ADDR_0010an);
/*_p10.BAFU*/ wire CPU_WRn = not1(b.ctl.TAPU_CPUWR);
/*_p10.BOGY*/ wire APU_WR = not1(CPU_WRn);
/*_p11.HATO*/ wire NR12_RSTn = not1(b.apu.APU_RESET1);
/*_p11.KYGY*/ next.ch1.NR12_CLKa = not1(/*_p11.HAFU*/ and2(APU_WR, ADDR_FF12));
/*_p11.GAXU*/ next.ch1.NR12_CLKb = nand2(APU_WR, ADDR_FF12);
/*_p11.JUSA*/ next.ch1.NR12_DELAY0 = tock_pos(a.ch1.NR12_CLKa, b.ch1.NR12_CLKa, NR12_RSTn, b.ch1.NR12_DELAY0, b.bus.TS_D0());
/*_p11.JUZY*/ next.ch1.NR12_DELAY1 = tock_pos(a.ch1.NR12_CLKa, b.ch1.NR12_CLKa, NR12_RSTn, b.ch1.NR12_DELAY1, b.bus.TS_D1());
/*_p11.JOMA*/ next.ch1.NR12_DELAY2 = tock_pos(a.ch1.NR12_CLKa, b.ch1.NR12_CLKa, NR12_RSTn, b.ch1.NR12_DELAY2, b.bus.TS_D2());
/*_p11.JAFY*/ next.ch1.NR12_ENV_DIR = tock_pos(a.ch1.NR12_CLKb, b.ch1.NR12_CLKb, NR12_RSTn, b.ch1.NR12_ENV_DIR, b.bus.TS_D3());
/*_p11.JATY*/ next.ch1.NR12_VOL0 = tock_pos(a.ch1.NR12_CLKb, b.ch1.NR12_CLKb, NR12_RSTn, b.ch1.NR12_VOL0, b.bus.TS_D4());
/*_p11.JAXO*/ next.ch1.NR12_VOL1 = tock_pos(a.ch1.NR12_CLKb, b.ch1.NR12_CLKb, NR12_RSTn, b.ch1.NR12_VOL1, b.bus.TS_D5());
/*_p11.JENA*/ next.ch1.NR12_VOL2 = tock_pos(a.ch1.NR12_CLKb, b.ch1.NR12_CLKb, NR12_RSTn, b.ch1.NR12_VOL2, b.bus.TS_D6());
/*_p11.JOPU*/ next.ch1.NR12_VOL3 = tock_pos(a.ch1.NR12_CLKb, b.ch1.NR12_CLKb, NR12_RSTn, b.ch1.NR12_VOL3, b.bus.TS_D7());
/*_p09.AGUZ*/ wire CPU_RDn = not1(b.ctl.TEDO_CPURD);
/*_p11.HAXE*/ wire ADDR_FF12n = not1(ADDR_FF12);
/*_p11.GAGO*/ wire ADDR_FF12o = not1(ADDR_FF12);
/*_p11.HAMY*/ wire NR12_RDn = or2(ADDR_FF12n, CPU_RDn); // polarity?
/*_p11.HOCU*/ wire NR12_RDo = or2(ADDR_FF12o, CPU_RDn);
if (!NR12_RDn) next.bus.set_data(
/*_p11.JYNE*/ b.ch1.NR12_DELAY0,
/*_p11.JACA*/ b.ch1.NR12_DELAY1,
/*_p11.JOKU*/ b.ch1.NR12_DELAY2,
/*_p11.HONO*/ b.ch1.NR12_ENV_DIR,
/*_p11.HOWU*/ b.ch1.NR12_VOL0,
/*_p11.HEWA*/ b.ch1.NR12_VOL1,
/*_p11.HEVE*/ b.ch1.NR12_VOL2,
/*_p11.JYSE*/ b.ch1.NR12_VOL3
);
/*_p13.HOCA*/ next.ch1.CH1_AMP_ENn = nor4(b.ch1.NR12_ENV_DIR, b.ch1.NR12_VOL0, b.ch1.NR12_VOL1, b.ch1.NR12_VOL2, b.ch1.NR12_VOL3);
}
//----------
// Frequency can be read from FF13/FF14 in debug mode
{
/*_p10.ETUF*/ wire ADDR_0011an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x0xx, b.apu.ADDR_xx1x, b.apu.ADDR_xxx1);
/*_p10.DECO*/ wire ADDR_FF13 = nor4(b.apu.ADDR_FF1Xn, ADDR_0011an);
/*_p10.ESOT*/ wire ADDR_0100an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x1xx, b.apu.ADDR_xx0x, b.apu.ADDR_xxx0);
/*_p10.DUJA*/ wire ADDR_FF14 = nor4(b.apu.ADDR_FF1Xn, ADDR_0100an);
/*_p11.CACA*/ wire ADDR_FF13n = not1(ADDR_FF13);
/*_p11.CURE*/ wire ADDR_FF14n = not1(ADDR_FF14);
/*_p09.AGUZ*/ wire CPU_RDn = not1(b.ctl.TEDO_CPURD);
/*_p11.CEGE*/ wire CPU_RDb = not1(CPU_RDn);
/*_p11.DAXA*/ wire CPU_RDnb = nand2(CPU_RDb, b.apu.NR52_DBG_APU);
/*_p11.DYPU*/ wire FF13_RDn = nor4(CPU_RDnb, ADDR_FF13n);
/*_p11.EVAJ*/ wire FF13_RDa = not1(FF13_RDn);
/*_p11.DUPY*/ wire FF14_RDa = or2(CPU_RDnb, ADDR_FF14n); // polarity?
if (FF13_RDa) next.bus.set_data(
/*_p11.FORU*/ b.ch1.FREQ_CNT_00,
/*_p11.GEFU*/ b.ch1.FREQ_CNT_01,
/*_p11.KYVU*/ b.ch1.FREQ_CNT_02,
/*_p11.KUMO*/ b.ch1.FREQ_CNT_03,
/*_p11.KARY*/ b.ch1.FREQ_CNT_04,
/*_p11.GODE*/ b.ch1.FREQ_CNT_05,
/*_p11.GOJE*/ b.ch1.FREQ_CNT_06,
/*_p11.FOZE*/ b.ch1.FREQ_CNT_07
);
if (FF14_RDa) next.bus.set_data(
/*_p11.DOPA*/ b.ch1.FREQ_CNT_08,
/*_p11.DEMU*/ b.ch1.FREQ_CNT_09,
/*_p11.DEXO*/ b.ch1.FREQ_CNT_10
);
}
//----------
// FF14 NR14
{
/*_p10.ESOT*/ wire ADDR_0100an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x1xx, b.apu.ADDR_xx0x, b.apu.ADDR_xxx0);
/*_p10.DUJA*/ wire ADDR_FF14 = nor4(b.apu.ADDR_FF1Xn, ADDR_0100an);
/*_p11.CAMY*/ wire NR14_RSTa = not1(b.apu.APU_RESET1);
/*_p13.DADO*/ wire NR14_RSTb = nor4(b.apu.APU_RESET1, b.ch1.START);
#if 0
NR14_CLKa = nand2(b.cpu.SIG_CPU_HOLD_MEM, TAPU_CPU_WRp_xxxxEFGx, ADDR_FF14);
next.ch1.NR14_STOP = tock_pos(a.ch1.NR14_CLKa, b.ch1.NR14_CLKa, NR14_RSTa, b.ch1.NR14_STOP, b.bus.TS_D6());
#endif
/*_p10.BAFU*/ wire CPU_WRn = not1(b.ctl.TAPU_CPU_WRp_xxxxEFGx);
/*_p10.BOGY*/ wire APU_WR = not1(CPU_WRn);
/*_p16.ANUJ*/ wire CPU_WR_WEIRD = and2(b.cpu.SIG_CPU_HOLD_MEM, APU_WR);
/*_p11.BAGE*/ next.ch1.NR14_CLKa = nand2(CPU_WR_WEIRD, ADDR_FF14);
/*_p11.BOKO*/ next.ch1.NR14_STOP = tock_pos(a.ch1.NR14_CLKa, b.ch1.NR14_CLKa, NR14_RSTa, b.ch1.NR14_STOP, b.bus.TS_D6());
/*_p13.DOGE*/ next.ch1.FF14_WRnb = nand2(APU_WR, ADDR_FF14);
/*_p13.DUPE*/ next.ch1.NR14_START = tock_pos(a.ch1.FF14_WRnb, b.ch1.FF14_WRnb, NR14_RSTb, b.ch1.NR14_START, b.bus.TS_D7());
/*_p11.BUDA*/ wire CPU_RDo = not1(b.ctl.TEDO_CPURD);
/*_p11.BALE*/ wire NR14_RD = nand2(CPU_RDo, ADDR_FF14);
if (NR14_RD) next.bus.set_data(
0,
0,
0,
0,
0,
0,
/*_p11.BYTU*/ b.ch1.NR14_STOP
);
}
//----------
// Sweep timer
{
wire aCLK_2M = a.apu.AJER_2M;
wire bCLK_2M = b.apu.AJER_2M;
/*_p09.ATYV*/ wire RESETo = not1(b.apu.APU_RESET1);
/*_p09.BAZA*/ next.ch1.DBG_SWEEP_CLK = tock_pos(aCLK_2M, bCLK_2M, RESETo, b.ch1.DBG_SWEEP_CLK, b.apu.NR52_DBG_SWEEP);
wire bCLK_256 = b.apu.CLK_256a;
wire bCLK_128 = b.apu.CLK_128a;
/*_p09.CATE*/ next.ch1.SWEEP_DELAY_CLK = not1(/*_p09.CONE*/ not1(/*_p09.CELY*/ mux2(b.ch1.DBG_SWEEP_CLK, bCLK_128, b.apu.NR52_DBG_APU)));
/*_p13.CYMU*/ wire SWEEP_DELAY_RSTn = not1(/*_p13.DAFA*/ nor4(b.ch1.SWEEP_TRIGGER, b.ch1.RESTART0));
/*_p13.CUPO*/ next.ch1.SWEEP_DELAY0 = count_pos(a.ch1.SWEEP_DELAY_CLK, b.ch1.SWEEP_DELAY_CLK, SWEEP_DELAY_RSTn, b.ch1.SWEEP_DELAY0, b.ch1.NR10_DELAY0);
/*_p13.CYPU*/ next.ch1.SWEEP_DELAY1 = count_pos(a.ch1.SWEEP_DELAY0, b.ch1.SWEEP_DELAY0, SWEEP_DELAY_RSTn, b.ch1.SWEEP_DELAY1, b.ch1.NR10_DELAY1);
/*_p13.CAXY*/ next.ch1.SWEEP_DELAY2 = count_pos(a.ch1.SWEEP_DELAY1, b.ch1.SWEEP_DELAY1, SWEEP_DELAY_RSTn, b.ch1.SWEEP_DELAY2, b.ch1.NR10_DELAY2);
/*_p13.BAVE*/ wire NR10_NO_SWEEP = and2(b.ch1.NR10_DELAY0, b.ch1.NR10_DELAY1, b.ch1.NR10_DELAY2); // polarity
/*_p13.BURY*/ wire SWEEP_TRIGGER_RSTn = nor4(NR10_NO_SWEEP, b.apu.APU_RESET1);
/*_p13.COZE*/ wire SWEEP_MAX = and2(b.ch1.SWEEP_DELAY0, b.ch1.SWEEP_DELAY1, b.ch1.SWEEP_DELAY2);
/*_p13.BEXA*/ next.ch1.SWEEP_TRIGGER = tock_pos(aCLK_2M, bCLK_2M, SWEEP_TRIGGER_RSTn, b.ch1.SWEEP_TRIGGER, SWEEP_MAX);
}
//----------
// Frequency summer
{
/*_p13.KABA*/ wire SUMMER_RST = or2(b.apu.APU_RESET1, b.ch1.RESTART0);
/*_p13.KYLY*/ wire SUMMER_RSTn = not1(SUMMER_RST);
/*_p12.ARYL*/ wire NR10_SWEEP_DIRn = not1(b.ch1.NR10_SWEEP_DIR);
/*_p12.GYLO*/ wire SHIFTER_FLIP_00 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_00);
/*_p12.GELA*/ wire SHIFTER_FLIP_01 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_01);
/*_p12.GOPO*/ wire SHIFTER_FLIP_02 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_02);
/*_p12.HEFY*/ wire SHIFTER_FLIP_03 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_03);
/*_p12.KEFE*/ wire SHIFTER_FLIP_04 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_04);
/*_p12.GOLY*/ wire SHIFTER_FLIP_05 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_05);
/*_p12.FURE*/ wire SHIFTER_FLIP_06 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_06);
/*_p12.DYME*/ wire SHIFTER_FLIP_07 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_07);
/*_p12.CALE*/ wire SHIFTER_FLIP_08 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_08);
/*_p12.DOZY*/ wire SHIFTER_FLIP_09 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_09);
/*_p12.CULU*/ wire SHIFTER_FLIP_10 = xor(NR10_SWEEP_DIRn, b.ch1.SHIFTER_10);
/*_p13.ADAD*/ next.ch1.SHIFT_DONE_SYNCn = not1(!b.ch1.SHIFT_DONE_SYNC);
/*_p12.GALO*/ next.ch1.SUM_A00 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A00, b.ch1.SUMMER00);
/*_p12.JODE*/ next.ch1.SUM_A01 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A01, b.ch1.SUMMER01);
/*_p12.KARE*/ next.ch1.SUM_A02 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A02, b.ch1.SUMMER02);
/*_p12.JYME*/ next.ch1.SUM_A03 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A03, b.ch1.SUMMER03);
/*_p12.GYME*/ next.ch1.SUM_A04 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A04, b.ch1.SUMMER04);
/*_p12.FAXO*/ next.ch1.SUM_A05 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A05, b.ch1.SUMMER05);
/*_p12.EXAP*/ next.ch1.SUM_A06 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A06, b.ch1.SUMMER06);
/*_p12.DELE*/ next.ch1.SUM_A07 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A07, b.ch1.SUMMER07);
/*_p12.DEXE*/ next.ch1.SUM_A08 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A08, b.ch1.SUMMER08);
/*_p12.DOFY*/ next.ch1.SUM_A09 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A09, b.ch1.SUMMER09);
/*_p12.DOLY*/ next.ch1.SUM_A10 = tock_pos(a.ch1.SHIFT_DONE_SYNCn, a.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_A10, b.ch1.SUMMER10);
/*_p12.HORA*/ next.ch1.SUM_B00 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B00, SHIFTER_FLIP_00);
/*_p12.HOPA*/ next.ch1.SUM_B01 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B01, SHIFTER_FLIP_01);
/*_p12.HELE*/ next.ch1.SUM_B02 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B02, SHIFTER_FLIP_02);
/*_p12.JAPE*/ next.ch1.SUM_B03 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B03, SHIFTER_FLIP_03);
/*_p12.JETE*/ next.ch1.SUM_B04 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B04, SHIFTER_FLIP_04);
/*_p12.GELE*/ next.ch1.SUM_B05 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B05, SHIFTER_FLIP_05);
/*_p12.EPYR*/ next.ch1.SUM_B06 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B06, SHIFTER_FLIP_06);
/*_p12.EDOK*/ next.ch1.SUM_B07 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B07, SHIFTER_FLIP_07);
/*_p12.DEFA*/ next.ch1.SUM_B08 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B08, SHIFTER_FLIP_08);
/*_p12.ETER*/ next.ch1.SUM_B09 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B09, SHIFTER_FLIP_09);
/*_p12.DEVA*/ next.ch1.SUM_B10 = tock_pos(b.ch1.SHIFT_DONE_SYNCn, b.ch1.SHIFT_DONE_SYNCn, SUMMER_RSTn, b.ch1.SUM_B10, SHIFTER_FLIP_10);
/*_p12.GUXA*/ wire SUMMER00_C = add_c(!b.ch1.SUM_A00, !b.ch1.SUM_B00, NR10_SWEEP_DIRn);
/*_p12.HALU*/ wire SUMMER01_C = add_c(!b.ch1.SUM_A01, !b.ch1.SUM_B01, SUMMER00_C);
/*_p12.JULE*/ wire SUMMER02_C = add_c(!b.ch1.SUM_A02, !b.ch1.SUM_B02, SUMMER01_C);
/*_p12.JORY*/ wire SUMMER03_C = add_c(!b.ch1.SUM_A03, !b.ch1.SUM_B03, SUMMER02_C);
/*_p12.HEXO*/ wire SUMMER04_C = add_c(!b.ch1.SUM_A04, !b.ch1.SUM_B04, SUMMER03_C);
/*_p12.GEVA*/ wire SUMMER05_C = add_c(!b.ch1.SUM_A05, !b.ch1.SUM_B05, SUMMER04_C);
/*_p12.FEGO*/ wire SUMMER06_C = add_c(!b.ch1.SUM_A06, !b.ch1.SUM_B06, SUMMER05_C);
/*_p12.ETEK*/ wire SUMMER07_C = add_c(!b.ch1.SUM_A07, !b.ch1.SUM_B07, SUMMER06_C);
/*_p12.DYXE*/ wire SUMMER08_C = add_c(!b.ch1.SUM_A08, !b.ch1.SUM_B08, SUMMER07_C);
/*_p12.DULE*/ wire SUMMER09_C = add_c(!b.ch1.SUM_A09, !b.ch1.SUM_B09, SUMMER08_C);
/*_p12.CORU*/ wire SUMMER10_C = add_c(!b.ch1.SUM_A10, !b.ch1.SUM_B10, SUMMER09_C);
/*_p12.GUXA*/ wire SUMMER00_S = add_s(!b.ch1.SUM_A00, !b.ch1.SUM_B00, NR10_SWEEP_DIRn);
/*_p12.HALU*/ wire SUMMER01_S = add_s(!b.ch1.SUM_A01, !b.ch1.SUM_B01, SUMMER00_C);
/*_p12.JULE*/ wire SUMMER02_S = add_s(!b.ch1.SUM_A02, !b.ch1.SUM_B02, SUMMER01_C);
/*_p12.JORY*/ wire SUMMER03_S = add_s(!b.ch1.SUM_A03, !b.ch1.SUM_B03, SUMMER02_C);
/*_p12.HEXO*/ wire SUMMER04_S = add_s(!b.ch1.SUM_A04, !b.ch1.SUM_B04, SUMMER03_C);
/*_p12.GEVA*/ wire SUMMER05_S = add_s(!b.ch1.SUM_A05, !b.ch1.SUM_B05, SUMMER04_C);
/*_p12.FEGO*/ wire SUMMER06_S = add_s(!b.ch1.SUM_A06, !b.ch1.SUM_B06, SUMMER05_C);
/*_p12.ETEK*/ wire SUMMER07_S = add_s(!b.ch1.SUM_A07, !b.ch1.SUM_B07, SUMMER06_C);
/*_p12.DYXE*/ wire SUMMER08_S = add_s(!b.ch1.SUM_A08, !b.ch1.SUM_B08, SUMMER07_C);
/*_p12.DULE*/ wire SUMMER09_S = add_s(!b.ch1.SUM_A09, !b.ch1.SUM_B09, SUMMER08_C);
/*_p12.CORU*/ wire SUMMER10_S = add_s(!b.ch1.SUM_A10, !b.ch1.SUM_B10, SUMMER09_C);
/*_p12.ATYS*/ next.ch1.FREQ_OVERFLOW = or2(/*_p12.BYLE*/ nor4(NR10_SWEEP_DIRn, SUMMER10_C), NR10_SWEEP_DIRn); // polarity
/*_p10.ETUF*/ wire ADDR_0011an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x0xx, b.apu.ADDR_xx1x, b.apu.ADDR_xxx1);
/*_p10.DECO*/ wire ADDR_FF13 = nor4(b.apu.ADDR_FF1Xn, ADDR_0011an);
/*_p10.ESOT*/ wire ADDR_0100an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x1xx, b.apu.ADDR_xx0x, b.apu.ADDR_xxx0);
/*_p10.DUJA*/ wire ADDR_FF14 = nor4(b.apu.ADDR_FF1Xn, ADDR_0100an);
/*_p10.BAFU*/ wire CPU_WRn = not1(b.ctl.TAPU_CPUWR);
/*_p10.BOGY*/ wire APU_WR = not1(CPU_WRn);
/*_p12.DEBY*/ wire FREQ_WRb = and2(APU_WR, ADDR_FF14); // polarity?
/*_p12.DYLA*/ wire FREQ_WRc = not1(/*_p12.DEPU*/ nand2(APU_WR, ADDR_FF13)); // polarity?
/*_p12.GYLU*/ wire SUMMER00_SET = nand2(FREQ_WRc, b.bus.TS_D0());
/*_p12.GETA*/ wire SUMMER01_SET = nand2(FREQ_WRc, b.bus.TS_D1());
/*_p12.GOLO*/ wire SUMMER02_SET = nand2(FREQ_WRc, b.bus.TS_D2());
/*_p12.GOPE*/ wire SUMMER03_SET = nand2(FREQ_WRc, b.bus.TS_D3());
/*_p12.KOVU*/ wire SUMMER04_SET = nand2(FREQ_WRc, b.bus.TS_D4());
/*_p12.KYPA*/ wire SUMMER05_SET = nand2(FREQ_WRc, b.bus.TS_D5());
/*_p12.ELER*/ wire SUMMER06_SET = nand2(FREQ_WRc, b.bus.TS_D6());
/*_p12.ETOL*/ wire SUMMER07_SET = nand2(FREQ_WRc, b.bus.TS_D7());
/*_p12.BUGU*/ wire SUMMER08_SET = nand2(FREQ_WRb, b.bus.TS_D0());
/*_p12.BUDO*/ wire SUMMER09_SET = nand2(FREQ_WRb, b.bus.TS_D1());
/*_p12.AFEG*/ wire SUMMER10_SET = nand2(FREQ_WRb, b.bus.TS_D2());
/*_p12.EFOR*/ wire SUMMER00_RST = nor4(b.apu.APU_RESET1, /*_p12.EJYF*/ and2(FREQ_WRc, /*_p12.DEKE*/ not1(b.bus.TS_D0())));
/*_p12.GATO*/ wire SUMMER01_RST = nor4(b.apu.APU_RESET1, /*_p12.FOPU*/ and2(FREQ_WRc, /*_p12.GULU*/ not1(b.bus.TS_D1())));
/*_p12.GYFU*/ wire SUMMER02_RST = nor4(b.apu.APU_RESET1, /*_p12.FOKE*/ and2(FREQ_WRc, /*_p12.FULE*/ not1(b.bus.TS_D2())));
/*_p12.GAMO*/ wire SUMMER03_RST = nor4(b.apu.APU_RESET1, /*_p12.FEGA*/ and2(FREQ_WRc, /*_p12.ETUV*/ not1(b.bus.TS_D3())));
/*_p12.KAPO*/ wire SUMMER04_RST = nor4(b.apu.APU_RESET1, /*_p12.KAVO*/ and2(FREQ_WRc, /*_p12.KOPU*/ not1(b.bus.TS_D4())));
/*_p12.KAJU*/ wire SUMMER05_RST = nor4(b.apu.APU_RESET1, /*_p12.KYFU*/ and2(FREQ_WRc, /*_p12.JULO*/ not1(b.bus.TS_D5())));
/*_p12.ELUF*/ wire SUMMER06_RST = nor4(b.apu.APU_RESET1, /*_p12.ETOK*/ and2(FREQ_WRc, /*_p12.DYLU*/ not1(b.bus.TS_D6())));
/*_p12.ESEL*/ wire SUMMER07_RST = nor4(b.apu.APU_RESET1, /*_p12.EMAR*/ and2(FREQ_WRc, /*_p12.DULO*/ not1(b.bus.TS_D7())));
/*_p12.BOXU*/ wire SUMMER08_RST = nor4(b.apu.APU_RESET1, /*_p12.BASO*/ and2(FREQ_WRb, /*_p12.BYSU*/ not1(b.bus.TS_D0())));
/*_p12.BOVU*/ wire SUMMER09_RST = nor4(b.apu.APU_RESET1, /*_p12.AMAC*/ and2(FREQ_WRb, /*_p12.BOFU*/ not1(b.bus.TS_D1())));
/*_p12.APAJ*/ wire SUMMER10_RST = nor4(b.apu.APU_RESET1, /*_p12.AJUX*/ and2(FREQ_WRb, /*_p12.BYFU*/ not1(b.bus.TS_D2())));
/*_p13.BOJE*/ wire SUMMER_CLKa = and2(b.ch1.SHIFTER_EN, /*_p13.ATUV*/ and2(b.ch1.SWEEP_TRIGGER, b.ch1.FREQ_OVERFLOW));
/*_p13.BUSO*/ wire SUMMER_CLKb = or2(b.ch1.SHIFTER_EN, b.ch1.FREQ_OVERFLOW, b.ch1.SWEEP_TRIGGER);
/*_p12.HYKA*/ next.ch1.SUMMER00 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER00_SET, SUMMER00_RST, b.ch1.SUMMER00, SUMMER00_S);
/*_p12.JYKA*/ next.ch1.SUMMER01 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER01_SET, SUMMER01_RST, b.ch1.SUMMER01, SUMMER01_S);
/*_p12.HAVO*/ next.ch1.SUMMER02 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER02_SET, SUMMER02_RST, b.ch1.SUMMER02, SUMMER02_S);
/*_p12.EDUL*/ next.ch1.SUMMER03 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER03_SET, SUMMER03_RST, b.ch1.SUMMER03, SUMMER03_S);
/*_p12.FELY*/ next.ch1.SUMMER04 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER04_SET, SUMMER04_RST, b.ch1.SUMMER04, SUMMER04_S);
/*_p12.HOLU*/ next.ch1.SUMMER05 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER05_SET, SUMMER05_RST, b.ch1.SUMMER05, SUMMER05_S);
/*_p12.HYXU*/ next.ch1.SUMMER06 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER06_SET, SUMMER06_RST, b.ch1.SUMMER06, SUMMER06_S);
/*_p12.HOPO*/ next.ch1.SUMMER07 = srtock_pos(SUMMER_CLKa, SUMMER_CLKa, SUMMER07_SET, SUMMER07_RST, b.ch1.SUMMER07, SUMMER07_S);
/*_p12.DYGY*/ next.ch1.SUMMER08 = srtock_pos(SUMMER_CLKb, SUMMER_CLKb, SUMMER08_SET, SUMMER08_RST, b.ch1.SUMMER08, SUMMER08_S);
/*_p12.EVAB*/ next.ch1.SUMMER09 = srtock_pos(SUMMER_CLKb, SUMMER_CLKb, SUMMER09_SET, SUMMER09_RST, b.ch1.SUMMER09, SUMMER09_S);
/*_p12.AXAN*/ next.ch1.SUMMER10 = srtock_pos(SUMMER_CLKb, SUMMER_CLKb, SUMMER10_SET, SUMMER10_RST, b.ch1.SUMMER10, SUMMER10_S);
}
//----------
// Frequency shifter
{
/*_p13.BUGE*/ next.ch1.SHIFTER_EN = nand2(!b.ch1.NR10_SHIFT0, !b.ch1.NR10_SHIFT1, !b.ch1.NR10_SHIFT2);
/*_p13.EPUK*/ wire EPUK = nor4(b.ch1.SHIFT_DONE_SYNC, b.apu.APU_RESET1);
/*_p13.EVOL*/ wire EVOL = nor4(b.ch1.SWEEP_TRIGGER, b.ch1.RESTART2);
/*_p13.FEMU*/ wire FEMU = or2(EPUK, EVOL);
/*_p13.EGYP*/ wire EGYP = nor4(b.ch1.RESTART_CLKn, FEMU); // wat
/*_p13.DODY*/ wire DODY = nor4(EGYP, /*_p13.CELE*/ not1(b.ch1.SHIFTER_EN));
/*_p13.EGOR*/ next.ch1.SHIFTER_CLKn = and2(b.ch4.NR41_LEN3b, DODY); // wat?
/*_p12.EJYB*/ next.ch1.SHIFTER_CLKo = not1(/*_p12.FAJA*/ not1(b.ch1.SHIFTER_CLKn));
/*_p12.BECY*/ next.ch1.SHIFTER_CLKp = not1(/*_p12.CYBE*/ not1(b.ch1.SHIFTER_CLKo));
/*_p13.DACU*/ next.ch1.SHIFTER_CNT_LDn = nor4(b.ch1.RESTART0, b.ch1.SWEEP_TRIGGER);
/*_p13.DAPU*/ next.ch1.SHIFTER_CNT_CLK = not1(b.ch1.SHIFTER_CLKn);
/*_p13.CYLU*/ next.ch1.SHIFTER_CNT_LD = not1(b.ch1.SHIFTER_CNT_LDn);
/*_p13.COPA*/ next.ch1.SHIFTER_CNT0 = count_pos(a.ch1.SHIFTER_CNT_CLK, b.ch1.SHIFTER_CNT_CLK, b.ch1.SHIFTER_CNT_LD, b.ch1.SHIFTER_CNT0, !b.ch1.NR10_SHIFT0);
/*_p13.CAJA*/ next.ch1.SHIFTER_CNT1 = count_pos(a.ch1.SHIFTER_CNT0, b.ch1.SHIFTER_CNT0, b.ch1.SHIFTER_CNT_LD, b.ch1.SHIFTER_CNT1, !b.ch1.NR10_SHIFT1);
/*_p13.BYRA*/ next.ch1.SHIFTER_CNT2 = count_pos(a.ch1.SHIFTER_CNT1, b.ch1.SHIFTER_CNT1, b.ch1.SHIFTER_CNT_LD, b.ch1.SHIFTER_CNT2, !b.ch1.NR10_SHIFT2);
/*_p13.ATAT*/ next.ch1.SHIFT_DONE_SYNC_RST = nor4(b.apu.APU_RESET1, b.ch1.SWEEP_TRIGGER);
/*_p13.BYTE*/ next.ch1.SHIFT_DONE_SYNC = tock_pos(a.apu.AJER_2M, b.apu.AJER_2M,
b.ch1.SHIFT_DONE_SYNC_RST,
b.ch1.SHIFT_DONE_SYNC,
/*_p13.COPY*/ and2(b.ch1.SHIFTER_CNT0, b.ch1.SHIFTER_CNT1, b.ch1.SHIFTER_CNT2));
}
{
/*_p13.KALA*/ wire SHIFTER_LOAD = nor4(b.ch1.SWEEP_TRIGGER, b.ch1.RESTART0);
/*_p12.KAPE*/ wire SHIFTER_LOADn = not1(SHIFTER_LOAD);
/*_p12.JUJU*/ wire SHIFTER_LOADo = not1(SHIFTER_LOAD);
/*_p12.KEDO*/ wire SHIFTER_LOADp = not1(SHIFTER_LOAD);
/*_p12.JUTA*/ wire SUMMER00n = not1(b.ch1.SUMMER00);
/*_p12.HOXE*/ wire SUMMER01n = not1(b.ch1.SUMMER01);
/*_p12.HUNY*/ wire SUMMER02n = not1(b.ch1.SUMMER02);
/*_p12.KEKE*/ wire SUMMER03n = not1(b.ch1.SUMMER03);
/*_p12.KOVO*/ wire SUMMER04n = not1(b.ch1.SUMMER04);
/*_p12.FOHY*/ wire SUMMER05n = not1(b.ch1.SUMMER05);
/*_p12.DEBO*/ wire SUMMER06n = not1(b.ch1.SUMMER06);
/*_p12.CYKY*/ wire SUMMER07n = not1(b.ch1.SUMMER07);
/*_p12.BYRU*/ wire SUMMER08n = not1(b.ch1.SUMMER08);
/*_p12.APAT*/ wire SUMMER09n = not1(b.ch1.SUMMER09);
/*_p12.BOJO*/ wire SUMMER10n = not1(b.ch1.SUMMER10);
/*_p12.KOKO*/ wire KOKO = and2(SUMMER00n, SHIFTER_LOADn);
/*_p12.JOCY*/ wire JOCY = and2(SUMMER01n, SHIFTER_LOADn);
/*_p12.JEHY*/ wire JEHY = and2(SUMMER02n, SHIFTER_LOADn);
/*_p12.KAXY*/ wire KAXY = and2(SUMMER03n, SHIFTER_LOADo);
/*_p12.KEVY*/ wire KEVY = and2(SUMMER04n, SHIFTER_LOADo);
/*_p12.EVOF*/ wire EVOF = and2(SUMMER05n, SHIFTER_LOADo);
/*_p12.EREG*/ wire EREG = and2(SUMMER06n, SHIFTER_LOADo);
/*_p12.BAPU*/ wire BAPU = and2(SUMMER07n, SHIFTER_LOADp);
/*_p12.AFUG*/ wire AFUG = and2(SUMMER08n, SHIFTER_LOADp);
/*_p12.BUVO*/ wire BUVO = and2(SUMMER09n, SHIFTER_LOADp);
/*_p12.AFYR*/ wire AFYR = and2(SUMMER10n, SHIFTER_LOADp);
/*_p12.HOZU*/ wire SHIFTER_SET_00 = nand2(b.ch1.SUMMER00, SHIFTER_LOADn);
/*_p12.HOLA*/ wire SHIFTER_SET_01 = nand2(b.ch1.SUMMER01, SHIFTER_LOADn);
/*_p12.HAWY*/ wire SHIFTER_SET_02 = nand2(b.ch1.SUMMER02, SHIFTER_LOADn);
/*_p12.KYRY*/ wire SHIFTER_SET_03 = nand2(b.ch1.SUMMER03, SHIFTER_LOADo);
/*_p12.KOLA*/ wire SHIFTER_SET_04 = nand2(b.ch1.SUMMER04, SHIFTER_LOADo);
/*_p12.GOVO*/ wire SHIFTER_SET_05 = nand2(b.ch1.SUMMER05, SHIFTER_LOADo);
/*_p12.EKEM*/ wire SHIFTER_SET_06 = nand2(b.ch1.SUMMER06, SHIFTER_LOADo);
/*_p12.DACE*/ wire SHIFTER_SET_07 = nand2(b.ch1.SUMMER07, SHIFTER_LOADp);
/*_p12.BEGE*/ wire SHIFTER_SET_08 = nand2(b.ch1.SUMMER08, SHIFTER_LOADp);
/*_p12.BESO*/ wire SHIFTER_SET_09 = nand2(b.ch1.SUMMER09, SHIFTER_LOADp);
/*_p12.BEJU*/ wire SHIFTER_SET_10 = nand2(b.ch1.SUMMER10, SHIFTER_LOADp);
/*_p12.JADO*/ wire SHIFTER_RST_00 = nor4(b.apu.APU_RESET1, KOKO);
/*_p12.HOBU*/ wire SHIFTER_RST_01 = nor4(b.apu.APU_RESET1, JOCY);
/*_p12.HYVU*/ wire SHIFTER_RST_02 = nor4(b.apu.APU_RESET1, JEHY);
/*_p12.KETO*/ wire SHIFTER_RST_03 = nor4(b.apu.APU_RESET1, KAXY);
/*_p12.KYBO*/ wire SHIFTER_RST_04 = nor4(b.apu.APU_RESET1, KEVY);
/*_p12.EZUK*/ wire SHIFTER_RST_05 = nor4(b.apu.APU_RESET1, EVOF);
/*_p12.ENOK*/ wire SHIFTER_RST_06 = nor4(b.apu.APU_RESET1, EREG);
/*_p12.BEWO*/ wire SHIFTER_RST_07 = nor4(b.apu.APU_RESET1, BAPU);
/*_p12.AGOR*/ wire SHIFTER_RST_08 = nor4(b.apu.APU_RESET1, AFUG);
/*_p12.AFUX*/ wire SHIFTER_RST_09 = nor4(b.apu.APU_RESET1, BUVO);
/*_p12.AVUF*/ wire SHIFTER_RST_10 = nor4(b.apu.APU_RESET1, AFYR);
/*_p12.FABU*/ next.ch1.SHIFTER_00 = srtock_pos(b.ch1.SHIFTER_CLKn, b.ch1.SHIFTER_CLKn, SHIFTER_SET_00, SHIFTER_RST_00, b.ch1.SHIFTER_00, b.ch1.SHIFTER_01);
/*_p12.JEFA*/ next.ch1.SHIFTER_01 = srtock_pos(b.ch1.SHIFTER_CLKn, b.ch1.SHIFTER_CLKn, SHIFTER_SET_01, SHIFTER_RST_01, b.ch1.SHIFTER_01, b.ch1.SHIFTER_02);
/*_p12.GOGA*/ next.ch1.SHIFTER_02 = srtock_pos(b.ch1.SHIFTER_CLKn, b.ch1.SHIFTER_CLKn, SHIFTER_SET_02, SHIFTER_RST_02, b.ch1.SHIFTER_02, b.ch1.SHIFTER_03);
/*_p12.JOLU*/ next.ch1.SHIFTER_03 = srtock_pos(a.ch1.SHIFTER_CLKo, b.ch1.SHIFTER_CLKo, SHIFTER_SET_03, SHIFTER_RST_03, b.ch1.SHIFTER_03, b.ch1.SHIFTER_04);
/*_p12.JOTA*/ next.ch1.SHIFTER_04 = srtock_pos(a.ch1.SHIFTER_CLKo, b.ch1.SHIFTER_CLKo, SHIFTER_SET_04, SHIFTER_RST_04, b.ch1.SHIFTER_04, b.ch1.SHIFTER_05);
/*_p12.FUDE*/ next.ch1.SHIFTER_05 = srtock_pos(a.ch1.SHIFTER_CLKo, b.ch1.SHIFTER_CLKo, SHIFTER_SET_05, SHIFTER_RST_05, b.ch1.SHIFTER_05, b.ch1.SHIFTER_06);
/*_p12.FEDO*/ next.ch1.SHIFTER_06 = srtock_pos(a.ch1.SHIFTER_CLKo, b.ch1.SHIFTER_CLKo, SHIFTER_SET_06, SHIFTER_RST_06, b.ch1.SHIFTER_06, b.ch1.SHIFTER_07);
/*_p12.EXAC*/ next.ch1.SHIFTER_07 = srtock_pos(a.ch1.SHIFTER_CLKp, b.ch1.SHIFTER_CLKp, SHIFTER_SET_07, SHIFTER_RST_07, b.ch1.SHIFTER_07, b.ch1.SHIFTER_08);
/*_p12.ELUX*/ next.ch1.SHIFTER_08 = srtock_pos(a.ch1.SHIFTER_CLKp, b.ch1.SHIFTER_CLKp, SHIFTER_SET_08, SHIFTER_RST_08, b.ch1.SHIFTER_08, b.ch1.SHIFTER_09);
/*_p12.AGEZ*/ next.ch1.SHIFTER_09 = srtock_pos(a.ch1.SHIFTER_CLKp, b.ch1.SHIFTER_CLKp, SHIFTER_SET_09, SHIFTER_RST_09, b.ch1.SHIFTER_09, b.ch1.SHIFTER_10);
/*_p12.BEKU*/ next.ch1.SHIFTER_10 = srtock_pos(a.ch1.SHIFTER_CLKp, b.ch1.SHIFTER_CLKp, SHIFTER_SET_10, SHIFTER_RST_10, b.ch1.SHIFTER_10, top.GND);
}
//----------
// Length timer
{
/*_p10.DUNO*/ wire ADDR_0001an = nand2(b.apu.ADDR_0xxx, b.apu.ADDR_x0xx, b.apu.ADDR_xx0x, b.apu.ADDR_xxx1);
/*_p10.CAXE*/ wire ADDR_FF11 = nor4(b.apu.ADDR_FF1Xn, ADDR_0001an);
/*_p10.BAFU*/ wire CPU_WRn = not1(b.ctl.TAPU_CPUWR);
/*_p10.BOGY*/ wire APU_WR = not1(CPU_WRn);
wire bCLK_256 = b.apu.CLK_256a;
wire bCLK_128 = b.apu.CLK_128a;
/*_p13.BACY*/ next.ch1.NR11_LEN0 = count_pos(a.ch1.CH1_LEN_CLK, b.ch1.CH1_LEN_CLK, b.ch1.FF11_WRc, b.ch1.NR11_LEN0, b.bus.TS_D0());
/*_p13.CAVY*/ next.ch1.NR11_LEN1 = count_pos(a.ch1.NR11_LEN0, b.ch1.NR11_LEN0, b.ch1.FF11_WRc, b.ch1.NR11_LEN1, b.bus.TS_D1());
/*_p13.BOVY*/ next.ch1.NR11_LEN2 = count_pos(a.ch1.NR11_LEN1, b.ch1.NR11_LEN1, b.ch1.FF11_WRc, b.ch1.NR11_LEN2, b.bus.TS_D2());
/*_p13.CUNO*/ next.ch1.NR11_LEN3 = count_pos(a.ch1.NR11_LEN2, b.ch1.NR11_LEN2, b.ch1.FF11_WRc, b.ch1.NR11_LEN3, b.bus.TS_D3());
/*_p13.CURA*/ next.ch1.NR11_LEN4 = count_pos(a.ch1.NR11_LEN3n, b.ch1.NR11_LEN3n, b.ch1.FF11_WRa, b.ch1.NR11_LEN4, b.bus.TS_D4());
/*_p13.ERAM*/ next.ch1.NR11_LEN5 = count_pos(a.ch1.NR11_LEN4, b.ch1.NR11_LEN4, b.ch1.FF11_WRa, b.ch1.NR11_LEN5, b.bus.TS_D5());
/*_p13.CANU*/ next.ch1.CH1_LEN_CLK = not1(b.ch1.CH1_LEN_CLKn);
/*_p13.CAPY*/ next.ch1.CH1_LEN_CLKn = nor4(bCLK_256, !b.ch1.NR14_STOP, b.ch1.CH1_LEN_DONE); // use_len polarity?
/*_p13.CUSO*/ next.ch1.NR11_LEN3n = not1(!b.ch1.NR11_LEN3);
/*_p13.BUGY*/ next.ch1.FF11_WRc = not1(b.ch1.FF11_WRna);
/*_p13.BEPE*/ next.ch1.FF11_WRa = not1(b.ch1.FF11_WRna);
/*_p13.BORO*/ next.ch1.FF11_WRna = nand2(APU_WR, ADDR_FF11);
/*_p13.CERO*/ next.ch1.CH1_LEN_DONE = tock_pos(!a.ch1.NR11_LEN5, !b.ch1.NR11_LEN5, b.ch1.CH1_LEN_DONE_RST, b.ch1.CH1_LEN_DONE, !b.ch1.CH1_LEN_DONE);
/*_p13.CORY*/ next.ch1.CH1_LEN_DONE_RST = nor4(b.ch1.RESTART0, b.apu.APU_RESET1, b.ch1.FF11_WRb);
/*_p13.BOKA*/ next.ch1.FF11_WRb = not1(b.ch1.FF11_WRna);
}
//----------
// Restart sequencer
{
//wire aCLK_1M = a.clk.DOVA_ABCDxxxx;
//wire bCLK_1M = b.clk.DOVA_ABCDxxxx;
wire aCLK_1M = dff20.DOVA_ABCDxxxx;
wire bCLK_1M = dff20.DOVA_ABCDxxxx;
/*_p13.EZEC*/ next.ch1.START = tock_pos(aCLK_1M, bCLK_1M, /*_p13.DUKA*/ not1(b.apu.APU_RESET1), b.ch1.START, b.ch1.NR14_START);
/*_p13.GEFE*/ next.ch1.RESTART0_RSTn = not1(/*_p13.EGET*/ nor4(b.apu.APU_RESET1, b.ch1.RESTART1));
/*_p13.ERUM*/ next.ch1.RESTART_RSTo = not1(b.apu.APU_RESET1);
// weird latch?
/*_p13.FYFO*/ wire FYFO = or2(b.ch1.RESTART0_RSTn, b.ch1.START);
/*_p09.AGUR*/ wire RESETn = not1(b.apu.APU_RESET1);
// FIX CLOCK HERE
wire aCLK_2M = a.apu.AJER_2M;
wire bCLK_2M = b.apu.AJER_2M;
/*_p01.BATA*/ wire aCLK_2Mn = not1(aCLK_2M);
/*_p01.BATA*/ wire bCLK_2Mn = not1(bCLK_2M);
/*_p09.CALO*/ next.ch1.RESTART_CLK = tock_pos(aCLK_2Mn, bCLK_2Mn, RESETn, b.ch1.RESTART_CLK, !b.ch1.RESTART_CLK);
/*_p09.DYFA*/ next.ch1.RESTART_CLKn = not1(!b.ch1.RESTART_CLK);
/*_p13.FEKU*/ next.ch1.RESTART0 = tock_pos(a.ch1.RESTART_CLKn, b.ch1.RESTART_CLKn, b.ch1.RESTART0_RSTn, b.ch1.RESTART0, FYFO);
/*_p13.FARE*/ next.ch1.RESTART1 = tock_pos(a.ch1.RESTART_CLKn, b.ch1.RESTART_CLKn, b.ch1.RESTART_RSTo, b.ch1.RESTART1, b.ch1.RESTART0);
/*_p13.FYTE*/ next.ch1.RESTART2 = tock_pos(a.ch1.RESTART_CLKn, b.ch1.RESTART_CLKn, b.ch1.RESTART_RSTo, b.ch1.RESTART2, b.ch1.RESTART1);
}
//----------
// Waveform generator
{
/*_p13.CALA*/ next.ch1.PHASE_CLK_CLK = not1(b.ch1.FREQ_CNT_10);
/*_p13.DYRU*/ wire PHASE_CLK_RST = nor4(b.apu.APU_RESET1, b.ch1.RESTART0, /*_p13.DOKA*/ and2(b.ch1.PHASE_CLKnb, b.ch1.RESTART_CLKn));
/*_p13.COMY*/ next.ch1.PHASE_CLKnb = tock_pos(a.ch1.PHASE_CLK_CLK, b.ch1.PHASE_CLK_CLK, PHASE_CLK_RST, b.ch1.PHASE_CLKnb, !b.ch1.PHASE_CLKnb);
/*_p13.COPE*/ next.ch1.PHASE_CLKna = not1(/*_p13.CYTE*/ not1(b.ch1.PHASE_CLKnb));
// weird latch?
/*_p13.GEXU*/ next.ch1.FREQ_GATE = or2(/*_p13.FEMY*/ nor4(b.ch1.CH1_AMP_ENn, b.apu.APU_RESET1), /*_p13.GEPU*/ not1(b.ch1.RESTART2));
/*_p11.EPYK*/ wire FREQ_RSTn = nor4(b.ch1.RESTART0, b.ch1.PHASE_CLKna);
/*_p11.FUME*/ wire FREQ_RSTa = not1(FREQ_RSTn);
/*_p11.DEGA*/ wire FREQ_RSTb = not1(FREQ_RSTn);
/*_p11.DAKO*/ wire FREQ_RSTc = not1(FREQ_RSTn);
/*_p11.GEKU*/ next.ch1.FREQ_CLKa = not1(/*_p11.FULO*/ nor4(b.ch1.RESTART_CLKn, b.ch1.FREQ_GATE));
/*_p11.KYPE*/ next.ch1.FREQ_CLKb = not1(b.ch1.FREQ_CNT_03);
/*_p11.DERU*/ next.ch1.FREQ_CLKc = not1(b.ch1.FREQ_CNT_07);
/*_p11.GAXE*/ next.ch1.FREQ_CNT_00 = count_pos(a.ch1.FREQ_CLKa, b.ch1.FREQ_CLKa, FREQ_RSTa, b.ch1.FREQ_CNT_00, b.ch1.SUMMER00);
/*_p11.HYFE*/ next.ch1.FREQ_CNT_01 = count_pos(a.ch1.FREQ_CNT_00, b.ch1.FREQ_CNT_00, FREQ_RSTa, b.ch1.FREQ_CNT_01, b.ch1.SUMMER01);
/*_p11.JYTY*/ next.ch1.FREQ_CNT_02 = count_pos(a.ch1.FREQ_CNT_01, b.ch1.FREQ_CNT_01, FREQ_RSTa, b.ch1.FREQ_CNT_02, b.ch1.SUMMER02);
/*_p11.KYNA*/ next.ch1.FREQ_CNT_03 = count_pos(a.ch1.FREQ_CNT_02, b.ch1.FREQ_CNT_02, FREQ_RSTa, b.ch1.FREQ_CNT_03, b.ch1.SUMMER03);
/*_p11.JEMA*/ next.ch1.FREQ_CNT_04 = count_pos(a.ch1.FREQ_CLKb, b.ch1.FREQ_CLKb, FREQ_RSTb, b.ch1.FREQ_CNT_04, b.ch1.SUMMER04);
/*_p11.HYKE*/ next.ch1.FREQ_CNT_05 = count_pos(a.ch1.FREQ_CNT_04, b.ch1.FREQ_CNT_04, FREQ_RSTb, b.ch1.FREQ_CNT_05, b.ch1.SUMMER05);
/*_p11.FEVA*/ next.ch1.FREQ_CNT_06 = count_pos(a.ch1.FREQ_CNT_05, b.ch1.FREQ_CNT_05, FREQ_RSTb, b.ch1.FREQ_CNT_06, b.ch1.SUMMER06);
/*_p11.EKOV*/ next.ch1.FREQ_CNT_07 = count_pos(a.ch1.FREQ_CNT_06, b.ch1.FREQ_CNT_06, FREQ_RSTb, b.ch1.FREQ_CNT_07, b.ch1.SUMMER07);
/*_p11.EMUS*/ next.ch1.FREQ_CNT_08 = count_pos(a.ch1.FREQ_CLKc, b.ch1.FREQ_CLKc, FREQ_RSTc, b.ch1.FREQ_CNT_08, b.ch1.SUMMER08);
/*_p11.EVAK*/ next.ch1.FREQ_CNT_09 = count_pos(a.ch1.FREQ_CNT_09, b.ch1.FREQ_CNT_09, FREQ_RSTc, b.ch1.FREQ_CNT_09, b.ch1.SUMMER09);
/*_p11.COPU*/ next.ch1.FREQ_CNT_10 = count_pos(a.ch1.FREQ_CNT_10, b.ch1.FREQ_CNT_10, FREQ_RSTc, b.ch1.FREQ_CNT_10, b.ch1.SUMMER10);
/*_p11.CEPO*/ wire RESET1n = not1(b.apu.APU_RESET1);
/*_p13.DAJO*/ next.ch1.PHASE_CLKa = not1(b.ch1.PHASE_CLKna);
/*_p13.ESUT*/ next.ch1.PHASE_xBxDxFxH = tock_pos( a.ch1.PHASE_CLKa, b.ch1.PHASE_CLKa, RESET1n, b.ch1.PHASE_xBxDxFxH, !b.ch1.PHASE_xBxDxFxH);
/*_p13.EROS*/ next.ch1.PHASE_xxCDxxGH = tock_pos(!a.ch1.PHASE_xBxDxFxH, !b.ch1.PHASE_xBxDxFxH, RESET1n, b.ch1.PHASE_xxCDxxGH, !b.ch1.PHASE_xxCDxxGH);
/*_p13.DAPE*/ next.ch1.PHASE_xxxxEFGH = tock_pos(!a.ch1.PHASE_xxCDxxGH, !b.ch1.PHASE_xxCDxxGH, RESET1n, b.ch1.PHASE_xxxxEFGH, !b.ch1.PHASE_xxxxEFGH);
/*_p13.DUVO*/ wire PHASE_AxCxExGx = not1(b.ch1.PHASE_xBxDxFxH);
/*_p13.EZOZ*/ wire PHASE_xxxxxxGH = and2(b.ch1.PHASE_xxCDxxGH, b.ch1.PHASE_xxxxEFGH);
/*_p13.ENEK*/ wire PHASE_xxxxxxGx = and2(PHASE_AxCxExGx, PHASE_xxxxxxGH);
/*_p13.CODO*/ wire PHASE_ABCDEFxx = not1(PHASE_xxxxxxGH);
/*_p13.DUNA*/ wire RAW_BIT = amux4(PHASE_xxxxxxGx, /*_p13.COSO*/ nor4( b.ch1.NR11_DUTY_0, b.ch1.NR11_DUTY_1),
PHASE_xxxxxxGH, /*_p13.CAVA*/ nor4(!b.ch1.NR11_DUTY_0, b.ch1.NR11_DUTY_1),
b.ch1.PHASE_xxxxEFGH, /*_p13.CEVU*/ nor4( b.ch1.NR11_DUTY_0, !b.ch1.NR11_DUTY_1),
PHASE_ABCDEFxx, /*_p13.CAXO*/ nor4(!b.ch1.NR11_DUTY_0, !b.ch1.NR11_DUTY_1));
/*_p13.DUWO*/ next.ch1.RAW_BIT_SYNC = tock_pos(a.ch1.PHASE_CLKna, b.ch1.PHASE_CLKna, RESET1n, b.ch1.RAW_BIT_SYNC, RAW_BIT);
}
//----------
// Envelope generator. I'm not entirely sure how this works...
{
/*_p13.KUXU*/ wire ENV_DELAY_LOAD = not1(/*_p13.KAZA*/ nor4(b.ch1.RESTART0, b.ch1.ENV_CLK));
wire bCLK_128 = b.apu.CLK_128a;
// dis not rite
/*_p13.JONE*/ next.ch1.CLK_128n = not1(bCLK_128);
/*_p13.KALY*/ next.ch1.CLK_64a = tock_pos(a.ch1.CLK_128n, b.ch1.CLK_128n, /*_p13.KADO*/ not1(b.apu.APU_RESET1), b.ch1.CLK_64a, !b.ch1.CLK_64a);
///*_p13.JOLA*/ wire CLK_64b = not1(/*_p13.KERE*/ not1(b.ch1.CLK_64a));
/*_p13.KERE*/ wire KERE = not1(b.ch1.CLK_64a);
/*_p13.JOLA*/ wire CLK_64b = not1(KERE);
// fix clock here
/*_p13.JOVA*/ next.ch1.ENV_DELAY0 = count_pos(a.ch1.CLK_64a, CLK_64b, ENV_DELAY_LOAD, b.ch1.ENV_DELAY0, !b.ch1.NR12_DELAY0);
/*_p13.KENU*/ next.ch1.ENV_DELAY1 = count_pos(a.ch1.ENV_DELAY0, b.ch1.ENV_DELAY0, ENV_DELAY_LOAD, b.ch1.ENV_DELAY1, !b.ch1.NR12_DELAY1);
/*_p13.KERA*/ next.ch1.ENV_DELAY2 = count_pos(a.ch1.ENV_DELAY1, b.ch1.ENV_DELAY1, ENV_DELAY_LOAD, b.ch1.ENV_DELAY2, !b.ch1.NR12_DELAY2);
/*_p13.KOTE*/ wire ENV_TRIGGER = and2(b.ch1.ENV_DELAY0, b.ch1.ENV_DELAY1, b.ch1.ENV_DELAY2);
/*_p13.HAKE*/ wire ENV_TOP = not1(/*_p13.HUFU*/ nand2(b.ch1.NR12_ENV_DIR, b.ch1.ENV0, b.ch1.ENV1, b.ch1.ENV2, b.ch1.ENV3));
/*_p13.HANO*/ wire ENV_BOT = nor4(b.ch1.NR12_ENV_DIR, b.ch1.ENV0, b.ch1.ENV1, b.ch1.ENV2, b.ch1.ENV3);
/*_p13.JADE*/ wire ENV_MAX = or2(ENV_TOP, ENV_BOT);
/*_p13.KOMA*/ wire ENV_EN = nor4(b.ch1.NR12_DELAY0, b.ch1.NR12_DELAY1, b.ch1.NR12_DELAY2);
wire aCLK_512 = a.apu.CLK_512a;
wire bCLK_512 = b.apu.CLK_512a;
/*_p13.KORO*/ wire ENV_CLK_RST = nor4(/*_p13.KUKU*/ nor4(aCLK_512, /*_p13.KURY*/ not1(b.ch1.ENV_CLK)), ENV_EN); // schematic wrong
/*_p13.KOZY*/ next.ch1.ENV_CLK = tock_pos(aCLK_512, bCLK_512, ENV_CLK_RST, b.ch1.ENV_CLK, ENV_TRIGGER);
/*_p13.KYNO*/ next.ch1.ENV_STOP = tock_pos(a.ch1.ENV_CLK, b.ch1.ENV_CLK, /*_p13.KORU*/ nor4(b.ch1.RESTART0, b.apu.APU_RESET1), b.ch1.ENV_STOP, ENV_MAX);
/*_p13.KEKO*/ wire KEKO = or2(b.apu.APU_RESET1, b.ch1.RESTART0);
// weird latch?
/*_p13.KEZU*/ wire KEZU = or2(b.ch1.ENV_STOP, KEKO);
/*_p13.KAKE*/ wire KAKE = and2(b.ch1.ENV_CLK, ENV_EN, KEZU);
/*_p13.HESU*/ next.ch1.ENV_DELTA0 = amux2(b.ch1.NR12_ENV_DIR, b.ch1.ENV1, !b.ch1.ENV1, !b.ch1.NR12_ENV_DIR);
/*_p13.HETO*/ next.ch1.ENV_DELTA1 = amux2(b.ch1.NR12_ENV_DIR, b.ch1.ENV2, !b.ch1.ENV2, !b.ch1.NR12_ENV_DIR);
/*_p13.HYTO*/ next.ch1.ENV_DELTA2 = amux2(b.ch1.NR12_ENV_DIR, b.ch1.ENV3, !b.ch1.ENV3, !b.ch1.NR12_ENV_DIR);
/*_p13.JUFY*/ next.ch1.ENV_DELTA3 = amux2(b.ch1.NR12_ENV_DIR, KAKE, KAKE, !b.ch1.NR12_ENV_DIR);
/*_p13.HEVO*/ next.ch1.ENV0 = count_pos(a.ch1.ENV_DELTA0, b.ch1.ENV_DELTA0, b.ch1.RESTART0, b.ch1.ENV0, b.ch1.NR12_VOL0);
/*_p13.HOKO*/ next.ch1.ENV1 = count_pos(a.ch1.ENV_DELTA1, b.ch1.ENV_DELTA1, b.ch1.RESTART0, b.ch1.ENV1, b.ch1.NR12_VOL1);
/*_p13.HEMY*/ next.ch1.ENV2 = count_pos(a.ch1.ENV_DELTA2, b.ch1.ENV_DELTA2, b.ch1.RESTART0, b.ch1.ENV2, b.ch1.NR12_VOL2);
/*_p13.HAFO*/ next.ch1.ENV3 = count_pos(a.ch1.ENV_DELTA3, b.ch1.ENV_DELTA3, b.ch1.RESTART0, b.ch1.ENV3, b.ch1.NR12_VOL3);
}
//----------
// Audio output
/*_p13.BERY*/ wire CH1_STOP = or2(/*_p13.BONE*/ not1(b.ch1.FREQ_OVERFLOW),
b.apu.APU_RESET1,
/*_p13.CYFA*/ and2(b.ch1.CH1_LEN_DONE, b.ch1.NR14_STOP),
b.ch1.CH1_AMP_ENn); // polarity
/*_p13.CYTO*/ next.ch1.CH1_ACTIVE = or2(b.ch1.RESTART0, CH1_STOP); // polarity
/*_p13.BOTO*/ wire BIT_OUT = or2(/*_p13.COWE*/ and2(b.ch1.CH1_ACTIVE, b.ch1.RAW_BIT_SYNC), b.apu.NR52_DBG_APU);
/*_p13.AMOP*/ next.ch1.CH1_OUT0 = and2(b.ch1.ENV0, BIT_OUT);
/*_p13.ASON*/ next.ch1.CH1_OUT1 = and2(b.ch1.ENV1, BIT_OUT);
/*_p13.AGOF*/ next.ch1.CH1_OUT2 = and2(b.ch1.ENV2, BIT_OUT);
/*_p13.ACEG*/ next.ch1.CH1_OUT3 = and2(b.ch1.ENV3, BIT_OUT);
}
#endif
a2f4a33c8This file is pinned to the selected release. Download the original to open it in your design tool.