From daea4522fc6d74de9f077d6354f39ed93230c562 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Thu, 10 Jun 2021 23:01:10 +0200 Subject: [PATCH 1/2] MC6809: fix SEX instruction's flags --- common/CPU/MC6809/mc6809i.v | 5 ++++- common/CPU/MC6809/mc6809is.v | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/common/CPU/MC6809/mc6809i.v b/common/CPU/MC6809/mc6809i.v index 5725aab4..d3a92d4a 100644 --- a/common/CPU/MC6809/mc6809i.v +++ b/common/CPU/MC6809/mc6809i.v @@ -1971,10 +1971,13 @@ begin else if (Inst1 == OPCODE_INH_SEX) begin a_nxt = {8{b[7]}}; + cc_nxt[CC_N_BIT] = b[7]; + cc_nxt[CC_Z_BIT] = {b == 8'H00}; + cc_nxt[CC_V_BIT] = 1'b0; rLIC = 1'b1; // Instruction done! rAVMA = 1'b1; CpuState_nxt = CPUSTATE_FETCH_I1; - end + end else if (Inst1 == OPCODE_INH_ABX) begin x_nxt = x + b; diff --git a/common/CPU/MC6809/mc6809is.v b/common/CPU/MC6809/mc6809is.v index ebdc88be..d0d2086e 100644 --- a/common/CPU/MC6809/mc6809is.v +++ b/common/CPU/MC6809/mc6809is.v @@ -1969,10 +1969,13 @@ begin else if (Inst1 == OPCODE_INH_SEX) begin a_nxt = {8{b[7]}}; + cc_nxt[CC_N_BIT] = b[7]; + cc_nxt[CC_Z_BIT] = {b == 8'H00}; + cc_nxt[CC_V_BIT] = 1'b0; rLIC = 1'b1; // Instruction done! rAVMA = 1'b1; CpuState_nxt = CPUSTATE_FETCH_I1; - end + end else if (Inst1 == OPCODE_INH_ABX) begin x_nxt = x + b; From ff870c29b22e38b4ed7e13df3cf2e06758d294e0 Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Thu, 10 Jun 2021 23:03:34 +0200 Subject: [PATCH 2/2] TimePilot84: use the fixed MC6809 --- .../Konami TimePilot84/rtl/TimePilot84_CPU.sv | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Arcade_MiST/Konami TimePilot84/rtl/TimePilot84_CPU.sv b/Arcade_MiST/Konami TimePilot84/rtl/TimePilot84_CPU.sv index 6a53ee45..4c397bdf 100644 --- a/Arcade_MiST/Konami TimePilot84/rtl/TimePilot84_CPU.sv +++ b/Arcade_MiST/Konami TimePilot84/rtl/TimePilot84_CPU.sv @@ -291,7 +291,7 @@ end wire [15:0] mA; wire [7:0] mD_out; wire m_rw; - +/* cpu09 u12G ( .clk(~clk_49m), @@ -306,14 +306,13 @@ cpu09 u12G .firq(0), .nmi(0) ); +*/ -/* -// buggy (playfield scrolling is broken with this CPU) mc6809is u12G ( - .CLK(clk_49m), - .fallE_en(n_me_en), - .fallQ_en(n_mq_en), + .CLK(clk_49m), + .fallE_en(n_me_en), + .fallQ_en(n_mq_en), .D(mD_in), .DOut(mD_out), .ADDR(mA), @@ -325,7 +324,7 @@ mc6809is u12G .nRESET(n_res), .nDMABREQ(1'b1) ); -*/ + //Multiplex data inputs to primary MC6809E wire [7:0] mD_in = sndbrd_dir ? sndbrd_D: