This adds VM; eCRC80.
--- /dev/null
+"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/
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")
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)
+6/8/2022
+
+[CRC80] support Computer Research CRC-80
+
+
5/29/2022
[M23/DISPLAY] add pseudo jis font image
retro pc emulator common source code
- 5/25/2022
+ 6/8/2022
--- What's this ?
EmuGaki PV-2000
COLECO
yaCOLECOVISION ColecoVision
+ Computer Research
+ eCRC-80 CRC-80
EPOCH
eSCV Super Cassette Vision
EPSON
-<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>
--- /dev/null
+<!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>
--- /dev/null
+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}
+)
+
+
--- /dev/null
+/*
+ * 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
+
+
+
--- /dev/null
+<?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>
--- /dev/null
+
+#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
/*
* 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>
--- /dev/null
+// 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
</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>
--- /dev/null
+cmake_minimum_required (VERSION 3.0)
+
+message("* vm/crc80")
+
+add_library(vm_emucrc80
+ display.cpp
+ membus.cpp
+ crc80.cpp
+)
--- /dev/null
+/*
+ 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;
+}
+
--- /dev/null
+/*
+ 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
--- /dev/null
+/*
+ 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;
+}
+
+}
--- /dev/null
+/*
+ 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
+
--- /dev/null
+/*
+ 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);
+}
+}
--- /dev/null
+/*
+ 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
#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"
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
--- /dev/null
+<?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
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
--- /dev/null
+<?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
--- /dev/null
+<?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