Skip to content

Commit d22bcf7

Browse files
committed
WR is always normal. Custom settings to prolong MREQ & IORQ.
1 parent f802101 commit d22bcf7

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/ci2406_z80.v

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ module ci2406_z80(
259259
.wr_n (io_out[ 3]),
260260
.rfsh_n (io_out[ 5]),
261261

262-
.early_signals(custom_settings[0])
262+
.early_signals(custom_settings)
263263
);
264264
endmodule
265265

@@ -286,7 +286,7 @@ module z80 (
286286
output wire halt_n,
287287
output wire busak_n,
288288

289-
input wire early_signals
289+
input wire[1:0] early_signals
290290
);
291291

292292
wire normal_mreq_n;
@@ -299,10 +299,19 @@ module z80 (
299299
wire early_rd_n;
300300
wire early_wr_n;
301301

302-
assign mreq_n = early_signals ? early_mreq_n : normal_mreq_n;
303-
assign iorq_n = early_signals ? early_iorq_n : normal_iorq_n;
304-
assign rd_n = early_signals ? early_rd_n : normal_rd_n;
305-
assign wr_n = early_signals ? early_wr_n : normal_wr_n;
302+
// assign mreq_n = early_signals ? early_mreq_n : normal_mreq_n;
303+
// assign iorq_n = early_signals ? early_iorq_n : normal_iorq_n;
304+
// assign rd_n = early_signals ? early_rd_n : normal_rd_n;
305+
// assign wr_n = early_signals ? early_wr_n : normal_wr_n;
306+
307+
assign mreq_n = early_signals[1] ?
308+
(rfsh_n ? (early_mreq_n & normal_mreq_n) : early_mreq_n) :
309+
early_signals[0] ? early_mreq_n : normal_mreq_n;
310+
311+
assign iorq_n = early_signals[1] ? (early_iorq_n & normal_iorq_n) :
312+
early_signals[0] ? early_iorq_n : normal_iorq_n;
313+
assign rd_n = early_signals[0] ? early_rd_n : normal_rd_n;
314+
assign wr_n = normal_wr_n;
306315

307316
tv80s #(
308317
.Mode(0), // Z80 mode

test_chipignite/test.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ async def test__RESET(dut):
1818
dut._log.info("Test RESET sequence")
1919
dut._log.info("Reset")
2020
dut.io_in.value = 0
21+
dut.custom_settings.value = 0b00 # [long MREQ+IORQ, early RD+MREW+IORQ] WR always normal
2122
dut.rst_n.value = 0
2223
await ClockCycles(dut.clk, 2)
2324
for z80_cycle in range(-4, 2):

0 commit comments

Comments
 (0)