OSDN Git Service

[General] Add upstream 2022-06-08 .
authorK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 17 Jan 2023 11:41:49 +0000 (20:41 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 17 Jan 2023 11:41:49 +0000 (20:41 +0900)
This adds VM; eCRC80.

53 files changed:
doc/VMs/crc80.txt [new file with mode: 0644]
source/cmake/config_singleboards.cmake
source/history.txt
source/readme.txt
source/revision.txt
source/src/qt/common/qrc/crc80.qrc [new file with mode: 0644]
source/src/qt/machines/crc80/CMakeLists.txt [new file with mode: 0644]
source/src/qt/machines/crc80/MainWindow.cpp [new file with mode: 0644]
source/src/qt/machines/crc80/crc80.ja_JP.ts [new file with mode: 0644]
source/src/qt/machines/crc80/menuclasses.h [new file with mode: 0644]
source/src/qt/machines/m23/MainWindow.cpp
source/src/res/crc80.rc [new file with mode: 0644]
source/src/res/crc80/board.png [new file with mode: 0644]
source/src/res/crc80/button00.png [new file with mode: 0644]
source/src/res/crc80/button01.png [new file with mode: 0644]
source/src/res/crc80/button02.png [new file with mode: 0644]
source/src/res/crc80/button03.png [new file with mode: 0644]
source/src/res/crc80/button04.png [new file with mode: 0644]
source/src/res/crc80/button05.png [new file with mode: 0644]
source/src/res/crc80/button06.png [new file with mode: 0644]
source/src/res/crc80/button07.png [new file with mode: 0644]
source/src/res/crc80/button08.png [new file with mode: 0644]
source/src/res/crc80/button09.png [new file with mode: 0644]
source/src/res/crc80/button10.png [new file with mode: 0644]
source/src/res/crc80/button11.png [new file with mode: 0644]
source/src/res/crc80/button12.png [new file with mode: 0644]
source/src/res/crc80/button13.png [new file with mode: 0644]
source/src/res/crc80/button14.png [new file with mode: 0644]
source/src/res/crc80/button15.png [new file with mode: 0644]
source/src/res/crc80/button16.png [new file with mode: 0644]
source/src/res/crc80/button17.png [new file with mode: 0644]
source/src/res/crc80/button18.png [new file with mode: 0644]
source/src/res/crc80/button19.png [new file with mode: 0644]
source/src/res/crc80/button20.png [new file with mode: 0644]
source/src/res/crc80/button21.png [new file with mode: 0644]
source/src/res/crc80/button22.png [new file with mode: 0644]
source/src/res/crc80/button23.png [new file with mode: 0644]
source/src/res/crc80/button24.png [new file with mode: 0644]
source/src/res/credits.html
source/src/res/i18n/ja/crc80.ja_JP.qm [new file with mode: 0644]
source/src/vm/crc80/CMakeLists.txt [new file with mode: 0644]
source/src/vm/crc80/crc80.cpp [new file with mode: 0644]
source/src/vm/crc80/crc80.h [new file with mode: 0644]
source/src/vm/crc80/display.cpp [new file with mode: 0644]
source/src/vm/crc80/display.h [new file with mode: 0644]
source/src/vm/crc80/membus.cpp [new file with mode: 0644]
source/src/vm/crc80/membus.h [new file with mode: 0644]
source/src/vm/vm.h
source/vc++2008/build9.bat
source/vc++2008/crc80.vcproj [new file with mode: 0644]
source/vc++2017/build15.bat
source/vc++2017/crc80.vcxproj [new file with mode: 0644]
source/vc++2017/crc80.vcxproj.filters [new file with mode: 0644]

diff --git a/doc/VMs/crc80.txt b/doc/VMs/crc80.txt
new file mode 100644 (file)
index 0000000..d2f9fa5
--- /dev/null
@@ -0,0 +1,28 @@
+"eCRC-80" - Computer Research CRC-80 Emulator for Win32
+                                                               6/8/2022
+
+--- Internal ROM images
+
+       MON.ROM         $0000-$03FF
+       TTY.ROM         $0400-$07FF
+       EXT.ROM         $0800-$0BFF
+
+
+--- Key maps
+
+       Virtual         PC
+       --------------------------------
+       GO              F1
+       DA              F2
+       AD              F3
+       INC             F4
+       DEC             F5
+       LD              F6
+       STP             F7
+       ST              F8
+       0-9,A-F         0-9,A-F
+
+----------------------------------------
+TAKEDA, toshiya
+t-takeda@m1.interq.or.jp
+http://takeda-toshiya.my.coocan.jp/
index 40267ce..780b769 100644 (file)
@@ -1,4 +1,5 @@
 set(BUILD_BABBAGE2ND ON CACHE BOOL "Build Gijutsu-Hyoron-Sha Babbage-2nd")
+set(BUILD_CRC80 ON CACHE BOOL "Build Computer Research CRC-80")
 set(BUILD_MP85 ON CACHE BOOL "Build MITEC MP-85")
 set(BUILD_SMB80TE ON CACHE BOOL "Build SHARP SM-B-80TE")
 set(BUILD_TK80 ON CACHE BOOL "Build NEC TK-80")
@@ -10,6 +11,12 @@ if(BUILD_BABBAGE2ND)
        set(RESOURCE ${PROJECT_SOURCE_DIR}/src/qt/common/qrc/babbage2nd.qrc)
        ADD_VM(babbage2nd emubabbage2nd _BABBAGE2ND)
 endif()
+
+if(BUILD_CRC80)
+       set(RESOURCE ${PROJECT_SOURCE_DIR}/src/qt/common/qrc/crc80.qrc)
+       ADD_VM(crc80 emucrc80 _CRC80)
+endif()
+
 if(BUILD_MP85)
        set(RESOURCE ${PROJECT_SOURCE_DIR}/src/qt/common/qrc/mp85.qrc)
        ADD_VM(mp85 emump85 _MP85)
index 6f5f005..8fc819b 100644 (file)
@@ -1,3 +1,8 @@
+6/8/2022
+
+[CRC80] support Computer Research CRC-80
+
+
 5/29/2022
 
 [M23/DISPLAY] add pseudo jis font image
index 583fbf4..403b10c 100644 (file)
@@ -1,5 +1,5 @@
 retro pc emulator common source code
-                                                               5/25/2022
+                                                               6/8/2022
 
 --- What's this ?
 
@@ -22,6 +22,8 @@ This archive includes the all source codes of emulators listed below:
                EmuGaki         PV-2000
        COLECO
                yaCOLECOVISION  ColecoVision
+       Computer Research
+               eCRC-80         CRC-80
        EPOCH
                eSCV            Super Cassette Vision
        EPSON
index 3ce4982..7a4a5b1 100644 (file)
@@ -1,3 +1,3 @@
-<B><FONT SIZE=-1>Upstream 2022-05-29<BR>
-Qt Port and FM7 series 2023-01-14-tmp<BR>
+<B><FONT SIZE=-1>Upstream 2022-06-08<BR>
+Qt Port and FM7 series 2023-01-17-tmp<BR>
 </FONT></B>
diff --git a/source/src/qt/common/qrc/crc80.qrc b/source/src/qt/common/qrc/crc80.qrc
new file mode 100644 (file)
index 0000000..ec69821
--- /dev/null
@@ -0,0 +1,33 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file alias="background.png">../../../res/crc80/board.png</file>
+    <file alias="default.ico">../../../res/crc80.ico</file>
+    <file alias="bios_and_keys.txt">../../../../../doc/VMs/crc80.txt</file>
+    <file alias="button00.png">../../../res/crc80/button00.png</file>
+    <file alias="button01.png">../../../res/crc80/button01.png</file>
+    <file alias="button02.png">../../../res/crc80/button02.png</file>
+    <file alias="button03.png">../../../res/crc80/button03.png</file>
+    <file alias="button04.png">../../../res/crc80/button04.png</file>
+    <file alias="button05.png">../../../res/crc80/button05.png</file>
+    <file alias="button06.png">../../../res/crc80/button06.png</file>
+    <file alias="button07.png">../../../res/crc80/button07.png</file>
+    <file alias="button08.png">../../../res/crc80/button08.png</file>
+    <file alias="button09.png">../../../res/crc80/button09.png</file>
+    <file alias="button10.png">../../../res/crc80/button10.png</file>
+    <file alias="button11.png">../../../res/crc80/button11.png</file>
+    <file alias="button12.png">../../../res/crc80/button12.png</file>
+    <file alias="button13.png">../../../res/crc80/button13.png</file>
+    <file alias="button14.png">../../../res/crc80/button14.png</file>
+    <file alias="button15.png">../../../res/crc80/button15.png</file>
+    <file alias="button16.png">../../../res/crc80/button16.png</file>
+    <file alias="button17.png">../../../res/crc80/button17.png</file>
+    <file alias="button18.png">../../../res/crc80/button18.png</file>
+    <file alias="button19.png">../../../res/crc80/button19.png</file>
+    <file alias="button20.png">../../../res/crc80/button20.png</file>
+    <file alias="button21.png">../../../res/crc80/button21.png</file>
+    <file alias="button22.png">../../../res/crc80/button22.png</file>
+    <file alias="button23.png">../../../res/crc80/button23.png</file>
+    <file alias="button24.png">../../../res/crc80/button24.png</file>
+    <file alias="machine.ja_JP.qm">../../../res/i18n/ja/crc80.ja_JP.qm</file>
+</qresource>
+</RCC>
diff --git a/source/src/qt/machines/crc80/CMakeLists.txt b/source/src/qt/machines/crc80/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9425452
--- /dev/null
@@ -0,0 +1,14 @@
+message("* qt/${EXE_NAME}")
+
+set(s_qt_${EXE_NAME}_headers
+         menuclasses.h
+)
+
+MAKE_WRAP_CPP(s_qt_${EXE_NAME}_headers_MOC ${s_qt_${EXE_NAME}_headers})
+
+add_library(qt_${EXE_NAME}
+         MainWindow.cpp
+         ${s_qt_${EXE_NAME}_headers_MOC}
+)
+
+
diff --git a/source/src/qt/machines/crc80/MainWindow.cpp b/source/src/qt/machines/crc80/MainWindow.cpp
new file mode 100644 (file)
index 0000000..94361d2
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Common Source code Project:
+ * Ui->Qt->MainWindow for COMPUTER RESEARCH CRC-80.
+ * (C) 2023 K.Ohta <whatisthis.sowhat _at_ gmail.com>
+ *   License : GPLv2
+ *   History :
+ * Jan 17, 2023 : Split from eM23
+ */
+
+#include <QApplication>
+#include <QVariant>
+#include <QtGui>
+#include <QMenu>
+
+#include "config.h"
+#include "commonclasses.h"
+#include "menuclasses.h"
+#include "emu.h"
+#include "qt_main.h"
+#include "menu_cmt.h"
+#include "menu_binary.h"
+
+extern config_t config;
+//QT_BEGIN_NAMESPACE
+
+void META_MainWindow::retranslateUi(void)
+{
+       Ui_MainWindowBase::retranslateUi();
+       retranslateControlMenu("", false);
+
+#if defined(USE_DIPSWITCH)
+       action_DipSWs[0]->setText(QApplication::translate("MachineCRC80", "SW1: STEP", 0));
+       action_DipSWs[1]->setText(QApplication::translate("MachineCRC80", "SW2: TTY", 0));
+       for(int i = 0; i < 2; i++) {
+               action_DipSWs[i]->setVisible(true);
+       }
+#endif 
+#ifdef USE_DEBUGGER
+       actionDebugger[0]->setVisible(true);
+       actionDebugger[1]->setVisible(false);
+       actionDebugger[2]->setVisible(false);
+       actionDebugger[3]->setVisible(false);
+#endif
+       
+} // retranslateUi
+
+void META_MainWindow::setupUI_Emu(void)
+{
+       for(int i = 0; i < 2; i++) {
+               action_DipSWs[i] = nullptr;
+       }
+       menuMachine->addSeparator();
+       uint32_t _bit = 0x00000001;
+       for(int i = 0; i < 2; i++) {
+               SET_ACTION_SINGLE_DIPSWITCH_CONNECT(action_DipSWs[i], _bit,
+                                                                               p_config->dipswitch,
+                                                                               SIGNAL(toggled(bool)),
+                                                                               SLOT(do_set_single_dipswitch(bool)));
+               menuMachine->addAction(action_DipSWs[i]);
+               _bit <<= 1;
+       }
+
+}
+
+
+META_MainWindow::META_MainWindow(std::shared_ptr<USING_FLAGS> p, std::shared_ptr<CSP_Logger> logger, QWidget *parent) : Ui_MainWindow(p, logger, parent)
+{
+       setupUI_Emu();
+       retranslateUi();
+}
+
+
+META_MainWindow::~META_MainWindow()
+{
+}
+
+//QT_END_NAMESPACE
+
+
+
diff --git a/source/src/qt/machines/crc80/crc80.ja_JP.ts b/source/src/qt/machines/crc80/crc80.ja_JP.ts
new file mode 100644 (file)
index 0000000..39de03b
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ja_JP">
+<context>
+    <name>MachineCRC80</name>
+    <message>
+        <location filename="MainWindow.cpp" line="32"/>
+        <source>SW1: STEP</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="MainWindow.cpp" line="33"/>
+        <source>SW2: TTY</source>
+        <translation></translation>
+    </message>
+</context>
+</TS>
diff --git a/source/src/qt/machines/crc80/menuclasses.h b/source/src/qt/machines/crc80/menuclasses.h
new file mode 100644 (file)
index 0000000..35181ec
--- /dev/null
@@ -0,0 +1,29 @@
+
+#ifndef _CSP_QT_MENUCLASSES_H
+#define _CSP_QT_MENUCLASSES_H
+
+#include "mainwidget.h"
+#include "commonclasses.h"
+// This extends class CSP_MainWindow as Ui_MainWindow.
+// You may use this as 
+QT_BEGIN_NAMESPACE
+
+class Ui_MainWindow;
+class USING_FLAGS;
+class CSP_Logger;
+class META_MainWindow : public Ui_MainWindow {
+       Q_OBJECT
+protected:
+       Action_Control *action_DipSWs[2];
+       
+       void setupUI_Emu(void);
+       void retranslateUi(void);
+public:
+       META_MainWindow(std::shared_ptr<USING_FLAGS> p, std::shared_ptr<CSP_Logger> logger, QWidget *parent = 0);
+       ~META_MainWindow();
+public slots:
+};
+
+QT_END_NAMESPACE
+
+#endif // END
index 2260620..52d7ff5 100644 (file)
@@ -1,10 +1,10 @@
 /*
  * Common Source code Project:
- * Ui->Qt->MainWindow for SORE M23 / M68.
- * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
+ * Ui->Qt->MainWindow for SORD M23 / M68.
+ * (C) 2023 K.Ohta <whatisthis.sowhat _at_ gmail.com>
  *   License : GPLv2
  *   History :
- * Jan 14, 2022 : Split from eMP85
+ * Jan 14, 2023 : Split from eMP85
  */
 
 #include <QApplication>
diff --git a/source/src/res/crc80.rc b/source/src/res/crc80.rc
new file mode 100644 (file)
index 0000000..78e5081
--- /dev/null
@@ -0,0 +1,272 @@
+// Microsoft Visual C++ generated resource script.\r
+//\r
+#include "resource.h"\r
+\r
+#define APSTUDIO_READONLY_SYMBOLS\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 2 resource.\r
+//\r
+#include "afxres.h"\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+#undef APSTUDIO_READONLY_SYMBOLS\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// Japanese resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT\r
+#pragma code_page(932)\r
+#endif //_WIN32\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// TEXTINCLUDE\r
+//\r
+\r
+1 TEXTINCLUDE DISCARDABLE \r
+BEGIN\r
+    "resource.h\0"\r
+END\r
+\r
+2 TEXTINCLUDE DISCARDABLE \r
+BEGIN\r
+    "#include ""afxres.h""\r\n"\r
+    "\0"\r
+END\r
+\r
+3 TEXTINCLUDE DISCARDABLE \r
+BEGIN\r
+    "\r\n"\r
+    "\0"\r
+END\r
+\r
+#endif    // APSTUDIO_INVOKED\r
+\r
+#endif    // Japanese resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// English (U.S.) resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
+#pragma code_page(1252)\r
+#endif //_WIN32\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Accelerator\r
+//\r
+\r
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE \r
+BEGIN\r
+    VK_RETURN,      ID_ACCEL_SCREEN,        VIRTKEY, ALT, NOINVERT\r
+    VK_APPS,        ID_ACCEL_SPEED,         VIRTKEY, NOINVERT\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Menu\r
+//\r
+\r
+IDR_MENU1 MENU DISCARDABLE \r
+BEGIN\r
+    POPUP "Control"\r
+    BEGIN\r
+        MENUITEM "Reset",                       ID_RESET\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "CPU x1",                      ID_CPU_POWER0\r
+        MENUITEM "CPU x2",                      ID_CPU_POWER1\r
+        MENUITEM "CPU x4",                      ID_CPU_POWER2\r
+        MENUITEM "CPU x8",                      ID_CPU_POWER3\r
+        MENUITEM "CPU x16",                     ID_CPU_POWER4\r
+        MENUITEM "Full Speed",                  ID_FULL_SPEED\r
+        MENUITEM SEPARATOR\r
+        POPUP "Save State"\r
+        BEGIN\r
+            MENUITEM "State 0",                 ID_SAVE_STATE0\r
+            MENUITEM "State 1",                 ID_SAVE_STATE1\r
+            MENUITEM "State 2",                 ID_SAVE_STATE2\r
+            MENUITEM "State 3",                 ID_SAVE_STATE3\r
+            MENUITEM "State 4",                 ID_SAVE_STATE4\r
+            MENUITEM "State 5",                 ID_SAVE_STATE5\r
+            MENUITEM "State 6",                 ID_SAVE_STATE6\r
+            MENUITEM "State 7",                 ID_SAVE_STATE7\r
+            MENUITEM "State 8",                 ID_SAVE_STATE8\r
+            MENUITEM "State 9",                 ID_SAVE_STATE9\r
+        END\r
+        POPUP "Load State"\r
+        BEGIN\r
+            MENUITEM "State 0",                 ID_LOAD_STATE0\r
+            MENUITEM "State 1",                 ID_LOAD_STATE1\r
+            MENUITEM "State 2",                 ID_LOAD_STATE2\r
+            MENUITEM "State 3",                 ID_LOAD_STATE3\r
+            MENUITEM "State 4",                 ID_LOAD_STATE4\r
+            MENUITEM "State 5",                 ID_LOAD_STATE5\r
+            MENUITEM "State 6",                 ID_LOAD_STATE6\r
+            MENUITEM "State 7",                 ID_LOAD_STATE7\r
+            MENUITEM "State 8",                 ID_LOAD_STATE8\r
+            MENUITEM "State 9",                 ID_LOAD_STATE9\r
+        END\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "Debug Main CPU",              ID_OPEN_DEBUGGER0\r
+        MENUITEM "Close Debugger",              ID_CLOSE_DEBUGGER\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "Exit",                        ID_EXIT\r
+    END\r
+    POPUP "CMT"\r
+    BEGIN\r
+        MENUITEM "Play",                        ID_PLAY_TAPE1\r
+        MENUITEM "Rec",                         ID_REC_TAPE1\r
+        MENUITEM "Eject",                       ID_CLOSE_TAPE1\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "Play Button",                 ID_PLAY_BUTTON1\r
+        MENUITEM "Stop Button",                 ID_STOP_BUTTON1\r
+        MENUITEM "Fast Forward",                ID_FAST_FORWARD1\r
+        MENUITEM "Fast Rewind",                 ID_FAST_REWIND1\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "Waveform Shaper",             ID_USE_WAVE_SHAPER1\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "Recent",                      ID_RECENT_TAPE1\r
+    END\r
+    POPUP "RAM"\r
+    BEGIN\r
+        MENUITEM "Load",                        ID_LOAD_BINARY1\r
+        MENUITEM "Save",                        ID_SAVE_BINARY1\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "Recent",                      ID_RECENT_BINARY1\r
+    END\r
+    POPUP "Device"\r
+    BEGIN\r
+        POPUP "DIP Switch"\r
+        BEGIN\r
+            MENUITEM "SW1: STEP",               ID_VM_DIPSWITCH0\r
+            MENUITEM "SW2: TTY",                ID_VM_DIPSWITCH1\r
+        END\r
+        POPUP "Sound"\r
+        BEGIN\r
+            MENUITEM "Play CMT Noise",          ID_VM_SOUND_NOISE_CMT\r
+            MENUITEM "Play CMT Signal",         ID_VM_SOUND_TAPE_SIGNAL\r
+            MENUITEM "Play CMT Voice",          ID_VM_SOUND_TAPE_VOICE\r
+        END\r
+    END\r
+    POPUP "Host"\r
+    BEGIN\r
+        MENUITEM "Rec Sound",                   ID_HOST_REC_SOUND\r
+        MENUITEM "Stop",                        ID_HOST_REC_STOP\r
+        MENUITEM "Capture Screen",              ID_HOST_CAPTURE_SCREEN\r
+        MENUITEM SEPARATOR\r
+        POPUP "Sound"\r
+        BEGIN\r
+            MENUITEM "2000Hz",                  ID_SOUND_FREQ0\r
+            MENUITEM "4000Hz",                  ID_SOUND_FREQ1\r
+            MENUITEM "8000Hz",                  ID_SOUND_FREQ2\r
+            MENUITEM "11025Hz",                 ID_SOUND_FREQ3\r
+            MENUITEM "22050Hz",                 ID_SOUND_FREQ4\r
+            MENUITEM "44100Hz",                 ID_SOUND_FREQ5\r
+            MENUITEM "48000Hz",                 ID_SOUND_FREQ6\r
+            MENUITEM "96000Hz",                 ID_SOUND_FREQ7\r
+            MENUITEM SEPARATOR\r
+            MENUITEM "50msec",                  ID_SOUND_LATE0\r
+            MENUITEM "100msec",                 ID_SOUND_LATE1\r
+            MENUITEM "200msec",                 ID_SOUND_LATE2\r
+            MENUITEM "300msec",                 ID_SOUND_LATE3\r
+            MENUITEM "400msec",                 ID_SOUND_LATE4\r
+            MENUITEM SEPARATOR\r
+            MENUITEM "Realtime Mix",            ID_SOUND_STRICT_RENDER\r
+            MENUITEM "Light Weight Mix",        ID_SOUND_LIGHT_RENDER\r
+            MENUITEM SEPARATOR\r
+            MENUITEM "Volume",                  ID_SOUND_VOLUME\r
+        END\r
+        MENUITEM SEPARATOR\r
+        MENUITEM "Use DirectInput",             ID_HOST_USE_DINPUT\r
+        MENUITEM "Disable Windows 8 DWM",       ID_HOST_DISABLE_DWM\r
+        MENUITEM "Show Status Bar",             ID_HOST_SHOW_STATUS_BAR\r
+    END\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Icon\r
+//\r
+\r
+IDI_BITMAP_BOARD        IMAGE   DISCARDABLE     "crc80/board.png"\r
+IDI_BITMAP_BUTTON00     IMAGE   DISCARDABLE     "crc80/button00.png"\r
+IDI_BITMAP_BUTTON01     IMAGE   DISCARDABLE     "crc80/button01.png"\r
+IDI_BITMAP_BUTTON02     IMAGE   DISCARDABLE     "crc80/button02.png"\r
+IDI_BITMAP_BUTTON03     IMAGE   DISCARDABLE     "crc80/button03.png"\r
+IDI_BITMAP_BUTTON04     IMAGE   DISCARDABLE     "crc80/button04.png"\r
+IDI_BITMAP_BUTTON05     IMAGE   DISCARDABLE     "crc80/button05.png"\r
+IDI_BITMAP_BUTTON06     IMAGE   DISCARDABLE     "crc80/button06.png"\r
+IDI_BITMAP_BUTTON07     IMAGE   DISCARDABLE     "crc80/button07.png"\r
+IDI_BITMAP_BUTTON08     IMAGE   DISCARDABLE     "crc80/button08.png"\r
+IDI_BITMAP_BUTTON09     IMAGE   DISCARDABLE     "crc80/button09.png"\r
+IDI_BITMAP_BUTTON10     IMAGE   DISCARDABLE     "crc80/button10.png"\r
+IDI_BITMAP_BUTTON11     IMAGE   DISCARDABLE     "crc80/button11.png"\r
+IDI_BITMAP_BUTTON12     IMAGE   DISCARDABLE     "crc80/button12.png"\r
+IDI_BITMAP_BUTTON13     IMAGE   DISCARDABLE     "crc80/button13.png"\r
+IDI_BITMAP_BUTTON14     IMAGE   DISCARDABLE     "crc80/button14.png"\r
+IDI_BITMAP_BUTTON15     IMAGE   DISCARDABLE     "crc80/button15.png"\r
+IDI_BITMAP_BUTTON16     IMAGE   DISCARDABLE     "crc80/button16.png"\r
+IDI_BITMAP_BUTTON17     IMAGE   DISCARDABLE     "crc80/button17.png"\r
+IDI_BITMAP_BUTTON18     IMAGE   DISCARDABLE     "crc80/button18.png"\r
+IDI_BITMAP_BUTTON19     IMAGE   DISCARDABLE     "crc80/button19.png"\r
+IDI_BITMAP_BUTTON20     IMAGE   DISCARDABLE     "crc80/button20.png"\r
+IDI_BITMAP_BUTTON21     IMAGE   DISCARDABLE     "crc80/button21.png"\r
+IDI_BITMAP_BUTTON22     IMAGE   DISCARDABLE     "crc80/button22.png"\r
+IDI_BITMAP_BUTTON23     IMAGE   DISCARDABLE     "crc80/button23.png"\r
+IDI_BITMAP_BUTTON24     IMAGE   DISCARDABLE     "crc80/button24.png"\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Icon\r
+//\r
+\r
+// Icon with lowest ID value placed first to ensure application icon\r
+// remains consistent on all systems.\r
+IDI_ICON1               ICON    DISCARDABLE     "crc80.ico"\r
+#endif    // English (U.S.) resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Dialog\r
+//\r
+\r
+IDD_VOLUME DIALOG DISCARDABLE  0, 0, 250, 90\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Volume"\r
+FONT 9, "MS PGothic"\r
+BEGIN\r
+    LTEXT           "Sound Device #1",IDC_VOLUME_CAPTION0,6,6,60,8\r
+    CONTROL         "",IDC_VOLUME_PARAM_L0,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,6,175,12\r
+    CONTROL         "",IDC_VOLUME_PARAM_R0,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,21,175,12\r
+    LTEXT           "Sound Device #2",IDC_VOLUME_CAPTION1,6,36,60,8\r
+    CONTROL         "",IDC_VOLUME_PARAM_L1,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,36,175,12\r
+    CONTROL         "",IDC_VOLUME_PARAM_R1,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,51,175,12\r
+    DEFPUSHBUTTON   "OK",IDOK,70,70,50,14\r
+    DEFPUSHBUTTON   "Reset",IDC_VOLUME_RESET,130,70,50,14\r
+END\r
+\r
+\r
+\r
+#ifndef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 3 resource.\r
+//\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+#endif    // not APSTUDIO_INVOKED\r
+\r
diff --git a/source/src/res/crc80/board.png b/source/src/res/crc80/board.png
new file mode 100644 (file)
index 0000000..6ababc9
Binary files /dev/null and b/source/src/res/crc80/board.png differ
diff --git a/source/src/res/crc80/button00.png b/source/src/res/crc80/button00.png
new file mode 100644 (file)
index 0000000..8328b56
Binary files /dev/null and b/source/src/res/crc80/button00.png differ
diff --git a/source/src/res/crc80/button01.png b/source/src/res/crc80/button01.png
new file mode 100644 (file)
index 0000000..1312084
Binary files /dev/null and b/source/src/res/crc80/button01.png differ
diff --git a/source/src/res/crc80/button02.png b/source/src/res/crc80/button02.png
new file mode 100644 (file)
index 0000000..30bb765
Binary files /dev/null and b/source/src/res/crc80/button02.png differ
diff --git a/source/src/res/crc80/button03.png b/source/src/res/crc80/button03.png
new file mode 100644 (file)
index 0000000..68be4c4
Binary files /dev/null and b/source/src/res/crc80/button03.png differ
diff --git a/source/src/res/crc80/button04.png b/source/src/res/crc80/button04.png
new file mode 100644 (file)
index 0000000..925faf4
Binary files /dev/null and b/source/src/res/crc80/button04.png differ
diff --git a/source/src/res/crc80/button05.png b/source/src/res/crc80/button05.png
new file mode 100644 (file)
index 0000000..f5d932c
Binary files /dev/null and b/source/src/res/crc80/button05.png differ
diff --git a/source/src/res/crc80/button06.png b/source/src/res/crc80/button06.png
new file mode 100644 (file)
index 0000000..eeadf1c
Binary files /dev/null and b/source/src/res/crc80/button06.png differ
diff --git a/source/src/res/crc80/button07.png b/source/src/res/crc80/button07.png
new file mode 100644 (file)
index 0000000..68889f5
Binary files /dev/null and b/source/src/res/crc80/button07.png differ
diff --git a/source/src/res/crc80/button08.png b/source/src/res/crc80/button08.png
new file mode 100644 (file)
index 0000000..d63990b
Binary files /dev/null and b/source/src/res/crc80/button08.png differ
diff --git a/source/src/res/crc80/button09.png b/source/src/res/crc80/button09.png
new file mode 100644 (file)
index 0000000..d4cb3b3
Binary files /dev/null and b/source/src/res/crc80/button09.png differ
diff --git a/source/src/res/crc80/button10.png b/source/src/res/crc80/button10.png
new file mode 100644 (file)
index 0000000..b333d88
Binary files /dev/null and b/source/src/res/crc80/button10.png differ
diff --git a/source/src/res/crc80/button11.png b/source/src/res/crc80/button11.png
new file mode 100644 (file)
index 0000000..866bee5
Binary files /dev/null and b/source/src/res/crc80/button11.png differ
diff --git a/source/src/res/crc80/button12.png b/source/src/res/crc80/button12.png
new file mode 100644 (file)
index 0000000..5e49896
Binary files /dev/null and b/source/src/res/crc80/button12.png differ
diff --git a/source/src/res/crc80/button13.png b/source/src/res/crc80/button13.png
new file mode 100644 (file)
index 0000000..d30f6d2
Binary files /dev/null and b/source/src/res/crc80/button13.png differ
diff --git a/source/src/res/crc80/button14.png b/source/src/res/crc80/button14.png
new file mode 100644 (file)
index 0000000..7b3b38a
Binary files /dev/null and b/source/src/res/crc80/button14.png differ
diff --git a/source/src/res/crc80/button15.png b/source/src/res/crc80/button15.png
new file mode 100644 (file)
index 0000000..7c5f0e6
Binary files /dev/null and b/source/src/res/crc80/button15.png differ
diff --git a/source/src/res/crc80/button16.png b/source/src/res/crc80/button16.png
new file mode 100644 (file)
index 0000000..a5ed259
Binary files /dev/null and b/source/src/res/crc80/button16.png differ
diff --git a/source/src/res/crc80/button17.png b/source/src/res/crc80/button17.png
new file mode 100644 (file)
index 0000000..4e61d63
Binary files /dev/null and b/source/src/res/crc80/button17.png differ
diff --git a/source/src/res/crc80/button18.png b/source/src/res/crc80/button18.png
new file mode 100644 (file)
index 0000000..80dd946
Binary files /dev/null and b/source/src/res/crc80/button18.png differ
diff --git a/source/src/res/crc80/button19.png b/source/src/res/crc80/button19.png
new file mode 100644 (file)
index 0000000..c22d0ad
Binary files /dev/null and b/source/src/res/crc80/button19.png differ
diff --git a/source/src/res/crc80/button20.png b/source/src/res/crc80/button20.png
new file mode 100644 (file)
index 0000000..ffde66b
Binary files /dev/null and b/source/src/res/crc80/button20.png differ
diff --git a/source/src/res/crc80/button21.png b/source/src/res/crc80/button21.png
new file mode 100644 (file)
index 0000000..99d5bc7
Binary files /dev/null and b/source/src/res/crc80/button21.png differ
diff --git a/source/src/res/crc80/button22.png b/source/src/res/crc80/button22.png
new file mode 100644 (file)
index 0000000..7deed8c
Binary files /dev/null and b/source/src/res/crc80/button22.png differ
diff --git a/source/src/res/crc80/button23.png b/source/src/res/crc80/button23.png
new file mode 100644 (file)
index 0000000..ed27844
Binary files /dev/null and b/source/src/res/crc80/button23.png differ
diff --git a/source/src/res/crc80/button24.png b/source/src/res/crc80/button24.png
new file mode 100644 (file)
index 0000000..032af93
Binary files /dev/null and b/source/src/res/crc80/button24.png differ
index 713d180..56d1745 100644 (file)
@@ -18,8 +18,8 @@
 </FONT>
 
 <DIV ALIGN=RIGHT><FONT SIZE=4>
-Upstream Version: 2022-05-29<BR>
-Qt Port and FM7 series 2023-01-14-tmp<BR>
+Upstream Version: 2022-06-08<BR>
+Qt Port and FM7 series 2023-01-17-tmp<BR>
 FFMPEG 5.1 + liblame 3.100 + libx264-164<BR>
 @@RevisionString@@
 </FONT></DIV>
diff --git a/source/src/res/i18n/ja/crc80.ja_JP.qm b/source/src/res/i18n/ja/crc80.ja_JP.qm
new file mode 100644 (file)
index 0000000..30f8fa6
Binary files /dev/null and b/source/src/res/i18n/ja/crc80.ja_JP.qm differ
diff --git a/source/src/vm/crc80/CMakeLists.txt b/source/src/vm/crc80/CMakeLists.txt
new file mode 100644 (file)
index 0000000..3dc80fa
--- /dev/null
@@ -0,0 +1,9 @@
+cmake_minimum_required (VERSION 3.0)
+
+message("* vm/crc80")
+
+add_library(vm_emucrc80
+       display.cpp
+       membus.cpp
+       crc80.cpp
+)
diff --git a/source/src/vm/crc80/crc80.cpp b/source/src/vm/crc80/crc80.cpp
new file mode 100644 (file)
index 0000000..d78cc92
--- /dev/null
@@ -0,0 +1,340 @@
+/*
+       Computer Research CRC-80 Emulator 'eCRC-80'
+
+       Author : Takeda.Toshiya
+       Date   : 2022.06.05-
+
+       [ virtual machine ]
+*/
+
+#include "./crc80.h"
+#include "../../emu.h"
+#include "../device.h"
+#include "../event.h"
+
+#include "../datarec.h"
+#include "../io.h"
+#include "../memory.h"
+#include "../noise.h"
+#include "../not.h"
+#include "../z80.h"
+#include "../z80pio.h"
+
+#ifdef USE_DEBUGGER
+#include "../debugger.h"
+#endif
+
+#include "./display.h"
+#include "./membus.h"
+
+using CRC80::DISPLAY;
+using CRC80::MEMBUS;
+
+// ----------------------------------------------------------------------------
+// initialize
+// ----------------------------------------------------------------------------
+
+VM::VM(EMU_TEMPLATE* parent_emu) : VM_TEMPLATE(parent_emu)
+{
+       // create devices
+       first_device = last_device = NULL;
+       dummy = new DEVICE(this, emu);  // must be 1st device
+       event = new EVENT(this, emu);   // must be 2nd device
+       
+       drec = new DATAREC(this, emu);
+       drec->set_context_noise_play(new NOISE(this, emu));
+       drec->set_context_noise_stop(new NOISE(this, emu));
+       drec->set_context_noise_fast(new NOISE(this, emu));
+       io = new IO(this, emu);
+       m_not = new NOT(this, emu);
+       cpu = new Z80(this, emu);
+       pio = new Z80PIO(this, emu);
+       
+       display = new DISPLAY(this, emu);
+       memory = new MEMBUS(this, emu);
+       
+       // set contexts
+       event->set_context_cpu(cpu);
+       event->set_context_sound(drec);
+       event->set_context_sound(drec->get_context_noise_play());
+       event->set_context_sound(drec->get_context_noise_stop());
+       event->set_context_sound(drec->get_context_noise_fast());
+       
+       drec->set_context_ear(m_not, SIG_NOT_INPUT, 1);
+       m_not->set_context_out(pio, SIG_Z80PIO_PORT_B, 0x80);
+       pio->set_context_port_b(drec, SIG_DATAREC_MIC, 0x40, 0);
+       pio->set_context_port_a(display, SIG_DISPLAY_PA, 0xff, 0);
+       pio->set_context_port_b(display, SIG_DISPLAY_PB, 0x0f, 0);
+       
+       display->set_context_pio(pio);
+       memory->set_context_cpu(cpu);
+       
+       // cpu bus
+       cpu->set_context_mem(memory);
+       cpu->set_context_io(io);
+       cpu->set_context_intr(pio);
+#ifdef USE_DEBUGGER
+       cpu->set_context_debugger(new DEBUGGER(this, emu));
+#endif
+       
+       // memory bus
+       memset(mon, 0xff, sizeof(mon));
+       memset(tty, 0xff, sizeof(tty));
+       memset(ext, 0xff, sizeof(ext));
+       memset(ram, 0x00, sizeof(ram));
+       
+       memory->read_bios(_T("MON.ROM"), mon, sizeof(mon));
+       memory->read_bios(_T("TTY.ROM"), tty, sizeof(tty));
+       memory->read_bios(_T("EXT.ROM"), ext, sizeof(ext));
+       
+       for(int i = 0; i < 0x8000; i += 0x1000) {
+               memory->set_memory_r (i + 0x0000, i + 0x03ff, mon);
+               memory->set_memory_r (i + 0x0400, i + 0x07ff, tty);
+               memory->set_memory_r (i + 0x0800, i + 0x0bff, ext);
+               memory->set_memory_rw(i + 0x8000, i + 0x8fff, ram);
+       }
+       
+       // i/o bus
+       for(int i = 0; i < 0x100; i += 4) {
+               io->set_iomap_alias_rw(i + 0, pio, 0);
+               io->set_iomap_alias_rw(i + 1, pio, 2);
+               io->set_iomap_alias_rw(i + 2, pio, 1);
+               io->set_iomap_alias_rw(i + 3, pio, 3);
+       }
+       
+       // initialize all devices
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               device->initialize();
+       }
+       pio->write_signal(SIG_Z80PIO_PORT_B, (config.dipswitch & 2) ? 0 : 0xff, 0x10);
+}
+
+VM::~VM()
+{
+       // delete all devices
+       for(DEVICE* device = first_device; device;) {
+               DEVICE *next_device = device->next_device;
+               device->release();
+               delete device;
+               device = next_device;
+       }
+}
+
+DEVICE* VM::get_device(int id)
+{
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               if(device->this_device_id == id) {
+                       return device;
+               }
+       }
+       return NULL;
+}
+
+// ----------------------------------------------------------------------------
+// drive virtual machine
+// ----------------------------------------------------------------------------
+
+void VM::reset()
+{
+       // reset all devices
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               device->reset();
+       }
+       pio->write_signal(SIG_Z80PIO_PORT_A, 0xff, 0xff);
+       pio->write_signal(SIG_Z80PIO_PORT_B, (config.dipswitch & 2) ? 0 : 0xff, 0x10);
+}
+
+void VM::run()
+{
+       event->drive();
+}
+
+// ----------------------------------------------------------------------------
+// debugger
+// ----------------------------------------------------------------------------
+
+#ifdef USE_DEBUGGER
+DEVICE *VM::get_cpu(int index)
+{
+       if(index == 0) {
+               return cpu;
+       }
+       return NULL;
+}
+#endif
+
+// ----------------------------------------------------------------------------
+// draw screen
+// ----------------------------------------------------------------------------
+
+void VM::draw_screen()
+{
+       display->draw_screen();
+}
+
+// ----------------------------------------------------------------------------
+// soud manager
+// ----------------------------------------------------------------------------
+
+void VM::initialize_sound(int rate, int samples)
+{
+       // init sound manager
+       event->initialize_sound(rate, samples);
+}
+
+uint16_t* VM::create_sound(int* extra_frames)
+{
+       return event->create_sound(extra_frames);
+}
+
+int VM::get_sound_buffer_ptr()
+{
+       return event->get_sound_buffer_ptr();
+}
+
+#ifdef USE_SOUND_VOLUME
+void VM::set_sound_device_volume(int ch, int decibel_l, int decibel_r)
+{
+       if(ch == 0) {
+               drec->set_volume(0, decibel_l, decibel_r);
+       } else if(ch == 1) {
+               drec->get_context_noise_play()->set_volume(0, decibel_l, decibel_r);
+               drec->get_context_noise_stop()->set_volume(0, decibel_l, decibel_r);
+               drec->get_context_noise_fast()->set_volume(0, decibel_l, decibel_r);
+       }
+}
+#endif
+
+// ----------------------------------------------------------------------------
+// notify key
+// ----------------------------------------------------------------------------
+
+void VM::key_down(int code, bool repeat)
+{
+}
+
+void VM::key_up(int code)
+{
+}
+
+bool VM::get_caps_locked()
+{
+       return false;
+}
+
+bool VM::get_kana_locked()
+{
+       return false;
+}
+
+// ----------------------------------------------------------------------------
+// user interface
+// ----------------------------------------------------------------------------
+
+void VM::load_binary(int drv, const _TCHAR* file_path)
+{
+       memory->read_image(file_path, ram, sizeof(ram));
+}
+
+void VM::save_binary(int drv, const _TCHAR* file_path)
+{
+       memory->write_image(file_path, ram, sizeof(ram));
+}
+
+void VM::play_tape(int drv, const _TCHAR* file_path)
+{
+       if(drec->play_tape(file_path)) {
+               push_play(drv);
+       }
+}
+
+void VM::rec_tape(int drv, const _TCHAR* file_path)
+{
+       if(drec->rec_tape(file_path)) {
+               push_play(drv);
+       }
+}
+
+void VM::close_tape(int drv)
+{
+       emu->lock_vm();
+       push_stop(drv);
+       drec->close_tape();
+       emu->unlock_vm();
+}
+
+bool VM::is_tape_inserted(int drv)
+{
+       return drec->is_tape_inserted();
+}
+
+bool VM::is_tape_playing(int drv)
+{
+       return drec->is_tape_playing();
+}
+
+bool VM::is_tape_recording(int drv)
+{
+       return drec->is_tape_recording();
+}
+
+int VM::get_tape_position(int drv)
+{
+       return drec->get_tape_position();
+}
+
+const _TCHAR* VM::get_tape_message(int drv)
+{
+       return drec->get_message();
+}
+
+void VM::push_play(int drv)
+{
+       drec->set_remote(false);
+       drec->set_ff_rew(0);
+       drec->set_remote(true);
+}
+
+void VM::push_stop(int drv)
+{
+       drec->set_remote(false);
+}
+
+void VM::push_fast_forward(int drv)
+{
+       drec->set_remote(false);
+       drec->set_ff_rew(1);
+       drec->set_remote(true);
+}
+
+void VM::push_fast_rewind(int drv)
+{
+       drec->set_remote(false);
+       drec->set_ff_rew(-1);
+       drec->set_remote(true);
+}
+
+bool VM::is_frame_skippable()
+{
+       return event->is_frame_skippable();
+}
+
+void VM::update_config()
+{
+       for(DEVICE* device = first_device; device; device = device->next_device) {
+               device->update_config();
+       }
+}
+
+#define STATE_VERSION  1
+
+bool VM::process_state(FILEIO* state_fio, bool loading)
+{
+       if(!(VM_TEMPLATE::process_state_core(state_fio, loading, STATE_VERSION))) {
+               return false;
+       }
+       // Machine specified.
+       state_fio->StateArray(ram, sizeof(ram), 1);
+       return true;
+}
+
diff --git a/source/src/vm/crc80/crc80.h b/source/src/vm/crc80/crc80.h
new file mode 100644 (file)
index 0000000..9c3f9d6
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+       Computer Research CRC-80 Emulator 'eCRC-80'
+
+       Author : Takeda.Toshiya
+       Date   : 2022.06.05-
+
+       [ virtual machine ]
+*/
+
+#ifndef _CRC80_H_
+#define _CRC80_H_
+
+#define DEVICE_NAME            "Computer Research CRC-80"
+#define CONFIG_NAME            "crc80"
+
+// device informations for virtual machine
+#define FRAMES_PER_SEC         30
+#define LINES_PER_FRAME        256
+#define CPU_CLOCKS             2500000
+#define SCREEN_WIDTH           768
+#define SCREEN_HEIGHT          512
+#define MEMORY_ADDR_MAX                0x10000
+#define MEMORY_BANK_SIZE       0x400
+#define IO_ADDR_MAX            0x100
+
+// device informations for win32
+#define ONE_BOARD_MICRO_COMPUTER
+#define MAX_BUTTONS            25
+#define MAX_DRAW_RANGES                6
+#define USE_DIPSWITCH
+#define DIPSWITCH_DEFAULT      0
+#define USE_TAPE               1
+#define USE_BINARY_FILE                1
+#define USE_AUTO_KEY           5
+#define USE_AUTO_KEY_RELEASE   6
+#define USE_SOUND_VOLUME       2
+#define USE_DEBUGGER
+#define USE_STATE
+
+#include "../../common.h"
+#include "../../fileio.h"
+#include "../vm_template.h"
+
+#ifdef USE_SOUND_VOLUME
+static const _TCHAR *sound_device_caption[] = {
+       _T("CMT (Signal)"), _T("Noise (CMT)"),
+};
+#endif
+
+#define BUTTON_SPACE_X 68
+#define BUTTON_SPACE_Y 53
+#define BUTTON_SIZE_X  45
+#define BUTTON_SIZE_Y  35
+#define BUTTON_POS_X   432
+#define BUTTON_POS_Y   251
+
+#define LED_SPACE_X    38
+#define LED_SIZE_X     14
+#define LED_SIZE_Y     15
+#define LED_POS_X1     512
+#define LED_POS_X2     678
+#define LED_POS_Y      48
+
+const struct {
+       int x, y;
+       int width, height;
+       int code;
+} vm_buttons[] = {
+       // virtual key codes 0x80-0x8f and 0x98-0x9f are not used in pc keyboard
+       {BUTTON_POS_X + BUTTON_SPACE_X * 0, BUTTON_POS_Y + BUTTON_SPACE_Y * 4, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x30},     // 0
+       {BUTTON_POS_X + BUTTON_SPACE_X * 1, BUTTON_POS_Y + BUTTON_SPACE_Y * 4, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x31},     // 1
+       {BUTTON_POS_X + BUTTON_SPACE_X * 2, BUTTON_POS_Y + BUTTON_SPACE_Y * 4, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x32},     // 2
+       {BUTTON_POS_X + BUTTON_SPACE_X * 3, BUTTON_POS_Y + BUTTON_SPACE_Y * 4, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x33},     // 3
+       {BUTTON_POS_X + BUTTON_SPACE_X * 0, BUTTON_POS_Y + BUTTON_SPACE_Y * 3, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x34},     // 4
+       {BUTTON_POS_X + BUTTON_SPACE_X * 1, BUTTON_POS_Y + BUTTON_SPACE_Y * 3, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x35},     // 5
+       {BUTTON_POS_X + BUTTON_SPACE_X * 2, BUTTON_POS_Y + BUTTON_SPACE_Y * 3, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x36},     // 6
+       {BUTTON_POS_X + BUTTON_SPACE_X * 3, BUTTON_POS_Y + BUTTON_SPACE_Y * 3, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x37},     // 7
+       {BUTTON_POS_X + BUTTON_SPACE_X * 0, BUTTON_POS_Y + BUTTON_SPACE_Y * 2, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x38},     // 8
+       {BUTTON_POS_X + BUTTON_SPACE_X * 1, BUTTON_POS_Y + BUTTON_SPACE_Y * 2, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x39},     // 9
+       {BUTTON_POS_X + BUTTON_SPACE_X * 2, BUTTON_POS_Y + BUTTON_SPACE_Y * 2, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x41},     // A
+       {BUTTON_POS_X + BUTTON_SPACE_X * 3, BUTTON_POS_Y + BUTTON_SPACE_Y * 2, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x42},     // B
+       {BUTTON_POS_X + BUTTON_SPACE_X * 0, BUTTON_POS_Y + BUTTON_SPACE_Y * 1, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x43},     // C
+       {BUTTON_POS_X + BUTTON_SPACE_X * 1, BUTTON_POS_Y + BUTTON_SPACE_Y * 1, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x44},     // D
+       {BUTTON_POS_X + BUTTON_SPACE_X * 2, BUTTON_POS_Y + BUTTON_SPACE_Y * 1, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x45},     // E
+       {BUTTON_POS_X + BUTTON_SPACE_X * 3, BUTTON_POS_Y + BUTTON_SPACE_Y * 1, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x46},     // F
+       {BUTTON_POS_X + BUTTON_SPACE_X * 0, BUTTON_POS_Y + BUTTON_SPACE_Y * 0, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x70},     // GO
+       {BUTTON_POS_X + BUTTON_SPACE_X * 1, BUTTON_POS_Y + BUTTON_SPACE_Y * 0, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x71},     // DA
+       {BUTTON_POS_X + BUTTON_SPACE_X * 2, BUTTON_POS_Y + BUTTON_SPACE_Y * 0, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x72},     // AD
+       {BUTTON_POS_X + BUTTON_SPACE_X * 3, BUTTON_POS_Y + BUTTON_SPACE_Y * 0, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x73},     // INC
+       {BUTTON_POS_X + BUTTON_SPACE_X * 4, BUTTON_POS_Y + BUTTON_SPACE_Y * 4, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x77},     // ST
+       {BUTTON_POS_X + BUTTON_SPACE_X * 4, BUTTON_POS_Y + BUTTON_SPACE_Y * 3, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x76},     // STP
+       {BUTTON_POS_X + BUTTON_SPACE_X * 4, BUTTON_POS_Y + BUTTON_SPACE_Y * 2, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x75},     // LD
+       {BUTTON_POS_X + BUTTON_SPACE_X * 4, BUTTON_POS_Y + BUTTON_SPACE_Y * 1, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x74},     // DEC
+       {BUTTON_POS_X + BUTTON_SPACE_X * 4, BUTTON_POS_Y + BUTTON_SPACE_Y * 0, BUTTON_SIZE_X, BUTTON_SIZE_Y, 0x00},     // RES
+};
+const struct {
+       int x, y;
+       int width, height;
+} vm_ranges[] = {
+       {LED_POS_X1 + LED_SPACE_X * 0, LED_POS_Y, LED_SIZE_X, LED_SIZE_Y}, // 7-seg LEDs
+       {LED_POS_X1 + LED_SPACE_X * 1, LED_POS_Y, LED_SIZE_X, LED_SIZE_Y},
+       {LED_POS_X1 + LED_SPACE_X * 2, LED_POS_Y, LED_SIZE_X, LED_SIZE_Y},
+       {LED_POS_X1 + LED_SPACE_X * 3, LED_POS_Y, LED_SIZE_X, LED_SIZE_Y},
+       {LED_POS_X2 + LED_SPACE_X * 0, LED_POS_Y, LED_SIZE_X, LED_SIZE_Y},
+       {LED_POS_X2 + LED_SPACE_X * 1, LED_POS_Y, LED_SIZE_X, LED_SIZE_Y},
+};
+
+class EMU;
+class DEVICE;
+class EVENT;
+
+class DATAREC;
+class IO;
+class NOT;
+class Z80;
+class Z80PIO;
+
+namespace CRC80 {
+class DISPLAY;
+class MEMBUS;
+};
+
+class VM : public VM_TEMPLATE
+{
+protected:
+//     EMU* emu;
+       
+       // devices
+       EVENT* event;
+       
+       DATAREC* drec;
+       IO* io;
+       NOT* m_not;
+       Z80* cpu;
+       Z80PIO* pio;
+       
+       CRC80::DISPLAY* display;
+       CRC80::MEMBUS* memory;
+       
+       // memory
+       uint8_t mon[0x400];
+       uint8_t tty[0x400];
+       uint8_t ext[0x400];
+       uint8_t ram[0x1000];
+       
+public:
+       // ----------------------------------------
+       // initialize
+       // ----------------------------------------
+       
+       VM(EMU_TEMPLATE* parent_emu);
+       ~VM();
+       
+       // ----------------------------------------
+       // for emulation class
+       // ----------------------------------------
+       
+       // drive virtual machine
+       void reset() override;
+       void run() override;
+       double get_frame_rate() override
+       {
+               return FRAMES_PER_SEC;
+       }
+       
+#ifdef USE_DEBUGGER
+       // debugger
+       DEVICE *get_cpu(int index) override;
+#endif
+       
+       // draw screen
+       void draw_screen() override;
+       
+       // sound generation
+       void initialize_sound(int rate, int samples) override;
+       uint16_t* create_sound(int* extra_frames) override;
+       int get_sound_buffer_ptr() override;
+#ifdef USE_SOUND_VOLUME
+       void set_sound_device_volume(int ch, int decibel_l, int decibel_r) override;
+#endif
+       
+       // notify key
+       void key_down(int code, bool repeat) override;
+       void key_up(int code) override;
+       bool get_caps_locked() override;
+       bool get_kana_locked() override;
+       
+       // user interface
+       void load_binary(int drv, const _TCHAR* file_path) override;
+       void save_binary(int drv, const _TCHAR* file_path) override;
+       void play_tape(int drv, const _TCHAR* file_path) override;
+       void rec_tape(int drv, const _TCHAR* file_path) override;
+       void close_tape(int drv) override;
+       bool is_tape_inserted(int drv) override;
+       bool is_tape_playing(int drv) override;
+       bool is_tape_recording(int drv) override;
+       int get_tape_position(int drv) override;
+       const _TCHAR* get_tape_message(int drv) override;
+       void push_play(int drv) override;
+       void push_stop(int drv) override;
+       void push_fast_forward(int drv) override;
+       void push_fast_rewind(int drv) override;
+       void push_apss_forward(int drv) override{}
+       void push_apss_rewind(int drv) override{}
+       bool is_frame_skippable() override;
+       
+       void update_config() override;
+       bool process_state(FILEIO* state_fio, bool loading);
+       
+       // ----------------------------------------
+       // for each device
+       // ----------------------------------------
+       
+       // devices
+       DEVICE* get_device(int id) override;
+//     DEVICE* dummy;
+//     DEVICE* first_device;
+//     DEVICE* last_device;
+};
+
+#endif
diff --git a/source/src/vm/crc80/display.cpp b/source/src/vm/crc80/display.cpp
new file mode 100644 (file)
index 0000000..2fc16d7
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+       Computer Research CRC-80 Emulator 'eCRC-80'
+
+       Author : Takeda.Toshiya
+       Date   : 2022.06.05-
+
+       [ display ]
+*/
+
+#include "./display.h"
+#include "../z80pio.h"
+
+namespace CRC80 {
+static const int led_pattern[LED_SIZE_Y][LED_SIZE_X] = {
+       {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+       {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
+       {0, 0, 0, 6, 0, 1, 1, 1, 1, 1, 1, 0, 2, 0},
+       {0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0},
+       {0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0},
+       {0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0},
+       {0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0},
+       {0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0},
+       {0, 0, 5, 0, 7, 7, 7, 7, 7, 7, 0, 3, 0, 0},
+       {0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0},
+       {0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0},
+       {0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0},
+       {0, 5, 0, 4, 4, 4, 4, 4, 4, 0, 3, 0, 0, 0},
+       {0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 8, 8},
+       {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8},
+};
+
+void DISPLAY::initialize()
+{
+       memset(led, 0, sizeof(led));
+       pa = pb = 0;
+}
+
+void DISPLAY::write_signal(int id, uint32_t data, uint32_t mask)
+{
+       if(id == SIG_DISPLAY_PA) {
+               pa = data & mask;
+               led[pb & 15] = pa;
+       } else if(id == SIG_DISPLAY_PB) {
+               pb = data & mask;
+               led[pb & 15] = pa;
+               
+               // update keyin
+               const uint8_t *key = emu->get_key_buffer();
+               uint8_t val = 0xff;
+               
+               switch(pb & 15) {
+               case 0: // K0
+                       if(key[0x70]) val &= ~0x01;     // GO
+                       if(key[0x71]) val &= ~0x02;     // DA
+                       if(key[0x72]) val &= ~0x04;     // AD
+                       if(key[0x73]) val &= ~0x08;     // INC
+                       if(key[0x74]) val &= ~0x10;     // DEC
+                       if(key[0x75]) val &= ~0x20;     // LD
+                       if(key[0x77]) val &= ~0x40;     // ST
+                       if(key[0x76]) val &= ~0x80;     // STP
+                       d_pio->write_signal(SIG_Z80PIO_PORT_A, val, 0xff);
+                       break;
+               case 1: // K1
+                       if(key[0x30]) val &= ~0x01;
+                       if(key[0x31]) val &= ~0x02;
+                       if(key[0x32]) val &= ~0x04;
+                       if(key[0x33]) val &= ~0x08;
+                       if(key[0x34]) val &= ~0x10;
+                       if(key[0x35]) val &= ~0x20;
+                       if(key[0x36]) val &= ~0x40;
+                       if(key[0x37]) val &= ~0x80;
+                       d_pio->write_signal(SIG_Z80PIO_PORT_A, val, 0xff);
+                       break;
+               case 2: // K2
+                       if(key[0x38]) val &= ~0x01;
+                       if(key[0x39]) val &= ~0x02;
+                       if(key[0x41]) val &= ~0x04;
+                       if(key[0x42]) val &= ~0x08;
+                       if(key[0x43]) val &= ~0x10;
+                       if(key[0x44]) val &= ~0x20;
+                       if(key[0x45]) val &= ~0x40;
+                       if(key[0x46]) val &= ~0x80;
+                       d_pio->write_signal(SIG_Z80PIO_PORT_A, val, 0xff);
+                       break;
+               }
+       }
+}
+
+void DISPLAY::draw_screen()
+{
+       // draw 7-seg LEDs
+       scrntype_t col[10];
+       scrntype_t color_on  = RGB_COLOR(255, 8, 72);
+       scrntype_t color_off = RGB_COLOR(60, 30, 30);
+       col[0] = RGB_COLOR(40, 20, 20);
+       col[9] = color_off;
+       
+       for(int i = 0; i < 6; i++) {
+               uint8_t pat = ~led[9 - i];
+               col[1] = pat & 0x01 ? color_on : color_off;
+               col[2] = pat & 0x02 ? color_on : color_off;
+               col[3] = pat & 0x04 ? color_on : color_off;
+               col[4] = pat & 0x08 ? color_on : color_off;
+               col[5] = pat & 0x10 ? color_on : color_off;
+               col[6] = pat & 0x20 ? color_on : color_off;
+               col[7] = pat & 0x40 ? color_on : color_off;
+               col[8] = pat & 0x80 ? color_on : color_off;
+               for(int y = 0; y < LED_SIZE_Y; y++) {
+                       scrntype_t* dest = emu->get_screen_buffer(vm_ranges[i].y + y) + vm_ranges[i].x;
+                       for(int x = 0; x < LED_SIZE_X; x++) {
+                               dest[x] = col[led_pattern[y][x]];
+                       }
+               }
+       }
+}
+
+#define STATE_VERSION  1
+
+bool DISPLAY::process_state(FILEIO* state_fio, bool loading)
+{
+       if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+               return false;
+       }
+       if(!state_fio->StateCheckInt32(this_device_id)) {
+               return false;
+       }
+       state_fio->StateArray(led, sizeof(led), 1);
+       state_fio->StateValue(pa);
+       state_fio->StateValue(pb);
+       return true;
+}
+
+}
diff --git a/source/src/vm/crc80/display.h b/source/src/vm/crc80/display.h
new file mode 100644 (file)
index 0000000..ec95ed4
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+       Computer Research CRC-80 Emulator 'eCRC-80'
+
+       Author : Takeda.Toshiya
+       Date   : 2022.06.05-
+
+       [ display ]
+*/
+
+#ifndef _DISPLAY_H_
+#define _DISPLAY_H_
+
+#include "../vm.h"
+#include "../../emu.h"
+#include "../device.h"
+
+#define SIG_DISPLAY_PA 0
+#define SIG_DISPLAY_PB 1
+
+namespace CRC80 {
+class DISPLAY : public DEVICE
+{
+private:
+       DEVICE *d_pio;
+       
+       uint8_t led[16];
+       uint8_t pa, pb;
+       
+public:
+       DISPLAY(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
+       {
+               set_device_name(_T("Display"));
+       }
+       ~DISPLAY() {}
+       
+       // common functions
+       void initialize() override;
+       void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask) override;
+       bool process_state(FILEIO* state_fio, bool loading) override;
+       
+       // unique functions
+       void set_context_pio(DEVICE* device) 
+       {
+               d_pio = device;
+       }
+       void draw_screen();
+};
+}
+
+#endif
+
diff --git a/source/src/vm/crc80/membus.cpp b/source/src/vm/crc80/membus.cpp
new file mode 100644 (file)
index 0000000..fcd51a1
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+       Computer Research CRC-80 Emulator 'eCRC-80'
+
+       Author : Takeda.Toshiya
+       Date   : 2022.06.05-
+
+       [ memory bus ]
+*/
+
+#include "./membus.h"
+
+namespace CRC80 {
+uint32_t MEMBUS::fetch_op(uint32_t addr, int *wait)
+{
+       if((config.dipswitch & 1) && (addr & 0x8c00)) {
+               d_cpu->write_signal(SIG_CPU_NMI, 1, 1);
+       }
+       *wait = 0;
+       return MEMORY::read_data8(addr);
+}
+}
diff --git a/source/src/vm/crc80/membus.h b/source/src/vm/crc80/membus.h
new file mode 100644 (file)
index 0000000..b0352d9
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+       Computer Research CRC-80 Emulator 'eCRC-80'
+
+       Author : Takeda.Toshiya
+       Date   : 2022.06.05-
+
+       [ memory bus ]
+*/
+
+#ifndef _MEMBUS_H_
+#define _MEMBUS_H_
+
+#include "../memory.h"
+
+namespace CRC80 {
+class MEMBUS : public MEMORY
+{
+private:
+       DEVICE *d_cpu;
+       
+public:
+       MEMBUS(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : MEMORY(parent_vm, parent_emu)
+       {
+               set_device_name(_T("Memory Bus"));
+       }
+       ~MEMBUS() {}
+       
+       // common function
+       uint32_t __FASTCALL fetch_op(uint32_t addr, int *wait) override;
+       
+       // unique function
+       void set_context_cpu(DEVICE* device)
+       {
+               d_cpu = device;
+       }
+};
+}
+
+#endif
index ef9a921..7da84b2 100644 (file)
 #include "colecovision/colecovision.h"
 #endif
 
+// Computer Research CRC-80
+#ifdef _CRC80
+#include "crc80/crc80.h"
+#endif
+
 // TOSHIBA EX-80BS
 #ifdef _EX80BS
 #include "ex80bs/ex80bs.h"
index 0a29628..eafc4e4 100644 (file)
@@ -35,6 +35,10 @@ devenv.com colecovision.vcproj /Rebuild Release
 mkdir build_xp\colecovision\r
 copy Release\colecovision.exe build_xp\colecovision\.\r
 \r
+devenv.com crc80.vcproj /Rebuild Release\r
+mkdir build_xp\crc80\r
+copy Release\crc80.exe build_xp\crc80\.\r
+\r
 devenv.com ex80bs.vcproj /Rebuild Release\r
 mkdir build_xp\ex80bs\r
 copy Release\ex80bs.exe build_xp\ex80bs\.\r
diff --git a/source/vc++2008/crc80.vcproj b/source/vc++2008/crc80.vcproj
new file mode 100644 (file)
index 0000000..707dabd
--- /dev/null
@@ -0,0 +1,950 @@
+<?xml version="1.0" encoding="shift_jis"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="9.00"\r
+       Name="crc80"\r
+       ProjectGUID="{F62D036D-7569-431B-9C55-C056A4D3145A}"\r
+       RootNamespace="crc80"\r
+       TargetFrameworkVersion="131072"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory=".\Debug"\r
+                       IntermediateDirectory=".\Debug"\r
+                       ConfigurationType="1"\r
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName=".\Debug/crc80.tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_CRC80"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="1"\r
+                               PrecompiledHeaderFile=".\Debug/crc80.pch"\r
+                               AssemblerListingLocation=".\Debug/"\r
+                               ObjectFile=".\Debug/"\r
+                               ProgramDataBaseFileName=".\Debug/"\r
+                               BrowseInformation="1"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="4"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1041"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="odbc32.lib odbccp32.lib winmm.lib imm32.lib"\r
+                               OutputFile=".\Debug/crc80.exe"\r
+                               LinkIncremental="2"\r
+                               SuppressStartupBanner="true"\r
+                               GenerateManifest="false"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile=".\Debug/crc80.pdb"\r
+                               SubSystem="2"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile=".\Debug/crc80.bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory=".\Release"\r
+                       IntermediateDirectory=".\Release"\r
+                       ConfigurationType="1"\r
+                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName=".\Release/crc80.tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="2"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_CRC80"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="0"\r
+                               EnableFunctionLevelLinking="true"\r
+                               EnableEnhancedInstructionSet="2"\r
+                               PrecompiledHeaderFile=".\Release/crc80.pch"\r
+                               AssemblerListingLocation=".\Release/"\r
+                               ObjectFile=".\Release/"\r
+                               ProgramDataBaseFileName=".\Release/"\r
+                               BrowseInformation="1"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="odbc32.lib odbccp32.lib winmm.lib imm32.lib"\r
+                               OutputFile=".\Release/crc80.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               GenerateManifest="false"\r
+                               ProgramDatabaseFile=".\Release/crc80.pdb"\r
+                               SubSystem="2"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile=".\Release/crc80.bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\src\common.cpp"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\config.cpp"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\fifo.cpp"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\fileio.cpp"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <Filter\r
+                               Name="EMU Source Files"\r
+                               Filter="cpp"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\debugger.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\emu.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="OSD Source Files"\r
+                               Filter="cpp"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\win32\osd.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\win32\osd_console.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\win32\osd_input.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\win32\osd_screen.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\win32\osd_sound.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\win32\winmain.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="VM Common Source Files"\r
+                               Filter="cpp"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\vm\datarec.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\event.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\io.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\memory.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\noise.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\not.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\z80.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\z80pio.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="VM Driver Source Files"\r
+                               Filter="cpp"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\vm\crc80\crc80.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\crc80\display.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\crc80\membus.cpp"\r
+                                       >\r
+                                       <FileConfiguration\r
+                                               Name="Debug|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration\r
+                                               Name="Release|Win32"\r
+                                               >\r
+                                               <Tool\r
+                                                       Name="VCCLCompilerTool"\r
+                                                       PreprocessorDefinitions=""\r
+                                               />\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\src\common.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\config.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\fifo.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\fileio.h"\r
+                               >\r
+                       </File>\r
+                       <Filter\r
+                               Name="EMU Header Files"\r
+                               Filter="h"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\emu.h"\r
+                                       >\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="OSD Header Files"\r
+                               Filter="h"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\win32\osd.h"\r
+                                       >\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="VM Common Header Files"\r
+                               Filter="h"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\vm\datarec.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\debugger.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\device.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\event.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\io.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\memory.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\noise.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\not.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\vm.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\vm_template.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\z80.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\z80pio.h"\r
+                                       >\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="VM Driver Header Files"\r
+                               Filter="h"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\src\vm\crc80\crc80.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\crc80\display.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\src\vm\crc80\membus.h"\r
+                                       >\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\src\res\resource.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80.ico"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80.rc"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCResourceCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                               AdditionalIncludeDirectories="..\src\res"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCResourceCompilerTool"\r
+                                               PreprocessorDefinitions=""\r
+                                               AdditionalIncludeDirectories="..\src\res"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\board.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button00.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button01.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button02.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button03.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button04.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button05.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button06.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button07.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button08.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button09.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button10.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button11.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button12.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button13.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button14.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button15.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button16.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button17.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button18.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button19.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button20.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button21.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button22.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button23.png"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\src\res\crc80\button24.png"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
index ec42fcd..5e3c94b 100644 (file)
@@ -31,6 +31,10 @@ msbuild.exe colecovision.vcxproj /t:clean;rebuild /p:Configuration=Release;Platf
 mkdir build_vc15\colecovision\r
 copy bin\x86\Release\colecovision.exe build_vc15\colecovision\.\r
 \r
+msbuild.exe crc80.vcxproj /t:clean;rebuild /p:Configuration=Release;Platform="Win32"\r
+mkdir build_vc15\crc80\r
+copy bin\x86\Release\crc80.exe build_vc15\crc80\.\r
+\r
 msbuild.exe ex80bs.vcxproj /t:clean;rebuild /p:Configuration=Release;Platform="Win32"\r
 mkdir build_vc15\ex80bs\r
 copy bin\x86\Release\ex80bs.exe build_vc15\ex80bs\.\r
diff --git a/source/vc++2017/crc80.vcxproj b/source/vc++2017/crc80.vcxproj
new file mode 100644 (file)
index 0000000..dbc14f2
--- /dev/null
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Debug|x64">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|x64">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{F62D036D-7569-431B-9C55-C056A4D3145A}</ProjectGuid>\r
+    <RootNamespace>crc80</RootNamespace>\r
+    <Keyword>Win32Proj</Keyword>\r
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>\r
+    <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>\r
+    <LinkIncremental>true</LinkIncremental>\r
+    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>\r
+    <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(DXSDK_DIR)Lib\x86</LibraryPath>\r
+    <ExcludePath />\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <LinkIncremental>true</LinkIncremental>\r
+    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>\r
+    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(DXSDK_DIR)Lib\x64</LibraryPath>\r
+    <ExcludePath />\r
+    <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>\r
+    <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>\r
+    <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>\r
+    <LinkIncremental>false</LinkIncremental>\r
+    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>\r
+    <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86)</LibraryPath>\r
+    <ExcludePath />\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <LinkIncremental>false</LinkIncremental>\r
+    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>\r
+    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)</LibraryPath>\r
+    <ExcludePath />\r
+    <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>\r
+    <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>\r
+  </PropertyGroup>\r
+  <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <VcpkgEnabled>false</VcpkgEnabled>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Vcpkg">\r
+    <VcpkgEnabled>false</VcpkgEnabled>\r
+  </PropertyGroup>\r
+  <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <VcpkgEnabled>false</VcpkgEnabled>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Vcpkg">\r
+    <VcpkgEnabled>false</VcpkgEnabled>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>\r
+      <HeaderFileName />\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRC80;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0411</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention />\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
+      <IgnoreSpecificDefaultLibraries>Libcmt.lib</IgnoreSpecificDefaultLibraries>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>\r
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>\r
+    </Bscmake>\r
+    <Manifest>\r
+      <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>\r
+    </Manifest>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>\r
+      <HeaderFileName />\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRC80;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0411</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
+      <IgnoreSpecificDefaultLibraries>Libcmt.lib</IgnoreSpecificDefaultLibraries>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>\r
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>\r
+    </Bscmake>\r
+    <Manifest>\r
+      <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>\r
+    </Manifest>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>\r
+      <HeaderFileName />\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRC80;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention />\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>\r
+      <IgnoreSpecificDefaultLibraries>\r
+      </IgnoreSpecificDefaultLibraries>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>\r
+    </Bscmake>\r
+    <Manifest>\r
+      <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>\r
+    </Manifest>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>\r
+      <HeaderFileName />\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRC80;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>\r
+      <BrowseInformation>true</BrowseInformation>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>\r
+      <IgnoreSpecificDefaultLibraries>\r
+      </IgnoreSpecificDefaultLibraries>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>\r
+    </Bscmake>\r
+    <Manifest>\r
+      <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>\r
+    </Manifest>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\src\common.cpp" />\r
+    <ClCompile Include="..\src\config.cpp" />\r
+    <ClCompile Include="..\src\debugger.cpp" />\r
+    <ClCompile Include="..\src\emu.cpp" />\r
+    <ClCompile Include="..\src\fifo.cpp" />\r
+    <ClCompile Include="..\src\fileio.cpp" />\r
+    <ClCompile Include="..\src\vm\crc80\crc80.cpp" />\r
+    <ClCompile Include="..\src\vm\crc80\display.cpp" />\r
+    <ClCompile Include="..\src\vm\crc80\membus.cpp" />\r
+    <ClCompile Include="..\src\vm\datarec.cpp" />\r
+    <ClCompile Include="..\src\vm\event.cpp" />\r
+    <ClCompile Include="..\src\vm\io.cpp" />\r
+    <ClCompile Include="..\src\vm\memory.cpp" />\r
+    <ClCompile Include="..\src\vm\noise.cpp" />\r
+    <ClCompile Include="..\src\vm\not.cpp" />\r
+    <ClCompile Include="..\src\vm\z80.cpp" />\r
+    <ClCompile Include="..\src\vm\z80pio.cpp" />\r
+    <ClCompile Include="..\src\win32\osd.cpp" />\r
+    <ClCompile Include="..\src\win32\osd_console.cpp" />\r
+    <ClCompile Include="..\src\win32\osd_input.cpp" />\r
+    <ClCompile Include="..\src\win32\osd_screen.cpp" />\r
+    <ClCompile Include="..\src\win32\osd_sound.cpp" />\r
+    <ClCompile Include="..\src\win32\winmain.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\src\common.h" />\r
+    <ClInclude Include="..\src\config.h" />\r
+    <ClInclude Include="..\src\emu.h" />\r
+    <ClInclude Include="..\src\fifo.h" />\r
+    <ClInclude Include="..\src\fileio.h" />\r
+    <ClInclude Include="..\src\res\resource.h" />\r
+    <ClInclude Include="..\src\vm\crc80\crc80.h" />\r
+    <ClInclude Include="..\src\vm\crc80\display.h" />\r
+    <ClInclude Include="..\src\vm\crc80\membus.h" />\r
+    <ClInclude Include="..\src\vm\datarec.h" />\r
+    <ClInclude Include="..\src\vm\debugger.h" />\r
+    <ClInclude Include="..\src\vm\device.h" />\r
+    <ClInclude Include="..\src\vm\event.h" />\r
+    <ClInclude Include="..\src\vm\io.h" />\r
+    <ClInclude Include="..\src\vm\memory.h" />\r
+    <ClInclude Include="..\src\vm\noise.h" />\r
+    <ClInclude Include="..\src\vm\not.h" />\r
+    <ClInclude Include="..\src\vm\vm.h" />\r
+    <ClInclude Include="..\src\vm\vm_template.h" />\r
+    <ClInclude Include="..\src\vm\z80.h" />\r
+    <ClInclude Include="..\src\vm\z80pio.h" />\r
+    <ClInclude Include="..\src\win32\osd.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Image Include="..\src\res\crc80.ico" />\r
+    <Image Include="..\src\res\crc80\board.png" />\r
+    <Image Include="..\src\res\crc80\button00.png" />\r
+    <Image Include="..\src\res\crc80\button01.png" />\r
+    <Image Include="..\src\res\crc80\button02.png" />\r
+    <Image Include="..\src\res\crc80\button03.png" />\r
+    <Image Include="..\src\res\crc80\button04.png" />\r
+    <Image Include="..\src\res\crc80\button05.png" />\r
+    <Image Include="..\src\res\crc80\button06.png" />\r
+    <Image Include="..\src\res\crc80\button07.png" />\r
+    <Image Include="..\src\res\crc80\button08.png" />\r
+    <Image Include="..\src\res\crc80\button09.png" />\r
+    <Image Include="..\src\res\crc80\button10.png" />\r
+    <Image Include="..\src\res\crc80\button11.png" />\r
+    <Image Include="..\src\res\crc80\button12.png" />\r
+    <Image Include="..\src\res\crc80\button13.png" />\r
+    <Image Include="..\src\res\crc80\button14.png" />\r
+    <Image Include="..\src\res\crc80\button15.png" />\r
+    <Image Include="..\src\res\crc80\button16.png" />\r
+    <Image Include="..\src\res\crc80\button17.png" />\r
+    <Image Include="..\src\res\crc80\button18.png" />\r
+    <Image Include="..\src\res\crc80\button19.png" />\r
+    <Image Include="..\src\res\crc80\button20.png" />\r
+    <Image Include="..\src\res\crc80\button21.png" />\r
+    <Image Include="..\src\res\crc80\button22.png" />\r
+    <Image Include="..\src\res\crc80\button23.png" />\r
+    <Image Include="..\src\res\crc80\button24.png" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\src\res\crc80.rc">\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/source/vc++2017/crc80.vcxproj.filters b/source/vc++2017/crc80.vcxproj.filters
new file mode 100644 (file)
index 0000000..c1cc71d
--- /dev/null
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{0aa746bc-44ab-4e81-a063-bf0a8f7192c6}</UniqueIdentifier>\r
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
+    </Filter>\r
+    <Filter Include="Source Files\EMU Source Files">\r
+      <UniqueIdentifier>{d4fe8d71-72d5-4c17-9a66-3ae914d0f7dd}</UniqueIdentifier>\r
+      <Extensions>cpp</Extensions>\r
+    </Filter>\r
+    <Filter Include="Source Files\OSD Source Files">\r
+      <UniqueIdentifier>{f8bd9a7f-c440-4f9e-91e2-fdf951fad624}</UniqueIdentifier>\r
+      <Extensions>cpp</Extensions>\r
+    </Filter>\r
+    <Filter Include="Source Files\VM Common Source Files">\r
+      <UniqueIdentifier>{ac65f64e-abb5-4362-868e-6b1dfcfc8ea5}</UniqueIdentifier>\r
+      <Extensions>cpp</Extensions>\r
+    </Filter>\r
+    <Filter Include="Source Files\VM Driver Source Files">\r
+      <UniqueIdentifier>{fe15f3b7-85b2-4328-add8-5bbd5bc08bfb}</UniqueIdentifier>\r
+      <Extensions>cpp</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{d54addfb-6b25-4214-b2de-d854a24b45e8}</UniqueIdentifier>\r
+      <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files\EMU Header Files">\r
+      <UniqueIdentifier>{4232456f-e6e9-4277-96c8-ff126d7b7cf6}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files\OSD Header Files">\r
+      <UniqueIdentifier>{95c186f4-7ec0-4333-9981-25789341244b}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files\VM Common Header Files">\r
+      <UniqueIdentifier>{fe265c60-db35-473e-9f37-37bc8de58361}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files\VM Driver Header Files">\r
+      <UniqueIdentifier>{4b27fd96-eb3c-41a7-8907-0ad57374f0c4}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{d4a2af1b-de1e-4ef2-8792-8f2ac1e6d705}</UniqueIdentifier>\r
+      <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\src\common.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\config.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\fifo.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\fileio.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\debugger.cpp">\r
+      <Filter>Source Files\EMU Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\emu.cpp">\r
+      <Filter>Source Files\EMU Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\win32\osd.cpp">\r
+      <Filter>Source Files\OSD Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\win32\osd_console.cpp">\r
+      <Filter>Source Files\OSD Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\win32\osd_input.cpp">\r
+      <Filter>Source Files\OSD Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\win32\osd_screen.cpp">\r
+      <Filter>Source Files\OSD Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\win32\osd_sound.cpp">\r
+      <Filter>Source Files\OSD Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\win32\winmain.cpp">\r
+      <Filter>Source Files\OSD Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\datarec.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\event.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\io.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\memory.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\noise.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\not.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\z80.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\z80pio.cpp">\r
+      <Filter>Source Files\VM Common Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\crc80\crc80.cpp">\r
+      <Filter>Source Files\VM Driver Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\crc80\display.cpp">\r
+      <Filter>Source Files\VM Driver Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\vm\crc80\membus.cpp">\r
+      <Filter>Source Files\VM Driver Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\src\common.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\config.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\fifo.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\fileio.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\emu.h">\r
+      <Filter>Header Files\EMU Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\win32\osd.h">\r
+      <Filter>Header Files\OSD Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\datarec.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\debugger.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\device.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\event.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\io.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\memory.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\noise.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\not.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\vm.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\vm_template.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\z80.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\z80pio.h">\r
+      <Filter>Header Files\VM Common Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\crc80\crc80.h">\r
+      <Filter>Header Files\VM Driver Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\crc80\display.h">\r
+      <Filter>Header Files\VM Driver Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\vm\crc80\membus.h">\r
+      <Filter>Header Files\VM Driver Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="..\src\res\resource.h">\r
+      <Filter>Resource Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Image Include="..\src\res\crc80.ico">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\board.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button00.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button01.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button02.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button03.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button04.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button05.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button06.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button07.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button08.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button09.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button10.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button11.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button12.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button13.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button14.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button15.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button16.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button17.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button18.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button19.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button20.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button21.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button22.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button23.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="..\src\res\crc80\button24.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\src\res\crc80.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file