- module main( 
-   
-         // clocks 
-         input fclk, 
-         output clkz_out, 
-         input clkz_in, 
-   
-         // z80 
-         input iorq_n, 
-         input mreq_n, 
-         input rd_n, 
-         input wr_n, 
-         input m1_n, 
-         input rfsh_n, 
-         output int_n, 
-         output nmi_n, 
-         output wait_n, 
-         output res, 
-   
-         inout [7:0] d, 
-         input [15:0] a, 
-   
-         // zxbus and related 
-         output csrom, 
-         output romoe_n, 
-         output romwe_n, 
-   
-         output rompg0_n, 
-         output dos_n, // aka rompg1 
-         output rompg2, 
-         output rompg3, 
-         output rompg4, 
-   
-         input iorqge1, 
-         input iorqge2, 
-         output iorq1_n, 
-         output iorq2_n, 
-   
-         // DRAM 
-         inout [15:0] rd, 
-         output [9:0] ra, 
-         output rwe_n, 
-         output rucas_n, 
-         output rlcas_n, 
-         output rras0_n, 
-         output rras1_n, 
-   
-         // video 
-         output [1:0] vred, 
-         output [1:0] vgrn, 
-         output [1:0] vblu, 
-   
-         output vhsync, 
-         output vvsync, 
-         output vcsync, 
-   
-         // AY control and audio/tape 
-         output ay_clk, 
-         output ay_bdir, 
-         output ay_bc1, 
-   
-         output beep, 
-   
-         // IDE 
-         output [2:0] ide_a, 
-         inout [15:0] ide_d, 
-   
-         output ide_dir, 
-   
-         input ide_rdy, 
-   
-         output ide_cs0_n, 
-         output ide_cs1_n, 
-         output ide_rs_n, 
-         output ide_rd_n, 
-         output ide_wr_n, 
-   
-         // VG93 and diskdrive 
-         output vg_clk, 
-   
-         output vg_cs_n, 
-         output vg_res_n, 
-   
-         output vg_hrdy, 
-         output vg_rclk, 
-         output vg_rawr, 
-         output [1:0] vg_a, // disk drive selection 
-         output vg_wrd, 
-         output vg_side, 
-   
-         input step, 
-         input vg_sl, 
-         input vg_sr, 
-         input vg_tr43, 
-         input rdat_b_n, 
-         input vg_wf_de, 
-         input vg_drq, 
-         input vg_irq, 
-         input vg_wd, 
-   
-         // serial links (atmega-fpga, sdcard) 
-         output sdcs_n, 
-         output sddo, 
-         output sdclk, 
-         input sddi, 
-   
-         input spics_n, 
-         input spick, 
-         input spido, 
-         output spidi, 
-         output spiint_n 
- ); 
-   
-   
-         wire zclk; // z80 clock for short 
-         reg [2:0] zclk_gen; // make 3.5 mhz clock 
-   
-         wire rst_n; // global reset 
-   
-         wire rrdy; 
-         wire cbeg; 
-         wire [15:0] rddata; 
-   
-         wire [4:0] rompg; 
-   
-         wire [7:0] zports_dout; 
-         wire zports_dataout; 
-         wire porthit; 
-   
-         wire [4:0] keys; 
-         wire tape_in; 
-   
-         wire [15:0] ideout; 
-         wire [15:0] idein; 
-   
-   
-         wire [7:0] zmem_dout; 
-         wire zmem_dataout; 
-   
-   
-         wire [7:0] sd_dout_to_zports; 
-         wire start_from_zports; 
-         wire sd_inserted; 
-         wire sd_readonly; 
-   
-   
-         reg [3:0] ayclk_gen; 
-   
-   
-         wire [7:0] received; 
-         wire [7:0] tobesent; 
-   
-   
-         wire intrq,drq; 
-         wire vg_wrFF; 
-   
-   
-   
-   
-   
-         // Z80 clock control 
-         assign zclk = clkz_in; 
-         always @(posedge fclk) 
-                 zclk_gen <= zclk_gen + 3'd1; 
-         assign clkz_out = zclk_gen[2]; 
-   
-   
- /*      // RESETTER 
-         resetter myrst( .clk(fclk), 
-                         .rst_in1_n(1'b1), 
-                         .rst_in2_n(1'b1), 
-                         .rst_out_n(rst_n) ); 
-         defparam myrst.RST_CNT_SIZE = 6; 
- */ 
-   
-         dram mydram( .clk(fclk), 
-                      .rst_n(1'b1), 
-                      .ra(ra), 
-                      .rd(rd), 
-                      .rwe_n(rwe_n), 
-                      .rras0_n(rras0_n), 
-                      .rras1_n(rras1_n), 
-                      .rucas_n(rucas_n), 
-                      .rlcas_n(rlcas_n), 
-                      .req(1'b0), 
-                      .rnw(1'b1)//, 
-                      //.rrdy(rrdy), 
-                      //.cbeg(cbeg), 
-                      //.bsel({a[0],~a[0]}), 
-                      //.wrdata({d,~d}), 
-                      //.rddata(rddata), 
-                      /*.addr({a[5:0],a[15:1]})*/ ); 
-   
-         assign int_n=1'b1; 
-         assign nmi_n=1'b1; 
-         assign wait_n=1'b1; 
-         assign res=1'b1; 
-         assign d=8'hZZ; 
-   
-   
-         assign csrom=1'b0; 
-         assign romoe_n=1'b1; 
-         assign romwe_n=1'b1; 
-   
-         assign iorq1_n=1'b1; 
-         assign iorq2_n=1'b1; 
-   
-   
-         assign rd=16'hZZZZ; 
-   
-   
-         assign ay_bdir=1'b0; 
-         assign ay_bc1=1'b0; 
-   
-   
-         assign ide_d=16'hZZZZ; 
-         assign ide_dir=1'b1; 
-   
-         assign ide_rs_n = 1'b0; 
-         assign ide_cs1_n = 1'b1; 
-         assign ide_rd_n = 1'b1; 
-         assign ide_wr_n = 1'b1; 
-   
-         assign vg_cs_n=1'b1; 
-         assign vg_res_n=1'b0; 
-   
-   
-         assign sdcs_n=1'b1; 
-   
-         assign spiint_n=1'b1; 
-   
-   
-   
- //AY control 
-         always @(posedge fclk) 
-         begin 
-                 ayclk_gen <= ayclk_gen + 4'd1; 
-         end 
-   
-         assign ay_clk = ayclk_gen[3]; 
-   
-   
-   
-   
-         reg [23:0] counter; 
-         reg blinker; 
-   
-   
-         always @(posedge fclk) 
-         begin 
-                 if( !counter ) 
-                 begin 
-                         counter <= 24'd13999999; 
-                         blinker <= ~blinker; 
-                 end 
-                 else 
-                         counter <= counter - 24'd1; 
-         end 
-   
-   
-         assign ide_cs0_n = blinker; 
-   
-   
-   
- endmodule 
-