From f9f1c22b4a5ea99e077367623f3db4e60f73334c Mon Sep 17 00:00:00 2001 From: "K.Ohta" Date: Wed, 30 Sep 2015 21:58:33 +0900 Subject: [PATCH] [VM][Qt] Add NEC PC-8201 . --- source/build-cmake/cmake/config_pc8201.cmake | 69 ++++++++++++++++++++++++++++ source/build-cmake/pc8201/CMakeLists.txt | 25 ++++++++++ source/build-cmake/pc8201a/CMakeLists.txt | 25 ++++++++++ source/src/qt/common/qrc/pc8201.qrc | 5 ++ source/src/qt/common/qrc/pc8201a.qrc | 5 ++ source/src/qt/pc8201/CMakeLists.txt | 18 ++++++++ source/src/qt/pc8201/MainWindow.cpp | 59 ++++++++++++++++++++++++ source/src/qt/pc8201/menuclasses.h | 30 ++++++++++++ source/src/vm/pc8201/CMakeLists.txt | 11 +++++ source/src/vm/pc8201/cmt.cpp | 7 +++ 10 files changed, 254 insertions(+) create mode 100644 source/build-cmake/cmake/config_pc8201.cmake create mode 100644 source/build-cmake/pc8201/CMakeLists.txt create mode 100644 source/build-cmake/pc8201a/CMakeLists.txt create mode 100644 source/src/qt/common/qrc/pc8201.qrc create mode 100644 source/src/qt/common/qrc/pc8201a.qrc create mode 100644 source/src/qt/pc8201/CMakeLists.txt create mode 100644 source/src/qt/pc8201/MainWindow.cpp create mode 100644 source/src/qt/pc8201/menuclasses.h create mode 100644 source/src/vm/pc8201/CMakeLists.txt diff --git a/source/build-cmake/cmake/config_pc8201.cmake b/source/build-cmake/cmake/config_pc8201.cmake new file mode 100644 index 000000000..6462deefd --- /dev/null +++ b/source/build-cmake/cmake/config_pc8201.cmake @@ -0,0 +1,69 @@ +# Build Common Sourcecode Project, Agar. +# (C) 2014 K.Ohta +# This is part of , but license is apache 2.2, +# this part was written only me. + +cmake_minimum_required (VERSION 2.8) +cmake_policy(SET CMP0011 NEW) + +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + +set(LOCAL_LIBS vm_pc8201 + vm_vm + common_common + qt_pc8201 + qt_gui + qt_debugger + ) + +set(VMFILES + i8080.cpp + i8155.cpp + + upd1990a.cpp + + io.cpp + pcm1bit.cpp + datarec.cpp + + event.cpp +) + + +set(BUILD_SHARED_LIBS OFF) + +set(BUILD_PC8201 OFF CACHE BOOL "Build on PC-8201") +set(BUILD_PC8201A OFF CACHE BOOL "Build on PC-8201A") +set(USE_CMT_SOUND ON CACHE BOOL "Sound with CMT") + +set(USE_OPENMP ON CACHE BOOL "Build using OpenMP") +set(USE_OPENGL ON CACHE BOOL "Build using OpenGL") + +#set(WITH_DEBUGGER ON CACHE BOOL "Build witn XM7 Debugger.") + +include(detect_target_cpu) +#include(windows-mingw-cross) +# set entry +set(CMAKE_SYSTEM_PROCESSOR ${ARCHITECTURE} CACHE STRING "Set processor to build.") + +if(BUILD_PC8201) + add_definitions(-D_PC8201) + set(EXEC_TARGET emupc8201) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/pc8201.qrc) +elseif(BUILD_PC8201A) + add_definitions(-D_PC8201A) + set(EXEC_TARGET emupc8201a) + set(RESOURCE ${CMAKE_SOURCE_DIR}/../../src/qt/common/qrc/pc8201a.qrc) +endif() +if(USE_CMT_SOUND) + add_definitions(-DDATAREC_SOUND) +endif() + + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/pc8201) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/pc8201) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger) + +include(config_commonsource) + diff --git a/source/build-cmake/pc8201/CMakeLists.txt b/source/build-cmake/pc8201/CMakeLists.txt new file mode 100644 index 000000000..21243a4cb --- /dev/null +++ b/source/build-cmake/pc8201/CMakeLists.txt @@ -0,0 +1,25 @@ +# Build Common Sourcecode Project, Agar. +# (C) 2014 K.Ohta +# This is part of , but license is apache 2.2, +# this part was written only me. + +cmake_minimum_required (VERSION 2.8) +cmake_policy(SET CMP0011 NEW) + +message("") +message("** Start of configure CommonSourceProject,PC8201, Qt **") +message("") + +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + + +project (emupc8201) +set(BUILD_PC8201 ON CACHE BOOL "Build on PC8201") + +include(config_pc8201) + +add_subdirectory(../../src/vm/pc8201 vm/pc8201) +add_subdirectory(../../src/qt/pc8201 qt/pc8201) +add_subdirectory(../../src/qt/debugger qt/debugger) + +add_subdirectory(../../src/qt/common qt/common) diff --git a/source/build-cmake/pc8201a/CMakeLists.txt b/source/build-cmake/pc8201a/CMakeLists.txt new file mode 100644 index 000000000..08f6a4cba --- /dev/null +++ b/source/build-cmake/pc8201a/CMakeLists.txt @@ -0,0 +1,25 @@ +# Build Common Sourcecode Project, Agar. +# (C) 2014 K.Ohta +# This is part of , but license is apache 2.2, +# this part was written only me. + +cmake_minimum_required (VERSION 2.8) +cmake_policy(SET CMP0011 NEW) + +message("") +message("** Start of configure CommonSourceProject,PC8201, Qt **") +message("") + +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + + +project (emupc8201a) +set(BUILD_PC8201A ON CACHE BOOL "Build on PC8201A") + +include(config_pc8201) + +add_subdirectory(../../src/vm/pc8201 vm/pc8201) +add_subdirectory(../../src/qt/pc8201 qt/pc8201) +add_subdirectory(../../src/qt/debugger qt/debugger) + +add_subdirectory(../../src/qt/common qt/common) diff --git a/source/src/qt/common/qrc/pc8201.qrc b/source/src/qt/common/qrc/pc8201.qrc new file mode 100644 index 000000000..bf42c1393 --- /dev/null +++ b/source/src/qt/common/qrc/pc8201.qrc @@ -0,0 +1,5 @@ + + + ../../../res/pc8201.ico + + \ No newline at end of file diff --git a/source/src/qt/common/qrc/pc8201a.qrc b/source/src/qt/common/qrc/pc8201a.qrc new file mode 100644 index 000000000..bf42c1393 --- /dev/null +++ b/source/src/qt/common/qrc/pc8201a.qrc @@ -0,0 +1,5 @@ + + + ../../../res/pc8201.ico + + \ No newline at end of file diff --git a/source/src/qt/pc8201/CMakeLists.txt b/source/src/qt/pc8201/CMakeLists.txt new file mode 100644 index 000000000..4fc8391f5 --- /dev/null +++ b/source/src/qt/pc8201/CMakeLists.txt @@ -0,0 +1,18 @@ +message("* qt/pc8201") + +set(s_qt_pc8201_headers + menuclasses.h +) + +if(USE_QT_5) + QT5_WRAP_CPP(s_qt_pc8201_headers_MOC ${s_qt_pc8201_headers}) +else() + QT4_WRAP_CPP(s_qt_pc8201_headers_MOC ${s_qt_pc8201_headers}) +endif() + +add_library(qt_pc8201 + MainWindow.cpp + ${s_qt_pc8201_headers_MOC} +) + + diff --git a/source/src/qt/pc8201/MainWindow.cpp b/source/src/qt/pc8201/MainWindow.cpp new file mode 100644 index 000000000..e46fa5301 --- /dev/null +++ b/source/src/qt/pc8201/MainWindow.cpp @@ -0,0 +1,59 @@ +/* + * Common Source code Project: + * Ui->Qt->MainWindow for PC8201 . + * (C) 2015 K.Ohta + * License : GPLv2 + * History : + * Jan 14, 2015 : Initial, many of constructors were moved to qt/gui/menu_main.cpp. + */ + +#include +#include +#include "emu.h" +#include "commonclasses.h" +#include "menuclasses.h" +#include "qt_main.h" + + +void META_MainWindow::setupUI_Emu(void) +{ + +} + +void META_MainWindow::retranslateUi(void) +{ + int i; + retranslateControlMenu("System Reset", false); + retranslateCMTMenu(); + retranslateSoundMenu(); + retranslateScreenMenu(); + + this->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0)); + + actionAbout->setText(QApplication::translate("MainWindow", "About...", 0)); + + menuEmulator->setTitle(QApplication::translate("MainWindow", "Emulator", 0)); + menuMachine->setTitle(QApplication::translate("MainWindow", "Machine", 0)); + + menuHELP->setTitle(QApplication::translate("MainWindow", "HELP", 0)); + actionHelp_AboutQt->setText(QApplication::translate("MainWindow", "About Qt", 0)); + // Set Labels +} // retranslateUi + + + +META_MainWindow::META_MainWindow(QWidget *parent) : Ui_MainWindow(parent) +{ + setupUI_Emu(); + retranslateUi(); +} + + +META_MainWindow::~META_MainWindow() +{ +} + +//QT_END_NAMESPACE + + + diff --git a/source/src/qt/pc8201/menuclasses.h b/source/src/qt/pc8201/menuclasses.h new file mode 100644 index 000000000..abe8b56bd --- /dev/null +++ b/source/src/qt/pc8201/menuclasses.h @@ -0,0 +1,30 @@ + + + +#ifndef _CSP_QT_MENUCLASSES_H +#define _CSP_QT_MENUCLASSES_H + +#include "emu.h" +#include "mainwidget.h" +// This extends class CSP_MainWindow as Ui_MainWindow. +// You may use this as +QT_BEGIN_NAMESPACE + +class Ui_MainWindow; + +class META_MainWindow : public Ui_MainWindow { + Q_OBJECT + protected: + void setupUI_Emu(void); + void retranslateUi(void); + + public: + META_MainWindow(QWidget *parent = 0); + ~META_MainWindow(); +public slots: + +}; + +QT_END_NAMESPACE + +#endif // END diff --git a/source/src/vm/pc8201/CMakeLists.txt b/source/src/vm/pc8201/CMakeLists.txt new file mode 100644 index 000000000..4c5f4efa5 --- /dev/null +++ b/source/src/vm/pc8201/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required (VERSION 2.6) + +message("* vm/pc8201") + +add_library(vm_pc8201 + pc8201.cpp + cmt.cpp + keyboard.cpp + lcd.cpp + memory.cpp +) diff --git a/source/src/vm/pc8201/cmt.cpp b/source/src/vm/pc8201/cmt.cpp index b6a92a867..247e8e8de 100644 --- a/source/src/vm/pc8201/cmt.cpp +++ b/source/src/vm/pc8201/cmt.cpp @@ -11,6 +11,13 @@ #define SAMPLE_RATE 48000 +#if !defined(MSC_VER) +static inline int min(int a, int b) +{ + if(a < b) return a; + return b; +} +#endif void CMT::initialize() { fio = new FILEIO(); -- 2.11.0