@@ -37,7 +37,7 @@ module sm2201_interface_board(
3737 input wire [9 :0 ] isa_addr,
3838 output wire [7 :0 ] isa_irq,
3939 // controller interface bus (common bus = ОШ)
40- inout wire [15 :0 ] cb_data,
40+ inout reg [15 :0 ] cb_data,
4141 input wire cb_prr,
4242 input wire cb_cx1,
4343 input wire cb_zk4, // X 2.2 B21 ЗК4 ???
@@ -130,13 +130,16 @@ wire [7:0] d16_out;
130130supply0 gnd;
131131supply1 vcc;
132132
133+ reg [7 :0 ] cb_data_out_l;
134+ reg [7 :0 ] cb_data_out_h;
135+
133136// ######################### LINES ASSIGNMENT ############################
134137
135138// DD1
136- assign d1_db[0 ] = cb_data[12 ];
139+ /* assign d1_db[0] = cb_data[12];
137140assign d1_db[1] = cb_data[14];
138141assign d1_db[2] = cb_data[13];
139- assign d1_db[3 ] = cb_data[15 ];
142+ assign d1_db[3] = cb_data[15];*/
140143
141144assign d1_di[0 ] = d3_q[0 ];
142145assign d1_di[1 ] = d3_q[2 ];
@@ -155,10 +158,10 @@ assign d4_s2[2] = cb_data[14];
155158assign d4_s2[3 ] = cb_data[13 ];
156159
157160// DD2
158- assign d2_db[0 ] = cb_data[9 ];
161+ /* assign d2_db[0] = cb_data[9];
159162assign d2_db[1] = cb_data[10];
160163assign d2_db[2] = cb_data[8];
161- assign d2_db[3 ] = cb_data[11 ];
164+ assign d2_db[3] = cb_data[11];*/
162165
163166assign d2_di[0 ] = d4_q[0 ];
164167assign d2_di[1 ] = d4_q[2 ];
@@ -334,7 +337,7 @@ assign isa_irq[4] = vcc;
334337assign isa_irq[5 ] = vcc;
335338assign isa_irq[6 ] = vcc;
336339
337- assign cb_data[4 ] = d11_do[0 ];
340+ /* assign cb_data[4] = d11_do[0];
338341assign cb_data[5] = d11_do[1];
339342assign cb_data[6] = d11_do[2];
340343assign cb_data[7] = d11_do[3];
@@ -344,6 +347,16 @@ assign cb_data[1] = d12_do[1];
344347assign cb_data[2] = d12_do[2];
345348assign cb_data[3] = d12_do[3];
346349
350+ assign cb_data[12] = d1_db[0];
351+ assign cb_data[14] = d1_db[1];
352+ assign cb_data[13] = d1_db[2];
353+ assign cb_data[15] = d1_db[3];
354+
355+ assign cb_data[9] = d2_db[0];
356+ assign cb_data[10] = d2_db[1];
357+ assign cb_data[8] = d2_db[2];
358+ assign cb_data[11] = d2_db[3];*/
359+
347360// #######################################################################
348361
349362/* DD1 (BUS former)
@@ -445,5 +458,34 @@ dig_machine_ip3604 d15(.address(d15_addr), .cs(d15_cs), .data(d15_out));
445458// DD16
446459SN74LS374 d16 (.out_control(gnd), .clk(isa_clk), .data(d16_data), .out(d16_out));
447460
461+ always @(* )
462+ begin
463+ cb_data_out_l[0 ] = d12_do[0 ];
464+ cb_data_out_l[1 ] = d12_do[1 ];
465+ cb_data_out_l[2 ] = d12_do[2 ];
466+ cb_data_out_l[3 ] = d12_do[3 ];
467+
468+ cb_data_out_l[4 ] = d11_do[0 ];
469+ cb_data_out_l[5 ] = d11_do[1 ];
470+ cb_data_out_l[6 ] = d11_do[2 ];
471+ cb_data_out_l[7 ] = d11_do[3 ];
472+
473+ cb_data_out_h[1 ] = d2_db[0 ];
474+ cb_data_out_h[2 ] = d2_db[1 ];
475+ cb_data_out_h[0 ] = d2_db[2 ];
476+ cb_data_out_h[3 ] = d2_db[3 ];
477+
478+ cb_data_out_h[4 ] = d1_db[0 ];
479+ cb_data_out_h[6 ] = d1_db[1 ];
480+ cb_data_out_h[5 ] = d1_db[2 ];
481+ cb_data_out_h[7 ] = d1_db[3 ];
482+
483+ if (m_w == 1'b0 )
484+ cb_data[15 :8 ] = cb_data_out_h[7 :0 ];
485+ // cb_data[15:8] = m_w == 1'b0 ? cb_data_out_h[7:0] : cb_data[15:8];
486+ if (d_sel == 1'b0 & q_r == 1'b1 )
487+ cb_data[7 :0 ] = cb_data_out_l[7 :0 ];
488+ // cb_data[7:0] = d_sel == 1'b0 & q_r == 1'b1 ? cb_data_out_l[7:0] : cb_data[7:0];
489+ end
448490
449491endmodule
0 commit comments