From 4f9c2edfd1242be9e98667d39393c829fcd826c8 Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Mon, 31 Mar 2008 02:58:27 -0400 Subject: [PATCH 1/1] Fix RAM bugs with kludge. Fix CALL bug. CALL test case. --- FPGABoy.ise | Bin 213283 -> 214313 bytes GBZ80Core.v | 31 +++++++++++++++++++------------ rom.hex | 26 ++++++++++++++------------ 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/FPGABoy.ise b/FPGABoy.ise index 5ae17656173495f68671d066bd7c8f6f5c756bc5..8ee44c4da3924df798f41b6d806bbeab3c6a2d3e 100644 GIT binary patch delta 65906 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 delta 64969 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 m9nrg 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 diff --git a/GBZ80Core.v b/GBZ80Core.v index cb231c2..ec1756e 100644 --- a/GBZ80Core.v +++ b/GBZ80Core.v @@ -395,16 +395,18 @@ module GBZ80Core( rd <= 1; end 2: begin + `EXEC_INC_PC; + end + 3: begin address <= {registers[`REG_SPH],registers[`REG_SPL]} - 1; wdata <= registers[`REG_PCH]; wr <= 1; end - 3: begin + 4: begin address <= {registers[`REG_SPH],registers[`REG_SPL]} - 2; wdata <= registers[`REG_PCL]; wr <= 1; end - 4: begin /* nothing happens on the bus next cycle! */ end 5: begin `EXEC_NEWCYCLE; /* do NOT increment the PC */ end @@ -680,15 +682,15 @@ module GBZ80Core( end 3: begin cycle <= 4; - registers[`REG_PCH] <= tmp2; end 4: begin cycle <= 5; - registers[`REG_PCL] <= tmp; + registers[`REG_PCH] <= tmp2; end 5: begin {registers[`REG_SPH],registers[`REG_SPL]} <= {registers[`REG_SPH],registers[`REG_SPL]} - 2; + registers[`REG_PCL] <= tmp; cycle <= 0; end endcase @@ -715,16 +717,15 @@ module ROM( wire idata = data; assign data = (rd && decode) ? odata : 8'bzzzzzzzz; - always @(wr or rd) - begin - if (decode && rd) + always @(posedge rd) + if (decode) odata <= rom[address]; - end endmodule module InternalRAM( input [15:0] address, inout [7:0] data, + input clk, input wr, rd); reg [7:0] ram [8191:0]; @@ -734,12 +735,17 @@ module InternalRAM( wire idata = data; assign data = (rd && decode) ? odata : 8'bzzzzzzzz; - always @(rd or wr) + reg [13:0] diq; + initial + for (diq = 0; diq < 8191; diq = diq + 1) + ram[diq] = 8'h43; + + always @(negedge clk) begin if (decode && rd) - odata <= ram[address]; - else if (decode && wr) - ram[address] <= idata; + odata <= ram[address[12:0]]; + if (decode && wr) + ram[address[12:0]] <= data; end endmodule @@ -766,6 +772,7 @@ module TestBench(); InternalRAM ram( .address(addr), .data(data), + .clk(clk), .wr(wr), .rd(rd)); endmodule diff --git a/rom.hex b/rom.hex index 0cef4b0..5ff2d7a 100644 --- a/rom.hex +++ b/rom.hex @@ -1,16 +1,18 @@ -// LD HL, 0100 -21 -00 +// LD SP, DFFFh +31 +FF +DF +// CALL 0080h +CD +80 +01 +// CALL 0080h +CD +80 01 -// LD SP, HL -F9 -// RET -C9 - -@80 // RST 00h C7 -@100 -80 -00 \ No newline at end of file +@180 +// RET +C9 -- 2.43.0