+4/30/2019
+
+[VM/DEVICE] add is_primary_cpu() and update_extra_event()
+[VM/EVENT] support to udpate event while cpu is running one opecode
+[VM/I8259] fix reading isr register (thanks Mr.rednow)
+[VM/SCSI_HOST] fix to raise irq at command/message phase
+[VM/Z80] improve to update event in every read/write cycle
+
+[CEFUCOM21] support Hino Electronics CEFUCOM-21 (not work)
+[MZ2500/CRTC] apply crtc patch (thanks Mr.Koucha-Youkan)
+[PC8801MA] improve to enable/disable cmdsing and pcg
+[PC8801MA] improve to enable/disable changing palette for each scan line
+
+
2/19/2019
[VM/DEVICE] add is_primary_cpu() and update_extra_event()
Binary archive of retro pc emulator common source code
- 1/11/2019
+ 4/30/2019
--- What's this ?
eBabbage-2nd Babbage-2nd
HITACHI
eBASICMasterJr BASIC Master Jr
+ Hino Electronics
+ eCEFUCOM-21 CEFUCOM-21
Homebrew
eZ80TVGAME Homebrew Z80 TV GAME SYSTEM
IBM Japan Ltd
-<B><FONT SIZE=-1>Upstream 2019-02-19-2<BR>
+<B><FONT SIZE=-1>Upstream 2019-04-30<BR>
Qt Port and FM7 series 2019-05-18<BR>
</FONT></B>
void Object_Menu_Control_98::do_set_egc(bool flag)
{
- emit sig_set_dipsw(DIPSW_POSITION_EGC, flag);
+ emit sig_set_dipsw(DIPSWITCH_POSITION_EGC, flag);
emit sig_emu_update_config();
}
void Object_Menu_Control_98::do_set_gdc_fast(bool flag)
{
- emit sig_set_dipsw(DIPSW_POSITION_GDC_FAST, flag);
+ emit sig_set_dipsw(DIPSWITCH_POSITION_GDC_FAST, flag);
emit sig_emu_update_config();
}
void Object_Menu_Control_98::do_set_ram_512k(bool flag)
{
- emit sig_set_dipsw(DIPSW_POSITION_RAM512K, flag);
+ emit sig_set_dipsw(DIPSWITCH_POSITION_RAM512K, flag);
emit sig_emu_update_config();
}
void Object_Menu_Control_98::do_set_init_memsw(bool flag)
{
- emit sig_set_dipsw(DIPSW_POSITION_NOINIT_MEMSW, !flag);
+ emit sig_set_dipsw(DIPSWITCH_POSITION_NOINIT_MEMSW, !flag);
emit sig_emu_update_config();
}
actionRAM_512K->setCheckable(true);
actionRAM_512K->setVisible(true);
menuMachine->addAction(actionRAM_512K);
- if((config.dipswitch & ((0x1) << DIPSW_POSITION_RAM512K)) != 0) actionRAM_512K->setChecked(true); // DipSW 1-8
+ if((config.dipswitch & ((0x1) << DIPSWITCH_POSITION_RAM512K)) != 0) actionRAM_512K->setChecked(true); // DipSW 1-8
connect(actionRAM_512K, SIGNAL(toggled(bool)),
actionRAM_512K->pc98_binds, SLOT(do_set_ram_512k(bool)));
connect(actionRAM_512K->pc98_binds, SIGNAL(sig_set_dipsw(int, bool)),
actionINIT_MEMSW->setCheckable(true);
actionINIT_MEMSW->setVisible(true);
menuMachine->addAction(actionINIT_MEMSW);
- if((config.dipswitch & ((0x1) << DIPSW_POSITION_NOINIT_MEMSW)) == 0) actionINIT_MEMSW->setChecked(true); // DipSW 1-8
+ if((config.dipswitch & ((0x1) << DIPSWITCH_POSITION_NOINIT_MEMSW)) == 0) actionINIT_MEMSW->setChecked(true); // DipSW 1-8
connect(actionINIT_MEMSW, SIGNAL(toggled(bool)),
actionINIT_MEMSW->pc98_binds, SLOT(do_set_init_memsw(bool)));
connect(actionINIT_MEMSW->pc98_binds, SIGNAL(sig_set_dipsw(int, bool)),
actionGDC_FAST->setCheckable(true);
actionGDC_FAST->setVisible(true);
menuMachine->addAction(actionGDC_FAST);
- if((config.dipswitch & ((0x1) << DIPSW_POSITION_GDC_FAST)) != 0) actionGDC_FAST->setChecked(true); // DipSW 1-8
+ if((config.dipswitch & ((0x1) << DIPSWITCH_POSITION_GDC_FAST)) != 0) actionGDC_FAST->setChecked(true); // DipSW 1-8
connect(actionGDC_FAST, SIGNAL(toggled(bool)),
actionGDC_FAST->pc98_binds, SLOT(do_set_gdc_fast(bool)));
connect(actionGDC_FAST->pc98_binds, SIGNAL(sig_set_dipsw(int, bool)),
actionEGC->setCheckable(true);
actionEGC->setVisible(true);
menuMachine->addAction(actionEGC);
- if((config.dipswitch & ((0x1) << DIPSW_POSITION_EGC)) != 0) actionEGC->setChecked(true); // DipSW 1-8
+ if((config.dipswitch & ((0x1) << DIPSWITCH_POSITION_EGC)) != 0) actionEGC->setChecked(true); // DipSW 1-8
connect(actionEGC, SIGNAL(toggled(bool)),
actionEGC->pc98_binds, SLOT(do_set_egc(bool)));
connect(actionEGC->pc98_binds, SIGNAL(sig_set_dipsw(int, bool)),
--- /dev/null
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Japanese resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
+#ifdef _WIN32
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+#pragma code_page(932)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // Japanese resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
+BEGIN
+ VK_RETURN, ID_ACCEL_SCREEN, VIRTKEY, ALT, NOINVERT
+ VK_APPS, ID_ACCEL_SPEED, VIRTKEY, NOINVERT
+ VK_APPS, ID_ACCEL_ROMAJI, VIRTKEY, CONTROL, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU1 MENU DISCARDABLE
+BEGIN
+ POPUP "Control"
+ BEGIN
+ MENUITEM "Reset", ID_RESET
+ MENUITEM SEPARATOR
+ MENUITEM "CPU x1", ID_CPU_POWER0
+ MENUITEM "CPU x2", ID_CPU_POWER1
+ MENUITEM "CPU x4", ID_CPU_POWER2
+ MENUITEM "CPU x8", ID_CPU_POWER3
+ MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
+ MENUITEM SEPARATOR
+ MENUITEM "Paste", ID_AUTOKEY_START
+ MENUITEM "Stop", ID_AUTOKEY_STOP
+ MENUITEM "Romaji to Kana", ID_ROMAJI_TO_KANA
+ MENUITEM SEPARATOR
+ POPUP "Save State"
+ BEGIN
+ MENUITEM "State 0", ID_SAVE_STATE0
+ MENUITEM "State 1", ID_SAVE_STATE1
+ MENUITEM "State 2", ID_SAVE_STATE2
+ MENUITEM "State 3", ID_SAVE_STATE3
+ MENUITEM "State 4", ID_SAVE_STATE4
+ MENUITEM "State 5", ID_SAVE_STATE5
+ MENUITEM "State 6", ID_SAVE_STATE6
+ MENUITEM "State 7", ID_SAVE_STATE7
+ MENUITEM "State 8", ID_SAVE_STATE8
+ MENUITEM "State 9", ID_SAVE_STATE9
+ END
+ POPUP "Load State"
+ BEGIN
+ MENUITEM "State 0", ID_LOAD_STATE0
+ MENUITEM "State 1", ID_LOAD_STATE1
+ MENUITEM "State 2", ID_LOAD_STATE2
+ MENUITEM "State 3", ID_LOAD_STATE3
+ MENUITEM "State 4", ID_LOAD_STATE4
+ MENUITEM "State 5", ID_LOAD_STATE5
+ MENUITEM "State 6", ID_LOAD_STATE6
+ MENUITEM "State 7", ID_LOAD_STATE7
+ MENUITEM "State 8", ID_LOAD_STATE8
+ MENUITEM "State 9", ID_LOAD_STATE9
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "Debug MPU02 CPU", ID_OPEN_DEBUGGER0
+ MENUITEM "Debug PPU-I CPU", ID_OPEN_DEBUGGER1
+ MENUITEM "Close Debugger", ID_CLOSE_DEBUGGER
+ MENUITEM SEPARATOR
+ MENUITEM "Exit", ID_EXIT
+ END
+ POPUP "CMT"
+ BEGIN
+ MENUITEM "Play", ID_PLAY_TAPE1
+ MENUITEM "Rec", ID_REC_TAPE1
+ MENUITEM "Eject", ID_CLOSE_TAPE1
+ MENUITEM SEPARATOR
+ MENUITEM "Play Button", ID_PLAY_BUTTON1
+ MENUITEM "Stop Button", ID_STOP_BUTTON1
+ MENUITEM "Fast Forward", ID_FAST_FORWARD1
+ MENUITEM "Fast Rewind", ID_FAST_REWIND1
+ MENUITEM SEPARATOR
+ MENUITEM "Waveform Shaper", ID_USE_WAVE_SHAPER1
+ MENUITEM SEPARATOR
+ MENUITEM "Recent", ID_RECENT_TAPE1
+ END
+ POPUP "Device"
+ BEGIN
+ POPUP "Sound"
+ BEGIN
+ MENUITEM "Play CMT Noise", ID_VM_SOUND_NOISE_CMT
+ MENUITEM "Play CMT Sound", ID_VM_SOUND_PLAY_TAPE
+ END
+ END
+ POPUP "Host"
+ BEGIN
+ MENUITEM "Rec Movie 60fps", ID_HOST_REC_MOVIE_60FPS
+ MENUITEM "Rec Movie 30fps", ID_HOST_REC_MOVIE_30FPS
+ MENUITEM "Rec Movie 15fps", ID_HOST_REC_MOVIE_15FPS
+ MENUITEM "Rec Sound", ID_HOST_REC_SOUND
+ MENUITEM "Stop", ID_HOST_REC_STOP
+ MENUITEM "Capture Screen", ID_HOST_CAPTURE_SCREEN
+ MENUITEM SEPARATOR
+ POPUP "Screen"
+ BEGIN
+ MENUITEM "Window x1", ID_SCREEN_WINDOW
+ MENUITEM "Fullscreen 640x400", ID_SCREEN_FULLSCREEN
+ MENUITEM SEPARATOR
+ MENUITEM "Fullscreen Stretch 1", ID_SCREEN_FULLSCREEN_DOTBYDOT
+ MENUITEM "Fullscreen Stretch 2", ID_SCREEN_FULLSCREEN_STRETCH
+ MENUITEM "Fullscreen Stretch 4", ID_SCREEN_FULLSCREEN_FILL
+ MENUITEM SEPARATOR
+ MENUITEM "Rotate 0deg", ID_SCREEN_ROTATE_0
+ MENUITEM "Rotate +90deg", ID_SCREEN_ROTATE_90
+ MENUITEM "Rotate 180deg", ID_SCREEN_ROTATE_180
+ MENUITEM "Rotate -90deg", ID_SCREEN_ROTATE_270
+ END
+ POPUP "Sound"
+ BEGIN
+ MENUITEM "2000Hz", ID_SOUND_FREQ0
+ MENUITEM "4000Hz", ID_SOUND_FREQ1
+ MENUITEM "8000Hz", ID_SOUND_FREQ2
+ MENUITEM "11025Hz", ID_SOUND_FREQ3
+ MENUITEM "22050Hz", ID_SOUND_FREQ4
+ MENUITEM "44100Hz", ID_SOUND_FREQ5
+ MENUITEM "48000Hz", ID_SOUND_FREQ6
+ MENUITEM "96000Hz", ID_SOUND_FREQ7
+ MENUITEM SEPARATOR
+ MENUITEM "50msec", ID_SOUND_LATE0
+ MENUITEM "100msec", ID_SOUND_LATE1
+ MENUITEM "200msec", ID_SOUND_LATE2
+ MENUITEM "300msec", ID_SOUND_LATE3
+ MENUITEM "400msec", ID_SOUND_LATE4
+ MENUITEM SEPARATOR
+ MENUITEM "Realtime Mix", ID_SOUND_STRICT_RENDER
+ MENUITEM "Light Weight Mix", ID_SOUND_LIGHT_RENDER
+ MENUITEM SEPARATOR
+ MENUITEM "Volume", ID_SOUND_VOLUME
+ END
+ POPUP "Input"
+ BEGIN
+ MENUITEM "Joystick #1", ID_INPUT_JOYSTICK0
+ MENUITEM "Joystick #2", ID_INPUT_JOYSTICK1
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "Use Direct3D9", ID_HOST_USE_D3D9
+ MENUITEM "Wait Vsync", ID_HOST_WAIT_VSYNC
+ MENUITEM "Use DirectInput", ID_HOST_USE_DINPUT
+ MENUITEM "Disable Windows 8 DWM", ID_HOST_DISABLE_DWM
+ MENUITEM "Show Status Bar", ID_HOST_SHOW_STATUS_BAR
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1 ICON DISCARDABLE "cefucom21.ico"
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME DIALOG DISCARDABLE 0, 0, 250, 120
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Volume"
+FONT 9, "MS PGothic"
+BEGIN
+ LTEXT "Sound Device #1",IDC_VOLUME_CAPTION0,6,6,60,8
+ CONTROL "",IDC_VOLUME_PARAM_L0,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,6,175,12
+ CONTROL "",IDC_VOLUME_PARAM_R0,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,21,175,12
+ LTEXT "Sound Device #2",IDC_VOLUME_CAPTION1,6,36,60,8
+ CONTROL "",IDC_VOLUME_PARAM_L1,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,36,175,12
+ CONTROL "",IDC_VOLUME_PARAM_R1,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,51,175,12
+ LTEXT "Sound Device #3",IDC_VOLUME_CAPTION2,6,66,60,8
+ CONTROL "",IDC_VOLUME_PARAM_L2,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,66,175,12
+ CONTROL "",IDC_VOLUME_PARAM_R2,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,81,175,12
+ DEFPUSHBUTTON "OK",IDOK,70,100,50,14
+ DEFPUSHBUTTON "Reset",IDC_VOLUME_RESET,130,100,50,14
+END
+
+IDD_JOYSTICK DIALOG DISCARDABLE 0, 0, 175, 105
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Joystick #1"
+FONT 9, "MS PGothic"
+BEGIN
+ LTEXT "Button #1",IDC_JOYSTICK_CAPTION0,6,6,40,8
+ EDITTEXT IDC_JOYSTICK_PARAM0,50,4,120,14,ES_MULTILINE
+ LTEXT "Button #2",IDC_JOYSTICK_CAPTION1,6,21,40,8
+ EDITTEXT IDC_JOYSTICK_PARAM1,50,19,120,14,ES_MULTILINE
+ LTEXT "Button #3",IDC_JOYSTICK_CAPTION2,6,36,40,8
+ EDITTEXT IDC_JOYSTICK_PARAM2,50,34,120,14,ES_MULTILINE
+ LTEXT "Button #4",IDC_JOYSTICK_CAPTION3,6,51,40,8
+ EDITTEXT IDC_JOYSTICK_PARAM3,50,49,120,14,ES_MULTILINE
+ LTEXT "Button #5",IDC_JOYSTICK_CAPTION4,6,66,40,8
+ EDITTEXT IDC_JOYSTICK_PARAM4,50,64,120,14,ES_MULTILINE
+ DEFPUSHBUTTON "OK",IDOK,35,85,50,14
+ DEFPUSHBUTTON "Reset",IDC_JOYSTICK_RESET,90,85,50,14
+END
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
MZ2000
MZ2200
MZ2500 (SUPER_MZ)
+MZ2800
MZ3500
PASOPIA5
PASOPIA7
HC80 (HC20)
MYCOMZ80A (MBLVL2)
MZ80B (MZ2000)
-MZ2800 (SUPER_MZ)
MZ5500 (MZ3500)
MZ6500
MZ6550 (PC88MC)
POPUP "Display"
BEGIN
MENUITEM "Scanline", ID_VM_MONITOR_SCANLINE
+ MENUITEM "Real Palettes", ID_VM_DIPSWITCH5
END
POPUP "Printer"
BEGIN
POPUP "Display"
BEGIN
MENUITEM "Scanline", ID_VM_MONITOR_SCANLINE
+ MENUITEM "Real Palettes", ID_VM_DIPSWITCH5
END
POPUP "Printer"
BEGIN
POPUP "Display"
BEGIN
MENUITEM "Scanline", ID_VM_MONITOR_SCANLINE
+ MENUITEM "Real Palettes", ID_VM_DIPSWITCH5
END
POPUP "Printer"
BEGIN
MENUITEM SEPARATOR
MENUITEM "GSX-8800", ID_VM_DIPSWITCH2
MENUITEM "PCG-8100", ID_VM_DIPSWITCH3
+ MENUITEM "CMD SING", ID_VM_DIPSWITCH4
MENUITEM SEPARATOR
MENUITEM "Play FDD Noise", ID_VM_SOUND_NOISE_FDD
MENUITEM "Play CMT Noise", ID_VM_SOUND_NOISE_CMT, GRAYED
POPUP "Display"
BEGIN
MENUITEM "Scanline", ID_VM_MONITOR_SCANLINE
+ MENUITEM "Real Palettes", ID_VM_DIPSWITCH5
END
POPUP "Printer"
BEGIN
MENUITEM "HMB-20", ID_VM_DIPSWITCH1
MENUITEM "GSX-8800", ID_VM_DIPSWITCH2
MENUITEM "PCG-8100", ID_VM_DIPSWITCH3
+ MENUITEM "CMD SING", ID_VM_DIPSWITCH4
MENUITEM SEPARATOR
MENUITEM "Play FDD Noise", ID_VM_SOUND_NOISE_FDD
MENUITEM "Play CMT Noise", ID_VM_SOUND_NOISE_CMT, GRAYED
MENUITEM "Standard", ID_VM_MONITOR_TYPE1
MENUITEM SEPARATOR
MENUITEM "Scanline", ID_VM_MONITOR_SCANLINE
+ MENUITEM "Real Palettes", ID_VM_DIPSWITCH5
END
POPUP "Printer"
BEGIN
MENUITEM SEPARATOR
MENUITEM "GSX-8800", ID_VM_DIPSWITCH2
MENUITEM "PCG-8100", ID_VM_DIPSWITCH3
+ MENUITEM "CMD SING", ID_VM_DIPSWITCH4
MENUITEM SEPARATOR
MENUITEM "Play FDD Noise", ID_VM_SOUND_NOISE_FDD
MENUITEM "Play CMT Noise", ID_VM_SOUND_NOISE_CMT, GRAYED
POPUP "Display"
BEGIN
MENUITEM "Scanline", ID_VM_MONITOR_SCANLINE
+ MENUITEM "Real Palettes", ID_VM_DIPSWITCH5
END
POPUP "Printer"
BEGIN
--- /dev/null
+/*
+ Hino Electronics CEFUCOM-21 Emulator 'eCEFUCOM-21'
+
+ Author : Takeda.Toshiya
+ Date : 2019.03.28-
+
+ [ virtual machine ]
+*/
+
+#include "cefucom21.h"
+#include "../../emu.h"
+#include "../device.h"
+#include "../event.h"
+
+#include "../ay_3_891x.h"
+#include "../datarec.h"
+#include "../i8255.h"
+#include "../io.h"
+#include "../mc6847.h"
+#include "../noise.h"
+#include "../memory.h"
+#include "../not.h"
+#include "../rp5c01.h"
+#include "../z80.h"
+#include "../z80ctc.h"
+#include "../z80pio.h"
+
+#ifdef USE_DEBUGGER
+#include "../debugger.h"
+#endif
+
+#include "mcu.h"
+#include "pcu.h"
+
+//#define BOOT_BASIC
+
+// ----------------------------------------------------------------------------
+// initialize
+// ----------------------------------------------------------------------------
+
+VM::VM(EMU* 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
+
+ mcu_psg = new AY_3_891X(this, emu);
+#ifdef USE_DEBUGGER
+ mcu_psg->set_context_debugger(new DEBUGGER(this, emu));
+#endif
+ mcu_drec = new DATAREC(this, emu);
+ mcu_drec->set_context_noise_play(new NOISE(this, emu));
+ mcu_drec->set_context_noise_stop(new NOISE(this, emu));
+ mcu_drec->set_context_noise_fast(new NOISE(this, emu));
+ mcu_io = new IO(this, emu);
+ mcu_vdp = new MC6847(this, emu);
+ mcu_mem = new MEMORY(this, emu);
+ mcu_not = new NOT(this, emu);
+ mcu_cpu = new Z80(this, emu);
+ mcu_pio = new Z80PIO(this, emu);
+ mcu = new MCU(this, emu);
+
+ pcu_pio1 = new I8255(this, emu);
+ pcu_pio2 = new I8255(this, emu);
+ pcu_pio3 = new I8255(this, emu);
+ pcu_io = new IO(this, emu);
+ pcu_mem = new MEMORY(this, emu);
+ pcu_rtc = new RP5C01(this, emu);
+ pcu_cpu = new Z80(this, emu);
+ pcu_ctc1 = new Z80CTC(this, emu);
+ pcu_ctc2 = new Z80CTC(this, emu);
+ pcu_pio = new Z80PIO(this, emu);
+ pcu = new PCU(this, emu);
+
+ // set contexts
+ event->set_context_cpu(mcu_cpu);
+ event->set_context_cpu(pcu_cpu);
+ event->set_context_sound(mcu_psg);
+ event->set_context_sound(mcu_drec);
+ event->set_context_sound(mcu_drec->get_context_noise_play());
+ event->set_context_sound(mcu_drec->get_context_noise_stop());
+ event->set_context_sound(mcu_drec->get_context_noise_fast());
+
+ mcu_vdp->load_font_image(create_local_path(_T("FONT.ROM")));
+ mcu_vdp->set_vram_ptr(vram, 0x1800);
+#ifdef BOOT_BASIC
+ mcu_vdp->set_context_vsync(mcu_not, SIG_NOT_INPUT, 1);
+ mcu_not->set_context_out(mcu_cpu, SIG_CPU_IRQ, 1);
+#endif
+
+ mcu_vdp->set_context_vsync(mcu, SIG_MCU_SYSPORT, 0x10);
+ mcu_drec->set_context_ear(mcu, SIG_MCU_SYSPORT, 0x20);
+ // bit6: printer busy
+ mcu_vdp->set_context_hsync(mcu, SIG_MCU_SYSPORT, 0x80);
+
+// mcu_vdp->set_context_vsync(pcu_ctc1, SIG_Z80CTC_TRIG_1, 1);
+// mcu_vdp->set_context_vsync(pcu_ctc2, SIG_Z80CTC_TRIG_1, 1);
+ mcu_vdp->set_context_vsync(mcu_pio, SIG_Z80PIO_PORT_A, 0x40);
+
+ mcu_pio->set_context_port_a(pcu_pio, SIG_Z80PIO_PORT_A, 0x38, -3);
+ mcu_pio->set_context_port_b(pcu_pio, SIG_Z80PIO_PORT_B, 0xff, 0);
+ mcu_pio->set_context_ready_a(pcu_pio, SIG_Z80PIO_STROBE_A, 1);
+ mcu_pio->set_context_ready_b(pcu_pio, SIG_Z80PIO_STROBE_B, 1);
+ mcu_pio->set_hand_shake(0, true);
+ mcu_pio->set_hand_shake(1, true);
+
+ mcu->set_context_drec(mcu_drec);
+ mcu->set_context_psg(mcu_psg);
+ mcu->set_context_vdp(mcu_vdp);
+
+ pcu_pio->set_context_port_a(mcu_pio, SIG_Z80PIO_PORT_A, 0x38, -3);
+ pcu_pio->set_context_port_b(mcu_pio, SIG_Z80PIO_PORT_B, 0xff, 0);
+ pcu_pio->set_context_ready_a(mcu_pio, SIG_Z80PIO_STROBE_A, 1);
+ pcu_pio->set_context_ready_b(mcu_pio, SIG_Z80PIO_STROBE_B, 1);
+ pcu_pio->set_hand_shake(0, true);
+ pcu_pio->set_hand_shake(1, true);
+
+ // cpu bus
+ mcu_cpu->set_context_mem(mcu_mem);
+ mcu_cpu->set_context_io(mcu_io);
+ mcu_cpu->set_context_intr(dummy);
+#ifdef USE_DEBUGGER
+ mcu_cpu->set_context_debugger(new DEBUGGER(this, emu));
+#endif
+
+ pcu_cpu->set_context_mem(pcu_mem);
+ pcu_cpu->set_context_io(pcu_io);
+ pcu_cpu->set_context_intr(dummy);
+#ifdef USE_DEBUGGER
+ pcu_cpu->set_context_debugger(new DEBUGGER(this, emu));
+#endif
+
+ // z80 family daisy chain
+ DEVICE* parent_dev = NULL;
+ int level = 0;
+
+ #define Z80_DAISY_CHAIN(cpu, dev) { \
+ if(parent_dev == NULL) { \
+ cpu->set_context_intr(dev); \
+ } else { \
+ parent_dev->set_context_child(dev); \
+ } \
+ dev->set_context_intr(cpu, level++); \
+ parent_dev = dev; \
+ }
+ Z80_DAISY_CHAIN(pcu_cpu, pcu_ctc1);
+ Z80_DAISY_CHAIN(pcu_cpu, pcu_ctc2);
+ Z80_DAISY_CHAIN(pcu_cpu, pcu_pio );
+#ifndef BOOT_BASIC
+ parent_dev = NULL;
+ Z80_DAISY_CHAIN(mcu_cpu, mcu_pio );
+#endif
+
+ // memory bus
+ memset(mcu_rom, 0xff, sizeof(mcu_rom));
+ memset(mcu_ram, 0x00, sizeof(mcu_ram));
+ memset(pcu_rom, 0xff, sizeof(pcu_rom));
+ memset(pcu_ram, 0x00, sizeof(pcu_ram));
+
+ memset(vram, 0x00, sizeof(vram));
+ memset(cram, 0x00, sizeof(cram));
+
+ mcu_mem->read_bios(_T("BASIC.ROM"), mcu_rom, sizeof(mcu_rom));
+#ifdef BOOT_BASIC
+ memset(mcu_rom + 0x7800, 0, 0x800);
+#else
+// memset(mcu_rom, 0, 0x8000);
+#endif
+ mcu_mem->set_memory_r (0x0000, 0x6fff, mcu_rom);
+ mcu_mem->set_memory_rw(0x6000, 0x77ff, vram);
+ mcu_mem->set_memory_r (0x7800, 0x7fff, mcu_rom + 0x7800);
+// mcu_mem->set_memory_rw(0x8000, 0xffff, mcu_ram);
+ mcu_mem->set_memory_rw(0x8000, 0xefff, mcu_ram);
+ mcu_mem->set_memory_rw(0xf000, 0xffff, cram);
+
+ pcu_mem->read_bios(_T("MENU.ROM"), pcu_rom, sizeof(pcu_rom));
+#ifdef BOOT_BASIC
+ memset(pcu_rom, 0, 0x8000);
+#endif
+ pcu_mem->set_memory_r (0x0000, 0x7fff, pcu_rom);
+ pcu_mem->set_memory_rw(0x8000, 0xffff, pcu_ram);
+ pcu_mem->set_memory_rw(0xc000, 0xcfff, cram);
+
+ // i/o bus
+ mcu_io->set_iomap_single_rw(0x40, mcu);
+ mcu_io->set_iomap_range_r (0x80, 0x89, mcu);
+ mcu_io->set_iomap_alias_w (0xc0, mcu_psg, 1); // PSG data
+ mcu_io->set_iomap_alias_w (0xc1, mcu_psg, 0); // PSG ch
+// mcu_io->set_iomap_alias_r (0xc0, mcu_psg, 1);
+ mcu_io->set_iomap_alias_r (0xc1, mcu_psg, 1); // PSG data
+ mcu_io->set_iomap_range_rw (0xe0, 0xe3, mcu_pio);
+
+ pcu_io->cpu_index = 1;
+ pcu_io->set_iomap_range_rw (0x00, 0x03, pcu_ctc1);
+ pcu_io->set_iomap_range_rw (0x08, 0x0b, pcu_ctc2);
+ pcu_io->set_iomap_alias_rw (0x10, pcu_pio, 0);
+ pcu_io->set_iomap_alias_rw (0x11, pcu_pio, 2);
+ pcu_io->set_iomap_alias_rw (0x12, pcu_pio, 1);
+ pcu_io->set_iomap_alias_rw (0x13, pcu_pio, 3);
+ pcu_io->set_iomap_range_rw (0x20, 0x2f, pcu_rtc);
+ pcu_io->set_iomap_range_rw (0x38, 0x39, pcu);
+ pcu_io->set_iomap_range_rw (0x60, 0x63, pcu_pio1);
+ pcu_io->set_iomap_range_rw (0x64, 0x67, pcu_pio2);
+ pcu_io->set_iomap_range_rw (0x68, 0x6b, pcu_pio3);
+
+ // initialize all devices
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ device->initialize();
+ }
+}
+
+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();
+ }
+ mcu_vdp->write_signal(SIG_MC6847_GM, 6, 7);
+ mcu_vdp->write_signal(SIG_MC6847_CSS, 0, 0);
+ mcu_vdp->write_signal(SIG_MC6847_AG, 0, 0);
+
+// pcu_cpu->write_signal(SIG_CPU_BUSREQ, 1, 1);
+}
+
+void VM::run()
+{
+ event->drive();
+}
+
+// ----------------------------------------------------------------------------
+// debugger
+// ----------------------------------------------------------------------------
+
+#ifdef USE_DEBUGGER
+DEVICE *VM::get_cpu(int index)
+{
+ if(index == 0) {
+ return mcu_cpu;
+ } else if(index == 1) {
+ return pcu_cpu;
+ }
+ return NULL;
+}
+#endif
+
+// ----------------------------------------------------------------------------
+// draw screen
+// ----------------------------------------------------------------------------
+
+void VM::draw_screen()
+{
+ mcu_vdp->draw_screen();
+}
+
+// ----------------------------------------------------------------------------
+// soud manager
+// ----------------------------------------------------------------------------
+
+void VM::initialize_sound(int rate, int samples)
+{
+ // init sound manager
+ event->initialize_sound(rate, samples);
+
+ // init sound gen
+ mcu_psg->initialize_sound(rate, 1996750, samples, 0, 0);
+}
+
+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) {
+ mcu_psg->set_volume(1, decibel_l, decibel_r);
+ } else if(ch == 1) {
+ mcu_drec->set_volume(0, decibel_l, decibel_r);
+ } else if(ch == 2) {
+ mcu_drec->get_context_noise_play()->set_volume(0, decibel_l, decibel_r);
+ mcu_drec->get_context_noise_stop()->set_volume(0, decibel_l, decibel_r);
+ mcu_drec->get_context_noise_fast()->set_volume(0, decibel_l, decibel_r);
+ }
+}
+#endif
+
+// ----------------------------------------------------------------------------
+// user interface
+// ----------------------------------------------------------------------------
+
+void VM::play_tape(int drv, const _TCHAR* file_path)
+{
+ bool remote = mcu_drec->get_remote();
+
+ if(mcu_drec->play_tape(file_path) && remote) {
+ // if machine already sets remote on, start playing now
+ push_play(drv);
+ }
+}
+
+void VM::rec_tape(int drv, const _TCHAR* file_path)
+{
+ bool remote = mcu_drec->get_remote();
+
+ if(mcu_drec->rec_tape(file_path) && remote) {
+ // if machine already sets remote on, start recording now
+ push_play(drv);
+ }
+}
+
+void VM::close_tape(int drv)
+{
+ emu->lock_vm();
+ mcu_drec->close_tape();
+ emu->unlock_vm();
+ mcu_drec->set_remote(false);
+}
+
+bool VM::is_tape_inserted(int drv)
+{
+ return mcu_drec->is_tape_inserted();
+}
+
+bool VM::is_tape_playing(int drv)
+{
+ return mcu_drec->is_tape_playing();
+}
+
+bool VM::is_tape_recording(int drv)
+{
+ return mcu_drec->is_tape_recording();
+}
+
+int VM::get_tape_position(int drv)
+{
+ return mcu_drec->get_tape_position();
+}
+
+const _TCHAR* VM::get_tape_message(int drv)
+{
+ return mcu_drec->get_message();
+}
+
+void VM::push_play(int drv)
+{
+ mcu_drec->set_remote(false);
+ mcu_drec->set_ff_rew(0);
+ mcu_drec->set_remote(true);
+}
+
+void VM::push_stop(int drv)
+{
+ mcu_drec->set_remote(false);
+}
+
+void VM::push_fast_forward(int drv)
+{
+ mcu_drec->set_remote(false);
+ mcu_drec->set_ff_rew(1);
+ mcu_drec->set_remote(true);
+}
+
+void VM::push_fast_rewind(int drv)
+{
+ mcu_drec->set_remote(false);
+ mcu_drec->set_ff_rew(-1);
+ mcu_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 5
+
+bool VM::process_state(FILEIO* state_fio, bool loading)
+{
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ const char *name = typeid(*device).name() + 6; // skip "class "
+ int len = strlen(name);
+
+ if(!state_fio->StateCheckInt32(len)) {
+ return false;
+ }
+ if(!state_fio->StateCheckBuffer(name, len, 1)) {
+ return false;
+ }
+ if(!device->process_state(state_fio, loading)) {
+ return false;
+ }
+ }
+ return true;
+}
+
--- /dev/null
+/*
+ Hino Electronics CEFUCOM-21 Emulator 'eCEFUCOM-21'
+
+ Author : Takeda.Toshiya
+ Date : 2019.03.28-
+
+ [ virtual machine ]
+*/
+
+#ifndef _CEFUCOM21_H_
+#define _CEFUCOM21_H_
+
+#define DEVICE_NAME "Hino Electronics CEFUCOM-21"
+#define CONFIG_NAME "cefucom21"
+
+// device informations for virtual machine
+#define FRAMES_PER_SEC 60
+#define LINES_PER_FRAME 262
+#define CPU_CLOCKS 4000000
+#define SCREEN_WIDTH 256
+#define SCREEN_HEIGHT 192
+
+#define MC6847_ATTR_OFS 0x800
+#define MC6847_ATTR_INV 0x01
+#define MC6847_ATTR_AS 0x02
+#define MC6847_ATTR_CSS 0x04
+#define HAS_AY_3_8910
+#define MEMORY_BANK_SIZE 0x400
+#define IO_ADDR_MAX 0x100
+
+// device informations for win32
+#define USE_TAPE 1
+#define USE_AUTO_KEY 6
+#define USE_AUTO_KEY_RELEASE 10
+#define USE_AUTO_KEY_CAPS
+#define USE_SOUND_VOLUME 3
+#define USE_JOYSTICK
+#define USE_DEBUGGER
+#define USE_STATE
+
+#include "../../common.h"
+#include "../../fileio.h"
+#include "../vm_template.h"
+
+static const uint8_t key_map[10][8] = {
+ {0x31, 0x57, 0x53, 0x58, 0x26, 0x2e, 0xba, 0x00},
+ {0x1b, 0x51, 0x41, 0x5a, 0x28, 0x0d, 0xbb, 0xbf},
+ {0x33, 0x52, 0x46, 0x56, 0x25, 0xde, 0xdb, 0x00},
+ {0x32, 0x45, 0x44, 0x43, 0x27, 0xdc, 0xdd, 0x20},
+ {0x35, 0x59, 0x48, 0x4e, 0x72, 0x30, 0x50, 0x00},
+ {0x34, 0x54, 0x47, 0x42, 0x73, 0xbd, 0xc0, 0x00},
+ {0x36, 0x55, 0x4a, 0x4d, 0x71, 0x39, 0x4f, 0x00},
+ {0x37, 0x49, 0x4b, 0xbc, 0x70, 0x38, 0x4c, 0xbe},
+ {0x00, 0x12, 0x10, 0x11, 0x00, 0xf0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+};
+
+#ifdef USE_SOUND_VOLUME
+static const _TCHAR *sound_device_caption[] = {
+ _T("PSG"), _T("CMT (Signal)"), _T("Noise (CMT)"),
+};
+#endif
+
+class EMU;
+class DEVICE;
+class EVENT;
+
+class AY_3_891X;
+class DATAREC;
+class I8255;
+class IO;
+class MC6847;
+class MEMORY;
+class NOT;
+class RP5C01;
+class Z80;
+class Z80CTC;
+class Z80PIO;
+
+class MCU;
+class PCU;
+
+class VM : public VM_TEMPLATE
+{
+protected:
+// EMU* emu;
+
+ // devices
+ EVENT* event;
+
+ AY_3_891X *mcu_psg;
+ DATAREC *mcu_drec;
+ IO *mcu_io;
+ MC6847 *mcu_vdp;
+ MEMORY *mcu_mem;
+ NOT *mcu_not;
+ Z80 *mcu_cpu;
+ Z80PIO *mcu_pio;
+
+ MCU *mcu;
+
+ I8255 *pcu_pio1;
+ I8255 *pcu_pio2;
+ I8255 *pcu_pio3;
+ IO *pcu_io;
+ MEMORY *pcu_mem;
+ RP5C01 *pcu_rtc;
+ Z80 *pcu_cpu;
+ Z80CTC *pcu_ctc1;
+ Z80CTC *pcu_ctc2;
+ Z80PIO *pcu_pio;
+
+ PCU *pcu;
+
+ uint8_t mcu_rom[0x8000];
+ uint8_t mcu_ram[0x8000];
+ uint8_t pcu_rom[0x8000];
+ uint8_t pcu_ram[0x8000];
+ uint8_t vram[0x1800];
+ uint8_t cram[0x1000];
+
+public:
+ // ----------------------------------------
+ // initialize
+ // ----------------------------------------
+
+ VM(EMU* parent_emu);
+ ~VM();
+
+ // ----------------------------------------
+ // for emulation class
+ // ----------------------------------------
+
+ // drive virtual machine
+ void reset();
+ void run();
+ double get_frame_rate()
+ {
+ return FRAMES_PER_SEC;
+ }
+
+#ifdef USE_DEBUGGER
+ // debugger
+ DEVICE *get_cpu(int index);
+#endif
+
+ // draw screen
+ void draw_screen();
+
+ // sound generation
+ void initialize_sound(int rate, int samples);
+ uint16_t* create_sound(int* extra_frames);
+ int get_sound_buffer_ptr();
+#ifdef USE_SOUND_VOLUME
+ void set_sound_device_volume(int ch, int decibel_l, int decibel_r);
+#endif
+
+ // user interface
+ void play_tape(int drv, const _TCHAR* file_path);
+ void rec_tape(int drv, const _TCHAR* file_path);
+ void close_tape(int drv);
+ bool is_tape_inserted(int drv);
+ bool is_tape_playing(int drv);
+ bool is_tape_recording(int drv);
+ int get_tape_position(int drv);
+ const _TCHAR* get_tape_message(int drv);
+ void push_play(int drv);
+ void push_stop(int drv);
+ void push_fast_forward(int drv);
+ void push_fast_rewind(int drv);
+ void push_apss_forward(int drv) {}
+ void push_apss_rewind(int drv) {}
+ bool is_frame_skippable();
+
+ void update_config();
+ bool process_state(FILEIO* state_fio, bool loading);
+
+ // ----------------------------------------
+ // for each device
+ // ----------------------------------------
+
+ // devices
+ DEVICE* get_device(int id);
+// DEVICE* dummy;
+// DEVICE* first_device;
+// DEVICE* last_device;
+};
+
+#endif
--- /dev/null
+/*
+ Hino Electronics CEFUCOM-21 Emulator 'eCEFUCOM-21'
+
+ Author : Takeda.Toshiya
+ Date : 2019.03.28-
+
+ [ MCU02 (main control unit ???) ]
+*/
+
+#include "mcu.h"
+#include "../ay_3_891x.h"
+#include "../datarec.h"
+#include "../mc6847.h"
+
+void MCU::initialize()
+{
+ system_port = 0;
+
+ // register event to update the key status
+ register_frame_event(this);
+}
+
+void MCU::reset()
+{
+ memset(key_status, 0, sizeof(key_status));
+ d_vdp->write_signal(SIG_MC6847_INTEXT, 1, 1);
+}
+
+void MCU::write_io8(uint32_t addr, uint32_t data)
+{
+ switch(addr & 0xff) {
+ case 0x40:
+ d_drec->write_signal(SIG_DATAREC_MIC, data, 0x01);
+ d_drec->write_signal(SIG_DATAREC_REMOTE, ~data, 0x02);
+ // bit2 : kana lock led ???
+ // bit3 : printer strobe
+ d_vdp->write_signal(SIG_MC6847_GM, (data & 0x20) ? 7 : 6, 7);
+ d_vdp->write_signal(SIG_MC6847_CSS, data, 0x40);
+ d_vdp->write_signal(SIG_MC6847_AG, data, 0x80);
+ break;
+ }
+}
+
+uint32_t MCU::read_io8(uint32_t addr)
+{
+ switch(addr & 0xff) {
+ case 0x40:
+ return system_port;
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ return ~key_status[addr & 0x0f];
+ }
+ return 0xff;
+}
+
+void MCU::event_frame()
+{
+ const uint8_t *key_stat = emu->get_key_buffer();
+ const uint32_t *joy_stat = emu->get_joy_buffer();
+
+ for(int i = 0; i < 10; i++) {
+ uint8_t val = 0;
+ for(int j = 0; j < 8; j++) {
+ val |= key_stat[key_map[i][j]] ? (1 << j) : 0;
+ }
+ key_status[i] = val;
+ }
+ d_psg->write_signal(SIG_AY_3_891X_PORT_A, ~(joy_stat[0] & 0x1f), 0xff);
+ d_psg->write_signal(SIG_AY_3_891X_PORT_B, ~(joy_stat[1] & 0x1f), 0xff);
+}
+
+void MCU::write_signal(int id, uint32_t data, uint32_t mask)
+{
+ if(id == SIG_MCU_SYSPORT) {
+ system_port = (system_port & ~mask) | (system_port & mask);
+ }
+}
+
+#define STATE_VERSION 1
+
+bool MCU::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(key_status, sizeof(key_status), 1);
+ state_fio->StateValue(system_port);
+ return true;
+}
+
--- /dev/null
+/*
+ Hino Electronics CEFUCOM-21 Emulator 'eCEFUCOM-21'
+
+ Author : Takeda.Toshiya
+ Date : 2019.03.28-
+
+ [ MCU02 (main control unit ???) ]
+*/
+
+#ifndef _MCU_H_
+#define _MCU_H_
+
+#include "../vm.h"
+#include "../../emu.h"
+#include "../device.h"
+
+#define SIG_MCU_SYSPORT 0
+
+class MCU : public DEVICE
+{
+private:
+ DEVICE *d_drec, *d_psg, *d_vdp;
+
+ uint8_t key_status[16];
+ uint8_t system_port;
+
+public:
+ MCU(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ {
+ set_device_name(_T("MCU02"));
+ }
+ ~MCU() {}
+
+ // common functions
+ void initialize();
+ void reset();
+ void write_io8(uint32_t addr, uint32_t data);
+ uint32_t read_io8(uint32_t addr);
+ void event_frame();
+ void write_signal(int id, uint32_t data, uint32_t mask);
+ bool process_state(FILEIO* state_fio, bool loading);
+
+ // unique functions
+ void set_context_drec(DEVICE* device)
+ {
+ d_drec = device;
+ }
+ void set_context_psg(DEVICE* device)
+ {
+ d_psg = device;
+ }
+ void set_context_vdp(DEVICE* device)
+ {
+ d_vdp = device;
+ }
+};
+
+#endif
+
--- /dev/null
+/*
+ Hino Electronics CEFUCOM-21 Emulator 'eCEFUCOM-21'
+
+ Author : Takeda.Toshiya
+ Date : 2019.03.28-
+
+ [ PCU-I (peripheral control unit ???) ]
+*/
+
+#include "pcu.h"
+#include "../z80pio.h"
+
+void PCU::initialize()
+{
+}
+
+void PCU::reset()
+{
+}
+
+void PCU::write_io8(uint32_t addr, uint32_t data)
+{
+}
+
+uint32_t PCU::read_io8(uint32_t addr)
+{
+ return 0xff;
+}
+
+void PCU::event_frame()
+{
+}
+
+void PCU::write_signal(int id, uint32_t data, uint32_t mask)
+{
+}
+
+#define STATE_VERSION 1
+
+bool PCU::process_state(FILEIO* state_fio, bool loading)
+{
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ if(!state_fio->StateCheckInt32(this_device_id)) {
+ return false;
+ }
+ return true;
+}
+
--- /dev/null
+/*
+ Hino Electronics CEFUCOM-21 Emulator 'eCEFUCOM-21'
+
+ Author : Takeda.Toshiya
+ Date : 2019.03.28-
+
+ [ PCU-I (peripheral control unit ???) ]
+*/
+
+#ifndef _PCU_H_
+#define _PCU_H_
+
+#include "../vm.h"
+#include "../../emu.h"
+#include "../device.h"
+
+class PCU : public DEVICE
+{
+private:
+
+public:
+ PCU(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ {
+ set_device_name(_T("PCU-I"));
+ }
+ ~PCU() {}
+
+ // common functions
+ void initialize();
+ void reset();
+ void write_io8(uint32_t addr, uint32_t data);
+ uint32_t read_io8(uint32_t addr);
+ void event_frame();
+ void write_signal(int id, uint32_t data, uint32_t mask);
+ bool process_state(FILEIO* state_fio, bool loading);
+};
+
+#endif
+
message("* vm/common_vm")
-SET(THIS_LIB_VERSION 2.14.1)
+SET(THIS_LIB_VERSION 2.15.0)
#include(cotire)
set(s_vm_common_vm_srcs
} else if((pic[c].ocw3 & 3) == 2) {
return pic[c].irr;
} else if((pic[c].ocw3 & 3) == 3) {
- return pic[c].isr & ~pic[c].imr;
+ return pic[c].isr;// & ~pic[c].imr;
}
return 0;
}
if(!wr_table[laddr].dev->this_device_id && !wr_table[laddr].is_flipflop) {
this->out_debug_log(_T("UNKNOWN:\t"));
}
+ if(cpu_index != 0) {
+ this->out_debug_log(_T("CPU=%d\t"), cpu_index);
+ }
this->out_debug_log(_T("%06x\tOUT8\t%04x,%02x\n"), get_cpu_pc(cpu_index), addr, data & 0xff);
#endif
if(wr_table[laddr].is_flipflop) {
if(!rd_table[laddr].dev->this_device_id && !rd_table[laddr].value_registered) {
this->out_debug_log(_T("UNKNOWN:\t"));
}
+ if(cpu_index != 0) {
+ this->out_debug_log(_T("CPU=%d\t"), cpu_index);
+ }
this->out_debug_log(_T("%06x\tIN8\t%04x = %02x\n"), get_cpu_pc(cpu_index), addr, val & 0xff);
#endif
return val & 0xff;
if(!wr_table[laddr].dev->this_device_id && !wr_table[laddr].is_flipflop) {
this->out_debug_log(_T("UNKNOWN:\t"));
}
+ if(cpu_index != 0) {
+ this->out_debug_log(_T("CPU=%d\t"), cpu_index);
+ }
this->out_debug_log(_T("%06x\tOUT16\t%04x,%04x\n"), get_cpu_pc(cpu_index), addr, data & 0xffff);
#endif
if(wr_table[laddr].is_flipflop) {
if(!rd_table[laddr].dev->this_device_id && !rd_table[laddr].value_registered) {
this->out_debug_log(_T("UNKNOWN:\t"));
}
+ if(cpu_index != 0) {
+ this->out_debug_log(_T("CPU=%d\t"), cpu_index);
+ }
this->out_debug_log(_T("%06x\tIN16\t%04x = %04x\n"), get_cpu_pc(cpu_index), addr, val & 0xffff);
#endif
return val & 0xffff;
if(!wr_table[laddr].dev->this_device_id && !wr_table[laddr].is_flipflop) {
this->out_debug_log(_T("UNKNOWN:\t"));
}
+ if(cpu_index != 0) {
+ this->out_debug_log(_T("CPU=%d\t"), cpu_index);
+ }
this->out_debug_log(_T("%06x\tOUT32\t%04x,%08x\n"), get_cpu_pc(cpu_index), addr, data);
#endif
if(wr_table[laddr].is_flipflop) {
if(!rd_table[laddr].dev->this_device_id && !rd_table[laddr].value_registered) {
this->out_debug_log(_T("UNKNOWN:\t"));
}
+ if(cpu_index != 0) {
+ this->out_debug_log(_T("CPU=%d\t"), cpu_index);
+ }
this->out_debug_log(_T("%06x\tIN32\t%04x = %08x\n"), get_cpu_pc(cpu_index), laddr | haddr, val);
#endif
return val;
#define SCRN_640x400 1
#define SCRN_640x200 2
#define SCRN_320x200 3
+#define SCRN_320x400 4
namespace MZ2500 {
// set 256 palette
for(int i = 0; i < 256; i++) {
- palette256[i] = RGB_COLOR(((i & 0x20) ? 128 : 0) | ((i & 2) ? 64 : 0) | ((i & 0x80) ? 32 : 0),
- ((i & 0x40) ? 128 : 0) | ((i & 4) ? 64 : 0) | ((i & 0x80) ? 32 : 0),
- ((i & 0x10) ? 128 : 0) | ((i & 1) ? 64 : 0) | ((i & 0x80) ? 32 : 0));
+ uint16_t b = ((i & 0x20) ? 128 : 0) | ((i & 2) ? 64 : 0) | ((i & 0x80) ? 32 : 0);
+ uint16_t r = ((i & 0x40) ? 128 : 0) | ((i & 4) ? 64 : 0) | ((i & 0x80) ? 32 : 0);
+ uint16_t g = ((i & 0x10) ? 128 : 0) | ((i & 1) ? 64 : 0) | ((i & 0x80) ? 32 : 0);
+ b |= (b >> 3) | (b >> 6);
+ r |= (r >> 3) | (r >> 6);
+ g |= (g >> 3) | (g >> 6);
+ palette256[i] = RGB_COLOR(b,r,g);
}
for(int i = 0; i < 8; i++) {
palette256[i + 256] = RGB_COLOR(((i & 2) ? 255 : 0), ((i & 4) ? 255 : 0), ((i & 1) ? 255 : 0));
}
for(int i = 0; i < 64; i++) {
- palette256[i + 256 + 16] = RGB_COLOR(((i & 2) ? 64 : 0) | ((i & 0x10) ? 128 : 0),
- ((i & 4) ? 64 : 0) | ((i & 0x20) ? 128 : 0),
- ((i & 1) ? 64 : 0) | ((i & 0x08) ? 128 : 0));
+ palette256[i + 256 + 16] = palette256[((i & 0x38) << 1) | (i & 0x07)];
}
for(int i = 0; i < 256; i++) {
for(int j = 1; j < 16 + 64; j++) {
map_init |= (scrn_size != SCRN_640x400);
scrn_size = SCRN_640x400;
break;
+ case 0x19: case 0x99:
+ map_init |= (scrn_size != SCRN_320x400);
+ scrn_size = SCRN_320x400;
+ break;
}
break;
// scroll
uint16_t b = ((i & 0x10) ? 128 : 0) | ((i & 1) ? 64 : 0) | ((b0 == 0 && (i & 0x80)) || (b0 == 1 && (i & 8)) || (b0 == 2) ? 32 : 0);
uint16_t r = ((i & 0x20) ? 128 : 0) | ((i & 2) ? 64 : 0) | ((r0 == 0 && (i & 0x80)) || (r0 == 1 && (i & 8)) || (r0 == 2) ? 32 : 0);
uint16_t g = ((i & 0x40) ? 128 : 0) | ((i & 4) ? 64 : 0) | ((g0 == 0 && (i & 0x80)) || (g0 == 1 && (i & 8)) || (g0 == 2) ? 32 : 0);
+ b |= (b >> 3) | (b >> 6);
+ r |= (r >> 3) | (r >> 6);
+ g |= (g >> 3) | (g >> 6);
palette256[i] = RGB_COLOR(r, g, b);
}
update256 = true;
clear_flag = 0;
}
// register hsync events
- if(!GDEHS) {
- set_hsync(0);
- } else if(GDEHS < chars_per_line) {
- register_event_by_clock(this, GDEHS, GDEHSC, false, NULL);
- }
- if(!GDEHE) {
- set_hsync(0);
- } else if(GDEHE < chars_per_line) {
- register_event_by_clock(this, GDEHE, GDEHEC, false, NULL);
+ int clocks_per_line = (int)(CPU_CLOCKS / frames_per_sec / lines_per_frame);
+ if(GDEHSC < GDEHEC && (GDEHEC + 10) < clocks_per_line) {
+ register_event_by_clock(this, GDEHS, GDEHSC + 10, false, NULL);
+ register_event_by_clock(this, GDEHE, GDEHEC + 10, false, NULL);
}
+ set_hsync(0);
}
void CRTC::set_hsync(int h)
draw_text();
// view port
- int vs = (GDEVS <= GDEVE) ? GDEVS * (scrn_size == SCRN_640x400 ? 1 : 2) : 0;
- int ve = (GDEVS <= GDEVE) ? GDEVE * (scrn_size == SCRN_640x400 ? 1 : 2) : 400;
+ int vs = (GDEVS <= GDEVE) ? GDEVS * ((scrn_size == SCRN_640x400 || scrn_size == SCRN_320x400) ? 1 : 2) : 0;
+ int ve = (GDEVS <= GDEVE) ? GDEVE * ((scrn_size == SCRN_640x400 || scrn_size == SCRN_320x400) ? 1 : 2) : 400;
int hs = (GDEHS <= GDEHE && GDEHS < 80) ? (GDEHS << 3) : 0;
int he = (GDEHS <= GDEHE && GDEHE < 80) ? (GDEHE << 3) : 640;
scrntype_t *dest = emu->get_screen_buffer(y);
memset(dest, 0, sizeof(scrntype_t) * 640);
}
- } else if(cgreg[0x0e] == 0x1d || cgreg[0x0e] == 0x9d) {
+ } else if(cgreg[0x0e] == 0x1d || cgreg[0x0e] == 0x9d ||
+ cgreg[0x0e] == 0x19 || cgreg[0x0e] == 0x99) {
// 256 colors
for(int y = 0; y < vs && y < 400; y++) {
scrntype_t *dest = emu->get_screen_buffer(y);
dest += 8;
}
}
+
+ //
+ // if in 256 color mode but 40-column function is not set as 64 color mode,
+ // convert its color as the bottom plane is forced to 0.
+ //
+ if ((textreg[0] & 0x01) == 0x00) {
+ for(int y = line; y < 400; y++) {
+ uint8_t* tdest = &text[y * 640];
+ for(int x = 0; x < 640; x++) {
+ if (!(tdest[x] & 8)) tdest[x] = ((tdest[x] & 7) << 3) + 16;
+ }
+ }
+ }
}
void CRTC::draw_40column_screen()
}
break;
}
+
+ //
+ // if in 256 color mode but 40-column function is not set as 64 color mode,
+ // convert its color as the bottom plane is forced to 0.
+ //
+ if ((textreg[0] & 0x0c) != 0x00 && (textreg[0] & 0x01) == 0x00) {
+ for(int y = line; y < 400; y++) {
+ uint8_t* tdest = &text[y * 640];
+ for(int x = 0; x < 640; x++) {
+ if (!(tdest[x] & 8)) tdest[x] = ((tdest[x] & 7) << 3) + 16;
+ }
+ }
+ }
}
void CRTC::draw_80column_font(uint16_t src, int dest, int y)
draw_640x200x16screen(0);
break;
case 0x1d:
- draw_320x200x256screen(0);
+ case 0x9d:
+ draw_320x200x256screen(200);
break;
case 0x93:
draw_640x400x16screen();
case 0x97:
draw_640x200x16screen(1);
break;
- case 0x9d:
- draw_320x200x256screen(1);
+ case 0x19:
+ case 0x99:
+ draw_320x200x256screen(400);
break;
}
// fill scan line
- if(!scan_line && !(cgreg[0x0e] == 0x03 || cgreg[0x0e] == 0x93)) {
+ if(!scan_line && (cgreg[0x0e] & 0x04) != 0) {
for(int y = 0; y < 400; y += 2) {
memcpy(cg + (y + 1) * 640, cg + y * 640, 640);
}
{
uint8_t B, R, G, I, col;
uint32_t dest = 0;
+ uint16_t ex;
+ uint16_t subplane;
if(map_init) {
create_addr_map(40, 200);
}
+ ex = (cgreg[0x0e] & 0x80) << 7;
+ subplane = (pl & 1) ? 0x2000 : 0x0000;
for(int y = 0; y < 200; y++) {
for(int x = 0; x < 40; x++) {
- uint16_t src = (map_addr[y][x] + (0x2000 * pl)) & 0x7fff;
+ uint16_t src = (map_addr[y][x] ^ subplane) | ex;
uint32_t dest2 = dest + map_hdsc[y][x];
dest += 16;
}
}
-void CRTC::draw_320x200x256screen(uint8_t pl)
+void CRTC::draw_320x200x256screen(int ymax)
{
uint8_t B0, B1, R0, R1, G0, G1, I0, I1;
- uint32_t dest = 0;
+ uint32_t dest = 0, to_nextline;
+ uint16_t ex;
if(map_init) {
- create_addr_map(40, 200);
+ create_addr_map(40, ymax);
}
if(cg_mask256_init) {
cg_mask256 = cgreg[0x18];
}
cg_mask256_init = false;
}
- for(int y = 0; y < 200; y++) {
+ to_nextline = (ymax == 200) ? 640 : 0;
+ ex = (cgreg[0x0e] & 0x80) << 7;
+ for(int y = 0; y < ymax; y++) {
for(int x = 0; x < 40; x++) {
- uint16_t src1 = (map_addr[y][x] + (0x4000 * pl)) & 0x7fff;
- uint16_t src2 = (src1 + 0x2000) & 0x7fff;
+ uint16_t src1 = (map_addr[y][x] ) | ex;
+ uint16_t src2 = (map_addr[y][x] ^ 0x2000) | ex;
uint32_t dest2 = dest + map_hdsc[y][x];
dest += 16;
cg[dest2 + 12] = cg[dest2 + 13] = cg_matrix0[B0][R0][6] | cg_matrix1[G0][I0][6] | cg_matrix2[B1][R1][6] | cg_matrix3[G1][I1][6];
cg[dest2 + 14] = cg[dest2 + 15] = cg_matrix0[B0][R0][7] | cg_matrix1[G0][I0][7] | cg_matrix2[B1][R1][7] | cg_matrix3[G1][I1][7];
}
- dest += 640;
+ dest += to_nextline;
}
}
{
uint8_t B, R, G, I;
uint32_t dest = 0;
+ uint16_t ex;
+ uint16_t subplane;
if(map_init) {
create_addr_map(80, 200);
}
+ ex = (cgreg[0x0e] & 0x80) << 7;
+ subplane = (pl & 1) ? 0x2000 : 0x0000;
for(int y = 0; y < 200; y++) {
for(int x = 0; x < 80; x++) {
- uint16_t src = (map_addr[y][x] + (0x4000 * pl)) & 0x7fff;
+ uint16_t src = (map_addr[y][x] ^ subplane) | ex;
uint32_t dest2 = dest + map_hdsc[y][x];
dest += 8;
for(int y = SLN1; y < ymax; y++) {
for(int x = 0; x < xmax; x++) {
map_hdsc[y][x] = 0;
- map_addr[y][x] = (SAD2++) & 0x7fff;
+ map_addr[y][x] = SAD2;
+ SAD2 = (SAD2 == SAD1) ? 0 : ((SAD2 + 1) & 0x7fff);
}
}
map_init = false;
// draw cg
void draw_cg();
void draw_320x200x16screen(uint8_t pl);
- void draw_320x200x256screen(uint8_t pl);
+ void draw_320x200x256screen(int ymax);
void draw_640x200x16screen(uint8_t pl);
void draw_640x400x4screen();
void draw_640x400x16screen();
}
break;
}
+*/
+ *wait = page_wait[b];
}
uint32_t MEMORY::read_io8(uint32_t addr)
// memory wait
#if defined(_PC8001SR) || defined(PC8801SR_VARIANT)
- mem_wait_on = ((config.dipswitch & 1) != 0);
+ mem_wait_on = ((config.dipswitch & DIPSWITCH_MEMWAIT) != 0);
#else
mem_wait_on = true;
#endif
mouse_strobe_clock = get_current_clock();
}
#endif
- sing_signal = ((data & 0x80) != 0);
- d_pcm->write_signal(SIG_PCM1BIT_SIGNAL, ((beep_on && beep_signal) || sing_signal) ? 1 : 0, 1);
+#if defined(PC8801_VARIANT)
+ if(config.dipswitch & DIPSWITCH_CMDSING) {
+ sing_signal = ((data & 0x80) != 0);
+ d_pcm->write_signal(SIG_PCM1BIT_SIGNAL, ((beep_on && beep_signal) || sing_signal) ? 1 : 0, 1);
+ }
+#endif
break;
#ifdef SUPPORT_PC88_OPN1
case 0x44:
#endif
}
}
+ if(y == 0 && (config.dipswitch & DIPSWITCH_PALETTE) != 0) {
+ break;
+ }
}
// copy to screen buffer
uint8_t* src_g = graph[y];
scrntype_t* pal_t;
scrntype_t* pal_g;
+ int yy = ((config.dipswitch & DIPSWITCH_PALETTE) != 0) ? 0 : y;
// if(Port31_HCOLOR) {
-// pal_t = palette_line_digital_text_pc [y];
-// pal_g = palette_line_analog_graph_pc [y];
+// pal_t = palette_line_digital_text_pc [yy];
+// pal_g = palette_line_analog_graph_pc [yy];
// } else
if(Port32_PMODE) {
- pal_t = palette_line_analog_text_pc [y];
- pal_g = palette_line_analog_graph_pc [y];
+ pal_t = palette_line_analog_text_pc [yy];
+ pal_g = palette_line_analog_graph_pc [yy];
} else {
- pal_t = palette_line_digital_text_pc [y];
- pal_g = palette_line_digital_graph_pc[y];
+ pal_t = palette_line_digital_text_pc [yy];
+ pal_g = palette_line_digital_graph_pc[yy];
}
for(int x = 0; x < 640; x++) {
uint32_t t = src_t[x];
uint8_t* src_g = graph[y];
scrntype_t* pal_t;
scrntype_t* pal_g;
+ int yy = ((config.dipswitch & DIPSWITCH_PALETTE) != 0) ? 0 : y;
+
#if defined(PC8001_VARIANT)
- pal_t = palette_line_digital_text_pc[y];
- pal_g = palette_line_analog_graph_pc[y];
+ pal_t = palette_line_digital_text_pc[yy];
+ pal_g = palette_line_analog_graph_pc[yy];
#if defined(_PC8001SR)
if(Port33_PR2) {
}
#else
if(Port31_HCOLOR) {
- pal_t = palette_line_digital_text_pc [y];
- pal_g = palette_line_analog_graph_pc [y];
+ pal_t = palette_line_digital_text_pc [yy];
+ pal_g = palette_line_analog_graph_pc [yy];
} else if(Port32_PMODE) {
- pal_t = palette_line_analog_text_pc [y];
- pal_g = palette_line_analog_graph_pc [y];
+ pal_t = palette_line_analog_text_pc [yy];
+ pal_g = palette_line_analog_graph_pc [yy];
} else {
- pal_t = palette_line_digital_text_pc [y];
- pal_g = palette_line_digital_graph_pc[y];
+ pal_t = palette_line_digital_text_pc [yy];
+ pal_g = palette_line_digital_graph_pc[yy];
}
for(int x = 0; x < 640; x++) {
uint32_t t = src_t[x];
}
}
uint8_t code = secret ? 0 : code_expand;//crtc.text.expand[cy][cx];
+ uint8_t *pattern;
#ifdef SUPPORT_PC88_PCG8100
- uint8_t *pattern = ((attrib & 0x10) ? sg_pattern : pcg_pattern) + code * 8;
-#else
- uint8_t *pattern = ((attrib & 0x10) ? sg_pattern : kanji1 + 0x1000) + code * 8;
+ if(config.dipswitch & DIPSWITCH_PCG8100) {
+ pattern = ((attrib & 0x10) ? sg_pattern : pcg_pattern) + code * 8;
+ } else
#endif
+ pattern = ((attrib & 0x10) ? sg_pattern : kanji1 + 0x1000) + code * 8;
for(int l = 0, y = ytop; l < char_height / 2 && y < 400; l++, y += 2) {
uint8_t pat = (l < 8) ? pattern[l] : 0;
#define CPU_TYPE_DEFAULT 1
#endif
#define USE_DIPSWITCH
-#define DIPSWITCH_HMB20 2
-#define DIPSWITCH_GSX8800 4
-#define DIPSWITCH_PCG8100 8
-#define DIPSWITCH_DEFAULT (DIPSWITCH_HMB20 + DIPSWITCH_GSX8800 + DIPSWITCH_PCG8100)
+#define DIPSWITCH_MEMWAIT 0x01
+#define DIPSWITCH_HMB20 0x02
+#define DIPSWITCH_GSX8800 0x04
+#define DIPSWITCH_PCG8100 0x08
+#define DIPSWITCH_CMDSING 0x10
+#define DIPSWITCH_DEFAULT (DIPSWITCH_HMB20 + DIPSWITCH_GSX8800 + DIPSWITCH_PCG8100 + DIPSWITCH_CMDSING)
+#define DIPSWITCH_PALETTE 0x20
#define USE_JOYSTICK_TYPE 2
#define USE_FLOPPY_DISK 2
#define USE_TAPE 1
// WIP: MEMSW
bool memsw_stat = false;
- if((config.dipswitch & (1 << DIPSW_POSITION_NOINIT_MEMSW)) != 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_NOINIT_MEMSW)) != 0) {
if(fio->Fopen(create_local_path(_T("MEMSW.BIN")), FILEIO_READ_BINARY)) {
if(fio->IsOpened()) {
for(int i = 0; i < 16; i++) {
void DISPLAY::release()
{
- if((config.dipswitch & (1 << DIPSW_POSITION_NOINIT_MEMSW)) == 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_NOINIT_MEMSW)) == 0) {
init_memsw();
}
save_memsw();
}
#endif
#if defined(SUPPORT_EGC)
- is_use_egc = ((config.dipswitch & (1 << DIPSW_POSITION_EGC)) != 0);
+ is_use_egc = ((config.dipswitch & (1 << DIPSWITCH_POSITION_EGC)) != 0);
#if defined(SUPPORT_EGC)
enable_egc = false;
egc_srcmask.w = 0xffff;
#endif
- if((config.dipswitch & (1 << DIPSW_POSITION_NOINIT_MEMSW)) == 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_NOINIT_MEMSW)) == 0) {
init_memsw();
}
save_memsw();
// port_a |= 0x04; // DIP SW 2-3, 1 = 40 columns, 0 = 80 columns
port_a |= 0x02; // DIP SW 2-2, 1 = BASIC mode, 0 = Terminal mode
port_a |= 0x01; // DIP SW 2-1, 1 = Normal mode, 0 = LT mode
- if((config.dipswitch & (1 << DIPSW_POSITION_GDC_FAST)) == 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_GDC_FAST)) == 0) {
port_a = port_a | 0x80;
}
- if((config.dipswitch & (1 << DIPSW_POSITION_NOINIT_MEMSW)) != 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_NOINIT_MEMSW)) != 0) {
port_a = port_a | 0x10;
}
gdc_gfx->set_clock_freq(((port_a & 0x80) != 0) ? (2500 * 1000) : (5000 * 1000));
port_b2 |= 0x10; // DIP SW 1-3, 1 = Don't use LCD
#if !defined(SUPPORT_16_COLORS) || defined(SUPPORT_EGC)
#if defined(SUPPORT_EGC)
- if((config.dipswitch & (1 << DIPSW_POSITION_EGC)) == 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_EGC)) == 0) {
port_b2 = port_b2 | 0x08;
}
#else
#if defined(SUPPORT_HIRESO)
port_b |= 0x80; // DIP SW 1-4, 1 = External FDD #3/#4, 0 = #1/#2
#endif
- port_b |= ((config.dipswitch & (1 << DIPSW_POSITION_RAM512K)) == 0) ? 0x40 : 0x00; // DIP SW 3-6, 1 = Enable internal RAM 80000h-9FFFFh
+ port_b |= ((config.dipswitch & (1 << DIPSWITCH_POSITION_RAM512K)) == 0) ? 0x40 : 0x00; // DIP SW 3-6, 1 = Enable internal RAM 80000h-9FFFFh
#if defined(_PC98RL)
port_b |= 0x10; // DIP SW 3-3, 1 = DMA ch.0 for SASI-HDD
#endif
{
uint8_t mouse_port_b = pio_mouse->read_signal(SIG_I8255_PORT_B);
mouse_port_b = mouse_port_b & ~0x40;
- if((config.dipswitch & (1 << DIPSW_POSITION_RAM512K)) == 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_RAM512K)) == 0) {
mouse_port_b = mouse_port_b | 0x40;
}
pio_mouse->write_signal(SIG_I8255_PORT_B, mouse_port_b, 0xff);
{
uint8_t sys_port_a = pio_sys->read_signal(SIG_I8255_PORT_A);
//sys_port_a = sys_port_a & ~0x80;
- //if((config.dipswitch & (1 << DIPSW_POSITION_GDC_FAST)) != 0) {
+ //if((config.dipswitch & (1 << DIPSWITCH_POSITION_GDC_FAST)) != 0) {
// sys_port_a = sys_port_a | 0x80;
//}
sys_port_a = sys_port_a & ~0x10;
- if((config.dipswitch & (1 << DIPSW_POSITION_NOINIT_MEMSW)) != 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_NOINIT_MEMSW)) != 0) {
sys_port_a = sys_port_a | 0x10;
}
pio_sys->write_signal(SIG_I8255_PORT_A, sys_port_a, 0xff);
uint8_t prn_port_b = pio_prn->read_signal(SIG_I8255_PORT_B);
#if defined(SUPPORT_EGC)
prn_port_b = prn_port_b & ~0x08;
- if((config.dipswitch & (1 << DIPSW_POSITION_EGC)) == 0) {
+ if((config.dipswitch & (1 << DIPSWITCH_POSITION_EGC)) == 0) {
prn_port_b = prn_port_b | 0x08;
}
#endif
// DIPSW POSITION
// DIPSW1: 8-15
-#define DIPSW_POSITION_HIGH_RESO (8 + 1 - 1)
-#define DIPSW_POSITION_SUPER_IMPOSE (8 + 2 - 1)
-#define DIPSW_POSITION_PLASMA_DISPLAY (8 + 3 - 1)
-#define DIPSW_POSITION_SWAP_FDD (8 + 4 - 1)
-#define DIPSW_POSITION_RS232C_SW1 (8 + 5 - 1)
-#define DIPSW_POSITION_RS232C_SW2 (8 + 6 - 1)
-#define DIPSW_POSITION_HDD_SECTOR_SIZE (8 + 7 - 1)
-#define DIPSW_POSITION_EGC (8 + 8 - 1)
+#define DIPSWITCH_POSITION_HIGH_RESO (8 + 1 - 1)
+#define DIPSWITCH_POSITION_SUPER_IMPOSE (8 + 2 - 1)
+#define DIPSWITCH_POSITION_PLASMA_DISPLAY (8 + 3 - 1)
+#define DIPSWITCH_POSITION_SWAP_FDD (8 + 4 - 1)
+#define DIPSWITCH_POSITION_RS232C_SW1 (8 + 5 - 1)
+#define DIPSWITCH_POSITION_RS232C_SW2 (8 + 6 - 1)
+#define DIPSWITCH_POSITION_HDD_SECTOR_SIZE (8 + 7 - 1)
+#define DIPSWITCH_POSITION_EGC (8 + 8 - 1)
// DIPSW-2
-#define DIPSW_POSITION_LT_MODE (16 + 1 - 1)
-#define DIPSW_POSITION_TERMINAL_MODE (16 + 2 - 1)
-#define DIPSW_POSITION_TEXT_WIDTH80 (16 + 3 - 1)
-#define DIPSW_POSITION_TEXT_HEIGHT25 (16 + 4 - 1)
-#define DIPSW_POSITION_NOINIT_MEMSW (16 + 5 - 1)
-#define DIPSW_POSITION_INTFDD_OFF (16 + 6 - 1)
-#define DIPSW_POSITION_DISABLE_VFKEY (16 + 7 - 1)
-#define DIPSW_POSITION_GDC_FAST (16 + 8 - 1)
+#define DIPSWITCH_POSITION_LT_MODE (16 + 1 - 1)
+#define DIPSWITCH_POSITION_TERMINAL_MODE (16 + 2 - 1)
+#define DIPSWITCH_POSITION_TEXT_WIDTH80 (16 + 3 - 1)
+#define DIPSWITCH_POSITION_TEXT_HEIGHT25 (16 + 4 - 1)
+#define DIPSWITCH_POSITION_NOINIT_MEMSW (16 + 5 - 1)
+#define DIPSWITCH_POSITION_INTFDD_OFF (16 + 6 - 1)
+#define DIPSWITCH_POSITION_DISABLE_VFKEY (16 + 7 - 1)
+#define DIPSWITCH_POSITION_GDC_FAST (16 + 8 - 1)
// SW3
-#define DIPSW_POSITION_FDD_MODE1 (24 + 1 - 1)
-#define DIPSW_POSITION_FDD_MODE2 (24 + 2 - 1)
-#define DIPSW_POSITION_FDD_DMA_CH (24 + 3 - 1)
-#define DIPSW_POSITION_FDD_MOTOR_CTL (24 + 4 - 1)
-#define DIPSW_POSITION_DMA_FAST (24 + 5 - 1)
-#define DIPSW_POSITION_RAM512K (24 + 6 - 1)
-#define DIPSW_POSITION_CPU_MODE (24 + 8 - 1)
+#define DIPSWITCH_POSITION_FDD_MODE1 (24 + 1 - 1)
+#define DIPSWITCH_POSITION_FDD_MODE2 (24 + 2 - 1)
+#define DIPSWITCH_POSITION_FDD_DMA_CH (24 + 3 - 1)
+#define DIPSWITCH_POSITION_FDD_MOTOR_CTL (24 + 4 - 1)
+#define DIPSWITCH_POSITION_DMA_FAST (24 + 5 - 1)
+#define DIPSWITCH_POSITION_RAM512K (24 + 6 - 1)
+#define DIPSWITCH_POSITION_CPU_MODE (24 + 8 - 1)
#define USE_FLOPPY_DISK 6
#elif defined(_PC98DO) || defined(_PC98DOPLUS)
#define USE_BOOT_MODE 5
-//#define USE_DIPSWITCH
+#define DIPSWITCH_MEMWAIT 0x01
+#define DIPSWITCH_CMDSING 0x10
+#define DIPSWITCH_DEFAULT (/*DIPSWITCH_HMB20 + DIPSWITCH_GSX8800 + DIPSWITCH_PCG8100 + */DIPSWITCH_CMDSING)
+#define DIPSWITCH_PALETTE 0x20
#define USE_FLOPPY_DISK 4
#else
#define USE_FLOPPY_DISK 2
if(!prev_status && req_status) {
// L -> H
// if(bsy_status) {
- if(!cd_status) {
+ if(!cd_status && !msg_status) {
// data phase
set_drq(true);
access = true;
- } else if(!msg_status && io_status) {
- // status phase
+ } else if(cd_status) {
+ // command/status/message phase
set_irq(true);
}
// }
#include "bubcom80/bubcom80.h"
#endif
+// Hino Electronics CEFUCOM-21
+#ifdef _CEFUCOM21
+#include "cefucom21/cefucom21.h"
+#endif
+
// COLECO ColecoVision
#ifdef _COLECOVISION
#include "colecovision/colecovision.h"
bool is_primary;
+ bool is_primary;
+
/* ---------------------------------------------------------------------------
registers
--------------------------------------------------------------------------- */
Z80_INLINE uint8_t Z80_BASE::RM8(uint32_t addr)
{
//#ifdef Z80_MEMORY_WAIT
+ UPDATE_EXTRA_EVENT(1);
if(has_memory_wait) {
int wait;
uint8_t val = d_mem->read_data8w(addr, &wait);
icount -= wait;
- UPDATE_EXTRA_EVENT(3 + wait);
+ UPDATE_EXTRA_EVENT(2 + wait);
return val;
} else {
//#else
uint8_t val = d_mem->read_data8(addr);
- UPDATE_EXTRA_EVENT(3);
+ UPDATE_EXTRA_EVENT(2);
return val;
}
//#endif
Z80_INLINE void Z80_BASE::WM8(uint32_t addr, uint8_t val)
{
//#ifdef Z80_MEMORY_WAIT
+ UPDATE_EXTRA_EVENT(1);
if(has_memory_wait) {
int wait;
d_mem->write_data8w(addr, val, &wait);
icount -= wait;
- UPDATE_EXTRA_EVENT(3 + wait);
+ UPDATE_EXTRA_EVENT(2 + wait);
} else {
//#else
d_mem->write_data8(addr, val);
- UPDATE_EXTRA_EVENT(3);
+ UPDATE_EXTRA_EVENT(2);
}
//#endif
}
R++;
// consider m1 cycle wait
+ UPDATE_EXTRA_EVENT(1);
int wait;
uint8_t val = d_mem->fetch_op(pctmp, &wait);
icount -= wait;
- UPDATE_EXTRA_EVENT(4 + wait);
+ UPDATE_EXTRA_EVENT(3 + wait);
return val;
}
Z80_INLINE uint8_t Z80_BASE::IN8(uint32_t addr)
{
//#ifdef Z80_IO_WAIT
- UPDATE_EXTRA_EVENT(1);
+ UPDATE_EXTRA_EVENT(2);
if(has_io_wait) {
int wait;
uint8_t val = d_io->read_io8w(addr, &wait);
icount -= wait;
- UPDATE_EXTRA_EVENT(3 + wait);
+ UPDATE_EXTRA_EVENT(2 + wait);
return val;
} else {
//#else
uint8_t val = d_io->read_io8(addr);
- UPDATE_EXTRA_EVENT(3);
+ UPDATE_EXTRA_EVENT(2);
return val;
}
//#endif
Z80_INLINE void Z80_BASE::OUT8(uint32_t addr, uint8_t val)
{
//#ifdef HAS_NSC800
- UPDATE_EXTRA_EVENT(1);
+ UPDATE_EXTRA_EVENT(2);
if(has_nsc800) {
if((addr & 0xff) == 0xbb) {
icr = val;
- UPDATE_EXTRA_EVENT(3);
+ UPDATE_EXTRA_EVENT(2);
return;
}
}
int wait;
d_io->write_io8w(addr, val, &wait);
icount -= wait;
- UPDATE_EXTRA_EVENT(3 + wait);
+ UPDATE_EXTRA_EVENT(2 + wait);
} else {
//#else
d_io->write_io8(addr, val);
- UPDATE_EXTRA_EVENT(3);
+ UPDATE_EXTRA_EVENT(2);
}
//#endif
}
after_ei = after_ldair = false;
intr_req_bit = intr_pend_bit = 0;
- icount = extra_icount = 0;
+ icount = extra_icount = busreq_icount = 0;
}
void Z80_BASE::write_signal(int id, uint32_t data, uint32_t mask)
extra_tmp_count += extra_icount;
}
if(clock == -1) {
+ // this is primary cpu
if(busreq) {
// run dma once
//#ifdef SINGLE_MODE_DMA
port[ch].input_empty = true;
update_ready();
}
- return (port[ch].rreg & port[ch].dir) | (port[ch].wreg & ~port[ch].dir);break;
+ return (port[ch].rreg & port[ch].dir) | (port[ch].wreg & ~port[ch].dir);
case 1:
case 3:
// status (sharp z-80pio special function)
for(int i = 0; i < 8; i++) {
EnableMenuItem(hMenu, ID_OPEN_DEBUGGER0 + i, emu && !emu->now_debugging && emu->is_debugger_enabled(i) ? MF_ENABLED : MF_GRAYED);
}
- EnableMenuItem(hMenu, ID_CLOSE_DEBUGGER, emu && emu->now_debugging ? MF_ENABLED : MF_GRAYED);
+ EnableMenuItem(hMenu, ID_CLOSE_DEBUGGER, emu && emu->now_debugging ? MF_ENABLED : MF_GRAYED);
#endif
}
#endif
#if defined(USE_SOUND_TYPE) || defined(USE_FLOPPY_DISK) || defined(USE_TAPE) || defined(USE_DIPSWITCH)
} else if(id >= ID_VM_SOUND_MENU_START && id <= ID_VM_SOUND_MENU_END) {
- update_vm_sound_menu(hMenu);
+#if defined(USE_SOUND_TYPE) || defined(USE_FLOPPY_DISK) || defined(USE_TAPE)
+ update_vm_sound_menu(hMenu);
+#endif
#ifdef USE_DIPSWITCH
// dipswitch may be in sound menu
update_vm_dipswitch_menu(hMenu);
#endif
#endif
-#if defined(USE_MONITOR_TYPE) || defined(USE_SCANLINE)
+#if defined(USE_MONITOR_TYPE) || defined(USE_SCANLINE) || defined(USE_DIPSWITCH)
} else if(id >= ID_VM_MONITOR_MENU_START && id <= ID_VM_MONITOR_MENU_END) {
- update_vm_monitor_menu(hMenu);
+#if defined(USE_MONITOR_TYPE) || defined(USE_SCANLINE)
+ update_vm_monitor_menu(hMenu);
+#endif
+#ifdef USE_DIPSWITCH
+ // dipswitch may be in monitor menu
+ update_vm_dipswitch_menu(hMenu);
+#endif
#endif
#ifdef USE_PRINTER_TYPE
} else if(id >= ID_VM_PRINTER_MENU_START && id <= ID_VM_PRINTER_MENU_START) {
--- /dev/null
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="cefucom21"
+ ProjectGUID="{F62D036D-7569-431B-9C55-C056A4D3145A}"
+ RootNamespace="cefucom21"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/cefucom21.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_CEFUCOM21"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile=".\Debug/cefucom21.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1041"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="odbc32.lib odbccp32.lib winmm.lib imm32.lib"
+ OutputFile=".\Debug/cefucom21.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/cefucom21.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Debug/cefucom21.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/cefucom21.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="2"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_CEFUCOM21"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ EnableEnhancedInstructionSet="2"
+ PrecompiledHeaderFile=".\Release/cefucom21.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="odbc32.lib odbccp32.lib winmm.lib imm32.lib"
+ OutputFile=".\Release/cefucom21.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ GenerateManifest="false"
+ ProgramDatabaseFile=".\Release/cefucom21.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Release/cefucom21.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="..\src\common.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\config.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\fifo.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\fileio.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <Filter
+ Name="EMU Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\debugger.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\emu.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="OSD Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\win32\osd.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_console.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_input.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_screen.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_sound.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\winmain.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="VM Common Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\vm\ay_3_891x.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\datarec.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\event.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\i8255.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\io.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\mc6847.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\memory.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\noise.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\not.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\rp5c01.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\z80.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\z80ctc.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\z80pio.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <Filter
+ Name="fmgen Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\vm\fmgen\fmgen.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\fmtimer.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\opna.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\psg.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="VM Driver Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\vm\cefucom21\cefucom21.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\cefucom21\mcu.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\cefucom21\pcu.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="..\src\common.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\config.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\fifo.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\fileio.h"
+ >
+ </File>
+ <Filter
+ Name="EMU Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\emu.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="OSD Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\win32\osd.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="VM Common Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\vm\ay_3_891x.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\datarec.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\debugger.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\device.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\event.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\i8255.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\io.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\mc6847.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\memory.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\noise.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\not.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\rp5c01.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\vm.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\vm_template.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\z80.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\z80ctc.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\z80pio.h"
+ >
+ </File>
+ <Filter
+ Name="fmgen Header Files"
+ >
+ <File
+ RelativePath="..\src\vm\fmgen\diag.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\fmgen.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\fmgeninl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\fmtimer.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\headers.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\misc.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\opna.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fmgen\psg.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="VM Driver Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\vm\cefucom21\cefucom21.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\cefucom21\mcu.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\cefucom21\pcu.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="..\src\res\cefucom21.ico"
+ >
+ </File>
+ <File
+ RelativePath="..\src\res\cefucom21.rc"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="..\src\res"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="..\src\res"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\res\resource.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F62D036D-7569-431B-9C55-C056A4D3145A}</ProjectGuid>
+ <RootNamespace>cefucom21</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v120_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v120_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>.\Debug\</OutDir>
+ <IntDir>.\Debug\</IntDir>
+ <LinkIncremental>true</LinkIncremental>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>
+ <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(DXSDK_DIR)Lib\x86</LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>.\Release\</OutDir>
+ <IntDir>.\Release\</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>
+ <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(DXSDK_DIR)Lib\x86</LibraryPath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\Debug/cefucom21.tlb</TypeLibraryName>
+ <HeaderFileName />
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CEFUCOM21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\Debug/cefucom21.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0411</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\Debug/cefucom21.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\Debug/cefucom21.pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <IgnoreSpecificDefaultLibraries>Libcmtd.lib</IgnoreSpecificDefaultLibraries>
+ </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>.\Debug/cefucom21.bsc</OutputFile>
+ </Bscmake>
+ <Manifest>
+ <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+ </Manifest>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\Release/cefucom21.tlb</TypeLibraryName>
+ <HeaderFileName />
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CEFUCOM21;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PrecompiledHeaderOutputFile>.\Release/cefucom21.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\Release/cefucom21.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <ProgramDatabaseFile>.\Release/cefucom21.pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>.\Release/cefucom21.bsc</OutputFile>
+ </Bscmake>
+ <Manifest>
+ <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+ </Manifest>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\common.cpp" />
+ <ClCompile Include="..\src\config.cpp" />
+ <ClCompile Include="..\src\fifo.cpp" />
+ <ClCompile Include="..\src\fileio.cpp" />
+ <ClCompile Include="..\src\debugger.cpp" />
+ <ClCompile Include="..\src\emu.cpp" />
+ <ClCompile Include="..\src\win32\osd.cpp" />
+ <ClCompile Include="..\src\win32\osd_console.cpp" />
+ <ClCompile Include="..\src\win32\osd_input.cpp" />
+ <ClCompile Include="..\src\win32\osd_screen.cpp" />
+ <ClCompile Include="..\src\win32\osd_sound.cpp" />
+ <ClCompile Include="..\src\win32\winmain.cpp" />
+ <ClCompile Include="..\src\vm\ay_3_891x.cpp" />
+ <ClCompile Include="..\src\vm\datarec.cpp" />
+ <ClCompile Include="..\src\vm\event.cpp" />
+ <ClCompile Include="..\src\vm\i8255.cpp" />
+ <ClCompile Include="..\src\vm\io.cpp" />
+ <ClCompile Include="..\src\vm\mc6847.cpp" />
+ <ClCompile Include="..\src\vm\memory.cpp" />
+ <ClCompile Include="..\src\vm\noise.cpp" />
+ <ClCompile Include="..\src\vm\not.cpp" />
+ <ClCompile Include="..\src\vm\rp5c01.cpp" />
+ <ClCompile Include="..\src\vm\z80.cpp" />
+ <ClCompile Include="..\src\vm\z80ctc.cpp" />
+ <ClCompile Include="..\src\vm\z80pio.cpp" />
+ <ClCompile Include="..\src\vm\fmgen\fmgen.cpp" />
+ <ClCompile Include="..\src\vm\fmgen\fmtimer.cpp" />
+ <ClCompile Include="..\src\vm\fmgen\opna.cpp" />
+ <ClCompile Include="..\src\vm\fmgen\psg.cpp" />
+ <ClCompile Include="..\src\vm\cefucom21\cefucom21.cpp" />
+ <ClCompile Include="..\src\vm\cefucom21\mcu.cpp" />
+ <ClCompile Include="..\src\vm\cefucom21\pcu.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\common.h" />
+ <ClInclude Include="..\src\config.h" />
+ <ClInclude Include="..\src\fifo.h" />
+ <ClInclude Include="..\src\fileio.h" />
+ <ClInclude Include="..\src\emu.h" />
+ <ClInclude Include="..\src\win32\osd.h" />
+ <ClInclude Include="..\src\vm\ay_3_891x.h" />
+ <ClInclude Include="..\src\vm\datarec.h" />
+ <ClInclude Include="..\src\vm\debugger.h" />
+ <ClInclude Include="..\src\vm\device.h" />
+ <ClInclude Include="..\src\vm\event.h" />
+ <ClInclude Include="..\src\vm\i8255.h" />
+ <ClInclude Include="..\src\vm\io.h" />
+ <ClInclude Include="..\src\vm\mc6847.h" />
+ <ClInclude Include="..\src\vm\memory.h" />
+ <ClInclude Include="..\src\vm\noise.h" />
+ <ClInclude Include="..\src\vm\not.h" />
+ <ClInclude Include="..\src\vm\rp5c01.h" />
+ <ClInclude Include="..\src\vm\vm.h" />
+ <ClInclude Include="..\src\vm\vm_template.h" />
+ <ClInclude Include="..\src\vm\z80.h" />
+ <ClInclude Include="..\src\vm\z80ctc.h" />
+ <ClInclude Include="..\src\vm\z80pio.h" />
+ <ClInclude Include="..\src\vm\fmgen\diag.h" />
+ <ClInclude Include="..\src\vm\fmgen\fmgen.h" />
+ <ClInclude Include="..\src\vm\fmgen\fmgeninl.h" />
+ <ClInclude Include="..\src\vm\fmgen\fmtimer.h" />
+ <ClInclude Include="..\src\vm\fmgen\headers.h" />
+ <ClInclude Include="..\src\vm\fmgen\misc.h" />
+ <ClInclude Include="..\src\vm\fmgen\opna.h" />
+ <ClInclude Include="..\src\vm\fmgen\psg.h" />
+ <ClInclude Include="..\src\vm\cefucom21\cefucom21.h" />
+ <ClInclude Include="..\src\vm\cefucom21\mcu.h" />
+ <ClInclude Include="..\src\vm\cefucom21\pcu.h" />
+ <ClInclude Include="..\src\res\resource.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <Image Include="..\src\res\cefucom21.ico" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\src\res\cefucom21.rc">
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{16e067c7-4b27-424c-b115-19a9deaa16ef}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Source Files\EMU Source Files">
+ <UniqueIdentifier>{898909f7-af9e-4528-a651-b2458ac65caa}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Source Files\OSD Source Files">
+ <UniqueIdentifier>{4d8cbe87-0ca2-4844-874b-593aadf2028e}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Source Files\VM Common Source Files">
+ <UniqueIdentifier>{ac026dbb-c496-4e39-b38c-e1699fda355a}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Source Files\VM Common Source Files\fmgen Source Files">
+ <UniqueIdentifier>{daa3ed04-4edd-4964-8ad9-94331bbcde6a}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Source Files\VM Driver Source Files">
+ <UniqueIdentifier>{25cdc18e-d40b-4233-b69f-e690c8d0dfe9}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{009eaa46-9bf6-4264-bfe0-8170020c232e}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Header Files\EMU Header Files">
+ <UniqueIdentifier>{2c811020-8ad5-4345-b584-df7d66348e25}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Header Files\OSD Header Files">
+ <UniqueIdentifier>{69e6922a-bcc1-41b4-84e8-277fe2fe473e}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Header Files\VM Common Header Files">
+ <UniqueIdentifier>{764517f3-cd02-4436-a65e-ca376cc72013}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Header Files\VM Common Header Files\fmgen Header Files">
+ <UniqueIdentifier>{6223a48e-0496-4f3e-a218-172096d7db21}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\VM Driver Header Files">
+ <UniqueIdentifier>{de7aa1b1-3f65-4411-94b8-19f4ad859402}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{4ab36c18-c36b-432d-97ae-86a835f215f0}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\common.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\config.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\fifo.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\fileio.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\debugger.cpp">
+ <Filter>Source Files\EMU Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\emu.cpp">
+ <Filter>Source Files\EMU Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_console.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_input.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_screen.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_sound.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\winmain.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\ay_3_891x.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\datarec.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\event.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\i8255.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\io.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\mc6847.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\memory.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\noise.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\not.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\rp5c01.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\z80.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\z80ctc.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\z80pio.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\fmgen\fmgen.cpp">
+ <Filter>Source Files\VM Common Source Files\fmgen Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\fmgen\fmtimer.cpp">
+ <Filter>Source Files\VM Common Source Files\fmgen Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\fmgen\opna.cpp">
+ <Filter>Source Files\VM Common Source Files\fmgen Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\fmgen\psg.cpp">
+ <Filter>Source Files\VM Common Source Files\fmgen Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\cefucom21\cefucom21.cpp">
+ <Filter>Source Files\VM Driver Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\cefucom21\mcu.cpp">
+ <Filter>Source Files\VM Driver Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\cefucom21\pcu.cpp">
+ <Filter>Source Files\VM Driver Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\common.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\config.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\fifo.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\fileio.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\emu.h">
+ <Filter>Header Files\EMU Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\win32\osd.h">
+ <Filter>Header Files\OSD Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\ay_3_891x.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\datarec.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\debugger.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\device.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\event.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\i8255.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\io.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\mc6847.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\memory.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\noise.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\not.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\rp5c01.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\vm.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\vm_template.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\z80.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\z80ctc.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\z80pio.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\diag.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\fmgen.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\fmgeninl.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\fmtimer.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\headers.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\misc.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\opna.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fmgen\psg.h">
+ <Filter>Header Files\VM Common Header Files\fmgen Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\cefucom21\cefucom21.h">
+ <Filter>Header Files\VM Driver Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\cefucom21\mcu.h">
+ <Filter>Header Files\VM Driver Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\cefucom21\pcu.h">
+ <Filter>Header Files\VM Driver Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\res\resource.h">
+ <Filter>Resource Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <Image Include="..\src\res\cefucom21.ico">
+ <Filter>Resource Files</Filter>
+ </Image>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\src\res\cefucom21.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project>
\ No newline at end of file