diff --git a/verilator/Makefile b/verilator/Makefile
index c9f60e3..a667f05 100644
--- a/verilator/Makefile
+++ b/verilator/Makefile
@@ -46,7 +46,7 @@ endif
CFLAGS += $(CC_OPT) $(CC_DEFINE) -Iimgui
LDFLAGS = $(LIBS)
-EXE = ./obj_dir/Vtop
+EXE = ./obj_dir/Vemu
V_OPT = -O3 --x-assign fast --x-initial fast --noassert
CC_OPT = -O
#V_OPT =
@@ -70,7 +70,7 @@ C_SRC = \
sim_main.cpp \
sim/sim_bus.cpp sim/sim_clock.cpp sim/sim_console.cpp sim/sim_video.cpp sim/sim_input.cpp \
sim/imgui/imgui_impl_sdl.cpp sim/imgui/imgui_impl_opengl2.cpp sim/imgui/imgui_draw.cpp sim/imgui/imgui_widgets.cpp sim/imgui/imgui_tables.cpp sim/imgui/imgui.cpp sim/imgui/ImGuiFileDialog.cpp
-VOUT = obj_dir/Vtop.cpp
+VOUT = obj_dir/Vemu.cpp
all: $(EXE)
@@ -78,11 +78,11 @@ $(VOUT): $(V_SRC) Makefile
$V -cc $(V_OPT) -LDFLAGS "$(LDFLAGS) " -exe --trace --Mdir ./obj_dir $(V_DEFINE) $(V_INC) $(TOP) -CFLAGS $(CFLAGS) $(V_SRC) $(C_SRC)
$(EXE): $(VOUT) $(C_SRC)
-# (cd obj_dir; make OPT="-fauto-inc-dec -fdce -fdefer-pop -fdse -ftree-ccp -ftree-ch -ftree-fre -ftree-dce -ftree-dse" -f Vtop.mk)
- (cd obj_dir; make -f Vtop.mk)
+# (cd obj_dir; make OPT="-fauto-inc-dec -fdce -fdefer-pop -fdse -ftree-ccp -ftree-ch -ftree-fre -ftree-dce -ftree-dse" -f Vemu.mk)
+ (cd obj_dir; make -f Vemu.mk)
fast:
- (cd obj_dir; rm -f *.o ; make OPT="-fcompare-elim -fcprop-registers -fguess-branch-probability -fauto-inc-dec -fif-conversion2 -fif-conversion -fipa-pure-const -fdce -fipa-profile -fipa-reference -fmerge-constants -fsplit-wide-types -fdefer-pop -fdse -ftree-ccp -ftree-ch -ftree-fre -ftree-dce -ftree-dse -ftree-builtin-call-dce -ftree-copyrename -ftree-dominator-opts -ftree-forwprop -ftree-phiprop -ftree-sra -ftree-pta -ftree-ter -funit-at-a-time -ftree-bit-ccp -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse -fgcse-lm -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpartial-inlining -fpeephole2 -fregmove -freorder-blocks -freorder-functions -frerun-cse-after-loop -fsched-interblock -fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -ftree-switch-conversion -ftree-pre -ftree-vrp" -f Vtop.mk)
+ (cd obj_dir; rm -f *.o ; make OPT="-fcompare-elim -fcprop-registers -fguess-branch-probability -fauto-inc-dec -fif-conversion2 -fif-conversion -fipa-pure-const -fdce -fipa-profile -fipa-reference -fmerge-constants -fsplit-wide-types -fdefer-pop -fdse -ftree-ccp -ftree-ch -ftree-fre -ftree-dce -ftree-dse -ftree-builtin-call-dce -ftree-copyrename -ftree-dominator-opts -ftree-forwprop -ftree-phiprop -ftree-sra -ftree-pta -ftree-ter -funit-at-a-time -ftree-bit-ccp -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse -fgcse-lm -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpartial-inlining -fpeephole2 -fregmove -freorder-blocks -freorder-functions -frerun-cse-after-loop -fsched-interblock -fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -ftree-switch-conversion -ftree-pre -ftree-vrp" -f Vemu.mk)
clean:
rm -f obj_dir/*
diff --git a/verilator/imgui.ini b/verilator/imgui.ini
index cce2de7..ef12af7 100644
--- a/verilator/imgui.ini
+++ b/verilator/imgui.ini
@@ -29,7 +29,7 @@ Size=560,393
Collapsed=0
[Window][CPU Registers]
-Pos=1349,13
+Pos=1261,13
Size=269,188
Collapsed=0
@@ -58,3 +58,12 @@ Pos=-208,137
Size=738,454
Collapsed=0
+[Window][Choose File##ChooseFileDlgKey]
+Pos=60,60
+Size=639,314
+Collapsed=0
+
+[Table][0x5E7B4F09,4]
+RefScale=13
+Column 0 Sort=0v
+
diff --git a/verilator/sim.vcxproj b/verilator/sim.vcxproj
index 71029a2..8f813ef 100644
--- a/verilator/sim.vcxproj
+++ b/verilator/sim.vcxproj
@@ -73,9 +73,8 @@
-
-
-
+
+
diff --git a/verilator/sim.vcxproj.filters b/verilator/sim.vcxproj.filters
index 422d3a1..bd7aaa8 100644
--- a/verilator/sim.vcxproj.filters
+++ b/verilator/sim.vcxproj.filters
@@ -18,13 +18,10 @@
Source Files
-
+
Source Files
-
- Source Files
-
-
+
Source Files
@@ -63,7 +60,7 @@
Source Files
-
+
Source Files
diff --git a/verilator/sim/sim_input.cpp b/verilator/sim/sim_input.cpp
index c3aae20..1b7c016 100644
--- a/verilator/sim/sim_input.cpp
+++ b/verilator/sim/sim_input.cpp
@@ -5,6 +5,7 @@
#ifndef _MSC_VER
#include
const Uint8* m_keyboardState;
+const Uint8* m_keyboardState_last;
#else
#define WIN32
#include
@@ -72,9 +73,13 @@ void SimInput::Read() {
#endif
}
+#ifdef WIN32
for (unsigned char k = 0; k < 256; k++) {
m_keyboardState_last[k] = m_keyboardState[k];
}
+#else
+ m_keyboardState_last = m_keyboardState;
+#endif
}
diff --git a/verilator/sim_main.cpp b/verilator/sim_main.cpp
index 3a49181..b77ba11 100644
--- a/verilator/sim_main.cpp
+++ b/verilator/sim_main.cpp
@@ -1,5 +1,5 @@
#include
-#include "Vtop.h"
+#include "Vemu.h"
#include "imgui.h"
#ifndef _MSC_VER
@@ -67,7 +67,7 @@ int multi_step_amount = 1024;
// Verilog module
// --------------
-Vtop* top = NULL;
+Vemu* top = NULL;
vluint64_t main_time = 0; // Current simulation time.
double sc_time_stamp() { // Called by $time in Verilog.
@@ -105,7 +105,7 @@ int verilate() {
}
// Output pixels on rising edge of pixel clock
- if (clk_sys.IsRising() && top->top__DOT__ce_pix ) {
+ if (clk_sys.IsRising() && top->emu__DOT__ce_pix ) {
uint32_t colour = 0xFF000000 | top->VGA_B << 16 | top->VGA_G << 8 | top->VGA_R;
video.Clock(top->VGA_HB, top->VGA_VB, top->VGA_HS, top->VGA_VS, colour);
}
@@ -129,7 +129,7 @@ char ps2_timer = 0;
int main(int argc, char** argv, char** env) {
// Create core and initialise
- top = new Vtop();
+ top = new Vemu();
Verilated::commandArgs(argc, argv);
#ifdef WIN32
@@ -247,19 +247,19 @@ int main(int argc, char** argv, char** env) {
ImGui::End();
/*ImGui::Begin("PGROM Editor");
- mem_edit_1.DrawContents(top->top__DOT__system__DOT__pgrom__DOT__mem, 16384, 0);
+ mem_edit_1.DrawContents(top->emu__DOT__system__DOT__pgrom__DOT__mem, 16384, 0);
ImGui::End();
ImGui::Begin("CHROM Editor");
- mem_edit_1.DrawContents(top->top__DOT__system__DOT__chrom__DOT__mem, 2048, 0);
+ mem_edit_1.DrawContents(top->emu__DOT__system__DOT__chrom__DOT__mem, 2048, 0);
ImGui::End();*/
ImGui::Begin("WKRAM Editor");
- mem_edit_2.DrawContents(top->top__DOT__system__DOT__wkram__DOT__mem, 16384, 0);
+ mem_edit_2.DrawContents(top->emu__DOT__system__DOT__wkram__DOT__mem, 16384, 0);
ImGui::End();
//ImGui::Begin("CHRAM Editor");
- //mem_edit_3.DrawContents(top->top__DOT__system__DOT__chram__DOT__mem, 2048, 0);
+ //mem_edit_3.DrawContents(top->emu__DOT__system__DOT__chram__DOT__mem, 2048, 0);
//ImGui::End();
//ImGui::Begin("COLRAM Editor");
- //mem_edit_3.DrawContents(top->top__DOT__system__DOT__colram__DOT__mem, 2048, 0);
+ //mem_edit_3.DrawContents(top->emu__DOT__system__DOT__colram__DOT__mem, 2048, 0);
//ImGui::End();
// File Dialog to load rom
@@ -280,8 +280,8 @@ int main(int argc, char** argv, char** env) {
ImGui::Begin("CPU Registers");
ImGui::Spacing();
- ImGui::Text("PC 0x%04X", top->top__DOT__system__DOT__T80x__DOT__i_tv80_core__DOT__PC);
- ImGui::Text("ACC 0x%04X", top->top__DOT__system__DOT__T80x__DOT__i_tv80_core__DOT__ACC);
+ ImGui::Text("PC 0x%04X", top->emu__DOT__system__DOT__T80x__DOT__i_tv80_core__DOT__PC);
+ ImGui::Text("ACC 0x%04X", top->emu__DOT__system__DOT__T80x__DOT__i_tv80_core__DOT__ACC);
ImGui::End();
video.UpdateTexture();
diff --git a/verilator/verilate.sh b/verilator/verilate.sh
old mode 100644
new mode 100755
index 71b9fe7..3f48b35
--- a/verilator/verilate.sh
+++ b/verilator/verilate.sh
@@ -1,3 +1,6 @@
+
+set -e
+if grep -qEi "(Microsoft|WSL)" /proc/version &> /dev/null ; then
verilator -cc -exe --public --compiler msvc +define+SIMULATION=1 --converge-limit 2000 --top-module emu sim.v \
../rtl/dpram.v \
../rtl/spram.v \
@@ -10,3 +13,8 @@ verilator -cc -exe --public --compiler msvc +define+SIMULATION=1 --converge-limi
../rtl/tv80/tv80_reg.v \
../rtl/tv80/tv80n.v \
../rtl/tv80/tv80s.v
+ else
+ echo "not running on windows"
+fi
+
+